blob: 0f5704733ef17779cfe33d136298937dbd8d6f37 [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()