#!/usr/bin/env python # Copyright 1999-2024 Gentoo Authors # Distributed under the terms of the GNU General Public License v2 import argparse import os import sys from os import path as osp if osp.isfile( osp.join(osp.dirname(osp.dirname(osp.realpath(__file__))), ".portage_not_installed") ): sys.path.insert( 0, osp.join(osp.dirname(osp.dirname(osp.realpath(__file__))), "lib") ) import portage portage._internal_caller = True from portage.output import EOutput from textwrap import wrap from portage._global_updates import _global_updates def main(): 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()) 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() if __name__ == "__main__": main()