#!/bin/bash # arm/build # Check package dependencies, set metadata and launch # package build script. # by Stuart Winter # source /usr/share/slackdev/buildkit.sh # Package metadata: export PKGNAM=mozilla-firefox export VERSION=${VERSION:-18.0} export PKGARCH=${PKGARCH:-arm} export BUILD=${BUILD:-1_slack14.0} export PKGSERIES=${PKGSERIES:-xap} export SLACKPACKAGE=$PKGNAM-$VERSION-$PKGARCH-$BUILD.tgz ## ******************************************************************* ## # For test packages - best to store in another location rather than # overwriting the working copy in the main tree: export PKGSTORE=/tmp/ mkdir -vpm755 $PKGSTORE/$PKGSERIES ## ******************************************************************* ## # Reset the ARM file system: restore it to the 'factory settings' # as it were (this has no effect when building natively): sboxsysrestore # Ensure base ARM packages are installed first: slackbasedeps # Ensure $PKGNAM isn't already installed: slackfailpkgdeps $PKGNAM || removepkg $PKGNAM # Firefox will link against these if installed during build time, but I'd rather make them independent: removepkg mozilla-thunderbird seamonkey # We also need autoconf2.13 from the unsupported/packages # directory. This is because the newer version of gtk+2-2.12.7 # causes the build to explode. So we need to regenerate the autoconf # stuff - which needs an older autoconf. removepkg autoconf autoconf2.13 # This isn't exactly portable outside of my own build environment # but honestly, is anybody else actually using ARMedslack's build system? # If so, send me a post card! (or plane tickets to an exotic # island with dancing girls and fine wines! :-) # You must install the packages in this order: upgradepkg --install-new $PKGSTORE/../extra/autoconf213/autoconf*tgz #installpkg ~/armedslack/unsupported/packages/autoconf2.13*tgz # Ensure specific build dependencies (mainly libraries): { slackcheckpkgdeps dbus || installpkg $PKGSTORE/a/dbus-[0-9]*.t?z || exit 99; } { slackcheckpkgdeps alsa-lib || installpkg $PKGSTORE/l/alsa-lib-[0-9]*.t?z || exit 99; } { slackcheckpkgdeps atk || installpkg $PKGSTORE/l/atk-[0-9]*.t?z || exit 99; } { slackcheckpkgdeps cairo || installpkg $PKGSTORE/l/cairo-[0-9]*.t?z || exit 99; } { slackcheckpkgdeps dbus-glib || installpkg $PKGSTORE/l/dbus-glib-[0-9]*.t?z || exit 99; } { slackcheckpkgdeps expat || installpkg $PKGSTORE/l/expat-[0-9]*.t?z || exit 99; } { slackcheckpkgdeps freetype || installpkg $PKGSTORE/l/freetype-[0-9]*.t?z || exit 99; } { slackcheckpkgdeps gdk-pixbuf2 || installpkg $PKGSTORE/l/gdk-pixbuf2-[0-9]*.t?z || exit 99; } { slackcheckpkgdeps glib2 || installpkg $PKGSTORE/l/glib2-[0-9]*.t?z || exit 99; } { slackcheckpkgdeps gtk+2 || installpkg $PKGSTORE/l/gtk+2-[0-9]*.t?z || exit 99; } { slackcheckpkgdeps libnotify || installpkg $PKGSTORE/l/libnotify-[0-9]*.t?z || exit 99; } { slackcheckpkgdeps libpng || installpkg $PKGSTORE/l/libpng-[0-9]*.t?z || exit 99; } { slackcheckpkgdeps pango || installpkg $PKGSTORE/l/pango-[0-9]*.t?z || exit 99; } { slackcheckpkgdeps startup-notification || installpkg $PKGSTORE/l/startup-notification-[0-9]*.t?z || exit 99; } { slackcheckpkgdeps fontconfig || installpkg $PKGSTORE/x/fontconfig-[0-9]*.t?z || exit 99; } { slackcheckpkgdeps libX11 || installpkg $PKGSTORE/x/libX11-[0-9]*.t?z || exit 99; } { slackcheckpkgdeps libXau || installpkg $PKGSTORE/x/libXau-[0-9]*.t?z || exit 99; } { slackcheckpkgdeps libXdmcp || installpkg $PKGSTORE/x/libXdmcp-[0-9]*.t?z || exit 99; } { slackcheckpkgdeps libXext || installpkg $PKGSTORE/x/libXext-[0-9]*.t?z || exit 99; } { slackcheckpkgdeps libXrender || installpkg $PKGSTORE/x/libXrender-[0-9]*.t?z || exit 99; } { slackcheckpkgdeps libXt || installpkg $PKGSTORE/x/libXt-[0-9]*.t?z || exit 99; } { slackcheckpkgdeps libxcb || installpkg $PKGSTORE/x/libxcb-[0-9]*.t?z || exit 99; } { slackcheckpkgdeps pixman || installpkg $PKGSTORE/x/pixman-[0-9]*.t?z || exit 99; } # # Just Slackware ARM does this: { slackcheckpkgdeps libffi || installpkg $PKGSTORE/l/libffi-*.tgz || exit 99 ; } # Let's build only against mozilla-nss rather than anything else in the mozilla packages: removepkg seamonkey seamonkey-solibs mozilla-thunderbird { slackcheckpkgdeps mozilla-nss || installpkg $PKGSTORE/l/mozilla-nss-[0-9]*.t?z || exit 99; } # I know. This is an awful hack but the libffi inside the GCC sources # doesn't create a pkg-config file, and I'm not going to create another # package from the independant libffi sources (that does create a .pc). # We only need this file at build time. #cat << EOF > /usr/share/pkgconfig/libffi.pc #prefix=/usr/ #exec_prefix=${prefix} #libdir=${exec_prefix}/lib #includedir=$( ls -d /usr/lib/gcc/arm-slackware-linux-gnueabi/*/include ) # #Name: libffi #Description: Library supporting Foreign Function Interfaces #Version: 3.0.9 #Libs: -lffi #Cflags: #EOF # Launch the package build script: BUILDLOG=$( basename $SLACKPACKAGE .tgz ).build.log ( ./$PKGNAM.SlackBuild ) >& /dev/stdout | tee $BUILDLOG # Compress the build log: bzip2 -9fvz $BUILDLOG # Clean up the hack: #rm -f /usr/share/pkgconfig/libffi.pc