diff --git a/tools/ports/__init__.py b/tools/ports/__init__.py index 8aea2e1662bc4..6cec97ef7dd9c 100644 --- a/tools/ports/__init__.py +++ b/tools/ports/__init__.py @@ -222,25 +222,17 @@ def fetch_project(name, url, sha512hash=None): port = ports_by_name.get(name) if not port: utils.exit_with_error('%s is not a known port' % name) - if not hasattr(port, 'SUBDIR'): - utils.exit_with_error(f'port {name} lacks .SUBDIR attribute, which we need in order to override it locally, please update it') - subdir = port.SUBDIR - target = os.path.join(fullname, subdir) - - uptodate_message = f'not grabbing local port: {name} from {path} to {fullname} (subdir: {subdir}) as the destination {target} is newer (run emcc --clear-ports if that is incorrect)' - # before acquiring the lock we have an early out if the port already exists - if os.path.exists(target) and dir_is_newer(path, target): - logger.warning(uptodate_message) + + srcZip = os.path.join(path, name + '.zip') + dstZip = os.path.join(Ports.get_dir(), name + '.zip') + if os.path.exists(dstZip) and (os.path.getmtime(dstZip) >= os.path.getmtime(srcZip)): + #early return before locking return - with cache.lock('unpack local port'): - # Another early out in case another process unpackage the library while we were - # waiting for the lock - if os.path.exists(target) and not dir_is_newer(path, target): - logger.warning(uptodate_message) - return - logger.warning(f'grabbing local port: {name} from {path} to {fullname} (subdir: {subdir})') - utils.delete_dir(fullname) - shutil.copytree(path, target) + with cache.lock('unpack local port'): + if not os.path.exists(dstZip) or (os.path.getmtime(dstZip) < os.path.getmtime(srcZip)): + logger.info('copying port sources from ' + srcZip + ' to ' + dstZip) + shutil.copyfile(srcZip, dstZip) + shutil.unpack_archive(filename=dstZip, extract_dir=fullname) Ports.clear_project_build(name) return diff --git a/tools/ports/freetype.py b/tools/ports/freetype.py index 83ef166a91cd7..0f63a8f3b0648 100644 --- a/tools/ports/freetype.py +++ b/tools/ports/freetype.py @@ -5,9 +5,7 @@ import os -TAG = 'version_1' -HASH = '0d0b1280ba0501ad0a23cf1daa1f86821c722218b59432734d3087a89acd22aabd5c3e5e1269700dcd41e87073046e906060f167c032eb91a3ac8c5808a02783' - +TAG = 'version_2' variants = {'freetype-wasm-sjlj': {'SUPPORT_LONGJMP': 'wasm'}} @@ -23,7 +21,7 @@ def get_lib_name(settings): def get(ports, settings, shared): - ports.fetch_project('freetype', f'https://github.com/emscripten-ports/FreeType/archive/{TAG}.zip', sha512hash=HASH) + ports.fetch_project('freetype', '', 'FreeType-' + TAG) def create(final): source_path = os.path.join(ports.get_dir(), 'freetype', 'FreeType-' + TAG) @@ -47,6 +45,7 @@ def create(final): 'src/base/ftgloadr.c', 'src/base/ftglyph.c', 'src/base/ftgxval.c', + 'src/base/fthash.c', 'src/base/ftinit.c', 'src/base/ftlcdfil.c', 'src/base/ftmm.c', @@ -55,6 +54,7 @@ def create(final): 'src/base/ftoutln.c', 'src/base/ftpatent.c', 'src/base/ftpfr.c', + 'src/base/ftpsprop.c', 'src/base/ftrfork.c', 'src/base/ftsnames.c', 'src/base/ftstream.c', @@ -78,6 +78,12 @@ def create(final): 'src/pshinter/pshinter.c', 'src/psnames/psmodule.c', 'src/raster/raster.c', + 'src/sdf/ftsdfrend.c', + 'src/sdf/ftsdf.c', + 'src/sdf/ftbsdf.c', + 'src/sdf/ftsdfcommon.c', + 'src/sdf/sdf.c', + 'src/svg/ftsvg.c', 'src/sfnt/sfnt.c', 'src/smooth/smooth.c', 'src/truetype/truetype.c', diff --git a/tools/ports/zlib.py b/tools/ports/zlib.py index e4beede137f2c..73ff070b0ed99 100644 --- a/tools/ports/zlib.py +++ b/tools/ports/zlib.py @@ -5,19 +5,17 @@ import os -VERSION = '1.2.13' -HASH = '44b834fbfb50cca229209b8dbe1f96b258f19a49f5df23b80970b716371d856a4adf525edb4c6e0e645b180ea949cb90f5365a1d896160f297f56794dd888659' - +TAG = 'version_2' def needed(settings): return settings.USE_ZLIB def get(ports, settings, shared): - ports.fetch_project('zlib', f'https://github.com/madler/zlib/archive/refs/tags/v{VERSION}.tar.gz', sha512hash=HASH) + ports.fetch_project('zlib', '', 'zlib-' + TAG) def create(final): - source_path = os.path.join(ports.get_dir(), 'zlib', 'zlib-' + VERSION) + source_path = os.path.join(ports.get_dir(), 'zlib', 'zlib-' + TAG) ports.write_file(os.path.join(source_path, 'zconf.h'), zconf_h) ports.install_headers(source_path)