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