From 2bf5cd0a3ade3a0aed054dd9111e6e84bb6d2d6f Mon Sep 17 00:00:00 2001 From: Ray Donnelly Date: Mon, 13 Jul 2015 23:39:11 +0100 Subject: [PATCH] firefox: More WIP --- .../0001-Allow-MSYS2-shell.patch | 12 ++ .../0001-Support-MSYS2-as-build-machine.patch | 81 ---------- mingw-w64-firefox/0002-Allow-MSYS2-make.patch | 13 ++ .../0003-Use-PYTHON-env-var.patch | 12 ++ .../0004-Allow-MSYS2-python.patch | 143 ++++++++++++++++++ .../0005-Allow-mingw-w64-python.patch | 72 +++++++++ mingw-w64-firefox/PKGBUILD | 78 +++++++--- mingw-w64-firefox/debugging.patch | 20 +++ 8 files changed, 333 insertions(+), 98 deletions(-) create mode 100644 mingw-w64-firefox/0001-Allow-MSYS2-shell.patch delete mode 100644 mingw-w64-firefox/0001-Support-MSYS2-as-build-machine.patch create mode 100644 mingw-w64-firefox/0002-Allow-MSYS2-make.patch create mode 100644 mingw-w64-firefox/0003-Use-PYTHON-env-var.patch create mode 100644 mingw-w64-firefox/0004-Allow-MSYS2-python.patch create mode 100644 mingw-w64-firefox/0005-Allow-mingw-w64-python.patch create mode 100644 mingw-w64-firefox/debugging.patch diff --git a/mingw-w64-firefox/0001-Allow-MSYS2-shell.patch b/mingw-w64-firefox/0001-Allow-MSYS2-shell.patch new file mode 100644 index 0000000000..4c526b4c80 --- /dev/null +++ b/mingw-w64-firefox/0001-Allow-MSYS2-shell.patch @@ -0,0 +1,12 @@ +diff -urN a/python/mach/mach/mixin/process.py b/python/mach/mach/mixin/process.py +--- a/python/mach/mach/mixin/process.py 2015-07-13 21:48:50.238620500 +0100 ++++ b/python/mach/mach/mixin/process.py 2015-07-13 21:59:40.972145000 +0100 +@@ -30,7 +30,7 @@ + + _in_msys = False + +-if os.environ.get('MSYSTEM', None) == 'MINGW32': ++if os.environ.get('MSYSTEM', None) in ['MINGW32', 'MINGW64', 'MSYS']: + _in_msys = True + + if not _current_shell.lower().endswith('.exe'): diff --git a/mingw-w64-firefox/0001-Support-MSYS2-as-build-machine.patch b/mingw-w64-firefox/0001-Support-MSYS2-as-build-machine.patch deleted file mode 100644 index 36bbbddce0..0000000000 --- a/mingw-w64-firefox/0001-Support-MSYS2-as-build-machine.patch +++ /dev/null @@ -1,81 +0,0 @@ -diff -urN firefox-38.0.5.orig/config/baseconfig.mk firefox-38.0.5/config/baseconfig.mk ---- firefox-38.0.5.orig/config/baseconfig.mk 2015-05-25 22:28:44.000000000 +0100 -+++ firefox-38.0.5/config/baseconfig.mk 2015-06-28 23:29:12.430351300 +0100 -@@ -31,9 +31,6 @@ - $(error Pymake is no longer supported. Please upgrade to MozillaBuild 1.9 or newer and build with 'mach' or 'mozmake') - endif - --ifeq (a,$(firstword a$(subst /, ,$(abspath .)))) --$(error MSYS make is not supported) --endif - # 4.0- happens to be greater than 4.0, lower than the mozmake version, - # and lower than 4.0.1 or 4.1, whatever next version of gnu make will - # be released. -diff -urN firefox-38.0.5.orig/mach firefox-38.0.5/mach ---- firefox-38.0.5.orig/mach 2015-05-25 22:28:46.000000000 +0100 -+++ firefox-38.0.5/mach 2015-06-28 23:27:16.616644800 +0100 -@@ -6,7 +6,7 @@ - # The beginning of this script is both valid shell and valid python, - # such that the script starts with the shell and is reexecuted with - # the right python. --'''which' python2.7 > /dev/null && exec python2.7 "$0" "$@" || exec python "$0" "$@" -+'''which' ${PYTHON} > /dev/null && exec ${PYTHON} "$0" "$@" || exec python2.7 "$0" "$@" || exec python "$0" "$@" - ''' - - from __future__ import print_function, unicode_literals -diff -urN firefox-38.0.5.orig/python/virtualenv/virtualenv.py firefox-38.0.5/python/virtualenv/virtualenv.py ---- firefox-38.0.5.orig/python/virtualenv/virtualenv.py 2015-05-25 22:28:56.000000000 +0100 -+++ firefox-38.0.5/python/virtualenv/virtualenv.py 2015-07-03 18:05:22.708700600 +0100 -@@ -45,6 +45,7 @@ - is_pypy = hasattr(sys, 'pypy_version_info') - is_win = (sys.platform == 'win32') - is_cygwin = (sys.platform == 'cygwin') -+is_msys = (sys.platform == 'msys') - is_darwin = (sys.platform == 'darwin') - abiflags = getattr(sys, 'abiflags', '') - -@@ -1276,7 +1277,7 @@ - executable = sys.executable - shutil.copyfile(executable, py_executable) - make_exe(py_executable) -- if is_win or is_cygwin: -+ if is_win or is_cygwin or is_msys: - pythonw = os.path.join(os.path.dirname(sys.executable), 'pythonw.exe') - if os.path.exists(pythonw): - logger.info('Also created pythonw.exe') -@@ -1291,10 +1292,18 @@ - os.unlink(python_d_dest) - # we need to copy the DLL to enforce that windows will load the correct one. - # may not exist if we are cygwin. -- py_executable_dll = 'python%s%s.dll' % ( -- sys.version_info[0], sys.version_info[1]) -- py_executable_dll_d = 'python%s%s_d.dll' % ( -- sys.version_info[0], sys.version_info[1]) -+ cygwin_msys_dll = None -+ python_dll_prefix = '' -+ if is_cygwin: -+ cygwin_msys_dll = 'cygwin1.dll' -+ python_dll_prefix = 'cygwin-' -+ if is_msys: -+ cygwin_msys_dll = 'msys-2.0.dll' -+ python_dll_prefix = 'msys-' -+ py_executable_dll = '%spython%s%s.dll' % ( -+ python_dll_prefix, sys.version_info[0], sys.version_info[1]) -+ py_executable_dll_d = '%spython%s%s_d.dll' % ( -+ python_dll_prefix, sys.version_info[0], sys.version_info[1]) - pythondll = os.path.join(os.path.dirname(sys.executable), py_executable_dll) - pythondll_d = os.path.join(os.path.dirname(sys.executable), py_executable_dll_d) - pythondll_d_dest = os.path.join(os.path.dirname(py_executable), py_executable_dll_d) -@@ -1307,6 +1316,12 @@ - elif os.path.exists(pythondll_d_dest): - logger.info('Removed %s as the source does not exist' % pythondll_d_dest) - os.unlink(pythondll_d_dest) -+ if cygwin_msys_dll: -+ cygwin_msys_dll_dest = os.path.join(os.path.dirname(py_executable), cygwin_msys_dll) -+ cygwin_msys_dll = os.path.join(os.path.dirname(sys.executable), cygwin_msys_dll) -+ if os.path.exists(cygwin_msys_dll): -+ logger.info('Also copied Cygwin/MSYS2 core system dll %s' % cygwin_msys_dll) -+ shutil.copyfile(cygwin_msys_dll, cygwin_msys_dll_dest) - if is_pypy: - # make a symlink python --> pypy-c - python_executable = os.path.join(os.path.dirname(py_executable), 'python') diff --git a/mingw-w64-firefox/0002-Allow-MSYS2-make.patch b/mingw-w64-firefox/0002-Allow-MSYS2-make.patch new file mode 100644 index 0000000000..91614184be --- /dev/null +++ b/mingw-w64-firefox/0002-Allow-MSYS2-make.patch @@ -0,0 +1,13 @@ +diff -urN a/config/baseconfig.mk b/config/baseconfig.mk +--- a/config/baseconfig.mk 2015-07-13 22:05:44.022749700 +0100 ++++ b/config/baseconfig.mk 2015-07-13 22:16:09.001405100 +0100 +@@ -31,9 +31,6 @@ + $(error Pymake is no longer supported. Please upgrade to MozillaBuild 1.9 or newer and build with 'mach' or 'mozmake') + endif + +-ifeq (a,$(firstword a$(subst /, ,$(abspath .)))) +-$(error MSYS make is not supported) +-endif + # 4.0- happens to be greater than 4.0, lower than the mozmake version, + # and lower than 4.0.1 or 4.1, whatever next version of gnu make will + # be released. diff --git a/mingw-w64-firefox/0003-Use-PYTHON-env-var.patch b/mingw-w64-firefox/0003-Use-PYTHON-env-var.patch new file mode 100644 index 0000000000..5ccc78a3b2 --- /dev/null +++ b/mingw-w64-firefox/0003-Use-PYTHON-env-var.patch @@ -0,0 +1,12 @@ +diff -urN a/mach b/mach +--- a/mach 2015-07-13 22:22:35.106011700 +0100 ++++ b/mach 2015-07-13 22:31:13.115823900 +0100 +@@ -6,7 +6,7 @@ + # The beginning of this script is both valid shell and valid python, + # such that the script starts with the shell and is reexecuted with + # the right python. +-'''which' python2.7 > /dev/null && exec python2.7 "$0" "$@" || exec python "$0" "$@" ++'''which' ${PYTHON} > /dev/null && exec ${PYTHON} "$0" "$@" || exec python2.7 "$0" "$@" || exec python "$0" "$@" + ''' + + from __future__ import print_function, unicode_literals diff --git a/mingw-w64-firefox/0004-Allow-MSYS2-python.patch b/mingw-w64-firefox/0004-Allow-MSYS2-python.patch new file mode 100644 index 0000000000..809104382d --- /dev/null +++ b/mingw-w64-firefox/0004-Allow-MSYS2-python.patch @@ -0,0 +1,143 @@ +diff -urN a/build/autoconf/config.status.m4 b/build/autoconf/config.status.m4 +--- a/build/autoconf/config.status.m4 2015-07-13 22:34:59.729176500 +0100 ++++ b/build/autoconf/config.status.m4 2015-07-13 22:47:20.516343000 +0100 +@@ -87,7 +87,6 @@ + case "$host_os" in + mingw*) + WIN_TOP_SRC=`cd $srcdir; pwd -W` +- encoding=mbcs + ;; + esac + AC_SUBST(WIN_TOP_SRC) +diff -urN a/build/autoconf/python-virtualenv.m4 b/build/autoconf/python-virtualenv.m4 +--- a/build/autoconf/python-virtualenv.m4 2015-07-13 22:34:59.729176500 +0100 ++++ b/build/autoconf/python-virtualenv.m4 2015-07-13 22:47:20.520343200 +0100 +@@ -56,14 +56,7 @@ + $_virtualenv_topsrcdir $MOZ_BUILD_ROOT $MOZ_BUILD_ROOT/_virtualenv \ + $_virtualenv_topsrcdir/build/virtualenv_packages.txt || exit 1 + +- case "$host_os" in +- mingw*) +- PYTHON=`cd $MOZ_BUILD_ROOT && pwd -W`/_virtualenv/Scripts/python.exe +- ;; +- *) +- PYTHON=$MOZ_BUILD_ROOT/_virtualenv/bin/python +- ;; +- esac ++ PYTHON=$MOZ_BUILD_ROOT/_virtualenv/bin/python + fi + + AC_SUBST(PYTHON) +diff -urN a/configure b/configure +--- a/configure 2015-07-13 22:37:44.550806000 +0100 ++++ b/configure 2015-07-13 22:47:20.534344000 +0100 +@@ -1367,7 +1367,7 @@ + exit 1 + break + fi +-MOZ_BUILD_ROOT=`pwd -W 2>/dev/null || pwd` ++MOZ_BUILD_ROOT=`pwd` + + + +@@ -1474,14 +1474,7 @@ + $_virtualenv_topsrcdir $MOZ_BUILD_ROOT $MOZ_BUILD_ROOT/_virtualenv \ + $_virtualenv_topsrcdir/build/virtualenv_packages.txt || exit 1 + +- case "$host_os" in +- mingw*) +- PYTHON=`cd $MOZ_BUILD_ROOT && pwd -W`/_virtualenv/Scripts/python.exe +- ;; +- *) +- PYTHON=$MOZ_BUILD_ROOT/_virtualenv/bin/python +- ;; +- esac ++ PYTHON=$MOZ_BUILD_ROOT/_virtualenv/bin/python + fi + + +diff -urN a/configure.in b/configure.in +--- a/configure.in 2015-07-13 22:36:56.161466600 +0100 ++++ b/configure.in 2015-07-13 22:47:20.772353700 +0100 +@@ -133,7 +133,7 @@ + exit 1 + break + fi +-MOZ_BUILD_ROOT=`pwd -W 2>/dev/null || pwd` ++MOZ_BUILD_ROOT=`pwd` + + MOZ_PYTHON + +diff -urN a/js/src/configure b/js/src/configure +--- a/js/src/configure 2015-07-13 22:38:51.104908900 +0100 ++++ b/js/src/configure 2015-07-13 22:47:20.782353700 +0100 +@@ -1061,7 +1061,7 @@ + exit 1 + break + fi +-MOZ_BUILD_ROOT=`pwd -W 2>/dev/null || pwd` ++MOZ_BUILD_ROOT=`pwd` + + + # Check whether --with-dist-dir or --without-dist-dir was given. +@@ -4404,14 +4404,7 @@ + $_virtualenv_topsrcdir $MOZ_BUILD_ROOT $MOZ_BUILD_ROOT/_virtualenv \ + $_virtualenv_topsrcdir/build/virtualenv_packages.txt || exit 1 + +- case "$host_os" in +- mingw*) +- PYTHON=`cd $MOZ_BUILD_ROOT && pwd -W`/_virtualenv/Scripts/python.exe +- ;; +- *) +- PYTHON=$MOZ_BUILD_ROOT/_virtualenv/bin/python +- ;; +- esac ++ PYTHON=$MOZ_BUILD_ROOT/_virtualenv/bin/python + fi + + +diff -urN a/python/virtualenv/virtualenv.py b/python/virtualenv/virtualenv.py +--- a/python/virtualenv/virtualenv.py 2015-07-13 22:35:33.117337000 +0100 ++++ b/python/virtualenv/virtualenv.py 2015-07-13 22:47:20.797353800 +0100 +@@ -45,6 +45,7 @@ + is_pypy = hasattr(sys, 'pypy_version_info') + is_win = (sys.platform == 'win32') + is_cygwin = (sys.platform == 'cygwin') ++is_msys = (sys.platform == 'msys') + is_darwin = (sys.platform == 'darwin') + abiflags = getattr(sys, 'abiflags', '') + +@@ -1276,7 +1277,7 @@ + executable = sys.executable + shutil.copyfile(executable, py_executable) + make_exe(py_executable) +- if is_win or is_cygwin: ++ if is_win or is_cygwin or is_msys: + pythonw = os.path.join(os.path.dirname(sys.executable), 'pythonw.exe') + if os.path.exists(pythonw): + logger.info('Also created pythonw.exe') +@@ -1290,11 +1291,19 @@ + logger.info('Removed python_d.exe as it is no longer at the source') + os.unlink(python_d_dest) + # we need to copy the DLL to enforce that windows will load the correct one. +- # may not exist if we are cygwin. +- py_executable_dll = 'python%s%s.dll' % ( +- sys.version_info[0], sys.version_info[1]) +- py_executable_dll_d = 'python%s%s_d.dll' % ( +- sys.version_info[0], sys.version_info[1]) ++ try: ++ # Cygwin, msys2 and MSYS2's mingw-w64-{i686,x86-64}-python all support this. ++ # .. disabled for now on msys2 as there's a dll address overlap issue: ++ # 0 [main] python 824 child_info_fork::abort: address space needed by 'msys-python2.7.dll' (0x6F0000) is already occupied ++ import sysconfig ++ py_executable_dll = 'unused' if is_msys else sysconfig.get_config_var('DLLLIBRARY') ++ py_executable_dll_d = 'unused' ++ except: ++ # .. but CPython doesn't. ++ py_executable_dll = 'python%s%s.dll' % ( ++ sys.version_info[0], sys.version_info[1]) ++ py_executable_dll_d = 'python%s%s_d.dll' % ( ++ sys.version_info[0], sys.version_info[1]) + pythondll = os.path.join(os.path.dirname(sys.executable), py_executable_dll) + pythondll_d = os.path.join(os.path.dirname(sys.executable), py_executable_dll_d) + pythondll_d_dest = os.path.join(os.path.dirname(py_executable), py_executable_dll_d) diff --git a/mingw-w64-firefox/0005-Allow-mingw-w64-python.patch b/mingw-w64-firefox/0005-Allow-mingw-w64-python.patch new file mode 100644 index 0000000000..c3ed58f0ce --- /dev/null +++ b/mingw-w64-firefox/0005-Allow-mingw-w64-python.patch @@ -0,0 +1,72 @@ +diff -urN a/python/virtualenv/virtualenv.py b/python/virtualenv/virtualenv.py +--- a/python/virtualenv/virtualenv.py 2015-07-13 22:51:52.604249800 +0100 ++++ b/python/virtualenv/virtualenv.py 2015-07-13 23:03:40.898855100 +0100 +@@ -41,6 +41,7 @@ + join = os.path.join + py_version = 'python%s.%s' % (sys.version_info[0], sys.version_info[1]) + ++is_mingw = (sys.platform == 'win32' and 'GCC' in sys.version) + is_jython = sys.platform.startswith('java') + is_pypy = hasattr(sys, 'pypy_version_info') + is_win = (sys.platform == 'win32') +@@ -65,7 +66,7 @@ + + # Return a mapping of version -> Python executable + # Only provided for Windows, where the information in the registry is used +-if not is_win: ++if not is_win or is_mingw: + def get_installed_pythons(): + return {} + else: +@@ -113,6 +114,14 @@ + 're', 'sre', 'sre_parse', 'sre_constants', 'sre_compile', + 'zlib'] + ++if is_mingw: ++ REQUIRED_MODULES.extend(['functools', '__future__', 'logging', 'traceback', ++ 'weakref', 'collections', 'keyword', 'heapq', ++ 'atexit', 'optparse', 'textwrap', 'string', ++ 'contextlib', 'shutil', 'subprocess', 'threading', ++ 'tarfile', 'struct', 'copy', 'zipfile', 'io', ++ 'glob']) ++ + REQUIRED_FILES = ['lib-dynload', 'config'] + + majver, minver = sys.version_info[:2] +@@ -953,7 +962,9 @@ + logger.start_progress('Installing %s...' % (', '.join(project_names))) + logger.indent += 2 + try: +- call_subprocess(cmd, show_stdout=False, ++ print('cmd is %s' % cmd) ++ print('PYTHONPATH="%s" PIP_FIND_LINKS="%s" PIP_USE_WHEEL=1 PIP_PRE=1 PIP_NO_INDEX=1' % (pythonpath, findlinks)) ++ call_subprocess(cmd, show_stdout=True, + extra_env = { + 'PYTHONPATH': pythonpath, + 'PIP_FIND_LINKS': findlinks, +@@ -991,6 +1002,7 @@ + to_install = ['setuptools'] + if not no_pip: + to_install.append('pip') ++ print('install_wheel to_install=%s, py_executable=%s, search_dirs=%s' % (to_install, py_executable, search_dirs)) + install_wheel(to_install, py_executable, search_dirs) + + install_activate(home_dir, bin_dir, prompt) +@@ -1003,7 +1015,7 @@ + where scripts go, etc)""" + # XXX: We'd use distutils.sysconfig.get_python_inc/lib but its + # prefix arg is broken: http://bugs.python.org/issue3386 +- if is_win: ++ if is_win and not is_mingw: + # Windows has lots of problems with executables with spaces in + # the name; this function will remove them (using the ~1 + # format): +@@ -1035,7 +1047,7 @@ + lib_dir = home_dir + inc_dir = join(home_dir, 'include') + bin_dir = join(home_dir, 'bin') +- elif not is_win: ++ elif not is_win or is_mingw: + lib_dir = join(home_dir, 'lib', py_version) + multiarch_exec = '/usr/bin/multiarch-platform' + if is_executable_file(multiarch_exec): diff --git a/mingw-w64-firefox/PKGBUILD b/mingw-w64-firefox/PKGBUILD index 54dece7e5d..e75c55ea82 100644 --- a/mingw-w64-firefox/PKGBUILD +++ b/mingw-w64-firefox/PKGBUILD @@ -1,8 +1,12 @@ # Maintainer: Ray Donnelly +# pushd /c/repo/mingw-w64-firefox/src +# PATH=/mingw64/bin:$PATH /mingw64/bin/python2.7.exe $PWD/firefox-39.0/python/virtualenv/virtualenv.py /tmp/test +# PATH=/mingw64/bin:$PATH PYTHONPATH="C:/repo/mingw-w64-firefox/src/firefox-39.0/python/virtualenv/virtualenv_support/setuptools-11.0-py2.py3-none-any.whl;C:/repo/mingw-w64-firefox/src/firefox-39.0/python/virtualenv/virtualenv_support/pip-6.0.6-py2.py3-none-any.whl" PIP_FIND_LINKS=". C:/repo/mingw-w64-firefox/src/firefox-39.0/python/virtualenv C:/repo/mingw-w64-firefox/src/firefox-39.0/python/virtualenv/virtualenv_support C:/repo/mingw-w64-firefox/src/firefox-39.0/python/virtualenv/virtualenv_support" PIP_USE_WHEEL=1 PIP_PRE=1 PIP_NO_INDEX=1 C:/msys64t/tmp/test/bin/python2.7.exe -c 'import sys, pip; sys.exit(pip.main(["install", "--ignore-installed"] + sys.argv[1:]))' setuptools pip + _realname=firefox pkgname=("${MINGW_PACKAGE_PREFIX}-${_realname}") -pkgver=38.0.5 +pkgver=39.0 pkgrel=1 pkgdesc='Mozilla Firefox (mingw-w64)' groups=("${MINGW_PACKAGE_PREFIX}") @@ -10,20 +14,31 @@ arch=('any') url='https://www.mozilla.org/firefox/' license=('MPL2') source=("http://ftp.mozilla.org/pub/mozilla.org/${_realname}/releases/${pkgver}/source/${_realname}-${pkgver}.source.tar.bz2" - "0001-Support-MSYS2-as-build-machine.patch" - ".mozconfig.x86_64" - ".mozconfig.i686" + "0001-Allow-MSYS2-shell.patch" + "0002-Allow-MSYS2-make.patch" + "0003-Use-PYTHON-env-var.patch" + "0004-Allow-MSYS2-python.patch" + "0005-Allow-mingw-w64-python.patch" + "debugging.patch" + "mozconfig.x86_64" + "mozconfig.i686" "config.sub" "config.guess") noextract=("${_realname}-${pkgver}.source.tar.bz2") -sha1sums=('74da3e225d5b542e784549be63475802c45e1b02' - 'dd46cd0b491d8f1f3103bb9557f788c3ce041499' - '9405456c0383b22255a494e0131cd3ea8f33b15d' - 'dd68b964cceb9dbd632b24659871093803522f6e' +sha1sums=('32785daee7ddb9da8d7509ef095258fc58fe838e' + '1c0810fbfd6f336eec81e236c89c6c9ca0e79290' + 'c269337da604ab047de5dea088dbbe8f547dfbea' + '2fd8904f036d2515e314b3d7510d8358add298d2' + 'e3079d2151b89145134bd70d5b66bd772e5d56e6' + 'ea32e4d47b46cb85173e686a4609e32e97f8d957' + '60d0ff16614804a1408feeed81b4a77a808d9a5a' + '36da1863d7f1f5ea7faa50f773a6dbdda405d7f5' + '3861e9d68ee67aa2dc6a087158054c29466cd4da' '17c4f8628ea435c999be66ee4c2967fdaf3b2955' 'ffb6644dbad00413c668c833e3f3680d1d73aa53') prepare() { + [ -d "${srcdir}"/${_realname}-${pkgver} ] && rm -rf ${_realname}-${pkgver} tar -xf "${srcdir}"/${_realname}-${pkgver}.source.tar.bz2 || true if [ -d "${srcdir}"/mozilla-beta ]; then mv "${srcdir}"/mozilla-beta "${srcdir}"/${_realname}-${pkgver} @@ -34,21 +49,50 @@ prepare() { exit 1 fi cd "${srcdir}"/${_realname}-${pkgver} - patch -p1 -i "${srcdir}"/0001-Support-MSYS2-as-build-machine.patch + # Mostly this patch is about msys2-python and mingw-w64-python not + # working with virtualenv. Really it needs splitting into two, one + # adding support for each of them. Most of the "is_win or True:" + # and "is_win and False:" stuff relates to mingw-w64-python and is + # to be replaced with proper detection and a variable "is_mingw". + patch -p1 -i "${srcdir}"/0001-Allow-MSYS2-shell.patch + patch -p1 -i "${srcdir}"/0002-Allow-MSYS2-make.patch + patch -p1 -i "${srcdir}"/0003-Use-PYTHON-env-var.patch + patch -p1 -i "${srcdir}"/0004-Allow-MSYS2-python.patch + patch -p1 -i "${srcdir}"/0005-Allow-mingw-w64-python.patch + patch -p1 -i "${srcdir}"/debugging.patch + find . -name config.sub -exec cp "${srcdir}"/config.sub {} \; find . -name config.guess -exec cp "${srcdir}"/config.guess {} \; + (autoconf-2.13 && cd js/src && autoconf-2.13) } build() { cd "${srcdir}"/${_realname}-${pkgver} - [ -d "${srcdir}"/build-${CARCH} ] && rm -rf "${srcdir}"/build-${CARCH} - mkdir "${srcdir}"/build-${CARCH} - cd "${srcdir}"/build-${CARCH} - cp "${srcdir}"/.mozconfig.${CARCH} ${PWD}/.mozconfig - export PYTHON=/usr/bin/python2.7.exe - export MOZCONFIG=${PWD}/.mozconfig - make -f ../${_realname}-${pkgver}/client.mk configure - make -f ../${_realname}-${pkgver}/client.mk build + if [ "${CARCH}" = "i686" ]; then + _builddir=obj-i686-w64-mingw32 + else + _builddir=obj-x86_64-w64-mingw32 + fi + [ -d ${_builddir} ] && rm -rf "${_builddir}" + mkdir ${_builddir} + cp "${srcdir}"/mozconfig.${CARCH} ${_builddir}/.mozconfig +# export PYTHON=/usr/bin/python2.7.exe + export PYTHON=${MINGW_PREFIX}/bin/python2.7.exe + export MOZCONFIG=${PWD}/${_builddir}/.mozconfig + export MIDL=${MINGW_PREFIX}/bin/widl.exe + export MOZ_TOOLS=${MINGW_PREFIX} + + set |awk ' + BEGIN { _p = 1; } + $0~/^[^ ]+ \(\)/ { _p = 0; } + _p == 1 + $0 == "}" { _p = 1; } + ' |sed -r -e '/^BASH_(ARGC|ARGV|LINENO|SOURCE|VERSINFO)=/d; + /^(UID|EUID)=/d; + /^(FUNCNAME|GROUPS|PPID|SHELLOPTS|BASHOPTS)=/d;' > ./env-${CARCH}.sh + + make -f client.mk configure + make -f client.mk build } check() { diff --git a/mingw-w64-firefox/debugging.patch b/mingw-w64-firefox/debugging.patch new file mode 100644 index 0000000000..dece3e82d9 --- /dev/null +++ b/mingw-w64-firefox/debugging.patch @@ -0,0 +1,20 @@ +diff -urN a/python/mozbuild/mozbuild/frontend/emitter.py b/python/mozbuild/mozbuild/frontend/emitter.py +--- a/python/mozbuild/mozbuild/frontend/emitter.py 2015-06-30 23:58:07.000000000 +0100 ++++ b/python/mozbuild/mozbuild/frontend/emitter.py 2015-07-13 21:43:47.955204200 +0100 +@@ -3,6 +3,7 @@ + # file, You can obtain one at http://mozilla.org/MPL/2.0/. + + from __future__ import unicode_literals ++from __future__ import print_function + + import itertools + import json +@@ -672,6 +673,8 @@ + def _process_sources(self, context, passthru): + for symbol in ('SOURCES', 'HOST_SOURCES', 'UNIFIED_SOURCES'): + for src in (context[symbol] or []): ++ print('sys.argv is %s' % sys.argv, file=sys.stderr) ++ print('checking if %s exists' % (mozpath.join(context.srcdir, src)), file=sys.stderr) + if not os.path.exists(mozpath.join(context.srcdir, src)): + raise SandboxValidationError('File listed in %s does not ' + 'exist: \'%s\'' % (symbol, src), context)