aboutsummaryrefslogtreecommitdiff
path: root/bin
diff options
context:
space:
mode:
authorZac Medico <zmedico@gentoo.org>2024-02-04 22:38:52 -0800
committerZac Medico <zmedico@gentoo.org>2024-02-04 22:43:11 -0800
commitcba5d579f170ee9616b1903dedc3597eafb1aee7 (patch)
treed5b1b126f130575fcd9a3a9e1f65bb49a5e95101 /bin
parentprocess.spawn: Avoid os.environ pickling error (diff)
downloadportage-cba5d579f170ee9616b1903dedc3597eafb1aee7.tar.gz
portage-cba5d579f170ee9616b1903dedc3597eafb1aee7.tar.bz2
portage-cba5d579f170ee9616b1903dedc3597eafb1aee7.zip
bin/fixpackages: multiprocessing spawn compat
Use __main__ to avoid this RuntimeError: RuntimeError: An attempt has been made to start a new process before the current process has finished its bootstrapping phase. Bug: https://bugs.gentoo.org/914876 Signed-off-by: Zac Medico <zmedico@gentoo.org>
Diffstat (limited to 'bin')
-rwxr-xr-xbin/fixpackages71
1 files changed, 38 insertions, 33 deletions
diff --git a/bin/fixpackages b/bin/fixpackages
index 6f88bea7c..76c8f6d38 100755
--- a/bin/fixpackages
+++ b/bin/fixpackages
@@ -1,5 +1,5 @@
#!/usr/bin/env python
-# Copyright 1999-2020 Gentoo Authors
+# Copyright 1999-2024 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
import argparse
@@ -17,44 +17,49 @@ if osp.isfile(
import portage
portage._internal_caller = True
-from portage import os
from portage.output import EOutput
from textwrap import wrap
from portage._global_updates import _global_updates
-mysettings = portage.settings
-mytrees = portage.db
-mtimedb = portage.mtimedb
-description = """The fixpackages program performs package move updates on
- configuration files, installed packages, and binary packages."""
-description = " ".join(description.split())
+def main():
+ mysettings = portage.settings
+ mytrees = portage.db
+ mtimedb = portage.mtimedb
-parser = argparse.ArgumentParser(description=description)
-parser.parse_args()
+ description = """The fixpackages program performs package move updates on
+ configuration files, installed packages, and binary packages."""
+ description = " ".join(description.split())
-if mysettings["ROOT"] != "/":
- out = EOutput()
- msg = (
- "The fixpackages program is not intended for use with "
- + 'ROOT != "/". Instead use `emaint --fix movebin` and/or '
- + "`emaint --fix moveinst."
- )
- for line in wrap(msg, 72):
- out.eerror(line)
- sys.exit(1)
-
-try:
- os.nice(int(mysettings.get("PORTAGE_NICENESS", "0")))
-except (OSError, ValueError) as e:
- portage.writemsg(
- f"!!! Failed to change nice value to '{mysettings['PORTAGE_NICENESS']}'\n"
- )
- portage.writemsg(f"!!! {str(e)}\n")
- del e
+ parser = argparse.ArgumentParser(description=description)
+ parser.parse_args()
+
+ if mysettings["ROOT"] != "/":
+ out = EOutput()
+ msg = (
+ "The fixpackages program is not intended for use with "
+ + 'ROOT != "/". Instead use `emaint --fix movebin` and/or '
+ + "`emaint --fix moveinst."
+ )
+ for line in wrap(msg, 72):
+ out.eerror(line)
+ sys.exit(1)
+
+ try:
+ os.nice(int(mysettings.get("PORTAGE_NICENESS", "0")))
+ except (OSError, ValueError) as e:
+ portage.writemsg(
+ f"!!! Failed to change nice value to '{mysettings['PORTAGE_NICENESS']}'\n"
+ )
+ portage.writemsg(f"!!! {str(e)}\n")
+ del e
+
+ _global_updates(mytrees, mtimedb["updates"], if_mtime_changed=False)
+
+ print()
+ print("Done.")
+ print()
-_global_updates(mytrees, mtimedb["updates"], if_mtime_changed=False)
-print()
-print("Done.")
-print()
+if __name__ == "__main__":
+ main()