mirror of
https://github.com/YACReader/yacreader
synced 2025-05-25 18:00:46 -04:00
It builds now 7z.so with rar support, so no codecs are needed at runtime, YACReader no longer loads separated codecs.
81 lines
3.2 KiB
Bash
81 lines
3.2 KiB
Bash
#!/bin/bash
|
|
|
|
# Exit immediately if a command exits with a non-zero status
|
|
set -e
|
|
|
|
# Define variables
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
BUILD_DIR="$SCRIPT_DIR/yacreader_build"
|
|
YACREADER_DIR="$BUILD_DIR/yacreader"
|
|
COMPRESSED_ARCHIVE_DIR="$YACREADER_DIR/compressed_archive"
|
|
YACREADER_REPO="https://github.com/YACReader/yacreader.git"
|
|
SEVENZIP_URL="https://github.com/YACReader/yacreader-7z-deps/blob/main/7z2301-src.7z?raw=true"
|
|
SEVENZIP_ARCHIVE="$COMPRESSED_ARCHIVE_DIR/7z2301-src.7z"
|
|
SEVENZIP_DIR="$COMPRESSED_ARCHIVE_DIR/lib7zip"
|
|
|
|
# Function to download the latest release source tarball
|
|
download_latest_release() {
|
|
echo "Fetching the latest release information..."
|
|
LATEST_RELEASE_URL=$(curl -s https://api.github.com/repos/YACReader/yacreader/releases/latest | grep "browser_download_url.*src.tar.xz" | cut -d '"' -f 4 | head -n 1)
|
|
if [ -z "$LATEST_RELEASE_URL" ]; then
|
|
echo "Failed to fetch the latest release information."
|
|
exit 1
|
|
fi
|
|
echo "Downloading the latest release source tarball..."
|
|
wget "$LATEST_RELEASE_URL" -O "$BUILD_DIR/latest_release_src.tar.xz"
|
|
echo "Extracting the latest release source tarball..."
|
|
mkdir -p "$YACREADER_DIR"
|
|
tar -xf "$BUILD_DIR/latest_release_src.tar.xz" -C "$YACREADER_DIR" --strip-components=1
|
|
}
|
|
|
|
# Step 1: Create a folder for the build process
|
|
if [ -d "$BUILD_DIR" ]; then
|
|
echo "Removing existing build directory..."
|
|
rm -rf "$BUILD_DIR"
|
|
fi
|
|
echo "Creating build directory..."
|
|
mkdir -p "$BUILD_DIR"
|
|
mkdir -p "$COMPRESSED_ARCHIVE_DIR"
|
|
|
|
# Step 2: Install required packages
|
|
echo "Updating package list and installing required packages..."
|
|
sudo apt-get update
|
|
sudo apt-get install -y qtchooser qt6-tools-dev qt6-base-dev-tools qmake6 qmake6-bin qt6-base-dev qt6-multimedia-dev qt6-tools-dev-tools libgl-dev qt6-l10n-tools libqt6opengl6-dev qt6-declarative-dev libqt6svg6-dev libqt6core5compat6-dev qml6-module-qt5compat-graphicaleffects qt6-5compat-dev libpoppler-qt6-dev qt6-image-formats-plugins qml6-module-qtquick-controls qml6-module-qtquick-layouts qml6-module-qtqml-workerscript qml6-module-qtquick-templates 7zip-full 7zip-rar git build-essential
|
|
|
|
# Step 3: Download YACReader source code
|
|
if [ "$1" == "develop" ]; then
|
|
if [ -d "$YACREADER_DIR" ]; then
|
|
echo "Removing existing YACReader directory..."
|
|
rm -rf "$YACREADER_DIR"
|
|
fi
|
|
echo "Cloning YACReader repository..."
|
|
git clone "$YACREADER_REPO" "$YACREADER_DIR"
|
|
else
|
|
download_latest_release
|
|
fi
|
|
|
|
# Step 4: Download and extract 7zip source code
|
|
echo "Downloading 7zip source code..."
|
|
wget "$SEVENZIP_URL" -O "$SEVENZIP_ARCHIVE"
|
|
echo "Extracting 7zip source code..."
|
|
7z x "$SEVENZIP_ARCHIVE" -o"$SEVENZIP_DIR"
|
|
|
|
# Step 5: Build and install 7z.so with RAR support
|
|
echo "Building and installing 7z.so with RAR support..."
|
|
cd "$SEVENZIP_DIR/CPP/7zip/Bundles/Format7zF"
|
|
make -f makefile.gcc
|
|
sudo mkdir -p /usr/lib/7zip
|
|
sudo cp ./_o/7z.so /usr/lib/7zip
|
|
|
|
# Step 6: Build YACReader
|
|
echo "Building YACReader..."
|
|
cd "$YACREADER_DIR"
|
|
export DEFINES_VAR=DEFINES+\=\"BUILD_NUMBER=\\\\\\\"CUSTOM_BUILD\\\\\\\"\"
|
|
qmake6 CONFIG+="7zip" $DEFINES_VAR
|
|
make
|
|
|
|
# Step 7: Install YACReader
|
|
echo "Installing YACReader..."
|
|
sudo make install
|
|
|
|
echo "YACReader build and installation complete." |