Compare commits
No commits in common. "devel" and "fix/vagrant-vmx" have entirely different histories.
devel
...
fix/vagran
|
@ -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
|
||||
|
|
|
@ -1 +1 @@
|
|||
*.sw[a-z]
|
||||
.swp
|
||||
|
|
|
@ -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
|
||||
------------
|
||||
```
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -1 +0,0 @@
|
|||
Basic tests, such as repos
|
|
@ -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()
|
|
@ -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
|
||||
|
|
|
@ -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}"
|
||||
|
|
|
@ -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
|
|
@ -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}*"
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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}*
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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*
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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}*
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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}
|
||||
|
|
|
@ -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}"
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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}
|
||||
|
|
|
@ -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-?
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -15,4 +15,3 @@ r_checkExitStatus $?
|
|||
|
||||
r_log "cracklib" "Testing a complicated password"
|
||||
echo -e "2948_Obaym-" | cracklib-check | grep -q "OK"
|
||||
r_checkExitStatus $?
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
#!/bin/bash
|
||||
r_log "git" "Test basic git clones"
|
||||
trap 'rm -rf $TMPREPO' EXIT
|
||||
|
||||
WORKDIR=$(pwd)
|
||||
TMPREPO=/var/tmp/repo
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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 $?
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -1,4 +0,0 @@
|
|||
#!/bin/bash
|
||||
#
|
||||
r_log "podman" "Installing podman"
|
||||
p_installPackageNormal podman
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
||||
|
|
|
@ -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 $?
|
||||
|
|
|
@ -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
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -1,3 +0,0 @@
|
|||
#!/bin/bash
|
||||
r_log "pdf" "Install enscript, ghostscript, and poppler"
|
||||
p_installPackageNormal fontconfig @fonts enscript ghostscript poppler-utils
|
|
@ -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
|
|
@ -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"
|
||||
|
|
|
@ -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()
|
||||
|
|
|
@ -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'
|
||||
...
|
|
@ -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'
|
||||
...
|
|
@ -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'
|
||||
|
|
|
@ -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'
|
||||
|
|
|
@ -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'
|
||||
|
|
|
@ -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'
|
||||
|
|
|
@ -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'
|
||||
|
|
|
@ -8,7 +8,6 @@
|
|||
minor: '0'
|
||||
profile: '9'
|
||||
disttag: 'el9'
|
||||
code: "Blue Onyx"
|
||||
bugurl: 'https://bugs.rockylinux.org'
|
||||
checksum: 'sha256'
|
||||
fedora_major: '20'
|
||||
|
|
|
@ -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'
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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:
|
||||
|
|
|
@ -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
|
||||
)
|
||||
|
||||
|
|
|
@ -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,
|
||||
)
|
||||
|
||||
|
|
|
@ -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)
|
||||
|
||||
|
|
|
@ -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",
|
||||
)
|
||||
|
||||
|
|
|
@ -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,
|
||||
)
|
||||
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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'
|
||||
...
|
|
@ -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'
|
||||
...
|
|
@ -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'
|
||||
...
|
|
@ -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'
|
||||
...
|
|
@ -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:
|
||||
|
||||
|
|
|
@ -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() {
|
||||
|
|
|
@ -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 \
|
||||
|
|
|
@ -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}"
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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 %}
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -27,11 +27,7 @@ libblockdev-utils
|
|||
libbytesize
|
||||
libgcab1
|
||||
libjcat
|
||||
libsss_autofs
|
||||
libudisks2
|
||||
libxmlb
|
||||
python3-lxml
|
||||
sssd-nfs-idmap
|
||||
udisks2
|
||||
volume_key-libs
|
||||
NetworkManager-wifi
|
||||
|
|
|
@ -23,11 +23,7 @@ libblockdev-utils
|
|||
libbytesize
|
||||
libgcab1
|
||||
libjcat
|
||||
libsss_autofs
|
||||
libudisks2
|
||||
libxmlb
|
||||
python3-lxml
|
||||
sssd-nfs-idmap
|
||||
udisks2
|
||||
volume_key-libs
|
||||
NetworkManager-wifi
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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')
|
||||
|
|
|
@ -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)
|
||||
|
||||
|
|
|
@ -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.'
|
||||
|
|
|
@ -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
|
||||
"""
|
||||
|
|
|
@ -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 = []
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -13,4 +13,3 @@ Directories
|
|||
-----------
|
||||
|
||||
* generators -> A directory of python and bash scripts for pungi/peridot data generation
|
||||
* ipa -> IPA specific scripts and utilities
|
||||
|
|
|
@ -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}"
|
|
@ -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}"
|
|
@ -4,4 +4,3 @@ __pycache__/
|
|||
*.so
|
||||
generate_prepopulate_from_self
|
||||
generate_prepopulate_from_rpr
|
||||
generate_versions_from_rpr
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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()
|
||||
|
|
|
@ -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
|
|
@ -2,4 +2,3 @@
|
|||
|
||||
REPO=("BaseOS" "AppStream" "PowerTools" "HighAvailability" "ResilientStorage" "NFV" "RT")
|
||||
ARCH=("aarch64" "x86_64")
|
||||
MAJOR="8"
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
#!/bin/bash
|
||||
set -x
|
||||
source common
|
||||
|
||||
if [ ! -f "/usr/bin/pungi-koji" ]; then
|
||||
|
|
|
@ -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
Loading…
Reference in New Issue