Browse Source

auto update deps, use podman, fix sed

Mike L 3 years ago
parent
commit
5d56879004
4 changed files with 47 additions and 44 deletions
  1. BIN
      .DS_Store
  2. 1 1
      LIBVIPS_VERSION
  3. 6 6
      build.sh
  4. 40 37
      build/lin.sh

BIN
.DS_Store


+ 1 - 1
LIBVIPS_VERSION

@@ -1 +1 @@
-8.10.2
+8.10.6

+ 6 - 6
build.sh

@@ -50,15 +50,15 @@ if [ $PLATFORM = "darwin-x64" ] && [ "$(uname)" == "Darwin" ]; then
   exit 0
 fi
 
-# Is docker available?
-if ! [ -x "$(command -v docker)" ]; then
-  echo "Please install docker"
+# Is podman available?
+if ! [ -x "$(command -v podman)" ]; then
+  echo "Please install podman"
   exit 1
 fi
 
 # Update base images
 for baseimage in centos:7 debian:buster debian:bullseye alpine:3.11; do
-  docker pull $baseimage
+  podman pull $baseimage
 done
 
 # Windows
@@ -67,8 +67,8 @@ done
 for flavour in linux-x64 linuxmusl-x64 linux-armv6 linux-armv7 linux-arm64v8; do
   if [ $PLATFORM = "all" ] || [ $PLATFORM = $flavour ]; then
     echo "Building $flavour..."
-    docker build -t vips-dev-$flavour $flavour
-    docker run --rm -e "VERSION_VIPS=${VERSION_VIPS}" -v $PWD:/packaging vips-dev-$flavour sh -c "/packaging/build/lin.sh"
+    podman build -t vips-dev-$flavour $flavour
+    podman run --rm -e "VERSION_VIPS=${VERSION_VIPS}" -v $PWD:/packaging vips-dev-$flavour /bin/bash "/packaging/build/lin.sh"
   fi
 done
 

+ 40 - 37
build/lin.sh

@@ -10,6 +10,7 @@ case ${PLATFORM} in
     PACKAGE=/packaging
     ROOT=/root
     VIPS_CPP_DEP=libvips-cpp.so.42
+    SED_I="sed -i"
     ;;
   darwin*)
     DARWIN=true
@@ -18,11 +19,12 @@ case ${PLATFORM} in
     PACKAGE=$PWD
     ROOT=$PWD/darwin-x64
     VIPS_CPP_DEP=libvips-cpp.42.dylib
+    SED_I="sed -i "
     ;;
 esac
 
-mkdir ${DEPS}
-mkdir ${TARGET}
+rm -rf ${DEPS} && mkdir ${DEPS}
+mkdir -p ${TARGET}
 
 # Common build paths and flags
 export PKG_CONFIG_LIBDIR="${TARGET}/lib/pkgconfig"
@@ -69,32 +71,32 @@ CURL="curl --silent --location --retry 3 --retry-max-time 30"
 # Dependency version numbers
 VERSION_ZLIB=1.2.11
 VERSION_FFI=3.3
-VERSION_GLIB=2.67.0
-VERSION_XML2=2.9.10
+VERSION_GLIB=2.68.2
+VERSION_XML2=2.9.12
 VERSION_GSF=1.14.47
 VERSION_EXIF=0.6.22
-VERSION_LCMS2=2.11
-VERSION_JPEG=2.0.90
+VERSION_LCMS2=2.12
+VERSION_JPEG=2.1.0
 VERSION_PNG16=1.6.37
-VERSION_SPNG=0.6.1
-VERSION_WEBP=1.1.0
-VERSION_TIFF=4.1.0
+VERSION_SPNG=0.6.3
+VERSION_WEBP=1.2.0
+VERSION_TIFF=4.3.0
 VERSION_ORC=0.4.32
 VERSION_GETTEXT=0.21
-VERSION_GDKPIXBUF=2.42.0
+VERSION_GDKPIXBUF=2.42.6
 VERSION_FREETYPE=2.10.4
-VERSION_EXPAT=2.2.10
-VERSION_FONTCONFIG=2.13.92
-VERSION_HARFBUZZ=2.7.2
+VERSION_EXPAT=2.3.0
+VERSION_FONTCONFIG=2.13.93
+VERSION_HARFBUZZ=2.8.1
 VERSION_PIXMAN=0.40.0
 VERSION_CAIRO=1.16.0
 VERSION_FRIBIDI=1.0.10
-VERSION_PANGO=1.48.0
-VERSION_SVG=2.50.2
+VERSION_PANGO=1.48.4
+VERSION_SVG=2.51.1
 VERSION_GIF=5.1.4
 VERSION_AOM=2.0.0
-VERSION_HEIF=1.9.1
-VERSION_MOZJPEG=4.0.0
+VERSION_HEIF=1.12.0
+VERSION_MOZJPEG=4.0.2
 
 # Remove patch version component
 without_patch() {
@@ -107,7 +109,8 @@ version_latest() {
   VERSION_LATEST=$($CURL https://release-monitoring.org/api/project/$3 | jq -r '.versions[]' | grep -E -m1 '^[0-9]+(.[0-9]+)*$')
   if [ "$VERSION_LATEST" != "$2" ]; then
     ALL_AT_VERSION_LATEST=false
-    echo "$1 version $2 has been superseded by $VERSION_LATEST"
+    $SED_I'' "s/\\(VERSION_${1^^}=\\)$2/\\1$VERSION_LATEST/" "${0%/*}/build/lin.sh"
+    echo "$1 version $2 has been replaced by $VERSION_LATEST"
   fi
 }
 version_latest "zlib" "$VERSION_ZLIB" "5303"
@@ -137,7 +140,7 @@ version_latest "svg" "$VERSION_SVG" "5420"
 #version_latest "gif" "$VERSION_GIF" "1158" # v5.1.5+ provides a Makefile only so will require custom cross-compilation setup
 #version_latest "aom" "$VERSION_AOM" "17628" # latest version in release monitoring does not exist
 version_latest "heif" "$VERSION_HEIF" "64439"
-if [ "$ALL_AT_VERSION_LATEST" = "false" ]; then exit 1; fi
+if [ "$ALL_AT_VERSION_LATEST" = "false" ]; then echo "Please rerun script"; exit 1; fi
 
 # Download and build dependencies from source
 
@@ -167,7 +170,7 @@ mkdir ${DEPS}/glib
 $CURL https://download.gnome.org/sources/glib/$(without_patch $VERSION_GLIB)/glib-${VERSION_GLIB}.tar.xz | tar xJC ${DEPS}/glib --strip-components=1
 cd ${DEPS}/glib
 # Disable tests
-sed -i'.bak' "/build_tests =/ s/= .*/= false/" meson.build
+$SED_I'.bak' "/build_tests =/ s/= .*/= false/" meson.build
 if [ "${PLATFORM%-*}" == "linuxmusl" ]; then
   #$CURL https://git.alpinelinux.org/aports/plain/main/glib/musl-libintl.patch | patch -p1 # not compatible with glib 2.65.0
   $CURL https://gist.github.com/kleisauke/f4bda6fc3030cf7b8a4fdb88e2ce8e13/raw/246ac97dfba72ad7607c69eed1810b2354cd2e86/musl-libintl.patch | patch -p1
@@ -222,7 +225,7 @@ $CURL https://github.com/strukturag/libheif/releases/download/v${VERSION_HEIF}/l
 cd ${DEPS}/heif
 ./configure --host=${CHOST} --prefix=${TARGET} --enable-static --disable-shared --disable-dependency-tracking \
   --disable-gdk-pixbuf --disable-go --disable-examples --disable-libde265 --disable-x265
-sed -i'.bak' -e '/^Requires:/a\'$'\n''Requires.private: aom' libheif.pc # https://github.com/strukturag/libheif/pull/354
+$SED_I'.bak' -e '/^Requires:/a\'$'\n''Requires.private: aom' libheif.pc # https://github.com/strukturag/libheif/pull/354
 make install-strip
 
 mkdir ${DEPS}/png16
@@ -282,20 +285,20 @@ mkdir ${DEPS}/gdkpixbuf
 $CURL https://download.gnome.org/sources/gdk-pixbuf/$(without_patch $VERSION_GDKPIXBUF)/gdk-pixbuf-${VERSION_GDKPIXBUF}.tar.xz | tar xJC ${DEPS}/gdkpixbuf --strip-components=1
 cd ${DEPS}/gdkpixbuf
 # Disable tests and thumbnailer
-sed -i'.bak' "/subdir('tests')/{N;d;}" meson.build
+$SED_I'.bak' "/subdir('tests')/{N;d;}" meson.build
 # Disable the built-in loaders for BMP, GIF, ICO, PNM, XPM, XBM, TGA, ICNS and QTIF
-sed -i'.bak' "/\[ 'bmp'/{N;N;N;d;}" gdk-pixbuf/meson.build
-sed -i'.bak' "/\[ 'pnm'/d" gdk-pixbuf/meson.build
-sed -i'.bak' "/\[ 'xpm'/{N;N;N;N;d;}" gdk-pixbuf/meson.build
+$SED_I'.bak' "/\[ 'bmp'/{N;N;N;d;}" gdk-pixbuf/meson.build
+$SED_I'.bak' "/\[ 'pnm'/d" gdk-pixbuf/meson.build
+$SED_I'.bak' "/\[ 'xpm'/{N;N;N;N;d;}" gdk-pixbuf/meson.build
 # Ensure meson can find libjpeg when cross-compiling
-sed -i'.bak' "s/has_header('jpeglib.h')/has_header('jpeglib.h', args: '-I\/target\/include')/g" meson.build
-sed -i'.bak' "s/cc.find_library('jpeg'/dependency('libjpeg'/g" meson.build
+$SED_I'.bak' "s/has_header('jpeglib.h')/has_header('jpeglib.h', args: '-I\/target\/include')/g" meson.build
+$SED_I'.bak' "s/cc.find_library('jpeg'/dependency('libjpeg'/g" meson.build
 LDFLAGS=${LDFLAGS/\$/} meson setup _build --default-library=static --buildtype=release --strip --prefix=${TARGET} ${MESON} \
   -Dtiff=false -Dintrospection=disabled -Dinstalled_tests=false -Dgio_sniffing=false -Dman=false -Dbuiltin_loaders=png,jpeg
 ninja -C _build
 ninja -C _build install
 # Include libjpeg and libpng as a dependency of gdk-pixbuf, see: https://gitlab.gnome.org/GNOME/gdk-pixbuf/merge_requests/50
-sed -i'.bak' "s/^\(Requires:.*\)/\1 libjpeg, libpng16/" ${TARGET}/lib/pkgconfig/gdk-pixbuf-2.0.pc
+$SED_I'.bak' "s/^\(Requires:.*\)/\1 libjpeg, libpng16/" ${TARGET}/lib/pkgconfig/gdk-pixbuf-2.0.pc
 
 mkdir ${DEPS}/freetype
 $CURL https://download.savannah.gnu.org/releases/freetype/freetype-${VERSION_FREETYPE}.tar.xz | tar xJC ${DEPS}/freetype --strip-components=1
@@ -323,7 +326,7 @@ mkdir ${DEPS}/harfbuzz
 $CURL https://github.com/harfbuzz/harfbuzz/archive/${VERSION_HARFBUZZ}.tar.gz | tar xzC ${DEPS}/harfbuzz --strip-components=1
 cd ${DEPS}/harfbuzz
 # Disable utils
-sed -i'.bak' "/subdir('util')/d" meson.build
+$SED_I'.bak' "/subdir('util')/d" meson.build
 LDFLAGS=${LDFLAGS/\$/} meson setup _build --default-library=static --buildtype=release --strip --prefix=${TARGET} ${MESON} \
   -Dicu=disabled -Dtests=disabled -Dintrospection=disabled -Ddocs=disabled -Dbenchmark=disabled ${DARWIN:+-Dcoretext=enabled}
 ninja -C _build
@@ -333,7 +336,7 @@ mkdir ${DEPS}/pixman
 $CURL https://cairographics.org/releases/pixman-${VERSION_PIXMAN}.tar.gz | tar xzC ${DEPS}/pixman --strip-components=1
 cd ${DEPS}/pixman
 # Disable tests and demos
-sed -i'.bak' "/subdir('test')/{N;d;}" meson.build
+$SED_I'.bak' "/subdir('test')/{N;d;}" meson.build
 LDFLAGS=${LDFLAGS/\$/} meson setup _build --default-library=static --buildtype=release --strip --prefix=${TARGET} ${MESON} \
   -Dlibpng=disabled -Diwmmxt=disabled -Dgtk=disabled -Dopenmp=disabled
 ninja -C _build
@@ -342,7 +345,7 @@ ninja -C _build install
 mkdir ${DEPS}/cairo
 $CURL https://cairographics.org/releases/cairo-${VERSION_CAIRO}.tar.xz | tar xJC ${DEPS}/cairo --strip-components=1
 cd ${DEPS}/cairo
-sed -i'.bak' "s/^\(Libs:.*\)/\1 @CAIRO_NONPKGCONFIG_LIBS@/" src/cairo.pc.in
+$SED_I'.bak' "s/^\(Libs:.*\)/\1 @CAIRO_NONPKGCONFIG_LIBS@/" src/cairo.pc.in
 ./configure --host=${CHOST} --prefix=${TARGET} --enable-static --disable-shared --disable-dependency-tracking \
   --disable-xlib --disable-xcb --disable-win32 --disable-egl --disable-glx --disable-wgl --disable-ps \
   --disable-trace --disable-interpreter ${LINUX:+--disable-quartz} ${DARWIN:+--enable-quartz-image} \
@@ -353,7 +356,7 @@ mkdir ${DEPS}/fribidi
 $CURL https://github.com/fribidi/fribidi/releases/download/v${VERSION_FRIBIDI}/fribidi-${VERSION_FRIBIDI}.tar.xz | tar xJC ${DEPS}/fribidi --strip-components=1
 cd ${DEPS}/fribidi
 # Disable tests
-sed -i'.bak' "/subdir('test')/d" meson.build
+$SED_I'.bak' "/subdir('test')/d" meson.build
 LDFLAGS=${LDFLAGS/\$/} meson setup _build --default-library=static --buildtype=release --strip --prefix=${TARGET} ${MESON} \
   -Ddocs=false
 ninja -C _build
@@ -363,7 +366,7 @@ mkdir ${DEPS}/pango
 $CURL https://download.gnome.org/sources/pango/$(without_patch $VERSION_PANGO)/pango-${VERSION_PANGO}.tar.xz | tar xJC ${DEPS}/pango --strip-components=1
 cd ${DEPS}/pango
 # Disable utils, examples, tests and tools
-sed -i'.bak' "/subdir('utils')/{N;N;N;d;}" meson.build
+$SED_I'.bak' "/subdir('utils')/{N;N;N;d;}" meson.build
 LDFLAGS=${LDFLAGS/\$/} meson setup _build --default-library=static --buildtype=release --strip --prefix=${TARGET} ${MESON} \
   -Dgtk_doc=false -Dintrospection=disabled -Dfontconfig=enabled
 ninja -C _build
@@ -372,11 +375,11 @@ ninja -C _build install
 mkdir ${DEPS}/svg
 $CURL https://download.gnome.org/sources/librsvg/$(without_patch $VERSION_SVG)/librsvg-${VERSION_SVG}.tar.xz | tar xJC ${DEPS}/svg --strip-components=1
 cd ${DEPS}/svg
-sed -i'.bak' "s/^\(Requires:.*\)/\1 cairo-gobject pangocairo/" librsvg.pc.in
+$SED_I'.bak' "s/^\(Requires:.*\)/\1 cairo-gobject pangocairo/" librsvg.pc.in
 # Do not include debugging symbols
-sed -i'.bak' "/debug =/ s/= .*/= false/" Cargo.toml
+$SED_I'.bak' "/debug =/ s/= .*/= false/" Cargo.toml
 # LTO optimization does not work for staticlib+rlib compilation
-sed -i'.bak' "s/, \"rlib\"//" librsvg/Cargo.toml
+$SED_I'.bak' "s/, \"rlib\"//" librsvg/Cargo.toml
 ./configure --host=${CHOST} --prefix=${TARGET} --enable-static --disable-shared --disable-dependency-tracking \
   --disable-introspection --disable-tools --disable-pixbuf-loader ${DARWIN:+--disable-Bsymbolic}
 make install-strip
@@ -396,7 +399,7 @@ PKG_CONFIG="pkg-config --static" ./configure --host=${CHOST} --prefix=${TARGET}
   --without-openslide --without-pdfium --without-poppler --without-ppm --without-radiance \
   ${LINUX:+LDFLAGS="$LDFLAGS -Wl,-Bsymbolic-functions"}
 # https://docs.fedoraproject.org/en-US/packaging-guidelines/#_removing_rpath
-sed -i'.bak' 's|^hardcode_libdir_flag_spec=.*|hardcode_libdir_flag_spec=""|g' libtool
+$SED_I'.bak' 's|^hardcode_libdir_flag_spec=.*|hardcode_libdir_flag_spec=""|g' libtool
 make install-strip
 
 # Cleanup