Browse Source

add chroot environment for performing MinGW-w64 builds

This ensures that we are using a known good environment
rather than a possibly broken environment (i.e. host OS)
for performing the build.
Ashish Kulkarni 10 years ago
parent
commit
a3aae5ecc3
2 changed files with 17 additions and 9 deletions
  1. 2 2
      INSTALL.md
  2. 15 7
      scripts/build.py

+ 2 - 2
INSTALL.md

@@ -33,7 +33,7 @@ and [non standard home directories](https://github.com/wkhtmltopdf/wkhtmltopdf/i
 (i.e. not located in `/home`) are not supported -- you are advised to
 use a VM instead to build wkhtmltopdf.
 
-Building is supported only on Debian Jessie (i.e. testing release), and
+Building is supported only on 64-bit Debian Jessie (i.e. testing release), and
 the binaries are produced in a self-contained chroot environment for the
 target distribution -- you will need to first setup the build environment
 and then only you can perform the build for a 32-bit or 64-bit binary.
@@ -48,7 +48,7 @@ Ubuntu Precise | `sudo scripts/build.py setup-schroot-precise` | `scripts/build.
 CentOS 7       | `sudo scripts/build.py setup-schroot-centos7` | not available                            | `scripts/build.py centos7-amd64`
 CentOS 6       | `sudo scripts/build.py setup-schroot-centos6` | `scripts/build.py centos6-i386`          | `scripts/build.py centos6-amd64`
 CentOS 5       | `sudo scripts/build.py setup-schroot-centos5` | `scripts/build.py centos5-i386`          | `scripts/build.py centos5-amd64`
-MinGW-w64      | `sudo scripts/build.py setup-mingw-w64`       | `scripts/build.py mingw-w64-cross-win32` | `scripts/build.py mingw-w64-cross-win64`
+MinGW-w64      | `sudo scripts/build.py setup-mingw_w64`       | `scripts/build.py mingw-w64-cross-win32` | `scripts/build.py mingw-w64-cross-win64`
 
 The MinGW-w64 toolchain can cross-compile 32/64-bit Windows binaries from
 Linux -- it is useful for targetting Windows XP/Windows 2003, which are not

+ 15 - 7
scripts/build.py

@@ -23,7 +23,7 @@ BUILDERS = {
     'source-tarball':        'source_tarball',
     'msvc2013-win32':        'msvc',
     'msvc2013-win64':        'msvc',
-    'setup-mingw-w64':       'setup_mingw64',
+    'setup-mingw_w64':       'setup_schroot',
     'setup-schroot-centos5': 'setup_schroot',
     'setup-schroot-centos6': 'setup_schroot',
     'setup-schroot-centos7': 'setup_schroot',
@@ -350,6 +350,20 @@ deb http://archive.ubuntu.com/ubuntu/ precise-security main restricted universe
         ('write_file', 'update.sh', 'yum update -y\ngem update fpm\n'),
         ('fpm_setup',  'fpm_package.sh'),
         ('schroot_conf', 'CentOS 7')
+    ],
+
+    'mingw_w64:amd64': [
+        ('set_alias', 'mingw-w64'),
+        ('debootstrap', 'trusty', 'http://archive.ubuntu.com/ubuntu/'),
+        ('write_file', 'etc/apt/sources.list', """
+deb http://archive.ubuntu.com/ubuntu/ trusty          main restricted universe multiverse
+deb http://archive.ubuntu.com/ubuntu/ trusty-updates  main restricted universe multiverse
+deb http://archive.ubuntu.com/ubuntu/ trusty-security main restricted universe multiverse"""),
+        ('shell', 'apt-get update'),
+        ('shell', 'apt-get dist-upgrade --assume-yes'),
+        ('shell', 'apt-get install --assume-yes build-essential mingw-w64 nsis python ruby perl gperf bison flex git'),
+        ('write_file', 'update.sh', 'apt-get update\napt-get dist-upgrade --assume-yes\n'),
+        ('schroot_conf', 'MinGW-w64 on Ubuntu Trusty')
     ]
 }
 
@@ -842,12 +856,6 @@ def build_update_schroot(config, basedir):
         message('******************* %s\n' % name[name.index('wkhtmltopdf-'):])
         shell('schroot -c %s -- /bin/bash /update.sh' % name[name.index('wkhtmltopdf-'):])
 
-def check_setup_mingw64(config):
-    check_running_on_debian()
-
-def build_setup_mingw64(config, basedir):
-    install_packages('build-essential', 'mingw-w64', 'nsis')
-
 def check_source_tarball(config):
     if not get_output('git', 'rev-parse', '--short', 'HEAD'):
         error("This can only be run inside a git checkout.")