Skip to content

Commit 629ab08

Browse files
authored
Merge pull request #62 from solvingj/jwiltse/add_lib64_dir
Add lib64 dir as a lib directory with -L if it exists
2 parents 28bcf94 + 7dd382c commit 629ab08

File tree

4 files changed

+46
-29
lines changed

4 files changed

+46
-29
lines changed

src/portable_python/__init__.py

Lines changed: 25 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -497,10 +497,10 @@ def cfg_url(self, version):
497497
url_template = Template(config_url)
498498
return url_template.substitute(version=version)
499499

500-
def cfg_configure(self, deps_lib):
500+
def cfg_configure(self, deps_lib_dir, deps_lib64_dir):
501501
if configure := PPG.config.get_value("%s-configure" % self.m_name):
502502
configure_template = Template(configure)
503-
return configure_template.substitute(deps_lib=deps_lib)
503+
return configure_template.substitute(lib_dir=deps_lib_dir, lib64_dir=deps_lib64_dir)
504504

505505
def cfg_patches(self):
506506
return PPG.config.get_value("%s-patches" % self.m_name)
@@ -521,9 +521,20 @@ def deps(self):
521521
return self.setup.folders.deps
522522

523523
@property
524-
def deps_lib(self):
524+
def deps_lib_dir(self):
525525
return self.deps / "lib"
526526

527+
@property
528+
def deps_lib64_dir(self):
529+
return self.deps / "lib64"
530+
531+
@property
532+
def deps_lib_dirs(self):
533+
lib_dirs = [self.deps_lib_dir]
534+
if self.deps_lib64_dir.exists():
535+
lib_dirs.append(self.deps_lib64_dir)
536+
return lib_dirs
537+
527538
def xenv_CPATH(self):
528539
folder = self.deps / "include"
529540
if folder.exists():
@@ -536,7 +547,7 @@ def xenv_CPATH(self):
536547

537548
def xenv_LDFLAGS(self):
538549
if self.modules.selected:
539-
yield f"-L{self.deps_lib}"
550+
yield from (f"-L{lib_dir}" for lib_dir in self.deps_lib_dirs)
540551

541552
def xenv_PATH(self):
542553
yield f"{self.deps}/bin"
@@ -550,7 +561,7 @@ def xenv_LD_LIBRARY_PATH(self):
550561
def xenv_PKG_CONFIG_PATH(self):
551562
yield from os.environ.get("PKG_CONFIG_PATH", "").split(":")
552563
if self.modules.selected:
553-
yield f"{self.deps_lib}/pkgconfig"
564+
yield from (f"{lib_dir}/pkgconfig" for lib_dir in self.deps_lib_dirs)
554565

555566
def _do_run(self, program, *args, fatal=True, env=None):
556567
return runez.run(program, *args, passthrough=self._log_handler, stdout=None, stderr=None, fatal=fatal, env=env)
@@ -771,10 +782,12 @@ def _prepare(self):
771782
# Some libs get funky permissions for some reason
772783
super()._prepare()
773784
self.setup.ensure_clean_folder(self.install_folder)
774-
for path in runez.ls_dir(self.deps_lib):
775-
if not path.name.endswith(".la"):
776-
expected = 0o755 if path.is_dir() else 0o644
777-
current = path.stat().st_mode & 0o777
778-
if current != expected:
779-
LOG.info("Corrected permissions for %s (was %s)", runez.short(path), oct(current))
780-
path.chmod(expected)
785+
786+
for lib_dir in self.deps_lib_dirs:
787+
for path in runez.ls_dir(lib_dir):
788+
if not path.name.endswith(".la"):
789+
expected = 0o755 if path.is_dir() else 0o644
790+
current = path.stat().st_mode & 0o777
791+
if current != expected:
792+
LOG.info("Corrected permissions for %s (was %s)", runez.short(path), oct(current))
793+
path.chmod(expected)

src/portable_python/cpython.py

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -110,7 +110,7 @@ def url(self):
110110
return f"https://www.python.org/ftp/python/{self.version.main}/Python-{self.version}.tar.xz"
111111

112112
def xenv_LDFLAGS_NODIST(self):
113-
yield f"-L{self.deps_lib}"
113+
yield from (f"-L{lib_dir}" for lib_dir in self.deps_lib_dirs)
114114
if PPG.target.is_linux:
115115
yield "-Wl,-z,origin"
116116
# rpath intentionally long to give 'patchelf' some room
@@ -142,7 +142,7 @@ def c_configure_args(self):
142142

143143
if not self.has_configure_opt("--with-system-ffi"):
144144
if self.active_module(LibFFI):
145-
yield f"LIBFFI_INCLUDEDIR={self.deps_lib}"
145+
yield f"LIBFFI_INCLUDEDIR={self.deps_lib_dir}"
146146
yield "--with-system-ffi=no"
147147

148148
else:
@@ -166,7 +166,11 @@ def c_configure_args(self):
166166
# TODO: this doesn't seem to be enough, on macos cpython's ./configure still picks up the shared macos tcl/tk libs
167167
version = Version(tkinter.version)
168168
yield f"--with-tcltk-includes=-I{self.deps}/include"
169-
yield f"--with-tcltk-libs=-L{self.deps_lib} -ltcl{version.mm} -ltk{version.mm}"
169+
170+
lib_dir_flags = " ".join(f"-L{lib_dir}" for lib_dir in self.deps_lib_dirs)
171+
yield f"--with-tcltk-libs={lib_dir_flags}"
172+
yield f"-ltcl{version.mm}"
173+
yield f"-ltk{version.mm}"
170174

171175
@runez.cached_property
172176
def prefix_lib_folder(self):

src/portable_python/external/xcpython.py

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ def version(self):
2828
return self.cfg_version("6.2.32")
2929

3030
def c_configure_args(self):
31-
if config_args := self.cfg_configure(self.deps_lib):
31+
if config_args := self.cfg_configure(self.deps_lib_dir, self.deps_lib64_dir):
3232
yield config_args
3333

3434
else:
@@ -87,7 +87,7 @@ def version(self):
8787
return self.cfg_version("1.24")
8888

8989
def c_configure_args(self):
90-
if config_args := self.cfg_configure(self.deps_lib):
90+
if config_args := self.cfg_configure(self.deps_lib_dir, self.deps_lib64_dir):
9191
yield config_args
9292

9393
else:
@@ -132,7 +132,7 @@ def version(self):
132132
return self.cfg_version("3.4.6")
133133

134134
def c_configure_args(self):
135-
if config_args := self.cfg_configure(self.deps_lib):
135+
if config_args := self.cfg_configure(self.deps_lib_dir, self.deps_lib64_dir):
136136
yield config_args
137137

138138
else:
@@ -179,7 +179,7 @@ def version(self):
179179
return self.cfg_version("3.0.15")
180180

181181
def c_configure_args(self):
182-
if config_args := self.cfg_configure(self.deps_lib):
182+
if config_args := self.cfg_configure(self.deps_lib_dir, self.deps_lib64_dir):
183183
yield config_args
184184

185185
else:
@@ -208,7 +208,7 @@ def version(self):
208208
return self.cfg_version("6.5")
209209

210210
def c_configure_args(self):
211-
if config_args := self.cfg_configure(self.deps_lib):
211+
if config_args := self.cfg_configure(self.deps_lib_dir, self.deps_lib64_dir):
212212
yield config_args
213213

214214
else:
@@ -219,7 +219,7 @@ def c_configure_args(self):
219219
yield "--without-manpages"
220220
yield "--without-progs"
221221
yield "--without-tests"
222-
yield f"--with-pkg-config-libdir={self.deps_lib}/pkgconfig"
222+
yield f"--with-pkg-config-libdir={self.deps_lib_dir}/pkgconfig"
223223
yield "--enable-pc-files"
224224
yield "--with-debug=no"
225225
yield "--with-gpm=no"
@@ -265,7 +265,7 @@ def version(self):
265265
return self.cfg_version("8.2.13")
266266

267267
def c_configure_args(self):
268-
if config_args := self.cfg_configure(self.deps_lib):
268+
if config_args := self.cfg_configure(self.deps_lib_dir, self.deps_lib64_dir):
269269
yield config_args
270270

271271
else:
@@ -309,7 +309,7 @@ def version(self):
309309
return self.cfg_version("3.47.0")
310310

311311
def c_configure_args(self):
312-
if config_args := self.cfg_configure(self.deps_lib):
312+
if config_args := self.cfg_configure(self.deps_lib_dir, self.deps_lib64_dir):
313313
yield config_args
314314

315315
else:
@@ -346,7 +346,7 @@ def version(self):
346346
return self.cfg_version("1.0.3")
347347

348348
def c_configure_args(self):
349-
if config_args := self.cfg_configure(self.deps_lib):
349+
if config_args := self.cfg_configure(self.deps_lib_dir, self.deps_lib64_dir):
350350
yield config_args
351351

352352
else:
@@ -376,7 +376,7 @@ def version(self):
376376
return self.cfg_version("5.6.3")
377377

378378
def c_configure_args(self):
379-
if config_args := self.cfg_configure(self.deps_lib):
379+
if config_args := self.cfg_configure(self.deps_lib_dir, self.deps_lib64_dir):
380380
yield config_args
381381

382382
else:
@@ -419,7 +419,7 @@ def version(self):
419419
return self.cfg_version("1.3.1")
420420

421421
def c_configure_args(self):
422-
if config_args := self.cfg_configure(self.deps_lib):
422+
if config_args := self.cfg_configure(self.deps_lib_dir, self.deps_lib64_dir):
423423
yield config_args
424424

425425
else:

src/portable_python/external/xtkinter.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ def xenv_CFLAGS(self):
5353
def c_configure_args(self):
5454
yield "--enable-shared=no"
5555
yield "--enable-threads"
56-
yield f"--with-tcl={self.deps_lib}"
56+
yield f"--with-tcl={self.deps_lib_dir}"
5757
yield "--without-x"
5858
if PPG.target.is_macos: # pragma: no cover, tcl/tk is "best effort"
5959
yield "--enable-aqua=yes"
@@ -89,8 +89,8 @@ def xenv_CFLAGS(self):
8989
def c_configure_args(self):
9090
yield "--enable-shared=no"
9191
yield "--enable-threads"
92-
yield f"--with-tcl={self.deps_lib}"
93-
yield f"--with-tk={self.deps_lib}"
92+
yield f"--with-tcl={self.deps_lib_dir}"
93+
yield f"--with-tk={self.deps_lib_dir}"
9494
yield "--without-x"
9595

9696
def _do_linux_compile(self):

0 commit comments

Comments
 (0)