Use makedeb to build libjxl from source
This commit is contained in:
parent
775f7cbd03
commit
bde73f5ce1
23
.github/workflows/appimage.yml
vendored
23
.github/workflows/appimage.yml
vendored
@ -35,21 +35,20 @@ jobs:
|
||||
echo "Running apt update."
|
||||
sudo apt update
|
||||
echo "Installing dependencies with apt."
|
||||
DEBIAN_FRONTEND=noninteractive sudo apt install -y cmake libgtk-3-dev libgtkmm-3.0-dev liblensfun-dev librsvg2-dev liblcms2-dev libfftw3-dev libiptcdata0-dev libtiff5-dev libcanberra-gtk3-dev liblensfun-bin libexpat1-dev libbrotli-dev zlib1g-dev libinih-dev adwaita-icon-theme-full libtcmalloc-minimal4
|
||||
DEBIAN_FRONTEND=noninteractive sudo apt install -y cmake libgtk-3-dev libgtkmm-3.0-dev liblensfun-dev librsvg2-dev liblcms2-dev libfftw3-dev libiptcdata0-dev libtiff5-dev libcanberra-gtk3-dev liblensfun-bin libexpat1-dev libbrotli-dev zlib1g-dev libinih-dev adwaita-icon-theme-full gettext libarchive-tools zstd libgif-dev libwebp-dev libwebpdemux2
|
||||
|
||||
- name: Install makedeb
|
||||
run: |
|
||||
echo "Installing makedeb..."
|
||||
curl -Ss -qgb "" -fLC - --retry 3 --retry-delay 3 -o makedeb.deb \
|
||||
"https://github.com/makedeb/makedeb/releases/download/v16.1.0-beta1/makedeb-beta_16.1.0-beta1_amd64_focal.deb"
|
||||
DEBIAN_FRONTEND=noninteractive sudo dpkg -i makedeb.deb
|
||||
|
||||
- name: Install libjxl
|
||||
working-directory: tools/makedeb
|
||||
run: |
|
||||
echo "Downloading and installing libhwy and libjxl..."
|
||||
VERSION_UBUNTU=20.04
|
||||
VERSION_JXL=0.10.2
|
||||
DEB_URL_HWYDEV="https://launchpad.net/~ubuntuhandbook1/+archive/ubuntu/apps/+files/libhwy-dev_0.16.0-0focal1_amd64.deb"
|
||||
DEB_URL_HWY="https://launchpad.net/~ubuntuhandbook1/+archive/ubuntu/apps/+files/libhwy0_0.16.0-0focal1_amd64.deb"
|
||||
curl -Ss -qgb "" -fLC - --retry 3 --retry-delay 3 -o libhwy-dev.deb "$DEB_URL_HWYDEV"
|
||||
curl -Ss -qgb "" -fLC - --retry 3 --retry-delay 3 -o libhwy.deb "$DEB_URL_HWY"
|
||||
curl -Ss -qgb "" -fLC - --retry 3 --retry-delay 3 -o libjxl-debs.tar.gz \
|
||||
"https://github.com/libjxl/libjxl/releases/download/v${VERSION_JXL}/jxl-debs-amd64-ubuntu-${VERSION_UBUNTU}-v${VERSION_JXL}.tar.gz"
|
||||
tar xf libjxl-debs.tar.gz
|
||||
DEBIAN_FRONTEND=noninteractive sudo dpkg -i libhwy-dev.deb libhwy.deb jxl_${VERSION_JXL}_amd64.deb libjxl-dev_${VERSION_JXL}_amd64.deb libjxl_${VERSION_JXL}_amd64.deb
|
||||
echo "Building and installing libjxl..."
|
||||
makedeb -si --no-confirm -p PKGBUILD.libjxl
|
||||
|
||||
- name: Install Exiv2
|
||||
run: |
|
||||
|
41
tools/makedeb/PKGBUILD.libjxl
Normal file
41
tools/makedeb/PKGBUILD.libjxl
Normal file
@ -0,0 +1,41 @@
|
||||
# Maintainer: RawTherapee Developers
|
||||
|
||||
_pkgname="libjxl"
|
||||
pkgname="$_pkgname"
|
||||
pkgver='0.10.2'
|
||||
pkgrel='1'
|
||||
pkgdesc='JPEG XL image format reference implementation'
|
||||
url='https://github.com/libjxl/libjxl'
|
||||
license=('BSD')
|
||||
arch=('amd64')
|
||||
|
||||
depends=('libgif-dev' 'libjpeg-dev' 'libopenexr-dev' 'libpng-dev' 'libwebp-dev')
|
||||
makedepends=('cmake' 'pkg-config' 'libbrotli-dev' 'libgflags-dev')
|
||||
|
||||
_pkgsrc="$_pkgname"
|
||||
source=("git+$url.git#tag=v$pkgver")
|
||||
sha256sums=('SKIP')
|
||||
|
||||
prepare() {
|
||||
cd "$_pkgsrc"
|
||||
git submodule update --init --recursive --depth 1 --recommend-shallow
|
||||
}
|
||||
|
||||
build() {
|
||||
local _cmake_options=(
|
||||
-B build
|
||||
-S "$_pkgsrc"
|
||||
-DCMAKE_BUILD_TYPE=Release
|
||||
-DCMAKE_INSTALL_PREFIX='/usr'
|
||||
-DJPEGXL_FORCE_SYSTEM_BROTLI=ON
|
||||
-DBUILD_TESTING=OFF
|
||||
-Wno-dev
|
||||
)
|
||||
|
||||
cmake "${_cmake_options[@]}"
|
||||
cmake --build build --parallel
|
||||
}
|
||||
|
||||
package() {
|
||||
DESTDIR="$pkgdir" cmake --install build
|
||||
}
|
135
tools/makedeb/install.sh
Normal file
135
tools/makedeb/install.sh
Normal file
@ -0,0 +1,135 @@
|
||||
#!/usr/bin/env bash
|
||||
# The installation script for makedeb. This is the script that's shown and gets ran from https://makedeb.org.
|
||||
set -e
|
||||
|
||||
# Handy env vars.
|
||||
MAKEDEB_RELEASE="${MAKEDEB_RELEASE:-}"
|
||||
makedeb_url='makedeb.org'
|
||||
color_normal="$(tput sgr0)"
|
||||
color_bold="$(tput bold)"
|
||||
color_green="$(tput setaf 77)"
|
||||
color_orange="$(tput setaf 214)"
|
||||
color_blue="$(tput setaf 14)"
|
||||
color_red="$(tput setaf 202)"
|
||||
color_purple="$(tput setaf 135)"
|
||||
noninteractive_mode=0
|
||||
apt_args=()
|
||||
|
||||
# Handy functions.
|
||||
msg() {
|
||||
echo "${color_blue}[>]${color_normal} ${1}"
|
||||
}
|
||||
|
||||
error() {
|
||||
echo "${color_red}[!]${color_normal} ${1}"
|
||||
}
|
||||
|
||||
question() {
|
||||
echo "${color_purple}[?]${color_normal} ${1}"
|
||||
}
|
||||
|
||||
die_cmd() {
|
||||
error "${1}"
|
||||
exit 1
|
||||
}
|
||||
|
||||
answered_yes() {
|
||||
if [[ "${1}" == "" || "${1,,}" == "y" ]]; then
|
||||
return 0
|
||||
else
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
|
||||
# Pre-checks.
|
||||
if [[ "${UID}" == "0" ]]; then
|
||||
die_cmd "This script is not allowed to be run under the root user. Please run as a normal user and try again."
|
||||
fi
|
||||
|
||||
# Program start.
|
||||
echo "-------------------------"
|
||||
echo "${color_green}[#]${color_normal} ${color_orange}makedeb Installer${color_normal} ${color_green}[#]${color_normal}"
|
||||
echo "-------------------------"
|
||||
echo
|
||||
|
||||
if ! echo "${-}" | grep -q i; then
|
||||
msg "Running in noninteractive mode."
|
||||
noninteractive_mode=1
|
||||
export DEBIAN_FRONTEND=noninteractive
|
||||
apt_args+=('-y')
|
||||
fi
|
||||
|
||||
msg "Ensuring needed packages are installed..."
|
||||
if ! sudo apt-get update "${apt_args[@]}"; then
|
||||
die_cmd "Failed to update APT cache."
|
||||
fi
|
||||
|
||||
missing_dependencies=()
|
||||
dpkg-query -W 'wget' > /dev/null 2>&1 || missing_dependencies+=('wget')
|
||||
dpkg-query -W 'gpg' > /dev/null 2>&1 || missing_dependencies+=('gpg')
|
||||
|
||||
if ! ( test -z "${missing_dependencies[*]}" || sudo apt-get install "${apt_args[@]}" --mark-auto "${missing_dependencies[@]}" ); then
|
||||
die_cmd "Failed to install needed packages."
|
||||
fi
|
||||
|
||||
echo
|
||||
|
||||
if (( "${noninteractive_mode}" )) && [[ "${MAKEDEB_RELEASE:+x}" == '' ]]; then
|
||||
error "The script was ran in noninteractive mode, but no makedeb package was specified to install."
|
||||
error "Please specify a package to install via the 'MAKEDEB_RELEASE' environment variable."
|
||||
die_cmd "Available packages are 'makedeb', 'makedeb-beta', and 'makedeb-alpha'."
|
||||
elif [[ "${MAKEDEB_RELEASE:+x}" == '' ]]; then
|
||||
msg "Multiple releases of makedeb are available for installation."
|
||||
msg "Currently, you can install one of 'makedeb', 'makedeb-beta', or"
|
||||
msg "'makedeb-alpha'."
|
||||
|
||||
while true; do
|
||||
read -p "$(question "Which release would you like? ")" MAKEDEB_RELEASE
|
||||
|
||||
if ! echo "${MAKEDEB_RELEASE}" | grep -qE '^makedeb$|^makedeb-beta$|^makedeb-alpha$'; then
|
||||
error "Invalid response: ${MAKEDEB_RELEASE}"
|
||||
continue
|
||||
fi
|
||||
|
||||
break
|
||||
done
|
||||
|
||||
echo
|
||||
fi
|
||||
|
||||
case "${MAKEDEB_RELEASE}" in
|
||||
makedeb|makedeb-alpha|makedeb-beta)
|
||||
;;
|
||||
*)
|
||||
echo
|
||||
error "Invalid \$MAKEDEB_RELEASE: '${MAKEDEB_RELEASE}'"
|
||||
exit 1 ;;
|
||||
esac
|
||||
|
||||
msg "Setting up makedeb APT repository..."
|
||||
if ! wget -qO - "https://proget.${makedeb_url}/debian-feeds/makedeb.pub" | gpg --dearmor | sudo tee /usr/share/keyrings/makedeb-archive-keyring.gpg 1> /dev/null; then
|
||||
die_cmd "Failed to set up makedeb APT repository."
|
||||
fi
|
||||
echo "deb [signed-by=/usr/share/keyrings/makedeb-archive-keyring.gpg arch=all] https://proget.${makedeb_url} makedeb main" | sudo tee /etc/apt/sources.list.d/makedeb.list 1> /dev/null
|
||||
|
||||
msg "Updating APT cache..."
|
||||
if ! sudo apt-get update "${apt_args[@]}"; then
|
||||
die_cmd "Failed to update APT cache."
|
||||
fi
|
||||
|
||||
echo
|
||||
msg "Installing '${MAKEDEB_RELEASE}'..."
|
||||
if ! sudo apt-get install "${apt_args[@]}" -- "${MAKEDEB_RELEASE}"; then
|
||||
die_cmd "Failed to install package."
|
||||
fi
|
||||
|
||||
msg "Finished! If you need help of any kind, feel free to reach out:"
|
||||
echo
|
||||
msg "${color_bold}makedeb Homepage:${color_normal} https://${makedeb_url}"
|
||||
msg "${color_bold}makedeb Package Repository:${color_normal} https://mpr.${makedeb_url}"
|
||||
msg "${color_bold}makedeb Documentation:${color_normal} https://docs.${makedeb_url}"
|
||||
msg "${color_bold}makedeb Support:${color_normal} https://docs.${makedeb_url}/support/obtaining-support"
|
||||
echo
|
||||
msg "Enjoy makedeb!"
|
||||
|
||||
# vim: set sw=4 expandtab:
|
Loading…
x
Reference in New Issue
Block a user