forked from sig_core/toolkit
add delete old packages option
This commit is contained in:
parent
94a530f4b5
commit
18b985cdcc
@ -28,6 +28,7 @@ parser.add_argument('--simple', action='store_false')
|
|||||||
parser.add_argument('--logger', type=str)
|
parser.add_argument('--logger', type=str)
|
||||||
parser.add_argument('--disable-gpg-check', action='store_false')
|
parser.add_argument('--disable-gpg-check', action='store_false')
|
||||||
parser.add_argument('--disable-repo-gpg-check', action='store_false')
|
parser.add_argument('--disable-repo-gpg-check', action='store_false')
|
||||||
|
parser.add_argument('--clean-old-packages', action='store_true')
|
||||||
|
|
||||||
# Parse them
|
# Parse them
|
||||||
results = parser.parse_args()
|
results = parser.parse_args()
|
||||||
@ -58,6 +59,7 @@ a = RepoSync(
|
|||||||
refresh_treeinfo=results.refresh_treeinfo,
|
refresh_treeinfo=results.refresh_treeinfo,
|
||||||
gpg_check=results.disable_gpg_check,
|
gpg_check=results.disable_gpg_check,
|
||||||
repo_gpg_check=results.disable_repo_gpg_check,
|
repo_gpg_check=results.disable_repo_gpg_check,
|
||||||
|
reposync_clean_old=results.clean_old_packages,
|
||||||
)
|
)
|
||||||
|
|
||||||
def run():
|
def run():
|
||||||
|
@ -31,6 +31,7 @@ parser.add_argument('--simple', action='store_false')
|
|||||||
parser.add_argument('--logger', type=str)
|
parser.add_argument('--logger', type=str)
|
||||||
parser.add_argument('--disable-gpg-check', action='store_false')
|
parser.add_argument('--disable-gpg-check', action='store_false')
|
||||||
parser.add_argument('--disable-repo-gpg-check', action='store_false')
|
parser.add_argument('--disable-repo-gpg-check', action='store_false')
|
||||||
|
parser.add_argument('--clean-old-packages', action='store_true')
|
||||||
|
|
||||||
# Parse them
|
# Parse them
|
||||||
results = parser.parse_args()
|
results = parser.parse_args()
|
||||||
@ -61,6 +62,7 @@ a = SigRepoSync(
|
|||||||
logger=results.logger,
|
logger=results.logger,
|
||||||
gpg_check=results.disable_gpg_check,
|
gpg_check=results.disable_gpg_check,
|
||||||
repo_gpg_check=results.disable_repo_gpg_check,
|
repo_gpg_check=results.disable_repo_gpg_check,
|
||||||
|
reposync_clean_old=results.clean_old_packages,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
@ -10,8 +10,8 @@ altarch:
|
|||||||
altarch-rockyrpi:
|
altarch-rockyrpi:
|
||||||
allowed_arches:
|
allowed_arches:
|
||||||
- aarch64
|
- aarch64
|
||||||
additional_dirs:
|
additional_dirs:
|
||||||
- 'images'
|
- 'images'
|
||||||
extra_files:
|
extra_files:
|
||||||
git_repo: 'https://git.rockylinux.org/staging/src/rocky-release-altarch.git'
|
git_repo: 'https://git.rockylinux.org/staging/src/rocky-release-altarch.git'
|
||||||
git_raw_path: 'https://git.rockylinux.org/staging/src/rocky-release-altarch/-/raw/r8/'
|
git_raw_path: 'https://git.rockylinux.org/staging/src/rocky-release-altarch/-/raw/r8/'
|
||||||
@ -30,8 +30,8 @@ altarch:
|
|||||||
altarch-rockyrpi:
|
altarch-rockyrpi:
|
||||||
allowed_arches:
|
allowed_arches:
|
||||||
- aarch64
|
- aarch64
|
||||||
additional_dirs:
|
additional_dirs:
|
||||||
- 'images'
|
- 'images'
|
||||||
extra_files:
|
extra_files:
|
||||||
git_repo: 'https://git.rockylinux.org/staging/src/rocky-release-altarch.git'
|
git_repo: 'https://git.rockylinux.org/staging/src/rocky-release-altarch.git'
|
||||||
git_raw_path: 'https://git.rockylinux.org/staging/src/rocky-release-altarch/-/raw/r9/'
|
git_raw_path: 'https://git.rockylinux.org/staging/src/rocky-release-altarch/-/raw/r9/'
|
||||||
|
@ -11,6 +11,15 @@ metadata provides.
|
|||||||
|
|
||||||
# Notes #
|
# Notes #
|
||||||
|
|
||||||
|
## Unversioned ISO Files ##
|
||||||
|
|
||||||
|
There are unversioned ISO files in the isos and live directories per
|
||||||
|
architecture. This is to allow libvirt users an easy way to download an ISO for
|
||||||
|
a given release of their choosing easily. It also allows users as a whole to
|
||||||
|
always have a pre-determined path to download the latest ISO of a given release
|
||||||
|
by just relying on it being in the URL itself rather than in the ISO name. Note
|
||||||
|
that these unversioned ISO files may or may not advertised on the main site.
|
||||||
|
|
||||||
## Checksums ##
|
## Checksums ##
|
||||||
|
|
||||||
CHECKSUM Validation: https://github.com/rocky-linux/checksums
|
CHECKSUM Validation: https://github.com/rocky-linux/checksums
|
||||||
@ -33,4 +42,3 @@ any of the following:
|
|||||||
|
|
||||||
https://keys.openpgp.org/
|
https://keys.openpgp.org/
|
||||||
https://keyserver.ubuntu.com
|
https://keyserver.ubuntu.com
|
||||||
|
|
||||||
|
@ -61,6 +61,8 @@ class RepoSync:
|
|||||||
repo_gpg_check: bool = True,
|
repo_gpg_check: bool = True,
|
||||||
rlmode: str = 'stable',
|
rlmode: str = 'stable',
|
||||||
just_pull_everything: bool = False,
|
just_pull_everything: bool = False,
|
||||||
|
extra_dnf_args=None,
|
||||||
|
reposync_clean_old: bool = False,
|
||||||
logger=None
|
logger=None
|
||||||
):
|
):
|
||||||
self.nofail = nofail
|
self.nofail = nofail
|
||||||
@ -118,6 +120,17 @@ class RepoSync:
|
|||||||
file_loader = FileSystemLoader(f"{_rootdir}/templates")
|
file_loader = FileSystemLoader(f"{_rootdir}/templates")
|
||||||
self.tmplenv = Environment(loader=file_loader)
|
self.tmplenv = Environment(loader=file_loader)
|
||||||
|
|
||||||
|
# dnf args
|
||||||
|
dnf_args_to_add = []
|
||||||
|
if extra_dnf_args:
|
||||||
|
if '--delete' in extra_dnf_args:
|
||||||
|
raise SystemExit('Please use the --reposync-clean option instead.')
|
||||||
|
|
||||||
|
dnf_args_to_add.extend(extra_dnf_args.split(' '))
|
||||||
|
|
||||||
|
self.extra_dnf_args = dnf_args_to_add.copy()
|
||||||
|
self.reposync_clean_old = reposync_clean_old
|
||||||
|
|
||||||
# each el can have its own designated container to run stuff in,
|
# each el can have its own designated container to run stuff in,
|
||||||
# otherwise we'll just default to the default config.
|
# otherwise we'll just default to the default config.
|
||||||
self.container = config['container']
|
self.container = config['container']
|
||||||
@ -321,6 +334,8 @@ class RepoSync:
|
|||||||
cmd = Shared.podman_cmd(self.log)
|
cmd = Shared.podman_cmd(self.log)
|
||||||
contrunlist = []
|
contrunlist = []
|
||||||
bad_exit_list = []
|
bad_exit_list = []
|
||||||
|
extra_dnf_args = ' '.join(self.extra_dnf_args.copy())
|
||||||
|
reposync_delete = '--delete' if self.reposync_clean_old else ''
|
||||||
self.log.info('Generating container entries')
|
self.log.info('Generating container entries')
|
||||||
entries_dir = os.path.join(work_root, "entries")
|
entries_dir = os.path.join(work_root, "entries")
|
||||||
gpg_key_url = self.extra_files['git_raw_path'] + self.extra_files['gpg'][self.gpgkey]
|
gpg_key_url = self.extra_files['git_raw_path'] + self.extra_files['gpg'][self.gpgkey]
|
||||||
@ -422,12 +437,13 @@ class RepoSync:
|
|||||||
|
|
||||||
sync_cmd = ("/usr/bin/dnf reposync -c {}.{} --download-metadata "
|
sync_cmd = ("/usr/bin/dnf reposync -c {}.{} --download-metadata "
|
||||||
"--repoid={} -p {} --forcearch {} --norepopath --remote-time "
|
"--repoid={} -p {} --forcearch {} --norepopath --remote-time "
|
||||||
"--gpgcheck --assumeyes 2>&1").format(
|
"--gpgcheck --assumeyes {} 2>&1").format(
|
||||||
self.dnf_config,
|
self.dnf_config,
|
||||||
a,
|
a,
|
||||||
r,
|
r,
|
||||||
os_sync_path,
|
os_sync_path,
|
||||||
a
|
a,
|
||||||
|
reposync_delete
|
||||||
)
|
)
|
||||||
|
|
||||||
debug_metadata_cmd = ("/usr/bin/dnf makecache -c {}.{} --repoid={}-debug "
|
debug_metadata_cmd = ("/usr/bin/dnf makecache -c {}.{} --repoid={}-debug "
|
||||||
@ -441,12 +457,13 @@ class RepoSync:
|
|||||||
|
|
||||||
debug_sync_cmd = ("/usr/bin/dnf reposync -c {}.{} "
|
debug_sync_cmd = ("/usr/bin/dnf reposync -c {}.{} "
|
||||||
"--download-metadata --repoid={}-debug -p {} --forcearch {} "
|
"--download-metadata --repoid={}-debug -p {} --forcearch {} "
|
||||||
"--gpgcheck --norepopath --remote-time --assumeyes 2>&1").format(
|
"--gpgcheck --norepopath --remote-time --assumeyes {} 2>&1").format(
|
||||||
self.dnf_config,
|
self.dnf_config,
|
||||||
a,
|
a,
|
||||||
r,
|
r,
|
||||||
debug_sync_path,
|
debug_sync_path,
|
||||||
a
|
a,
|
||||||
|
reposync_delete
|
||||||
)
|
)
|
||||||
|
|
||||||
dnf_plugin_cmd = "/usr/bin/dnf install dnf-plugins-core -y"
|
dnf_plugin_cmd = "/usr/bin/dnf install dnf-plugins-core -y"
|
||||||
@ -571,10 +588,11 @@ class RepoSync:
|
|||||||
|
|
||||||
source_sync_cmd = ("/usr/bin/dnf reposync -c {} "
|
source_sync_cmd = ("/usr/bin/dnf reposync -c {} "
|
||||||
"--download-metadata --repoid={}-source -p {} "
|
"--download-metadata --repoid={}-source -p {} "
|
||||||
"--gpgcheck --norepopath --remote-time --assumeyes 2>&1").format(
|
"--gpgcheck --norepopath --remote-time --assumeyes {} 2>&1").format(
|
||||||
self.dnf_config,
|
self.dnf_config,
|
||||||
r,
|
r,
|
||||||
source_sync_path
|
source_sync_path,
|
||||||
|
reposync_delete
|
||||||
)
|
)
|
||||||
|
|
||||||
source_sync_template = self.tmplenv.get_template('reposync-src.tmpl')
|
source_sync_template = self.tmplenv.get_template('reposync-src.tmpl')
|
||||||
@ -1494,6 +1512,8 @@ class SigRepoSync:
|
|||||||
gpgkey: str = 'stable',
|
gpgkey: str = 'stable',
|
||||||
gpg_check: bool = True,
|
gpg_check: bool = True,
|
||||||
repo_gpg_check: bool = True,
|
repo_gpg_check: bool = True,
|
||||||
|
extra_dnf_args=None,
|
||||||
|
reposync_clean_old: bool = False,
|
||||||
logger=None
|
logger=None
|
||||||
):
|
):
|
||||||
self.nofail = nofail
|
self.nofail = nofail
|
||||||
@ -1534,7 +1554,7 @@ class SigRepoSync:
|
|||||||
self.gpgkey = gpgkey
|
self.gpgkey = gpgkey
|
||||||
#self.arches = sigvars['allowed_arches']
|
#self.arches = sigvars['allowed_arches']
|
||||||
self.project_id = sigvars['project_id']
|
self.project_id = sigvars['project_id']
|
||||||
if 'additional_vars' in sigvars:
|
if 'additional_dirs' in sigvars:
|
||||||
self.additional_dirs = sigvars['additional_dirs']
|
self.additional_dirs = sigvars['additional_dirs']
|
||||||
|
|
||||||
self.compose_id = '{}-{}-{}'.format(
|
self.compose_id = '{}-{}-{}'.format(
|
||||||
@ -1547,6 +1567,17 @@ class SigRepoSync:
|
|||||||
file_loader = FileSystemLoader(f"{_rootdir}/templates")
|
file_loader = FileSystemLoader(f"{_rootdir}/templates")
|
||||||
self.tmplenv = Environment(loader=file_loader)
|
self.tmplenv = Environment(loader=file_loader)
|
||||||
|
|
||||||
|
# dnf args
|
||||||
|
dnf_args_to_add = []
|
||||||
|
if extra_dnf_args:
|
||||||
|
if '--delete' in extra_dnf_args:
|
||||||
|
raise SystemExit('Please use the --reposync-clean option instead.')
|
||||||
|
|
||||||
|
dnf_args_to_add.extend(extra_dnf_args.split(' '))
|
||||||
|
|
||||||
|
self.extra_dnf_args = dnf_args_to_add.copy()
|
||||||
|
self.reposync_clean_old = reposync_clean_old
|
||||||
|
|
||||||
# each el can have its own designated container to run stuff in,
|
# each el can have its own designated container to run stuff in,
|
||||||
# otherwise we'll just default to the default config.
|
# otherwise we'll just default to the default config.
|
||||||
self.container = config['container']
|
self.container = config['container']
|
||||||
@ -1724,6 +1755,7 @@ class SigRepoSync:
|
|||||||
else:
|
else:
|
||||||
Shared.dnf_sync(repo, sync_root, work_root, arch, self.log)
|
Shared.dnf_sync(repo, sync_root, work_root, arch, self.log)
|
||||||
|
|
||||||
|
self.create_additional_dirs(sync_root)
|
||||||
|
|
||||||
def podman_sync(
|
def podman_sync(
|
||||||
self,
|
self,
|
||||||
@ -1744,6 +1776,8 @@ class SigRepoSync:
|
|||||||
"""
|
"""
|
||||||
cmd = Shared.podman_cmd(self.log)
|
cmd = Shared.podman_cmd(self.log)
|
||||||
bad_exit_list = []
|
bad_exit_list = []
|
||||||
|
extra_dnf_args = ' '.join(self.extra_dnf_args.copy())
|
||||||
|
reposync_delete = '--delete' if self.reposync_clean_old else ''
|
||||||
self.log.info('Generating container entries')
|
self.log.info('Generating container entries')
|
||||||
entries_dir = os.path.join(work_root, "entries")
|
entries_dir = os.path.join(work_root, "entries")
|
||||||
gpg_key_url = self.extra_files['git_raw_path'] + self.extra_files['gpg'][self.gpgkey]
|
gpg_key_url = self.extra_files['git_raw_path'] + self.extra_files['gpg'][self.gpgkey]
|
||||||
@ -1837,12 +1871,13 @@ class SigRepoSync:
|
|||||||
|
|
||||||
sync_cmd = ("/usr/bin/dnf reposync -c {}.{} --download-metadata "
|
sync_cmd = ("/usr/bin/dnf reposync -c {}.{} --download-metadata "
|
||||||
"--repoid={} -p {} --forcearch {} --norepopath --remote-time "
|
"--repoid={} -p {} --forcearch {} --norepopath --remote-time "
|
||||||
"--gpgcheck --assumeyes 2>&1").format(
|
"--gpgcheck --assumeyes {} 2>&1").format(
|
||||||
self.dnf_config,
|
self.dnf_config,
|
||||||
a,
|
a,
|
||||||
r,
|
r,
|
||||||
os_sync_path,
|
os_sync_path,
|
||||||
a
|
a,
|
||||||
|
reposync_delete
|
||||||
)
|
)
|
||||||
|
|
||||||
debug_metadata_cmd = ("/usr/bin/dnf makecache -c {}.{} --repoid={}-debug "
|
debug_metadata_cmd = ("/usr/bin/dnf makecache -c {}.{} --repoid={}-debug "
|
||||||
@ -1856,12 +1891,13 @@ class SigRepoSync:
|
|||||||
|
|
||||||
debug_sync_cmd = ("/usr/bin/dnf reposync -c {}.{} "
|
debug_sync_cmd = ("/usr/bin/dnf reposync -c {}.{} "
|
||||||
"--download-metadata --repoid={}-debug -p {} --forcearch {} "
|
"--download-metadata --repoid={}-debug -p {} --forcearch {} "
|
||||||
"--gpgcheck --norepopath --remote-time --assumeyes 2>&1").format(
|
"--gpgcheck --norepopath --remote-time --assumeyes {} 2>&1").format(
|
||||||
self.dnf_config,
|
self.dnf_config,
|
||||||
a,
|
a,
|
||||||
r,
|
r,
|
||||||
debug_sync_path,
|
debug_sync_path,
|
||||||
a
|
a,
|
||||||
|
reposync_delete
|
||||||
)
|
)
|
||||||
|
|
||||||
dnf_plugin_cmd = "/usr/bin/dnf install dnf-plugins-core -y"
|
dnf_plugin_cmd = "/usr/bin/dnf install dnf-plugins-core -y"
|
||||||
@ -1936,10 +1972,11 @@ class SigRepoSync:
|
|||||||
|
|
||||||
source_sync_cmd = ("/usr/bin/dnf reposync -c {} "
|
source_sync_cmd = ("/usr/bin/dnf reposync -c {} "
|
||||||
"--download-metadata --repoid={}-source -p {} "
|
"--download-metadata --repoid={}-source -p {} "
|
||||||
"--gpgcheck --norepopath --remote-time --assumeyes 2>&1").format(
|
"--gpgcheck --norepopath --remote-time --assumeyes {} 2>&1").format(
|
||||||
self.dnf_config,
|
self.dnf_config,
|
||||||
r,
|
r,
|
||||||
source_sync_path
|
source_sync_path,
|
||||||
|
reposync_delete
|
||||||
)
|
)
|
||||||
|
|
||||||
source_sync_template = self.tmplenv.get_template('reposync-src.tmpl')
|
source_sync_template = self.tmplenv.get_template('reposync-src.tmpl')
|
||||||
@ -2093,3 +2130,9 @@ class SigRepoSync:
|
|||||||
)
|
)
|
||||||
|
|
||||||
self.log.info(Color.INFO + 'Metadata files phase completed.')
|
self.log.info(Color.INFO + 'Metadata files phase completed.')
|
||||||
|
|
||||||
|
def create_additional_dirs(self, sync_root):
|
||||||
|
"""
|
||||||
|
Creates additional directories
|
||||||
|
"""
|
||||||
|
self.log.info(Color.INFO + 'Ensuring additional directories exist')
|
||||||
|
@ -508,6 +508,7 @@ class IsoBuild:
|
|||||||
self.log.info('Removing boot.iso from %s' % image)
|
self.log.info('Removing boot.iso from %s' % image)
|
||||||
try:
|
try:
|
||||||
os.remove(path_to_image + '/images/boot.iso')
|
os.remove(path_to_image + '/images/boot.iso')
|
||||||
|
os.remove(path_to_image + '/images/boot.iso.manifest')
|
||||||
except:
|
except:
|
||||||
self.log.error(
|
self.log.error(
|
||||||
'[' + Color.BOLD + Color.YELLOW + 'FAIL' + Color.END + '] ' +
|
'[' + Color.BOLD + Color.YELLOW + 'FAIL' + Color.END + '] ' +
|
||||||
|
Loading…
Reference in New Issue
Block a user