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."
|
echo "Running apt update."
|
||||||
sudo apt update
|
sudo apt update
|
||||||
echo "Installing dependencies with apt."
|
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
|
- name: Install libjxl
|
||||||
|
working-directory: tools/makedeb
|
||||||
run: |
|
run: |
|
||||||
echo "Downloading and installing libhwy and libjxl..."
|
echo "Building and installing libjxl..."
|
||||||
VERSION_UBUNTU=20.04
|
makedeb -si --no-confirm -p PKGBUILD.libjxl
|
||||||
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
|
|
||||||
|
|
||||||
- name: Install Exiv2
|
- name: Install Exiv2
|
||||||
run: |
|
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