GraphicsMagick: fuzzing/oss-fuzz-build.sh: Try even harder to co...

GraphicsMagick Commits <[email protected]> Sat, 25 Nov 2023 08:37:03 -0600
Newsgroups gmane.comp.video.graphicsmagick.cvs
Message-ID <mailman.6109.1700925049.7940.graphicsmagick-commit@lists.sourceforge.net>
changeset 0217b1ed1784 in /hg/GraphicsMagick
details: http://hg.GraphicsMagick.org/hg/GraphicsMagick?cmd=changeset;node=0217b1ed1784
summary: fuzzing/oss-fuzz-build.sh: Try even harder to convince pkg-config to use 'pkg-config --static'

diffstat:

 fuzzing/oss-fuzz-build.sh |  119 ++++++++++++++++++++++-----------------------
 1 files changed, 57 insertions(+), 62 deletions(-)

diffs (220 lines):

diff -r 95653e6df876 -r 0217b1ed1784 fuzzing/oss-fuzz-build.sh
--- a/fuzzing/oss-fuzz-build.sh	Fri Nov 24 19:49:29 2023 -0600
+++ b/fuzzing/oss-fuzz-build.sh	Sat Nov 25 08:37:00 2023 -0600
@@ -3,15 +3,14 @@
 # This is intended to be run from OSS-Fuzz's build environment. We intend to
 # eventually refactor it to be easy to run locally.
 
+printf "SRC=${SRC}\n"
+printf "WORK=${WORK}\n"
+printf "OUT=${OUT}\n"
+
 rm -rf $WORK/bin/
 rm -rf $WORK/lib/
 
-set +x
-
-# We are doing a static build
-# Work-around for not using PKG_CHECK_MODULES_STATIC
-# See https://stackoverflow.com/questions/21027388/how-to-make-pkg-check-modules-work-with-static-libraries
-export PKG_CONFIG='pkg-config --static'
+set -x
 
 # build zlib
 # PKG_CONFIG_PATH=/work/lib/pkgconfig:/usr/lib/pkgconfig pkg-config --static zlib --libs
@@ -29,7 +28,7 @@
 printf "=== Building ${SRC}/xz...\n"
 pushd "$SRC/xz"
 ./autogen.sh --no-po4a --no-doxygen
-PKG_CONFIG_PATH="$WORK/lib/pkgconfig" ./configure \
+PKG_CONFIG_PATH="$WORK/lib/pkgconfig" PKG_CONFIG='pkg-config --static' ./configure \
                --disable-xz \
                --disable-xzdec \
                --disable-lzmadec \
@@ -55,35 +54,12 @@
 make install PREFIX="$WORK"
 popd
 
-printf "=== Building ${SRC}/jasper...\n"
-# With all extras removed from libjasper
-# PKG_CONFIG_PATH=/work/lib/pkgconfig:/usr/lib/pkgconfig pkg-config --static jasper --libs
-# -L/work/lib -ljasper
-pushd "$SRC/jasper"
-cmake -G "Unix Makefiles" -H. -Bstaging \
-      -DJAS_ENABLE_SHARED=false \
-      -DCMAKE_INSTALL_PREFIX=$WORK \
-      -DJAS_INCLUDE_BMP_CODEC=false \
-      -DJAS_INCLUDE_JPG_CODEC=false \
-      -DJAS_INCLUDE_MIF_CODEC=false \
-      -DJAS_INCLUDE_PNM_CODEC=false \
-      -DJAS_INCLUDE_RAS_CODEC=false \
-      -DJAS_ENABLE_OPENGL=false \
-      -DJAS_ENABLE_LIBJPEG=false \
-      -DJAS_ENABLE_OPENGL=false \
-      -DJAS_ENABLE_LIBHEIF=false
-pushd staging
-make -j$(nproc)
-make install
-popd
-popd
-
 printf "=== Building ${SRC}/libpng...\n"
 # PKG_CONFIG_PATH=/work/lib/pkgconfig:/usr/lib/pkgconfig pkg-config --static libpng --libs
 #    -L/work/lib -lpng16 -lm -lz
 pushd "$SRC/libpng"
 autoreconf -fiv
-PKG_CONFIG_PATH="$WORK/lib/pkgconfig" ./configure \
+PKG_CONFIG_PATH="$WORK/lib/pkgconfig" PKG_CONFIG='pkg-config --static' ./configure \
                --prefix="$WORK" \
                --disable-shared \
                --enable-static \
@@ -122,7 +98,7 @@
 printf "=== Building ${SRC}/libwebp...\n"
 pushd "$SRC/libwebp"
 ./autogen.sh
-PKG_CONFIG_PATH="$WORK/lib/pkgconfig" ./configure \
+PKG_CONFIG_PATH="$WORK/lib/pkgconfig" PKG_CONFIG='pkg-config --static' ./configure \
                CPPFLAGS="-I$WORK/include" \
                CFLAGS="$CFLAGS" \
                LDFLAGS="${LDFLAGS:-} -L$WORK/lib" \
@@ -148,34 +124,13 @@
 
 # FXIME: Add libdeflate, and libdeflate build here
 
-# Build libtiff
-# PKG_CONFIG_PATH=/work/lib/pkgconfig:/usr/lib/pkgconfig pkg-config --static libtiff-4 --libs
-#    -L/work/lib -L/usr/local/lib -L/work/lib -ltiff -lwebp -lzstd -llzma -ljpeg -lz -lm -lwebp -lm -lsharpyuv -lm -lzstd -pthread -llzma -pthread -lpthread -ljpeg -lz
-printf "=== Building ${SRC}/libtiff...\n"
-pushd "$SRC/libtiff"
-autoreconf -fiv
-PKG_CONFIG_PATH="$WORK/lib/pkgconfig" ./configure \
-               CPPFLAGS="-I$WORK/include" \
-               CFLAGS="$CFLAGS" \
-               LDFLAGS="${LDFLAGS:-} -L$WORK/lib" \
-               --prefix="$WORK" \
-               --disable-old-jpeg \
-               --disable-shared \
-               --enable-static \
-               --disable-tools \
-               --disable-tests \
-               --disable-contrib
-make -j$(nproc)
-make install
-popd
-
 # Build liblcms2
 # PKG_CONFIG_PATH=/work/lib/pkgconfig:/usr/lib/pkgconfig pkg-config --static lcms2 --libs
 #    -L/work/lib -llcms2 -lm -lpthread
 printf "=== Building ${SRC}/Little-CMS...\n"
 pushd "$SRC/Little-CMS"
 autoreconf -fiv
-PKG_CONFIG_PATH="$WORK/lib/pkgconfig" ./configure \
+PKG_CONFIG_PATH="$WORK/lib/pkgconfig" PKG_CONFIG='pkg-config --static' ./configure \
                CPPFLAGS="-I$WORK/include" \
                CFLAGS="$CFLAGS" \
                LDFLAGS="${LDFLAGS:-} -L$WORK/lib" \
@@ -192,7 +147,7 @@
 printf "=== Building ${SRC}/freetype...\n"
 pushd "$SRC/freetype"
 ./autogen.sh
-PKG_CONFIG_PATH="$WORK/lib/pkgconfig" ./configure \
+PKG_CONFIG_PATH="$WORK/lib/pkgconfig" PKG_CONFIG='pkg-config --static' ./configure \
                CPPFLAGS="-I$WORK/include" \
                CFLAGS="$CFLAGS" \
                LDFLAGS="${LDFLAGS:-} -L$WORK/lib" \
@@ -228,7 +183,7 @@
 printf "=== Building ${SRC}/libde265...\n"
 pushd "$SRC/libde265"
 ./autogen.sh
-./configure \
+PKG_CONFIG_PATH="$WORK/lib/pkgconfig" PKG_CONFIG='pkg-config --static' ./configure \
     --prefix="$WORK" \
     --disable-shared \
     --enable-static \
@@ -272,10 +227,6 @@
 make install
 popd
 
-# Remove shared libraries to avoid accidental linking against them.
-#rm -f $WORK/lib/*.so
-#rm -f $WORK/lib/*.so.*
-
 # Build libheif
 # PKG_CONFIG_PATH=/work/lib/pkgconfig:/usr/lib/pkgconfig pkg-config --static libheif --libs
 #   -L/work/lib -lheif -lc++ -lde265 -lstdc++ -lx265 -lc++ -lm -lrt -lm -ldl -lgcc_s -lgcc -lgcc_s -lgcc -lrt -ldl -laom -lm -lpthread -ljpeg
@@ -296,6 +247,27 @@
 make install
 popd
 
+# Build libtiff
+# PKG_CONFIG_PATH=/work/lib/pkgconfig:/usr/lib/pkgconfig pkg-config --static libtiff-4 --libs
+#    -L/work/lib -L/usr/local/lib -L/work/lib -ltiff -lwebp -lzstd -llzma -ljpeg -lz -lm -lwebp -lm -lsharpyuv -lm -lzstd -pthread -llzma -pthread -lpthread -ljpeg -lz
+printf "=== Building ${SRC}/libtiff...\n"
+pushd "$SRC/libtiff"
+autoreconf -fiv
+PKG_CONFIG_PATH="$WORK/lib/pkgconfig" PKG_CONFIG='pkg-config --static' ./configure \
+               CPPFLAGS="-I$WORK/include" \
+               CFLAGS="$CFLAGS" \
+               LDFLAGS="${LDFLAGS:-} -L$WORK/lib" \
+               --prefix="$WORK" \
+               --disable-old-jpeg \
+               --disable-shared \
+               --enable-static \
+               --disable-tools \
+               --disable-tests \
+               --disable-contrib
+make -j$(nproc)
+make install
+popd
+
 # Build libjxl
 #  PKG_CONFIG_PATH=/work/lib/pkgconfig:/usr/lib/pkgconfig pkg-config --static libjxl_threads --libs
 #    -L/work/lib -ljxl_threads -lm
@@ -328,6 +300,29 @@
 cp third_party/brotli/*.pc $WORK/lib/pkgconfig
 popd
 
+printf "=== Building ${SRC}/jasper...\n"
+# With all extras removed from libjasper
+# PKG_CONFIG_PATH=/work/lib/pkgconfig:/usr/lib/pkgconfig pkg-config --static jasper --libs
+# -L/work/lib -ljasper
+pushd "$SRC/jasper"
+cmake -G "Unix Makefiles" -H. -Bstaging \
+      -DJAS_ENABLE_SHARED=false \
+      -DCMAKE_INSTALL_PREFIX=$WORK \
+      -DJAS_INCLUDE_BMP_CODEC=false \
+      -DJAS_INCLUDE_JPG_CODEC=false \
+      -DJAS_INCLUDE_MIF_CODEC=false \
+      -DJAS_INCLUDE_PNM_CODEC=false \
+      -DJAS_INCLUDE_RAS_CODEC=false \
+      -DJAS_ENABLE_OPENGL=false \
+      -DJAS_ENABLE_LIBJPEG=false \
+      -DJAS_ENABLE_OPENGL=false \
+      -DJAS_ENABLE_LIBHEIF=false
+pushd staging
+make -j$(nproc)
+make install
+popd
+popd
+
 printf "Built libraries:\n"
 ls -l ${WORK}/lib
 
@@ -337,7 +332,7 @@
 # freetype-config is in $WORK/bin so we temporarily add $WORK/bin to the path
 # pkg-config names GraphicsMagick, GraphicsMagickWand, GraphicsMagick++
 printf "=== Building GraphicsMagick...\n"
-PATH=$WORK/bin:$PATH PKG_CONFIG_PATH="$WORK/lib/pkgconfig" ./configure \
+PATH=$WORK/bin:$PATH PKG_CONFIG_PATH="$WORK/lib/pkgconfig PKG_CONFIG='pkg-config --static'" ./configure \
     CPPFLAGS="-I$WORK/include/libpng16 -I$WORK/include/freetype2 -I$WORK/include/libxml2 -I$WORK/include" \
     CFLAGS="$CFLAGS" \
     LDFLAGS="${LDFLAGS:-} -L$WORK/lib" \
@@ -356,7 +351,7 @@
 # FIXME: This hard-coded list is not taking advantage of the list that GraphicsMagick configure computed!
 #MAGICK_LIBS="$WORK/lib/libxml2.a $WORK/lib/libjasper.a $WORK/lib/libpng.a $WORK/lib/libtiff.a $WORK/lib/liblcms2.a $WORK/lib/libwebpmux.a $WORK/lib/libwebp.a $WORK/lib/libsharpyuv.a $WORK/lib/libturbojpeg.a $WORK/lib/libfreetype.a $WORK/lib/libzstd.a $WORK/lib/liblzma.a $WORK/lib/libz.a"
 MAGICK_LIBS=''
-for lib in libxml2.a libjasper.a libpng.a libtiff.a liblcms2.a libwebpmux.a libwebpdemux.a libwebp.a libsharpyuv.a libheif.a libturbojpeg.a libfreetype.a libx265.a libde265.a libzstd.a liblzma.a libz.a ; do
+for lib in libxml2.a libjasper.a libpng.a libtiff.a liblcms2.a libwebpmux.a libwebp.a libsharpyuv.a libheif.a libturbojpeg.a libfreetype.a libx265.a libde265.a libzstd.a liblzma.a libz.a ; do
     if [ -f "${WORK}/lib/$lib" ] ; then
         if [ -n "${MAGICK_LIBS}" ] ; then
              MAGICK_LIBS="${MAGICK_LIBS} "