openSUSE
Kernel cmdline INSECURE=1 to boot test ISO’s without signed repositories on the image
Build ProductBuilder images outside of openSUSE:Factory
Grab the following packages 000product installation-images skelcd-control-*
Example repository configuration for building:
<project name="home:sfalken:kalpa:images">
<title>Kalpa Images Devel Project</title>
<description/>
<person userid="sfalken" role="bugowner"/>
<person userid="sfalken" role="maintainer"/>
<build>
<disable arch="i586"/>
<disable arch="i586" repository="openSUSE_Tumbleweed"/>
</build>
<publish>
<disable/>
<enable repository="product"/>
<enable repository="images"/>
<enable arch="x86_64" repository="openSUSE_Factory"/>
<enable arch="x86_64"/>
<disable arch="i586" repository="openSUSE_Tumbleweed"/>
<disable arch="i586" repository="images"/>
</publish>
<useforbuild>
<disable arch="i586"/>
<disable arch="i586" repository="openSUSE_Tumbleweed"/>
</useforbuild>
<repository name="openSUSE_Tumbleweed">
<path project="openSUSE:Factory" repository="snapshot"/>
<arch>i586</arch>
<arch>x86_64</arch>
</repository>
<repository name="images">
<path project="home:sfalken:kalpa:images" repository="openSUSE_Tumbleweed"/>
<path project="openSUSE:Factory" repository="standard"/>
<path project="openSUSE:Factory" repository="snapshot"/>
<arch>x86_64</arch>
</repository>
</project>
Grab prjconf from openSUSE:Factory
Update .keyring for new gpg keys
# Check for existence of default keyring, if not exists, create temp keyring
if [ -z "$GNUPGHOME" ]; then export GNUPGHOME=$(mktemp -d); else echo "Error: GNUPGHOME is not empty."; fi
gpg --import $PKGNAME.keyring
gpg --keyserver keys.openpgp.org --recv-keys $KEY_ID
gpg --list-keys
gpg --armor --export --output $PKGNAME.keyring
osc service run source_validator
rm -r $GNUPGHOME && unset GNUPGHOME # Removes temp keyring
Zypper
zypper se --provides 'libfoo.so.1()(64bit)' # Figure out what package provides library
zypper se --provides 'cmake(whatever)' # What package provides cmake capability
zypper se --provides 'pkgconfig(whatever)' # What package provides pkgconfig capability
zypper se --provides '/usr/bin/foo' # What package provides binary
zypper info --provides pkgname # List what a package provides
Current flow for doing basic version updates from Factory to Leap
git-obs repo fork pool/<packagename>
git-obs repo clone <user>/<packagename>
cd <packagename>
git switch leap-16.1
git merge --allow-unrelated-histories -X theirs factory --no-commit
git read-tree -u --reset factory
git commit
git push
git-obs pr create --title="Update to <version>" --description="Syncs leap-16.1 with Factory/upstream" --target-branch=leap-16.1
Fedora
New Fedora Packages
rpmdev-newspec srcpkgname.spec # Generate new specfile with fedora boilerplate
Package updating
fedpkg co srcpkgname # Checkout package from distgit
cd srcpkgname
fkinit -u username # Auth with Fedora Kerberos
vim srcpkgname.spec # Edit Version Line to new version
spectool -g srcpkgname.spec # Grab new upstream sources
fedpkg new-sources src.tar.gz # Upload new sources to lookaside package cache
rpmdev-bumpspec srcpkgname.spec # Bump the changelog
vim srcpkgname.spec # Change Release and Changelog entries to -1
Test Build for packages
fedpkg mockbuild # When it works, it's broken right now (2026-01-05)
or
fedpkg srpm # Generate SRPM
copr-cli build reponame srcpkgname.rpm # Upload SRPM to COPR and run test build
or
# For *new* packages that don't currently exist in Rawhide
cp *.tar.gz *.patch ~/rpmbuild/SOURCES/
rpmbuild -bs srcpkgname.spec # Generate SRPM
copr-cli build reponame ~/rpmbuild/SRPM/pkgsrcname.rpm # Upload SRPM to COPR and run test build
Get the things into distgit and build
fedpkg commit -c # Generate git commit from changelog in spec
fedpkg push # Upload to distgit
fedpkg build # Fire off koji build for Rawhide
Update Fedora-$release
fedpkg switch-branch $release # Switch to branch for current release (e.g. f43)
git merge rawhide # Update F43 branch from Rawhide
Run test build in COPR/mock, if in doubt
fedpkg push
fedpkg build
fedpkg update # Submit successful build to bodhi
DNF
dnf rq --whatrequires thing # Query dnf repo to find what requires a package
New python packages
pyp2spec <pypi_package_name>
git
git rebase -i HEAD~# # Squash Commits where # is the number of commits