blob: 58f9954853079885f5dc5bf5f1185819cbd6126b [file] [log] [blame]
# Copyright 2020 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
import re
import portage
from portage import os
from portage.const import GLOBAL_CONFIG_PATH
COMPAT_BINPKG_COMPRESS = "bzip2"
def main():
"""
If the current installation is still configured to use the old
default BINPKG_COMPRESS=bzip2 setting, then patch make.globals
inside ${ED} to maintain backward compatibility, ensuring that
binary package consumers are not caught off guard. This is
intended to be called from the ebuild as follows:
pkg_preinst() {
python_setup
env -u BINPKG_COMPRESS
PYTHONPATH="${D%/}$(python_get_sitedir)${PYTHONPATH:+:${PYTHONPATH}}" \
"${PYTHON}" -m portage._compat_upgrade.binpkg_compression || die
}
"""
if (
portage.settings.get("BINPKG_COMPRESS", COMPAT_BINPKG_COMPRESS)
== COMPAT_BINPKG_COMPRESS
):
config_path = os.path.join(
os.environ["ED"], GLOBAL_CONFIG_PATH.lstrip(os.sep), "make.globals"
)
with open(config_path) as f:
content = f.read()
compat_setting = 'BINPKG_COMPRESS="{}"'.format(COMPAT_BINPKG_COMPRESS)
portage.output.EOutput().einfo(
"Setting make.globals default {} for backward compatibility".format(
compat_setting
)
)
content = re.sub(
"^BINPKG_COMPRESS=.*$", compat_setting, content, flags=re.MULTILINE
)
with open(config_path, "wt") as f:
f.write(content)
if __name__ == "__main__":
main()