[tor-commits] [tor-browser-build/master] Bug 26323: Build 32bit Linux bundles on 64bit Debian Wheezy
gk at torproject.org
gk at torproject.org
Tue Mar 12 20:16:03 UTC 2019
commit a76388bf16a6ff28f4427b47198c20c4aa8c113a
Author: Nicolas Vigier <boklm at 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-[% 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.deb
+ 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.deb
+ 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.deb
+ 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
More information about the tor-commits
mailing list