--- name: "qt-linux" suites: - "precise" architectures: - "i386" - "amd64" packages: - "zip" - "unzip" - "faketime" - "unzip" - "libxext-dev" reference_datetime: "2011-01-30 00:00:00" remotes: [] files: - "qt-everywhere-opensource-src-4.6.4.tar.gz" script: | export FAKETIME=$REFERENCE_DATETIME export TZ=UTC if [ "$GBUILD_BITS" == "32" ]; then ARCH='i386-linux-gnu' else ARCH='x86_64-linux-gnu' fi # The purpose of this gitian build is not to actually build Qt, but to export # the headers as well as pkgconfig files in a useable format so that we can # pretend to link against an older version. The goal is to link to the # system version of Qt 4. # Also build development tools. INSTALLPREFIX="$HOME/install" # Integrity Check echo "9ad4d46c721b53a429ed5a2eecfd3c239a9ab566562f183f99d3125f1a234250 qt-everywhere-opensource-src-4.6.4.tar.gz" | sha256sum -c # Make install directories mkdir -p $INSTALLPREFIX mkdir -p $INSTALLPREFIX/include PKGCONFIGDIR=$INSTALLPREFIX/lib/pkgconfig mkdir -p $PKGCONFIGDIR # tar xzf qt-everywhere-opensource-src-4.6.4.tar.gz cd qt-everywhere-opensource-src-4.6.4 QTBUILDDIR=$(pwd) sed 's/TODAY=`date +%Y-%m-%d`/TODAY=2011-01-30/' -i configure # Need to build 4.6-versioned host utilities as well (lrelease/qrc/lupdate/...) ./configure -prefix $INSTALLPREFIX -confirm-license -release -opensource -no-qt3support -no-multimedia -no-audio-backend -no-phonon -no-phonon-backend -no-declarative -no-script -no-scripttools -no-javascript-jit -no-webkit -no-svg -no-xmlpatterns -no-sql-sqlite -no-nis -no-cups -no-iconv -no-dbus -no-gif -no-libtiff -no-opengl -nomake examples -nomake demos -nomake docs # make $MAKEOPTS -C src/tools install # (rcc, uic, moc) make $MAKEOPTS -C tools/linguist/lrelease install # (lrelease) # install includes and pkgconfig files for DIR in src/corelib src/gui src/testlib src/dbus src/network; do ( cd $DIR # extract module (QtCore/QtNetwork/...) from Makefile MODULE=$(grep "QMAKE_TARGET *=" Makefile | cut -d = -f 2 | xargs) # patch makefile so that not everything is build first sed -i 's/first: all/first:/g' Makefile make install_flat_headers install_class_headers install_targ_headers # create and install pkgconfig descriptor make ../../lib/pkgconfig/$MODULE.pc sed -e "s,$QTBUILDDIR,$INSTALLPREFIX,g" ../../lib/pkgconfig/$MODULE.pc > $PKGCONFIGDIR/$MODULE.pc # create links to existing Qt libraries ln -sf /usr/lib/${ARCH}/lib${MODULE}.so.4 ${INSTALLPREFIX}/lib/lib${MODULE}.so ) done # Write our own configuration header, same as Ubuntu # When we don't do this, the configuration will be without STL support (the QString from/to stdString methods) QCONFIG=$INSTALLPREFIX/include/Qt/qconfig.h echo ' /* Qt Edition */ #ifndef QT_EDITION # define QT_EDITION QT_EDITION_OPENSOURCE #endif ' > $QCONFIG if [ "$GBUILD_BITS" == "32" ]; then echo ' /* Machine byte-order */ #define Q_BIG_ENDIAN 4321 #define Q_LITTLE_ENDIAN 1234 #define QT_BUILD_KEY "i386 linux g++-4 full-config" #define QT_BUILD_KEY_COMPAT "i686 Linux g++-4 full-config" #ifdef QT_BOOTSTRAPPED #define Q_BYTE_ORDER Q_LITTLE_ENDIAN #else #define Q_BYTE_ORDER Q_LITTLE_ENDIAN #endif /* Machine Architecture */ #ifndef QT_BOOTSTRAPPED # define QT_ARCH_I386 #else # define QT_ARCH_I386 #endif /* Compile time features */ #define QT_LARGEFILE_SUPPORT 64 #define QT_POINTER_SIZE 4 ' >> $QCONFIG else echo ' /* Machine byte-order */ #define Q_BIG_ENDIAN 4321 #define Q_LITTLE_ENDIAN 1234 #define QT_BUILD_KEY "x86_64 linux g++-4 full-config" #define QT_BUILD_KEY_COMPAT "x86_64 Linux g++-4 full-config" #ifdef QT_BOOTSTRAPPED #define Q_BYTE_ORDER Q_LITTLE_ENDIAN #else #define Q_BYTE_ORDER Q_LITTLE_ENDIAN #endif /* Machine Architecture */ #ifndef QT_BOOTSTRAPPED # define QT_ARCH_X86_64 #else # define QT_ARCH_X86_64 #endif /* Compile time features */ #define QT_LARGEFILE_SUPPORT 64 #define QT_POINTER_SIZE 8 ' >> $QCONFIG fi echo ' #ifndef QT_BOOTSTRAPPED #if defined(QT_NO_EGL) && defined(QT_EGL) # undef QT_NO_EGL #elif !defined(QT_NO_EGL) && !defined(QT_EGL) # define QT_NO_EGL #endif #if defined(QT_NO_GSTREAMER) && defined(QT_GSTREAMER) # undef QT_NO_GSTREAMER #elif !defined(QT_NO_GSTREAMER) && !defined(QT_GSTREAMER) # define QT_NO_GSTREAMER #endif #if defined(QT_NO_ICD) && defined(QT_ICD) # undef QT_NO_ICD #elif !defined(QT_NO_ICD) && !defined(QT_ICD) # define QT_NO_ICD #endif #if defined(QT_NO_IMAGEFORMAT_JPEG) && defined(QT_IMAGEFORMAT_JPEG) # undef QT_NO_IMAGEFORMAT_JPEG #elif !defined(QT_NO_IMAGEFORMAT_JPEG) && !defined(QT_IMAGEFORMAT_JPEG) # define QT_NO_IMAGEFORMAT_JPEG #endif #if defined(QT_NO_IMAGEFORMAT_MNG) && defined(QT_IMAGEFORMAT_MNG) # undef QT_NO_IMAGEFORMAT_MNG #elif !defined(QT_NO_IMAGEFORMAT_MNG) && !defined(QT_IMAGEFORMAT_MNG) # define QT_NO_IMAGEFORMAT_MNG #endif #if defined(QT_NO_IMAGEFORMAT_TIFF) && defined(QT_IMAGEFORMAT_TIFF) # undef QT_NO_IMAGEFORMAT_TIFF #elif !defined(QT_NO_IMAGEFORMAT_TIFF) && !defined(QT_IMAGEFORMAT_TIFF) # define QT_NO_IMAGEFORMAT_TIFF #endif #if defined(QT_NO_MULTIMEDIA) && defined(QT_MULTIMEDIA) # undef QT_NO_MULTIMEDIA #elif !defined(QT_NO_MULTIMEDIA) && !defined(QT_MULTIMEDIA) # define QT_NO_MULTIMEDIA #endif #if defined(QT_NO_OPENVG) && defined(QT_OPENVG) # undef QT_NO_OPENVG #elif !defined(QT_NO_OPENVG) && !defined(QT_OPENVG) # define QT_NO_OPENVG #endif #if defined(QT_NO_PHONON) && defined(QT_PHONON) # undef QT_NO_PHONON #elif !defined(QT_NO_PHONON) && !defined(QT_PHONON) # define QT_NO_PHONON #endif #if defined(QT_NO_PULSEAUDIO) && defined(QT_PULSEAUDIO) # undef QT_NO_PULSEAUDIO #elif !defined(QT_NO_PULSEAUDIO) && !defined(QT_PULSEAUDIO) # define QT_NO_PULSEAUDIO #endif #if defined(QT_NO_S60) && defined(QT_S60) # undef QT_NO_S60 #elif !defined(QT_NO_S60) && !defined(QT_S60) # define QT_NO_S60 #endif #if defined(QT_NO_STYLE_S60) && defined(QT_STYLE_S60) # undef QT_NO_STYLE_S60 #elif !defined(QT_NO_STYLE_S60) && !defined(QT_STYLE_S60) # define QT_NO_STYLE_S60 #endif #if defined(QT_NO_SXE) && defined(QT_SXE) # undef QT_NO_SXE #elif !defined(QT_NO_SXE) && !defined(QT_SXE) # define QT_NO_SXE #endif #if defined(QT_NO_WEBKIT) && defined(QT_WEBKIT) # undef QT_NO_WEBKIT #elif !defined(QT_NO_WEBKIT) && !defined(QT_WEBKIT) # define QT_NO_WEBKIT #endif #if defined(QT_NO_ZLIB) && defined(QT_ZLIB) # undef QT_NO_ZLIB #elif !defined(QT_NO_ZLIB) && !defined(QT_ZLIB) # define QT_NO_ZLIB #endif #if defined(QT_RUNTIME_XCURSOR) && defined(QT_NO_RUNTIME_XCURSOR) # undef QT_RUNTIME_XCURSOR #elif !defined(QT_RUNTIME_XCURSOR) && !defined(QT_NO_RUNTIME_XCURSOR) # define QT_RUNTIME_XCURSOR #endif #if defined(QT_RUNTIME_XFIXES) && defined(QT_NO_RUNTIME_XFIXES) # undef QT_RUNTIME_XFIXES #elif !defined(QT_RUNTIME_XFIXES) && !defined(QT_NO_RUNTIME_XFIXES) # define QT_RUNTIME_XFIXES #endif #if defined(QT_RUNTIME_XINERAMA) && defined(QT_NO_RUNTIME_XINERAMA) # undef QT_RUNTIME_XINERAMA #elif !defined(QT_RUNTIME_XINERAMA) && !defined(QT_NO_RUNTIME_XINERAMA) # define QT_RUNTIME_XINERAMA #endif #if defined(QT_RUNTIME_XINPUT) && defined(QT_NO_RUNTIME_XINPUT) # undef QT_RUNTIME_XINPUT #elif !defined(QT_RUNTIME_XINPUT) && !defined(QT_NO_RUNTIME_XINPUT) # define QT_RUNTIME_XINPUT #endif #if defined(QT_RUNTIME_XRANDR) && defined(QT_NO_RUNTIME_XRANDR) # undef QT_RUNTIME_XRANDR #elif !defined(QT_RUNTIME_XRANDR) && !defined(QT_NO_RUNTIME_XRANDR) # define QT_RUNTIME_XRANDR #endif #if defined(QT_USE_MATH_H_FLOATS) && defined(QT_NO_USE_MATH_H_FLOATS) # undef QT_USE_MATH_H_FLOATS #elif !defined(QT_USE_MATH_H_FLOATS) && !defined(QT_NO_USE_MATH_H_FLOATS) # define QT_USE_MATH_H_FLOATS #endif #endif // QT_BOOTSTRAPPED #define QT_VISIBILITY_AVAILABLE ' >> $QCONFIG cp $QCONFIG $INSTALLPREFIX/include/QtCore/qconfig.h cd $INSTALLPREFIX # as zip stores file timestamps, use faketime to intercept stat calls to set dates for all files to reference date export LD_PRELOAD=/usr/lib/faketime/libfaketime.so.1 # Create a .tar.gz because .zip has problems with symbolic links find | sort | tar --no-recursion -cT /dev/stdin --mode='u+rw,go+r-w,a+X' --owner=0 --group=0 --mtime="$REFERENCE_DATETIME" | gzip -n > $OUTDIR/qt-linux${GBUILD_BITS}-4.6.4-gitian-r1.tar.gz