|
| 1 | +--- |
| 2 | +name: "qt-linux" |
| 3 | +suites: |
| 4 | +- "precise" |
| 5 | +architectures: |
| 6 | +- "i386" |
| 7 | +- "amd64" |
| 8 | +packages: |
| 9 | +- "zip" |
| 10 | +- "unzip" |
| 11 | +- "faketime" |
| 12 | +- "unzip" |
| 13 | +- "libxext-dev" |
| 14 | +reference_datetime: "2011-01-30 00:00:00" |
| 15 | +remotes: [] |
| 16 | +files: |
| 17 | +- "qt-everywhere-opensource-src-4.6.4.tar.gz" |
| 18 | +script: | |
| 19 | + export FAKETIME=$REFERENCE_DATETIME |
| 20 | + export TZ=UTC |
| 21 | + if [ "$GBUILD_BITS" == "32" ]; then |
| 22 | + ARCH='i386-linux-gnu' |
| 23 | + else |
| 24 | + ARCH='x86_64-linux-gnu' |
| 25 | + fi |
| 26 | + # The purpose of this gitian build is not to actually build Qt, but to export |
| 27 | + # the headers as well as pkgconfig files in a useable format so that we can |
| 28 | + # pretend to link against an older version. The goal is to link to the |
| 29 | + # system version of Qt 4. |
| 30 | + # Also build development tools. |
| 31 | + INSTALLPREFIX="$HOME/install" |
| 32 | + # Integrity Check |
| 33 | + echo "9ad4d46c721b53a429ed5a2eecfd3c239a9ab566562f183f99d3125f1a234250 qt-everywhere-opensource-src-4.6.4.tar.gz" | sha256sum -c |
| 34 | + # Make install directories |
| 35 | + mkdir -p $INSTALLPREFIX |
| 36 | + mkdir -p $INSTALLPREFIX/include |
| 37 | + PKGCONFIGDIR=$INSTALLPREFIX/lib/pkgconfig |
| 38 | + mkdir -p $PKGCONFIGDIR |
| 39 | + # |
| 40 | + tar xzf qt-everywhere-opensource-src-4.6.4.tar.gz |
| 41 | + cd qt-everywhere-opensource-src-4.6.4 |
| 42 | + QTBUILDDIR=$(pwd) |
| 43 | +
|
| 44 | + # Need to build 4.6-versioned host utilities as well (lrelease/qrc/lupdate/...) |
| 45 | + ./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 |
| 46 | + # |
| 47 | + make $MAKEOPTS -C src/tools install # (rcc, uic, moc) |
| 48 | + make $MAKEOPTS -C tools/linguist/lrelease install # (lrelease) |
| 49 | + # install includes and pkgconfig files |
| 50 | + for DIR in src/corelib src/gui src/testlib src/dbus src/network; do |
| 51 | + ( |
| 52 | + cd $DIR |
| 53 | + # extract module (QtCore/QtNetwork/...) from Makefile |
| 54 | + MODULE=$(grep "QMAKE_TARGET *=" Makefile | cut -d = -f 2 | xargs) |
| 55 | + # patch makefile so that not everything is build first |
| 56 | + sed -i 's/first: all/first:/g' Makefile |
| 57 | + make install_flat_headers install_class_headers install_targ_headers |
| 58 | + # create and install pkgconfig descriptor |
| 59 | + make ../../lib/pkgconfig/$MODULE.pc |
| 60 | + sed -e "s,$QTBUILDDIR,$INSTALLPREFIX,g" ../../lib/pkgconfig/$MODULE.pc > $PKGCONFIGDIR/$MODULE.pc |
| 61 | + # create links to existing Qt libraries |
| 62 | + ln -sf /usr/lib/${ARCH}/lib${MODULE}.so.4 ${INSTALLPREFIX}/lib/lib${MODULE}.so |
| 63 | + ) |
| 64 | + done |
| 65 | +
|
| 66 | + # Write our own configuration header, same as Ubuntu |
| 67 | + # When we don't do this, the configuration will be without STL support (the QString from/to stdString methods) |
| 68 | + QCONFIG=$INSTALLPREFIX/include/Qt/qconfig.h |
| 69 | + echo ' |
| 70 | + /* Qt Edition */ |
| 71 | + #ifndef QT_EDITION |
| 72 | + # define QT_EDITION QT_EDITION_OPENSOURCE |
| 73 | + #endif |
| 74 | + ' > $QCONFIG |
| 75 | +
|
| 76 | + if [ "$GBUILD_BITS" == "32" ]; then |
| 77 | + echo ' |
| 78 | + /* Machine byte-order */ |
| 79 | + #define Q_BIG_ENDIAN 4321 |
| 80 | + #define Q_LITTLE_ENDIAN 1234 |
| 81 | + #define QT_BUILD_KEY "i386 linux g++-4 full-config" |
| 82 | + #define QT_BUILD_KEY_COMPAT "i686 Linux g++-4 full-config" |
| 83 | +
|
| 84 | + #ifdef QT_BOOTSTRAPPED |
| 85 | + #define Q_BYTE_ORDER Q_LITTLE_ENDIAN |
| 86 | + #else |
| 87 | + #define Q_BYTE_ORDER Q_LITTLE_ENDIAN |
| 88 | + #endif |
| 89 | + /* Machine Architecture */ |
| 90 | + #ifndef QT_BOOTSTRAPPED |
| 91 | + # define QT_ARCH_I386 |
| 92 | + #else |
| 93 | + # define QT_ARCH_I386 |
| 94 | + #endif |
| 95 | + /* Compile time features */ |
| 96 | + #define QT_LARGEFILE_SUPPORT 64 |
| 97 | + #define QT_POINTER_SIZE 4 |
| 98 | + ' >> $QCONFIG |
| 99 | + else |
| 100 | + echo ' |
| 101 | + /* Machine byte-order */ |
| 102 | + #define Q_BIG_ENDIAN 4321 |
| 103 | + #define Q_LITTLE_ENDIAN 1234 |
| 104 | + #define QT_BUILD_KEY "x86_64 linux g++-4 full-config" |
| 105 | + #define QT_BUILD_KEY_COMPAT "x86_64 Linux g++-4 full-config" |
| 106 | +
|
| 107 | + #ifdef QT_BOOTSTRAPPED |
| 108 | + #define Q_BYTE_ORDER Q_LITTLE_ENDIAN |
| 109 | + #else |
| 110 | + #define Q_BYTE_ORDER Q_LITTLE_ENDIAN |
| 111 | + #endif |
| 112 | + /* Machine Architecture */ |
| 113 | + #ifndef QT_BOOTSTRAPPED |
| 114 | + # define QT_ARCH_X86_64 |
| 115 | + #else |
| 116 | + # define QT_ARCH_X86_64 |
| 117 | + #endif |
| 118 | + /* Compile time features */ |
| 119 | + #define QT_LARGEFILE_SUPPORT 64 |
| 120 | + #define QT_POINTER_SIZE 8 |
| 121 | + ' >> $QCONFIG |
| 122 | + fi |
| 123 | +
|
| 124 | + echo ' |
| 125 | + #ifndef QT_BOOTSTRAPPED |
| 126 | +
|
| 127 | + #if defined(QT_NO_EGL) && defined(QT_EGL) |
| 128 | + # undef QT_NO_EGL |
| 129 | + #elif !defined(QT_NO_EGL) && !defined(QT_EGL) |
| 130 | + # define QT_NO_EGL |
| 131 | + #endif |
| 132 | +
|
| 133 | + #if defined(QT_NO_GSTREAMER) && defined(QT_GSTREAMER) |
| 134 | + # undef QT_NO_GSTREAMER |
| 135 | + #elif !defined(QT_NO_GSTREAMER) && !defined(QT_GSTREAMER) |
| 136 | + # define QT_NO_GSTREAMER |
| 137 | + #endif |
| 138 | +
|
| 139 | + #if defined(QT_NO_ICD) && defined(QT_ICD) |
| 140 | + # undef QT_NO_ICD |
| 141 | + #elif !defined(QT_NO_ICD) && !defined(QT_ICD) |
| 142 | + # define QT_NO_ICD |
| 143 | + #endif |
| 144 | +
|
| 145 | + #if defined(QT_NO_IMAGEFORMAT_JPEG) && defined(QT_IMAGEFORMAT_JPEG) |
| 146 | + # undef QT_NO_IMAGEFORMAT_JPEG |
| 147 | + #elif !defined(QT_NO_IMAGEFORMAT_JPEG) && !defined(QT_IMAGEFORMAT_JPEG) |
| 148 | + # define QT_NO_IMAGEFORMAT_JPEG |
| 149 | + #endif |
| 150 | +
|
| 151 | + #if defined(QT_NO_IMAGEFORMAT_MNG) && defined(QT_IMAGEFORMAT_MNG) |
| 152 | + # undef QT_NO_IMAGEFORMAT_MNG |
| 153 | + #elif !defined(QT_NO_IMAGEFORMAT_MNG) && !defined(QT_IMAGEFORMAT_MNG) |
| 154 | + # define QT_NO_IMAGEFORMAT_MNG |
| 155 | + #endif |
| 156 | +
|
| 157 | + #if defined(QT_NO_IMAGEFORMAT_TIFF) && defined(QT_IMAGEFORMAT_TIFF) |
| 158 | + # undef QT_NO_IMAGEFORMAT_TIFF |
| 159 | + #elif !defined(QT_NO_IMAGEFORMAT_TIFF) && !defined(QT_IMAGEFORMAT_TIFF) |
| 160 | + # define QT_NO_IMAGEFORMAT_TIFF |
| 161 | + #endif |
| 162 | +
|
| 163 | + #if defined(QT_NO_MULTIMEDIA) && defined(QT_MULTIMEDIA) |
| 164 | + # undef QT_NO_MULTIMEDIA |
| 165 | + #elif !defined(QT_NO_MULTIMEDIA) && !defined(QT_MULTIMEDIA) |
| 166 | + # define QT_NO_MULTIMEDIA |
| 167 | + #endif |
| 168 | +
|
| 169 | + #if defined(QT_NO_OPENVG) && defined(QT_OPENVG) |
| 170 | + # undef QT_NO_OPENVG |
| 171 | + #elif !defined(QT_NO_OPENVG) && !defined(QT_OPENVG) |
| 172 | + # define QT_NO_OPENVG |
| 173 | + #endif |
| 174 | +
|
| 175 | + #if defined(QT_NO_PHONON) && defined(QT_PHONON) |
| 176 | + # undef QT_NO_PHONON |
| 177 | + #elif !defined(QT_NO_PHONON) && !defined(QT_PHONON) |
| 178 | + # define QT_NO_PHONON |
| 179 | + #endif |
| 180 | +
|
| 181 | + #if defined(QT_NO_PULSEAUDIO) && defined(QT_PULSEAUDIO) |
| 182 | + # undef QT_NO_PULSEAUDIO |
| 183 | + #elif !defined(QT_NO_PULSEAUDIO) && !defined(QT_PULSEAUDIO) |
| 184 | + # define QT_NO_PULSEAUDIO |
| 185 | + #endif |
| 186 | +
|
| 187 | + #if defined(QT_NO_S60) && defined(QT_S60) |
| 188 | + # undef QT_NO_S60 |
| 189 | + #elif !defined(QT_NO_S60) && !defined(QT_S60) |
| 190 | + # define QT_NO_S60 |
| 191 | + #endif |
| 192 | +
|
| 193 | + #if defined(QT_NO_STYLE_S60) && defined(QT_STYLE_S60) |
| 194 | + # undef QT_NO_STYLE_S60 |
| 195 | + #elif !defined(QT_NO_STYLE_S60) && !defined(QT_STYLE_S60) |
| 196 | + # define QT_NO_STYLE_S60 |
| 197 | + #endif |
| 198 | +
|
| 199 | + #if defined(QT_NO_SXE) && defined(QT_SXE) |
| 200 | + # undef QT_NO_SXE |
| 201 | + #elif !defined(QT_NO_SXE) && !defined(QT_SXE) |
| 202 | + # define QT_NO_SXE |
| 203 | + #endif |
| 204 | +
|
| 205 | + #if defined(QT_NO_WEBKIT) && defined(QT_WEBKIT) |
| 206 | + # undef QT_NO_WEBKIT |
| 207 | + #elif !defined(QT_NO_WEBKIT) && !defined(QT_WEBKIT) |
| 208 | + # define QT_NO_WEBKIT |
| 209 | + #endif |
| 210 | +
|
| 211 | + #if defined(QT_NO_ZLIB) && defined(QT_ZLIB) |
| 212 | + # undef QT_NO_ZLIB |
| 213 | + #elif !defined(QT_NO_ZLIB) && !defined(QT_ZLIB) |
| 214 | + # define QT_NO_ZLIB |
| 215 | + #endif |
| 216 | +
|
| 217 | + #if defined(QT_RUNTIME_XCURSOR) && defined(QT_NO_RUNTIME_XCURSOR) |
| 218 | + # undef QT_RUNTIME_XCURSOR |
| 219 | + #elif !defined(QT_RUNTIME_XCURSOR) && !defined(QT_NO_RUNTIME_XCURSOR) |
| 220 | + # define QT_RUNTIME_XCURSOR |
| 221 | + #endif |
| 222 | +
|
| 223 | + #if defined(QT_RUNTIME_XFIXES) && defined(QT_NO_RUNTIME_XFIXES) |
| 224 | + # undef QT_RUNTIME_XFIXES |
| 225 | + #elif !defined(QT_RUNTIME_XFIXES) && !defined(QT_NO_RUNTIME_XFIXES) |
| 226 | + # define QT_RUNTIME_XFIXES |
| 227 | + #endif |
| 228 | +
|
| 229 | + #if defined(QT_RUNTIME_XINERAMA) && defined(QT_NO_RUNTIME_XINERAMA) |
| 230 | + # undef QT_RUNTIME_XINERAMA |
| 231 | + #elif !defined(QT_RUNTIME_XINERAMA) && !defined(QT_NO_RUNTIME_XINERAMA) |
| 232 | + # define QT_RUNTIME_XINERAMA |
| 233 | + #endif |
| 234 | +
|
| 235 | + #if defined(QT_RUNTIME_XINPUT) && defined(QT_NO_RUNTIME_XINPUT) |
| 236 | + # undef QT_RUNTIME_XINPUT |
| 237 | + #elif !defined(QT_RUNTIME_XINPUT) && !defined(QT_NO_RUNTIME_XINPUT) |
| 238 | + # define QT_RUNTIME_XINPUT |
| 239 | + #endif |
| 240 | +
|
| 241 | + #if defined(QT_RUNTIME_XRANDR) && defined(QT_NO_RUNTIME_XRANDR) |
| 242 | + # undef QT_RUNTIME_XRANDR |
| 243 | + #elif !defined(QT_RUNTIME_XRANDR) && !defined(QT_NO_RUNTIME_XRANDR) |
| 244 | + # define QT_RUNTIME_XRANDR |
| 245 | + #endif |
| 246 | +
|
| 247 | + #if defined(QT_USE_MATH_H_FLOATS) && defined(QT_NO_USE_MATH_H_FLOATS) |
| 248 | + # undef QT_USE_MATH_H_FLOATS |
| 249 | + #elif !defined(QT_USE_MATH_H_FLOATS) && !defined(QT_NO_USE_MATH_H_FLOATS) |
| 250 | + # define QT_USE_MATH_H_FLOATS |
| 251 | + #endif |
| 252 | +
|
| 253 | + #endif // QT_BOOTSTRAPPED |
| 254 | +
|
| 255 | + #define QT_VISIBILITY_AVAILABLE |
| 256 | + ' >> $QCONFIG |
| 257 | + cp $QCONFIG $INSTALLPREFIX/include/QtCore/qconfig.h |
| 258 | +
|
| 259 | + cd $INSTALLPREFIX |
| 260 | + # as zip stores file timestamps, use faketime to intercept stat calls to set dates for all files to reference date |
| 261 | + export LD_PRELOAD=/usr/lib/faketime/libfaketime.so.1 |
| 262 | + # Create a .tar.gz because .zip has problems with symbolic links |
| 263 | + 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 |
0 commit comments