# Maintainer: Felix Kauselmann pkgname=libpdfium-nojs pkgver=6367.r1.7b90b15a21 pkgrel=1 pkgdesc="Open-source PDF rendering engine." arch=('x86_64') url="https://pdfium.googlesource.com/pdfium/" license=('BSD') depends=('freetype2' 'lcms2' 'libjpeg' 'openjpeg2' 'icu') conflicts=('libpdfium-bin') provides=('libpdfium') makedepends=('git' 'python' 'gn' 'ninja') source=("git+https://pdfium.googlesource.com/pdfium" "git+https://chromium.googlesource.com/chromium/src/build.git" "git+https://chromium.googlesource.com/chromium/src/third_party/abseil-cpp" "libpdfium.pc" ) md5sums=('SKIP' 'SKIP' 'SKIP' 'feb270967925a0844b1b9a9e15288eb3') pkgver() { cd $srcdir/pdfium # Version = branch name/number + number of commits since branch creation # + short head printf "%s.r%s.%s" $(git rev-parse --abbrev-ref HEAD | cut -d '/' -f2)\ $(git rev-list --count main..) $(git rev-parse --short HEAD) } prepare() { cd "$srcdir/pdfium" ln -sf $srcdir/build build ln -sf $srcdir/abseil-cpp third_party/abseil-cpp # Pdfium is developed alongside Chromium and does not provide releases # Upstream recommends using Chromium's dev channels instead # Extract pdfium branch name used in stable channel from chrome version history and do # a checkout chrome_version="$(curl https://versionhistory.googleapis.com/v1/chrome/platforms/linux/channels/stable/versions/all/releases | grep 'version' | head -1 | cut -d'.' -f 3)" # chrome_version="$(curl https://versionhistory.googleapis.com/v1/chrome/platforms/linux/channels/beta/versions/all/releases | grep 'version' | head -1 | cut -d'.' -f 3)" # chrome_version="$(curl https://versionhistory.googleapis.com/v1/chrome/platforms/linux/channels/dev/versions/all/releases | grep 'version' | head -1 | cut -d'.' -f 3)" git checkout "chromium/$chrome_version" # Extract build repo revision needed from DEPS file and do a checkout cd "$srcdir/pdfium/build" # Use a newer build revision to work around a build system bug in v6367 if [[ $chrome_version -gt 6367 ]] then git checkout $(awk '/build_revision/ {print substr($2,2,40)}' $srcdir/pdfium/DEPS) -q else git checkout bbc1efa4ce09a306328744c508d208407d5978a6 -q fi # Extract abseil-cpp repo revision needed from DEPS file and do a checkout cd "$srcdir/pdfium/third_party/abseil-cpp" git checkout $(awk '/abseil_revision/ {print substr($2,2,40)}' $srcdir/pdfium/DEPS) -q # Patch abseil build to be static sed -i 's/component(/static_library(/' BUILD.gn sed -i 's/is_component_build(/false/' BUILD.gn # Use system provided icu library (unbundling) mkdir -p "$srcdir/pdfium/third_party/icu" ln -sf "$srcdir/build/linux/unbundle/icu.gn" "$srcdir/pdfium/third_party/icu/BUILD.gn" # Download and decode shim header script needed to unbundle icu (gittiles is weird) mkdir -p "$srcdir/pdfium/tools/generate_shim_headers/" echo "Downloading generate_shim_headers script from Chromium." curl https://chromium.googlesource.com/chromium/src/+/main/tools/generate_shim_headers/generate_shim_headers.py?format=TEXT \ | base64 --decode > "$srcdir/pdfium/tools/generate_shim_headers/generate_shim_headers.py" echo "Done." # Create fake gclient_args.gni file to satisfy include list for build/config/compiler/compiler.gni touch "$srcdir/build/config/gclient_args.gni" # Exclude test fonts from build cd "$srcdir/pdfium/testing/" sed -i '/"\/\/third_party\/test_fonts",/s/^/#/g' BUILD.gn } build() { cd "$srcdir/pdfium" local _flags=( 'is_clang=false' 'use_sysroot=false' 'is_debug=false' 'symbol_level=0' 'pdf_enable_v8=false' 'pdf_enable_xfa=false' 'treat_warnings_as_errors=false' 'use_system_libjpeg=true' 'use_system_zlib=true' 'pdf_bundle_freetype=false' 'use_system_freetype=true' 'use_system_lcms2=true' 'use_system_libpng=true' 'use_custom_libcxx=false' 'enable_safe_libcxx=false' 'pdf_is_standalone = true' 'use_system_libopenjpeg2 = true' 'is_component_build = true' 'pdf_use_partition_alloc = false' ) gn gen out/Release --args="${_flags[*]}" ninja -C out/Release pdfium # set pdfium version in pc file sed "s/@VERSION@/${pkgver}/g" -i "${srcdir}/libpdfium.pc" } package() { cd "$srcdir/pdfium" install -D -m644 LICENSE "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE" install -D public/*.h --target-directory="${pkgdir}/usr/include/pdfium" install -D public/cpp/* --target-directory="${pkgdir}/usr/include/pdfium/cpp" install -D docs/* --target-directory="${pkgdir}/usr/share/doc/pdfium" install -Dm755 out/Release/libpdfium.so --target-directory="${pkgdir}/usr/lib" install -Dm644 ${srcdir}/libpdfium.pc --target-directory=${pkgdir}/usr/lib/pkgconfig }