|
@@ -17,12 +17,6 @@ from dataclasses import dataclass
|
|
|
import logging
|
|
import logging
|
|
|
|
|
|
|
|
|
|
|
|
|
-logging.basicConfig(
|
|
|
|
|
- level=logging.INFO,
|
|
|
|
|
- format="{%(pathname)s:%(lineno)d} %(levelname)s - %(message)s",
|
|
|
|
|
-)
|
|
|
|
|
-
|
|
|
|
|
-
|
|
|
|
|
@dataclass
|
|
@dataclass
|
|
|
class Binary:
|
|
class Binary:
|
|
|
executable: str
|
|
executable: str
|
|
@@ -45,9 +39,7 @@ DIRS_TO_LINK = ["include", "lib", "share"]
|
|
|
installed_brew_packages = subprocess.getoutput("brew list").split()
|
|
installed_brew_packages = subprocess.getoutput("brew list").split()
|
|
|
brew_prefix = Path(subprocess.getoutput("brew --prefix")) / "opt"
|
|
brew_prefix = Path(subprocess.getoutput("brew --prefix")) / "opt"
|
|
|
|
|
|
|
|
-installed_versions = [
|
|
|
|
|
- p for p in installed_brew_packages if "python@" in p or "python-tk@" in p
|
|
|
|
|
-]
|
|
|
|
|
|
|
+installed_versions = [p for p in installed_brew_packages if "python@" in p]
|
|
|
|
|
|
|
|
logging.info(f"Will link following installed versions: {installed_versions}")
|
|
logging.info(f"Will link following installed versions: {installed_versions}")
|
|
|
|
|
|
|
@@ -58,17 +50,13 @@ logging.info(f"Will add all necessary links to {pyenv_dir}")
|
|
|
for pyversion in installed_versions:
|
|
for pyversion in installed_versions:
|
|
|
logging.info(f"Check dir for {pyversion}")
|
|
logging.info(f"Check dir for {pyversion}")
|
|
|
_, version = pyversion.split("@")
|
|
_, version = pyversion.split("@")
|
|
|
- if "-tk" in pyversion:
|
|
|
|
|
- link_dir = pyenv_dir / f"{version}-tk"
|
|
|
|
|
- else:
|
|
|
|
|
- link_dir = pyenv_dir / version
|
|
|
|
|
- link_dir.mkdir(exist_ok=True)
|
|
|
|
|
|
|
+ (pyenv_dir / version).mkdir(exist_ok=True)
|
|
|
for binary in BINARIES_TO_LINK:
|
|
for binary in BINARIES_TO_LINK:
|
|
|
- (link_dir / "bin").mkdir(exist_ok=True)
|
|
|
|
|
|
|
+ (pyenv_dir / version / "bin").mkdir(exist_ok=True)
|
|
|
target = (
|
|
target = (
|
|
|
brew_prefix / pyversion / "bin" / binary.executable.format(version=version)
|
|
brew_prefix / pyversion / "bin" / binary.executable.format(version=version)
|
|
|
)
|
|
)
|
|
|
- source = link_dir / "bin" / binary.executable.format(version=version)
|
|
|
|
|
|
|
+ source = pyenv_dir / version / "bin" / binary.executable.format(version=version)
|
|
|
if source.is_file():
|
|
if source.is_file():
|
|
|
if source.resolve() != target.resolve():
|
|
if source.resolve() != target.resolve():
|
|
|
logging.warning(
|
|
logging.warning(
|
|
@@ -78,7 +66,7 @@ for pyversion in installed_versions:
|
|
|
|
|
|
|
|
source.symlink_to(target)
|
|
source.symlink_to(target)
|
|
|
for link in binary.links:
|
|
for link in binary.links:
|
|
|
- source = link_dir / "bin" / link
|
|
|
|
|
|
|
+ source = pyenv_dir / version / "bin" / link
|
|
|
target = brew_prefix / pyversion / "libexec/bin" / link
|
|
target = brew_prefix / pyversion / "libexec/bin" / link
|
|
|
if source.is_symlink():
|
|
if source.is_symlink():
|
|
|
logging.warning(f"Link {target} -> {source} already exists. Skipping.")
|
|
logging.warning(f"Link {target} -> {source} already exists. Skipping.")
|
|
@@ -87,7 +75,7 @@ for pyversion in installed_versions:
|
|
|
|
|
|
|
|
for dir_ in DIRS_TO_LINK:
|
|
for dir_ in DIRS_TO_LINK:
|
|
|
target = brew_prefix / pyversion / dir_
|
|
target = brew_prefix / pyversion / dir_
|
|
|
- source = link_dir / dir_
|
|
|
|
|
|
|
+ source = pyenv_dir / version / dir_
|
|
|
if source.is_dir():
|
|
if source.is_dir():
|
|
|
if source.resolve() != target.resolve():
|
|
if source.resolve() != target.resolve():
|
|
|
logging.warning(
|
|
logging.warning(
|