yacreader/build_scripts/ubuntu_24.04/build.sh
Luis Ángel San Martín 60413d9c9f Update the script for building in Ubuntu 24.04
It builds now 7z.so with rar support, so no codecs are needed at runtime, YACReader no longer loads separated codecs.
2024-09-22 17:22:30 +02:00

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."