Pre-bundle requests module with macOS bundles python (#589)
The problem is that python can have trouble finding the default
certifcate set on macOS. The actual bundle is installed by the certifi
package which the requests module uses under the hood.
Fixes: #588
diff --git a/emsdk_manifest.json b/emsdk_manifest.json
index 2861604..0c9150e 100644
--- a/emsdk_manifest.json
+++ b/emsdk_manifest.json
@@ -290,10 +290,10 @@
},
{
"id": "python",
- "version": "3.7.4",
+ "version": "3.7.4-2",
"bitness": 64,
"arch": "x86_64",
- "macos_url": "python-3.7.4-macos.tar.gz",
+ "macos_url": "python-3.7.4-2-macos.tar.gz",
"activated_path": "%installation_dir%/bin",
"activated_cfg": "PYTHON='%installation_dir%/bin/python3'",
"activated_env": "EMSDK_PYTHON=%installation_dir%/bin/python3"
@@ -485,7 +485,7 @@
{
"version": "upstream-master",
"bitness": 64,
- "uses": ["llvm-git-master-64bit", "node-12.18.1-64bit", "python-3.7.4-64bit", "emscripten-master-64bit", "binaryen-master-64bit"],
+ "uses": ["llvm-git-master-64bit", "node-12.18.1-64bit", "python-3.7.4-2-64bit", "emscripten-master-64bit", "binaryen-master-64bit"],
"os": "macos"
},
{
@@ -515,7 +515,7 @@
{
"version": "fastcomp-master",
"bitness": 64,
- "uses": ["fastcomp-clang-master-64bit", "node-12.18.1-64bit", "python-3.7.4-64bit", "emscripten-master-64bit", "binaryen-master-64bit"],
+ "uses": ["fastcomp-clang-master-64bit", "node-12.18.1-64bit", "python-3.7.4-2-64bit", "emscripten-master-64bit", "binaryen-master-64bit"],
"os": "macos"
},
{
@@ -576,7 +576,7 @@
{
"version": "releases-upstream-%releases-tag%",
"bitness": 64,
- "uses": ["node-12.18.1-64bit", "python-3.7.4-64bit", "releases-upstream-%releases-tag%-64bit"],
+ "uses": ["node-12.18.1-64bit", "python-3.7.4-2-64bit", "releases-upstream-%releases-tag%-64bit"],
"os": "macos",
"custom_install_script": "emscripten_npm_install"
},
@@ -597,7 +597,7 @@
{
"version": "releases-fastcomp-%releases-tag%",
"bitness": 64,
- "uses": ["node-12.18.1-64bit", "python-3.7.4-64bit", "releases-fastcomp-%releases-tag%-64bit"],
+ "uses": ["node-12.18.1-64bit", "python-3.7.4-2-64bit", "releases-fastcomp-%releases-tag%-64bit"],
"os": "macos",
"custom_install_script": "emscripten_npm_install"
},
@@ -647,7 +647,7 @@
{
"version": "fastcomp-%precompiled_tag32%",
"bitness": 32,
- "uses": ["fastcomp-clang-e%precompiled_tag32%-32bit", "node-8.9.1-32bit", "python-3.7.4-64bit", "emscripten-%precompiled_tag32%"],
+ "uses": ["fastcomp-clang-e%precompiled_tag32%-32bit", "node-8.9.1-32bit", "python-3.7.4-2-64bit", "emscripten-%precompiled_tag32%"],
"os": "macos",
"version_filter": [
["%precompiled_tag32%", ">", "1.37.22"]
@@ -656,7 +656,7 @@
{
"version": "fastcomp-%precompiled_tag64%",
"bitness": 64,
- "uses": ["fastcomp-clang-e%precompiled_tag64%-64bit", "node-8.9.1-64bit", "python-3.7.4-64bit", "emscripten-%precompiled_tag64%"],
+ "uses": ["fastcomp-clang-e%precompiled_tag64%-64bit", "node-8.9.1-64bit", "python-3.7.4-2-64bit", "emscripten-%precompiled_tag64%"],
"os": "macos",
"version_filter": [
["%precompiled_tag64%", ">", "1.37.22"]
diff --git a/scripts/update_python.py b/scripts/update_python.py
index e1f81e3..10142da 100755
--- a/scripts/update_python.py
+++ b/scripts/update_python.py
@@ -32,6 +32,7 @@
version = '3.7.4'
base = 'https://www.python.org/ftp/python/%s/' % version
+revision = '2'
pywin32_version = '227'
pywin32_base = 'https://github.com/mhammond/pywin32/releases/download/b%s/' % pywin32_version
@@ -100,13 +101,21 @@
check_call(['make', 'install', 'DESTDIR=install'], cwd=src_dir)
install_dir = os.path.join(src_dir, 'install')
- os.rename(os.path.join(install_dir, 'usr', 'local'), 'python-%s' % version)
- tarball = 'python-%s-%s.tar.gz' % (version, osname)
- shutil.rmtree(os.path.join('python-%s' % version, 'lib', 'python3.7', 'test'))
- shutil.rmtree(os.path.join('python-%s' % version, 'include'))
- for lib in glob.glob(os.path.join('python-%s' % version, 'lib', 'lib*.a')):
+
+ # Install requests module. This is needed in particualr on macOS to ensure
+ # SSL certificates are available (certifi in installed and used by requests).
+ pybin = os.path.join(src_dir, 'install', 'usr', 'local', 'bin', 'python3')
+ pip = os.path.join(src_dir, 'install', 'usr', 'local', 'bin', 'pip3')
+ check_call([pybin, pip, 'install', 'requests'])
+
+ dirname = 'python-%s-%s' % (version, revision)
+ os.rename(os.path.join(install_dir, 'usr', 'local'), dirname)
+ tarball = 'python-%s-%s-%s.tar.gz' % (version, revision, osname)
+ shutil.rmtree(os.path.join(dirname, 'lib', 'python3.7', 'test'))
+ shutil.rmtree(os.path.join(dirname, 'include'))
+ for lib in glob.glob(os.path.join(dirname, 'lib', 'lib*.a')):
os.remove(lib)
- check_call(['tar', 'zcvf', tarball, 'python-%s' % version])
+ check_call(['tar', 'zcvf', tarball, dirname])
print('Uploading: ' + upload_base + tarball)
check_call(['gsutil', 'cp', '-n', tarball, upload_base + tarball])