Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 7 additions & 6 deletions src/portable_python/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -539,8 +539,7 @@ def xenv_PKG_CONFIG_PATH(self):
yield f"{self.deps_lib}/pkgconfig"

def _do_run(self, program, *args, fatal=True, env=None):
logger = self._log_handler
return runez.run(program, *args, passthrough=logger, stdout=None, stderr=None, fatal=fatal, env=env, logger=logger or runez.UNSET)
return runez.run(program, *args, passthrough=self._log_handler, stdout=None, stderr=None, fatal=fatal, env=env)

def run_configure(self, program, *args, prefix=None):
"""
Expand All @@ -558,11 +557,13 @@ def run_configure(self, program, *args, prefix=None):

def run_make(self, *args, program="make", cpu_count=None):
cmd = program.split()
if cpu_count is None:
cpu_count = multiprocessing.cpu_count()
if cpu_count and cpu_count < 0:
available = multiprocessing.cpu_count()
if available and available > 0:
cpu_count += available

if cpu_count and cpu_count > 3:
cmd.append("-j%s" % (cpu_count - 2))
if cpu_count and cpu_count > 1:
cmd.append("-j%s" % cpu_count)

self._do_run(*cmd, *args)

Expand Down
10 changes: 6 additions & 4 deletions src/portable_python/cli.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,19 +14,21 @@
@runez.click.group()
@runez.click.version()
@runez.click.color()
@runez.click.debug("-v")
@runez.click.dryrun("-n")
@click.option("--config", "-c", metavar="PATH", default="portable-python.yml", show_default=True, help="Path to config file to use")
@click.option("--quiet", "-q", is_flag=True, help="Turn off DEBUG logging")
@click.option("--target", "-t", hidden=True, help="For internal use / testing")
def main(debug, config, target):
def main(config, quiet, target):
"""
Build (optionally portable) python binaries
"""
level = logging.INFO if quiet else logging.DEBUG
runez.system.AbortException = SystemExit
runez.log.setup(
debug=debug,
debug=not quiet,
level=level,
console_format="%(levelname)s %(message)s",
console_level=logging.INFO,
console_level=level,
default_logger=LOG.info,
locations=None,
)
Expand Down
2 changes: 1 addition & 1 deletion src/portable_python/cpython.py
Original file line number Diff line number Diff line change
Expand Up @@ -204,7 +204,7 @@ def _do_linux_compile(self):

self.run_make(*make_args)
# Don't parallelize `make install`, see https://github.com/python/cpython/issues/109796
self.run_make("install", f"DESTDIR={self.destdir}", cpu_count=0)
self.run_make("install", f"DESTDIR={self.destdir}")

def _finalize(self):
is_shared = self.setup.prefix or self.has_configure_opt("--enable-shared", "yes")
Expand Down
4 changes: 2 additions & 2 deletions src/portable_python/external/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,8 @@ def version(self):
return self.cfg_version("0.3.2")

def _do_linux_compile(self):
self.run_make("LIBINTL=NOOP", cpu_count=0)
self.run_make("LIBINTL=NOOP", f"DESTDIR={self.deps}", "prefix=/", "install", cpu_count=0)
self.run_make("LIBINTL=NOOP")
self.run_make("LIBINTL=NOOP", f"DESTDIR={self.deps}", "prefix=/", "install")


class Toolchain(ModuleBuilder):
Expand Down
2 changes: 1 addition & 1 deletion src/portable_python/external/tkinter.py
Original file line number Diff line number Diff line change
Expand Up @@ -116,4 +116,4 @@ def candidate_modules(cls):

@property
def version(self):
return self.cfg_version("8.6.10")
return self.cfg_version("8.6.15")
16 changes: 8 additions & 8 deletions src/portable_python/external/xcpython.py
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,7 @@ def url(self):

@property
def version(self):
return self.cfg_version("1.23")
return self.cfg_version("1.24")

def _do_linux_compile(self):
self.run_configure(
Expand Down Expand Up @@ -114,7 +114,7 @@ def url(self):

@property
def version(self):
return self.cfg_version("3.4.4")
return self.cfg_version("3.4.6")

def _do_linux_compile(self):
self.run_configure(
Expand Down Expand Up @@ -178,7 +178,7 @@ def url(self):

@property
def version(self):
return self.cfg_version("6.4")
return self.cfg_version("6.5")

def c_configure_args(self):
yield "--disable-shared"
Expand Down Expand Up @@ -231,7 +231,7 @@ def url(self):

@property
def version(self):
return self.cfg_version("8.2")
return self.cfg_version("8.2.13")

def _do_linux_compile(self):
self.run_configure(
Expand All @@ -244,8 +244,8 @@ def _do_linux_compile(self):
"--disable-docs",
"--enable-portable-binary",
)
self.run_make(cpu_count=0)
self.run_make("install", cpu_count=0)
self.run_make()
self.run_make("install")


class Sqlite(ModuleBuilder):
Expand All @@ -271,7 +271,7 @@ def url(self):

@property
def version(self):
return self.cfg_version("3.45.1")
return self.cfg_version("3.47.0")

def _do_linux_compile(self):
self.run_configure(
Expand Down Expand Up @@ -325,7 +325,7 @@ def url(self):

@property
def version(self):
return self.cfg_version("5.4.6")
return self.cfg_version("5.6.3")

def _do_linux_compile(self):
self.run_configure(
Expand Down
2 changes: 1 addition & 1 deletion tests/test_failed.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ def test_build_bogus_platform(cli):
def test_failed_build(cli):
cli.run("-tmacos-arm64", "build", "3.12.0")
assert cli.failed
assert "Error while compiling xz:5.4.6: ForbiddenHttpError" in cli.logged
assert "Error while compiling xz:5.6.3: ForbiddenHttpError" in cli.logged
assert "Overall compilation failed:" in cli.logged


Expand Down
2 changes: 1 addition & 1 deletion tests/test_invoker.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@


def test_invoker(cli):
cli.run("-v", "inspect", "invoker", "-v", "-mall")
cli.run("inspect", "invoker", "-v", "-mall")

# Invoker may not be completely clean, but it has to have at least one OK .so usage
m = re.search(r"^\.so files: .+, (\d+) OK", cli.logged.stdout.contents(), re.MULTILINE)
Expand Down
Loading