commit a76388bf16a6ff28f4427b47198c20c4aa8c113a Author: Nicolas Vigier boklm@torproject.org Date: Fri Feb 1 14:09:53 2019 +0100
Bug 26323: Build 32bit Linux bundles on 64bit Debian Wheezy --- projects/binutils/build | 2 -- projects/firefox/config | 23 +++++++++++++++++++---- projects/firefox/mozconfig-linux-i686 | 2 ++ projects/gcc/config | 15 ++------------- projects/go-webrtc/config | 7 ++++++- projects/go/config | 3 +++ projects/libfte/build | 7 ++++++- projects/libfte/config | 21 ++++++++++++++++++++- projects/pycrypto/build | 4 ++-- projects/pycrypto/config | 20 +++++++++++++++++++- projects/rust/config | 14 ++++++++++---- projects/snowflake/config | 7 ++++++- projects/tor/build | 7 ++++--- projects/tor/config | 13 ++++++++----- projects/twisted/build | 12 ++++++++---- projects/twisted/config | 22 ++++++++++++++++++++-- projects/webrtc/config | 30 ++++++++++++++++++++++-------- rbm.conf | 16 ++++++---------- 18 files changed, 163 insertions(+), 62 deletions(-)
diff --git a/projects/binutils/build b/projects/binutils/build index ee22a1c..6c01d27 100644 --- a/projects/binutils/build +++ b/projects/binutils/build @@ -8,8 +8,6 @@ distdir=/var/tmp/dist/binutils export DEB_BUILD_HARDENING_FORTIFY=1 export DEB_BUILD_HARDENING_FORMAT=1 export DEB_BUILD_HARDENING_PIE=1 -[% END -%] -[% IF c("var/linux-x86_64") %] # The libstdc++ shipped by default is non-PIC which breaks the binutils build # if we build with DEB_BUILD_HARDENING_PIE=1. We need to install a PIC one AND # make sure it gets used before the non-PIC one would. diff --git a/projects/firefox/config b/projects/firefox/config index 2f40fe2..a56f3f9 100644 --- a/projects/firefox/config +++ b/projects/firefox/config @@ -58,8 +58,9 @@ targets: arch_deps: - openjdk-8-jdk
- linux: + linux-x86_64: var: + martools_filename: mar-tools-linux64.zip arch_deps: - libgtk2.0-dev - libgtk-3-dev @@ -76,13 +77,27 @@ targets: - libmpc2 # needed to remove RUNPATH added by selfrando (see #22242) - chrpath - linux-x86_64: - var: - martools_filename: mar-tools-linux64.zip
linux-i686: var: martools_filename: mar-tools-linux32.zip + sort_deps: 0 + arch_deps: + - libgtk2.0-dev:i386 + - libgtk-3-dev:i386 + - libdbus-glib-1-dev:i386 + - libxt-dev:i386 + # To pass configure since ESR 31. + - libpulse-dev:i386 + # To pass configure since ESR 45. + - libgconf2-dev:i386 + # To pass configure since ESR 52 + - libx11-xcb-dev:i386 + # We built GCC but not the libmpc2, thus we need to install it + - libmpc2 + # needed to remove RUNPATH added by selfrando (see #22242) + - chrpath + - hardening-wrapper
osx-x86_64: var: diff --git a/projects/firefox/mozconfig-linux-i686 b/projects/firefox/mozconfig-linux-i686 index ee5082a..abc7b0e 100755 --- a/projects/firefox/mozconfig-linux-i686 +++ b/projects/firefox/mozconfig-linux-i686 @@ -11,7 +11,9 @@ export CXXFLAGS=-m32 export LDFLAGS=-m32 export XLDOPTS=-m32 export ASFLAGS=-m32 +export BINDGEN_CFLAGS='-m32 --gcc-toolchain=/var/tmp/dist/gcc'
+ac_add_options --target=i686-linux-gnu ac_add_options --host=i686-linux-gnu
ac_add_options --enable-optimize diff --git a/projects/gcc/config b/projects/gcc/config index b13a738..88dabdd 100644 --- a/projects/gcc/config +++ b/projects/gcc/config @@ -12,11 +12,7 @@ var: mkdir -p /var/tmp/dist tar -C /var/tmp/dist -xf $rootdir/[% c("compiler_tarfile") %] export PATH="/var/tmp/dist/gcc/bin:$PATH" - [% IF c("var/osname") == "linux-i686" -%] - export LD_LIBRARY_PATH=/var/tmp/dist/gcc/lib - [% ELSE -%] - export LD_LIBRARY_PATH=/var/tmp/dist/gcc/lib64 - [% END -%] + export LD_LIBRARY_PATH=/var/tmp/dist/gcc/lib64:/var/tmp/dist/gcc/lib32
[% IF c("hardened_gcc") -%] # Config options for hardening-wrapper @@ -47,19 +43,12 @@ targets: - zlib1g-dev linux: hardened_gcc: 1 - linux-i686: - var: - configure_opt: --enable-multilib --enable-languages=c,c++ --with-system-zlib - arch_deps: - - hardening-wrapper - - libc6-dev - - zlib1g-dev - linux-x86_64: var: configure_opt: --enable-multilib --enable-languages=c,c++ --with-arch_32=i686 arch_deps: - hardening-wrapper - libc6-dev-i386 + input_files: - project: container-image - URL: 'https://ftp.gnu.org/gnu/gcc/gcc-%5B% c("version") %]/gcc-[% c("version") %].tar.xz' diff --git a/projects/go-webrtc/config b/projects/go-webrtc/config index 8136122..5dbee5f 100644 --- a/projects/go-webrtc/config +++ b/projects/go-webrtc/config @@ -35,7 +35,12 @@ var: [% END -%]
targets: - linux: + linux-i686: + var: + arch_deps: + - pkg-config + - libx11-dev:i386 + linux-x86_64: var: arch_deps: - pkg-config diff --git a/projects/go/config b/projects/go/config index be9f84d..ab0a6d3 100644 --- a/projects/go/config +++ b/projects/go/config @@ -15,6 +15,9 @@ var: export GOARCH=[% c("var/GOARCH") %] export GOPATH=/var/tmp/dist/gopath export PATH=/var/tmp/dist/go/bin:/var/tmp/dist/gopath/bin:"$PATH" + [% IF c("var/linux-i686") -%] + export CGO_ENABLED=1 + [% END -%]
# Template build script for building a go library. # This can be called as projects/go/var/build_go_lib. diff --git a/projects/libfte/build b/projects/libfte/build index 5d62453..3eaeadb 100644 --- a/projects/libfte/build +++ b/projects/libfte/build @@ -12,6 +12,11 @@ tar -C /var/tmp/dist -xf $rootdir/[% c('input_files_by_name/gmp') %] ln -s /var/tmp/dist/gmp thirdparty/gmp mkdir -p $distdir tar -C $distdir -xf $rootdir/[% c('input_files_by_name/obfsproxy') %] +[% IF c("var/linux-i686") -%] + export CFLAGS=-m32 + export CXXFLAGS=-m32 + export LDFLAGS=-m32 +[% END -%] [% IF c("var/windows") -%] patch -p1 < $rootdir/bug20302.patch pydir=$distdir/python @@ -25,7 +30,7 @@ tar -C $distdir -xf $rootdir/[% c('input_files_by_name/obfsproxy') %] $PYTHON setup.py install --prefix=$(wine winepath -w "$pydir") $PYTHON setup.py install [% ELSE -%] - export PYTHON=python2 + export PYTHON=python2[% IF c("var/linux-i686") %].7[% END %] make cp -ra fte $PTDIR/ mkdir -p $PTDIR/fteproxy-lib diff --git a/projects/libfte/config b/projects/libfte/config index 2079040..415544f 100644 --- a/projects/libfte/config +++ b/projects/libfte/config @@ -9,11 +9,30 @@ var: use_container: 1
targets: - linux: + linux-x86_64: var: arch_deps: - python-setuptools - python-dev + + linux-i686: + var: + pre_pkginst: | + dpkg --add-architecture i386 + # python2.7:i386 cannot be installed because the mime-support package + # in wheezy is not marked "Multi-Arch: foreign": + # https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=695357 + # We fix this by installing the jessie mime-support package. + wget http://ftp.debian.org/debian/pool/main/m/mime-support/mime-support_3.58_all.... + echo 'c05ebe8f38da4ff19d028c9f4680414149e5c7a746de13bc9db0a562796ed213 mime-support_3.58_all.deb' | sha256sum -c + dpkg -i mime-support_3.58_all.deb + post_pkginst: | + export DEBIAN_FRONTEND=noninteractive + apt-get install -q -y libpython2.7:i386 python2.7:i386 python2.7-minimal:i386 python2.7-dev:i386 + apt-get install -q -y hardening-wrapper + apt-get download -q -y python-setuptools python-pkg-resources + dpkg -i --force-depends python-setuptools*.deb python-pkg-resources*.deb + windows-i686: var: compiler: winpython diff --git a/projects/pycrypto/build b/projects/pycrypto/build index 084939f..ecb9bb8 100644 --- a/projects/pycrypto/build +++ b/projects/pycrypto/build @@ -29,9 +29,9 @@ cd /var/tmp/build/[% project %]-[% c('version') %] $PYTHON setup.py build_ext -c mingw32 $PYTHON setup.py install --prefix=$(wine winepath -w $pydir) [% ELSE -%] - export PYTHON=python2 + export PYTHON=python2[% IF c("var/linux-i686") %].7[% END %] ./configure --build=i686-linux-gnu [% c("var/configure_opt") %] - python2 setup.py build --build-lib build + $PYTHON setup.py build --build-lib build cp -a build/Crypto $PTDIR/ [% END -%] cd $distdir diff --git a/projects/pycrypto/config b/projects/pycrypto/config index c55844b..879484f 100644 --- a/projects/pycrypto/config +++ b/projects/pycrypto/config @@ -6,12 +6,30 @@ var: use_container: 1
targets: - linux: + linux-x86_64: var: arch_deps: - python-dev - python-setuptools
+ linux-i686: + var: + pre_pkginst: | + dpkg --add-architecture i386 + # python2.7:i386 cannot be installed because the mime-support package + # in wheezy is not marked "Multi-Arch: foreign": + # https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=695357 + # We fix this by installing the jessie mime-support package. + wget http://ftp.debian.org/debian/pool/main/m/mime-support/mime-support_3.58_all.... + echo 'c05ebe8f38da4ff19d028c9f4680414149e5c7a746de13bc9db0a562796ed213 mime-support_3.58_all.deb' | sha256sum -c + dpkg -i mime-support_3.58_all.deb + post_pkginst: | + export DEBIAN_FRONTEND=noninteractive + apt-get install -q -y libpython2.7:i386 python2.7:i386 python2.7-minimal:i386 python2.7-dev:i386 + apt-get install -q -y hardening-wrapper + apt-get download -q -y python-setuptools python-pkg-resources + dpkg -i --force-depends python-setuptools*.deb python-pkg-resources*.deb + windows-i686: var: compiler: winpython diff --git a/projects/rust/config b/projects/rust/config index 3d78ad3..0c3b280 100644 --- a/projects/rust/config +++ b/projects/rust/config @@ -1,5 +1,5 @@ # vim: filetype=yaml sw=2 -filename: '[% project %]-[% c("version") %]-[% c("var/osname") %]-[% c("var/build_id") %].tar.gz' +filename: '[% project %]-[% c("version") %]-[% c("var/build_id") %].tar.gz' version: '[% c("input_file_var/rust_version") %]'
# those values can be changed from the input_files section of other @@ -32,10 +32,16 @@ targets:
linux: var: - arch_deps: - - hardening-wrapper + rust_arch: x86_64 + deps: + - libc6-dev-i386 + - lib32stdc++6 + - build-essential + - python + - automake - libssl-dev - pkg-config + - hardening-wrapper # We use # `--enable-local-rust` to avoid downloading the required compiler during # build time @@ -62,7 +68,7 @@ targets: # version mismatch. We avoid that with this configure option. We need to # build our own GCC in the first place as 4.7.2 is too old to get all the # Rust pieces compiled. - configure_opt: --enable-local-rust --enable-vendor --enable-extended --release-channel=stable --sysconfdir=etc --target=[% c("arch") %]-unknown-linux-gnu --set=target.[% c("arch") %]-unknown-linux-gnu.cc=gcc + configure_opt: --enable-local-rust --enable-vendor --enable-extended --release-channel=stable --sysconfdir=etc --target=x86_64-unknown-linux-gnu,i686-unknown-linux-gnu --set=target.x86_64-unknown-linux-gnu.cc=gcc --set=target.i686-unknown-linux-gnu.cc=gcc
osx-x86_64: var: diff --git a/projects/snowflake/config b/projects/snowflake/config index c9a84b3..7043c12 100644 --- a/projects/snowflake/config +++ b/projects/snowflake/config @@ -9,7 +9,12 @@ var: use_container: 1
targets: - linux: + linux-i686: + var: + arch_deps: + - pkg-config + - libx11-dev:i386 + linux-x86_64: var: arch_deps: - pkg-config diff --git a/projects/tor/build b/projects/tor/build index d6018d9..0860b6f 100644 --- a/projects/tor/build +++ b/projects/tor/build @@ -44,6 +44,9 @@ openssldir=/var/tmp/dist/openssl $gcclibs/*.dll $mingwlibs/libwinpthread-1.dll $distdir/Tor/ [% END %]
+[% IF c("var/linux-i686") && c("var/nightly") -%] + export TOR_RUST_TARGET=i686-unknown-linux-gnu +[% END -%] [% IF c("var/linux") %] mkdir -p "$distdir/Debug/Tor" cp $openssldir/lib/libssl.so.1.0.0 "$distdir/Tor/" @@ -64,9 +67,7 @@ openssldir=/var/tmp/dist/openssl chmod 700 "$distdir"/Tor/*.so* chmod 700 "$distdir"/Tor/libstdc++/*.so* # This is needed to make RPATH unavailable. See bug 9150. - export LD_LIBRARY_PATH="$distdir/Tor/" - # Add libstdc++ to LD_LIBRARY_PATH to avoid rust link issue (bug 27101) - export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$distdir/Tor/libstdc++/" + export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$distdir/Tor/" [% END %]
[% IF c("var/osx") %] diff --git a/projects/tor/config b/projects/tor/config index ffdb200..9eb4c16 100644 --- a/projects/tor/config +++ b/projects/tor/config @@ -22,18 +22,21 @@ targets: git_hash: master tag_gpg_id: 0
- linux: + linux-i686: var: + libdir: lib32 + sort_deps: 0 arch_deps: - libtool - - zlib1g-dev + - zlib1g-dev:i386 - hardening-wrapper - linux-i686: - var: - libdir: lib linux-x86_64: var: libdir: lib64 + arch_deps: + - libtool + - zlib1g-dev + - hardening-wrapper osx-x86_64: var: arch_deps: diff --git a/projects/twisted/build b/projects/twisted/build index 077143c..9aebe24 100644 --- a/projects/twisted/build +++ b/projects/twisted/build @@ -1,15 +1,19 @@ #!/bin/bash [% c("var/set_default_env") -%] distdir="/var/tmp/dist/[% project %]" -[% IF c("var/windows") -%] - [% pc(c('var/compiler'), 'var/setup', { compiler_tarfile => c('input_files_by_name/' _ c('var/compiler')) }) %] -[% ELSE -%] +[% pc(c('var/compiler'), 'var/setup', { compiler_tarfile => c('input_files_by_name/' _ c('var/compiler')) }) %] +[% IF ! c("var/windows") -%] [% c("var/set_PTDIR_DOCSDIR") -%] mkdir -p $PTDIR [% END -%] mkdir -p /var/tmp/build tar -C /var/tmp/build -xf $rootdir/Twisted-[% c('version') %].tar.bz2 cd /var/tmp/build/Twisted-[% c('version') %] +[% IF c("var/linux-i686") -%] + export CFLAGS=-m32 + export CXXFLAGS=-m32 + export LDFLAGS=-m32 +[% END -%] [% IF c("var/windows") -%] pydir="$distdir/python" export FAKETIME="[% USE date; GET date.format(c('timestamp'), format = '%Y-%m-%d %H:%M:%S') %]" @@ -27,7 +31,7 @@ cd /var/tmp/build/Twisted-[% c('version') %] export PYTHONPATH="$(wine winepath -w $pydir)\Lib\site-packages" LD_PRELOAD= $PYTHON setup.py install --single-version-externally-managed --record /dev/null --prefix=$(wine winepath -w $pydir) [% ELSE -%] - export PYTHON=python2 + export PYTHON=python2[% IF c("var/linux-i686") %].7[% END %] $PYTHON setup.py build --build-lib build cp -a build/twisted $PTDIR/ [% END -%] diff --git a/projects/twisted/config b/projects/twisted/config index 4dbbb26..d9a7eeb 100644 --- a/projects/twisted/config +++ b/projects/twisted/config @@ -7,11 +7,30 @@ var: use_container: 1
targets: - linux: + linux-x86_64: var: arch_deps: - python-setuptools - python-dev + + linux-i686: + var: + pre_pkginst: | + dpkg --add-architecture i386 + # python2.7:i386 cannot be installed because the mime-support package + # in wheezy is not marked "Multi-Arch: foreign": + # https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=695357 + # We fix this by installing the jessie mime-support package. + wget http://ftp.debian.org/debian/pool/main/m/mime-support/mime-support_3.58_all.... + echo 'c05ebe8f38da4ff19d028c9f4680414149e5c7a746de13bc9db0a562796ed213 mime-support_3.58_all.deb' | sha256sum -c + dpkg -i mime-support_3.58_all.deb + post_pkginst: | + export DEBIAN_FRONTEND=noninteractive + apt-get install -q -y libpython2.7:i386 python2.7:i386 python2.7-minimal:i386 python2.7-dev:i386 + apt-get install -q -y hardening-wrapper + apt-get download -q -y python-setuptools python-pkg-resources + dpkg -i --force-depends python-setuptools*.deb python-pkg-resources*.deb + windows-i686: var: compiler: winpython @@ -26,4 +45,3 @@ input_files: sha256sum: 095175638c019ac7c0604f4c291724a16ff1acd062e181b01293bf4dcbc62cf3 - name: '[% c("var/compiler") %]' project: '[% c("var/compiler") %]' - enable: '[% c("var/windows") %]' diff --git a/projects/webrtc/config b/projects/webrtc/config index 37b4615..2846765 100644 --- a/projects/webrtc/config +++ b/projects/webrtc/config @@ -28,6 +28,28 @@ targets: var: webrtc: os: linux + linux-i686: + var: + webrtc: + lib_path: lib/libwebrtc-linux-386-magic.a + sort_deps: 0 + arch_deps: + - lib32asound2-dev + - lib64expat1 + - libexpat1-dev:i386 + - libglib2.0-dev:i386 + - libgtk2.0-dev:i386 + - libgtk-3-dev:i386 + - libudev-dev:i386 + - libx11-dev:i386 + - libxext-dev:i386 + - libxrandr-dev:i386 + - pkg-config + - hardening-wrapper + linux-x86_64: + var: + webrtc: + lib_path: lib/libwebrtc-linux-amd64-magic.a arch_deps: - libasound2-dev - libexpat1-dev @@ -39,14 +61,6 @@ targets: - libxext-dev - libxrandr-dev - pkg-config - linux-i686: - var: - webrtc: - lib_path: lib/libwebrtc-linux-386-magic.a - linux-x86_64: - var: - webrtc: - lib_path: lib/libwebrtc-linux-amd64-magic.a osx-x86_64: var: webrtc: diff --git a/rbm.conf b/rbm.conf index df31741..d39316c 100644 --- a/rbm.conf +++ b/rbm.conf @@ -215,21 +215,13 @@ targets: var: linux-x86_64: 1 osname: linux-x86_64 - container: - arch: amd64 linux-i686: arch: i686 var: linux-i686: 1 osname: linux-i686 - container: - arch: i386 - setarch: | - if test -z "$RBM_SETARCH" - then - export RBM_SETARCH=1 - exec setarch i686 ./build - fi + configure_opt_i686: '--host=i686-linux-gnu CFLAGS=-m32 CXXFLAGS=-m32 LDFLAGS=-m32' + configure_opt: '[% c("var/configure_opt_i686") %]' linux: var: linux: 1 @@ -241,7 +233,11 @@ targets: selfrando: '[% c("var/linux-x86_64") && ! c("var/release") %]' container: suite: wheezy + arch: amd64 + pre_pkginst: dpkg --add-architecture i386 deps: + - libc6-dev-i386 + - lib32stdc++6 - build-essential - python - bison
tbb-commits@lists.torproject.org