Unbundle SpiderMonkey

This deletes the RETRY flag from the build script, which can be
manually mocked if needed.
This commit is contained in:
Itms
2024-10-08 21:54:14 +02:00
parent 040038624c
commit 682de9f289
12 changed files with 619 additions and 29 deletions
+8 -17
View File
@@ -642,23 +642,18 @@ extern_lib_defs = {
pkgconfig.add_includes_after("mozjs-91")
end
else
if os.istarget("windows") then
include_dir = "include-win32"
else
include_dir = "include-unix"
end
filter "Debug"
if externalincludedirs then
externalincludedirs { libraries_source_dir.."spidermonkey/"..include_dir.."-debug" }
externalincludedirs { libraries_source_dir.."spidermonkey/include-debug" }
else
sysincludedirs { libraries_source_dir.."spidermonkey/"..include_dir.."-debug" }
sysincludedirs { libraries_source_dir.."spidermonkey/include-debug" }
end
defines { "DEBUG" }
filter "Release"
if externalincludedirs then
externalincludedirs { libraries_source_dir.."spidermonkey/"..include_dir.."-release" }
externalincludedirs { libraries_source_dir.."spidermonkey/include-release" }
else
sysincludedirs { libraries_source_dir.."spidermonkey/"..include_dir.."-release" }
sysincludedirs { libraries_source_dir.."spidermonkey/include-release" }
end
filter { }
end
@@ -671,16 +666,12 @@ extern_lib_defs = {
pkgconfig.add_links("mozjs-91")
end
else
filter { "Debug", "action:vs*" }
links { "mozjs91-ps-debug" }
links { "mozjs91-ps-rust-debug" }
filter { "Debug", "action:not vs*" }
links { "mozjs91-ps-debug" }
links { "mozjs91-ps-rust" }
filter { "Debug" }
links { "mozjs91-debug" }
filter { "Release" }
links { "mozjs91-ps-release" }
links { "mozjs91-ps-rust" }
links { "mozjs91-release" }
filter { }
links { "mozjs91-rust" }
add_source_lib_paths("spidermonkey")
end
end,
+1 -1
View File
@@ -76,7 +76,7 @@ fi
echo
if [ "$with_system_mozjs" = "false" ]; then
./source/spidermonkey/build.sh || die "SpiderMonkey build failed"
cp source/spidermonkey/bin/* ../binaries/system/
cp source/spidermonkey/lib/* ../binaries/system/
fi
echo
if [ "$with_spirv_reflect" = "true" ]; then
+202 -11
View File
@@ -3,32 +3,223 @@ set -e
cd "$(dirname "$0")"
LIB_VERSION=28209
# This should match the version in config/milestone.txt
FOLDER="mozjs-91.13.1"
# If same-version changes are needed, increment this.
LIB_VERSION="91.13.1+2"
LIB_NAME="mozjs91"
if [ -e .already-built ] && [ "$(cat .already-built)" = "${LIB_VERSION}" ]; then
echo "Spidermonkey is already up to date."
exit
fi
OS="${OS:=$(uname -s)}"
# fetch
svn co "https://svn.wildfiregames.com/public/source-libs/trunk/spidermonkey@${LIB_VERSION}" spidermonkey-svn
if [ ! -e "${FOLDER}.tar.xz" ]; then
curl -fLo "${FOLDER}.tar.xz" \
"https://svn.wildfiregames.com/public/source-libs/trunk/spidermonkey/${FOLDER}.tar.xz"
fi
# unpack
rm -Rf spidermonkey-build
cp -R spidermonkey-svn spidermonkey-build
rm -Rf "${FOLDER}"
tar xfJ "${FOLDER}.tar.xz"
# patch
(
cd "${FOLDER}"
# shellcheck disable=SC1091
. ../patches/patch.sh
)
# build
(
cd spidermonkey-build
mkdir bin lib
./build.sh
cd "${FOLDER}"
# Prevent the SpiderMonkey build system from reading dependencies from
# user-installed python packages.
PYTHONNOUSERSITE=true
# Use Mozilla make on Windows
if [ "${OS}" = "Windows_NT" ]; then
MAKE="mozmake"
else
MAKE=${MAKE:="make"}
fi
MAKE_OPTS="${JOBS}"
# Standalone SpiderMonkey can not use jemalloc (see https://bugzilla.mozilla.org/show_bug.cgi?id=1465038)
# Jitspew doesn't compile on VS17 in the zydis disassembler - since we don't use it, deactivate it.
# Trace-logging doesn't compile for now.
CONF_OPTS="--disable-tests
--disable-jemalloc
--disable-js-shell
--without-intl-api
--enable-shared-js"
if [ -n "$PROFILE" ]; then
CONF_OPTS="$CONF_OPTS --enable-profiling
--enable-perf
--enable-instruments
--enable-jitspew
--with-jitreport-granularity=3"
fi
if [ "${OS}" = "Windows_NT" ]; then
CONF_OPTS="${CONF_OPTS} --target=i686"
elif [ "${OS}" = "Darwin" ]; then
# Unless we are forcing an architecture, switch between ARM / x86 based on platform.
if [ -z "${ARCH}" ]; then
if [ "$(uname -m)" = "arm64" ]; then
ARCH="aarch64"
else
ARCH="x86_64"
fi
fi
CONF_OPTS="${CONF_OPTS} --target=$ARCH-apple-darwin"
# Link to custom-built zlib
export PKG_CONFIG_PATH="=${ZLIB_DIR}:${PKG_CONFIG_PATH}"
CONF_OPTS="${CONF_OPTS} --with-system-zlib"
# Specify target versions and SDK
if [ "${MIN_OSX_VERSION}" ] && [ "${MIN_OSX_VERSION-_}" ]; then
CONF_OPTS="${CONF_OPTS} --enable-macos-target=$MIN_OSX_VERSION"
fi
if [ "${SYSROOT}" ] && [ "${SYSROOT-_}" ]; then
CONF_OPTS="${CONF_OPTS} --with-macos-sdk=${SYSROOT}"
fi
fi
LLVM_OBJDUMP=${LLVM_OBJDUMP:=$(command -v llvm-objdump || command -v objdump)}
# Quick sanity check to print explicit error messages
# (Don't run this on windows as it would likely fail spuriously)
if [ "${OS}" != "Windows_NT" ]; then
[ -n "$(command -v rustc)" ] || (echo "Error: rustc is not available. Install the rust toolchain (rust + cargo) before proceeding." && exit 1)
[ -n "${LLVM_OBJDUMP}" ] || (echo "Error: LLVM objdump is not available. Install it (likely via LLVM-clang) before proceeding." && exit 1)
fi
# If Valgrind looks like it's installed, then set up SM to support it
# (else the JITs will interact poorly with it)
if [ -e /usr/include/valgrind/valgrind.h ]; then
CONF_OPTS="${CONF_OPTS} --enable-valgrind"
fi
# We need to be able to override CHOST in case it is 32bit userland on 64bit kernel
CONF_OPTS="${CONF_OPTS} \
${CBUILD:+--build=${CBUILD}} \
${CHOST:+--host=${CHOST}} \
${CTARGET:+--target=${CTARGET}}"
echo "SpiderMonkey build options: ${CONF_OPTS}"
# Build
# Debug (broken on FreeBSD)
if [ "${OS}" != "FreeBSD" ]; then
mkdir -p build-debug
(
cd build-debug
# llvm-objdump is searched for with the complete name, not simply 'objdump', account for that.
CXXFLAGS="${CXXFLAGS}" ../js/src/configure \
LLVM_OBJDUMP="${LLVM_OBJDUMP}" \
${CONF_OPTS} \
--enable-debug \
--disable-optimize \
--enable-gczeal
${MAKE} ${MAKE_OPTS}
)
fi
# Release
mkdir -p build-release
(
cd build-release
CXXFLAGS="${CXXFLAGS}" ../js/src/configure \
LLVM_OBJDUMP="${LLVM_OBJDUMP}" \
${CONF_OPTS} \
--enable-optimize
${MAKE} ${MAKE_OPTS}
)
)
# install
rm -Rf bin include-unix-debug include-unix-release lib
cp -R spidermonkey-build/bin spidermonkey-build/include-unix-release spidermonkey-build/lib .
if [ "$(uname -s)" != "FreeBSD" ]; then
cp -R spidermonkey-build/include-unix-debug .
rm -Rf bin include-debug include-release lib
mkdir bin lib
if [ "${OS}" = "Windows_NT" ]; then
LIB_PREFIX=
LIB_SUFFIX=.dll
STATIC_LIB_SUFFIX=.lib
else
LIB_PREFIX=lib
LIB_SUFFIX=.so
STATIC_LIB_SUFFIX=.a
if [ "${OS}" = "OpenBSD" ]; then
LIB_SUFFIX=.so.1.0
elif [ "${OS}" = "Darwin" ]; then
LIB_SUFFIX=.a
fi
fi
if [ "${OS}" = "Windows_NT" ]; then
# Bug #776126
# SpiderMonkey uses a tweaked zlib when building, and it wrongly copies its own files to include dirs
# afterwards, so we have to remove them to not have them conflicting with the regular zlib
(
cd "${FOLDER}"/build-debug/dist/include
rm -f mozzconf.h zconf.h zlib.h
)
(
cd "${FOLDER}"/build-release/dist/include
rm -f mozzconf.h zconf.h zlib.h
)
fi
# js-config.h is different for debug and release builds, so we need different include directories for both
mkdir include-release
cp -R -L "${FOLDER}"/build-release/dist/include/* include-release/
if [ "${OS}" != "FreeBSD" ]; then
mkdir include-debug
cp -R -L "${FOLDER}"/build-debug/dist/include/* include-debug/
fi
# These align the ligns below, making it easier to check for mistakes.
DEB="debug"
REL="release"
# Fetch the jsrust static library. Path is grepped from the build file as it varies by rust toolset.
rust_path=$(grep jsrust <"${FOLDER}/build-release/js/src/build/backend.mk" | cut -d = -f 2 | cut -c2-)
cp -L "${rust_path}" "lib/${LIB_PREFIX}${LIB_NAME}-rust${STATIC_LIB_SUFFIX}"
if [ "${OS}" = "Darwin" ]; then
# On MacOS, copy the static libraries only.
cp -L "${FOLDER}/build-${DEB}/js/src/build/${LIB_PREFIX}js_static${LIB_SUFFIX}" "lib/${LIB_PREFIX}${LIB_NAME}-${DEB}${LIB_SUFFIX}"
cp -L "${FOLDER}/build-${REL}/js/src/build/${LIB_PREFIX}js_static${LIB_SUFFIX}" "lib/${LIB_PREFIX}${LIB_NAME}-${REL}${LIB_SUFFIX}"
elif [ "${OS}" = "Windows_NT" ]; then
# Windows needs DLLs to binaries/, static stubs to lib/ and debug symbols
cp -L "${FOLDER}/build-${DEB}/js/src/build/${LIB_PREFIX}${LIB_NAME}-${DEB}${LIB_SUFFIX}" "bin/${LIB_PREFIX}${LIB_NAME}-${DEB}${LIB_SUFFIX}"
cp -L "${FOLDER}/build-${REL}/js/src/build/${LIB_PREFIX}${LIB_NAME}-${REL}${LIB_SUFFIX}" "bin/${LIB_PREFIX}${LIB_NAME}-${REL}${LIB_SUFFIX}"
cp -L "${FOLDER}/build-${DEB}/js/src/build/${LIB_PREFIX}${LIB_NAME}-${DEB}${STATIC_LIB_SUFFIX}" "lib/${LIB_PREFIX}${LIB_NAME}-${DEB}${STATIC_LIB_SUFFIX}"
cp -L "${FOLDER}/build-${REL}/js/src/build/${LIB_PREFIX}${LIB_NAME}-${REL}${STATIC_LIB_SUFFIX}" "lib/${LIB_PREFIX}${LIB_NAME}-${REL}${STATIC_LIB_SUFFIX}"
# Copy debug symbols as well.
cp -L "${FOLDER}/build-${DEB}/js/src/build/${LIB_PREFIX}${LIB_NAME}-${DEB}.pdb" "bin/${LIB_PREFIX}${LIB_NAME}-${DEB}.pdb"
cp -L "${FOLDER}/build-${REL}/js/src/build/${LIB_PREFIX}${LIB_NAME}-${REL}.pdb" "bin/${LIB_PREFIX}${LIB_NAME}-${REL}.pdb"
# Copy the debug jsrust library.
rust_path=$(grep jsrust <"${FOLDER}/build-debug/js/src/build/backend.mk" | cut -d = -f 2 | cut -c2-)
cp -L "${rust_path}" "lib/${LIB_PREFIX}${LIB_NAME}-rust-debug${STATIC_LIB_SUFFIX}"
else
# Copy shared libs to lib/, they will also be copied to binaries/system, so the compiler and executable (resp.) can find them.
cp -L "${FOLDER}/build-${REL}/js/src/build/${LIB_PREFIX}${LIB_NAME}-${REL}${LIB_SUFFIX}" "lib/${LIB_PREFIX}${LIB_NAME}-${REL}${LIB_SUFFIX}"
if [ "${OS}" != "FreeBSD" ]; then
cp -L "${FOLDER}/build-${DEB}/js/src/build/${LIB_PREFIX}${LIB_NAME}-${DEB}${LIB_SUFFIX}" "lib/${LIB_PREFIX}${LIB_NAME}-${DEB}${LIB_SUFFIX}"
fi
fi
# cleanup
rm -Rf "$FOLDER"
echo "${LIB_VERSION}" >.already-built
@@ -0,0 +1,24 @@
From 8dd2ad66811d2d5c72599bd87a77345c254af23c Mon Sep 17 00:00:00 2001
From: Ralph Sennhauser <ralph.sennhauser@gmail.com>
Date: Mon, 15 May 2023 22:02:52 +0200
Subject: [PATCH 1/1] Use default pass manager for clang
---
build/moz.configure/flags.configure | 1 +
1 file changed, 1 insertion(+)
diff --git a/build/moz.configure/flags.configure b/build/moz.configure/flags.configure
index cc8ca1e6aada..40f4c7d905ec 100644
--- a/build/moz.configure/flags.configure
+++ b/build/moz.configure/flags.configure
@@ -36,6 +36,7 @@ option(
ubsan,
)
def new_pass_manager_flags(enabled, compiler, host, target, pgo, enable_fuzzing, ubsan):
+ return None
if host.os == "OSX":
# Some native Mac builds hang with the new pass manager. Given the
# inability to test in CI, don't take the risk of further breakage.
--
2.39.3
@@ -0,0 +1,15 @@
--- a/third_party/python/virtualenv/virtualenv/discovery/py_info.py
+++ b/third_party/python/virtualenv/virtualenv/discovery/py_info.py
@@ -177,7 +177,11 @@
)
if not os.path.exists(path): # some broken packaging don't respect the sysconfig, fallback to distutils path
# the pattern include the distribution name too at the end, remove that via the parent call
- fallback = os.path.join(self.prefix, os.path.dirname(self.distutils_install["headers"]))
+ # A hack for https://github.com/pypa/virtualenv/issues/2208
+ distutils_path = self.distutils_install["headers"]
+ if distutils_path.startswith(u"local/"):
+ distutils_path = distutils_path[6:]
+ fallback = os.path.join(self.prefix, os.path.dirname(distutils_path))
if os.path.exists(fallback):
path = fallback
return path
@@ -0,0 +1,110 @@
--- a/modules/fdlibm/src/math_private.h
+++ b/modules/fdlibm/src/math_private.h
@@ -30,8 +30,13 @@
* Adapted from https://github.com/freebsd/freebsd-src/search?q=__double_t
*/
+#if defined __FLT_EVAL_METHOD__ && (__FLT_EVAL_METHOD__ == 2)
+typedef long double __double_t;
+#else
typedef double __double_t;
+#endif
typedef __double_t double_t;
+typedef float __float_t;
/*
* The original fdlibm code used statements like:
@@ -630,6 +634,53 @@
return ((double)(x + 0x1.8p52) - 0x1.8p52);
}
+static inline float
+rnintf(__float_t x)
+{
+ /*
+ * As for rnint(), except we could just call that to handle the
+ * extra precision case, usually without losing efficiency.
+ */
+ return ((float)(x + 0x1.8p23F) - 0x1.8p23F);
+}
+
+#ifdef LDBL_MANT_DIG
+/*
+ * The complications for extra precision are smaller for rnintl() since it
+ * can safely assume that the rounding precision has been increased from
+ * its default to FP_PE on x86. We don't exploit that here to get small
+ * optimizations from limiting the rangle to double. We just need it for
+ * the magic number to work with long doubles. ld128 callers should use
+ * rnint() instead of this if possible. ld80 callers should prefer
+ * rnintl() since for amd64 this avoids swapping the register set, while
+ * for i386 it makes no difference (assuming FP_PE), and for other arches
+ * it makes little difference.
+ */
+
+static inline long double
+rnintl(long double x)
+{
+ /* The WRAPPED__CONCAT() macro below is required for non-FreeBSD targets
+ which don't have a multi-level CONCAT macro implementation. On those
+ targets the hexadecimal floating-point values being created don't expand
+ properly resulting in code that cannot be compiled.
+
+ The extra level provided by this macro should not affect FreeBSD, should
+ this code be used there.
+
+ See the following for more details:
+
+ https://gcc.gnu.org/onlinedocs/gcc-3.0.1/cpp_3.html#SEC32
+ https://sources.debian.org/src/glibc/2.32-3/misc/sys/cdefs.h/
+ https://github.com/freebsd/freebsd-src/blob/main/sys/sys/cdefs.h
+ */
+ #define WRAPPED__CONCAT(x,y) __CONCAT(x,y)
+
+ return (x + WRAPPED__CONCAT(0x1.8p, LDBL_MANT_DIG) / 2 -
+ WRAPPED__CONCAT(0x1.8p, LDBL_MANT_DIG) / 2);
+}
+#endif /* LDBL_MANT_DIG */
+
/*
* irint() and i64rint() give the same result as casting to their integer
* return type provided their arg is a floating point integer. They can
@@ -646,6 +697,39 @@
#define irint(x) ((int)(x))
#endif
+#define i64rint(x) ((int64_t)(x)) /* only needed for ld128 so not opt. */
+
+#if defined(__i386__) && defined(__GNUCLIKE_ASM)
+static __inline int
+irintf(float x)
+{
+ int n;
+
+ __asm("fistl %0" : "=m" (n) : "t" (x));
+ return (n);
+}
+
+static __inline int
+irintd(double x)
+{
+ int n;
+
+ __asm("fistl %0" : "=m" (n) : "t" (x));
+ return (n);
+}
+#endif
+
+#if (defined(__amd64__) || defined(__i386__)) && defined(__GNUCLIKE_ASM)
+static __inline int
+irintl(long double x)
+{
+ int n;
+
+ __asm("fistl %0" : "=m" (n) : "t" (x));
+ return (n);
+}
+#endif
+
#ifdef DEBUG
#if defined(__amd64__) || defined(__i386__)
#define breakpoint() asm("int $3")
@@ -0,0 +1,26 @@
--- a/python/mozbuild/mozbuild/virutalenv.py
+++ b/python/mozbuild/mozbuild/virtualenv.py
@@ -587,18 +587,11 @@
"""
- # Defer "distutils" import until this function is called so that
- # "mach bootstrap" doesn't fail due to Linux distro python-distutils
- # package not being installed.
- # By the time this function is called, "distutils" must be installed
- # because it's needed by the "virtualenv" package.
- from distutils import dist
+ import sysconfig
- distribution = dist.Distribution({"script_args": "--no-user-cfg"})
- installer = distribution.get_command_obj("install")
- installer.prefix = os.path.normpath(self.virtualenv_root)
- installer.finalize_options()
-
# Path to virtualenv's "site-packages" directory
- site_packages = installer.install_purelib
+ site_packages = sysconfig.get_path(
+ 'purelib',
+ scheme='posix_prefix',
+ vars={ 'base': os.path.normpath(self.virtualenv_root) })
pip_dist_info = next(
@@ -0,0 +1,16 @@
--- a/js/src/old-configure
+++ b/js/src/old-configure
@@ -7035,10 +7035,10 @@
-if test -n "$JS_STANDALONE"; then
-JS_LIBRARY_NAME="mozjs-$MOZILLA_SYMBOLVERSION"
+if test -n "$MOZ_DEBUG"; then
+JS_LIBRARY_NAME="mozjs$MOZILLA_SYMBOLVERSION-debug"
else
-JS_LIBRARY_NAME="mozjs"
+JS_LIBRARY_NAME="mozjs$MOZILLA_SYMBOLVERSION-release"
fi
JS_CONFIG_LIBS="$NSPR_LIBS $LIBS"
if test -n "$GNU_CC"; then
@@ -0,0 +1,16 @@
--- a/js/src/moz.build
+++ b/js/src/moz.build
@@ -50,9 +50,12 @@
if CONFIG["ENABLE_WASM_CRANELIFT"]:
CONFIGURE_SUBST_FILES += ["rust/extra-bindgen-flags"]
+DIRS += [
+ "rust"
+]
+
if not CONFIG["JS_DISABLE_SHELL"]:
DIRS += [
- "rust",
"shell",
]
@@ -0,0 +1,130 @@
From c6c6300e8698ba1d3db96591b9c150c49b8e6d76 Mon Sep 17 00:00:00 2001
From: Ralph Sennhauser <ralph.sennhauser@gmail.com>
Date: Fri, 13 Jan 2023 13:13:47 +0100
Subject: [PATCH] Fix use of removed 'U' support in python 3.11
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Form https://docs.python.org/3.11/whatsnew/3.11.html:
open(), io.open(), codecs.open() and fileinput.FileInput no longer
accept 'U' (“universal newline”) in the file mode. In Python 3,
“universal newline” mode is used by default whenever a file is opened in
text mode, and the 'U' flag has been deprecated since Python 3.3. The
newline parameter to these functions controls how universal newlines
work. (Contributed by Victor Stinner in bpo-37330.)
https://github.com/python/cpython/issues/81511
---
python/mozbuild/mozbuild/action/process_define_files.py | 2 +-
python/mozbuild/mozbuild/backend/base.py | 2 +-
python/mozbuild/mozbuild/preprocessor.py | 6 +++---
python/mozbuild/mozbuild/util.py | 4 ++--
python/mozbuild/mozpack/files.py | 4 ++--
5 files changed, 9 insertions(+), 9 deletions(-)
diff --git a/python/mozbuild/mozbuild/action/process_define_files.py b/python/mozbuild/mozbuild/action/process_define_files.py
index f1d401ac2600..aca59d0f0517 100644
--- a/python/mozbuild/mozbuild/action/process_define_files.py
+++ b/python/mozbuild/mozbuild/action/process_define_files.py
@@ -36,7 +36,7 @@ def process_define_file(output, input):
) and not config.substs.get("JS_STANDALONE"):
config = PartialConfigEnvironment(mozpath.join(topobjdir, "js", "src"))
- with open(path, "rU") as input:
+ with open(path, "r") as input:
r = re.compile(
"^\s*#\s*(?P<cmd>[a-z]+)(?:\s+(?P<name>\S+)(?:\s+(?P<value>\S+))?)?", re.U
)
diff --git a/python/mozbuild/mozbuild/backend/base.py b/python/mozbuild/mozbuild/backend/base.py
index 7bc1986d863b..b64a70946863 100644
--- a/python/mozbuild/mozbuild/backend/base.py
+++ b/python/mozbuild/mozbuild/backend/base.py
@@ -272,7 +272,7 @@ class BuildBackend(LoggingMixin):
return status
@contextmanager
- def _write_file(self, path=None, fh=None, readmode="rU"):
+ def _write_file(self, path=None, fh=None, readmode="r"):
"""Context manager to write a file.
This is a glorified wrapper around FileAvoidWrite with integration to
diff --git a/python/mozbuild/mozbuild/preprocessor.py b/python/mozbuild/mozbuild/preprocessor.py
index f7820b9c9147..857f1a6c9bfd 100644
--- a/python/mozbuild/mozbuild/preprocessor.py
+++ b/python/mozbuild/mozbuild/preprocessor.py
@@ -531,7 +531,7 @@ class Preprocessor:
if args:
for f in args:
- with io.open(f, "rU", encoding="utf-8") as input:
+ with io.open(f, "r", encoding="utf-8") as input:
self.processFile(input=input, output=out)
if depfile:
mk = Makefile()
@@ -860,7 +860,7 @@ class Preprocessor:
args = self.applyFilters(args)
if not os.path.isabs(args):
args = os.path.join(self.curdir, args)
- args = io.open(args, "rU", encoding="utf-8")
+ args = io.open(args, "r", encoding="utf-8")
except Preprocessor.Error:
raise
except Exception:
@@ -914,7 +914,7 @@ class Preprocessor:
def preprocess(includes=[sys.stdin], defines={}, output=sys.stdout, marker="#"):
pp = Preprocessor(defines=defines, marker=marker)
for f in includes:
- with io.open(f, "rU", encoding="utf-8") as input:
+ with io.open(f, "r", encoding="utf-8") as input:
pp.processFile(input=input, output=output)
return pp.includes
diff --git a/python/mozbuild/mozbuild/util.py b/python/mozbuild/mozbuild/util.py
index 071daecc397b..b59aabbea61b 100644
--- a/python/mozbuild/mozbuild/util.py
+++ b/python/mozbuild/mozbuild/util.py
@@ -225,7 +225,7 @@ class FileAvoidWrite(BytesIO):
still occur, as well as diff capture if requested.
"""
- def __init__(self, filename, capture_diff=False, dry_run=False, readmode="rU"):
+ def __init__(self, filename, capture_diff=False, dry_run=False, readmode="r"):
BytesIO.__init__(self)
self.name = filename
assert type(capture_diff) == bool
@@ -1447,7 +1447,7 @@ def patch_main():
def my_get_command_line():
with open(
- os.path.join(os.path.dirname(__file__), "fork_interpose.py"), "rU"
+ os.path.join(os.path.dirname(__file__), "fork_interpose.py"), "r"
) as fork_file:
fork_code = fork_file.read()
# Add our relevant globals.
diff --git a/python/mozbuild/mozpack/files.py b/python/mozbuild/mozpack/files.py
index 8150e72d6fa2..001c497b2796 100644
--- a/python/mozbuild/mozpack/files.py
+++ b/python/mozbuild/mozpack/files.py
@@ -574,7 +574,7 @@ class PreprocessedFile(BaseFile):
pp = Preprocessor(defines=self.defines, marker=self.marker)
pp.setSilenceDirectiveWarnings(self.silence_missing_directive_warnings)
- with _open(self.path, "rU") as input:
+ with _open(self.path, "r") as input:
with _open(os.devnull, "w") as output:
pp.processFile(input=input, output=output)
@@ -631,7 +631,7 @@ class PreprocessedFile(BaseFile):
pp = Preprocessor(defines=self.defines, marker=self.marker)
pp.setSilenceDirectiveWarnings(self.silence_missing_directive_warnings)
- with _open(self.path, "rU") as input:
+ with _open(self.path, "r") as input:
pp.processFile(input=input, output=dest, depfile=deps_out)
dest.close()
--
2.38.2
@@ -0,0 +1,16 @@
--- a/python/mozbuild/mozbuild/virtualenv.py
+++ b/python/mozbuild/mozbuild/virtualenv.py
@@ -246,11 +246,12 @@
if os.path.exists(self.virtualenv_root):
shutil.rmtree(self.virtualenv_root)
args = [
python,
- self.virtualenv_script_path,
+ "-m",
+ "virtualenv",
# Without this, virtualenv.py may attempt to contact the outside
# world and search for or download a newer version of pip,
# setuptools, or wheel. This is bad for security, reproducibility,
# and speed.
"--no-download",
+55
View File
@@ -0,0 +1,55 @@
#!/bin/sh
set -e
OS="${OS:=$(uname -s)}"
# This script gets called from inside the extracted SM tarball.
PATCHES="../patches"
# The rust code is only linked if the JS Shell is enabled,
# which fails now that rust is required in all cases.
# https://bugzilla.mozilla.org/show_bug.cgi?id=1588340
patch -p1 <"${PATCHES}"/FixRustLinkage.diff
# Differentiate debug/release library names.
patch -p1 <"${PATCHES}"/FixLibNames.diff
# There is an issue on 32-bit linux builds sometimes.
# NB: the patch here is Comment 21 modified by Comment 25
# but that seems to imperfectly fix the issue with GCC.
# It also won't compile on windows - in doubt, apply only where relevant.
# https://bugzilla.mozilla.org/show_bug.cgi?id=1729459
if [ "$(uname -m)" = "i686" ] && [ "${OS}" != "Windows_NT" ]; then
patch -p1 <"${PATCHES}"/FixFpNormIssue.diff
fi
if [ "$OS" = "Darwin" ]; then
# The bundled virtualenv version is not working on MacOS
# with recent homebrew and needs to be upgraded.
# Install it locally to not pollute anything.
pip3 install --upgrade -t virtualenv virtualenv
export PYTHONPATH="$(pwd)/virtualenv:$PYTHONPATH"
patch -p1 <"${PATCHES}"/FixVirtualEnv.diff
fi
if [ "$OS" = "Linux" ]; then
# Use sysconfig instead of distutils with the bundled virtualenv
# This fixes an issue with install schemes on recent Debian and Fedora
# Furthermore, distutils is going to be deprecated and is replaced
# by sysconfig in ESR102
patch -p1 <"${PATCHES}"/FixInstallScheme.diff
# Extend the previous fix with a portion of the following commit
# https://phabricator.services.mozilla.com/D130410
# This will prevent bug 1739486 from happening on Fedora
patch -p1 <"${PATCHES}"/FixFedoraVirtualEnv.diff
fi
# Python >= 3.11 support
PYTHON_MINOR_VERSION="$(python3 -c 'import sys; print(sys.version_info.minor)')"
if [ "$PYTHON_MINOR_VERSION" -ge 11 ]; then
patch -p1 <"${PATCHES}"/FixUnicodePython311.diff
fi
# fixed in SM102
patch -p1 <"${PATCHES}"/FixClang16Build.diff