forked from sig_core/toolkit
chore: merge devel -> main
This commit is contained in:
commit
171cb7f2c7
@ -57,7 +57,7 @@ RUN rm -rf /etc/yum.repos.d/*.repo /get_arch
|
||||
|
||||
RUN pip install awscli
|
||||
|
||||
ARG BRANCH r9
|
||||
ARG BRANCH=r9
|
||||
RUN git clone https://git.resf.org/sig_core/kickstarts.git --branch $BRANCH /kickstarts
|
||||
|
||||
RUN pip install 'git+https://git.resf.org/sig_core/toolkit.git@devel#egg=empanadas&subdirectory=iso/empanadas'
|
||||
|
@ -1 +1 @@
|
||||
__version__ = '0.2.0'
|
||||
__version__ = '0.4.0'
|
||||
|
137
iso/empanadas/empanadas/configs/el8-beta.yaml
Normal file
137
iso/empanadas/empanadas/configs/el8-beta.yaml
Normal file
@ -0,0 +1,137 @@
|
||||
---
|
||||
'8':
|
||||
fullname: 'Rocky Linux 8'
|
||||
revision: '8.7'
|
||||
rclvl: 'RC1'
|
||||
major: '8'
|
||||
minor: '7'
|
||||
profile: '8'
|
||||
bugurl: 'https://bugs.rockylinux.org'
|
||||
checksum: 'sha256'
|
||||
fedora_major: '20'
|
||||
allowed_arches:
|
||||
- x86_64
|
||||
- aarch64
|
||||
provide_multilib: False
|
||||
project_id: '26694529-26cd-44bd-bc59-1c1195364322'
|
||||
repo_symlinks:
|
||||
devel: 'Devel'
|
||||
NFV: 'nfv'
|
||||
renames:
|
||||
all: 'devel'
|
||||
all_repos:
|
||||
- 'BaseOS'
|
||||
- 'AppStream'
|
||||
- 'PowerTools'
|
||||
- 'HighAvailability'
|
||||
- 'ResilientStorage'
|
||||
- 'RT'
|
||||
- 'NFV'
|
||||
- 'extras'
|
||||
- 'devel'
|
||||
- 'plus'
|
||||
structure:
|
||||
packages: 'os/Packages'
|
||||
repodata: 'os/repodata'
|
||||
iso_map:
|
||||
xorrisofs: False
|
||||
iso_level: False
|
||||
images:
|
||||
dvd:
|
||||
disc: True
|
||||
variant: 'AppStream'
|
||||
repos:
|
||||
- 'BaseOS'
|
||||
- 'AppStream'
|
||||
minimal:
|
||||
disc: True
|
||||
isoskip: True
|
||||
repos:
|
||||
- 'minimal'
|
||||
- 'BaseOS'
|
||||
variant: 'minimal'
|
||||
BaseOS:
|
||||
disc: False
|
||||
isoskip: True
|
||||
variant: 'BaseOS'
|
||||
repos:
|
||||
- 'BaseOS'
|
||||
- 'AppStream'
|
||||
lorax:
|
||||
repos:
|
||||
- 'BaseOS'
|
||||
- 'AppStream'
|
||||
variant: 'BaseOS'
|
||||
lorax_removes:
|
||||
- 'libreport-rhel-anaconda-bugzilla'
|
||||
required_pkgs:
|
||||
- 'lorax'
|
||||
- 'genisoimage'
|
||||
- 'isomd5sum'
|
||||
- 'lorax-templates-rhel'
|
||||
- 'lorax-templates-generic'
|
||||
- 'xorriso'
|
||||
cloudimages:
|
||||
images:
|
||||
EC2:
|
||||
format: raw
|
||||
GenericCloud:
|
||||
format: qcow2
|
||||
livemap:
|
||||
git_repo: 'https://git.resf.org/sig_core/kickstarts.git'
|
||||
branch: 'r8'
|
||||
ksentry:
|
||||
Workstation: rocky-live-workstation.ks
|
||||
Workstation-Lite: rocky-live-workstation-lite.ks
|
||||
XFCE: rocky-live-xfce.ks
|
||||
KDE: rocky-live-kde.ks
|
||||
allowed_arches:
|
||||
- x86_64
|
||||
required_pkgs:
|
||||
- 'lorax-lmc-novirt'
|
||||
- 'vim-minimal'
|
||||
- 'pykickstart'
|
||||
- 'git'
|
||||
variantmap:
|
||||
git_repo: 'https://git.rockylinux.org/rocky/pungi-rocky.git'
|
||||
branch: 'r8-beta'
|
||||
git_raw_path: 'https://git.rockylinux.org/rocky/pungi-rocky/-/raw/r8-beta/'
|
||||
repoclosure_map:
|
||||
arches:
|
||||
x86_64: '--forcearch=x86_64 --arch=x86_64 --arch=athlon --arch=i686 --arch=i586 --arch=i486 --arch=i386 --arch=noarch'
|
||||
aarch64: '--forcearch=aarch64 --arch=aarch64 --arch=noarch'
|
||||
ppc64le: '--forcearch=ppc64le --arch=ppc64le --arch=noarch'
|
||||
s390x: '--forcearch=s390x --arch=s390x --arch=noarch'
|
||||
repos:
|
||||
BaseOS: []
|
||||
AppStream:
|
||||
- BaseOS
|
||||
PowerTools:
|
||||
- BaseOS
|
||||
- AppStream
|
||||
HighAvailability:
|
||||
- BaseOS
|
||||
- AppStream
|
||||
ResilientStorage:
|
||||
- BaseOS
|
||||
- AppStream
|
||||
RT:
|
||||
- BaseOS
|
||||
- AppStream
|
||||
NFV:
|
||||
- BaseOS
|
||||
- AppStream
|
||||
extra_files:
|
||||
git_repo: 'https://git.rockylinux.org/staging/src/rocky-release.git'
|
||||
git_raw_path: 'https://git.rockylinux.org/staging/src/rocky-release/-/raw/r8/'
|
||||
branch: 'r8'
|
||||
gpg:
|
||||
stable: 'SOURCES/RPM-GPG-KEY-rockyofficial'
|
||||
testing: 'SOURCES/RPM-GPG-KEY-rockytesting'
|
||||
list:
|
||||
- 'SOURCES/COMMUNITY-CHARTER'
|
||||
- 'SOURCES/EULA'
|
||||
- 'SOURCES/LICENSE'
|
||||
- 'SOURCES/RPM-GPG-KEY-rockyofficial'
|
||||
- 'SOURCES/RPM-GPG-KEY-rockytesting'
|
||||
...
|
@ -1,21 +1,24 @@
|
||||
---
|
||||
'8':
|
||||
fullname: 'Rocky Linux 8'
|
||||
revision: '8.6'
|
||||
rclvl: 'RC2'
|
||||
revision: '8.7'
|
||||
rclvl: 'RC1'
|
||||
major: '8'
|
||||
minor: '6'
|
||||
minor: '7'
|
||||
profile: '8'
|
||||
bugurl: 'https://bugs.rockylinux.org'
|
||||
checksum: 'sha256'
|
||||
fedora_major: '20'
|
||||
allowed_arches:
|
||||
- x86_64
|
||||
- aarch64
|
||||
provide_multilib: False
|
||||
project_id: ''
|
||||
project_id: 'e9cfc87c-d2d2-42d5-a121-852101f1a966'
|
||||
repo_symlinks:
|
||||
devel: 'Devel'
|
||||
NFV: 'nfv'
|
||||
renames: {}
|
||||
renames:
|
||||
all: 'devel'
|
||||
all_repos:
|
||||
- 'BaseOS'
|
||||
- 'AppStream'
|
||||
@ -27,23 +30,6 @@
|
||||
- 'extras'
|
||||
- 'devel'
|
||||
- 'plus'
|
||||
- 'rockyrpi'
|
||||
no_comps_or_groups:
|
||||
- 'extras'
|
||||
- 'devel'
|
||||
- 'plus'
|
||||
- 'rockyrpi'
|
||||
comps_or_groups:
|
||||
- 'BaseOS'
|
||||
- 'AppStream'
|
||||
- 'PowerTools'
|
||||
- 'HighAvailability'
|
||||
- 'ResilientStorage'
|
||||
- 'RT'
|
||||
- 'NFV'
|
||||
has_modules:
|
||||
- 'AppStream'
|
||||
- 'PowerTools'
|
||||
structure:
|
||||
packages: 'os/Packages'
|
||||
repodata: 'os/repodata'
|
||||
@ -93,7 +79,7 @@
|
||||
format: qcow2
|
||||
livemap:
|
||||
git_repo: 'https://git.resf.org/sig_core/kickstarts.git'
|
||||
branch: 'r9'
|
||||
branch: 'r8'
|
||||
ksentry:
|
||||
Workstation: rocky-live-workstation.ks
|
||||
Workstation-Lite: rocky-live-workstation-lite.ks
|
||||
|
137
iso/empanadas/empanadas/configs/el8lh.yaml
Normal file
137
iso/empanadas/empanadas/configs/el8lh.yaml
Normal file
@ -0,0 +1,137 @@
|
||||
---
|
||||
'8':
|
||||
fullname: 'Rocky Linux 8'
|
||||
revision: '8.8'
|
||||
rclvl: 'RC1'
|
||||
major: '8'
|
||||
minor: '8'
|
||||
profile: '8'
|
||||
bugurl: 'https://bugs.rockylinux.org'
|
||||
checksum: 'sha256'
|
||||
fedora_major: '20'
|
||||
allowed_arches:
|
||||
- x86_64
|
||||
- aarch64
|
||||
provide_multilib: False
|
||||
project_id: '3b0e9ec7-0679-4176-b253-8528eb3255eb'
|
||||
repo_symlinks:
|
||||
devel: 'Devel'
|
||||
NFV: 'nfv'
|
||||
renames:
|
||||
all: 'devel'
|
||||
all_repos:
|
||||
- 'BaseOS'
|
||||
- 'AppStream'
|
||||
- 'PowerTools'
|
||||
- 'HighAvailability'
|
||||
- 'ResilientStorage'
|
||||
- 'RT'
|
||||
- 'NFV'
|
||||
- 'extras'
|
||||
- 'devel'
|
||||
- 'plus'
|
||||
structure:
|
||||
packages: 'os/Packages'
|
||||
repodata: 'os/repodata'
|
||||
iso_map:
|
||||
xorrisofs: False
|
||||
iso_level: False
|
||||
images:
|
||||
dvd:
|
||||
disc: True
|
||||
variant: 'AppStream'
|
||||
repos:
|
||||
- 'BaseOS'
|
||||
- 'AppStream'
|
||||
minimal:
|
||||
disc: True
|
||||
isoskip: True
|
||||
repos:
|
||||
- 'minimal'
|
||||
- 'BaseOS'
|
||||
variant: 'minimal'
|
||||
BaseOS:
|
||||
disc: False
|
||||
isoskip: True
|
||||
variant: 'BaseOS'
|
||||
repos:
|
||||
- 'BaseOS'
|
||||
- 'AppStream'
|
||||
lorax:
|
||||
repos:
|
||||
- 'BaseOS'
|
||||
- 'AppStream'
|
||||
variant: 'BaseOS'
|
||||
lorax_removes:
|
||||
- 'libreport-rhel-anaconda-bugzilla'
|
||||
required_pkgs:
|
||||
- 'lorax'
|
||||
- 'genisoimage'
|
||||
- 'isomd5sum'
|
||||
- 'lorax-templates-rhel'
|
||||
- 'lorax-templates-generic'
|
||||
- 'xorriso'
|
||||
cloudimages:
|
||||
images:
|
||||
EC2:
|
||||
format: raw
|
||||
GenericCloud:
|
||||
format: qcow2
|
||||
livemap:
|
||||
git_repo: 'https://git.resf.org/sig_core/kickstarts.git'
|
||||
branch: 'r8'
|
||||
ksentry:
|
||||
Workstation: rocky-live-workstation.ks
|
||||
Workstation-Lite: rocky-live-workstation-lite.ks
|
||||
XFCE: rocky-live-xfce.ks
|
||||
KDE: rocky-live-kde.ks
|
||||
allowed_arches:
|
||||
- x86_64
|
||||
required_pkgs:
|
||||
- 'lorax-lmc-novirt'
|
||||
- 'vim-minimal'
|
||||
- 'pykickstart'
|
||||
- 'git'
|
||||
variantmap:
|
||||
git_repo: 'https://git.rockylinux.org/rocky/pungi-rocky.git'
|
||||
branch: 'r8s'
|
||||
git_raw_path: 'https://git.rockylinux.org/rocky/pungi-rocky/-/raw/r8s/'
|
||||
repoclosure_map:
|
||||
arches:
|
||||
x86_64: '--forcearch=x86_64 --arch=x86_64 --arch=athlon --arch=i686 --arch=i586 --arch=i486 --arch=i386 --arch=noarch'
|
||||
aarch64: '--forcearch=aarch64 --arch=aarch64 --arch=noarch'
|
||||
ppc64le: '--forcearch=ppc64le --arch=ppc64le --arch=noarch'
|
||||
s390x: '--forcearch=s390x --arch=s390x --arch=noarch'
|
||||
repos:
|
||||
BaseOS: []
|
||||
AppStream:
|
||||
- BaseOS
|
||||
PowerTools:
|
||||
- BaseOS
|
||||
- AppStream
|
||||
HighAvailability:
|
||||
- BaseOS
|
||||
- AppStream
|
||||
ResilientStorage:
|
||||
- BaseOS
|
||||
- AppStream
|
||||
RT:
|
||||
- BaseOS
|
||||
- AppStream
|
||||
NFV:
|
||||
- BaseOS
|
||||
- AppStream
|
||||
extra_files:
|
||||
git_repo: 'https://git.rockylinux.org/staging/src/rocky-release.git'
|
||||
git_raw_path: 'https://git.rockylinux.org/staging/src/rocky-release/-/raw/r8/'
|
||||
branch: 'r8'
|
||||
gpg:
|
||||
stable: 'SOURCES/RPM-GPG-KEY-rockyofficial'
|
||||
testing: 'SOURCES/RPM-GPG-KEY-rockytesting'
|
||||
list:
|
||||
- 'SOURCES/COMMUNITY-CHARTER'
|
||||
- 'SOURCES/EULA'
|
||||
- 'SOURCES/LICENSE'
|
||||
- 'SOURCES/RPM-GPG-KEY-rockyofficial'
|
||||
- 'SOURCES/RPM-GPG-KEY-rockytesting'
|
||||
...
|
@ -8,13 +8,14 @@
|
||||
profile: '9-beta'
|
||||
bugurl: 'https://bugs.rockylinux.org'
|
||||
checksum: 'sha256'
|
||||
fedora_major: '20'
|
||||
allowed_arches:
|
||||
- x86_64
|
||||
- aarch64
|
||||
- ppc64le
|
||||
- s390x
|
||||
provide_multilib: True
|
||||
project_id: ''
|
||||
project_id: '0048077b-1573-4cb7-8ba7-cce823857ba5'
|
||||
repo_symlinks:
|
||||
NFV: 'nfv'
|
||||
renames:
|
||||
@ -87,8 +88,10 @@
|
||||
Workstation-Lite: rocky-live-workstation-lite.ks
|
||||
XFCE: rocky-live-xfce.ks
|
||||
KDE: rocky-live-kde.ks
|
||||
MATE: rocky-live-mate.ks
|
||||
allowed_arches:
|
||||
- x86_64
|
||||
- aarch64
|
||||
required_pkgs:
|
||||
- 'lorax-lmc-novirt'
|
||||
- 'vim-minimal'
|
||||
|
@ -8,6 +8,7 @@
|
||||
profile: '9'
|
||||
bugurl: 'https://bugs.rockylinux.org'
|
||||
checksum: 'sha256'
|
||||
fedora_major: '20'
|
||||
allowed_arches:
|
||||
- x86_64
|
||||
- aarch64
|
||||
@ -88,8 +89,10 @@
|
||||
Workstation-Lite: rocky-live-workstation-lite.ks
|
||||
XFCE: rocky-live-xfce.ks
|
||||
KDE: rocky-live-kde.ks
|
||||
MATE: rocky-live-mate.ks
|
||||
allowed_arches:
|
||||
- x86_64
|
||||
- aarch64
|
||||
required_pkgs:
|
||||
- 'lorax-lmc-novirt'
|
||||
- 'vim-minimal'
|
||||
|
58
iso/empanadas/empanadas/configs/el9alt.yaml
Normal file
58
iso/empanadas/empanadas/configs/el9alt.yaml
Normal file
@ -0,0 +1,58 @@
|
||||
# This is specifically for secondary/tertiary architectures
|
||||
---
|
||||
'9altarch':
|
||||
fullname: 'Rocky Linux 9.0'
|
||||
revision: '9.0'
|
||||
rclvl: 'RC2'
|
||||
major: '9'
|
||||
minor: '0'
|
||||
profile: '9'
|
||||
bugurl: 'https://bugs.rockylinux.org'
|
||||
checksum: 'sha256'
|
||||
fedora_major: '20'
|
||||
allowed_arches:
|
||||
- armv7hl
|
||||
- riscv64
|
||||
provide_multilib: False
|
||||
project_id: ''
|
||||
renames:
|
||||
all: 'devel'
|
||||
all_repos:
|
||||
- 'all'
|
||||
- 'BaseOS'
|
||||
- 'AppStream'
|
||||
- 'CRB'
|
||||
- 'extras'
|
||||
- 'plus'
|
||||
structure:
|
||||
packages: 'os/Packages'
|
||||
repodata: 'os/repodata'
|
||||
iso_map: {}
|
||||
livemap: {}
|
||||
repoclosure_map:
|
||||
arches:
|
||||
armv7hl: '--forcearch=armv7hl --arch=noarch'
|
||||
riscv64: '--forcearch=riscv64 --arch=noarch'
|
||||
repos:
|
||||
devel: []
|
||||
BaseOS: []
|
||||
AppStream:
|
||||
- BaseOS
|
||||
CRB:
|
||||
- BaseOS
|
||||
- AppStream
|
||||
extra_files:
|
||||
git_repo: 'https://git.rockylinux.org/staging/src/rocky-release.git'
|
||||
git_raw_path: 'https://git.rockylinux.org/staging/src/rocky-release/-/raw/r9/'
|
||||
branch: 'r9'
|
||||
gpg:
|
||||
stable: 'SOURCES/RPM-GPG-KEY-Rocky-9'
|
||||
testing: 'SOURCES/RPM-GPG-KEY-Rocky-9-Testing'
|
||||
list:
|
||||
- 'SOURCES/Contributors'
|
||||
- 'SOURCES/COMMUNITY-CHARTER'
|
||||
- 'SOURCES/EULA'
|
||||
- 'SOURCES/LICENSE'
|
||||
- 'SOURCES/RPM-GPG-KEY-Rocky-9'
|
||||
- 'SOURCES/RPM-GPG-KEY-Rocky-9-Testing'
|
||||
...
|
@ -1,20 +1,21 @@
|
||||
---
|
||||
'9-lookahead':
|
||||
fullname: 'Rocky Linux 9.1'
|
||||
revision: '9.1'
|
||||
fullname: 'Rocky Linux 9.2'
|
||||
revision: '9.2'
|
||||
rclvl: 'LH1'
|
||||
major: '9'
|
||||
minor: '1'
|
||||
minor: '2'
|
||||
profile: '9-lookahead'
|
||||
bugurl: 'https://bugs.rockylinux.org'
|
||||
checksum: 'sha256'
|
||||
fedora_major: '20'
|
||||
allowed_arches:
|
||||
- x86_64
|
||||
- aarch64
|
||||
- ppc64le
|
||||
- s390x
|
||||
provide_multilib: True
|
||||
project_id: ''
|
||||
project_id: '6794b5a8-290b-4d0d-ad5a-47164329cbb0'
|
||||
repo_symlinks:
|
||||
NFV: 'nfv'
|
||||
renames:
|
||||
@ -87,8 +88,10 @@
|
||||
Workstation-Lite: rocky-live-workstation-lite.ks
|
||||
XFCE: rocky-live-xfce.ks
|
||||
KDE: rocky-live-kde.ks
|
||||
MATE: rocky-live-mate.ks
|
||||
allowed_arches:
|
||||
- x86_64
|
||||
- aarch64
|
||||
required_pkgs:
|
||||
- 'lorax-lmc-novirt'
|
||||
- 'vim-minimal'
|
||||
|
@ -88,6 +88,7 @@
|
||||
KDE: rocky-live-kde.ks
|
||||
allowed_arches:
|
||||
- x86_64
|
||||
- aarch64
|
||||
required_pkgs:
|
||||
- 'lorax-lmc-novirt'
|
||||
- 'vim-minimal'
|
||||
|
@ -17,6 +17,8 @@ parser.add_argument('--logger', type=str)
|
||||
parser.add_argument('--extra-iso', type=str, help="Granular choice in which iso is built")
|
||||
parser.add_argument('--extra-iso-mode', type=str, default='local')
|
||||
parser.add_argument('--hashed', action='store_true')
|
||||
parser.add_argument('--updated-image', action='store_true')
|
||||
parser.add_argument('--image-increment',type=str, default='0')
|
||||
results = parser.parse_args()
|
||||
rlvars = rldict[results.release]
|
||||
major = rlvars['major']
|
||||
@ -32,7 +34,9 @@ a = IsoBuild(
|
||||
extra_iso_mode=results.extra_iso_mode,
|
||||
compose_dir_is_here=results.local_compose,
|
||||
hashed=results.hashed,
|
||||
logger=results.logger
|
||||
logger=results.logger,
|
||||
updated_image=results.updated_image,
|
||||
image_increment=results.image_increment
|
||||
)
|
||||
|
||||
def run():
|
||||
|
@ -14,7 +14,8 @@ parser = argparse.ArgumentParser(description="Peridot Sync and Compose")
|
||||
|
||||
# All of our options
|
||||
parser.add_argument('--release', type=str, help="Major Release Version or major-type (eg 9-beta)", required=True)
|
||||
parser.add_argument('--symlink', action='store_true', help="symlink")
|
||||
parser.add_argument('--sig', type=str, help="SIG Name if applicable")
|
||||
parser.add_argument('--symlink', action='store_true', help="symlink to latest")
|
||||
parser.add_argument('--logger', type=str)
|
||||
|
||||
# Parse them
|
||||
@ -48,6 +49,9 @@ def run():
|
||||
profile = rlvars['profile']
|
||||
logger = log
|
||||
|
||||
if results.sig is not None:
|
||||
shortname = 'SIG-' + results.sig
|
||||
|
||||
generated_dir = Shared.generate_compose_dirs(
|
||||
compose_base,
|
||||
shortname,
|
||||
|
38
iso/empanadas/empanadas/scripts/peridot_repoclosure.py
Normal file
38
iso/empanadas/empanadas/scripts/peridot_repoclosure.py
Normal file
@ -0,0 +1,38 @@
|
||||
# This is for doing repoclosures upstream
|
||||
|
||||
import argparse
|
||||
|
||||
from empanadas.common import *
|
||||
from empanadas.util import Checks
|
||||
from empanadas.util import RepoSync
|
||||
|
||||
# Start up the parser baby
|
||||
parser = argparse.ArgumentParser(description="Peridot Upstream Repoclosure")
|
||||
|
||||
# All of our options
|
||||
parser.add_argument('--release', type=str, help="Major Release Version or major-type (eg 9-beta)", required=True)
|
||||
parser.add_argument('--simple', action='store_false')
|
||||
parser.add_argument('--enable-repo-gpg-check', action='store_true')
|
||||
parser.add_argument('--hashed', action='store_true')
|
||||
parser.add_argument('--logger', type=str)
|
||||
|
||||
# Parse them
|
||||
results = parser.parse_args()
|
||||
rlvars = rldict[results.release]
|
||||
major = rlvars['major']
|
||||
|
||||
r = Checks(rlvars, config['arch'])
|
||||
r.check_valid_arch()
|
||||
|
||||
a = RepoSync(
|
||||
rlvars,
|
||||
config,
|
||||
major=major,
|
||||
hashed=results.hashed,
|
||||
parallel=results.simple,
|
||||
repo_gpg_check=results.enable_repo_gpg_check,
|
||||
logger=results.logger,
|
||||
)
|
||||
|
||||
def run():
|
||||
a.run_upstream_repoclosure()
|
@ -9,7 +9,7 @@ from empanadas.util import IsoBuild
|
||||
parser = argparse.ArgumentParser(description="ISO Artifact Builder")
|
||||
|
||||
parser.add_argument('--release', type=str, help="Major Release Version", required=True)
|
||||
parser.add_argument('--s3', action='store_true', help="Release Candidate")
|
||||
parser.add_argument('--s3', action='store_true', help="S3")
|
||||
parser.add_argument('--arch', type=str, help="Architecture")
|
||||
parser.add_argument('--local-compose', action='store_true', help="Compose Directory is Here")
|
||||
parser.add_argument('--force-download', action='store_true', help="Force a download")
|
||||
|
@ -9,7 +9,7 @@ from empanadas.util import IsoBuild
|
||||
parser = argparse.ArgumentParser(description="ISO Artifact Builder")
|
||||
|
||||
parser.add_argument('--release', type=str, help="Major Release Version", required=True)
|
||||
parser.add_argument('--s3', action='store_true', help="Release Candidate")
|
||||
parser.add_argument('--s3', action='store_true', help="S3")
|
||||
parser.add_argument('--rc', action='store_true', help="Release Candidate")
|
||||
parser.add_argument('--arch', type=str, help="Architecture")
|
||||
parser.add_argument('--local-compose', action='store_true', help="Compose Directory is Here")
|
||||
|
@ -26,6 +26,9 @@ parser.add_argument('--refresh-treeinfo', action='store_true')
|
||||
# I am aware this is confusing, I want podman to be the default option
|
||||
parser.add_argument('--simple', action='store_false')
|
||||
parser.add_argument('--logger', type=str)
|
||||
parser.add_argument('--disable-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
|
||||
results = parser.parse_args()
|
||||
@ -54,6 +57,9 @@ a = RepoSync(
|
||||
logger=results.logger,
|
||||
refresh_extra_files=results.refresh_extra_files,
|
||||
refresh_treeinfo=results.refresh_treeinfo,
|
||||
gpg_check=results.disable_gpg_check,
|
||||
repo_gpg_check=results.disable_repo_gpg_check,
|
||||
reposync_clean_old=results.clean_old_packages,
|
||||
)
|
||||
|
||||
def run():
|
||||
|
@ -15,7 +15,7 @@ parser = argparse.ArgumentParser(description="Peridot Sync and Compose")
|
||||
# All of our options
|
||||
parser.add_argument('--release', type=str, help="Major Release Version", required=True)
|
||||
parser.add_argument('--repo', type=str, help="Repository name")
|
||||
parser.add_argument('--sig', type=str, help="SIG name")
|
||||
parser.add_argument('--sig', type=str, help="SIG name", required=True)
|
||||
parser.add_argument('--arch', type=str, help="Architecture")
|
||||
parser.add_argument('--ignore-debug', action='store_true')
|
||||
parser.add_argument('--ignore-source', action='store_true')
|
||||
@ -25,9 +25,13 @@ parser.add_argument('--hashed', action='store_true')
|
||||
parser.add_argument('--dry-run', action='store_true')
|
||||
parser.add_argument('--full-run', action='store_true')
|
||||
parser.add_argument('--no-fail', action='store_true')
|
||||
parser.add_argument('--refresh-extra-files', action='store_true')
|
||||
# I am aware this is confusing, I want podman to be the default option
|
||||
parser.add_argument('--simple', action='store_false')
|
||||
parser.add_argument('--logger', type=str)
|
||||
parser.add_argument('--disable-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
|
||||
results = parser.parse_args()
|
||||
@ -46,6 +50,7 @@ a = SigRepoSync(
|
||||
repo=results.repo,
|
||||
arch=results.arch,
|
||||
ignore_source=results.ignore_source,
|
||||
ignore_debug=results.ignore_debug,
|
||||
repoclosure=results.repoclosure,
|
||||
skip_all=results.skip_all,
|
||||
hashed=results.hashed,
|
||||
@ -53,7 +58,11 @@ a = SigRepoSync(
|
||||
dryrun=results.dry_run,
|
||||
fullrun=results.full_run,
|
||||
nofail=results.no_fail,
|
||||
logger=results.logger
|
||||
refresh_extra_files=results.refresh_extra_files,
|
||||
logger=results.logger,
|
||||
gpg_check=results.disable_gpg_check,
|
||||
repo_gpg_check=results.disable_repo_gpg_check,
|
||||
reposync_clean_old=results.clean_old_packages,
|
||||
)
|
||||
|
||||
|
||||
|
@ -1,17 +1,43 @@
|
||||
---
|
||||
altarch:
|
||||
'8':
|
||||
rockyrpi:
|
||||
allowed_arches:
|
||||
- aarch64
|
||||
project_id: ''
|
||||
additional_dirs:
|
||||
- 'images'
|
||||
profile: 'altarch'
|
||||
project_id: 'a1aac235-dd66-4d5b-8ff0-87467732f322'
|
||||
repo:
|
||||
altarch-common:
|
||||
allowed_arches:
|
||||
- aarch64
|
||||
altarch-rockyrpi:
|
||||
allowed_arches:
|
||||
- aarch64
|
||||
additional_dirs:
|
||||
- 'images'
|
||||
extra_files:
|
||||
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/'
|
||||
branch: 'r8'
|
||||
gpg:
|
||||
stable: 'SOURCES/RPM-GPG-KEY-Rocky-SIG-AltArch'
|
||||
list:
|
||||
- 'SOURCES/RPM-GPG-KEY-Rocky-SIG-AltArch'
|
||||
'9':
|
||||
rockyrpi:
|
||||
allowed_arches:
|
||||
- aarch64
|
||||
project_id: ''
|
||||
additional_dirs:
|
||||
- 'images'
|
||||
profile: 'altarch'
|
||||
project_id: '6047887d-a395-4bc7-a0bd-fc1873b5d13d'
|
||||
repo:
|
||||
altarch-common:
|
||||
allowed_arches:
|
||||
- aarch64
|
||||
altarch-rockyrpi:
|
||||
allowed_arches:
|
||||
- aarch64
|
||||
additional_dirs:
|
||||
- 'images'
|
||||
extra_files:
|
||||
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/'
|
||||
branch: 'r9'
|
||||
gpg:
|
||||
stable: 'SOURCES/RPM-GPG-KEY-Rocky-SIG-AltArch'
|
||||
list:
|
||||
- 'SOURCES/RPM-GPG-KEY-Rocky-SIG-AltArch'
|
||||
...
|
||||
|
@ -2,16 +2,17 @@
|
||||
cloud:
|
||||
'8':
|
||||
profile: 'cloud'
|
||||
cloud-kernel:
|
||||
project_id: 'f91da90d-5bdb-4cf2-80ea-e07f8dae5a5c'
|
||||
allowed_arches:
|
||||
- aarch64
|
||||
- x86_64
|
||||
cloud-common:
|
||||
allowed_arches:
|
||||
- aarch64
|
||||
- x86_64
|
||||
project_id: 'f91da90d-5bdb-4cf2-80ea-e07f8dae5a5c'
|
||||
project_id: 'f91da90d-5bdb-4cf2-80ea-e07f8dae5a5c'
|
||||
addtional_dirs: []
|
||||
repo:
|
||||
cloud-kernel:
|
||||
allowed_arches:
|
||||
- aarch64
|
||||
- x86_64
|
||||
cloud-common:
|
||||
allowed_arches:
|
||||
- aarch64
|
||||
- x86_64
|
||||
extra_files:
|
||||
git_repo: 'https://git.rockylinux.org/staging/src/rocky-release-cloud.git'
|
||||
git_raw_path: 'https://git.rockylinux.org/staging/src/rocky-release-cloud/-/raw/r8/'
|
||||
@ -21,18 +22,28 @@ cloud:
|
||||
list:
|
||||
- 'SOURCES/RPM-GPG-KEY-Rocky-SIG-Cloud'
|
||||
'9':
|
||||
cloud-kernel:
|
||||
project_id: ''
|
||||
allowed_arches:
|
||||
- aarch64
|
||||
- x86_64
|
||||
- ppc64le
|
||||
- s390x
|
||||
cloud-common:
|
||||
project_id: ''
|
||||
allowed_arches:
|
||||
- aarch64
|
||||
- x86_64
|
||||
- ppc64le
|
||||
- s390x
|
||||
profile: 'cloud'
|
||||
project_id: '15016370-1410-4459-a1a2-a1576041fd19'
|
||||
addtional_dirs: []
|
||||
repo:
|
||||
cloud-kernel:
|
||||
allowed_arches:
|
||||
- aarch64
|
||||
- x86_64
|
||||
- ppc64le
|
||||
- s390x
|
||||
cloud-common:
|
||||
allowed_arches:
|
||||
- aarch64
|
||||
- x86_64
|
||||
- ppc64le
|
||||
- s390x
|
||||
extra_files:
|
||||
git_repo: 'https://git.rockylinux.org/staging/src/rocky-release-cloud.git'
|
||||
git_raw_path: 'https://git.rockylinux.org/staging/src/rocky-release-cloud/-/raw/r9/'
|
||||
branch: 'r9'
|
||||
gpg:
|
||||
stable: 'SOURCES/RPM-GPG-KEY-Rocky-SIG-Cloud'
|
||||
list:
|
||||
- 'SOURCES/RPM-GPG-KEY-Rocky-SIG-Cloud'
|
||||
...
|
||||
|
@ -1,13 +1,49 @@
|
||||
---
|
||||
core:
|
||||
'8':
|
||||
core-common:
|
||||
project_id: ''
|
||||
core-infra:
|
||||
project_id: ''
|
||||
profile: 'core'
|
||||
project_id: ''
|
||||
addtional_dirs: []
|
||||
repo:
|
||||
core-common:
|
||||
allowed_arches:
|
||||
- x86_64
|
||||
- aarch64
|
||||
core-infra:
|
||||
allowed_arches:
|
||||
- x86_64
|
||||
- aarch64
|
||||
extra_files:
|
||||
git_repo: 'https://git.rockylinux.org/staging/src/rocky-release-core.git'
|
||||
git_raw_path: 'https://git.rockylinux.org/staging/src/rocky-release-core/-/raw/r8/'
|
||||
branch: 'r8'
|
||||
gpg:
|
||||
stable: 'SOURCES/RPM-GPG-KEY-Rocky-SIG-Core'
|
||||
list:
|
||||
- 'SOURCES/RPM-GPG-KEY-Rocky-SIG-Core'
|
||||
'9':
|
||||
core-common:
|
||||
project_id: ''
|
||||
core-infra:
|
||||
project_id: ''
|
||||
profile: 'core'
|
||||
project_id: ''
|
||||
addtional_dirs: []
|
||||
repo:
|
||||
core-common:
|
||||
allowed_arches:
|
||||
- x86_64
|
||||
- aarch64
|
||||
- ppc64le
|
||||
- s390x
|
||||
core-infra:
|
||||
allowed_arches:
|
||||
- x86_64
|
||||
- aarch64
|
||||
- ppc64le
|
||||
- s390x
|
||||
extra_files:
|
||||
git_repo: 'https://git.rockylinux.org/staging/src/rocky-release-core.git'
|
||||
git_raw_path: 'https://git.rockylinux.org/staging/src/rocky-release-core/-/raw/r9/'
|
||||
branch: 'r9'
|
||||
gpg:
|
||||
stable: 'SOURCES/RPM-GPG-KEY-Rocky-SIG-Core'
|
||||
list:
|
||||
- 'SOURCES/RPM-GPG-KEY-Rocky-SIG-Core'
|
||||
...
|
||||
|
37
iso/empanadas/empanadas/sig/desktop.yaml
Normal file
37
iso/empanadas/empanadas/sig/desktop.yaml
Normal file
@ -0,0 +1,37 @@
|
||||
---
|
||||
desktop:
|
||||
'8':
|
||||
profile: 'desktop'
|
||||
project_id: '8b3c9b53-0633-47bd-98a3-1ca3ec141278'
|
||||
addtional_dirs: []
|
||||
repo:
|
||||
desktop-common:
|
||||
allowed_arches:
|
||||
- x86_64
|
||||
- aarch64
|
||||
extra_files:
|
||||
git_repo: 'https://git.rockylinux.org/staging/src/rocky-release-desktop.git'
|
||||
git_raw_path: 'https://git.rockylinux.org/staging/src/rocky-release-desktop/-/raw/r8/'
|
||||
branch: 'r8'
|
||||
gpg:
|
||||
stable: 'SOURCES/RPM-GPG-KEY-Rocky-SIG-Desktop'
|
||||
list:
|
||||
- 'SOURCES/RPM-GPG-KEY-Rocky-SIG-Desktop'
|
||||
'9':
|
||||
profile: 'desktop'
|
||||
project_id: 'b0460c25-22cf-496c-a3a3-067b9a2af14a'
|
||||
addtional_dirs: []
|
||||
repo:
|
||||
desktop-common:
|
||||
allowed_arches:
|
||||
- x86_64
|
||||
- aarch64
|
||||
extra_files:
|
||||
git_repo: 'https://git.rockylinux.org/staging/src/rocky-release-desktop.git'
|
||||
git_raw_path: 'https://git.rockylinux.org/staging/src/rocky-release-desktop/-/raw/r9/'
|
||||
branch: 'r9'
|
||||
gpg:
|
||||
stable: 'SOURCES/RPM-GPG-KEY-Rocky-SIG-Desktop'
|
||||
list:
|
||||
- 'SOURCES/RPM-GPG-KEY-Rocky-SIG-Desktop'
|
||||
...
|
38
iso/empanadas/empanadas/sig/virt.yaml
Normal file
38
iso/empanadas/empanadas/sig/virt.yaml
Normal file
@ -0,0 +1,38 @@
|
||||
---
|
||||
virt:
|
||||
'8':
|
||||
profile: 'virt'
|
||||
project_id: 'd911867a-658e-4f41-8343-5ceac6c41f67'
|
||||
addtional_dirs: []
|
||||
repo:
|
||||
virt-common:
|
||||
allowed_arches:
|
||||
- x86_64
|
||||
- aarch64
|
||||
extra_files:
|
||||
git_repo: 'https://git.rockylinux.org/staging/src/rocky-release-virt.git'
|
||||
git_raw_path: 'https://git.rockylinux.org/staging/src/rocky-release-virt/-/raw/r8/'
|
||||
branch: 'r8'
|
||||
gpg:
|
||||
stable: 'SOURCES/RPM-GPG-KEY-Rocky-SIG-Virt'
|
||||
list:
|
||||
- 'SOURCES/RPM-GPG-KEY-Rocky-SIG-Virt'
|
||||
'9':
|
||||
profile: 'virt'
|
||||
project_id: '925ceece-47ce-4f51-90f7-ff8689e4fe5e'
|
||||
addtional_dirs: []
|
||||
repo:
|
||||
virt-common:
|
||||
allowed_arches:
|
||||
- x86_64
|
||||
- aarch64
|
||||
- ppc64le
|
||||
extra_files:
|
||||
git_repo: 'https://git.rockylinux.org/staging/src/rocky-release-virt.git'
|
||||
git_raw_path: 'https://git.rockylinux.org/staging/src/rocky-release-virt/-/raw/r9/'
|
||||
branch: 'r9'
|
||||
gpg:
|
||||
stable: 'SOURCES/RPM-GPG-KEY-Rocky-SIG-Virt'
|
||||
list:
|
||||
- 'SOURCES/RPM-GPG-KEY-Rocky-SIG-Virt'
|
||||
...
|
41
iso/empanadas/empanadas/templates/ISOREADME.tmpl
Normal file
41
iso/empanadas/empanadas/templates/ISOREADME.tmpl
Normal file
@ -0,0 +1,41 @@
|
||||
This directory contains ISO's for the {{ arch }} architecture. You will see
|
||||
multiple types of ISO's, including accompanying manifests and CHECKSUM files
|
||||
that match the given ISO. You will see the following formats:
|
||||
|
||||
* Rocky-X.Y-ARCH-TYPE (ISO File)
|
||||
* Rocky-X.Y-DATE-ARCH-TYPE (ISO File)
|
||||
* Rocky-ARCH-TYPE (Symlink)
|
||||
|
||||
X will be the major release.
|
||||
Y will be the minor release.
|
||||
ARCH is the given architecture.
|
||||
DATE will be the date the ISO was built (if applicable)
|
||||
TYPE will be the type of ISO (boot, dvd, minimal)
|
||||
|
||||
The first format is the most common and is the day-of-release ISO.
|
||||
|
||||
The second format is in the case of rebuilt ISO's, in the case of addressing
|
||||
a bug or providing an updated image (eg for a newer kernel, a newer secure
|
||||
boot shim, and so on).
|
||||
|
||||
The third format in the list is a symlink to the "latest" ISO. Currently, this
|
||||
is not advertised on the main site, but there may be potential for this in
|
||||
the future as a value add.
|
||||
|
||||
This is "unversioned" ISO symlink is for these cases:
|
||||
|
||||
* A pre-determined download location for users/mirrors/service providers who
|
||||
want an always available and deterministic download location, which can be
|
||||
easier to script
|
||||
|
||||
* osinfo database / libvirt use where if a user selects Rocky Linux X, it
|
||||
should be aware of and be able to download from that location. This should
|
||||
be fully supported in Rocky Linux 8.7 and 9.1, and future Fedora versions.
|
||||
|
||||
If you have any questions, please reach out to us:
|
||||
|
||||
* https://chat.rockylinux.org ~Development, ~Infrastructure, ~General
|
||||
* https://forums.rockylinux.org
|
||||
* https://lists.resf.org/mailman3/lists/rocky.lists.resf.org/ - Rocky General Mail List
|
||||
* https://lists.resf.org/mailman3/lists/rocky-mirror.lists.resf.org/ - Mirror Mail List
|
||||
|
@ -11,6 +11,15 @@ metadata provides.
|
||||
|
||||
# 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 ##
|
||||
|
||||
CHECKSUM Validation: https://github.com/rocky-linux/checksums
|
||||
|
@ -23,3 +23,9 @@ fi
|
||||
|
||||
{{ make_manifest }}
|
||||
|
||||
{% if extra_iso_mode == "podman" %}
|
||||
# symlink to unversioned image name
|
||||
ln -sf {{ isoname }} {{ generic_isoname }}
|
||||
ln -sf {{ isoname }}.manifest {{ generic_isoname }}.manifest
|
||||
|
||||
{% endif %}
|
||||
|
@ -53,6 +53,8 @@ elif [ -f "/usr/bin/isoinfo" ]; then
|
||||
grep -v '/TRANS.TBL$' | sort >> lorax/images/boot.iso.manifest
|
||||
fi
|
||||
|
||||
find lorax -perm 700 -exec chmod 755 {} \;
|
||||
|
||||
tar czf "${LORAX_TAR}" lorax "${LOGFILE}"
|
||||
|
||||
tar_ret_val=$?
|
||||
|
@ -18,9 +18,9 @@ cd /builddir
|
||||
|
||||
{{ git_clone }}
|
||||
if [ -d "/builddir/ks/live/{{ major }}/peridot" ]; then
|
||||
pushd /builddir/ks/live/{{ major }}/peridot || { echo "Could not change directory"; exit 1; }
|
||||
pushd /builddir/ks/live/{{ major }}/{{ arch }}/peridot || { echo "Could not change directory"; exit 1; }
|
||||
else
|
||||
pushd /builddir/ks/live/{{ major }}/staging || { echo "Could not change directory"; exit 1; }
|
||||
pushd /builddir/ks/live/{{ major }}/{{ arch }}/stage || { echo "Could not change directory"; exit 1; }
|
||||
fi
|
||||
ksflatten -c {{ ks_file }} -o /builddir/ks.cfg
|
||||
if [ $? -ne 0 ]; then
|
||||
|
21
iso/empanadas/empanadas/templates/icicle/tdl-new.xml.tmpl
Normal file
21
iso/empanadas/empanadas/templates/icicle/tdl-new.xml.tmpl
Normal file
@ -0,0 +1,21 @@
|
||||
<template>
|
||||
<name>Rocky-{{major}}-{{type}}-{{version_variant}}.{{iso8601date}}.{{release}}.{{architecture}}</name>
|
||||
<os>
|
||||
<name>Fedora</name>
|
||||
<version>{{fedora_major}}</version>
|
||||
<arch>{{architecture}}</arch>
|
||||
<install type='url'>
|
||||
<url>https://download.rockylinux.org/stg/rocky/{{major}}/BaseOS/{{architecture}}/{{installdir}}</url>
|
||||
</install>
|
||||
<icicle>
|
||||
<extra_command>rpm -qa --qf '%{NAME},%{VERSION},%{RELEASE},%{ARCH},%{EPOCH},%{SIZE},%{SIGMD5},%{BUILDTIME}\n'</extra_command>
|
||||
</icicle>
|
||||
<kernelparam>console=tty0 inst.usefbx</kernelparam>
|
||||
</os>
|
||||
<description>Rocky-{{major}}-{{type}}-{{version_variant}}.{{iso8601date}}.{{release}}.{{architecture}} Generated on {{utcnow}}</description>
|
||||
<disk>
|
||||
<size>{{size}}</size>
|
||||
</disk>
|
||||
</template>
|
||||
|
||||
|
@ -10,7 +10,6 @@
|
||||
<icicle>
|
||||
<extra_command>rpm -qa --qf '%{NAME},%{VERSION},%{RELEASE},%{ARCH},%{EPOCH},%{SIZE},%{SIGMD5},%{BUILDTIME}\n'</extra_command>
|
||||
</icicle>
|
||||
<kernelparam>console=tty0 inst.usefbx</kernelparam>
|
||||
</os>
|
||||
<description>Rocky-{{major}}-{{type}}-{{version_variant}}.{{iso8601date}}.{{release}}.{{architecture}} Generated on {{utcnow}}</description>
|
||||
<disk>
|
||||
|
@ -3,24 +3,24 @@
|
||||
name={{repo.name}}
|
||||
baseurl={{ repo.baseurl }}
|
||||
enabled=1
|
||||
gpgcheck=1
|
||||
repo_gpgcheck=1
|
||||
gpgcheck={{ gpg_check }}
|
||||
repo_gpgcheck={{ repo_gpg_check }}
|
||||
gpgkey={{ repo.gpgkey }}
|
||||
|
||||
[{{ repo.name }}-debug]
|
||||
name={{repo.name}}
|
||||
baseurl={{ repo.baseurl }}-debug
|
||||
enabled=1
|
||||
gpgcheck=1
|
||||
repo_gpgcheck=1
|
||||
gpgcheck={{ gpg_check }}
|
||||
repo_gpgcheck={{ repo_gpg_check }}
|
||||
gpgkey={{ repo.gpgkey }}
|
||||
|
||||
[{{ repo.name }}-source]
|
||||
name={{repo.name}}
|
||||
baseurl={{ repo.srcbaseurl }}
|
||||
enabled=1
|
||||
gpgcheck=1
|
||||
repo_gpgcheck=1
|
||||
gpgcheck={{ gpg_check }}
|
||||
repo_gpgcheck={{ repo_gpg_check }}
|
||||
gpgkey={{ repo.gpgkey }}
|
||||
|
||||
{% endfor %}
|
||||
|
@ -3,6 +3,7 @@ set -o pipefail
|
||||
{{ import_gpg_cmd }} | tee -a {{ sync_log }}
|
||||
{{ dnf_plugin_cmd }} | tee -a {{ sync_log }}
|
||||
sed -i 's/enabled=1/enabled=0/g' /etc/yum.repos.d/*.repo
|
||||
{{ metadata_cmd }} | tee -a {{ sync_log }}
|
||||
{{ sync_cmd }} | tee -a {{ sync_log }}
|
||||
|
||||
# Yes this is a bit hacky. Can't think of a better way to do this.
|
||||
@ -18,8 +19,13 @@ if [ "$ret_val" -eq 0 ]; then
|
||||
echo "SOME PACKAGES DID NOT DOWNLOAD" | tee -a {{ sync_log }}
|
||||
exit 1
|
||||
else
|
||||
{% if deploy_extra_files %}
|
||||
pushd {{ download_path }}
|
||||
curl -RO {{ gpg_key_url }}
|
||||
popd
|
||||
{% endif %}
|
||||
exit 0
|
||||
fi
|
||||
fi
|
||||
|
||||
# {{ check_cmd }} | tee -a {{ sync_log }}
|
||||
# {{ check_cmd }} | tee -a {{ sync_log }}
|
||||
|
@ -4,6 +4,7 @@ set -o pipefail
|
||||
{{ arch_force_cp }} | tee -a {{ sync_log }}
|
||||
{{ dnf_plugin_cmd }} | tee -a {{ sync_log }}
|
||||
sed -i 's/enabled=1/enabled=0/g' /etc/yum.repos.d/*.repo
|
||||
{{ metadata_cmd }} | tee -a {{ sync_log }}
|
||||
{{ sync_cmd }} | tee -a {{ sync_log }}
|
||||
|
||||
# Yes this is a bit hacky. Can't think of a better way to do this.
|
||||
@ -25,6 +26,11 @@ if [ "$ret_val" -eq 0 ]; then
|
||||
# echo "Repository is empty." | tee -a {{ sync_log }}
|
||||
# rm -rf {{ download_path }}
|
||||
#fi
|
||||
{%- if deploy_extra_files %}
|
||||
pushd {{ download_path }}
|
||||
curl -RO {{ gpg_key_url }}
|
||||
popd
|
||||
{% endif %}
|
||||
exit 0
|
||||
fi
|
||||
fi
|
||||
|
@ -1,6 +1,10 @@
|
||||
-indev {{ boot_iso }}
|
||||
-outdev {{ isoname }}
|
||||
-boot_image any replay
|
||||
-joliet on
|
||||
-system_id {{ 'PPC' if arch == 'ppc64le' else 'LINUX' }}
|
||||
-compliance joliet_long_names
|
||||
{{ '-compliance untranslated_names' if arch == 'ppc64le' }}
|
||||
-volid {{ volid }}
|
||||
{{ graft }}
|
||||
-end
|
||||
|
1663
iso/empanadas/empanadas/util/dnf_utils.backup
Normal file
1663
iso/empanadas/empanadas/util/dnf_utils.backup
Normal file
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -61,6 +61,8 @@ class IsoBuild:
|
||||
extra_iso_mode: str = 'local',
|
||||
compose_dir_is_here: bool = False,
|
||||
hashed: bool = False,
|
||||
updated_image: bool = False,
|
||||
image_increment: str = '0',
|
||||
image=None,
|
||||
logger=None
|
||||
):
|
||||
@ -93,13 +95,18 @@ class IsoBuild:
|
||||
self.checksum = rlvars['checksum']
|
||||
self.profile = rlvars['profile']
|
||||
self.hashed = hashed
|
||||
self.updated_image = updated_image
|
||||
self.updated_image_increment = "." + image_increment
|
||||
self.updated_image_date = (time.strftime("%Y%m%d", time.localtime())
|
||||
+ self.updated_image_increment)
|
||||
|
||||
# Relevant major version items
|
||||
self.arch = arch
|
||||
self.arches = rlvars['allowed_arches']
|
||||
self.release = rlvars['revision']
|
||||
self.minor_version = rlvars['minor']
|
||||
self.revision = rlvars['revision'] + "-" + rlvars['rclvl']
|
||||
self.revision_level = rlvars['revision'] + "-" + rlvars['rclvl']
|
||||
self.revision = rlvars['revision']
|
||||
self.rclvl = rlvars['rclvl']
|
||||
self.repos = rlvars['iso_map']['lorax']['repos']
|
||||
self.repo_base_url = config['repo_base_url']
|
||||
@ -113,12 +120,6 @@ class IsoBuild:
|
||||
if 'container' in rlvars and len(rlvars['container']) > 0:
|
||||
self.container = rlvars['container']
|
||||
|
||||
self.staging_dir = os.path.join(
|
||||
config['staging_root'],
|
||||
config['category_stub'],
|
||||
self.revision
|
||||
)
|
||||
|
||||
# all bucket related info
|
||||
self.s3_region = config['aws_region']
|
||||
self.s3_bucket = config['bucket']
|
||||
@ -196,7 +197,7 @@ class IsoBuild:
|
||||
self.compose_dir_is_here,
|
||||
self.hashed
|
||||
)
|
||||
self.log.info(self.revision)
|
||||
self.log.info(self.revision_level)
|
||||
|
||||
def run(self):
|
||||
work_root = os.path.join(
|
||||
@ -502,6 +503,7 @@ class IsoBuild:
|
||||
self.log.info('Removing boot.iso from %s' % image)
|
||||
try:
|
||||
os.remove(path_to_image + '/images/boot.iso')
|
||||
os.remove(path_to_image + '/images/boot.iso.manifest')
|
||||
except:
|
||||
self.log.error(
|
||||
'[' + Color.BOLD + Color.YELLOW + 'FAIL' + Color.END + '] ' +
|
||||
@ -509,21 +511,9 @@ class IsoBuild:
|
||||
)
|
||||
|
||||
def _copy_boot_to_work(self, force_unpack, arch):
|
||||
src_to_image = os.path.join(
|
||||
self.lorax_work_dir,
|
||||
arch,
|
||||
'lorax'
|
||||
)
|
||||
|
||||
iso_to_go = os.path.join(
|
||||
self.iso_work_dir,
|
||||
arch
|
||||
)
|
||||
|
||||
path_to_src_image = '{}/{}'.format(
|
||||
src_to_image,
|
||||
'/images/boot.iso'
|
||||
)
|
||||
src_to_image = os.path.join(self.lorax_work_dir, arch, 'lorax')
|
||||
iso_to_go = os.path.join(self.iso_work_dir, arch)
|
||||
path_to_src_image = os.path.join(src_to_image, 'images/boot.iso')
|
||||
|
||||
rclevel = ''
|
||||
if self.release_candidate:
|
||||
@ -538,15 +528,13 @@ class IsoBuild:
|
||||
'boot'
|
||||
)
|
||||
|
||||
isobootpath = '{}/{}'.format(
|
||||
iso_to_go,
|
||||
discname
|
||||
)
|
||||
|
||||
manifest = '{}.{}'.format(
|
||||
isobootpath,
|
||||
'manifest'
|
||||
)
|
||||
isobootpath = os.path.join(iso_to_go, discname)
|
||||
manifest = '{}.manifest'.format(isobootpath)
|
||||
link_name = '{}-{}-boot.iso'.format(self.shortname, arch)
|
||||
link_manifest = link_name + '.manifest'
|
||||
isobootpath = os.path.join(iso_to_go, discname)
|
||||
linkbootpath = os.path.join(iso_to_go, link_name)
|
||||
manifestlink = os.path.join(iso_to_go, link_manifest)
|
||||
|
||||
if not force_unpack:
|
||||
file_check = isobootpath
|
||||
@ -556,9 +544,18 @@ class IsoBuild:
|
||||
|
||||
self.log.info('Copying %s boot iso to work directory...' % arch)
|
||||
os.makedirs(iso_to_go, exist_ok=True)
|
||||
shutil.copy2(path_to_src_image, isobootpath)
|
||||
try:
|
||||
shutil.copy2(path_to_src_image, isobootpath)
|
||||
if os.path.exists(linkbootpath):
|
||||
os.remove(linkbootpath)
|
||||
os.symlink(discname, linkbootpath)
|
||||
except Exception as e:
|
||||
self.log.error(Color.FAIL + 'We could not copy the image or create a symlink.')
|
||||
raise SystemExit(e)
|
||||
|
||||
if os.path.exists(path_to_src_image + '.manifest'):
|
||||
shutil.copy2(path_to_src_image + '.manifest', manifest)
|
||||
os.symlink(manifest.split('/')[-1], manifestlink)
|
||||
|
||||
self.log.info('Creating checksum for %s boot iso...' % arch)
|
||||
checksum = Shared.get_checksum(isobootpath, self.checksum, self.log)
|
||||
@ -569,6 +566,14 @@ class IsoBuild:
|
||||
c.write(checksum)
|
||||
c.close()
|
||||
|
||||
linksum = Shared.get_checksum(linkbootpath, self.checksum, self.log)
|
||||
if not linksum:
|
||||
self.log.error(Color.FAIL + linkbootpath + ' not found! Did we actually make the symlink?')
|
||||
return
|
||||
with open(linkbootpath + '.CHECKSUM', "w+") as l:
|
||||
l.write(linksum)
|
||||
l.close()
|
||||
|
||||
def _copy_nondisc_to_repo(self, force_unpack, arch, repo):
|
||||
"""
|
||||
Syncs data from a non-disc set of images to the appropriate repo. Repo
|
||||
@ -581,6 +586,13 @@ class IsoBuild:
|
||||
'os'
|
||||
)
|
||||
|
||||
kspathway = os.path.join(
|
||||
self.compose_latest_sync,
|
||||
repo,
|
||||
arch,
|
||||
'kickstart'
|
||||
)
|
||||
|
||||
src_to_image = os.path.join(
|
||||
self.lorax_work_dir,
|
||||
arch,
|
||||
@ -614,6 +626,7 @@ class IsoBuild:
|
||||
|
||||
try:
|
||||
shutil.copytree(src_to_image, pathway, copy_function=shutil.copy2, dirs_exist_ok=True)
|
||||
shutil.copytree(src_to_image, kspathway, copy_function=shutil.copy2, dirs_exist_ok=True)
|
||||
except:
|
||||
self.log.error('%s already exists??' % repo)
|
||||
|
||||
@ -769,11 +782,14 @@ class IsoBuild:
|
||||
mock_sh_template = self.tmplenv.get_template('extraisobuild.tmpl.sh')
|
||||
iso_template = self.tmplenv.get_template('buildExtraImage.tmpl.sh')
|
||||
xorriso_template = self.tmplenv.get_template('xorriso.tmpl.txt')
|
||||
iso_readme_template = self.tmplenv.get_template('ISOREADME.tmpl')
|
||||
|
||||
mock_iso_path = '/var/tmp/lorax-{}.cfg'.format(self.major_version)
|
||||
mock_sh_path = '{}/extraisobuild-{}-{}.sh'.format(entries_dir, arch, image)
|
||||
iso_template_path = '{}/buildExtraImage-{}-{}.sh'.format(entries_dir, arch, image)
|
||||
xorriso_template_path = '{}/xorriso-{}-{}.txt'.format(entries_dir, arch, image)
|
||||
iso_readme_path = '{}/{}/README'.format(self.iso_work_dir, arch)
|
||||
print(iso_readme_path)
|
||||
|
||||
log_root = os.path.join(
|
||||
work_root,
|
||||
@ -801,6 +817,10 @@ class IsoBuild:
|
||||
if self.release_candidate:
|
||||
rclevel = '-' + self.rclvl
|
||||
|
||||
datestamp = ''
|
||||
if self.updated_image:
|
||||
datestamp = '-' + self.updated_image_date
|
||||
|
||||
volid = '{}-{}-{}{}-{}-{}'.format(
|
||||
self.shortname,
|
||||
self.major_version,
|
||||
@ -810,15 +830,17 @@ class IsoBuild:
|
||||
volname
|
||||
)
|
||||
|
||||
isoname = '{}-{}.{}{}-{}-{}.iso'.format(
|
||||
isoname = '{}-{}{}{}-{}-{}.iso'.format(
|
||||
self.shortname,
|
||||
self.major_version,
|
||||
self.minor_version,
|
||||
self.revision,
|
||||
rclevel,
|
||||
datestamp,
|
||||
arch,
|
||||
image
|
||||
)
|
||||
|
||||
generic_isoname = '{}-{}-{}.iso'.format(self.shortname, arch, image)
|
||||
|
||||
lorax_pkg_cmd = '/usr/bin/dnf install {} -y {}'.format(
|
||||
' '.join(required_pkgs),
|
||||
log_path_command
|
||||
@ -867,6 +889,7 @@ class IsoBuild:
|
||||
isoname=isoname,
|
||||
volid=volid,
|
||||
graft=xorpoint,
|
||||
arch=arch,
|
||||
)
|
||||
xorriso_template_entry = open(xorriso_template_path, "w+")
|
||||
xorriso_template_entry.write(xorriso_template_output)
|
||||
@ -894,6 +917,11 @@ class IsoBuild:
|
||||
make_manifest=make_manifest,
|
||||
lorax_pkg_cmd=lorax_pkg_cmd,
|
||||
isoname=isoname,
|
||||
generic_isoname=generic_isoname,
|
||||
)
|
||||
|
||||
iso_readme_template_output = iso_readme_template.render(
|
||||
arch=arch
|
||||
)
|
||||
|
||||
mock_iso_entry = open(mock_iso_path, "w+")
|
||||
@ -908,6 +936,10 @@ class IsoBuild:
|
||||
iso_template_entry.write(iso_template_output)
|
||||
iso_template_entry.close()
|
||||
|
||||
iso_readme_entry = open(iso_readme_path, "w+")
|
||||
iso_readme_entry.write(iso_readme_template_output)
|
||||
iso_readme_entry.close()
|
||||
|
||||
os.chmod(mock_sh_path, 0o755)
|
||||
os.chmod(iso_template_path, 0o755)
|
||||
|
||||
@ -943,6 +975,11 @@ class IsoBuild:
|
||||
isos_dir = os.path.join(work_root, "isos")
|
||||
bad_exit_list = []
|
||||
checksum_list = []
|
||||
|
||||
datestamp = ''
|
||||
if self.updated_image:
|
||||
datestamp = '-' + self.updated_image_date
|
||||
|
||||
for i in images:
|
||||
entry_name_list = []
|
||||
image_name = i
|
||||
@ -956,17 +993,25 @@ class IsoBuild:
|
||||
if self.release_candidate:
|
||||
rclevel = '-' + self.rclvl
|
||||
|
||||
isoname = '{}/{}-{}.{}{}-{}-{}.iso'.format(
|
||||
isoname = '{}/{}-{}{}{}-{}-{}.iso'.format(
|
||||
a,
|
||||
self.shortname,
|
||||
self.major_version,
|
||||
self.minor_version,
|
||||
self.revision,
|
||||
rclevel,
|
||||
datestamp,
|
||||
a,
|
||||
i
|
||||
)
|
||||
|
||||
genericname = '{}/{}-{}-{}.iso'.format(
|
||||
a,
|
||||
self.shortname,
|
||||
a,
|
||||
i
|
||||
)
|
||||
|
||||
checksum_list.append(isoname)
|
||||
checksum_list.append(genericname)
|
||||
|
||||
for pod in entry_name_list:
|
||||
podman_cmd_entry = '{} run -d -it -v "{}:{}" -v "{}:{}" --name {} --entrypoint {}/{} {}'.format(
|
||||
@ -1358,6 +1403,7 @@ class IsoBuild:
|
||||
|
||||
source_path = latest_artifacts[arch]
|
||||
drop_name = source_path.split('/')[-1]
|
||||
checksum_name = drop_name + '.CHECKSUM'
|
||||
full_drop = '{}/{}'.format(
|
||||
image_arch_dir,
|
||||
drop_name
|
||||
@ -1407,6 +1453,15 @@ class IsoBuild:
|
||||
arch,
|
||||
formattype
|
||||
)
|
||||
latest_path = latest_name.split('/')[-1]
|
||||
latest_checksum = '{}/{}-{}-{}.latest.{}.{}.CHECKSUM'.format(
|
||||
image_arch_dir,
|
||||
self.shortname,
|
||||
self.major_version,
|
||||
imagename,
|
||||
arch,
|
||||
formattype
|
||||
)
|
||||
# For some reason python doesn't have a "yeah just change this
|
||||
# link" part of the function
|
||||
if os.path.exists(latest_name):
|
||||
@ -1414,6 +1469,17 @@ class IsoBuild:
|
||||
|
||||
os.symlink(drop_name, latest_name)
|
||||
|
||||
self.log.info('Creating checksum for latest symlinked image...')
|
||||
shutil.copy2(checksum_drop, latest_checksum)
|
||||
with open(latest_checksum, 'r') as link:
|
||||
checkdata = link.read()
|
||||
|
||||
checkdata = checkdata.replace(drop_name, latest_path)
|
||||
|
||||
with open(latest_checksum, 'w+') as link:
|
||||
link.write(checkdata)
|
||||
link.close()
|
||||
|
||||
self.log.info(Color.INFO + 'Image download phase completed')
|
||||
|
||||
|
||||
@ -1436,6 +1502,8 @@ class LiveBuild:
|
||||
image=None,
|
||||
justcopyit: bool = False,
|
||||
force_build: bool = False,
|
||||
updated_image: bool = False,
|
||||
image_increment: str = '0',
|
||||
logger=None
|
||||
):
|
||||
|
||||
@ -1449,7 +1517,6 @@ class LiveBuild:
|
||||
self.major_version = major
|
||||
self.compose_dir_is_here = compose_dir_is_here
|
||||
self.date_stamp = config['date_stamp']
|
||||
self.date = time.strftime("%Y%m%d", time.localtime())
|
||||
self.compose_root = config['compose_root']
|
||||
self.compose_base = config['compose_root'] + "/" + major
|
||||
self.current_arch = config['arch']
|
||||
@ -1483,6 +1550,11 @@ class LiveBuild:
|
||||
if 'container' in rlvars and len(rlvars['container']) > 0:
|
||||
self.container = rlvars['container']
|
||||
|
||||
self.updated_image = updated_image
|
||||
self.updated_image_increment = "." + image_increment
|
||||
self.date = (time.strftime("%Y%m%d", time.localtime())
|
||||
+ self.updated_image_increment)
|
||||
|
||||
# Templates
|
||||
file_loader = FileSystemLoader(f"{_rootdir}/templates")
|
||||
self.tmplenv = Environment(loader=file_loader)
|
||||
@ -1643,16 +1715,17 @@ class LiveBuild:
|
||||
)
|
||||
required_pkgs = self.livemap['required_pkgs']
|
||||
|
||||
volid = '{}-{}-{}'.format(
|
||||
volid = '{}-{}-{}-{}'.format(
|
||||
self.shortname,
|
||||
image,
|
||||
self.release
|
||||
self.major_version,
|
||||
self.minor_version,
|
||||
image
|
||||
)
|
||||
|
||||
isoname = '{}-{}-{}-{}-{}.iso'.format(
|
||||
self.shortname,
|
||||
image,
|
||||
self.release,
|
||||
image,
|
||||
self.current_arch,
|
||||
self.date
|
||||
)
|
||||
@ -1865,11 +1938,18 @@ class LiveBuild:
|
||||
live_dir_arch = os.path.join(self.live_work_dir, arch)
|
||||
isoname = '{}-{}-{}-{}-{}.iso'.format(
|
||||
self.shortname,
|
||||
image,
|
||||
self.release,
|
||||
image,
|
||||
arch,
|
||||
self.date
|
||||
)
|
||||
isolink = '{}-{}-{}-{}-{}.iso'.format(
|
||||
self.shortname,
|
||||
self.major_version,
|
||||
image,
|
||||
arch,
|
||||
'latest'
|
||||
)
|
||||
live_res_dir = '/var/lib/mock/{}-{}-{}/result'.format(
|
||||
self.shortname.lower(),
|
||||
self.major_version,
|
||||
@ -1907,8 +1987,17 @@ class LiveBuild:
|
||||
self.log.info(Color.INFO + 'Copying image to work directory')
|
||||
source_path = os.path.join(live_res_dir, isoname)
|
||||
dest_path = os.path.join(live_dir_arch, isoname)
|
||||
link_path = os.path.join(live_dir_arch, isolink)
|
||||
os.makedirs(live_dir_arch, exist_ok=True)
|
||||
shutil.copy2(source_path, dest_path)
|
||||
try:
|
||||
shutil.copy2(source_path, dest_path)
|
||||
if os.path.exists(link_path):
|
||||
os.remove(link_path)
|
||||
os.symlink(isoname, link_path)
|
||||
except:
|
||||
self.log.error(Color.FAIL + 'We could not copy the image or create a symlink.')
|
||||
return
|
||||
|
||||
self.log.info(Color.INFO + 'Generating checksum')
|
||||
checksum = Shared.get_checksum(dest_path, self.checksum, self.log)
|
||||
if not checksum:
|
||||
@ -1917,3 +2006,11 @@ class LiveBuild:
|
||||
with open(dest_path + '.CHECKSUM', "w+") as c:
|
||||
c.write(checksum)
|
||||
c.close()
|
||||
|
||||
linksum = Shared.get_checksum(link_path, self.checksum, self.log)
|
||||
if not linksum:
|
||||
self.log.error(Color.FAIL + link_path + ' not found. Did we copy it?')
|
||||
return
|
||||
with open(link_path + '.CHECKSUM', "w+") as c:
|
||||
c.write(linksum)
|
||||
c.close()
|
||||
|
@ -5,6 +5,7 @@ import json
|
||||
import hashlib
|
||||
import shlex
|
||||
import subprocess
|
||||
import shutil
|
||||
import yaml
|
||||
import requests
|
||||
import boto3
|
||||
@ -401,7 +402,21 @@ class Shared:
|
||||
return cmd
|
||||
|
||||
@staticmethod
|
||||
def generate_conf(data, logger, dest_path='/var/tmp') -> str:
|
||||
def generate_conf(
|
||||
shortname,
|
||||
major_version,
|
||||
repos,
|
||||
repo_base_url,
|
||||
project_id,
|
||||
hashed,
|
||||
extra_files,
|
||||
gpgkey,
|
||||
gpg_check,
|
||||
repo_gpg_check,
|
||||
templates,
|
||||
logger,
|
||||
dest_path='/var/tmp'
|
||||
) -> str:
|
||||
"""
|
||||
Generates the necessary repo conf file for the operation. This repo
|
||||
file should be temporary in nature. This will generate a repo file
|
||||
@ -413,35 +428,35 @@ class Shared:
|
||||
"""
|
||||
fname = os.path.join(
|
||||
dest_path,
|
||||
"{}-{}-config.repo".format(data.shortname, data.major_version)
|
||||
"{}-{}-config.repo".format(shortname, major_version)
|
||||
)
|
||||
data.log.info('Generating the repo configuration: %s' % fname)
|
||||
logger.info('Generating the repo configuration: %s' % fname)
|
||||
|
||||
if data.repo_base_url.startswith("/"):
|
||||
if repo_base_url.startswith("/"):
|
||||
logger.error("Local file syncs are not supported.")
|
||||
raise SystemExit(Color.BOLD + "Local file syncs are not "
|
||||
"supported." + Color.END)
|
||||
|
||||
prehashed = ''
|
||||
if data.hashed:
|
||||
if hashed:
|
||||
prehashed = "hashed-"
|
||||
# create dest_path
|
||||
if not os.path.exists(dest_path):
|
||||
os.makedirs(dest_path, exist_ok=True)
|
||||
config_file = open(fname, "w+")
|
||||
repolist = []
|
||||
for repo in data.repos:
|
||||
for repo in repos:
|
||||
|
||||
constructed_url = '{}/{}/repo/{}{}/$basearch'.format(
|
||||
data.repo_base_url,
|
||||
data.project_id,
|
||||
repo_base_url,
|
||||
project_id,
|
||||
prehashed,
|
||||
repo,
|
||||
)
|
||||
|
||||
constructed_url_src = '{}/{}/repo/{}{}/src'.format(
|
||||
data.repo_base_url,
|
||||
data.project_id,
|
||||
repo_base_url,
|
||||
project_id,
|
||||
prehashed,
|
||||
repo,
|
||||
)
|
||||
@ -450,12 +465,16 @@ class Shared:
|
||||
'name': repo,
|
||||
'baseurl': constructed_url,
|
||||
'srcbaseurl': constructed_url_src,
|
||||
'gpgkey': data.extra_files['git_raw_path'] + data.extra_files['gpg'][data.gpgkey]
|
||||
'gpgkey': extra_files['git_raw_path'] + extra_files['gpg'][gpgkey]
|
||||
}
|
||||
repolist.append(repodata)
|
||||
|
||||
template = data.tmplenv.get_template('repoconfig.tmpl')
|
||||
output = template.render(repos=repolist)
|
||||
template = templates.get_template('repoconfig.tmpl')
|
||||
output = template.render(
|
||||
repos=repolist,
|
||||
gpg_check=gpg_check,
|
||||
repo_gpg_check=repo_gpg_check
|
||||
)
|
||||
config_file.write(output)
|
||||
|
||||
config_file.close()
|
||||
@ -821,7 +840,14 @@ class Shared:
|
||||
isokwargs["input_charset"] = None
|
||||
|
||||
if opts['use_xorrisofs']:
|
||||
cmd = ['/usr/bin/xorriso', '-dialog', 'on', '<', opts['graft_points']]
|
||||
cmd = [
|
||||
'/usr/bin/xorriso',
|
||||
'-dialog',
|
||||
'on',
|
||||
'<',
|
||||
opts['graft_points'],
|
||||
'2>&1'
|
||||
]
|
||||
else:
|
||||
cmd = Shared.get_mkisofs_cmd(
|
||||
opts['iso_name'],
|
||||
@ -937,7 +963,7 @@ class Shared:
|
||||
Write compose info similar to pungi.
|
||||
|
||||
arches and repos may be better suited for a dictionary. that is a
|
||||
future thing we will work on for 0.3.0.
|
||||
future thing we will work on for 0.5.0.
|
||||
"""
|
||||
cijson = file_path + '.json'
|
||||
ciyaml = file_path + '.yaml'
|
||||
@ -961,3 +987,90 @@ class Shared:
|
||||
with open(ciyaml, 'w+') as ymdump:
|
||||
yaml.dump(jsonData, ymdump)
|
||||
ymdump.close()
|
||||
|
||||
@staticmethod
|
||||
def symlink_to_latest(shortname, major_version, generated_dir, compose_latest_dir, logger):
|
||||
"""
|
||||
Emulates pungi and symlinks latest-Rocky-X
|
||||
This link will be what is updated in full runs. Whatever is in this
|
||||
'latest' directory is what is rsynced on to staging after completion.
|
||||
This link should not change often.
|
||||
"""
|
||||
try:
|
||||
os.remove(compose_latest_dir)
|
||||
except:
|
||||
pass
|
||||
|
||||
logger.info('Symlinking to latest-{}-{}...'.format(shortname, major_version))
|
||||
os.symlink(generated_dir, compose_latest_dir)
|
||||
|
||||
@staticmethod
|
||||
def deploy_extra_files(extra_files, sync_root, global_work_root, logger):
|
||||
"""
|
||||
deploys extra files based on info of rlvars including a
|
||||
extra_files.json
|
||||
|
||||
might also deploy COMPOSE_ID and maybe in the future a metadata dir with
|
||||
a bunch of compose-esque stuff.
|
||||
"""
|
||||
#logger.info(Color.INFO + 'Deploying treeinfo, discinfo, and media.repo')
|
||||
|
||||
cmd = Shared.git_cmd(logger)
|
||||
tmpclone = '/tmp/clone'
|
||||
extra_files_dir = os.path.join(
|
||||
global_work_root,
|
||||
'extra-files'
|
||||
)
|
||||
metadata_dir = os.path.join(
|
||||
sync_root,
|
||||
"metadata"
|
||||
)
|
||||
if not os.path.exists(extra_files_dir):
|
||||
os.makedirs(extra_files_dir, exist_ok=True)
|
||||
|
||||
if not os.path.exists(metadata_dir):
|
||||
os.makedirs(metadata_dir, exist_ok=True)
|
||||
|
||||
clonecmd = '{} clone {} -b {} -q {}'.format(
|
||||
cmd,
|
||||
extra_files['git_repo'],
|
||||
extra_files['branch'],
|
||||
tmpclone
|
||||
)
|
||||
|
||||
git_clone = subprocess.call(
|
||||
shlex.split(clonecmd),
|
||||
stdout=subprocess.DEVNULL,
|
||||
stderr=subprocess.DEVNULL
|
||||
)
|
||||
|
||||
logger.info(Color.INFO + 'Deploying extra files to work and metadata directories ...')
|
||||
|
||||
# Copy files to work root
|
||||
for extra in extra_files['list']:
|
||||
src = '/tmp/clone/' + extra
|
||||
# Copy extra files to root of compose here also - The extra files
|
||||
# are meant to be picked up by our ISO creation process and also
|
||||
# exist on our mirrors.
|
||||
try:
|
||||
shutil.copy2(src, extra_files_dir)
|
||||
shutil.copy2(src, metadata_dir)
|
||||
except:
|
||||
logger.warn(Color.WARN + 'Extra file not copied: ' + src)
|
||||
|
||||
try:
|
||||
shutil.rmtree(tmpclone)
|
||||
except OSError as e:
|
||||
logger.error(Color.FAIL + 'Directory ' + tmpclone +
|
||||
' could not be removed: ' + e.strerror
|
||||
)
|
||||
|
||||
@staticmethod
|
||||
def dnf_sync(repo, sync_root, work_root, arch, logger):
|
||||
"""
|
||||
This is for normal dnf syncs. This is very slow.
|
||||
"""
|
||||
logger.error('DNF syncing has been removed.')
|
||||
logger.error('Please install podman and enable parallel')
|
||||
raise SystemExit()
|
||||
|
||||
|
@ -1,6 +1,6 @@
|
||||
[tool.poetry]
|
||||
name = "empanadas"
|
||||
version = "0.3.0"
|
||||
version = "0.4.0"
|
||||
description = "hand crafted ISOs with love and spice"
|
||||
authors = ["Louis Abel <label@rockylinux.org>", "Neil Hanlon <neil@rockylinux.org>"]
|
||||
|
||||
@ -34,6 +34,7 @@ build-image = "empanadas.scripts.build_image:run"
|
||||
finalize_compose = "empanadas.scripts.finalize_compose:run"
|
||||
pull-cloud-image = "empanadas.scripts.pull_cloud_image:run"
|
||||
generate_compose = "empanadas.scripts.generate_compose:run"
|
||||
peridot_repoclosure = "empanadas.scripts.peridot_repoclosure:run"
|
||||
|
||||
[build-system]
|
||||
requires = ["poetry-core>=1.0.0"]
|
||||
|
@ -2,4 +2,4 @@ from empanadas import __version__
|
||||
|
||||
|
||||
def test_version():
|
||||
assert __version__ == '0.2.0'
|
||||
assert __version__ == '0.4.0'
|
||||
|
@ -1 +1 @@
|
||||
# Mirrormanager Mangling tools
|
||||
# Mirrormanager Mangling tools and other Accessories
|
||||
|
@ -7,3 +7,4 @@ LIST=${LIST:-mirrorlist}
|
||||
MIRRORLIST_BASE="http://mirrors.rockylinux.org/${LIST}"
|
||||
|
||||
MIRROR_DISPLAY_COUNT=1
|
||||
GIT_URL="https://git.rockylinux.org"
|
||||
|
3
mangle/generators/README.md
Normal file
3
mangle/generators/README.md
Normal file
@ -0,0 +1,3 @@
|
||||
# Generators
|
||||
|
||||
These help generate comps or other data we need for peridot or pungi
|
20
mangle/generators/common
Normal file
20
mangle/generators/common
Normal file
@ -0,0 +1,20 @@
|
||||
# To be sourced by scripts to use
|
||||
|
||||
if [ -z "$RLVER" ]; then
|
||||
echo "You must set RLVER."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
PREPOPDROP="/tmp/prepopulate.json"
|
||||
VERSDROP="/tmp/versions.list"
|
||||
|
||||
# Source Major common
|
||||
# Override: Not Allowed
|
||||
test -f "$(dirname "${BASH_SOURCE[0]}")/common_${RLVER}" && source "$(dirname "${BASH_SOURCE[0]}")/common_${RLVER}"
|
||||
if [ "$?" -ne 0 ]; then
|
||||
echo "Could not source common_${RLVER}"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
STREAM_COMPOSE_BASEURL="https://composes.stream.centos.org/production"
|
||||
COMPOSE_BASEDIR="/mnt/compose"
|
31
mangle/generators/common.py
Normal file
31
mangle/generators/common.py
Normal file
@ -0,0 +1,31 @@
|
||||
class common:
|
||||
def rlver(self, rlver):
|
||||
default = "Not Supported"
|
||||
return getattr(self, 'rl' + str(rlver), lambda: default)()
|
||||
|
||||
def rl8(self):
|
||||
REPOS = {
|
||||
'AppStream': ['aarch64', 'x86_64'],
|
||||
'BaseOS': ['aarch64', 'x86_64'],
|
||||
'HighAvailability': ['aarch64', 'x86_64'],
|
||||
'PowerTools': ['aarch64', 'x86_64'],
|
||||
'ResilientStorage': ['aarch64', 'x86_64'],
|
||||
'RT': ['x86_64'],
|
||||
}
|
||||
return REPOS
|
||||
|
||||
def rl9(self):
|
||||
REPOS = {
|
||||
'AppStream': ['aarch64', 'ppc64le', 's390x', 'x86_64'],
|
||||
'BaseOS': ['aarch64', 'ppc64le', 's390x', 'x86_64'],
|
||||
'CRB': ['aarch64', 'ppc64le', 's390x', 'x86_64'],
|
||||
'HighAvailability': ['aarch64', 'ppc64le', 's390x', 'x86_64'],
|
||||
'NFV': ['x86_64'],
|
||||
'ResilientStorage': ['ppc64le', 's390x', 'x86_64'],
|
||||
'RT': ['x86_64'],
|
||||
'SAP': ['ppc64le', 's390x', 'x86_64'],
|
||||
'SAPHANA': ['ppc64le', 'x86_64']
|
||||
}
|
||||
return REPOS
|
||||
|
||||
switcher = common()
|
4
mangle/generators/common_8
Normal file
4
mangle/generators/common_8
Normal file
@ -0,0 +1,4 @@
|
||||
# To be sourced by scripts to use
|
||||
|
||||
REPO=("BaseOS" "AppStream" "CRB" "HighAvailability" "ResilientStorage" "NFV" "RT")
|
||||
ARCH=("aarch64" "x86_64")
|
4
mangle/generators/common_9
Normal file
4
mangle/generators/common_9
Normal file
@ -0,0 +1,4 @@
|
||||
# To be sourced by scripts to use
|
||||
|
||||
REPO=("BaseOS" "AppStream" "CRB" "HighAvailability" "ResilientStorage" "NFV" "RT" "SAP" "SAPHANA")
|
||||
ARCH=("aarch64" "ppc64le" "s390x" "x86_64")
|
18
mangle/generators/generate_comps
Executable file
18
mangle/generators/generate_comps
Executable file
@ -0,0 +1,18 @@
|
||||
#!/bin/bash
|
||||
source common
|
||||
|
||||
if [ ! -f "/usr/bin/pungi-koji" ]; then
|
||||
echo "You must have pungi installed."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
VER="${RLVER}"
|
||||
BRANCH="r${VER}"
|
||||
REPO="${GIT_URL}/rocky/pungi-rocky.git"
|
||||
|
||||
CMD="/usr/bin/pungi-koji --production --no-latest-link --just-phase init --config rocky.conf --compose-dir /var/tmp/composes/ --label RC-${VER}"
|
||||
|
||||
git clone ${REPO} -b ${BRANCH} /var/tmp/pungi
|
||||
pushd /var/tmp/pungi
|
||||
${CMD}
|
||||
popd
|
38
mangle/generators/generate_prepopulate_from_pungi
Executable file
38
mangle/generators/generate_prepopulate_from_pungi
Executable file
@ -0,0 +1,38 @@
|
||||
#!/bin/bash
|
||||
# Parses a local compose's repos
|
||||
#set -x
|
||||
|
||||
if [ -n "$1" ] && [ -n "$2" ]; then
|
||||
MAJOR=$1
|
||||
DATE=$2
|
||||
else
|
||||
echo "Major version not specified"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Verify the date format
|
||||
echo "${DATE}" | grep -Eq '[0-9]+\.[0-9]'
|
||||
grep_val=$?
|
||||
|
||||
if [ "$grep_val" -ne 0 ]; then
|
||||
echo "Date format incorrect. You must use: YYYYMMDD.X"
|
||||
fi
|
||||
|
||||
export RLVER=$MAJOR
|
||||
source common
|
||||
|
||||
drop="${PREPOPDROP}"
|
||||
current=$(pwd)
|
||||
compose_dir="${COMPOSE_BASEDIR}/Rocky-${MAJOR}-${DATE}/compose"
|
||||
|
||||
pushd "${compose_dir}" || { echo "Could not change directory"; exit 1; }
|
||||
/usr/bin/python3 "${current}/prepopulate_parser.py"
|
||||
ret_val=$?
|
||||
popd || { echo "Could not change back..."; exit 1; }
|
||||
|
||||
if [ "$ret_val" -ne "0" ]; then
|
||||
echo "There was an error running through the parser."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "File located at: $drop"
|
52
mangle/generators/generate_prepopulate_from_stream
Executable file
52
mangle/generators/generate_prepopulate_from_stream
Executable file
@ -0,0 +1,52 @@
|
||||
#!/bin/bash
|
||||
# Parses a CentOS Stream compose's repos
|
||||
#set -x
|
||||
|
||||
if [ -n "$1" ] && [ -n "$2" ]; then
|
||||
MAJOR=$1
|
||||
DATE=$2
|
||||
else
|
||||
echo "Major version not specified"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Verify the date format
|
||||
echo "${DATE}" | grep -Eq '[0-9]+\.[0-9]'
|
||||
grep_val=$?
|
||||
|
||||
if [ "$grep_val" -ne 0 ]; then
|
||||
echo "Date format incorrect. You must use: YYYYMMDD.X"
|
||||
fi
|
||||
|
||||
export RLVER=$MAJOR
|
||||
source common
|
||||
|
||||
drop="${PREPOPDROP}"
|
||||
current=$(pwd)
|
||||
tmpdir=$(mktemp -d)
|
||||
stream_compose_url="${STREAM_COMPOSE_BASEURL}/CentOS-Stream-${MAJOR}-${DATE}/compose"
|
||||
|
||||
pushd "${tmpdir}" || { echo "Could not change directory"; exit 1; }
|
||||
for x in "${REPO[@]}"; do
|
||||
echo "Working on ${x}"
|
||||
for y in "${ARCH[@]}"; do
|
||||
repodatas=( $(dnf reposync --repofrompath ${x},${stream_compose_url}/${x}/${y}/os --download-metadata --repoid=${x} -p ${x}/${y} --forcearch ${y} --norepopath --remote-time --assumeyes -u | grep repodata) )
|
||||
mkdir -p "${x}/${y}/repodata"
|
||||
pushd "${x}/${y}/repodata" || { echo "Could not change directory"; exit 1; }
|
||||
for z in "${repodatas[@]}"; do
|
||||
wget -q -nc "${z}"
|
||||
done
|
||||
wget -q -nc "${stream_compose_url}/${x}/${y}/os/repodata/repomd.xml"
|
||||
popd || { echo "Could not change back..."; exit 1; }
|
||||
done
|
||||
done
|
||||
/usr/bin/python3 "${current}/prepopulate_parser.py"
|
||||
ret_val=$?
|
||||
popd || { echo "Could not change back..."; exit 1; }
|
||||
|
||||
if [ "$ret_val" -ne "0" ]; then
|
||||
echo "There was an error running through the parser."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "File located at: $drop"
|
52
mangle/generators/generate_versions_from_stream
Executable file
52
mangle/generators/generate_versions_from_stream
Executable file
@ -0,0 +1,52 @@
|
||||
#!/bin/bash
|
||||
# Parses a CentOS Stream compose's repos
|
||||
#set -x
|
||||
|
||||
if [ -n "$1" ] && [ -n "$2" ]; then
|
||||
MAJOR=$1
|
||||
DATE=$2
|
||||
else
|
||||
echo "Major version not specified"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Verify the date format
|
||||
echo "${DATE}" | grep -Eq '[0-9]+\.[0-9]'
|
||||
grep_val=$?
|
||||
|
||||
if [ "$grep_val" -ne 0 ]; then
|
||||
echo "Date format incorrect. You must use: YYYYMMDD.X"
|
||||
fi
|
||||
|
||||
export RLVER=$MAJOR
|
||||
source common
|
||||
|
||||
drop="${VERSDROP}"
|
||||
current=$(pwd)
|
||||
tmpdir=$(mktemp -d)
|
||||
stream_compose_url="${STREAM_COMPOSE_BASEURL}/CentOS-Stream-${MAJOR}-${DATE}/compose"
|
||||
|
||||
pushd "${tmpdir}" || { echo "Could not change directory"; exit 1; }
|
||||
for x in "${REPO[@]}"; do
|
||||
echo "Working on ${x}"
|
||||
for y in "${ARCH[@]}"; do
|
||||
repodatas=( $(dnf reposync --repofrompath ${x},${stream_compose_url}/${x}/${y}/os --download-metadata --repoid=${x} -p ${x}/${y} --forcearch ${y} --norepopath --remote-time --assumeyes -u | grep repodata) )
|
||||
mkdir -p "${x}/${y}/repodata"
|
||||
pushd "${x}/${y}/repodata" || { echo "Could not change directory"; exit 1; }
|
||||
for z in "${repodatas[@]}"; do
|
||||
wget -q -nc "${z}"
|
||||
done
|
||||
wget -q -nc "${stream_compose_url}/${x}/${y}/os/repodata/repomd.xml"
|
||||
popd || { echo "Could not change back..."; exit 1; }
|
||||
done
|
||||
done
|
||||
/usr/bin/python3 "${current}/version_parser.py"
|
||||
ret_val=$?
|
||||
popd || { echo "Could not change back..."; exit 1; }
|
||||
|
||||
if [ "$ret_val" -ne "0" ]; then
|
||||
echo "There was an error running through the parser."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "File located at: $drop"
|
69
mangle/generators/prepopulate_parser.py
Executable file
69
mangle/generators/prepopulate_parser.py
Executable file
@ -0,0 +1,69 @@
|
||||
#!/usr/bin/env python3
|
||||
import os
|
||||
import os.path
|
||||
import json
|
||||
import dnf
|
||||
import createrepo_c as cr
|
||||
from common import *
|
||||
|
||||
REPOS = switcher.rlver((os.environ['RLVER']))
|
||||
|
||||
# Source packages we do not ship or are rocky branded
|
||||
IGNORES = [
|
||||
'insights-client',
|
||||
'rhc',
|
||||
'centos-indexhtml',
|
||||
'centos-logos',
|
||||
'centos-stream-release',
|
||||
'redhat-indexhtml',
|
||||
'redhat-logos',
|
||||
'redhat-release'
|
||||
]
|
||||
|
||||
def warningcb(warning_type, message):
|
||||
print("WARNING: %s" % message)
|
||||
return True
|
||||
|
||||
repo_prepop = {}
|
||||
for k in REPOS:
|
||||
repo_prepop[k] = {}
|
||||
for arch in REPOS[k]:
|
||||
PRIMARY_XML_PATH = None
|
||||
FILELISTS_XML_PATH = None
|
||||
OTHER_XML_PATH = None
|
||||
REPO_PATH = k + '/' + arch
|
||||
repomd = cr.Repomd()
|
||||
cr.xml_parse_repomd(os.path.join(REPO_PATH, "repodata/repomd.xml"), repomd, warningcb)
|
||||
for record in repomd.records:
|
||||
if record.type == "primary":
|
||||
PRIMARY_XML_PATH = os.path.join(REPO_PATH, record.location_href)
|
||||
elif record.type == "filelists":
|
||||
FILELISTS_XML_PATH = os.path.join(REPO_PATH, record.location_href)
|
||||
elif record.type == "other":
|
||||
OTHER_XML_PATH = os.path.join(REPO_PATH, record.location_href)
|
||||
|
||||
package_iterator = cr.PackageIterator(primary_path=PRIMARY_XML_PATH, filelists_path=FILELISTS_XML_PATH, other_path=OTHER_XML_PATH, warningcb=warningcb)
|
||||
repo_prepop[k][arch] = {}
|
||||
for pkg in package_iterator:
|
||||
name = pkg.name + '.' + pkg.arch
|
||||
subject = dnf.subject.Subject(pkg.rpm_sourcerpm)
|
||||
possible_nevra = subject.get_nevra_possibilities()
|
||||
srcname = possible_nevra[0].name
|
||||
# Ignore packages (by source) that we do not ship
|
||||
if srcname in IGNORES:
|
||||
continue
|
||||
|
||||
# Create the initial list if the package (by source) does not exist
|
||||
if srcname not in repo_prepop[k][arch]:
|
||||
repo_prepop[k][arch][srcname] = []
|
||||
|
||||
# Avoids duplicate entries - This is especially helpful for modules
|
||||
if name not in repo_prepop[k][arch][srcname]:
|
||||
repo_prepop[k][arch][srcname].append(name)
|
||||
|
||||
# Sorts the list items
|
||||
repo_prepop[k][arch][srcname].sort()
|
||||
|
||||
entry_point = open('/tmp/prepopulate.json', 'w+')
|
||||
json.dump(repo_prepop, entry_point, indent=2, sort_keys=True)
|
||||
entry_point.close()
|
72
mangle/generators/version_parser.py
Executable file
72
mangle/generators/version_parser.py
Executable file
@ -0,0 +1,72 @@
|
||||
#!/usr/bin/env python3
|
||||
import os
|
||||
import os.path
|
||||
import json
|
||||
import dnf
|
||||
import createrepo_c as cr
|
||||
from common import *
|
||||
|
||||
REPOS = switcher.rlver((os.environ['RLVER']))
|
||||
|
||||
# Source packages we do not ship or are rocky branded
|
||||
IGNORES = [
|
||||
'insights-client',
|
||||
'rhc',
|
||||
'centos-indexhtml',
|
||||
'centos-logos',
|
||||
'centos-stream-release',
|
||||
'redhat-indexhtml',
|
||||
'redhat-logos',
|
||||
'redhat-release'
|
||||
]
|
||||
|
||||
def warningcb(warning_type, message):
|
||||
print("WARNING: %s" % message)
|
||||
return True
|
||||
|
||||
repo_prepop = {}
|
||||
with open('/tmp/versions.list', 'w+') as fp:
|
||||
for k in REPOS:
|
||||
repo_prepop[k] = {}
|
||||
for arch in REPOS[k]:
|
||||
PRIMARY_XML_PATH = None
|
||||
FILELISTS_XML_PATH = None
|
||||
OTHER_XML_PATH = None
|
||||
REPO_PATH = k + '/' + arch
|
||||
repomd = cr.Repomd()
|
||||
cr.xml_parse_repomd(os.path.join(REPO_PATH, "repodata/repomd.xml"), repomd, warningcb)
|
||||
for record in repomd.records:
|
||||
if record.type == "primary":
|
||||
PRIMARY_XML_PATH = os.path.join(REPO_PATH, record.location_href)
|
||||
elif record.type == "filelists":
|
||||
FILELISTS_XML_PATH = os.path.join(REPO_PATH, record.location_href)
|
||||
elif record.type == "other":
|
||||
OTHER_XML_PATH = os.path.join(REPO_PATH, record.location_href)
|
||||
|
||||
package_iterator = cr.PackageIterator(primary_path=PRIMARY_XML_PATH, filelists_path=FILELISTS_XML_PATH, other_path=OTHER_XML_PATH, warningcb=warningcb)
|
||||
repo_prepop[k][arch] = {}
|
||||
for pkg in package_iterator:
|
||||
subject = dnf.subject.Subject(pkg.rpm_sourcerpm)
|
||||
possible_nevra = subject.get_nevra_possibilities()
|
||||
srcname = possible_nevra[0].name
|
||||
srcvers = possible_nevra[0].version
|
||||
srcrele = possible_nevra[0].release
|
||||
full = srcname + '-' + srcvers + '-' + srcrele
|
||||
# Ignore packages (by source) that we do not ship
|
||||
if srcname in IGNORES:
|
||||
continue
|
||||
|
||||
# Create the initial list if the package (by source) does not exist
|
||||
if srcname not in repo_prepop[k][arch]:
|
||||
repo_prepop[k][arch][srcname] = {}
|
||||
|
||||
# Avoids duplicate entries - This is especially helpful for modules
|
||||
repo_prepop[k][arch][srcname]['version'] = srcvers
|
||||
repo_prepop[k][arch][srcname]['release'] = srcrele
|
||||
|
||||
fp.write(full + '\n')
|
||||
fp.close()
|
||||
|
||||
entry_point = open('/tmp/versions.json', 'w+')
|
||||
json.dump(repo_prepop, entry_point, indent=2, sort_keys=True)
|
||||
entry_point.close()
|
@ -22,6 +22,7 @@ PRODUCTION_ROOT="/mnt/repos-production"
|
||||
# Override: Not Allowed
|
||||
# relative to ${ENV}_ROOT
|
||||
CATEGORY_STUB="mirror/pub/rocky"
|
||||
SIG_CATEGORY_STUB="mirror/pub/sig"
|
||||
|
||||
# Override: Required
|
||||
#RELEASE_DIR="${CATEGORY_STUB}/${REVISION}${APPEND_TO_DIR}"
|
||||
|
51
sync/sync-file-list-parallel.sh
Normal file
51
sync/sync-file-list-parallel.sh
Normal file
@ -0,0 +1,51 @@
|
||||
#!/bin/bash
|
||||
# Syncs everything from staging to production
|
||||
|
||||
# Source common variables
|
||||
# shellcheck disable=SC2046,1091,1090
|
||||
source "$(dirname "$0")/common"
|
||||
|
||||
REV=${REVISION}${APPEND_TO_DIR}
|
||||
|
||||
cd "${STAGING_ROOT}/${CATEGORY_STUB}/${REV}" || { echo "Failed to change directory"; ret_val=1; exit 1; }
|
||||
ret_val=$?
|
||||
|
||||
if [ $ret_val -eq "0" ]; then
|
||||
# Full file list update for rocky linux itself
|
||||
echo "Starting full file list for category"
|
||||
cd "${PRODUCTION_ROOT}/${CATEGORY_STUB}/" || { echo "Failed to change directory"; exit 1; }
|
||||
find . > "${PRODUCTION_ROOT}/${CATEGORY_STUB}/fullfilelist" & CATEPID=$!
|
||||
echo "Starting full file list for root"
|
||||
cd "${PRODUCTION_ROOT}/" || { echo "Failed to change directory"; exit 1; }
|
||||
find . > "${PRODUCTION_ROOT}/fullfilelist" & ROOTPID=$!
|
||||
|
||||
wait $CATEPID
|
||||
wait $ROOTPID
|
||||
|
||||
echo "Generating filelist for quick-fedora-mirror users"
|
||||
if [[ -f /usr/local/bin/create-filelist ]]; then
|
||||
# We're already here, but Justin Case wanted this
|
||||
cd "${PRODUCTION_ROOT}/${CATEGORY_STUB}/" || { echo "Failed to change directory"; exit 1; }
|
||||
/bin/cp fullfiletimelist-rocky fullfiletimelist-rocky-old
|
||||
/usr/local/bin/create-filelist > fullfiletimelist-rocky & CREALIPID=$!
|
||||
|
||||
# We're already here, but Justin Case wanted this
|
||||
cd "${PRODUCTION_ROOT}/" || { echo "Failed to change directory"; exit 1; }
|
||||
/bin/cp fullfiletimelist-rocky fullfiletimelist-rocky-old
|
||||
/usr/local/bin/create-filelist > fullfiletimelist-rocky & ROOTLIPID=$!
|
||||
|
||||
wait $CREALIPID
|
||||
wait $ROOTLIPID
|
||||
|
||||
cd "${PRODUCTION_ROOT}/${CATEGORY_STUB}/" || { echo "Failed to change directory"; exit 1; }
|
||||
chown 10004:10005 fullfilelist fullfiletimelist-rocky fullfiletimelist fullfiletimelist-rocky-linux
|
||||
cp fullfiletimelist-rocky fullfiletimelist
|
||||
cp fullfiletimelist-rocky fullfiletimelist-rocky-linux
|
||||
|
||||
cd "${PRODUCTION_ROOT}/" || { echo "Failed to change directory"; exit 1; }
|
||||
chown 10004:10005 fullfilelist fullfiletimelist-rocky fullfiletimelist
|
||||
cp fullfiletimelist-rocky fullfiletimelist
|
||||
fi
|
||||
|
||||
fi
|
||||
|
31
sync/sync-full-file-list.sh
Normal file
31
sync/sync-full-file-list.sh
Normal file
@ -0,0 +1,31 @@
|
||||
#!/bin/bash
|
||||
# Syncs everything from staging to production
|
||||
|
||||
# Source common variables
|
||||
# shellcheck disable=SC2046,1091,1090
|
||||
source "$(dirname "$0")/common"
|
||||
|
||||
REV=${REVISION}${APPEND_TO_DIR}
|
||||
|
||||
cd "${STAGING_ROOT}/${CATEGORY_STUB}/${REV}" || { echo "Failed to change directory"; ret_val=1; exit 1; }
|
||||
ret_val=$?
|
||||
|
||||
if [ $ret_val -eq "0" ]; then
|
||||
# Full file list update for rocky linux itself
|
||||
cd "${PRODUCTION_ROOT}/${CATEGORY_STUB}/" || { echo "Failed to change directory"; exit 1; }
|
||||
# Hardlink everything except xml files
|
||||
#hardlink -x '.*\.xml.*' "${REVISION}"
|
||||
echo "Starting full file list for category"
|
||||
find . > fullfilelist
|
||||
echo "Generating filelist for quick-fedora-mirror users"
|
||||
if [[ -f /usr/local/bin/create-filelist ]]; then
|
||||
# We're already here, but Justin Case wanted this
|
||||
cd "${PRODUCTION_ROOT}/${CATEGORY_STUB}/" || { echo "Failed to change directory"; exit 1; }
|
||||
/bin/cp fullfiletimelist-rocky fullfiletimelist-rocky-old
|
||||
/usr/local/bin/create-filelist > fullfiletimelist-rocky
|
||||
cp fullfiletimelist-rocky fullfiletimelist
|
||||
cp fullfiletimelist-rocky fullfiletimelist-rocky-linux
|
||||
fi
|
||||
chown 10004:10005 fullfilelist fullfiletimelist-rocky fullfiletimelist fullfiletimelist-rocky-linux
|
||||
fi
|
||||
|
28
sync/sync-root-file-list.sh
Normal file
28
sync/sync-root-file-list.sh
Normal file
@ -0,0 +1,28 @@
|
||||
#!/bin/bash
|
||||
# Syncs everything from staging to production
|
||||
|
||||
# Source common variables
|
||||
# shellcheck disable=SC2046,1091,1090
|
||||
source "$(dirname "$0")/common"
|
||||
|
||||
REV=${REVISION}${APPEND_TO_DIR}
|
||||
|
||||
cd "${STAGING_ROOT}/${CATEGORY_STUB}/${REV}" || { echo "Failed to change directory"; ret_val=1; exit 1; }
|
||||
ret_val=$?
|
||||
|
||||
if [ $ret_val -eq "0" ]; then
|
||||
# Full file list update for production root
|
||||
cd "${PRODUCTION_ROOT}/" || echo { echo "Failed to change directory"; exit 1; }
|
||||
echo "Starting full file list for root"
|
||||
find . > fullfilelist
|
||||
echo "Generating filelist for quick-fedora-mirror users"
|
||||
if [[ -f /usr/local/bin/create-filelist ]]; then
|
||||
# We're already here, but Justin Case wanted this
|
||||
cd "${PRODUCTION_ROOT}/" || { echo "Failed to change directory"; exit 1; }
|
||||
/bin/cp fullfiletimelist-rocky fullfiletimelist-rocky-old
|
||||
/usr/local/bin/create-filelist > fullfiletimelist-rocky
|
||||
cp fullfiletimelist-rocky fullfiletimelist
|
||||
fi
|
||||
chown 10004:10005 fullfilelist fullfiletimelist-rocky fullfiletimelist
|
||||
fi
|
||||
|
28
sync/sync-sig-file-list.sh
Normal file
28
sync/sync-sig-file-list.sh
Normal file
@ -0,0 +1,28 @@
|
||||
#!/bin/bash
|
||||
# Syncs everything from staging to production
|
||||
|
||||
# Source common variables
|
||||
# shellcheck disable=SC2046,1091,1090
|
||||
source "$(dirname "$0")/common"
|
||||
|
||||
REV=${REVISION}${APPEND_TO_DIR}
|
||||
|
||||
cd "${PRODUCTION_ROOT}/${SIG_CATEGORY_STUB}" || { echo "Failed to change directory"; ret_val=1; exit 1; }
|
||||
ret_val=$?
|
||||
|
||||
if [ $ret_val -eq "0" ]; then
|
||||
# Full file list update for production root
|
||||
cd "${PRODUCTION_ROOT}/${SIG_CATEGORY_STUB}" || { echo "Failed to change directory"; exit 1; }
|
||||
echo "Starting full file list for root"
|
||||
find . > fullfilelist
|
||||
echo "Generating filelist for quick-fedora-mirror users"
|
||||
if [[ -f /usr/local/bin/create-filelist ]]; then
|
||||
# We're already here, but Justin Case wanted this
|
||||
cd "${PRODUCTION_ROOT}/${SIG_CATEGORY_STUB}" || { echo "Failed to change directory"; exit 1; }
|
||||
/bin/cp fullfiletimelist-sig fullfiletimelist-sig-old
|
||||
/usr/local/bin/create-filelist > fullfiletimelist-sig
|
||||
cp fullfiletimelist-sig fullfiletimelist
|
||||
fi
|
||||
chown 10004:10005 fullfilelist fullfiletimelist-sig fullfiletimelist
|
||||
fi
|
||||
|
@ -14,33 +14,34 @@ if [ $ret_val -eq "0" ]; then
|
||||
TARGET="${PRODUCTION_ROOT}/${CATEGORY_STUB}/${REV:0:3}"
|
||||
mkdir -p "${TARGET}"
|
||||
echo "Syncing ${REVISION}"
|
||||
sudo -l && time fpsync -o '-av --numeric-ids --no-compress --chown=10004:10005' -n 24 -t /mnt/compose/partitions "${STAGING_ROOT}/${CATEGORY_STUB}/${REV}/" "${TARGET}/"
|
||||
sudo -l && time fpsync -n 24 -o '-a --numeric-ids --no-compress --chown=10004:10005' -t /mnt/compose/partitions "${STAGING_ROOT}/${CATEGORY_STUB}/${REV}/" "${TARGET}/"
|
||||
|
||||
# Full file list update for production root
|
||||
cd "${PRODUCTION_ROOT}/" || { echo "Failed to change directory"; exit 1; }
|
||||
echo "Getting a full file list for the root dir"
|
||||
find . > fullfilelist
|
||||
if [[ -f /usr/local/bin/create-filelist ]]; then
|
||||
# We're already here, but Justin Case wanted this
|
||||
cd "${PRODUCTION_ROOT}/" || { echo "Failed to change directory"; exit 1; }
|
||||
/bin/cp fullfiletimelist-rocky fullfiletimelist-rocky-old
|
||||
/usr/local/bin/create-filelist > fullfiletimelist-rocky
|
||||
cp fullfiletimelist-rocky fullfiletimelist
|
||||
fi
|
||||
# Full file list update for rocky linux itself
|
||||
#cd "${PRODUCTION_ROOT}/" || { echo "Failed to change directory"; exit 1; }
|
||||
#echo "Getting a full file list for the root dir"
|
||||
#find . > fullfilelist
|
||||
#if [[ -f /usr/local/bin/create-filelist ]]; then
|
||||
# # We're already here, but Justin Case wanted this
|
||||
# cd "${PRODUCTION_ROOT}/" || { echo "Failed to change directory"; exit 1; }
|
||||
# /bin/cp fullfiletimelist-rocky fullfiletimelist-rocky-old
|
||||
# /usr/local/bin/create-filelist > fullfiletimelist-rocky
|
||||
# cp fullfiletimelist-rocky fullfiletimelist
|
||||
#fi
|
||||
## Full file list update for rocky linux itself
|
||||
cd "${PRODUCTION_ROOT}/${CATEGORY_STUB}/" || { echo "Failed to change directory"; exit 1; }
|
||||
# Hardlink everything except xml files
|
||||
## Hardlink everything except xml files
|
||||
echo "Hard linking"
|
||||
hardlink -x '.*\.xml.*' "${REVISION}"
|
||||
echo "Getting a full file list for the rocky dir"
|
||||
find . > fullfilelist
|
||||
if [[ -f /usr/local/bin/create-filelist ]]; then
|
||||
# We're already here, but Justin Case wanted this
|
||||
cd "${PRODUCTION_ROOT}/${CATEGORY_STUB}/" || { echo "Failed to change directory"; exit 1; }
|
||||
/bin/cp fullfiletimelist-rocky fullfiletimelist-rocky-old
|
||||
/usr/local/bin/create-filelist > fullfiletimelist-rocky
|
||||
cp fullfiletimelist-rocky fullfiletimelist
|
||||
fi
|
||||
chown 10004:10005 fullfilelist fullfiletimelist-rocky fullfiletimelist
|
||||
#echo "Getting a full file list for the rocky dir"
|
||||
#find . > fullfilelist
|
||||
#if [[ -f /usr/local/bin/create-filelist ]]; then
|
||||
# # We're already here, but Justin Case wanted this
|
||||
# cd "${PRODUCTION_ROOT}/${CATEGORY_STUB}/" || { echo "Failed to change directory"; exit 1; }
|
||||
# /bin/cp fullfiletimelist-rocky fullfiletimelist-rocky-old
|
||||
# /usr/local/bin/create-filelist > fullfiletimelist-rocky
|
||||
# cp fullfiletimelist-rocky fullfiletimelist
|
||||
#fi
|
||||
#chown 10004:10005 fullfilelist fullfiletimelist-rocky fullfiletimelist
|
||||
echo "Syncing to prod completed. Please run the file list script."
|
||||
fi
|
||||
|
||||
|
29
sync/sync-to-prod-sig.sh
Normal file
29
sync/sync-to-prod-sig.sh
Normal file
@ -0,0 +1,29 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Source common variables
|
||||
# shellcheck disable=SC2046,1091,1090
|
||||
source "$(dirname "$0")/common"
|
||||
|
||||
#if [[ $# -eq 0 ]] || [[ $# -eq 1 ]]; then
|
||||
# echo "Not enough information."
|
||||
# echo "You must use: shortname sig"
|
||||
# exit 1
|
||||
#fi
|
||||
|
||||
cd "${STAGING_ROOT}/${SIG_CATEGORY_STUB}/${MAJOR}" || { echo "Failed to change directory"; ret_val=1; exit 1; }
|
||||
ret_val=$?
|
||||
|
||||
if [ $ret_val -eq "0" ]; then
|
||||
TARGET=${PRODUCTION_ROOT}/${SIG_CATEGORY_STUB}/${MAJOR}/
|
||||
mkdir -p "${TARGET}"
|
||||
# disabling because none of our files should be starting with dashes. If they
|
||||
# are something is *seriously* wrong here.
|
||||
# shellcheck disable=SC2035
|
||||
sudo -l && find **/* -maxdepth 0 -type d | parallel --will-cite -j 18 sudo rsync -av --chown=10004:10005 --progress --relative --human-readable \
|
||||
{} "${TARGET}"
|
||||
|
||||
cd "${PRODUCTION_ROOT}/${SIG_CATEGORY_STUB}/" || { echo "Failed to change directory"; exit 1; }
|
||||
echo "Hard linking"
|
||||
hardlink -x '.*\.xml.*' "${MAJOR}"
|
||||
echo "Syncing to prod completed. Please run the file list script."
|
||||
fi
|
@ -33,27 +33,29 @@ if [ $ret_val -eq "0" ]; then
|
||||
fi
|
||||
|
||||
# Full file list update for production root
|
||||
cd "${PRODUCTION_ROOT}/" || echo { echo "Failed to change directory"; exit 1; }
|
||||
find . > fullfilelist
|
||||
if [[ -f /usr/local/bin/create-filelist ]]; then
|
||||
# We're already here, but Justin Case wanted this
|
||||
cd "${PRODUCTION_ROOT}/" || { echo "Failed to change directory"; exit 1; }
|
||||
/bin/cp fullfiletimelist-rocky fullfiletimelist-rocky-old
|
||||
/usr/local/bin/create-filelist > fullfiletimelist-rocky
|
||||
cp fullfiletimelist-rocky fullfiletimelist
|
||||
fi
|
||||
# Full file list update for rocky linux itself
|
||||
#cd "${PRODUCTION_ROOT}/" || echo { echo "Failed to change directory"; exit 1; }
|
||||
#find . > fullfilelist
|
||||
#if [[ -f /usr/local/bin/create-filelist ]]; then
|
||||
# # We're already here, but Justin Case wanted this
|
||||
# cd "${PRODUCTION_ROOT}/" || { echo "Failed to change directory"; exit 1; }
|
||||
# /bin/cp fullfiletimelist-rocky fullfiletimelist-rocky-old
|
||||
# /usr/local/bin/create-filelist > fullfiletimelist-rocky
|
||||
# cp fullfiletimelist-rocky fullfiletimelist
|
||||
#fi
|
||||
## Full file list update for rocky linux itself
|
||||
cd "${PRODUCTION_ROOT}/${CATEGORY_STUB}/" || { echo "Failed to change directory"; exit 1; }
|
||||
# Hardlink everything except xml files
|
||||
## Hardlink everything except xml files
|
||||
echo "Hard linking"
|
||||
hardlink -x '.*\.xml.*' "${REVISION}"
|
||||
find . > fullfilelist
|
||||
if [[ -f /usr/local/bin/create-filelist ]]; then
|
||||
# We're already here, but Justin Case wanted this
|
||||
cd "${PRODUCTION_ROOT}/${CATEGORY_STUB}/" || { echo "Failed to change directory"; exit 1; }
|
||||
/bin/cp fullfiletimelist-rocky fullfiletimelist-rocky-old
|
||||
/usr/local/bin/create-filelist > fullfiletimelist-rocky
|
||||
cp fullfiletimelist-rocky fullfiletimelist
|
||||
fi
|
||||
chown 10004:10005 fullfilelist fullfiletimelist-rocky fullfiletimelist
|
||||
#find . > fullfilelist
|
||||
#if [[ -f /usr/local/bin/create-filelist ]]; then
|
||||
# # We're already here, but Justin Case wanted this
|
||||
# cd "${PRODUCTION_ROOT}/${CATEGORY_STUB}/" || { echo "Failed to change directory"; exit 1; }
|
||||
# /bin/cp fullfiletimelist-rocky fullfiletimelist-rocky-old
|
||||
# /usr/local/bin/create-filelist > fullfiletimelist-rocky
|
||||
# cp fullfiletimelist-rocky fullfiletimelist
|
||||
#fi
|
||||
#chown 10004:10005 fullfilelist fullfiletimelist-rocky fullfiletimelist
|
||||
echo "Syncing to prod completed. Please run the file list script."
|
||||
fi
|
||||
|
||||
|
@ -26,7 +26,7 @@ if [ $ret_val -eq "0" ]; then
|
||||
# shellcheck disable=SC2035
|
||||
#sudo -l && find **/* -maxdepth 0 -type d | parallel --will-cite -j 18 sudo rsync -av --chown=10004:10005 --progress --relative --human-readable \
|
||||
# {} "${TARGET}"
|
||||
sudo -l && time fpsync -o '-av --numeric-ids --no-compress --chown=10004:10005' -n 24 -t /mnt/compose/partitions "/mnt/compose/${MAJ}/latest-${SHORT}-${MAJ}${PROFILE}/compose/" "${TARGET}/"
|
||||
sudo -l && time fpsync -n 24 -o '-a --numeric-ids --no-compress --chown=10004:10005' -t /mnt/compose/partitions "/mnt/compose/${MAJ}/latest-${SHORT}-${MAJ}${PROFILE}/compose/" "${TARGET}/"
|
||||
|
||||
# This is temporary until we implement rsync into empanadas
|
||||
#if [ -f "COMPOSE_ID" ]; then
|
||||
|
40
sync/sync-to-staging-fpsync-testing.sh
Normal file
40
sync/sync-to-staging-fpsync-testing.sh
Normal file
@ -0,0 +1,40 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Source common variables
|
||||
# shellcheck disable=SC2046,1091,1090
|
||||
source "$(dirname "$0")/common"
|
||||
|
||||
if [[ $# -eq 0 ]]; then
|
||||
echo "You must specify a short name."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Major Version (eg, 8)
|
||||
MAJ=${RLVER}
|
||||
# Short name (eg, NFV, extras, Rocky, gluster9)
|
||||
SHORT=${1}
|
||||
PROFILE=${2}
|
||||
|
||||
cd "/mnt/compose/${MAJ}/latest-${SHORT}-${MAJ}${PROFILE}/compose" || { echo "Failed to change directory"; ret_val=1; exit 1; }
|
||||
ret_val=$?
|
||||
|
||||
if [ $ret_val -eq "0" ]; then
|
||||
TARGET="${STAGING_ROOT}/${CATEGORY_STUB}/${REV}"
|
||||
mkdir -p "${TARGET}"
|
||||
# disabling because none of our files should be starting with dashes. If they
|
||||
# are something is *seriously* wrong here.
|
||||
# shellcheck disable=SC2035
|
||||
#sudo -l && find **/* -maxdepth 0 -type d | parallel --will-cite -j 18 sudo rsync -av --chown=10004:10005 --progress --relative --human-readable \
|
||||
# {} "${TARGET}"
|
||||
sudo -l && time fpsync -n 18 -o '-a --numeric-ids --no-compress --chown=10004:10005' -t /mnt/compose/partitions "/mnt/compose/${MAJ}/latest-${SHORT}-${MAJ}${PROFILE}/compose/" "${TARGET}/"
|
||||
|
||||
# This is temporary until we implement rsync into empanadas
|
||||
#if [ -f "COMPOSE_ID" ]; then
|
||||
# cp COMPOSE_ID "${TARGET}"
|
||||
# chown 10004:10005 "${TARGET}/COMPOSE_ID"
|
||||
#fi
|
||||
|
||||
#if [ -d "metadata" ]; then
|
||||
# rsync -av --chown=10004:10005 --progress --relative --human-readable metadata "${TARGET}"
|
||||
#fi
|
||||
fi
|
@ -4,9 +4,9 @@
|
||||
# shellcheck disable=SC2046,1091,1090
|
||||
source "$(dirname "$0")/common"
|
||||
|
||||
if [[ $# -eq 0 ]] || [[ $# -eq 1 ]]; then
|
||||
if [[ $# -eq 0 ]]; then
|
||||
echo "Not enough information."
|
||||
echo "You must use: shortname sig"
|
||||
echo "You must use: sig"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
@ -17,11 +17,11 @@ SHORT=${1}
|
||||
# Note, this should be lowercase. eg, storage.
|
||||
SIG=${2}
|
||||
|
||||
cd "/mnt/compose/${MAJ}/latest-${SHORT}-${MAJ}/compose" || { echo "Failed to change directory"; ret_val=1; exit 1; }
|
||||
cd "/mnt/compose/${MAJ}/latest-SIG-${SHORT}-${MAJ}/compose" || { echo "Failed to change directory"; ret_val=1; exit 1; }
|
||||
ret_val=$?
|
||||
|
||||
if [ $ret_val -eq "0" ]; then
|
||||
TARGET=${STAGING_ROOT}/${CATEGORY_STUB}/${REV}/${SIG}
|
||||
TARGET=${STAGING_ROOT}/${SIG_CATEGORY_STUB}/
|
||||
mkdir -p "${TARGET}"
|
||||
# disabling because none of our files should be starting with dashes. If they
|
||||
# are something is *seriously* wrong here.
|
||||
|
Loading…
Reference in New Issue
Block a user