This project provides rpkg
command-line tool. It is an rpm packaging utility that works with both DistGit
and standard Git repositories and it handles two types of directory content: packed and unpacked:
Note:
This project is a continuation of rpkg
command-line script that used to be provided
by python-rpkg
package. The project is called rpkg-util
(and not just rpkg
) not
to conflict in name with the python rpkg
library that this project used to employ.
Apart from being useful as a means to handle unpacked (as well as packed) content, they also make it possible to generate certain parts of your spec file automatically from a Git repository where your spec file is located.
An example spec template might look like this:
Name: {{{ git_dir_name }}} Version: {{{ git_dir_version }}} Release: 1%{?dist} Summary: This is a test package. License: GPLv2+ URL: https://someurl.org VCS: {{{ git_dir_vcs }}} Source: {{{ git_dir_pack }}} %description This is a test package. %prep {{{ git_dir_setup_macro }}} %changelog {{{ git_dir_changelog }}}
Having a spec template like this in your project (instead of just a plain spec file) allows you to build rpm packages that automatically follow git history of your project. Read more here. If you just want to quickly start a new project with rpkg, go here. And if you are completely new to .spec files, you can find out a little bit more here.
Generate source rpm ("srpm"):
$ rpkg srpm git_dir_pack: archiving /home/clime/rpkg-util: commit 77117acfc089de7eab46baa0308f46413e71b431 (HEAD -> master, tag: rpkg-util-3.beta-1) Author: clime <clime@fedoraproject.org> Date: Fri Apr 30 18:22:21 2021 +0200 mark beta version git_dir_pack: Wrote: /tmp/rpkg/rpkg-util-1-9dnhco7d/rpkg-util-77117acf.tar.gz Wrote: /tmp/rpkg/rpkg-util-1-9dnhco7d/rpkg-util.spec setting SOURCE_DATE_EPOCH=1619740800 Wrote: /tmp/rpkg/rpkg-util-1-9dnhco7d/rpkg-util-3.beta-1.fc31.src.rpm
Run %prep phase of an rpm build:
$ rpkg prep git_dir_pack: archiving /home/clime/rpkg-util: commit 77117acfc089de7eab46baa0308f46413e71b431 (HEAD -> master, tag: rpkg-util-3.beta-1) Author: clime <clime@fedoraproject.org> Date: Fri Apr 30 18:22:21 2021 +0200 mark beta version git_dir_pack: Wrote: /tmp/rpkg/rpkg-util-2-ts2unr3s/rpkg-util-77117acf.tar.gz Wrote: /tmp/rpkg/rpkg-util-2-ts2unr3s/rpkg-util.spec setting SOURCE_DATE_EPOCH=1619740800 Executing(%prep): /bin/sh -e /var/tmp/rpm-tmp.NaPmFp + umask 022 + cd /tmp/rpkg/rpkg-util-2-ts2unr3s + cd /tmp/rpkg/rpkg-util-2-ts2unr3s + rm -rf rpkg-util + /usr/bin/gzip -dc /tmp/rpkg/rpkg-util-2-ts2unr3s/rpkg-util-77117acf.tar.gz + /usr/bin/tar -xof - + STATUS=0 + '[' 0 -ne 0 ']' + cd rpkg-util + /usr/bin/chmod -Rf a+rX,u+w,g-w,o-w . + RPM_EC=0 ++ jobs -p + exit 0
For the following command, you need to have a project in COPR created. See quick tutorial here on how to do it.
$ rpkg build git_dir_pack: archiving /home/clime/rpkg-util: commit 77117acfc089de7eab46baa0308f46413e71b431 (HEAD -> master, tag: rpkg-util-3.beta-1) Author: clime <clime@fedoraproject.org> Date: Fri Apr 30 18:22:21 2021 +0200 mark beta version git_dir_pack: Wrote: /tmp/rpkg/rpkg-util-3-793uxgm5/rpkg-util-77117acf.tar.gz Wrote: /tmp/rpkg/rpkg-util-3-793uxgm5/rpkg-util.spec setting SOURCE_DATE_EPOCH=1619740800 Wrote: /tmp/rpkg/rpkg-util-3-793uxgm5/rpkg-util-3.beta-1.fc31.src.rpm Uploading package /tmp/rpkg/rpkg-util-3-793uxgm5/rpkg-util-3.beta-1.fc31.src.rpm |################################| 204.8 kB 266.8 kB/s eta 0:00:00Build was added to rpkg-util: https://copr.fedorainfracloud.org/coprs/build/2157665 Created builds: 2157665
Other useful commands that you can use:
rpkg lint
to check the .spec file and the overall package conformance to RPM standardrpkg local
to locally build the package into an rpmrpkg upload
to upload a new source to DistGit lookaside cacherpkg ...
(see rpkg --help
or man rpkg
)Do not put sensitive data into directory with your sources, otherwise they might get published together with them.