Compare commits

..

No commits in common. "devel" and "fix/vagrant-vmx" have entirely different histories.

158 changed files with 1343 additions and 5879 deletions

View File

@ -17,17 +17,17 @@ jobs:
uses: actions/checkout@v2
- name: Set up QEMU
uses: docker/setup-qemu-action@v3
uses: docker/setup-qemu-action@v1
# https://github.com/docker/setup-buildx-action
- name: Set up Docker Buildx
id: buildx
uses: docker/setup-buildx-action@v3
uses: docker/setup-buildx-action@v1
with:
install: true
- name: Login to ghcr
if: github.event_name != 'pull_request'
uses: docker/login-action@v3
uses: docker/login-action@v1
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
@ -35,7 +35,7 @@ jobs:
- name: Build and push
id: docker_build
uses: docker/build-push-action@v5
uses: docker/build-push-action@v2
with:
builder: ${{ steps.buildx.outputs.name }}
platforms: linux/amd64,linux/arm64,linux/s390x,linux/ppc64le
@ -44,4 +44,4 @@ jobs:
push: ${{ github.event_name != 'pull_request' }}
tags: ghcr.io/rocky-linux/sig-core-toolkit:latest
cache-from: type=gha
cache-to: type=inline
cache-to: type=gha,mode=max

2
.gitignore vendored
View File

@ -1 +1 @@
*.sw[a-z]
.swp

View File

@ -5,20 +5,22 @@ These are a set of scripts that are designed to test the core functionality
of a Rocky Linux system. They are designed to work on current versions of
Rocky and are used to test a system as a Release Engineering self-QA but
can be used by others for their own personal testing (under the assumption
that you just want to see what happens, we don't judge.
that you just want to see what happens, we don't judge :).
These tests *must* pass for a X.0 release to be considered "Core Validated".
These tests *must* pass for a release to be considered "Core Validated"
Checking against the upstream repositories for package matches are not enough
and are/will be addressed by other tools.
* common -> Functions that our scripts and tests may or may not use. Templates
and other files should come here too under common/files and
scripts that use them should reference them as `./common/files/...`
* core -> Core functionality and testing. For example, packages and service
functionality.
* lib -> Library tests (these may be done elsewhere, such as openqa)
* lib -> Library tests (these may be done elsewhere)
* log -> Log output. This repository has example logs of running on Rocky
Linux.
* modules -> Tests for module streams and their basic tests
* stacks -> Software stacks, think like LAMP (may be done elsewhere, such as openqa)
* stacks -> Software stacks, think like LAMP.
How to Run
----------
@ -152,9 +154,6 @@ system.
No. The point is to test Rocky packages, not EPEL. There are also package
differences that will break (eg: nc -> nmap-ncat vs netcat).
### What about CRB or extras?
It may say it's a failure, but it will continue anyway.
Current Tree
------------
```

View File

@ -46,15 +46,6 @@ function r_checkEPELEnabled() {
return $?
}
function r_checkTmpNoExec() {
grep 'tmp' /etc/fstab | grep -q noexec
tmpexec=$?
if [ "$tmpexec" -eq "0" ]; then
r_log "internal" "WARN: noexec is set for temporary directories. Some tests may fail."
fi
}
################################################################################
# Functions that deal with (p)ackages
@ -113,11 +104,7 @@ function p_getPackageArch() {
}
function p_getDist() {
rpm -q --whatprovides redhat-release --queryformat '%{version}\n' | cut -d'.' -f1
}
function p_getMinorVersion() {
rpm -q --whatprovides redhat-release --queryformat '%{version}\n' | cut -d'.' -f2
rpm -q "$(rpm -qf /etc/redhat-release)" --queryformat '%{version}\n' | cut -d'.' -f1
}
################################################################################
@ -222,16 +209,13 @@ function m_recycleLog() {
rl_ver=$(p_getDist)
rl_arch=$(m_getArch)
rl_minor_ver=$(p_getMinorVersion)
export rl_ver
export rl_arch
export rl_minor_ver
export -f r_log
export -f r_checkExitStatus
export -f r_processor
export -f r_checkEPELEnabled
export -f r_checkTmpNoExec
export -f p_installPackageNormal
export -f p_installPackageNoWeaks
export -f p_removePackage
@ -240,7 +224,6 @@ export -f p_resetModule
export -f p_getPackageRelease
export -f p_getPackageArch
export -f p_getDist
export -f p_getMinorVersion
export -f m_serviceCycler
export -f m_checkForPort
export -f m_assertCleanExit

View File

@ -1 +0,0 @@
Basic tests, such as repos

View File

@ -1,56 +0,0 @@
#!/usr/bin/env python3
# label <label@rockylinux.org>
import datetime
import sys
import dnf
import dnf.exceptions
# pylint: disable=unnecessary-lambda-assignment
now = datetime.datetime.today().strftime("%m-%d-%Y %T")
class DnfQuiet(dnf.Base):
"""
DNF object
This is in the event we need special functions
"""
def __init__(self):
dnf.Base.__init__(self)
def main():
"""
Main run
"""
dnfobj = DnfQuiet()
releasever = dnfobj.conf.releasever
try:
dnfobj.read_all_repos()
# pylint: disable=bare-except
except:
print(f'[-] {now} -> Could not read repos', file=sys.stderr)
sys.exit(1)
rocky_default_repos = {
'8': ['baseos', 'appstream', 'extras'],
'9': ['baseos', 'appstream', 'extras']
}.get(releasever, None)
if not rocky_default_repos:
print(f'[-] {now} -> Not a Rocky Linux system')
sys.exit(1)
print(f'[-] {now} -> Checking if non-default repo is enabled')
_not_allowed=False
for repo in list(dnfobj.repos.iter_enabled()):
if not repo.id in rocky_default_repos:
print(f'[-] {now} -> {repo.id} is enabled and should be disabled')
_not_allowed=True
if _not_allowed:
print(f'[-] {now} -> FAIL - There are extra repos enabled')
sys.exit(1)
print(f'[-] {now} -> PASS')
sys.exit(0)
if __name__ == "__main__":
main()

View File

@ -1,8 +1,6 @@
#!/bin/bash
r_log "acl" "Install the acl package"
p_installPackageNormal acl
p_installPackageNormal attr
# This normally is not needed.
#r_log "acl" "Remount filesystems with ACL support"
#mount -o remount,acl /
r_log "acl" "Remount filesystems with ACL support (this normally should not be needed)"
mount -o remount,acl /
sleep 3

View File

@ -2,7 +2,6 @@
ACLFILE=/tmp/testfile_acl
r_log "acl" "Test that the acl get and set functions work"
touch "${ACLFILE}"
trap '/bin/rm -f ${ACLFILE}' EXIT
# Use setfacl for readonly
r_log "acl" "Set readonly ACL for the user nobody"
@ -13,3 +12,4 @@ r_log "acl" "Verifying that the nobody user is set to read only"
getfacl "${ACLFILE}" | grep -q 'user:nobody:r--'
r_checkExitStatus $?
/bin/rm -f "${ACLFILE}"

View File

@ -1,22 +0,0 @@
#!/bin/bash
ACLIMG=/tmp/testacl.img
r_log "acl" "Test the use of xattr"
touch "${ACLIMG}"
trap '/bin/rm -f ${ACLIMG}' EXIT
# Use setfacl for readonly
r_log "acl" "Create image"
dd if=/dev/zero of=${ACLIMG} bs=1024000 count=100
echo -e 'y\n' | mkfs.ext3 "${ACLIMG}"
mkdir /mnt/xattr
mount -t ext3 -o loop,user_xattr "${ACLIMG}" /mnt/xattr
touch /mnt/xattr/testfile
r_log "acl" "Apply attrs as needed"
setfattr -n user.nobody /mnt/xattr/testfile
getfattr /mnt/xattr/testfile | grep -q 'user.nobody'
final_status=$?
umount /mnt/xattr
r_checkExitStatus $final_status

View File

@ -1,7 +1,6 @@
#!/bin/bash
r_log "archive" "Test bzip/bzcat/bunzip"
FILE=/var/tmp/bziptest.txt
trap '/bin/rm -f ${FILE}' EXIT
cat > "$FILE" <<EOF
testing text
@ -24,3 +23,5 @@ fi
grep -q 'testing text' "${FILE}"
r_checkExitStatus $?
/bin/rm -f "${FILE}*"

View File

@ -4,9 +4,6 @@ r_log "archive" "Test gzip/zcat/gunzip"
FILE=/var/tmp/gzip-test.txt
MD5HASH=e6331c582fbad6653832860f469f7d1b
# clean up
trap '/bin/rm $FILE* &> /dev/null && /bin/rm -rf /var/tmp/gziptest &> /dev/null' EXIT
# Double check that stuff is cleared out
/bin/rm $FILE* &> /dev/null
/bin/rm -rf /var/tmp/gziptest &> /dev/null
@ -110,3 +107,7 @@ tar -czf $FILE.tgz $FILE &> /dev/null
gunzip $FILE.tgz
[ -e $FILE.tar ]
r_checkExitStatus $?
# clean up
/bin/rm $FILE* &> /dev/null
/bin/rm -rf /var/tmp/gziptest &> /dev/null

View File

@ -2,8 +2,6 @@
r_log "archive" "Checking gzexe"
r_log "archive" "Creating archive"
FILE=/var/tmp/gzexe-test-script
trap '/bin/rm -f $FILE* 2>/dev/null' EXIT
/bin/rm -f $FILE* &>/dev/null
cat > $FILE <<EOF
@ -20,3 +18,5 @@ r_log "archive" "Test gzexe"
r_log "archive" "Check that it actually runs"
$FILE | grep -q "Hello!"
r_checkExitStatus $?
/bin/rm -f $FILE* 2>/dev/null

View File

@ -1,7 +1,6 @@
#!/bin/bash
r_log "archive" "Check zcmp and zdiff"
BASEFILE="/var/tmp/gziptest"
trap '/bin/rm -f ${BASEFILE}*' EXIT
/bin/rm -f ${BASEFILE}
cat > ${BASEFILE}.1 <<EOF
@ -16,3 +15,5 @@ r_log "archive" "Check zcmp"
r_log "archive" "Check zdiff"
/bin/zdiff ${BASEFILE}.1.gz ${BASEFILE}.2.gz || r_checkExitStatus 1
/bin/rm -f ${BASEFILE}*

View File

@ -2,7 +2,6 @@
r_log "archive" "Testing zforce"
BASEFILE="/var/tmp/abcdefg"
trap '/bin/rm "$BASEFILE.gz"' EXIT
/bin/rm $BASEFILE* &>/dev/null
cat > $BASEFILE <<EOF
@ -15,3 +14,5 @@ mv $BASEFILE.gz $BASEFILE
zforce $BASEFILE || r_checkExitStatus 1
[ -e "$BASEFILE.gz" ]
r_checkExitStatus $?
/bin/rm "$BASEFILE.gz"

View File

@ -1,7 +1,6 @@
#!/bin/bash
r_log "archive" "Testing zgrep"
BASEFILE=/var/tmp/zgreptest
trap '/bin/rm $BASEFILE*' EXIT
/bin/rm $BASEFILE* &> /dev/null
cat > $BASEFILE <<EOF
@ -12,3 +11,5 @@ gzip $BASEFILE
zgrep -q 'Green Obsidian' $BASEFILE.gz
r_checkExitStatus $?
/bin/rm $BASEFILE*

View File

@ -4,7 +4,6 @@ r_log "archive" "Test tar create and extract"
TARDIR="/var/tmp/tartest"
FILE1="$TARDIR/test.1.txt"
FILE2="$TARDIR/test.2.txt"
trap '/bin/rm -rf /var/tmp/tarfile.tar $TARDIR' EXIT
mkdir -p $TARDIR
cat > $FILE1 <<EOF
@ -33,3 +32,5 @@ if [ $RES1 == 0 ] && [ $RES2 == 0 ]; then
fi
r_checkExitStatus $ret_val
/bin/rm -rf /var/tmp/tarfile.tar $TARDIR

View File

@ -1,7 +1,6 @@
#!/bin/bash
r_log "archive" "Check xzcmp and xzdiff"
BASEFILE="/var/tmp/xztest"
trap '/bin/rm -f ${BASEFILE}*' EXIT
/bin/rm -f ${BASEFILE}
cat > ${BASEFILE}.1 <<EOF
@ -16,3 +15,5 @@ r_log "archive" "Check xzcmp"
r_log "archive" "Check xzdiff"
/bin/zdiff ${BASEFILE}.1.xz ${BASEFILE}.2.xz || r_checkExitStatus 1
/bin/rm -f ${BASEFILE}*

View File

@ -4,7 +4,6 @@ r_log "archive" "Test zip create and extract"
ZIPDIR="/var/tmp/ziptest"
FILE1="$ZIPDIR/test.1.txt"
FILE2="$ZIPDIR/test.2.txt"
trap '/bin/rm -rf /var/tmp/zipfile.zip $ZIPDIR' EXIT
mkdir -p $ZIPDIR
cat > $FILE1 <<EOF
@ -32,4 +31,6 @@ if [ $RES1 == 0 ] && [ $RES2 == 0 ]; then
ret_val=0
fi
r_checkExitStatus "$ret_val"
r_checkExitStatus $ret_val
/bin/rm -rf /var/tmp/zipfile.zip $ZIPDIR

View File

@ -2,7 +2,6 @@
r_log "archive" "Testing lzop compress and decompress"
LZOFILE=/var/tmp/obsidian.txt
trap '/bin/rm ${LZOFILE}' EXIT
echo 'Green Obsidian is the release name' > ${LZOFILE}
@ -14,5 +13,5 @@ lzop -d ${LZOFILE}.lzo -o ${LZOFILE}
/bin/rm ${LZOFILE}.lzo
grep -q 'Green Obsidian' ${LZOFILE}
ret_val="$?"
r_checkExitStatus "$ret_val"
/bin/rm ${LZOFILE}

View File

@ -2,8 +2,6 @@
ATTRTEST="/var/tmp/attrtest.img"
ATTRMNT="/mnt/attrtest"
trap 'umount /mnt/attrtest ; /bin/rm -f ${ATTRTEST} ; /bin/rm -rf ${ATTRMNT}' EXIT
r_log "attr" "Checking that *attr works"
dd if=/dev/zero of="${ATTRTEST}" bs=1024000 count=100 &>/dev/null
r_checkExitStatus $?
@ -16,3 +14,8 @@ setfattr -n user.test "${ATTRMNT}/testfile"
getfattr "${ATTRMNT}/testfile" | grep -oq "user.test"
r_checkExitStatus $?
# Cleanup
umount /mnt/attrtest
/bin/rm -f "${ATTRTEST}"
/bin/rm -rf "${ATTRMNT}"

View File

@ -1,6 +1,5 @@
#!/bin/bash
r_log "coreutils" "Testing cat"
trap "/bin/rm /var/tmp/cattest" EXIT
cat > /var/tmp/cattest <<EOF
Green Obsidian
@ -8,3 +7,5 @@ EOF
grep -q "Green Obsidian" /var/tmp/cattest
r_checkExitStatus $?
/bin/rm /var/tmp/cattest

View File

@ -1,6 +1,6 @@
#!/bin/bash
r_log "coreutils" "Testing readlink"
trap "/bin/rm /var/tmp/listen" EXIT
ln -s /var/tmp/talk /var/tmp/listen
readlink /var/tmp/listen | grep -q "/var/tmp/talk"
r_checkExitStatus $?
/bin/rm /var/tmp/listen

View File

@ -1,6 +1,5 @@
#!/bin/bash
r_log "coreutils" "Test hash sum tools"
trap '/bin/rm ${HASHFILE}' EXIT
HASHFILE=/var/tmp/obsidian
echo "Green Obsidian is our release name" > ${HASHFILE}
@ -23,3 +22,5 @@ r_checkExitStatus $?
r_log "coreutils" "Test sha512sum"
/usr/bin/sha512sum ${HASHFILE} | grep -q e50554c29a5cb7bd04279d3c0918e486024c79c4b305a2e360a97d4021dacf56ce0d17fa6e6a0e81ad03d5fb74fbe2d50cce6081c2c277f22b958cdae978a2f5
r_checkExitStatus $?
/bin/rm ${HASHFILE}

View File

@ -1,6 +1,5 @@
#!/bin/bash
r_log "coreutils" "Testing touch and ls"
trap '/bin/rm /tmp/touch-?' EXIT
r_log "coreutils" "Touch files with specific dates"
touch -t 199104230420 /tmp/touch-1
@ -11,3 +10,5 @@ r_log "coreutils" "Verify that the oldest file is last"
ls -lt /tmp/touch-? | tail -n 1 | grep -q 'touch-1'
r_checkExitStatus $?
/bin/rm /tmp/touch-?

View File

@ -1,6 +1,5 @@
#!/bin/bash
r_log "coreutils" "Ensure uniq works as expected"
trap '/bin/rm /var/tmp/uniq' EXIT
cat > /var/tmp/uniq <<EOF
Rocky
@ -15,3 +14,4 @@ EOF
uniq -d /var/tmp/uniq | wc -l | grep -q 2 && uniq -u /var/tmp/uniq | wc -l | grep -q 4
r_checkExitStatus $?
/bin/rm /var/tmp/uniq

View File

@ -2,7 +2,6 @@
r_log "coreutils" "Ensure wc works as expected"
r_log "coreutils" "This should have already been done with uniq"
# Context: we should probably test some switches...
trap "/bin/rm /var/tmp/wc" EXIT
cat > /var/tmp/wc <<EOF
Rocky
@ -22,3 +21,5 @@ wc -L /var/tmp/wc | grep -q 8 && \
wc -w /var/tmp/wc | grep -q 8
r_checkExitStatus $?
/bin/rm /var/tmp/wc

View File

@ -5,8 +5,6 @@ OUTTER=/var/tmp/cpio/out
INNER=/var/tmp/cpio/in
PASSER=/var/tmp/cpio/pass
trap '/bin/rm -rf /var/tmp/cpio' EXIT
# Nothing should be here. Clean up first.
[ -d /var/tmp/cpio ] && /bin/rm -rf /var/tmp/cpio
@ -27,7 +25,7 @@ popd || exit 1
r_log "cpio" "Test basic passthrough"
pushd "$INNER" || exit 1
find . | cpio -pd "$PASSER"
find /tmp | cpio -pd "$PASSER"
r_checkExitStatus $?
popd || exit 1

View File

@ -15,4 +15,3 @@ r_checkExitStatus $?
r_log "cracklib" "Testing a complicated password"
echo -e "2948_Obaym-" | cracklib-check | grep -q "OK"
r_checkExitStatus $?

View File

@ -1,8 +1,6 @@
#!/bin/bash
r_log "cron" "Testing hourly cron jobs"
trap '/bin/rm /etc/cron.{weekly,daily,hourly}/rocky.sh' EXIT
cat > /etc/cron.hourly/rocky.sh <<EOF
#!/bin/bash
echo "obsidian"
@ -36,3 +34,5 @@ chmod +x /etc/cron.weekly/rocky.sh
run-parts /etc/cron.weekly | grep -q "obsidian"
r_checkExitStatus $?
/bin/rm /etc/cron.{weekly,daily,hourly}/rocky.sh

View File

@ -1,8 +1,9 @@
#!/bin/bash
r_log "file" "Check that we can see a symlink"
FILE_PATH=/var/tmp/linktest
trap '/bin/rm ${FILE_PATH}' EXIT
MIME="inode/symlink"
ln -s /etc/issue $FILE_PATH
file -i $FILE_PATH | grep -q "${MIME}"
r_checkExitStatus $?
/bin/rm /var/tmp/linktest

View File

@ -2,7 +2,6 @@
r_log "findutils" "Testing basic find stuff"
TMPDIR=/var/tmp/find
trap '/bin/rm -rf $TMPDIR' EXIT
[ -e $TMPDIR ] && rm -rf "$TMPDIR"
@ -38,8 +37,8 @@ r_log "findutils" "Perform for xargs test: fails with spaces in the name"
# shellcheck disable=SC2038
find "$TMPDIR" -type f | xargs ls &> /dev/null && { r_log "findutils" "Why did this get a 0 exit?"; exit "$FAIL"; }
ret_val=$?
if [ "$ret_val" -ne "0" ]; then
r_checkExitStatus 0
else
r_checkExitStatus 1
if [ "$ret_val" -ne 0 ]; then
r_checkExitStatus $?
fi
rm -rf "$TMPDIR"

View File

@ -1,14 +1,7 @@
#!/bin/bash
function cleanup() {
cp /etc/raddb/users.backup /etc/raddb/users
rm -rf /etc/raddb/users.backup
systemctl stop radiusd.service
}
r_log "freeradius" "Test basic freeradius functionality"
r_log "freeradius" "Configure freeradius"
trap cleanup EXIT
r_log "freeradius" "Configure freeradius"
cp /etc/raddb/users /etc/raddb/users.backup
cat >> /etc/raddb/users << EOF
rocky Cleartext-Password := "rocky"
@ -20,3 +13,7 @@ systemctl start radiusd.service
sleep 1
echo "User-Name=rocky,User-Password=rocky " | radclient -x localhost:1812 auth testing123 | grep -q 'Access-Accept'
r_checkExitStatus $?
cp /etc/raddb/users.backup /etc/raddb/users
rm -rf /etc/raddb/users.backup
systemctl stop radiusd.service

View File

@ -1,6 +1,5 @@
#!/bin/bash
r_log "git" "Test basic git clones"
trap 'rm -rf $TMPREPO' EXIT
WORKDIR=$(pwd)
TMPREPO=/var/tmp/repo

View File

@ -1,6 +1,5 @@
#!/bin/bash
r_log "httpd" "Test basic authentication functionality"
trap "rm /etc/httpd/conf.d/test-basic-auth.conf ; m_serviceCycler httpd reload" EXIT
cat > /etc/httpd/conf.d/test-basic-auth.conf <<EOF
## Core basic auth test
@ -16,8 +15,9 @@ EOF
htpasswd -c -b /etc/httpd/htpasswd tester tester
mkdir -p /var/www/html/basic_auth
echo "Basic Auth Test" > /var/www/html/basic_auth/index.html
# This isn't normally needed, it should just work
restorecon -R /var/www/html
m_serviceCycler httpd cycle
curl -s -u tester:tester http://localhost/basic_auth/ | grep -q 'Basic Auth Test' > /dev/null 2>&1
r_checkExitStatus $?
rm /etc/httpd/conf.d/test-basic-auth.conf
m_serviceCycler httpd reload

View File

@ -1,12 +1,5 @@
#!/bin/bash
function cleanup() {
rm /etc/httpd/conf.d/vhost.conf
sed -i '/127.0.0.1 coretest/d' /etc/hosts
m_serviceCycler httpd reload
}
r_log "httpd" "Test basic vhost functionality"
trap cleanup EXIT
echo "127.0.0.1 coretest" >> /etc/hosts
cat > /etc/httpd/conf.d/vhost.conf << EOF
@ -21,10 +14,12 @@ EOF
mkdir -p /var/www/vhost/coretest
echo "core vhost test page" > /var/www/vhost/coretest/index.html
# This isn't normally needed, it should just work
restorecon -R /var/www/vhost
m_serviceCycler httpd cycle
curl -s http://coretest/ | grep -q 'core vhost test page' > /dev/null 2>&1
r_checkExitStatus $?
rm /etc/httpd/conf.d/vhost.conf
sed -i '/127.0.0.1 coretest/d' /etc/hosts
m_serviceCycler httpd reload

View File

@ -2,8 +2,6 @@
r_log "httpd" "Test basic php"
echo "<?php echo phpinfo(); ?>" > /var/www/html/test.php
# This isn't normally needed, it should just work
restorecon -R /var/www/html
curl -s http://localhost/test.php | grep -q 'PHP Version' > /dev/null 2>&1
r_checkExitStatus $?

View File

@ -1,15 +1,15 @@
#!/bin/bash
r_log "openssh" "Testing basic login (using sshpass)"
trap 'userdel -rf sshpasstest; unset SSHPASS' EXIT
if sshd -T | grep -q "passwordauthentication yes"; then
r_log "openssh" "Creating test user"
export SSHPASS="Blu30nyx!"
SSHPASS="Blu30nyx!"
useradd sshpasstest
echo "${SSHPASS}" | passwd --stdin sshpasstest
r_log "openssh" "Testing login"
sshpass -e ssh sshpasstest@localhost echo 'hello'
r_checkExitStatus $?
userdel -rf sshpasstest
else
r_log "openssh" "Skipping test"
exit 0

View File

@ -1,4 +0,0 @@
#!/bin/bash
#
r_log "podman" "Installing podman"
p_installPackageNormal podman

View File

@ -1,32 +0,0 @@
#!/bin/bash
r_log "podman" "Testing podman"
test_to_run=(
"podman version"
"podman info"
"podman run --rm quay.io/rockylinux/rockylinux:${RL_VER}"
"podman system service -t 1"
"touch ${HOME}/test.txt && \
podman run --rm --privileged -v ${HOME}/test.txt:/test.txt quay.io/rockylinux/rockylinux:${RL_VER} bash -c 'echo HELLO > /test.txt' && \
grep -qe 'HELLO' ${HOME}/test.txt && \
rm -f ${HOME}/test.txt"
"printf \"FROM quay.io/rockylinux/rockylinux:${RL_VER}\nCMD echo 'HELLO'\n\" > ${HOME}/Containerfile && \
podman build -t test:latest -f ${HOME}/Containerfile && \
podman image rm localhost/test:latest && \
rm -rf ${HOME}/Containerfile"
)
tmpoutput="$(mktemp)"
trap 'rm -f ${tmpoutput}' EXIT
for command in "${test_to_run[@]}"; do
r_log "podman" "Running $0: ${command}"
if ! eval "${command}" > "${tmpoutput}" 2>&1; then
r_log "podman" "${command} has failed."
cat "${tmpoutput}"
exit 1
else
r_checkExitStatus 0
fi
done

View File

@ -1,31 +0,0 @@
#!/bin/bash
r_log "podman" "Testing podman sockets"
useradd podman-remote
loginctl enable-linger podman-remote
tmpoutput="$(mktemp)"
trap 'loginctl terminate-user podman-remote && loginctl disable-linger podman-remote && sleep 1 && userdel -r podman-remote && rm -f ${tmpoutput}' EXIT
sleep 3
su -l podman-remote > "${tmpoutput}" 2>&1 <<EOF
set -e
export XDG_RUNTIME_DIR=/run/user/\$(id -u)
systemctl --user enable --now podman.socket
podman --url unix://run/user/\$(id -u)/podman/podman.sock run --name port-mapping-test -d -p 8080:80 docker.io/nginx
pid=\$(systemctl --user show --property MainPID --value podman.service)
while [ "\${pid}" -ne 0 ] && [ -d /proc/\${pid} ]; do sleep 1; echo "Waiting for podman to exit"; done
podman --url unix://run/user/\$(id -u)/podman/podman.sock ps | grep -q -e port-mapping-test
podman --url unix://run/user/\$(id -u)/podman/podman.sock container rm -f port-mapping-test
systemctl --user disable --now podman.socket
EOF
ret_val=$?
if [ "$ret_val" -ne 0 ]; then
cat "${tmpoutput}"
r_checkExitStatus 1
fi
r_checkExitStatus 0

View File

@ -1,6 +1,5 @@
#!/bin/bash
r_log "postfix" "Install postfix (requires stop of other pieces)"
# This is OK if it fails - This is also not logged except in stderr
m_serviceCycler sendmail stop
p_installPackageNormal postfix nc dovecot openssl
m_serviceCycler postfix enable

View File

@ -2,17 +2,6 @@
r_log "postfix" "Test postfix with TLS"
DROPDIR=/var/tmp/postfix
function cleanup() {
mv /etc/postfix/main.cf.backup /etc/postfix/main.cf
mv /etc/dovecot/dovecot.conf.backup /etc/dovecot/dovecot.conf
rm /etc/pki/tls/certs/mail.crt
rm /etc/pki/tls/private/mail.key
rm -rf $DROPDIR/mail.*
rm -rf /var/tmp/postfix
}
trap cleanup EXIT
cp -a /etc/postfix/main.cf /etc/postfix/main.cf.backup
cp -a /etc/dovecot/dovecot.conf /etc/dovecot/dovecot.conf.backup
@ -70,4 +59,11 @@ r_log "postfix" "Testing that postfix offers STARTTLS"
echo "ehlo test" | nc -w 3 127.0.0.1 25 | grep -q "STARTTLS"
ret_val=$?
r_checkExitStatus $ret_val
mv /etc/postfix/main.cf.backup /etc/postfix/main.cf
mv /etc/dovecot/dovecot.conf.backup /etc/dovecot/dovecot.conf
rm /etc/pki/tls/certs/mail.crt
rm /etc/pki/tls/certs/mail.key
rm -rf $DROPDIR/mail.*
rm -rf /var/tmp/postfix
r_checkExitStatus $?

View File

@ -1,19 +0,0 @@
#!/bin/bash
# Check that the release package is 1.X
r_log "rocky release" "Checking that the package is at least X.Y-1.B"
RELEASE_VER="$(rpm -q rocky-release --qf '%{RELEASE}')"
RELNUM="${RELEASE_VER:0:1}"
if [ "${RELNUM}" -ge "1" ]; then
if [[ "${RELEASE_VER:0:3}" =~ ^${RELNUM}.[[:digit:]] ]]; then
ret_val="0"
else
r_log "rocky release" "FAIL: The release package is not in X.Y-A.B format"
ret_val="1"
fi
else
r_log "rocky release" "FAIL: The release package likely starts with 0 and is not considered production ready."
ret_val="1"
fi
r_checkExitStatus $ret_val

View File

@ -8,12 +8,7 @@ if [ ! -d /sys/firmware/efi ]; then
exit 0
fi
else
if [[ "$rl_arch" == "x86_64" ]]; then
p_installPackageNormal pesign
pesign --show-signature --in /boot/efi/EFI/rocky/shim.efi | grep -Eq "Microsoft Windows UEFI Driver Publisher"
r_checkExitStatus $?
else
r_log "secureboot" "x86_64 is the only supported secureboot arch at this time"
exit 0
fi
p_installPackageNormal pesign
pesign --show-signature --in /boot/efi/EFI/rocky/shim.efi | grep -Eq "Microsoft Windows UEFI Driver Publisher"
r_checkExitStatus $?
fi

View File

@ -1,11 +1,4 @@
#!/bin/bash
function cleanup() {
pwconv
rm -rf /var/tmp/pwunconv /var/tmp/pwconv
}
trap cleanup EXIT
r_log "shadow" "Check that pwck can use correct files"
pwck -rq ./common/files/correct-passwd ./common/files/correct-shadow
r_checkExitStatus $?
@ -15,11 +8,9 @@ pwck -rq ./common/files/incorrect-passwd ./common/files/incorrect-shadow
ret_val=$?
if [ "$ret_val" -eq 0 ]; then
r_log "shadow" "They're correct."
r_checkExitStatus 1
else
r_log "shadow" "They're incorrect."
r_checkExitStatus 0
exit 1
fi
r_checkExitStatus 0
r_log "shadow" "Check that pwconv is functional"
mkdir -p /var/tmp/pwconv

View File

@ -1,3 +0,0 @@
#!/bin/bash
r_log "pdf" "Install enscript, ghostscript, and poppler"
p_installPackageNormal fontconfig @fonts enscript ghostscript poppler-utils

View File

@ -1,23 +0,0 @@
#!/bin/bash
r_log "pdf" "Create a PDF from postscript from text, convert it back to text and check"
trap 'rm -rf $PSFILE $PDFFILE $TESTFILE' EXIT
TOFIND="BlueOnyx"
PSFILE="/var/tmp/test.ps"
PDFFILE="/var/tmp/test.pdf"
TESTFILE="/var/tmp/psresult"
encript -q -p $PSFILE /etc/rocky-release
r_log "pdf" "Check created file"
grep -q $TOFIND $PSFILE
pdf_ret_val=$?
r_checkExitStatus $pdf_ret_val
ps2pdf $PSFILE $PDFFILE
pdftotext -q $PDFFILE $TESTFILE
r_log "pdf" "Checking after conversion to text"
grep -q $TOFIND $TESTFILE
text_ret_val=$?
r_checkExitStatus $text_ret_val

View File

@ -38,8 +38,6 @@ if [[ "$is_epel" == "0" ]]; then
exit 1
fi
r_checkTmpNoExec
r_log "internal" "Starting Release Engineering Core Tests"
################################################################################
@ -62,7 +60,7 @@ fi
# TODO: get some stacks and lib in there
r_processor <(/usr/bin/find ./core -type f | sort -t'/')
r_processor <(/usr/bin/find ./lib -type f | sort -t'/')
#r_processor <(/usr/bin/find ./lib -type f | sort -t'/')
#r_processor <(/usr/bin/find ./stacks -type f | sort -t'/')
r_log "internal" "Core Tests completed"

View File

@ -1,17 +1,17 @@
# All imports are here
import glob
import hashlib
import logging
import os
import platform
import time
from collections import defaultdict
from typing import Tuple
import glob
import rpm
import yaml
import logging
import hashlib
from collections import defaultdict
from typing import Tuple
# An implementation from the Fabric python library
class AttributeDict(defaultdict):
def __init__(self):
@ -26,31 +26,29 @@ class AttributeDict(defaultdict):
def __setattr__(self, key, value):
self[key] = value
# These are a bunch of colors we may use in terminal output
class Color:
RED = "\033[91m"
GREEN = "\033[92m"
PURPLE = "\033[95m"
CYAN = "\033[96m"
DARKCYAN = "\033[36m"
BLUE = "\033[94m"
YELLOW = "\033[93m"
UNDERLINE = "\033[4m"
BOLD = "\033[1m"
END = "\033[0m"
INFO = "[" + BOLD + GREEN + "INFO" + END + "] "
WARN = "[" + BOLD + YELLOW + "WARN" + END + "] "
FAIL = "[" + BOLD + RED + "FAIL" + END + "] "
STAT = "[" + BOLD + CYAN + "STAT" + END + "] "
RED = '\033[91m'
GREEN = '\033[92m'
PURPLE = '\033[95m'
CYAN = '\033[96m'
DARKCYAN = '\033[36m'
BLUE = '\033[94m'
YELLOW = '\033[93m'
UNDERLINE = '\033[4m'
BOLD = '\033[1m'
END = '\033[0m'
INFO = '[' + BOLD + GREEN + 'INFO' + END + '] '
WARN = '[' + BOLD + YELLOW + 'WARN' + END + '] '
FAIL = '[' + BOLD + RED + 'FAIL' + END + '] '
STAT = '[' + BOLD + CYAN + 'STAT' + END + '] '
# vars and additional checks
rldict = AttributeDict()
sigdict = AttributeDict()
config = {
"rlmacro": rpm.expandMacro("%rhel"),
"dist": "el" + rpm.expandMacro("%rhel"),
"rlmacro": rpm.expandMacro('%rhel'),
"dist": 'el' + rpm.expandMacro('%rhel'),
"arch": platform.machine(),
"date_stamp": time.strftime("%Y%m%d.%H%M%S", time.localtime()),
"compose_root": "/mnt/compose",
@ -68,29 +66,28 @@ config = {
"aarch64": "arm64",
"ppc64le": "ppc64le",
"s390x": "s390x",
"i686": "386",
"i686": "386"
},
"aws_region": "us-east-2",
"bucket": "resf-empanadas",
"bucket_url": "https://resf-empanadas.s3.us-east-2.amazonaws.com",
"bucket_url": "https://resf-empanadas.s3.us-east-2.amazonaws.com"
}
# Importing the config from yaml
import importlib_resources
_rootdir = importlib_resources.files("empanadas")
for conf in glob.iglob(f"{_rootdir}/configs/*.yaml"):
with open(conf, "r", encoding="utf-8") as file:
with open(conf, 'r', encoding="utf-8") as file:
rldict.update(yaml.safe_load(file))
# Import all SIG configs from yaml
for conf in glob.iglob(f"{_rootdir}/sig/*.yaml"):
with open(conf, "r", encoding="utf-8") as file:
with open(conf, 'r', encoding="utf-8") as file:
sigdict.update(yaml.safe_load(file))
# The system needs to be a RHEL-like system. It cannot be Fedora or SuSE.
# if "%rhel" in config['rlmacro']:
#if "%rhel" in config['rlmacro']:
# raise SystemExit(Color.BOLD + 'This is not a RHEL-like system.' + Color.END
# + '\n\nPlease verify you are running on a RHEL-like system that is '
# 'not Fedora nor SuSE. This means that the %rhel macro will be '
@ -99,25 +96,22 @@ for conf in glob.iglob(f"{_rootdir}/sig/*.yaml"):
# These will be set in their respective var files
# REVISION = rlvars['revision'] + '-' + rlvars['rclvl']
# rlvars = rldict[rlver]
# rlvars = rldict[rlmacro]
# COMPOSE_ISO_WORKDIR = COMPOSE_ROOT + "work/" + arch + "/" + date_stamp
#REVISION = rlvars['revision'] + '-' + rlvars['rclvl']
#rlvars = rldict[rlver]
#rlvars = rldict[rlmacro]
#COMPOSE_ISO_WORKDIR = COMPOSE_ROOT + "work/" + arch + "/" + date_stamp
ALLOWED_TYPE_VARIANTS = {
"Azure": ["Base", "LVM"],
"Container": ["Base", "Minimal", "UBI", "WSL"],
"EC2": ["Base", "LVM"],
"GenericCloud": ["Base", "LVM"],
"Vagrant": ["Libvirt", "Vbox", "VMware"],
"OCP": ["Base"],
"RPI": ["Base"],
"GenericArm": ["Minimal"],
"Azure": ["Base", "LVM"],
"Container": ["Base", "Minimal", "UBI"],
"EC2": ["Base", "LVM"],
"GenericCloud": ["Base", "LVM"],
"Vagrant": ["Libvirt", "Vbox", "VMware"],
"OCP": None,
"RPI": None,
}
def valid_type_variant(_type: str, variant: str = "") -> bool:
def valid_type_variant(_type: str, variant: str="") -> bool:
if _type not in ALLOWED_TYPE_VARIANTS:
raise Exception(f"Type is invalid: ({_type}, {variant})")
if ALLOWED_TYPE_VARIANTS[_type] == None:
@ -125,19 +119,12 @@ def valid_type_variant(_type: str, variant: str = "") -> bool:
raise Exception(f"{_type} Type expects no variant type.")
return True
if variant not in ALLOWED_TYPE_VARIANTS[_type]:
if variant and variant.capitalize() in ALLOWED_TYPE_VARIANTS[_type]:
raise Exception(
f"Capitalization mismatch. Found: ({_type}, {variant}). Expected: ({_type}, {variant.capitalize()})"
)
raise Exception(
f"Type/Variant Combination is not allowed: ({_type}, {variant})"
)
if variant.capitalize() in ALLOWED_TYPE_VARIANTS[_type]:
raise Exception(f"Capitalization mismatch. Found: ({_type}, {variant}). Expected: ({_type}, {variant.capitalize()})")
raise Exception(f"Type/Variant Combination is not allowed: ({_type}, {variant})")
return True
from attrs import define, field
@define(kw_only=True)
class Architecture:
name: str = field()

View File

@ -1,220 +0,0 @@
---
'10':
fullname: 'Rocky Linux 10.0'
revision: '10.0'
rclvl: 'RC1'
major: '10'
minor: '0'
profile: '10'
disttag: 'el10'
code: "Red Quartz"
bugurl: 'https://bugs.rockylinux.org'
checksum: 'sha256'
fedora_major: '20'
allowed_arches:
- x86_64
- aarch64
- ppc64le
- s390x
provide_multilib: False
project_id: 'e7b83c0a-b514-4903-b739-6943bbb307f7'
repo_symlinks:
NFV: 'nfv'
renames:
all: 'devel'
all_repos:
- 'all'
- 'BaseOS'
- 'AppStream'
- 'CRB'
- 'HighAvailability'
- 'ResilientStorage'
- 'RT'
- 'NFV'
- 'SAP'
- 'SAPHANA'
- 'extras'
- 'plus'
extra_repos: []
structure:
packages: 'os/Packages'
repodata: 'os/repodata'
iso_map:
xorrisofs: True
iso_level: False
images:
dvd:
disc: True
variant: 'AppStream'
repos:
- 'BaseOS'
- 'AppStream'
minimal:
disc: True
isoskip: True
repos:
- 'minimal'
- 'BaseOS'
variant: 'minimal'
volname: 'dvd'
BaseOS:
disc: False
isoskip: True
variant: 'BaseOS'
repos:
- 'BaseOS'
- 'AppStream'
lorax:
noupgrade: False
squashfs_only: True
repos:
- 'BaseOS'
- 'AppStream'
variant: 'BaseOS'
lorax_removes: []
required_pkgs:
- 'lorax'
- 'isomd5sum'
- 'lorax-templates-rhel'
- 'lorax-templates-generic'
- 'xorriso'
cloudimages:
images:
Azure:
format: vhd
variants: [Base, LVM]
primary_variant: 'Base'
kiwi:
type: "oem"
profile_names:
- Cloud-Azure-Base
- Cloud-Azure-LVM
EC2:
format: qcow2
variants: [Base, LVM]
primary_variant: 'Base'
kiwi:
type: "oem"
profile_names:
- Cloud-EC2-Base
- Cloud-EC2-LVM
GenericCloud:
format: qcow2
variants: [Base, LVM]
primary_variant: 'Base'
kiwi:
type: "oem"
profile_names:
- Cloud-GenericCloud-Base
- Cloud-GenericCloud-LVM
Container:
format: tar.xz
variants: [Base, Minimal, Toolbox, UBI]
kiwi:
type: "oci"
profile_names:
- Container-Base
- Container-Minimal
- Container-Toolbox
- Container-UBI
RPI:
format: raw.xz
OCP:
format: qcow2
variants: [Base]
kiwi:
type: "oem"
profile_names:
- Cloud-OCP-Base
Vagrant:
format: box
variants: [Libvirt, Vbox, VMware]
kiwi:
type: "oem"
profile_names:
- Vagrant-Libvirt
- Vagrant-Vbox
- Vagrant-VMware
livemap:
builder: "lorax"
git_repo: 'https://git.resf.org/sig_core/kickstarts.git'
branch: 'r10'
ksentry:
Workstation: rocky-live-workstation.ks
Workstation-Lite: rocky-live-workstation-lite.ks
XFCE: rocky-live-xfce.ks
KDE: rocky-live-kde.ks
MATE: rocky-live-mate.ks
Cinnamon: rocky-live-cinnamon.ks
allowed_arches:
- x86_64
- aarch64
required_pkgs:
- 'lorax-lmc-novirt'
- 'vim-minimal'
- 'pykickstart'
- 'git'
kiwimap:
git_repo: 'https://git.resf.org/sig_core/rocky-kiwi-descriptions.git'
branch: 'r9'
required_pkgs:
- dracut-kiwi-live
- git
- kiwi
- kiwi-cli
- kiwi-systemdeps-bootloaders
- kiwi-systemdeps-containers
- kiwi-systemdeps-core
- kiwi-systemdeps-disk-images
- kiwi-systemdeps-filesystems
- kiwi-systemdeps-image-validation
- kiwi-systemdeps-iso-media
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:
devel: []
BaseOS: []
AppStream:
- BaseOS
CRB:
- BaseOS
- AppStream
HighAvailability:
- BaseOS
- AppStream
ResilientStorage:
- BaseOS
- AppStream
RT:
- BaseOS
- AppStream
NFV:
- BaseOS
- AppStream
SAP:
- BaseOS
- AppStream
- HighAvailability
SAPHANA:
- BaseOS
- AppStream
- HighAvailability
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/r10/'
branch: 'r10'
gpg:
stable: 'SOURCES/RPM-GPG-KEY-Rocky-10'
testing: 'SOURCES/RPM-GPG-KEY-Rocky-10-Testing'
list:
- 'SOURCES/Contributors'
- 'SOURCES/COMMUNITY-CHARTER'
- 'SOURCES/EULA'
- 'SOURCES/LICENSE'
- 'SOURCES/RPM-GPG-KEY-Rocky-10'
- 'SOURCES/RPM-GPG-KEY-Rocky-10-Testing'
...

View File

@ -1,220 +0,0 @@
---
'10-lookahead':
fullname: 'Rocky Linux 10.0'
revision: '10.0'
rclvl: 'LH1'
major: '10'
minor: '0'
profile: '10-lookahead'
disttag: 'el10'
code: "Red Quartz"
bugurl: 'https://bugs.rockylinux.org'
checksum: 'sha256'
fedora_major: '20'
allowed_arches:
- x86_64
- aarch64
- ppc64le
- s390x
provide_multilib: False
project_id: 'e7b83c0a-b514-4903-b739-6943bbb307f7'
repo_symlinks:
NFV: 'nfv'
renames:
all: 'devel'
all_repos:
- 'all'
- 'BaseOS'
- 'AppStream'
- 'CRB'
- 'HighAvailability'
- 'ResilientStorage'
- 'RT'
- 'NFV'
- 'SAP'
- 'SAPHANA'
- 'extras'
- 'plus'
extra_repos: []
structure:
packages: 'os/Packages'
repodata: 'os/repodata'
iso_map:
xorrisofs: True
iso_level: False
images:
dvd:
disc: True
variant: 'AppStream'
repos:
- 'BaseOS'
- 'AppStream'
minimal:
disc: True
isoskip: True
repos:
- 'minimal'
- 'BaseOS'
variant: 'minimal'
volname: 'dvd'
BaseOS:
disc: False
isoskip: True
variant: 'BaseOS'
repos:
- 'BaseOS'
- 'AppStream'
lorax:
noupgrade: False
squashfs_only: True
repos:
- 'BaseOS'
- 'AppStream'
variant: 'BaseOS'
lorax_removes: []
required_pkgs:
- 'lorax'
- 'isomd5sum'
- 'lorax-templates-rhel'
- 'lorax-templates-generic'
- 'xorriso'
cloudimages:
images:
Azure:
format: vhd
variants: [Base, LVM]
primary_variant: 'Base'
kiwi:
type: "oem"
profile_names:
- Cloud-Azure-Base
- Cloud-Azure-LVM
EC2:
format: qcow2
variants: [Base, LVM]
primary_variant: 'Base'
kiwi:
type: "oem"
profile_names:
- Cloud-EC2-Base
- Cloud-EC2-LVM
GenericCloud:
format: qcow2
variants: [Base, LVM]
primary_variant: 'Base'
kiwi:
type: "oem"
profile_names:
- Cloud-GenericCloud-Base
- Cloud-GenericCloud-LVM
Container:
format: tar.xz
variants: [Base, Minimal, Toolbox, UBI]
kiwi:
type: "oci"
profile_names:
- Container-Base
- Container-Minimal
- Container-Toolbox
- Container-UBI
RPI:
format: raw.xz
OCP:
format: qcow2
variants: [Base]
kiwi:
type: "oem"
profile_names:
- Cloud-OCP-Base
Vagrant:
format: box
variants: [Libvirt, Vbox, VMware]
kiwi:
type: "oem"
profile_names:
- Vagrant-Libvirt
- Vagrant-Vbox
- Vagrant-VMware
livemap:
builder: "lorax"
git_repo: 'https://git.resf.org/sig_core/kickstarts.git'
branch: 'r10'
ksentry:
Workstation: rocky-live-workstation.ks
Workstation-Lite: rocky-live-workstation-lite.ks
XFCE: rocky-live-xfce.ks
KDE: rocky-live-kde.ks
MATE: rocky-live-mate.ks
Cinnamon: rocky-live-cinnamon.ks
allowed_arches:
- x86_64
- aarch64
required_pkgs:
- 'lorax-lmc-novirt'
- 'vim-minimal'
- 'pykickstart'
- 'git'
kiwimap:
git_repo: 'https://git.resf.org/sig_core/rocky-kiwi-descriptions.git'
branch: 'r9'
required_pkgs:
- dracut-kiwi-live
- git
- kiwi
- kiwi-cli
- kiwi-systemdeps-bootloaders
- kiwi-systemdeps-containers
- kiwi-systemdeps-core
- kiwi-systemdeps-disk-images
- kiwi-systemdeps-filesystems
- kiwi-systemdeps-image-validation
- kiwi-systemdeps-iso-media
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:
devel: []
BaseOS: []
AppStream:
- BaseOS
CRB:
- BaseOS
- AppStream
HighAvailability:
- BaseOS
- AppStream
ResilientStorage:
- BaseOS
- AppStream
RT:
- BaseOS
- AppStream
NFV:
- BaseOS
- AppStream
SAP:
- BaseOS
- AppStream
- HighAvailability
SAPHANA:
- BaseOS
- AppStream
- HighAvailability
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/r10s/'
branch: 'r10s'
gpg:
stable: 'SOURCES/RPM-GPG-KEY-Rocky-10'
testing: 'SOURCES/RPM-GPG-KEY-Rocky-10-Testing'
list:
- 'SOURCES/Contributors'
- 'SOURCES/COMMUNITY-CHARTER'
- 'SOURCES/EULA'
- 'SOURCES/LICENSE'
- 'SOURCES/RPM-GPG-KEY-Rocky-10'
- 'SOURCES/RPM-GPG-KEY-Rocky-10-Testing'
...

View File

@ -7,7 +7,6 @@
minor: '7'
profile: '8'
disttag: 'el8'
code: "Green Obsidian"
bugurl: 'https://bugs.rockylinux.org'
checksum: 'sha256'
fedora_major: '20'
@ -108,6 +107,10 @@
- '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'

View File

@ -1,13 +1,12 @@
---
'8':
fullname: 'Rocky Linux 8'
revision: '8.9'
revision: '8.7'
rclvl: 'RC1'
major: '8'
minor: '9'
minor: '7'
profile: '8'
disttag: 'el8'
code: "Green Obsidian"
bugurl: 'https://bugs.rockylinux.org'
checksum: 'sha256'
fedora_major: '20'
@ -89,7 +88,7 @@
primary_variant: 'Base'
Container:
format: tar.xz
variants: [Base, Minimal, UBI, WSL]
variants: [Base, Minimal, UBI]
RPI:
format: raw.xz
OCP:
@ -113,6 +112,10 @@
- 'vim-minimal'
- 'pykickstart'
- 'git'
variantmap:
git_repo: 'https://git.rockylinux.org/rocky/pungi-rocky.git'
branch: 'r8'
git_raw_path: 'https://git.rockylinux.org/rocky/pungi-rocky/-/raw/r8/'
repoclosure_map:
arches:
x86_64: '--forcearch=x86_64 --arch=x86_64 --arch=athlon --arch=i686 --arch=i586 --arch=i486 --arch=i386 --arch=noarch'

View File

@ -7,7 +7,6 @@
minor: '8'
profile: '8'
disttag: 'el8'
code: "Green Obsidian"
bugurl: 'https://bugs.rockylinux.org'
checksum: 'sha256'
fedora_major: '20'
@ -108,6 +107,10 @@
- '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'

View File

@ -1,13 +1,12 @@
---
'9-beta':
fullname: 'Rocky Linux 9.4'
revision: '9.4'
fullname: 'Rocky Linux 9.2'
revision: '9.2'
rclvl: 'BETA1'
major: '9'
minor: '4'
minor: '2'
profile: '9-beta'
disttag: 'el9'
code: "Blue Onyx"
bugurl: 'https://bugs.rockylinux.org'
checksum: 'sha256'
fedora_major: '20'
@ -17,7 +16,7 @@
- ppc64le
- s390x
provide_multilib: True
project_id: 'df5bcbfc-ba83-4da8-84d6-ae0168921b4d'
project_id: 'dff20351-7d36-4f7c-9eea-7f039f5026d0'
repo_symlinks:
NFV: 'nfv'
renames:
@ -35,13 +34,6 @@
- 'SAPHANA'
- 'extras'
- 'plus'
extra_repos:
- name: 'core-common'
url: 'https://yumrepofs.build.resf.org/v1/projects/47e0b4a8-84ba-43a9-bb94-eb99dde4cf14/repo/core-common/$basearch'
priority: '100'
- name: 'core-infra'
url: 'https://yumrepofs.build.resf.org/v1/projects/47e0b4a8-84ba-43a9-bb94-eb99dde4cf14/repo/core-infra/$basearch'
priority: '100'
structure:
packages: 'os/Packages'
repodata: 'os/repodata'
@ -71,13 +63,12 @@
- 'BaseOS'
- 'AppStream'
lorax:
noupgrade: False
squashfs_only: True
repos:
- 'BaseOS'
- 'AppStream'
variant: 'BaseOS'
lorax_removes: []
lorax_removes:
- 'libreport-rhel-anaconda-bugzilla'
required_pkgs:
- 'lorax'
- 'genisoimage'
@ -91,61 +82,28 @@
format: vhd
variants: [Base, LVM]
primary_variant: 'Base'
kiwi:
type: "oem"
profile_names:
- Cloud-Azure-Base
- Cloud-Azure-LVM
EC2:
format: qcow2
variants: [Base, LVM]
primary_variant: 'Base'
kiwi:
type: "oem"
profile_names:
- Cloud-EC2-Base
- Cloud-EC2-LVM
GenericCloud:
format: qcow2
variants: [Base, LVM]
primary_variant: 'Base'
kiwi:
type: "oem"
profile_names:
- Cloud-GenericCloud-Base
- Cloud-GenericCloud-LVM
Container:
format: tar.xz
variants: [Base, Minimal, Toolbox, UBI]
kiwi:
type: "oci"
profile_names:
- Container-Base
- Container-Minimal
- Container-Toolbox
- Container-UBI
variants: [Base, Minimal, UBI]
RPI:
format: raw.xz
OCP:
format: qcow2
variants: [Base]
kiwi:
type: "oem"
profile_names:
- Cloud-OCP-Base
Vagrant:
format: box
variants: [Libvirt, Vbox, VMware]
kiwi:
type: "oem"
profile_names:
- Vagrant-Libvirt
- Vagrant-Vbox
- Vagrant-VMware
livemap:
builder: "lorax"
git_repo: 'https://git.resf.org/sig_core/kickstarts.git'
branch: 'r9'
branch: 'r9-beta'
ksentry:
Workstation: rocky-live-workstation.ks
Workstation-Lite: rocky-live-workstation-lite.ks
@ -161,21 +119,10 @@
- 'vim-minimal'
- 'pykickstart'
- 'git'
kiwimap:
git_repo: 'https://git.resf.org/sig_core/rocky-kiwi-descriptions.git'
branch: 'r9'
required_pkgs:
- dracut-kiwi-live
- git
- kiwi
- kiwi-cli
- kiwi-systemdeps-bootloaders
- kiwi-systemdeps-containers
- kiwi-systemdeps-core
- kiwi-systemdeps-disk-images
- kiwi-systemdeps-filesystems
- kiwi-systemdeps-image-validation
- kiwi-systemdeps-iso-media
variantmap:
git_repo: 'https://git.rockylinux.org/rocky/pungi-rocky.git'
branch: 'r9-beta'
git_raw_path: 'https://git.rockylinux.org/rocky/pungi-rocky/-/raw/r9-beta/'
repoclosure_map:
arches:
x86_64: '--forcearch=x86_64 --arch=x86_64 --arch=athlon --arch=i686 --arch=i586 --arch=i486 --arch=i386 --arch=noarch'
@ -213,7 +160,7 @@
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-beta'
branch: 'r9'
gpg:
stable: 'SOURCES/RPM-GPG-KEY-Rocky-9'
testing: 'SOURCES/RPM-GPG-KEY-Rocky-9-Testing'

View File

@ -1,13 +1,12 @@
---
'9':
fullname: 'Rocky Linux 9.4'
revision: '9.4'
fullname: 'Rocky Linux 9.2'
revision: '9.2'
rclvl: 'RC1'
major: '9'
minor: '4'
minor: '2'
profile: '9'
disttag: 'el9'
code: "Blue Onyx"
bugurl: 'https://bugs.rockylinux.org'
checksum: 'sha256'
fedora_major: '20'
@ -17,7 +16,7 @@
- ppc64le
- s390x
provide_multilib: True
project_id: 'df5bcbfc-ba83-4da8-84d6-ae0168921b4d'
project_id: 'dff20351-7d36-4f7c-9eea-7f039f5026d0'
repo_symlinks:
NFV: 'nfv'
renames:
@ -35,13 +34,6 @@
- 'SAPHANA'
- 'extras'
- 'plus'
extra_repos:
- name: 'core-common'
url: 'https://yumrepofs.build.resf.org/v1/projects/47e0b4a8-84ba-43a9-bb94-eb99dde4cf14/repo/core-common/$basearch'
priority: '100'
- name: 'core-infra'
url: 'https://yumrepofs.build.resf.org/v1/projects/47e0b4a8-84ba-43a9-bb94-eb99dde4cf14/repo/core-infra/$basearch'
priority: '100'
structure:
packages: 'os/Packages'
repodata: 'os/repodata'
@ -71,13 +63,12 @@
- 'BaseOS'
- 'AppStream'
lorax:
noupgrade: False
squashfs_only: True
repos:
- 'BaseOS'
- 'AppStream'
variant: 'BaseOS'
lorax_removes: []
lorax_removes:
- 'libreport-rhel-anaconda-bugzilla'
required_pkgs:
- 'lorax'
- 'genisoimage'
@ -91,59 +82,26 @@
format: vhd
variants: [Base, LVM]
primary_variant: 'Base'
kiwi:
type: "oem"
profile_names:
- Cloud-Azure-Base
- Cloud-Azure-LVM
EC2:
format: qcow2
variants: [Base, LVM]
primary_variant: 'Base'
kiwi:
type: "oem"
profile_names:
- Cloud-EC2-Base
- Cloud-EC2-LVM
GenericCloud:
format: qcow2
variants: [Base, LVM]
primary_variant: 'Base'
kiwi:
type: "oem"
profile_names:
- Cloud-GenericCloud-Base
- Cloud-GenericCloud-LVM
Container:
format: tar.xz
variants: [Base, Minimal, Toolbox, UBI]
kiwi:
type: "oci"
profile_names:
- Container-Base
- Container-Minimal
- Container-Toolbox
- Container-UBI
variants: [Base, Minimal, UBI]
RPI:
format: raw.xz
OCP:
format: qcow2
variants: [Base]
kiwi:
type: "oem"
profile_names:
- Cloud-OCP-Base
Vagrant:
format: box
variants: [Libvirt, Vbox, VMware]
kiwi:
type: "oem"
profile_names:
- Vagrant-Libvirt
- Vagrant-Vbox
- Vagrant-VMware
livemap:
builder: "lorax"
git_repo: 'https://git.resf.org/sig_core/kickstarts.git'
branch: 'r9'
ksentry:
@ -161,21 +119,10 @@
- 'vim-minimal'
- 'pykickstart'
- 'git'
kiwimap:
git_repo: 'https://git.resf.org/sig_core/rocky-kiwi-descriptions.git'
variantmap:
git_repo: 'https://git.rockylinux.org/rocky/pungi-rocky.git'
branch: 'r9'
required_pkgs:
- dracut-kiwi-live
- git
- kiwi
- kiwi-cli
- kiwi-systemdeps-bootloaders
- kiwi-systemdeps-containers
- kiwi-systemdeps-core
- kiwi-systemdeps-disk-images
- kiwi-systemdeps-filesystems
- kiwi-systemdeps-image-validation
- kiwi-systemdeps-iso-media
git_raw_path: 'https://git.rockylinux.org/rocky/pungi-rocky/-/raw/r9/'
repoclosure_map:
arches:
x86_64: '--forcearch=x86_64 --arch=x86_64 --arch=athlon --arch=i686 --arch=i586 --arch=i486 --arch=i386 --arch=noarch'

View File

@ -8,7 +8,6 @@
minor: '0'
profile: '9'
disttag: 'el9'
code: "Blue Onyx"
bugurl: 'https://bugs.rockylinux.org'
checksum: 'sha256'
fedora_major: '20'

View File

@ -1,13 +1,12 @@
---
'9-lookahead':
fullname: 'Rocky Linux 9.5'
revision: '9.5'
fullname: 'Rocky Linux 9.2'
revision: '9.2'
rclvl: 'LH1'
major: '9'
minor: '5'
minor: '2'
profile: '9-lookahead'
disttag: 'el9'
code: "Blue Onyx"
bugurl: 'https://bugs.rockylinux.org'
checksum: 'sha256'
fedora_major: '20'
@ -35,13 +34,6 @@
- 'SAPHANA'
- 'extras'
- 'plus'
extra_repos:
- name: 'core-common'
url: 'https://yumrepofs.build.resf.org/v1/projects/47e0b4a8-84ba-43a9-bb94-eb99dde4cf14/repo/core-common/$basearch'
priority: '100'
- name: 'core-infra'
url: 'https://yumrepofs.build.resf.org/v1/projects/47e0b4a8-84ba-43a9-bb94-eb99dde4cf14/repo/core-infra/$basearch'
priority: '100'
structure:
packages: 'os/Packages'
repodata: 'os/repodata'
@ -62,7 +54,6 @@
- 'minimal'
- 'BaseOS'
variant: 'minimal'
volname: 'dvd'
BaseOS:
disc: False
isoskip: True
@ -71,13 +62,12 @@
- 'BaseOS'
- 'AppStream'
lorax:
noupgrade: False
squashfs_only: True
repos:
- 'BaseOS'
- 'AppStream'
variant: 'BaseOS'
lorax_removes: []
lorax_removes:
- 'libreport-rhel-anaconda-bugzilla'
required_pkgs:
- 'lorax'
- 'genisoimage'
@ -91,68 +81,34 @@
format: vhd
variants: [Base, LVM]
primary_variant: 'Base'
kiwi:
type: "oem"
profile_names:
- Cloud-Azure-Base
- Cloud-Azure-LVM
EC2:
format: qcow2
variants: [Base, LVM]
primary_variant: 'Base'
kiwi:
type: "oem"
profile_names:
- Cloud-EC2-Base
- Cloud-EC2-LVM
GenericCloud:
format: qcow2
variants: [Base, LVM]
primary_variant: 'Base'
kiwi:
type: "oem"
profile_names:
- Cloud-GenericCloud-Base
- Cloud-GenericCloud-LVM
Container:
format: tar.xz
variants: [Base, Minimal, Toolbox, UBI]
kiwi:
type: "oci"
profile_names:
- Container-Base
- Container-Minimal
- Container-Toolbox
- Container-UBI
variants: [Base, Minimal, UBI]
RPI:
format: raw.xz
OCP:
format: qcow2
variants: [Base]
kiwi:
type: "oem"
profile_names:
- Cloud-OCP-Base
Vagrant:
format: box
variants: [Libvirt, Vbox, VMware]
kiwi:
type: "oem"
profile_names:
- Vagrant-Libvirt
- Vagrant-Vbox
- Vagrant-VMware
livemap:
builder: "lorax"
git_repo: 'https://git.resf.org/sig_core/kickstarts.git'
branch: 'r9'
branch: 'r9lh'
ksentry:
Workstation: rocky-live-workstation.ks
Workstation-Lite: rocky-live-workstation-lite.ks
XFCE: rocky-live-xfce.ks
KDE: rocky-live-kde.ks
MATE: rocky-live-mate.ks
Cinnamon: rocky-live-cinnamon.ks
allowed_arches:
- x86_64
- aarch64
@ -161,21 +117,10 @@
- 'vim-minimal'
- 'pykickstart'
- 'git'
kiwimap:
git_repo: 'https://git.resf.org/sig_core/rocky-kiwi-descriptions.git'
branch: 'r9'
required_pkgs:
- dracut-kiwi-live
- git
- kiwi
- kiwi-cli
- kiwi-systemdeps-bootloaders
- kiwi-systemdeps-containers
- kiwi-systemdeps-core
- kiwi-systemdeps-disk-images
- kiwi-systemdeps-filesystems
- kiwi-systemdeps-image-validation
- kiwi-systemdeps-iso-media
variantmap:
git_repo: 'https://git.rockylinux.org/rocky/pungi-rocky.git'
branch: 'r9lh'
git_raw_path: 'https://git.rockylinux.org/rocky/pungi-rocky/-/raw/r9lh/'
repoclosure_map:
arches:
x86_64: '--forcearch=x86_64 --arch=x86_64 --arch=athlon --arch=i686 --arch=i586 --arch=i486 --arch=i386 --arch=noarch'
@ -213,7 +158,7 @@
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: 'r9s'
branch: 'r9lh'
gpg:
stable: 'SOURCES/RPM-GPG-KEY-Rocky-9'
testing: 'SOURCES/RPM-GPG-KEY-Rocky-9-Testing'

View File

@ -2,15 +2,12 @@
'rln':
fullname: 'Rocky Linux New'
revision: '10'
rclvl: 'RLN134'
rclvl: 'RLN120'
major: '10'
minor: '0'
profile: 'rln'
disttag: 'rln134'
code: "Silver Magma"
bugurl: 'https://bugs.rockylinux.org'
checksum: 'sha256'
fedora_major: '20'
allowed_arches:
- x86_64
- aarch64
@ -53,9 +50,7 @@
isoskip: True
repos:
- 'minimal'
- 'BaseOS'
variant: 'minimal'
volname: 'dvd'
BaseOS:
disc: False
isoskip: True
@ -64,7 +59,6 @@
- 'BaseOS'
- 'AppStream'
lorax:
noupgrade: False
repos:
- 'BaseOS'
- 'AppStream'
@ -95,14 +89,8 @@
Container:
format: tar.xz
variants: [Base, Minimal, UBI]
RPI:
format: raw.xz
OCP:
format: qcow2
variants: [Base]
Vagrant:
format: box
variants: [Libvirt, Vbox, VMware]
livemap:
git_repo: 'https://git.resf.org/sig_core/kickstarts.git'
branch: 'rln'
@ -111,8 +99,6 @@
Workstation-Lite: rocky-live-workstation-lite.ks
XFCE: rocky-live-xfce.ks
KDE: rocky-live-kde.ks
MATE: rocky-live-mate.ks
Cinnamon: rocky-live-cinnamon.ks
allowed_arches:
- x86_64
- aarch64

View File

@ -133,7 +133,7 @@ class ImageBuild:
["cp", lambda: f"{STORAGE_DIR}/{self.target_uuid}.body", f"{self.outdir}/{self.outname}.raw"],
["xz", f"{self.outdir}/{self.outname}.raw"]
]
if self.image_type in ["GenericCloud", "OCP", "GenericArm"]:
if self.image_type in ["GenericCloud", "OCP"]:
self.stage_commands = [
["qemu-img", "convert", "-c", "-f", "raw", "-O", "qcow2", lambda: f"{STORAGE_DIR}/{self.target_uuid}.body", f"{self.outdir}/{self.outname}.qcow2"]
]
@ -244,7 +244,7 @@ class ImageBuild:
args = []
if self.image_type in ["Container"]:
args = ["--parameter", "offline_icicle", "true"]
if self.image_type in ["GenericCloud", "EC2", "Vagrant", "Azure", "OCP", "RPI", "GenericArm"]:
if self.image_type in ["GenericCloud", "EC2", "Vagrant", "Azure", "OCP", "RPI"]:
args = ["--parameter", "generate_icicle", "false"]
return args
@ -257,9 +257,9 @@ class ImageBuild:
def kickstart_imagefactory_args(self) -> List[str]:
if not self.kickstart_path.is_file():
log.warning(f"Kickstart file is not available: {self.kickstart_path}")
log.warn(f"Kickstart file is not available: {self.kickstart_path}")
if not debug:
log.warning("Exiting because debug mode is not enabled.")
log.warn("Exiting because debug mode is not enabled.")
exit(2)
return ["--file-parameter", "install_script", str(self.kickstart_path)]
@ -324,7 +324,7 @@ class ImageBuild:
def package(self) -> int:
# Some build types don't need to be packaged by imagefactory
# @TODO remove business logic if possible
if self.image_type in ["GenericCloud", "EC2", "Azure", "Vagrant", "OCP", "RPI", "GenericArm"]:
if self.image_type in ["GenericCloud", "EC2", "Azure", "Vagrant", "OCP", "RPI"]:
self.target_uuid = self.base_uuid if hasattr(self, 'base_uuid') else ""
if self.target_uuid:

View File

@ -18,8 +18,6 @@ parser.add_argument('--live-iso-mode', type=str, default='local')
parser.add_argument('--hashed', action='store_true')
parser.add_argument('--just-copy-it', action='store_true', help="Just copy the images to the compose dir")
parser.add_argument('--force-build', action='store_true', help="Just build and overwrite the images")
parser.add_argument('--builder', type=str, help="Choose a builder type and override the set value in the configs")
parser.add_argument('--increment', type=str, help="Changes the default increment of 0 to a number of your choice")
results = parser.parse_args()
rlvars = rldict[results.release]
major = rlvars['major']
@ -36,8 +34,6 @@ a = LiveBuild(
hashed=results.hashed,
justcopyit=results.just_copy_it,
force_build=results.force_build,
builder=results.builder,
image_increment=results.increment,
logger=results.logger
)

View File

@ -12,7 +12,6 @@ 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('--arch', type=str, help="Architecture")
parser.add_argument('--fpsync', type=str, help="Use fpsync instead of rsync")
parser.add_argument('--logger', type=str)
# Parse them
@ -29,7 +28,6 @@ a = RepoSync(
config,
major=major,
arch=results.arch,
fpsync=results.fpsync,
logger=results.logger,
)

View File

@ -1,6 +1,5 @@
# This script can be called to do single syncs or full on syncs.
import os
import argparse
import logging
import sys
@ -17,7 +16,6 @@ parser = argparse.ArgumentParser(description="Peridot Sync and Compose")
parser.add_argument('--release', type=str, help="Major Release Version or major-type (eg 9-beta)", required=True)
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('--copy-old-compose', action='store_true', help="Runs an rsync from previous compose")
parser.add_argument('--logger', type=str)
# Parse them
@ -61,21 +59,16 @@ def run():
date_stamp,
logger
)
compose_latest_dir = os.path.join(
config['compose_root'],
major,
"latest-{}-{}".format(
shortname,
profile,
)
)
if results.copy_old_compose:
if os.path.exists(compose_latest_dir):
previous_compose_path = os.path.realpath(compose_latest_dir)
else:
log.warning('No symlink exists; we cannot copy from the old compose')
if results.symlink:
compose_latest_dir = os.path.join(
config['compose_root'],
major,
"latest-{}-{}".format(
shortname,
profile,
)
)
if os.path.exists(compose_latest_dir):
os.remove(compose_latest_dir)

View File

@ -16,7 +16,6 @@ parser.add_argument('--rc', action='store_true', help="Release Candidate, Beta,
results = parser.parse_args()
rlvars = rldict[results.release]
major = rlvars['major']
minor = rlvars['minor']
EXTARCH=["s390x", "ppc64le"]
EKSARCH=["amd64", "arm64"]
@ -32,18 +31,16 @@ def run():
elif results.env == "all":
arches = EKSARCH+EXTARCH
command = ["build-iso", "--release", f"{results.release}", "--isolation", "simple"]
command = ["build-iso", "--release", f"{results.release}", "--isolation", "simple", "--hashed"]
if results.rc:
command += ["--rc"]
else:
command += ["--hashed"]
buildstamp = datetime.datetime.utcnow()
out = ""
for architecture in arches:
copy_command = (f"aws s3 cp --recursive --exclude=* --include=lorax* "
f"/var/lib/mock/rocky-{ major }.{ minor }-$(uname -m)/root/builddir/ "
f"/var/lib/mock/rocky-{ major }-$(uname -m)/root/builddir/ "
f"s3://resf-empanadas/buildiso-{ major }-{ architecture }/{ buildstamp.strftime('%s') }/"
)
out += job_template.render(
@ -55,7 +52,6 @@ def run():
jobname="buildiso",
namespace="empanadas",
major=major,
minor=minor,
restartPolicy="Never",
)

View File

@ -29,9 +29,9 @@ a = IsoBuild(
arch=results.arch,
force_download=results.force_download,
compose_dir_is_here=results.local_compose,
s3_region=results.s3_region,
s3_bucket=results.s3_bucket,
s3_bucket_url=results.s3_bucket_url,
s3_region=result.s3_region,
s3_bucket=result.s3_bucket,
s3_bucket_url=result.s3_bucket_url,
logger=results.logger,
)

View File

@ -29,7 +29,6 @@ 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('--log-level', type=str, default='INFO')
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')
@ -61,7 +60,6 @@ a = SigRepoSync(
nofail=results.no_fail,
refresh_extra_files=results.refresh_extra_files,
logger=results.logger,
log_level=results.log_level,
gpg_check=results.disable_gpg_check,
repo_gpg_check=results.disable_repo_gpg_check,
reposync_clean_old=results.clean_old_packages,

View File

@ -1,39 +0,0 @@
---
fasttrack:
'8':
profile: 'fasttrack'
project_id: ''
addtional_dirs: []
repo:
fasttrack-common:
allowed_arches:
- x86_64
- aarch64
extra_files:
git_repo: 'https://git.rockylinux.org/staging/src/rocky-release-fasttrack.git'
git_raw_path: 'https://git.rockylinux.org/staging/src/rocky-release-fasttrack/-/raw/r8/'
branch: 'r8'
gpg:
stable: 'SOURCES/RPM-GPG-KEY-Rocky-SIG-FastTrack'
list:
- 'SOURCES/RPM-GPG-KEY-Rocky-SIG-FastTrack'
'9':
profile: 'fasttrack'
project_id: ''
addtional_dirs: []
repo:
fasttrack-common:
allowed_arches:
- x86_64
- aarch64
- ppc64le
- s390x
extra_files:
git_repo: 'https://git.rockylinux.org/staging/src/rocky-release-fasttrack.git'
git_raw_path: 'https://git.rockylinux.org/staging/src/rocky-release-fasttrack/-/raw/r9/'
branch: 'r9'
gpg:
stable: 'SOURCES/RPM-GPG-KEY-Rocky-SIG-FastTrack'
list:
- 'SOURCES/RPM-GPG-KEY-Rocky-SIG-FastTrack'
...

View File

@ -1,49 +0,0 @@
---
hpc:
'8':
profile: 'hpc'
project_id: '78a2db02-ebe5-4654-9a04-6482eb9c8b84'
addtional_dirs: []
repo:
hpc-common:
allowed_arches:
- x86_64
- aarch64
hpc-core:
allowed_arches:
- x86_64
- aarch64
extra_files:
git_repo: 'https://git.rockylinux.org/staging/src/rocky-release-hpc.git'
git_raw_path: 'https://git.rockylinux.org/staging/src/rocky-release-hpc/-/raw/r8/'
branch: 'r8'
gpg:
stable: 'SOURCES/RPM-GPG-KEY-Rocky-SIG-HPC'
list:
- 'SOURCES/RPM-GPG-KEY-Rocky-SIG-HPC'
'9':
profile: 'hpc'
project_id: 'aee28795-e163-4a99-935d-f0a78cf33e75'
addtional_dirs: []
repo:
hpc-common:
allowed_arches:
- x86_64
- aarch64
- ppc64le
- s390x
hpc-core:
allowed_arches:
- x86_64
- aarch64
- ppc64le
- s390x
extra_files:
git_repo: 'https://git.rockylinux.org/staging/src/rocky-release-hpc.git'
git_raw_path: 'https://git.rockylinux.org/staging/src/rocky-release-hpc/-/raw/r9/'
branch: 'r9'
gpg:
stable: 'SOURCES/RPM-GPG-KEY-Rocky-SIG-HPC'
list:
- 'SOURCES/RPM-GPG-KEY-Rocky-SIG-HPC'
...

View File

@ -1,59 +0,0 @@
---
kernel:
'8':
profile: 'kernel'
project_id: '13172560-6e5d-4e65-ae71-750f99096856'
addtional_dirs: []
repo:
kernel-lts:
allowed_arches:
- aarch64
- x86_64
kernel-drivers:
allowed_arches:
- aarch64
- x86_64
kernel-mainline:
allowed_arches:
- aarch64
- x86_64
extra_files:
git_repo: 'https://git.rockylinux.org/staging/src/rocky-release-kernel.git'
git_raw_path: 'https://git.rockylinux.org/staging/src/rocky-release-kernel/-/raw/r8/'
branch: 'r8'
gpg:
stable: 'SOURCES/RPM-GPG-KEY-Rocky-SIG-Kernel'
list:
- 'SOURCES/RPM-GPG-KEY-Rocky-SIG-Kernel'
'9':
profile: 'kernel'
project_id: '708f99fe-7e89-4241-959a-4ff259786b4a'
addtional_dirs: []
repo:
kernel-lts:
allowed_arches:
- aarch64
- x86_64
- ppc64le
- s390x
kernel-drivers:
allowed_arches:
- aarch64
- x86_64
- ppc64le
- s390x
kernel-mainline:
allowed_arches:
- aarch64
- x86_64
- ppc64le
- s390x
extra_files:
git_repo: 'https://git.rockylinux.org/staging/src/rocky-release-kernel.git'
git_raw_path: 'https://git.rockylinux.org/staging/src/rocky-release-kernel/-/raw/r9/'
branch: 'r9'
gpg:
stable: 'SOURCES/RPM-GPG-KEY-Rocky-SIG-Kernel'
list:
- 'SOURCES/RPM-GPG-KEY-Rocky-SIG-Kernel'
...

View File

@ -1,39 +0,0 @@
---
security:
'8':
profile: 'security'
project_id: '41baa8a8-7dbe-46fe-9f0b-4e2420372bbc'
addtional_dirs: []
repo:
security-common:
allowed_arches:
- x86_64
- aarch64
extra_files:
git_repo: 'https://git.rockylinux.org/staging/src/rocky-release-security.git'
git_raw_path: 'https://git.rockylinux.org/staging/src/rocky-release-security/-/raw/r8/'
branch: 'r8'
gpg:
stable: 'SOURCES/RPM-GPG-KEY-Rocky-SIG-Security'
list:
- 'SOURCES/RPM-GPG-KEY-Rocky-SIG-Security'
'9':
profile: 'security'
project_id: '041a90b2-51f5-44a4-8be8-b2905c1ad95b'
addtional_dirs: []
repo:
security-common:
allowed_arches:
- x86_64
- aarch64
- ppc64le
- s390x
extra_files:
git_repo: 'https://git.rockylinux.org/staging/src/rocky-release-security.git'
git_raw_path: 'https://git.rockylinux.org/staging/src/rocky-release-security/-/raw/r9/'
branch: 'r9'
gpg:
stable: 'SOURCES/RPM-GPG-KEY-Rocky-SIG-Security'
list:
- 'SOURCES/RPM-GPG-KEY-Rocky-SIG-Security'
...

View File

@ -4,7 +4,6 @@ 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-X-latest-ARCH-TYPE (Symlink)
* Rocky-ARCH-TYPE (Symlink)
X will be the major release.
@ -19,15 +18,19 @@ 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 is also in the case of a rebuilt ISO. This will always point
to the absolute latest ISO of its type. This is used for osinfo and may be
used on our main website. This serves as a predictable method to download
the latest ISO whether from curl/wget or using libvirt that relies on osinfo
to provide the download URL.
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.
The fourth format in the list is a symlink to the "latest" ISO. This was
originally used as part of osinfo and has been carried over for backwards
compatibility reasons.
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:

View File

@ -6,9 +6,7 @@ function podman_setup_dirs() {
{{ lorax_pkg_cmd }}
mkdir -p {{ compose_work_iso_dir }}/{{ arch }}
cd {{ compose_work_iso_dir }}/{{ arch }}
set +e
test -f {{ isoname }} && { echo "ERROR: ISO ALREDY EXISTS!"; exit 32; }
set -e
test -f {{ isoname }} && { echo "ERROR: ISO ALREDY EXISTS!"; exit 1; }
}
function podman_create_links() {

View File

@ -24,9 +24,6 @@ lorax --product="${PRODUCT}" \
{%- for repo in repos %}
--source={{ repo.url }} \
{%- endfor %}
{%- if squashfs_only %}
--squashfs-only \
{%- endif %}
--bugurl="${BUGURL}" \
--variant="${VARIANT}" \
--nomacboot \

View File

@ -6,8 +6,8 @@
set -o pipefail
# Vars
MOCK_CFG="/var/tmp/lorax-{{ releasever }}.cfg"
MOCK_ROOT="/var/lib/mock/{{ shortname|lower }}-{{ releasever }}-{{ arch }}"
MOCK_CFG="/var/tmp/lorax-{{ major }}.cfg"
MOCK_ROOT="/var/lib/mock/{{ shortname|lower }}-{{ major }}-{{ arch }}"
MOCK_RESL="${MOCK_ROOT}/result"
MOCK_CHRO="${MOCK_ROOT}/root"
MOCK_LOG="${MOCK_RESL}/mock-output.log"
@ -40,7 +40,7 @@ mock \
mock_ret_val=$?
if [ $mock_ret_val -eq 0 ]; then
# Copy resulting data to /var/lib/mock/{{ shortname|lower }}-{{ releasever }}-{{ arch }}/result
# Copy resulting data to /var/lib/mock/{{ shortname|lower }}-{{ major }}-{{ arch }}/result
mkdir -p "${MOCK_RESL}"
cp "${MOCK_CHRO}${BUILDDIR}/${IMAGE_ISO}" "${MOCK_RESL}"
cp "${MOCK_CHRO}${BUILDDIR}/${IMAGE_ISO}.manifest" "${MOCK_RESL}"

View File

@ -5,8 +5,8 @@
set -o pipefail
# Vars
MOCK_CFG="/var/tmp/lorax-{{ releasever }}.cfg"
MOCK_ROOT="/var/lib/mock/{{ shortname|lower }}-{{ releasever }}-{{ arch }}"
MOCK_CFG="/var/tmp/lorax-{{ major }}.cfg"
MOCK_ROOT="/var/lib/mock/{{ shortname|lower }}-{{ major }}-{{ arch }}"
MOCK_RESL="${MOCK_ROOT}/result"
MOCK_CHRO="${MOCK_ROOT}/root"
MOCK_LOG="${MOCK_RESL}/mock-output.log"
@ -39,7 +39,7 @@ mock \
mock_ret_val=$?
if [ $mock_ret_val -eq 0 ]; then
# Copy resulting data to /var/lib/mock/{{ shortname|lower }}-{{ releasever }}-{{ arch }}/result
# Copy resulting data to /var/lib/mock/{{ shortname|lower }}-{{ major }}-{{ arch }}/result
mkdir -p "${MOCK_RESL}"
cp "${MOCK_CHRO}${BUILDDIR}/${LORAX_TAR}" "${MOCK_RESL}"
else

View File

@ -1,4 +1,4 @@
config_opts['root'] = '{{ shortname|lower }}-{{ releasever }}-{{ arch }}'
config_opts['root'] = '{{ shortname|lower }}-{{ major }}-{{ arch }}'
config_opts['description'] = '{{ fullname }}'
config_opts['target_arch'] = '{{ arch }}'
config_opts['legal_host_arches'] = ('{{ arch }}',)
@ -9,7 +9,6 @@ config_opts['releasever'] = '{{ major }}'
config_opts['package_manager'] = '{{ pkgmanager|default("dnf") }}'
config_opts['extra_chroot_dirs'] = [ '/run/lock', ]
# config_opts['bootstrap_image'] = 'quay.io/{{ shortname|lower }}/{{ shortname|lower }}:{{ major }}'
config_opts['use_bootstrap_image'] = False
# If compose is local, the bind mounts will be here
{% if compose_dir_is_here %}
@ -43,7 +42,6 @@ name={{ repo.name }}
baseurl={{ repo.url }}
enabled=1
gpgcheck=0
priority={{ repo.priority | default(100) }}
{% endfor %}

View File

@ -2,7 +2,7 @@
apiVersion: batch/v1
kind: Job
metadata:
name: {{ jobname }}-{{ major }}-{{ architecture }}-{{ buildTime }}
name: {{ jobname }}-{{ major }}-{{ architecture }}
namespace: {{ namespace }}
spec:
template:
@ -13,7 +13,6 @@ spec:
containers:
- name: {{ jobname }}-{{ major }}-{{ architecture }}
image: {{ imageName }}
imagePullPolicy: Always
command: ["/bin/bash", "-c"]
args:
- |
@ -53,8 +52,6 @@ spec:
key: peridot.rockylinux.org/workflow-tolerates-arch
operator: Equal
value: {{ architecture }}
nodeSelector:
kubernetes.io/arch: {{ architecture }}
restartPolicy: {{ restartPolicy }}
volumes:
- name: resolv-conf

View File

@ -6,8 +6,8 @@
set -o pipefail
# Vars
MOCK_CFG="/var/tmp/live-{{ releasever }}.cfg"
MOCK_ROOT="/var/lib/mock/{{ shortname|lower }}-{{ releasever }}-{{ arch }}"
MOCK_CFG="/var/tmp/live-{{ major }}.cfg"
MOCK_ROOT="/var/lib/mock/{{ shortname|lower }}-{{ major }}-{{ arch }}"
MOCK_RESL="${MOCK_ROOT}/result"
MOCK_CHRO="${MOCK_ROOT}/root"
MOCK_LOG="${MOCK_RESL}/mock-output.log"
@ -44,7 +44,7 @@ mock \
mock_ret_val=$?
if [ $mock_ret_val -eq 0 ]; then
# Copy resulting data to /var/lib/mock/{{ shortname|lower }}-{{ releasever }}-{{ arch }}/result
# Copy resulting data to /var/lib/mock/{{ shortname|lower }}-{{ major }}-{{ arch }}/result
mkdir -p "${MOCK_RESL}"
cp "${MOCK_CHRO}${BUILDDIR}/lmc/${IMAGE_ISO}" "${MOCK_RESL}"
else

View File

@ -30,13 +30,9 @@ libblockdev-utils
libbytesize
libgcab1
libjcat
libsss_autofs
libudisks2
libxmlb
mokutil
python3-lxml
shim-aa64
sssd-nfs-idmap
udisks2
volume_key-libs
NetworkManager-wifi

View File

@ -27,11 +27,7 @@ libblockdev-utils
libbytesize
libgcab1
libjcat
libsss_autofs
libudisks2
libxmlb
python3-lxml
sssd-nfs-idmap
udisks2
volume_key-libs
NetworkManager-wifi

View File

@ -23,11 +23,7 @@ libblockdev-utils
libbytesize
libgcab1
libjcat
libsss_autofs
libudisks2
libxmlb
python3-lxml
sssd-nfs-idmap
udisks2
volume_key-libs
NetworkManager-wifi

View File

@ -31,13 +31,9 @@ libbytesize
libgcab1
libjcat
libsmbios
libsss_autofs
libudisks2
libxmlb
mokutil
python3-lxml
shim-x64
sssd-nfs-idmap
udisks2
volume_key-libs
NetworkManager-wifi

View File

@ -16,13 +16,9 @@ fi
if [ "$ret_val" -eq 0 ]; then
recs=$(grep '\[FAILED\]' {{ sync_log }})
rems=$(grep 'Public key for .* is not installed' {{ sync_log }})
if [[ -n "${recs}" ]]; then
echo "SOME PACKAGES DID NOT DOWNLOAD" | tee -a {{ sync_log }}
exit 1
elif [[ -n "${rems}" ]]; then
echo "PACKAGES WERE REMOVED DUE TO KEY VIOLATION" | tee -a {{ sync_log }}
exit 2
else
# This is kind of a hack too.
#FOUND=$(grep -A20 'git\.rockylinux\.org' {{ sync_log }} | egrep -c '^\([0-9]+\/[0-9]+\)|\[SKIPPED\]|\.rpm')

View File

@ -63,9 +63,7 @@ class RepoSync:
just_pull_everything: bool = False,
extra_dnf_args=None,
reposync_clean_old: bool = False,
fpsync: bool = False,
logger=None,
log_level='INFO',
logger=None
):
self.nofail = nofail
self.dryrun = dryrun
@ -78,7 +76,6 @@ class RepoSync:
self.repoclosure = repoclosure
self.refresh_extra_files = refresh_extra_files
self.refresh_treeinfo = refresh_treeinfo
self.fpsync = fpsync
# Enables podman syncing, which should effectively speed up operations
self.parallel = parallel
# This makes it so every repo is synced at the same time.
@ -283,7 +280,7 @@ class RepoSync:
raise SystemExit()
if self.fullrun and self.refresh_extra_files:
self.log.warning(Color.WARN + 'A full run implies extra files are also deployed.')
self.log.warn(Color.WARN + 'A full run implies extra files are also deployed.')
if not self.skip_all:
self.sync(self.repo, sync_root, work_root, log_root, global_work_root, self.arch)
@ -1023,7 +1020,7 @@ class RepoSync:
)
self.log.error(e)
else:
self.log.warning(Color.WARN + repo_name + ' ' + a + ' os .treeinfo already exists')
self.log.warn(Color.WARN + repo_name + ' ' + a + ' os .treeinfo already exists')
if not os.path.exists(os_disc_path) or (os.path.exists(os_disc_path) and refresh):
try:
@ -1039,7 +1036,7 @@ class RepoSync:
)
self.log.error(e)
else:
self.log.warning(Color.WARN + repo_name + ' ' + a +
self.log.warn(Color.WARN + repo_name + ' ' + a +
' os .discinfo already exists'
)
@ -1056,7 +1053,7 @@ class RepoSync:
)
self.log.error(e)
else:
self.log.warning(Color.WARN + repo_name + ' ' + a +
self.log.warn(Color.WARN + repo_name + ' ' + a +
' os media.repo already exists'
)
@ -1078,7 +1075,7 @@ class RepoSync:
)
self.log.error(e)
else:
self.log.warning(Color.WARN + repo_name + ' ' + a +
self.log.warn(Color.WARN + repo_name + ' ' + a +
' kickstart .treeinfo already exists'
)
@ -1096,7 +1093,7 @@ class RepoSync:
)
self.log.error(e)
else:
self.log.warning(Color.FAIL + repo_name + ' ' + a +
self.log.warn(Color.FAIL + repo_name + ' ' + a +
' kickstart .discinfo already exists'
)
@ -1113,7 +1110,7 @@ class RepoSync:
)
self.log.error(e)
else:
self.log.warning(Color.WARN + repo_name + ' ' + a +
self.log.warn(Color.WARN + repo_name + ' ' + a +
' kickstart media.repo already exists'
)
@ -1156,7 +1153,7 @@ class RepoSync:
)
self.log.error(e)
else:
self.log.warning(Color.WARN + r + ' ' + a +
self.log.warn(Color.WARN + r + ' ' + a +
' debug .treeinfo already exists'
)
@ -1174,7 +1171,7 @@ class RepoSync:
)
self.log.error(e)
else:
self.log.warning(Color.WARN + r + ' ' + a +
self.log.warn(Color.WARN + r + ' ' + a +
' debug .discinfo already exists'
)
@ -1191,7 +1188,7 @@ class RepoSync:
)
self.log.error(e)
else:
self.log.warning(Color.WARN + repo_name + ' ' + a +
self.log.warn(Color.WARN + repo_name + ' ' + a +
' debug media.repo already exists'
)
@ -1230,7 +1227,7 @@ class RepoSync:
self.log.error(Color.FAIL + repo_name + ' source os .treeinfo could not be written')
self.log.error(e)
else:
self.log.warning(Color.WARN + repo_name + ' source os .treeinfo already exists')
self.log.warn(Color.WARN + repo_name + ' source os .treeinfo already exists')
if not os.path.exists(source_disc_path) or (os.path.exists(source_disc_path) and refresh):
try:
@ -1244,7 +1241,7 @@ class RepoSync:
self.log.error(Color.FAIL + repo_name + ' source os .discinfo could not be written')
self.log.error(e)
else:
self.log.warning(Color.WARN + repo_name + ' source .discinfo already exists')
self.log.warn(Color.WARN + repo_name + ' source .discinfo already exists')
if not os.path.exists(source_media_path) or (os.path.exists(source_media_path) and refresh):
try:
@ -1257,7 +1254,7 @@ class RepoSync:
self.log.error(Color.FAIL + repo_name + ' source os media.repo could not be written')
self.log.error(e)
else:
self.log.warning(Color.WARN + repo_name + ' source media.repo already exists')
self.log.warn(Color.WARN + repo_name + ' source media.repo already exists')
def tweak_treeinfo(self, repo, sync_root, arch):
"""
@ -1409,7 +1406,7 @@ class RepoSync:
# Standard ISOs
self.log.info(Color.INFO + 'Starting to sync ISOs to compose')
if os.path.exists('/usr/bin/fpsync') and self.fpsync:
if os.path.exists('/usr/bin/fpsync'):
self.log.info(Color.INFO + 'Starting up fpsync')
message, ret = Shared.fpsync_method(iso_root, sync_iso_root, tmp_dir)
elif os.path.exists('/usr/bin/parallel') and os.path.exists('/usr/bin/rsync'):
@ -1433,7 +1430,7 @@ class RepoSync:
if os.path.exists(live_root):
self.log.info(Color.INFO + 'Starting to sync live images to compose')
if os.path.exists('/usr/bin/fpsync') and self.fpsync:
if os.path.exists('/usr/bin/fpsync'):
message, ret = Shared.fpsync_method(live_root, sync_live_root, tmp_dir)
elif os.path.exists('/usr/bin/parallel') and os.path.exists('/usr/bin/rsync'):
message, ret = Shared.rsync_method(live_root, sync_live_root)
@ -1447,7 +1444,7 @@ class RepoSync:
if os.path.exists(images_root):
self.log.info(Color.INFO + 'Starting to sync cloud images to compose')
if os.path.exists('/usr/bin/fpsync') and self.fpsync:
if os.path.exists('/usr/bin/fpsync'):
message, ret = Shared.fpsync_method(images_root, sync_images_root, tmp_dir)
elif os.path.exists('/usr/bin/parallel') and os.path.exists('/usr/bin/rsync'):
message, ret = Shared.rsync_method(images_root, sync_images_root)
@ -1703,8 +1700,7 @@ class SigRepoSync:
repo_gpg_check: bool = True,
extra_dnf_args=None,
reposync_clean_old: bool = False,
logger=None,
log_level='INFO',
logger=None
):
self.nofail = nofail
self.dryrun = dryrun
@ -1808,16 +1804,17 @@ class SigRepoSync:
)
# This is temporary for now.
self.log = logging.getLogger("sigreposync")
self.log.setLevel(getattr(logging, log_level.upper(), 'INFO'))
handler = logging.StreamHandler(sys.stdout)
handler.setLevel(logging.INFO)
formatter = logging.Formatter(
'%(asctime)s :: %(name)s :: %(message)s',
'%Y-%m-%d %H:%M:%S'
)
handler.setFormatter(formatter)
self.log.addHandler(handler)
if logger is None:
self.log = logging.getLogger("sigreposync")
self.log.setLevel(logging.INFO)
handler = logging.StreamHandler(sys.stdout)
handler.setLevel(logging.INFO)
formatter = logging.Formatter(
'%(asctime)s :: %(name)s :: %(message)s',
'%Y-%m-%d %H:%M:%S'
)
handler.setFormatter(formatter)
self.log.addHandler(handler)
self.log.info('sig reposync init')
self.log.info(self.profile + ' ' + self.major_version)
@ -1914,7 +1911,7 @@ class SigRepoSync:
raise SystemExit()
if self.fullrun and self.refresh_extra_files:
self.log.warning(Color.WARN + 'A full run implies extra files are also deployed.')
self.log.warn(Color.WARN + 'A full run implies extra files are also deployed.')
self.sync(self.sigrepo, sync_root, work_root, log_root, global_work_root, self.arch)

View File

@ -118,7 +118,6 @@ class IsoBuild:
self.bugurl = rlvars['bugurl']
self.extra_files = rlvars['extra_files']
self.translators = config['translators']
self.container = config['container']
if 'container' in rlvars and len(rlvars['container']) > 0:
@ -254,7 +253,7 @@ class IsoBuild:
mock_sh_template = self.tmplenv.get_template('isobuild.tmpl.sh')
iso_template = self.tmplenv.get_template('buildImage.tmpl.sh')
mock_iso_path = '/var/tmp/lorax-' + self.release + '.cfg'
mock_iso_path = '/var/tmp/lorax-' + self.major_version + '.cfg'
mock_sh_path = '/var/tmp/isobuild.sh'
iso_template_path = '/var/tmp/buildImage.sh'
@ -276,7 +275,6 @@ class IsoBuild:
mock_iso_template_output = mock_iso_template.render(
arch=self.current_arch,
major=self.major_version,
releasever=self.release,
fullname=self.fullname,
shortname=self.shortname,
required_pkgs=required_pkgs,
@ -288,7 +286,6 @@ class IsoBuild:
mock_sh_template_output = mock_sh_template.render(
arch=self.current_arch,
major=self.major_version,
releasever=self.release,
isolation=self.mock_isolation,
builddir=self.mock_work_root,
shortname=self.shortname,
@ -309,20 +306,19 @@ class IsoBuild:
builddir=self.mock_work_root,
lorax_work_root=self.lorax_result_root,
bugurl=self.bugurl,
squashfs_only=self.iso_map['lorax']['squashfs_only'],
)
with open(mock_iso_path, "w+") as mock_iso_entry:
mock_iso_entry.write(mock_iso_template_output)
mock_iso_entry.close()
mock_iso_entry = open(mock_iso_path, "w+")
mock_iso_entry.write(mock_iso_template_output)
mock_iso_entry.close()
with open(mock_sh_path, "w+") as mock_sh_entry:
mock_sh_entry.write(mock_sh_template_output)
mock_sh_entry.close()
mock_sh_entry = open(mock_sh_path, "w+")
mock_sh_entry.write(mock_sh_template_output)
mock_sh_entry.close()
with open(iso_template_path, "w+") as iso_template_entry:
iso_template_entry.write(iso_template_output)
iso_template_entry.close()
iso_template_entry = open(iso_template_path, "w+")
iso_template_entry.write(iso_template_output)
iso_template_entry.close()
os.chmod(mock_sh_path, 0o755)
os.chmod(iso_template_path, 0o755)
@ -361,8 +357,6 @@ class IsoBuild:
self.arches,
'tar.gz',
'lorax',
'buildiso',
self.translators,
self.log
)
else:
@ -468,7 +462,7 @@ class IsoBuild:
if not force_unpack:
file_check = os.path.join(unpack_dir, 'lorax/.treeinfo')
if os.path.exists(file_check):
self.log.warning(Color.WARN + 'Artifact (' + arch + ') already unpacked')
self.log.warn(Color.WARN + 'Artifact (' + arch + ') already unpacked')
return
self.log.info('Unpacking %s' % tarball)
@ -504,7 +498,7 @@ class IsoBuild:
if not force_unpack:
file_check = os.path.join(path_to_image, '.treeinfo')
if os.path.exists(file_check):
self.log.warning(Color.WARN + 'Lorax image for ' + image + ' already exists')
self.log.warn(Color.WARN + 'Lorax image for ' + image + ' already exists')
return
self.log.info('Copying base lorax to %s directory...' % image)
@ -533,7 +527,7 @@ class IsoBuild:
if self.release_candidate:
rclevel = '-' + self.rclvl
discname = f'{self.shortname}-{self.release}{rclevel}-{arch}-boot.iso'
discname = f'{self.shortname}-{self.major_version}.{self.minor_version}{rclevel}-{arch}-boot.iso'
isobootpath = os.path.join(iso_to_go, discname)
manifest = f'{isobootpath}.manifest'
@ -550,7 +544,7 @@ class IsoBuild:
if not force_unpack:
file_check = isobootpath
if os.path.exists(file_check):
self.log.warning(Color.WARN + 'Boot image (' + discname + ') already exists')
self.log.warn(Color.WARN + 'Boot image (' + discname + ') already exists')
return
self.log.info('Copying %s boot iso to work directory...' % arch)
@ -649,7 +643,7 @@ class IsoBuild:
found_files.append('/images/boot.iso')
if len(found_files) > 0:
self.log.warning(Color.WARN + 'Images and data for ' + repo + ' and ' + arch + ' already exists.')
self.log.warn(Color.WARN + 'Images and data for ' + repo + ' and ' + arch + ' already exists.')
return
self.log.info(Color.INFO + 'Copying images and data for ' + repo + ' ' + arch)
@ -852,7 +846,7 @@ class IsoBuild:
datestamp = '-' + self.updated_image_date
volid = f'{self.shortname}-{self.major_version}-{self.minor_version}{rclevel}-{arch}-{volname}'
isoname = f'{self.shortname}-{self.release}{rclevel}{datestamp}-{arch}-{image}.iso'
isoname = f'{self.shortname}-{self.revision}{rclevel}{datestamp}-{arch}-{image}.iso'
generic_isoname = f'{self.shortname}-{arch}-{image}.iso'
latest_isoname = f'{self.shortname}-{self.major_version}-latest-{arch}-{image}.iso'
@ -896,9 +890,9 @@ class IsoBuild:
if opts['use_xorrisofs']:
# Generate a xorriso compatible dialog
with open(grafts) as xp:
xorpoint = xp.read()
xp.close()
xp = open(grafts)
xorpoint = xp.read()
xp.close()
xorriso_template_output = xorriso_template.render(
boot_iso=boot_iso,
isoname=isoname,
@ -906,9 +900,9 @@ class IsoBuild:
graft=xorpoint,
arch=arch,
)
with open(xorriso_template_path, "w+") as xorriso_template_entry:
xorriso_template_entry.write(xorriso_template_output)
xorriso_template_entry.close()
xorriso_template_entry = open(xorriso_template_path, "w+")
xorriso_template_entry.write(xorriso_template_output)
xorriso_template_entry.close()
opts['graft_points'] = xorriso_template_path
make_image = '{} {}'.format(
@ -940,21 +934,21 @@ class IsoBuild:
arch=arch
)
with open(mock_iso_path, "w+") as mock_iso_entry:
mock_iso_entry.write(mock_iso_template_output)
mock_iso_entry.close()
mock_iso_entry = open(mock_iso_path, "w+")
mock_iso_entry.write(mock_iso_template_output)
mock_iso_entry.close()
with open(mock_sh_path, "w+") as mock_sh_entry:
mock_sh_entry.write(mock_sh_template_output)
mock_sh_entry.close()
mock_sh_entry = open(mock_sh_path, "w+")
mock_sh_entry.write(mock_sh_template_output)
mock_sh_entry.close()
with open(iso_template_path, "w+") as iso_template_entry:
iso_template_entry.write(iso_template_output)
iso_template_entry.close()
iso_template_entry = open(iso_template_path, "w+")
iso_template_entry.write(iso_template_output)
iso_template_entry.close()
with open(iso_readme_path, "w+") as iso_readme_entry:
iso_readme_entry.write(iso_readme_template_output)
iso_readme_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)
@ -1279,39 +1273,39 @@ class IsoBuild:
# We check first if a file needs to be updated first before relying on
# the boot.iso manifest to exclude a file
if self.iso_map['xorrisofs']:
with open(xorrspath, "w") as fx:
for zm in sorted(result, key=Idents.sorting):
found = False
replace = False
for upda in update:
if fnmatch(zm, upda):
#print(f'updating: {zm} {upda}')
replace = True
break
for excl in exclude:
if fnmatch(zm, excl):
#print(f'ignoring: {zm} {excl}')
found = True
break
if found:
continue
mcmd = "-update" if replace else "-map"
fx.write("%s %s %s\n" % (mcmd, u[zm], zm))
fx.close()
fx = open(xorrspath, "w")
for zm in sorted(result, key=Idents.sorting):
found = False
replace = False
for upda in update:
if fnmatch(zm, upda):
#print(f'updating: {zm} {upda}')
replace = True
break
for excl in exclude:
if fnmatch(zm, excl):
#print(f'ignoring: {zm} {excl}')
found = True
break
if found:
continue
mcmd = "-update" if replace else "-map"
fx.write("%s %s %s\n" % (mcmd, u[zm], zm))
fx.close()
else:
with open(filepath, "w") as fh:
self.log.info('%sNothing should be excluded in legacy ' \
'genisoimage. Ignoring exclude list.', Color.WARN)
for zl in sorted(result, key=Idents.sorting):
#found = False
#for excl in exclude:
# if fnmatch(zl, excl):
# found = True
# break
#if found:
# continue
fh.write(f"{zl}={u[zl]}\n")
fh.close()
fh = open(filepath, "w")
self.log.info(Color.WARN + 'Nothing should be excluded in legacy ' +
'genisoimage. Ignoring exclude list.')
for zl in sorted(result, key=Idents.sorting):
#found = False
#for excl in exclude:
# if fnmatch(zl, excl):
# found = True
# break
#if found:
# continue
fh.write("%s=%s\n" % (zl, u[zl]))
fh.close()
def run_pull_iso_images(self):
"""
@ -1362,8 +1356,6 @@ class IsoBuild:
arches_to_unpack,
formattype,
variantname,
'buildimage',
self.translators,
self.log
)
@ -1379,7 +1371,7 @@ class IsoBuild:
# latest_artifacts should have at least 1 result if has_variants, else == 1
if not len(latest_artifacts[name][variantname]) > 0:
self.log.warning(Color.WARN + 'No images found for ' + variantname +
self.log.warn(Color.WARN + 'No images found for ' + variantname +
'. This means it will be skipped.')
del imagename
@ -1411,7 +1403,7 @@ class IsoBuild:
)
if arch not in keysect:
self.log.warning(Color.WARN + 'This architecture (' + arch + ') does not exist for this image orvar is a string.')
self.log.warn(Color.WARN + 'This architecture (' + arch + ') does not exist for this image orvar is a string.')
continue
source_path = keysect[arch]
@ -1553,7 +1545,6 @@ class LiveBuild:
updated_image: bool = False,
image_increment: str = '0',
peridot: bool = False,
builder: str = 'default',
logger=None
):
@ -1583,16 +1574,6 @@ class LiveBuild:
self.hashed = hashed
self.peridot = peridot
# determine builder to use. if a config doesn't have it set, assume
# lorax, the default option.
if rlvars['livemap']['builder']:
self.livebuilder = rlvars['livemap']['builder']
else:
self.livebuilder = "lorax"
if builder == "default":
self.livebuilder = builder
# Relevant major version items
self.arch = config['arch']
self.arches = rlvars['allowed_arches']
@ -1667,7 +1648,7 @@ class LiveBuild:
self.log.info(self.revision)
if not os.path.exists(self.compose_latest_dir):
self.log.warning(Color.WARN + 'A compose directory was not found ' +
self.log.warn(Color.WARN + 'A compose directory was not found ' +
'here. If there is a failure, it may be due to it ' +
'missing. You may want to generate a fake compose if ' +
'you are simply making your own live images and you run ' +
@ -1676,7 +1657,8 @@ class LiveBuild:
def run_build_live_iso(self):
"""
Builds live images based on the data provided at init.
Builds DVD images based on the data created from the initial lorax on
each arch. This should NOT be called during the usual run() section.
"""
sync_root = self.compose_latest_sync
@ -1687,15 +1669,6 @@ class LiveBuild:
self.log.error(Color.FAIL + 'Running an unsupported architecture.')
raise SystemExit()
if self.image not in self.livemap['ksentry'].keys():
self.log.error(Color.FAIL + 'Trying to build an unknown live image type.')
raise SystemExit()
# Check that the builder is lorax, we don't support anything else yet
if self.livebuilder != "lorax":
self.log.error(Color.FAIL + 'Attempting to use an unsupported builder.')
raise SystemExit()
self._live_iso_build_wrap()
self.log.info('Compose repo directory: %s' % sync_root)
@ -1754,7 +1727,7 @@ class LiveBuild:
if self.peridot:
kloc = 'peridot'
mock_iso_path = f'/var/tmp/live-{self.release}.cfg'
mock_iso_path = f'/var/tmp/live-{self.major_version}.cfg'
mock_sh_path = f'{entries_dir}/liveisobuild-{self.current_arch}-{image}.sh'
iso_template_path = f'{entries_dir}/buildLiveImage-{self.current_arch}-{image}.sh'
@ -1772,7 +1745,7 @@ class LiveBuild:
log_path_command = f'| tee -a {log_root}/{self.current_arch}-{image}.log'
required_pkgs = self.livemap['required_pkgs']
volid = f'{self.shortname}-{self.release}-{image}'
volid = f'{self.shortname}-{self.major_version}-{self.minor_version}-{image}'
isoname = f'{self.shortname}-{self.release}-{image}-{self.current_arch}-{self.date}.iso'
@ -1802,7 +1775,6 @@ class LiveBuild:
mock_iso_template_output = mock_iso_template.render(
arch=self.current_arch,
major=self.major_version,
releasever=self.release,
fullname=self.fullname,
shortname=self.shortname,
required_pkgs=required_pkgs,
@ -1816,7 +1788,6 @@ class LiveBuild:
mock_sh_template_output = mock_sh_template.render(
arch=self.current_arch,
major=self.major_version,
releasever=self.release,
isolation=self.mock_isolation,
builddir=self.mock_work_root,
shortname=self.shortname,
@ -1870,8 +1841,8 @@ class LiveBuild:
bad_exit_list = []
checksum_list = []
entry_name_list = []
self.log.warning(Color.WARN + 'There is no support for podman in empanadas.')
self.log.warning(Color.WARN + "If this fails, it's on you to determine the fix.")
self.log.warn(Color.WARN + 'There is no support for podman in empanadas.')
self.log.warn(Color.WARN + "If this fails, it's on you to determine the fix.")
for i in images:
image_name = i
entry_name = f'buildLiveImage-{arch}-{i}.sh'
@ -1883,7 +1854,7 @@ class LiveBuild:
print(entry_name_list, cmd, entries_dir)
for pod in entry_name_list:
podman_cmd_entry = '{} run --privileged -d -it -v "{}:{}" -v "{}:{}" --name {} --entrypoint {}/{} {}'.format(
podman_cmd_entry = '{} run -d -it -v "{}:{}" -v "{}:{}" --name {} --entrypoint {}/{} {}'.format(
cmd,
self.compose_root,
self.compose_root,
@ -1972,15 +1943,15 @@ class LiveBuild:
live_dir_arch = os.path.join(self.live_work_dir, arch)
isoname = f'{self.shortname}-{self.release}-{image}-{arch}-{self.date}.iso'
isolink = f'{self.shortname}-{self.major_version}-{image}-{arch}-latest.iso'
live_res_dir = f'/var/lib/mock/{self.shortname.lower()}-{self.release}-{arch}/result'
live_res_dir = f'/var/lib/mock/{self.shortname.lower()}-{self.major_version}-{arch}/result'
if self.justcopyit:
if os.path.exists(os.path.join(live_dir_arch, isoname)):
self.log.warning(Color.WARN + 'Image already exists.')
self.log.warn(Color.WARN + 'Image already exists.')
if self.force_build:
self.log.warning(Color.WARN + 'Building anyway.')
self.log.warn(Color.WARN + 'Building anyway.')
else:
self.log.warning(Color.WARN + 'Skipping.')
self.log.warn(Color.WARN + 'Skipping.')
return
live_iso_cmd = f'/bin/bash {entries_dir}/liveisobuild-{arch}-{image}.sh'
@ -1991,11 +1962,11 @@ class LiveBuild:
self.log.error('See the logs for more information.')
raise SystemExit()
self.log.warning(
self.log.warn(
Color.WARN + 'This is meant for builds done in peridot or ' +
'locally for an end user.'
)
self.log.warning(
self.log.warn(
Color.WARN +
'If you are looping images, your built image may get ' +
'overwritten. Ensure you have justcopyit enabled to avoid this.'

View File

@ -65,27 +65,26 @@ class Shared:
try:
checksum = hashlib.new(hashtype)
except ValueError:
logger.error("Invalid hash type: %s", hashtype)
logger.error("Invalid hash type: %s" % hashtype)
return False
try:
with open(path, "rb") as input_file:
while True:
chunk = input_file.read(8192)
if not chunk:
break
checksum.update(chunk)
input_file.close()
except IOError as exc:
logger.error("Could not open file %s: %s", path, exc)
input_file = open(path, "rb")
except IOError as e:
logger.error("Could not open file %s: %s" % (path, e))
return False
while True:
chunk = input_file.read(8192)
if not chunk:
break
checksum.update(chunk)
input_file.close()
stat = os.stat(path)
base = os.path.basename(path)
# This emulates our current syncing scripts that runs stat and
# sha256sum and what not with a very specific output.
# pylint: disable=consider-using-f-string
return "# %s: %s bytes\n%s (%s) = %s\n" % (
base,
stat.st_size,
@ -415,23 +414,6 @@ class Shared:
)
return cmd
@staticmethod
def rsync_cmd(logger) -> str:
"""
This generates the rsync command. This is used for general syncing
operations.
"""
cmd = None
if os.path.exists("/usr/bin/rsync"):
cmd = "/usr/bin/rsync"
else:
logger.error(Color.FAIL + '/usr/bin/rsync was not found. Good bye.')
raise SystemExit("\n\n/usr/bin/rsync was not found.\n\nPlease "
" ensure that you have installed the necessary packages on "
" this system. "
)
return cmd
@staticmethod
def generate_conf(
shortname,
@ -534,8 +516,7 @@ class Shared:
Returns a list for the fpsync command
"""
cmd = '/usr/bin/fpsync'
#rsync_switches = '-av --numeric-ids --no-compress --chown=10004:10005'
rsync_switches = '-v --numeric-ids --no-compress --chown=10004:10005'
rsync_switches = '-av --numeric-ids --no-compress --chown=10004:10005'
if not os.path.exists(cmd):
message = 'fpsync not found'
retval = 1
@ -579,36 +560,17 @@ class Shared:
Returns a string for the rsync command plus parallel. Yes, this is a
hack.
"""
#find_cmd = '/usr/bin/find'
#parallel_cmd = '/usr/bin/parallel'
cmd = '/usr/bin/rsync'
switches = '-vrlptDSH --chown=10004:10005 --progress --human-readable'
rsync_command = f'{cmd} {switches} {src}/ {dest}'
find_cmd = '/usr/bin/find'
parallel_cmd = '/usr/bin/parallel'
rsync_cmd = '/usr/bin/rsync'
switches = '-av --chown=10004:10005 --progress --relative --human-readable'
#os.makedirs(dest, exist_ok=True)
process = subprocess.call(
shlex.split(rsync_command),
stdout=subprocess.DEVNULL,
stderr=subprocess.DEVNULL,
)
if process != 0:
message = 'Syncing (rsync) failed'
retval = process
return message, retval
os.makedirs(dest, exist_ok=True)
if os.path.exists(dest):
message = 'Syncing (rsync) succeeded'
retval = process
else:
message = 'Path synced does not seem to exist for some reason.'
retval = 1
return 'Not available', 1
return message, retval
# pylint: disable=too-many-locals,too-many-arguments
@staticmethod
def s3_determine_latest(s3_bucket, release, arches, filetype, name,
root_prefix, translators, logger):
def s3_determine_latest(s3_bucket, release, arches, filetype, name, logger):
"""
Using native s3, determine the latest artifacts and return a dict
"""
@ -641,15 +603,8 @@ class Shared:
for arch in arches:
temps = []
new_arch = arch
new_release = release
# This is lazy, but...
if root_prefix == 'buildiso':
new_arch = translators[arch]
new_release = release.split('.')[0]
start_of_path = f"{root_prefix}-{new_release}-{new_arch}"
for y in temp:
if arch in y and y.startswith(start_of_path):
if arch in y:
temps.append(y)
temps.sort(reverse=True)
if len(temps) > 0:
@ -665,7 +620,7 @@ class Shared:
s3 = boto3.client('s3')
if os.path.exists(dest):
if not force_download:
logger.warning(
logger.warn(
'[' + Color.BOLD + Color.YELLOW + 'WARN' + Color.END + '] ' +
'Artifact at ' + dest + ' already exists'
)
@ -747,7 +702,7 @@ class Shared:
"""
if os.path.exists(dest):
if not force_download:
logger.warning(
logger.warn(
'[' + Color.BOLD + Color.YELLOW + 'WARN' + Color.END + '] ' +
'Artifact at ' + dest + ' already exists'
)
@ -1009,7 +964,6 @@ class Shared:
compose_latest_sync,
compose_dir_is_here: bool = False,
hashed: bool = False,
extra_repos: list = None
):
"""
Builds the repo dictionary
@ -1043,26 +997,8 @@ class Shared:
repolist.append(repodata)
if extra_repos:
repolist.append(repo for repo in Shared.parse_extra_repos(extra_repos))
return repolist
@staticmethod
def parse_extra_repos(extra_repos: list) -> list:
# must be in format URL[,PRIORITY]
result = []
for idx, candidate in enumerate(extra_repos):
url, priority = candidate.split(',')
if not priority:
priority = 100
result.append({
'name': f"extra_repo_{idx}",
'url': url,
'priority': priority
})
return result
@staticmethod
def composeinfo_write(
compose_path,
@ -1201,7 +1137,7 @@ class Shared:
shutil.copy2(src, extra_files_dir)
shutil.copy2(src, metadata_dir)
except:
logger.warning(Color.WARN + 'Extra file not copied: ' + src)
logger.warn(Color.WARN + 'Extra file not copied: ' + src)
try:
shutil.rmtree(tmpclone)
@ -1450,8 +1386,3 @@ class Idents:
"""
Gets a volume ID
"""
class Syncs:
"""
Various rsync abilities, converted from the sync dir in the toolkit
"""

View File

@ -1,257 +1,128 @@
# This file is automatically @generated by Poetry 1.5.1 and should not be changed by hand.
[[package]]
name = "atomicwrites"
version = "1.4.1"
description = "Atomic file writes."
category = "dev"
optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
files = [
{file = "atomicwrites-1.4.1.tar.gz", hash = "sha256:81b2c9071a49367a7f770170e5eec8cb66567cfbbc8c73d20ce5ca4a8d71cf11"},
]
[[package]]
name = "attrs"
version = "23.1.0"
version = "21.4.0"
description = "Classes Without Boilerplate"
category = "main"
optional = false
python-versions = ">=3.7"
files = [
{file = "attrs-23.1.0-py3-none-any.whl", hash = "sha256:1f28b4522cdc2fb4256ac1a020c78acf9cba2c6b461ccd2c126f3aa8e8335d04"},
{file = "attrs-23.1.0.tar.gz", hash = "sha256:6279836d581513a26f1bf235f9acd333bc9115683f14f7e8fae46c98fc50e015"},
]
[package.dependencies]
importlib-metadata = {version = "*", markers = "python_version < \"3.8\""}
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
[package.extras]
cov = ["attrs[tests]", "coverage[toml] (>=5.3)"]
dev = ["attrs[docs,tests]", "pre-commit"]
docs = ["furo", "myst-parser", "sphinx", "sphinx-notfound-page", "sphinxcontrib-towncrier", "towncrier", "zope-interface"]
tests = ["attrs[tests-no-zope]", "zope-interface"]
tests-no-zope = ["cloudpickle", "hypothesis", "mypy (>=1.1.1)", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "pytest-xdist[psutil]"]
dev = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "mypy", "pytest-mypy-plugins", "zope.interface", "furo", "sphinx", "sphinx-notfound-page", "pre-commit", "cloudpickle"]
docs = ["furo", "sphinx", "zope.interface", "sphinx-notfound-page"]
tests = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "mypy", "pytest-mypy-plugins", "zope.interface", "cloudpickle"]
tests_no_zope = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "mypy", "pytest-mypy-plugins", "cloudpickle"]
[[package]]
name = "boto3"
version = "1.28.81"
version = "1.26.89"
description = "The AWS SDK for Python"
category = "main"
optional = false
python-versions = ">= 3.7"
files = [
{file = "boto3-1.28.81-py3-none-any.whl", hash = "sha256:66e457b5f1580eb1f29855d867dec743eeec42b3935372eee5e6730e5e3124df"},
{file = "boto3-1.28.81.tar.gz", hash = "sha256:6ec7da884eed5c07e679d251bd5c66e4e2f64755ed98270a20323b241c54a743"},
]
[package.dependencies]
botocore = ">=1.31.81,<1.32.0"
botocore = ">=1.29.89,<1.30.0"
jmespath = ">=0.7.1,<2.0.0"
s3transfer = ">=0.7.0,<0.8.0"
s3transfer = ">=0.6.0,<0.7.0"
[package.extras]
crt = ["botocore[crt] (>=1.21.0,<2.0a0)"]
[[package]]
name = "botocore"
version = "1.31.81"
version = "1.29.89"
description = "Low-level, data-driven core of boto 3."
category = "main"
optional = false
python-versions = ">= 3.7"
files = [
{file = "botocore-1.31.81-py3-none-any.whl", hash = "sha256:eeb09a77c3e931667c9442565e8697e89e685089912a96d95f65b63e4b2c8c71"},
{file = "botocore-1.31.81.tar.gz", hash = "sha256:afb0886c5a5a542f763cc1644b1c1b4a783698d79980eb48052d1676d6b3d14e"},
]
[package.dependencies]
jmespath = ">=0.7.1,<2.0.0"
python-dateutil = ">=2.1,<3.0.0"
urllib3 = [
{version = ">=1.25.4,<1.27", markers = "python_version < \"3.10\""},
{version = ">=1.25.4,<2.1", markers = "python_version >= \"3.10\""},
]
urllib3 = ">=1.25.4,<1.27"
[package.extras]
crt = ["awscrt (==0.16.26)"]
crt = ["awscrt (==0.16.9)"]
[[package]]
name = "certifi"
version = "2023.7.22"
version = "2022.12.7"
description = "Python package for providing Mozilla's CA Bundle."
category = "main"
optional = false
python-versions = ">=3.6"
files = [
{file = "certifi-2023.7.22-py3-none-any.whl", hash = "sha256:92d6037539857d8206b8f6ae472e8b77db8058fec5937a1ef3f54304089edbb9"},
{file = "certifi-2023.7.22.tar.gz", hash = "sha256:539cc1d13202e33ca466e88b2807e29f4c13049d6d87031a3c110744495cb082"},
]
[[package]]
name = "charset-normalizer"
version = "3.3.2"
version = "3.1.0"
description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet."
category = "main"
optional = false
python-versions = ">=3.7.0"
files = [
{file = "charset-normalizer-3.3.2.tar.gz", hash = "sha256:f30c3cb33b24454a82faecaf01b19c18562b1e89558fb6c56de4d9118a032fd5"},
{file = "charset_normalizer-3.3.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:25baf083bf6f6b341f4121c2f3c548875ee6f5339300e08be3f2b2ba1721cdd3"},
{file = "charset_normalizer-3.3.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:06435b539f889b1f6f4ac1758871aae42dc3a8c0e24ac9e60c2384973ad73027"},
{file = "charset_normalizer-3.3.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9063e24fdb1e498ab71cb7419e24622516c4a04476b17a2dab57e8baa30d6e03"},
{file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6897af51655e3691ff853668779c7bad41579facacf5fd7253b0133308cf000d"},
{file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1d3193f4a680c64b4b6a9115943538edb896edc190f0b222e73761716519268e"},
{file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cd70574b12bb8a4d2aaa0094515df2463cb429d8536cfb6c7ce983246983e5a6"},
{file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8465322196c8b4d7ab6d1e049e4c5cb460d0394da4a27d23cc242fbf0034b6b5"},
{file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a9a8e9031d613fd2009c182b69c7b2c1ef8239a0efb1df3f7c8da66d5dd3d537"},
{file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:beb58fe5cdb101e3a055192ac291b7a21e3b7ef4f67fa1d74e331a7f2124341c"},
{file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:e06ed3eb3218bc64786f7db41917d4e686cc4856944f53d5bdf83a6884432e12"},
{file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:2e81c7b9c8979ce92ed306c249d46894776a909505d8f5a4ba55b14206e3222f"},
{file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:572c3763a264ba47b3cf708a44ce965d98555f618ca42c926a9c1616d8f34269"},
{file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:fd1abc0d89e30cc4e02e4064dc67fcc51bd941eb395c502aac3ec19fab46b519"},
{file = "charset_normalizer-3.3.2-cp310-cp310-win32.whl", hash = "sha256:3d47fa203a7bd9c5b6cee4736ee84ca03b8ef23193c0d1ca99b5089f72645c73"},
{file = "charset_normalizer-3.3.2-cp310-cp310-win_amd64.whl", hash = "sha256:10955842570876604d404661fbccbc9c7e684caf432c09c715ec38fbae45ae09"},
{file = "charset_normalizer-3.3.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:802fe99cca7457642125a8a88a084cef28ff0cf9407060f7b93dca5aa25480db"},
{file = "charset_normalizer-3.3.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:573f6eac48f4769d667c4442081b1794f52919e7edada77495aaed9236d13a96"},
{file = "charset_normalizer-3.3.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:549a3a73da901d5bc3ce8d24e0600d1fa85524c10287f6004fbab87672bf3e1e"},
{file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f27273b60488abe721a075bcca6d7f3964f9f6f067c8c4c605743023d7d3944f"},
{file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1ceae2f17a9c33cb48e3263960dc5fc8005351ee19db217e9b1bb15d28c02574"},
{file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:65f6f63034100ead094b8744b3b97965785388f308a64cf8d7c34f2f2e5be0c4"},
{file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:753f10e867343b4511128c6ed8c82f7bec3bd026875576dfd88483c5c73b2fd8"},
{file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4a78b2b446bd7c934f5dcedc588903fb2f5eec172f3d29e52a9096a43722adfc"},
{file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:e537484df0d8f426ce2afb2d0f8e1c3d0b114b83f8850e5f2fbea0e797bd82ae"},
{file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:eb6904c354526e758fda7167b33005998fb68c46fbc10e013ca97f21ca5c8887"},
{file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:deb6be0ac38ece9ba87dea880e438f25ca3eddfac8b002a2ec3d9183a454e8ae"},
{file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:4ab2fe47fae9e0f9dee8c04187ce5d09f48eabe611be8259444906793ab7cbce"},
{file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:80402cd6ee291dcb72644d6eac93785fe2c8b9cb30893c1af5b8fdd753b9d40f"},
{file = "charset_normalizer-3.3.2-cp311-cp311-win32.whl", hash = "sha256:7cd13a2e3ddeed6913a65e66e94b51d80a041145a026c27e6bb76c31a853c6ab"},
{file = "charset_normalizer-3.3.2-cp311-cp311-win_amd64.whl", hash = "sha256:663946639d296df6a2bb2aa51b60a2454ca1cb29835324c640dafb5ff2131a77"},
{file = "charset_normalizer-3.3.2-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:0b2b64d2bb6d3fb9112bafa732def486049e63de9618b5843bcdd081d8144cd8"},
{file = "charset_normalizer-3.3.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:ddbb2551d7e0102e7252db79ba445cdab71b26640817ab1e3e3648dad515003b"},
{file = "charset_normalizer-3.3.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:55086ee1064215781fff39a1af09518bc9255b50d6333f2e4c74ca09fac6a8f6"},
{file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8f4a014bc36d3c57402e2977dada34f9c12300af536839dc38c0beab8878f38a"},
{file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a10af20b82360ab00827f916a6058451b723b4e65030c5a18577c8b2de5b3389"},
{file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8d756e44e94489e49571086ef83b2bb8ce311e730092d2c34ca8f7d925cb20aa"},
{file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:90d558489962fd4918143277a773316e56c72da56ec7aa3dc3dbbe20fdfed15b"},
{file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6ac7ffc7ad6d040517be39eb591cac5ff87416c2537df6ba3cba3bae290c0fed"},
{file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:7ed9e526742851e8d5cc9e6cf41427dfc6068d4f5a3bb03659444b4cabf6bc26"},
{file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:8bdb58ff7ba23002a4c5808d608e4e6c687175724f54a5dade5fa8c67b604e4d"},
{file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:6b3251890fff30ee142c44144871185dbe13b11bab478a88887a639655be1068"},
{file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:b4a23f61ce87adf89be746c8a8974fe1c823c891d8f86eb218bb957c924bb143"},
{file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:efcb3f6676480691518c177e3b465bcddf57cea040302f9f4e6e191af91174d4"},
{file = "charset_normalizer-3.3.2-cp312-cp312-win32.whl", hash = "sha256:d965bba47ddeec8cd560687584e88cf699fd28f192ceb452d1d7ee807c5597b7"},
{file = "charset_normalizer-3.3.2-cp312-cp312-win_amd64.whl", hash = "sha256:96b02a3dc4381e5494fad39be677abcb5e6634bf7b4fa83a6dd3112607547001"},
{file = "charset_normalizer-3.3.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:95f2a5796329323b8f0512e09dbb7a1860c46a39da62ecb2324f116fa8fdc85c"},
{file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c002b4ffc0be611f0d9da932eb0f704fe2602a9a949d1f738e4c34c75b0863d5"},
{file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a981a536974bbc7a512cf44ed14938cf01030a99e9b3a06dd59578882f06f985"},
{file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3287761bc4ee9e33561a7e058c72ac0938c4f57fe49a09eae428fd88aafe7bb6"},
{file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:42cb296636fcc8b0644486d15c12376cb9fa75443e00fb25de0b8602e64c1714"},
{file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0a55554a2fa0d408816b3b5cedf0045f4b8e1a6065aec45849de2d6f3f8e9786"},
{file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:c083af607d2515612056a31f0a8d9e0fcb5876b7bfc0abad3ecd275bc4ebc2d5"},
{file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:87d1351268731db79e0f8e745d92493ee2841c974128ef629dc518b937d9194c"},
{file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:bd8f7df7d12c2db9fab40bdd87a7c09b1530128315d047a086fa3ae3435cb3a8"},
{file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:c180f51afb394e165eafe4ac2936a14bee3eb10debc9d9e4db8958fe36afe711"},
{file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:8c622a5fe39a48f78944a87d4fb8a53ee07344641b0562c540d840748571b811"},
{file = "charset_normalizer-3.3.2-cp37-cp37m-win32.whl", hash = "sha256:db364eca23f876da6f9e16c9da0df51aa4f104a972735574842618b8c6d999d4"},
{file = "charset_normalizer-3.3.2-cp37-cp37m-win_amd64.whl", hash = "sha256:86216b5cee4b06df986d214f664305142d9c76df9b6512be2738aa72a2048f99"},
{file = "charset_normalizer-3.3.2-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:6463effa3186ea09411d50efc7d85360b38d5f09b870c48e4600f63af490e56a"},
{file = "charset_normalizer-3.3.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:6c4caeef8fa63d06bd437cd4bdcf3ffefe6738fb1b25951440d80dc7df8c03ac"},
{file = "charset_normalizer-3.3.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:37e55c8e51c236f95b033f6fb391d7d7970ba5fe7ff453dad675e88cf303377a"},
{file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fb69256e180cb6c8a894fee62b3afebae785babc1ee98b81cdf68bbca1987f33"},
{file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ae5f4161f18c61806f411a13b0310bea87f987c7d2ecdbdaad0e94eb2e404238"},
{file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b2b0a0c0517616b6869869f8c581d4eb2dd83a4d79e0ebcb7d373ef9956aeb0a"},
{file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:45485e01ff4d3630ec0d9617310448a8702f70e9c01906b0d0118bdf9d124cf2"},
{file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:eb00ed941194665c332bf8e078baf037d6c35d7c4f3102ea2d4f16ca94a26dc8"},
{file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:2127566c664442652f024c837091890cb1942c30937add288223dc895793f898"},
{file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:a50aebfa173e157099939b17f18600f72f84eed3049e743b68ad15bd69b6bf99"},
{file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:4d0d1650369165a14e14e1e47b372cfcb31d6ab44e6e33cb2d4e57265290044d"},
{file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:923c0c831b7cfcb071580d3f46c4baf50f174be571576556269530f4bbd79d04"},
{file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:06a81e93cd441c56a9b65d8e1d043daeb97a3d0856d177d5c90ba85acb3db087"},
{file = "charset_normalizer-3.3.2-cp38-cp38-win32.whl", hash = "sha256:6ef1d82a3af9d3eecdba2321dc1b3c238245d890843e040e41e470ffa64c3e25"},
{file = "charset_normalizer-3.3.2-cp38-cp38-win_amd64.whl", hash = "sha256:eb8821e09e916165e160797a6c17edda0679379a4be5c716c260e836e122f54b"},
{file = "charset_normalizer-3.3.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:c235ebd9baae02f1b77bcea61bce332cb4331dc3617d254df3323aa01ab47bd4"},
{file = "charset_normalizer-3.3.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:5b4c145409bef602a690e7cfad0a15a55c13320ff7a3ad7ca59c13bb8ba4d45d"},
{file = "charset_normalizer-3.3.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:68d1f8a9e9e37c1223b656399be5d6b448dea850bed7d0f87a8311f1ff3dabb0"},
{file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:22afcb9f253dac0696b5a4be4a1c0f8762f8239e21b99680099abd9b2b1b2269"},
{file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e27ad930a842b4c5eb8ac0016b0a54f5aebbe679340c26101df33424142c143c"},
{file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1f79682fbe303db92bc2b1136016a38a42e835d932bab5b3b1bfcfbf0640e519"},
{file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b261ccdec7821281dade748d088bb6e9b69e6d15b30652b74cbbac25e280b796"},
{file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:122c7fa62b130ed55f8f285bfd56d5f4b4a5b503609d181f9ad85e55c89f4185"},
{file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:d0eccceffcb53201b5bfebb52600a5fb483a20b61da9dbc885f8b103cbe7598c"},
{file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:9f96df6923e21816da7e0ad3fd47dd8f94b2a5ce594e00677c0013018b813458"},
{file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:7f04c839ed0b6b98b1a7501a002144b76c18fb1c1850c8b98d458ac269e26ed2"},
{file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:34d1c8da1e78d2e001f363791c98a272bb734000fcef47a491c1e3b0505657a8"},
{file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:ff8fa367d09b717b2a17a052544193ad76cd49979c805768879cb63d9ca50561"},
{file = "charset_normalizer-3.3.2-cp39-cp39-win32.whl", hash = "sha256:aed38f6e4fb3f5d6bf81bfa990a07806be9d83cf7bacef998ab1a9bd660a581f"},
{file = "charset_normalizer-3.3.2-cp39-cp39-win_amd64.whl", hash = "sha256:b01b88d45a6fcb69667cd6d2f7a9aeb4bf53760d7fc536bf679ec94fe9f3ff3d"},
{file = "charset_normalizer-3.3.2-py3-none-any.whl", hash = "sha256:3e4d1f6587322d2788836a99c69062fbb091331ec940e02d12d179c1d53e25fc"},
]
[[package]]
name = "colorama"
version = "0.4.6"
description = "Cross-platform colored terminal text."
category = "dev"
optional = false
python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7"
files = [
{file = "colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6"},
{file = "colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44"},
]
[[package]]
name = "idna"
version = "3.4"
description = "Internationalized Domain Names in Applications (IDNA)"
category = "main"
optional = false
python-versions = ">=3.5"
files = [
{file = "idna-3.4-py3-none-any.whl", hash = "sha256:90b77e79eaa3eba6de819a0c442c0b4ceefc341a7a2ab77d7562bf49f425c5c2"},
{file = "idna-3.4.tar.gz", hash = "sha256:814f528e8dead7d329833b91c5faa87d60bf71824cd12a7530b5526063d02cb4"},
]
[[package]]
name = "importlib-metadata"
version = "6.7.0"
version = "6.0.0"
description = "Read metadata from Python packages"
category = "dev"
optional = false
python-versions = ">=3.7"
files = [
{file = "importlib_metadata-6.7.0-py3-none-any.whl", hash = "sha256:cb52082e659e97afc5dac71e79de97d8681de3aa07ff18578330904a9d18e5b5"},
{file = "importlib_metadata-6.7.0.tar.gz", hash = "sha256:1aaf550d4f73e5d6783e7acb77aec43d49da8017410afae93822cc9cca98c4d4"},
]
[package.dependencies]
typing-extensions = {version = ">=3.6.4", markers = "python_version < \"3.8\""}
zipp = ">=0.5"
[package.extras]
docs = ["furo", "jaraco.packaging (>=9)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"]
docs = ["sphinx (>=3.5)", "jaraco.packaging (>=9)", "rst.linker (>=1.9)", "furo", "sphinx-lint", "jaraco.tidelift (>=1.4)"]
perf = ["ipython"]
testing = ["flufl.flake8", "importlib-resources (>=1.3)", "packaging", "pyfakefs", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=1.3)", "pytest-mypy (>=0.9.1)", "pytest-perf (>=0.9.2)", "pytest-ruff"]
testing = ["pytest (>=6)", "pytest-checkdocs (>=2.4)", "flake8 (<5)", "pytest-cov", "pytest-enabler (>=1.3)", "packaging", "pyfakefs", "flufl.flake8", "pytest-perf (>=0.9.2)", "pytest-black (>=0.3.7)", "pytest-mypy (>=0.9.1)", "pytest-flake8", "importlib-resources (>=1.3)"]
[[package]]
name = "importlib-resources"
version = "5.12.0"
description = "Read resources from Python packages"
category = "main"
optional = false
python-versions = ">=3.7"
files = [
{file = "importlib_resources-5.12.0-py3-none-any.whl", hash = "sha256:7b1deeebbf351c7578e09bf2f63fa2ce8b5ffec296e0d349139d43cca061a81a"},
{file = "importlib_resources-5.12.0.tar.gz", hash = "sha256:4be82589bf5c1d7999aedf2a45159d10cb3ca4f19b2271f8792bc8e6da7b22f6"},
]
[package.dependencies]
zipp = {version = ">=3.1.0", markers = "python_version < \"3.10\""}
[package.extras]
docs = ["furo", "jaraco.packaging (>=9)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"]
testing = ["flake8 (<5)", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=1.3)", "pytest-flake8", "pytest-mypy (>=0.9.1)"]
docs = ["sphinx (>=3.5)", "jaraco.packaging (>=9)", "rst.linker (>=1.9)", "furo", "sphinx-lint", "jaraco.tidelift (>=1.4)"]
testing = ["pytest (>=6)", "pytest-checkdocs (>=2.4)", "flake8 (<5)", "pytest-cov", "pytest-enabler (>=1.3)", "pytest-black (>=0.3.7)", "pytest-mypy (>=0.9.1)", "pytest-flake8"]
[[package]]
name = "jinja2"
version = "2.11.3"
description = "A very fast and expressive template engine."
category = "main"
optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
files = [
{file = "Jinja2-2.11.3-py2.py3-none-any.whl", hash = "sha256:03e47ad063331dd6a3f04a43eddca8a966a26ba0c5b7207a9a9e4e08f1b29419"},
{file = "Jinja2-2.11.3.tar.gz", hash = "sha256:a6d58433de0ae800347cab1fa3043cebbabe8baa9d29e668f1c768cb87a333c6"},
]
[package.dependencies]
MarkupSafe = ">=0.23"
@ -263,23 +134,17 @@ i18n = ["Babel (>=0.8)"]
name = "jmespath"
version = "1.0.1"
description = "JSON Matching Expressions"
category = "main"
optional = false
python-versions = ">=3.7"
files = [
{file = "jmespath-1.0.1-py3-none-any.whl", hash = "sha256:02e2e4cc71b5bcab88332eebf907519190dd9e6e82107fa7f83b1003a6252980"},
{file = "jmespath-1.0.1.tar.gz", hash = "sha256:90261b206d6defd58fdd5e85f478bf633a2901798906be2ad389150c5c60edbe"},
]
[[package]]
name = "kobo"
version = "0.33.0"
version = "0.24.2"
description = "A pile of python modules used by Red Hat release engineering to build their tools"
category = "main"
optional = false
python-versions = ">=3.6"
files = [
{file = "kobo-0.33.0-py3-none-any.whl", hash = "sha256:50f2eef41d1e528eba0bcdc04e6d88073353e6815abb86bf4fe3b1a7be449039"},
{file = "kobo-0.33.0.tar.gz", hash = "sha256:34711f4ad0f38600bf7aafe6039b24d94458212de8b2b67c4b0c3144d47ef617"},
]
python-versions = ">2.6"
[package.dependencies]
six = "*"
@ -288,9 +153,227 @@ six = "*"
name = "markupsafe"
version = "2.0.1"
description = "Safely add untrusted strings to HTML/XML markup."
category = "main"
optional = false
python-versions = ">=3.6"
files = [
[[package]]
name = "more-itertools"
version = "9.1.0"
description = "More routines for operating on iterables, beyond itertools"
category = "dev"
optional = false
python-versions = ">=3.7"
[[package]]
name = "packaging"
version = "23.0"
description = "Core utilities for Python packages"
category = "dev"
optional = false
python-versions = ">=3.7"
[[package]]
name = "pluggy"
version = "0.13.1"
description = "plugin and hook calling mechanisms for python"
category = "dev"
optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
[package.dependencies]
importlib-metadata = {version = ">=0.12", markers = "python_version < \"3.8\""}
[package.extras]
dev = ["pre-commit", "tox"]
[[package]]
name = "productmd"
version = "1.33"
description = "Product, compose and installation media metadata library"
category = "main"
optional = false
python-versions = "*"
[package.dependencies]
six = "*"
[[package]]
name = "py"
version = "1.11.0"
description = "library with cross-python path, ini-parsing, io, code, log facilities"
category = "dev"
optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
[[package]]
name = "pytest"
version = "5.4.3"
description = "pytest: simple powerful testing with Python"
category = "dev"
optional = false
python-versions = ">=3.5"
[package.dependencies]
atomicwrites = {version = ">=1.0", markers = "sys_platform == \"win32\""}
attrs = ">=17.4.0"
colorama = {version = "*", markers = "sys_platform == \"win32\""}
importlib-metadata = {version = ">=0.12", markers = "python_version < \"3.8\""}
more-itertools = ">=4.0.0"
packaging = "*"
pluggy = ">=0.12,<1.0"
py = ">=1.5.0"
wcwidth = "*"
[package.extras]
checkqa-mypy = ["mypy (==v0.761)"]
testing = ["argcomplete", "hypothesis (>=3.56)", "mock", "nose", "requests", "xmlschema"]
[[package]]
name = "python-dateutil"
version = "2.8.2"
description = "Extensions to the standard Python datetime module"
category = "main"
optional = false
python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7"
[package.dependencies]
six = ">=1.5"
[[package]]
name = "pyyaml"
version = "6.0"
description = "YAML parser and emitter for Python"
category = "main"
optional = false
python-versions = ">=3.6"
[[package]]
name = "requests"
version = "2.28.2"
description = "Python HTTP for Humans."
category = "main"
optional = false
python-versions = ">=3.7, <4"
[package.dependencies]
certifi = ">=2017.4.17"
charset-normalizer = ">=2,<4"
idna = ">=2.5,<4"
urllib3 = ">=1.21.1,<1.27"
[package.extras]
socks = ["PySocks (>=1.5.6,!=1.5.7)"]
use_chardet_on_py3 = ["chardet (>=3.0.2,<6)"]
[[package]]
name = "rpm-py-installer"
version = "1.1.0"
description = "RPM Python binding Installer"
category = "main"
optional = false
python-versions = "*"
[[package]]
name = "s3transfer"
version = "0.6.0"
description = "An Amazon S3 Transfer Manager"
category = "main"
optional = false
python-versions = ">= 3.7"
[package.dependencies]
botocore = ">=1.12.36,<2.0a.0"
[package.extras]
crt = ["botocore[crt] (>=1.20.29,<2.0a.0)"]
[[package]]
name = "six"
version = "1.16.0"
description = "Python 2 and 3 compatibility utilities"
category = "main"
optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*"
[[package]]
name = "typing-extensions"
version = "4.5.0"
description = "Backported and Experimental Type Hints for Python 3.7+"
category = "dev"
optional = false
python-versions = ">=3.7"
[[package]]
name = "urllib3"
version = "1.26.15"
description = "HTTP library with thread-safe connection pooling, file post, and more."
category = "main"
optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*"
[package.extras]
brotli = ["brotlicffi (>=0.8.0)", "brotli (>=1.0.9)", "brotlipy (>=0.6.0)"]
secure = ["pyOpenSSL (>=0.14)", "cryptography (>=1.3.4)", "idna (>=2.0.0)", "certifi", "urllib3-secure-extra", "ipaddress"]
socks = ["PySocks (>=1.5.6,!=1.5.7,<2.0)"]
[[package]]
name = "wcwidth"
version = "0.2.6"
description = "Measures the displayed width of unicode strings in a terminal"
category = "dev"
optional = false
python-versions = "*"
[[package]]
name = "xmltodict"
version = "0.13.0"
description = "Makes working with XML feel like you are working with JSON"
category = "main"
optional = false
python-versions = ">=3.4"
[[package]]
name = "zipp"
version = "3.15.0"
description = "Backport of pathlib-compatible object wrapper for zip files"
category = "main"
optional = false
python-versions = ">=3.7"
[package.extras]
docs = ["sphinx (>=3.5)", "jaraco.packaging (>=9)", "rst.linker (>=1.9)", "furo", "sphinx-lint", "jaraco.tidelift (>=1.4)"]
testing = ["pytest (>=6)", "pytest-checkdocs (>=2.4)", "flake8 (<5)", "pytest-cov", "pytest-enabler (>=1.3)", "jaraco.itertools", "jaraco.functools", "more-itertools", "big-o", "pytest-black (>=0.3.7)", "pytest-mypy (>=0.9.1)", "pytest-flake8"]
[metadata]
lock-version = "1.1"
python-versions = ">=3.7,<4"
content-hash = "42676fd0ceb350c8cd90246dc688cfcd404e14d22229052d0527fe342c135b95"
[metadata.files]
atomicwrites = []
attrs = [
{file = "attrs-21.4.0-py2.py3-none-any.whl", hash = "sha256:2d27e3784d7a565d36ab851fe94887c5eccd6a463168875832a1be79c82828b4"},
{file = "attrs-21.4.0.tar.gz", hash = "sha256:626ba8234211db98e869df76230a137c4c40a12d72445c45d5f5b716f076e2fd"},
]
boto3 = []
botocore = []
certifi = []
charset-normalizer = []
colorama = []
idna = []
importlib-metadata = []
importlib-resources = []
jinja2 = [
{file = "Jinja2-2.11.3-py2.py3-none-any.whl", hash = "sha256:03e47ad063331dd6a3f04a43eddca8a966a26ba0c5b7207a9a9e4e08f1b29419"},
{file = "Jinja2-2.11.3.tar.gz", hash = "sha256:a6d58433de0ae800347cab1fa3043cebbabe8baa9d29e668f1c768cb87a333c6"},
]
jmespath = [
{file = "jmespath-1.0.1-py3-none-any.whl", hash = "sha256:02e2e4cc71b5bcab88332eebf907519190dd9e6e82107fa7f83b1003a6252980"},
{file = "jmespath-1.0.1.tar.gz", hash = "sha256:90261b206d6defd58fdd5e85f478bf633a2901798906be2ad389150c5c60edbe"},
]
kobo = []
markupsafe = [
{file = "MarkupSafe-2.0.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:d8446c54dc28c01e5a2dbac5a25f071f6653e6e40f3a8818e8b45d790fe6ef53"},
{file = "MarkupSafe-2.0.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:36bc903cbb393720fad60fc28c10de6acf10dc6cc883f3e24ee4012371399a38"},
{file = "MarkupSafe-2.0.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2d7d807855b419fc2ed3e631034685db6079889a1f01d5d9dac950f764da3dad"},
@ -361,315 +444,80 @@ files = [
{file = "MarkupSafe-2.0.1-cp39-cp39-win_amd64.whl", hash = "sha256:693ce3f9e70a6cf7d2fb9e6c9d8b204b6b39897a2c4a1aa65728d5ac97dcc1d8"},
{file = "MarkupSafe-2.0.1.tar.gz", hash = "sha256:594c67807fb16238b30c44bdf74f36c02cdf22d1c8cda91ef8a0ed8dabf5620a"},
]
[[package]]
name = "more-itertools"
version = "9.1.0"
description = "More routines for operating on iterables, beyond itertools"
optional = false
python-versions = ">=3.7"
files = [
{file = "more-itertools-9.1.0.tar.gz", hash = "sha256:cabaa341ad0389ea83c17a94566a53ae4c9d07349861ecb14dc6d0345cf9ac5d"},
{file = "more_itertools-9.1.0-py3-none-any.whl", hash = "sha256:d2bc7f02446e86a68911e58ded76d6561eea00cddfb2a91e7019bbb586c799f3"},
]
[[package]]
name = "packaging"
version = "23.2"
description = "Core utilities for Python packages"
optional = false
python-versions = ">=3.7"
files = [
{file = "packaging-23.2-py3-none-any.whl", hash = "sha256:8c491190033a9af7e1d931d0b5dacc2ef47509b34dd0de67ed209b5203fc88c7"},
{file = "packaging-23.2.tar.gz", hash = "sha256:048fb0e9405036518eaaf48a55953c750c11e1a1b68e0dd1a9d62ed0c092cfc5"},
]
[[package]]
name = "pluggy"
version = "0.13.1"
description = "plugin and hook calling mechanisms for python"
optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
files = [
more-itertools = []
packaging = []
pluggy = [
{file = "pluggy-0.13.1-py2.py3-none-any.whl", hash = "sha256:966c145cd83c96502c3c3868f50408687b38434af77734af1e9ca461a4081d2d"},
{file = "pluggy-0.13.1.tar.gz", hash = "sha256:15b2acde666561e1298d71b523007ed7364de07029219b604cf808bfa1c765b0"},
]
[package.dependencies]
importlib-metadata = {version = ">=0.12", markers = "python_version < \"3.8\""}
[package.extras]
dev = ["pre-commit", "tox"]
[[package]]
name = "productmd"
version = "1.37"
description = "Product, compose and installation media metadata library"
optional = false
python-versions = "*"
files = [
{file = "productmd-1.37-py3-none-any.whl", hash = "sha256:9f037ca1807f3ec293a61be2c989da52956c10ffd09b05f2166c8d26f70a17f0"},
{file = "productmd-1.37.tar.gz", hash = "sha256:8d9057d9874f159a0a581e8c3b5e0c39fff9794fc010ad379d0c88d81c7adccd"},
productmd = [
{file = "productmd-1.33-py3-none-any.whl", hash = "sha256:467dfeb84e74834b6a65508536ccd8ec2d81c24a0ecee5e77d2c358e97eae164"},
{file = "productmd-1.33.tar.gz", hash = "sha256:aaf49bdd2a5cb97f7c6b5011f669dbed153efc7bc61e6935fa796a1b94d16b7e"},
]
[package.dependencies]
six = "*"
[[package]]
name = "py"
version = "1.11.0"
description = "library with cross-python path, ini-parsing, io, code, log facilities"
optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
files = [
py = [
{file = "py-1.11.0-py2.py3-none-any.whl", hash = "sha256:607c53218732647dff4acdfcd50cb62615cedf612e72d1724fb1a0cc6405b378"},
{file = "py-1.11.0.tar.gz", hash = "sha256:51c75c4126074b472f746a24399ad32f6053d1b34b68d2fa41e558e6f4a98719"},
]
[[package]]
name = "pytest"
version = "5.4.3"
description = "pytest: simple powerful testing with Python"
optional = false
python-versions = ">=3.5"
files = [
pytest = [
{file = "pytest-5.4.3-py3-none-any.whl", hash = "sha256:5c0db86b698e8f170ba4582a492248919255fcd4c79b1ee64ace34301fb589a1"},
{file = "pytest-5.4.3.tar.gz", hash = "sha256:7979331bfcba207414f5e1263b5a0f8f521d0f457318836a7355531ed1a4c7d8"},
]
[package.dependencies]
atomicwrites = {version = ">=1.0", markers = "sys_platform == \"win32\""}
attrs = ">=17.4.0"
colorama = {version = "*", markers = "sys_platform == \"win32\""}
importlib-metadata = {version = ">=0.12", markers = "python_version < \"3.8\""}
more-itertools = ">=4.0.0"
packaging = "*"
pluggy = ">=0.12,<1.0"
py = ">=1.5.0"
wcwidth = "*"
[package.extras]
checkqa-mypy = ["mypy (==v0.761)"]
testing = ["argcomplete", "hypothesis (>=3.56)", "mock", "nose", "requests", "xmlschema"]
[[package]]
name = "python-dateutil"
version = "2.8.2"
description = "Extensions to the standard Python datetime module"
optional = false
python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7"
files = [
python-dateutil = [
{file = "python-dateutil-2.8.2.tar.gz", hash = "sha256:0123cacc1627ae19ddf3c27a5de5bd67ee4586fbdd6440d9748f8abb483d3e86"},
{file = "python_dateutil-2.8.2-py2.py3-none-any.whl", hash = "sha256:961d03dc3453ebbc59dbdea9e4e11c5651520a876d0f4db161e8674aae935da9"},
]
[package.dependencies]
six = ">=1.5"
[[package]]
name = "pyyaml"
version = "6.0.1"
description = "YAML parser and emitter for Python"
optional = false
python-versions = ">=3.6"
files = [
{file = "PyYAML-6.0.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d858aa552c999bc8a8d57426ed01e40bef403cd8ccdd0fc5f6f04a00414cac2a"},
{file = "PyYAML-6.0.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:fd66fc5d0da6d9815ba2cebeb4205f95818ff4b79c3ebe268e75d961704af52f"},
{file = "PyYAML-6.0.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:69b023b2b4daa7548bcfbd4aa3da05b3a74b772db9e23b982788168117739938"},
{file = "PyYAML-6.0.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:81e0b275a9ecc9c0c0c07b4b90ba548307583c125f54d5b6946cfee6360c733d"},
{file = "PyYAML-6.0.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ba336e390cd8e4d1739f42dfe9bb83a3cc2e80f567d8805e11b46f4a943f5515"},
{file = "PyYAML-6.0.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:326c013efe8048858a6d312ddd31d56e468118ad4cdeda36c719bf5bb6192290"},
{file = "PyYAML-6.0.1-cp310-cp310-win32.whl", hash = "sha256:bd4af7373a854424dabd882decdc5579653d7868b8fb26dc7d0e99f823aa5924"},
{file = "PyYAML-6.0.1-cp310-cp310-win_amd64.whl", hash = "sha256:fd1592b3fdf65fff2ad0004b5e363300ef59ced41c2e6b3a99d4089fa8c5435d"},
{file = "PyYAML-6.0.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:6965a7bc3cf88e5a1c3bd2e0b5c22f8d677dc88a455344035f03399034eb3007"},
{file = "PyYAML-6.0.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f003ed9ad21d6a4713f0a9b5a7a0a79e08dd0f221aff4525a2be4c346ee60aab"},
{file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:42f8152b8dbc4fe7d96729ec2b99c7097d656dc1213a3229ca5383f973a5ed6d"},
{file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:062582fca9fabdd2c8b54a3ef1c978d786e0f6b3a1510e0ac93ef59e0ddae2bc"},
{file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d2b04aac4d386b172d5b9692e2d2da8de7bfb6c387fa4f801fbf6fb2e6ba4673"},
{file = "PyYAML-6.0.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:e7d73685e87afe9f3b36c799222440d6cf362062f78be1013661b00c5c6f678b"},
{file = "PyYAML-6.0.1-cp311-cp311-win32.whl", hash = "sha256:1635fd110e8d85d55237ab316b5b011de701ea0f29d07611174a1b42f1444741"},
{file = "PyYAML-6.0.1-cp311-cp311-win_amd64.whl", hash = "sha256:bf07ee2fef7014951eeb99f56f39c9bb4af143d8aa3c21b1677805985307da34"},
{file = "PyYAML-6.0.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:855fb52b0dc35af121542a76b9a84f8d1cd886ea97c84703eaa6d88e37a2ad28"},
{file = "PyYAML-6.0.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:40df9b996c2b73138957fe23a16a4f0ba614f4c0efce1e9406a184b6d07fa3a9"},
{file = "PyYAML-6.0.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6c22bec3fbe2524cde73d7ada88f6566758a8f7227bfbf93a408a9d86bcc12a0"},
{file = "PyYAML-6.0.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8d4e9c88387b0f5c7d5f281e55304de64cf7f9c0021a3525bd3b1c542da3b0e4"},
{file = "PyYAML-6.0.1-cp312-cp312-win32.whl", hash = "sha256:d483d2cdf104e7c9fa60c544d92981f12ad66a457afae824d146093b8c294c54"},
{file = "PyYAML-6.0.1-cp312-cp312-win_amd64.whl", hash = "sha256:0d3304d8c0adc42be59c5f8a4d9e3d7379e6955ad754aa9d6ab7a398b59dd1df"},
{file = "PyYAML-6.0.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:50550eb667afee136e9a77d6dc71ae76a44df8b3e51e41b77f6de2932bfe0f47"},
{file = "PyYAML-6.0.1-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1fe35611261b29bd1de0070f0b2f47cb6ff71fa6595c077e42bd0c419fa27b98"},
{file = "PyYAML-6.0.1-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:704219a11b772aea0d8ecd7058d0082713c3562b4e271b849ad7dc4a5c90c13c"},
{file = "PyYAML-6.0.1-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:afd7e57eddb1a54f0f1a974bc4391af8bcce0b444685d936840f125cf046d5bd"},
{file = "PyYAML-6.0.1-cp36-cp36m-win32.whl", hash = "sha256:fca0e3a251908a499833aa292323f32437106001d436eca0e6e7833256674585"},
{file = "PyYAML-6.0.1-cp36-cp36m-win_amd64.whl", hash = "sha256:f22ac1c3cac4dbc50079e965eba2c1058622631e526bd9afd45fedd49ba781fa"},
{file = "PyYAML-6.0.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:b1275ad35a5d18c62a7220633c913e1b42d44b46ee12554e5fd39c70a243d6a3"},
{file = "PyYAML-6.0.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:18aeb1bf9a78867dc38b259769503436b7c72f7a1f1f4c93ff9a17de54319b27"},
{file = "PyYAML-6.0.1-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:596106435fa6ad000c2991a98fa58eeb8656ef2325d7e158344fb33864ed87e3"},
{file = "PyYAML-6.0.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:baa90d3f661d43131ca170712d903e6295d1f7a0f595074f151c0aed377c9b9c"},
{file = "PyYAML-6.0.1-cp37-cp37m-win32.whl", hash = "sha256:9046c58c4395dff28dd494285c82ba00b546adfc7ef001486fbf0324bc174fba"},
{file = "PyYAML-6.0.1-cp37-cp37m-win_amd64.whl", hash = "sha256:4fb147e7a67ef577a588a0e2c17b6db51dda102c71de36f8549b6816a96e1867"},
{file = "PyYAML-6.0.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1d4c7e777c441b20e32f52bd377e0c409713e8bb1386e1099c2415f26e479595"},
{file = "PyYAML-6.0.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a0cd17c15d3bb3fa06978b4e8958dcdc6e0174ccea823003a106c7d4d7899ac5"},
{file = "PyYAML-6.0.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:28c119d996beec18c05208a8bd78cbe4007878c6dd15091efb73a30e90539696"},
{file = "PyYAML-6.0.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7e07cbde391ba96ab58e532ff4803f79c4129397514e1413a7dc761ccd755735"},
{file = "PyYAML-6.0.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:49a183be227561de579b4a36efbb21b3eab9651dd81b1858589f796549873dd6"},
{file = "PyYAML-6.0.1-cp38-cp38-win32.whl", hash = "sha256:184c5108a2aca3c5b3d3bf9395d50893a7ab82a38004c8f61c258d4428e80206"},
{file = "PyYAML-6.0.1-cp38-cp38-win_amd64.whl", hash = "sha256:1e2722cc9fbb45d9b87631ac70924c11d3a401b2d7f410cc0e3bbf249f2dca62"},
{file = "PyYAML-6.0.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:9eb6caa9a297fc2c2fb8862bc5370d0303ddba53ba97e71f08023b6cd73d16a8"},
{file = "PyYAML-6.0.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:c8098ddcc2a85b61647b2590f825f3db38891662cfc2fc776415143f599bb859"},
{file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5773183b6446b2c99bb77e77595dd486303b4faab2b086e7b17bc6bef28865f6"},
{file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b786eecbdf8499b9ca1d697215862083bd6d2a99965554781d0d8d1ad31e13a0"},
{file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc1bf2925a1ecd43da378f4db9e4f799775d6367bdb94671027b73b393a7c42c"},
{file = "PyYAML-6.0.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:04ac92ad1925b2cff1db0cfebffb6ffc43457495c9b3c39d3fcae417d7125dc5"},
{file = "PyYAML-6.0.1-cp39-cp39-win32.whl", hash = "sha256:faca3bdcf85b2fc05d06ff3fbc1f83e1391b3e724afa3feba7d13eeab355484c"},
{file = "PyYAML-6.0.1-cp39-cp39-win_amd64.whl", hash = "sha256:510c9deebc5c0225e8c96813043e62b680ba2f9c50a08d3724c7f28a747d1486"},
{file = "PyYAML-6.0.1.tar.gz", hash = "sha256:bfdf460b1736c775f2ba9f6a92bca30bc2095067b8a9d77876d1fad6cc3b4a43"},
pyyaml = [
{file = "PyYAML-6.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d4db7c7aef085872ef65a8fd7d6d09a14ae91f691dec3e87ee5ee0539d516f53"},
{file = "PyYAML-6.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9df7ed3b3d2e0ecfe09e14741b857df43adb5a3ddadc919a2d94fbdf78fea53c"},
{file = "PyYAML-6.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:77f396e6ef4c73fdc33a9157446466f1cff553d979bd00ecb64385760c6babdc"},
{file = "PyYAML-6.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a80a78046a72361de73f8f395f1f1e49f956c6be882eed58505a15f3e430962b"},
{file = "PyYAML-6.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:f84fbc98b019fef2ee9a1cb3ce93e3187a6df0b2538a651bfb890254ba9f90b5"},
{file = "PyYAML-6.0-cp310-cp310-win32.whl", hash = "sha256:2cd5df3de48857ed0544b34e2d40e9fac445930039f3cfe4bcc592a1f836d513"},
{file = "PyYAML-6.0-cp310-cp310-win_amd64.whl", hash = "sha256:daf496c58a8c52083df09b80c860005194014c3698698d1a57cbcfa182142a3a"},
{file = "PyYAML-6.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:897b80890765f037df3403d22bab41627ca8811ae55e9a722fd0392850ec4d86"},
{file = "PyYAML-6.0-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:50602afada6d6cbfad699b0c7bb50d5ccffa7e46a3d738092afddc1f9758427f"},
{file = "PyYAML-6.0-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:48c346915c114f5fdb3ead70312bd042a953a8ce5c7106d5bfb1a5254e47da92"},
{file = "PyYAML-6.0-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:98c4d36e99714e55cfbaaee6dd5badbc9a1ec339ebfc3b1f52e293aee6bb71a4"},
{file = "PyYAML-6.0-cp36-cp36m-win32.whl", hash = "sha256:0283c35a6a9fbf047493e3a0ce8d79ef5030852c51e9d911a27badfde0605293"},
{file = "PyYAML-6.0-cp36-cp36m-win_amd64.whl", hash = "sha256:07751360502caac1c067a8132d150cf3d61339af5691fe9e87803040dbc5db57"},
{file = "PyYAML-6.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:819b3830a1543db06c4d4b865e70ded25be52a2e0631ccd2f6a47a2822f2fd7c"},
{file = "PyYAML-6.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:473f9edb243cb1935ab5a084eb238d842fb8f404ed2193a915d1784b5a6b5fc0"},
{file = "PyYAML-6.0-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0ce82d761c532fe4ec3f87fc45688bdd3a4c1dc5e0b4a19814b9009a29baefd4"},
{file = "PyYAML-6.0-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:231710d57adfd809ef5d34183b8ed1eeae3f76459c18fb4a0b373ad56bedcdd9"},
{file = "PyYAML-6.0-cp37-cp37m-win32.whl", hash = "sha256:c5687b8d43cf58545ade1fe3e055f70eac7a5a1a0bf42824308d868289a95737"},
{file = "PyYAML-6.0-cp37-cp37m-win_amd64.whl", hash = "sha256:d15a181d1ecd0d4270dc32edb46f7cb7733c7c508857278d3d378d14d606db2d"},
{file = "PyYAML-6.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:0b4624f379dab24d3725ffde76559cff63d9ec94e1736b556dacdfebe5ab6d4b"},
{file = "PyYAML-6.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:213c60cd50106436cc818accf5baa1aba61c0189ff610f64f4a3e8c6726218ba"},
{file = "PyYAML-6.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9fa600030013c4de8165339db93d182b9431076eb98eb40ee068700c9c813e34"},
{file = "PyYAML-6.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:277a0ef2981ca40581a47093e9e2d13b3f1fbbeffae064c1d21bfceba2030287"},
{file = "PyYAML-6.0-cp38-cp38-win32.whl", hash = "sha256:d4eccecf9adf6fbcc6861a38015c2a64f38b9d94838ac1810a9023a0609e1b78"},
{file = "PyYAML-6.0-cp38-cp38-win_amd64.whl", hash = "sha256:1e4747bc279b4f613a09eb64bba2ba602d8a6664c6ce6396a4d0cd413a50ce07"},
{file = "PyYAML-6.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:055d937d65826939cb044fc8c9b08889e8c743fdc6a32b33e2390f66013e449b"},
{file = "PyYAML-6.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:e61ceaab6f49fb8bdfaa0f92c4b57bcfbea54c09277b1b4f7ac376bfb7a7c174"},
{file = "PyYAML-6.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d67d839ede4ed1b28a4e8909735fc992a923cdb84e618544973d7dfc71540803"},
{file = "PyYAML-6.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cba8c411ef271aa037d7357a2bc8f9ee8b58b9965831d9e51baf703280dc73d3"},
{file = "PyYAML-6.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:40527857252b61eacd1d9af500c3337ba8deb8fc298940291486c465c8b46ec0"},
{file = "PyYAML-6.0-cp39-cp39-win32.whl", hash = "sha256:b5b9eccad747aabaaffbc6064800670f0c297e52c12754eb1d976c57e4f74dcb"},
{file = "PyYAML-6.0-cp39-cp39-win_amd64.whl", hash = "sha256:b3d267842bf12586ba6c734f89d1f5b871df0273157918b0ccefa29deb05c21c"},
{file = "PyYAML-6.0.tar.gz", hash = "sha256:68fb519c14306fec9720a2a5b45bc9f0c8d1b9c72adf45c37baedfcd949c35a2"},
]
[[package]]
name = "requests"
version = "2.31.0"
description = "Python HTTP for Humans."
optional = false
python-versions = ">=3.7"
files = [
{file = "requests-2.31.0-py3-none-any.whl", hash = "sha256:58cd2187c01e70e6e26505bca751777aa9f2ee0b7f4300988b709f44e013003f"},
{file = "requests-2.31.0.tar.gz", hash = "sha256:942c5a758f98d790eaed1a29cb6eefc7ffb0d1cf7af05c3d2791656dbd6ad1e1"},
requests = []
rpm-py-installer = [
{file = "rpm-py-installer-1.1.0.tar.gz", hash = "sha256:66e5f4f9247752ed386345642683103afaee50fb16928878a204bc12504b9bbe"},
]
[package.dependencies]
certifi = ">=2017.4.17"
charset-normalizer = ">=2,<4"
idna = ">=2.5,<4"
urllib3 = ">=1.21.1,<3"
[package.extras]
socks = ["PySocks (>=1.5.6,!=1.5.7)"]
use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"]
[[package]]
name = "rpm"
version = "0.1.0"
description = "Shim RPM module for use in virtualenvs."
optional = false
python-versions = ">=3.6"
files = [
{file = "rpm-0.1.0-py3-none-any.whl", hash = "sha256:3664381f6f3cf050e97f49619cf57abacf3e77d68ddd3bfea3e7459c7c5f03f9"},
{file = "rpm-0.1.0.tar.gz", hash = "sha256:0e320a806fb61c3980c0cd0c5f5faec97c73c347432902ba2955a08a7b1a034f"},
s3transfer = [
{file = "s3transfer-0.6.0-py3-none-any.whl", hash = "sha256:06176b74f3a15f61f1b4f25a1fc29a4429040b7647133a463da8fa5bd28d5ecd"},
{file = "s3transfer-0.6.0.tar.gz", hash = "sha256:2ed07d3866f523cc561bf4a00fc5535827981b117dd7876f036b0c1aca42c947"},
]
[package.extras]
testing = ["tox"]
[[package]]
name = "s3transfer"
version = "0.7.0"
description = "An Amazon S3 Transfer Manager"
optional = false
python-versions = ">= 3.7"
files = [
{file = "s3transfer-0.7.0-py3-none-any.whl", hash = "sha256:10d6923c6359175f264811ef4bf6161a3156ce8e350e705396a7557d6293c33a"},
{file = "s3transfer-0.7.0.tar.gz", hash = "sha256:fd3889a66f5fe17299fe75b82eae6cf722554edca744ca5d5fe308b104883d2e"},
]
[package.dependencies]
botocore = ">=1.12.36,<2.0a.0"
[package.extras]
crt = ["botocore[crt] (>=1.20.29,<2.0a.0)"]
[[package]]
name = "six"
version = "1.16.0"
description = "Python 2 and 3 compatibility utilities"
optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*"
files = [
six = [
{file = "six-1.16.0-py2.py3-none-any.whl", hash = "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254"},
{file = "six-1.16.0.tar.gz", hash = "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926"},
]
[[package]]
name = "typing-extensions"
version = "4.7.1"
description = "Backported and Experimental Type Hints for Python 3.7+"
optional = false
python-versions = ">=3.7"
files = [
{file = "typing_extensions-4.7.1-py3-none-any.whl", hash = "sha256:440d5dd3af93b060174bf433bccd69b0babc3b15b1a8dca43789fd7f61514b36"},
{file = "typing_extensions-4.7.1.tar.gz", hash = "sha256:b75ddc264f0ba5615db7ba217daeb99701ad295353c45f9e95963337ceeeffb2"},
]
[[package]]
name = "urllib3"
version = "1.26.18"
description = "HTTP library with thread-safe connection pooling, file post, and more."
optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*"
files = [
{file = "urllib3-1.26.18-py2.py3-none-any.whl", hash = "sha256:34b97092d7e0a3a8cf7cd10e386f401b3737364026c45e622aa02903dffe0f07"},
{file = "urllib3-1.26.18.tar.gz", hash = "sha256:f8ecc1bba5667413457c529ab955bf8c67b45db799d159066261719e328580a0"},
]
[package.extras]
brotli = ["brotli (==1.0.9)", "brotli (>=1.0.9)", "brotlicffi (>=0.8.0)", "brotlipy (>=0.6.0)"]
secure = ["certifi", "cryptography (>=1.3.4)", "idna (>=2.0.0)", "ipaddress", "pyOpenSSL (>=0.14)", "urllib3-secure-extra"]
socks = ["PySocks (>=1.5.6,!=1.5.7,<2.0)"]
[[package]]
name = "urllib3"
version = "2.0.7"
description = "HTTP library with thread-safe connection pooling, file post, and more."
optional = false
python-versions = ">=3.7"
files = [
{file = "urllib3-2.0.7-py3-none-any.whl", hash = "sha256:fdb6d215c776278489906c2f8916e6e7d4f5a9b602ccbcfdf7f016fc8da0596e"},
{file = "urllib3-2.0.7.tar.gz", hash = "sha256:c97dfde1f7bd43a71c8d2a58e369e9b2bf692d1334ea9f9cae55add7d0dd0f84"},
]
[package.extras]
brotli = ["brotli (>=1.0.9)", "brotlicffi (>=0.8.0)"]
secure = ["certifi", "cryptography (>=1.9)", "idna (>=2.0.0)", "pyopenssl (>=17.1.0)", "urllib3-secure-extra"]
socks = ["pysocks (>=1.5.6,!=1.5.7,<2.0)"]
zstd = ["zstandard (>=0.18.0)"]
[[package]]
name = "wcwidth"
version = "0.2.9"
description = "Measures the displayed width of unicode strings in a terminal"
optional = false
python-versions = "*"
files = [
{file = "wcwidth-0.2.9-py2.py3-none-any.whl", hash = "sha256:9a929bd8380f6cd9571a968a9c8f4353ca58d7cd812a4822bba831f8d685b223"},
{file = "wcwidth-0.2.9.tar.gz", hash = "sha256:a675d1a4a2d24ef67096a04b85b02deeecd8e226f57b5e3a72dbb9ed99d27da8"},
]
[[package]]
name = "xmltodict"
version = "0.13.0"
description = "Makes working with XML feel like you are working with JSON"
optional = false
python-versions = ">=3.4"
files = [
typing-extensions = []
urllib3 = []
wcwidth = []
xmltodict = [
{file = "xmltodict-0.13.0-py2.py3-none-any.whl", hash = "sha256:aa89e8fd76320154a40d19a0df04a4695fb9dc5ba977cbb68ab3e4eb225e7852"},
{file = "xmltodict-0.13.0.tar.gz", hash = "sha256:341595a488e3e01a85a9d8911d8912fd922ede5fecc4dce437eb4b6c8d037e56"},
]
[[package]]
name = "zipp"
version = "3.15.0"
description = "Backport of pathlib-compatible object wrapper for zip files"
optional = false
python-versions = ">=3.7"
files = [
{file = "zipp-3.15.0-py3-none-any.whl", hash = "sha256:48904fc76a60e542af151aded95726c1a5c34ed43ab4134b597665c86d7ad556"},
{file = "zipp-3.15.0.tar.gz", hash = "sha256:112929ad649da941c23de50f356a2b5570c954b65150642bccdd66bf194d224b"},
]
[package.extras]
docs = ["furo", "jaraco.packaging (>=9)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"]
testing = ["big-O", "flake8 (<5)", "jaraco.functools", "jaraco.itertools", "more-itertools", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=1.3)", "pytest-flake8", "pytest-mypy (>=0.9.1)"]
[metadata]
lock-version = "2.0"
python-versions = ">=3.7,<4"
content-hash = "3653594c6605d2e9b01929eb7df2dd4824b3db249983e3d4607566fce19a54d8"
zipp = []

View File

@ -1,22 +1,22 @@
[tool.poetry]
name = "empanadas"
version = "0.6.2"
version = "0.6.1"
description = "hand crafted ISOs with love and spice"
authors = ["Louis Abel <label@rockylinux.org>", "Neil Hanlon <neil@rockylinux.org>"]
[tool.poetry.dependencies]
python = ">=3.7,<4"
rpm = ">=0.1.0"
MarkupSafe = "==2.0.1"
PyYAML = "~6.0.1"
rpm-py-installer = "~1.1.0"
MarkupSafe = "<=2.0.1"
PyYAML = "~6.0"
Jinja2 = "~2"
productmd = "~1.37"
productmd = "~1.33"
importlib-resources = "^5.8.0"
boto3 = "^1.28.80"
boto3 = "^1.24.12"
xmltodict = "^0.13.0"
requests = "^2.31.0"
kobo = "^0.33.0"
attrs = "^23.1.0"
requests = "^2.28.0"
kobo = "^0.24.1"
attrs = "^21.4.0"
[tool.poetry.dev-dependencies]
pytest = "~5"

View File

@ -13,4 +13,3 @@ Directories
-----------
* generators -> A directory of python and bash scripts for pungi/peridot data generation
* ipa -> IPA specific scripts and utilities

View File

@ -1,5 +0,0 @@
#!/bin/bash
NAME="${1}"
PROJECT_ID="${2}"
printf "INSERT INTO mantis_category_table (project_id, user_id, name, status) VALUES('%s', '0', '%s', '0');\n" "${PROJECT_ID}" "${NAME}"

View File

@ -1,12 +0,0 @@
#!/bin/bash
LIST="${1}"
PROJECT_ID="${2}"
if [ ! -f "${LIST}" ]; then
echo "Not a file list"
exit 2
fi
while IFS= read -r line; do
printf "INSERT INTO mantis_category_table (project_id, user_id, name, status) VALUES('%s', '0', '%s', '0');\n" "${PROJECT_ID}" "${line}"
done < "${LIST}"

View File

@ -4,4 +4,3 @@ __pycache__/
*.so
generate_prepopulate_from_self
generate_prepopulate_from_rpr
generate_versions_from_rpr

View File

@ -16,9 +16,7 @@ if [ "$?" -ne 0 ]; then
exit 1
fi
GIT_URL="https://git.rockylinux.org"
STREAM_COMPOSE_BASEURL="https://composes.stream.centos.org/production"
STREAM_KOJI_REPO="https://kojihub.stream.centos.org/kojifiles/repos"
ELN_KOJI_REPO="https://kojipkgs.fedoraproject.org/repos"
PERIDOT_REPO="https://yumrepofs.build.resf.org/v1/projects"
COMPOSE_BASEDIR="/mnt/compose"

View File

@ -3,7 +3,7 @@ import sys
class common:
def rlver(self, rlver, stream=False, all_repo=False):
default = "Not Supported"
if (stream and all_repo):
if stream and all_repo:
print("incompatible options used")
sys.exit(1)
@ -40,38 +40,12 @@ class common:
}
return REPOS
def rl10(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
def rl8all(self):
REPOS = {
'dist-rocky8-lookahead-build': ['aarch64', 'x86_64', 'i386'],
}
return REPOS
def rl9all(self):
REPOS = {
'all': ['aarch64', 'ppc64le', 's390x', 'x86_64'],
}
return REPOS
def rl10all(self):
REPOS = {
'all': ['aarch64', 'ppc64le', 's390x', 'x86_64'],
}
return REPOS
# Parse tags of koji
def c8s(self):
REPOS = {
@ -85,16 +59,4 @@ class common:
}
return REPOS
def c10s(self):
REPOS = {
'c10s-build': ['aarch64', 'ppc64le', 's390x', 'x86_64'],
}
return REPOS
def r8lh(self):
REPOS = {
'dist-rocky8-lookahead-build': ['aarch64', 'i386', 'x86_64'],
}
return REPOS
switcher = common()

View File

@ -1,18 +0,0 @@
# To be sourced by scripts to use
REPO=("BaseOS" "AppStream" "CRB" "HighAvailability" "ResilientStorage" "NFV" "RT" "SAP" "SAPHANA")
ARCH=("aarch64" "ppc64le" "s390x" "x86_64")
MAJOR="10"
VER="r${MAJOR}${LH}"
case "$VER" in
r10)
export PERIDOT_PROJECT_ID=474db218-5282-4ec7-8db2-4fb80a59c850 ;;
r10s)
export PERIDOT_PROJECT_ID=474db218-5282-4ec7-8db2-4fb80a59c850 ;;
*)
echo "Not supported"
exit 1
;;
esac

View File

@ -2,4 +2,3 @@
REPO=("BaseOS" "AppStream" "PowerTools" "HighAvailability" "ResilientStorage" "NFV" "RT")
ARCH=("aarch64" "x86_64")
MAJOR="8"

View File

@ -3,14 +3,13 @@
REPO=("BaseOS" "AppStream" "CRB" "HighAvailability" "ResilientStorage" "NFV" "RT" "SAP" "SAPHANA")
ARCH=("aarch64" "ppc64le" "s390x" "x86_64")
MAJOR="9"
VER="r${MAJOR}${LH}"
case "$VER" in
r9)
export PERIDOT_PROJECT_ID=df5bcbfc-ba83-4da8-84d6-ae0168921b4d ;;
r9s)
export PERIDOT_PROJECT_ID=df5bcbfc-ba83-4da8-84d6-ae0168921b4d ;;
export PERIDOT_PROJECT_ID=0048077b-1573-4cb7-8ba7-cce823857ba5 ;;
r9lh)
export PERIDOT_PROJECT_ID=6794b5a8-290b-4d0d-ad5a-47164329cbb0 ;;
*)
echo "Not supported"
exit 1

View File

@ -1,5 +1,4 @@
#!/bin/bash
set -x
source common
if [ ! -f "/usr/bin/pungi-koji" ]; then

View File

@ -1,43 +0,0 @@
#!/bin/bash
# Parses a koji tag for a branch out
#set -x
if [ -n "$1" ]; then
MAJOR=$1
else
echo "Major version not specified"
exit 1
fi
export RLVER=$MAJOR
source common
drop="${PREPOPDROP}"
current=$(pwd)
tmpdir=$(mktemp -d)
tag_template="eln-build"
eln_repo_url="${ELN_KOJI_REPO}/${tag_template}/latest"
pushd "${tmpdir}" || { echo "Could not change directory"; exit 1; }
for y in "${ARCH[@]}"; do
repodatas=( $(dnf reposync --repofrompath ${tag_template},${eln_repo_url}/${y} --download-metadata --repoid=${tag_template} -p ${tag_template}/${y} --forcearch ${y} --norepopath --remote-time --assumeyes -u | grep repodata) )
mkdir -p "${tag_template}/${y}/repodata"
pushd "${tag_template}/${y}/repodata" || { echo "Could not change directory"; exit 1; }
for z in "${repodatas[@]}"; do
wget -q -nc "${z}"
done
wget -q -nc "${eln_repo_url}/${y}/repodata/repomd.xml"
popd || { echo "Could not change back..."; exit 1; }
done
mv eln-build "c${MAJOR}s-build"
/usr/bin/python3 "${current}/prepopulate_parser.py" --version $RLVER --stream
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
sed -i "s|${tag_template}|branched|g" $drop
echo "File located at: $drop"

Some files were not shown because too many files have changed in this diff Show More