Import source RPM

Fatbuildr provides a utility named import-srcrpm which can be used to import an existing source RPM package and convert it into an artifact definition ready to be consumed by Fatbuildr.

It can be executed with the following command:

$ /usr/share/fatbuildr/utils/import-srcrpm -h
usage: import-srcrpm [-h] --author AUTHOR --email EMAIL --dest DEST --tarballs-dest TARBALLS_DEST
                     src_rpm [src_rpm ...]

Import source RPM package into Fatbuildr artifact format.

positional arguments:

  -h, --help            show this help message and exit
  --author AUTHOR
  --email EMAIL
  --dest DEST
  --tarballs-dest TARBALLS_DEST

As an example, consider the import of hello source RPM packages in destination artifact repository ~/base and the source tarball in destination ~/sources directory.

The destination directories must be existing before running the utility. Create them if necessary:

$ mkdir ~/base ~/sources

Run the utility with the following command:

$ /usr/share/fatbuildr/utils/import-srcrpm --author 'John Doe' --email john.doe@corp.org --dest ~/base --tarballs-dest ~/sources hello-2.10-1.el8.src.rpm
[INFO]  ⸬fatbuildr.import-srcrpm:81     ↦ software: hello, version: 2.10, release: 1
[INFO]  ⸬fatbuildr.import-srcrpm:87     ↦ Creating directory /home/remi/base/hello
1421 blocs
[INFO]  ⸬fatbuildr.import-srcrpm:125    ↦ sources: ['hello-2.10.tar.gz'] patches: []
[WARNING]⸬fatbuildr.import-srcrpm:129    ↦ Source is not a valid URL: hello-2.10.tar.gz
[DEBUG] ⸬fatbuildr.import-srcrpm:183    ↦ section %prep found: %prep
[DEBUG] ⸬fatbuildr.import-srcrpm:198    ↦ skipping section %prep line:
[DEBUG] ⸬fatbuildr.import-srcrpm:198    ↦ skipping section %prep line: %setup -q -n hello-2.10
[DEBUG] ⸬fatbuildr.import-srcrpm:198    ↦ skipping section %prep line:
[DEBUG] ⸬fatbuildr.import-srcrpm:198    ↦ skipping section %prep line:
[DEBUG] ⸬fatbuildr.import-srcrpm:198    ↦ skipping section %prep line:
[DEBUG] ⸬fatbuildr.import-srcrpm:195    ↦ end of section %prep found
[DEBUG] ⸬fatbuildr.import-srcrpm:183    ↦ section %changelog found: %changelog
[DEBUG] ⸬fatbuildr.import-srcrpm:198    ↦ skipping section %changelog line: * Fri Sep 02 2022 John Doe <john.doe@corp.org> 2.10-1.el8
[DEBUG] ⸬fatbuildr.import-srcrpm:198    ↦ skipping section %changelog line: - Maintenance build
[DEBUG] ⸬fatbuildr.import-srcrpm:198    ↦ skipping section %changelog line:
[DEBUG] ⸬fatbuildr.import-srcrpm:198    ↦ skipping section %changelog line:
[INFO]  ⸬fatbuildr.import-srcrpm:251    ↦ Moving source /home/john/base/hello/hello-2.10.tar.gz to /home/john/sources
--- a/hello.spec
+++ b/hello.spec
@@ -1,11 +1,12 @@
+Version: {{ version }}
+Release: {{ release }}
+{{ source }}
+{{ patches }}
 Name:     hello
-Version:  2.10
-Release:  1.el8
 Summary:  Produces a familiar, friendly greeting
 License:  GPLv3+
 URL:      https://www.gnu.org/software/hello/

-Source: hello-2.10.tar.gz

@@ -19,10 +20,8 @@
 you run it.

-%setup -q -n hello-2.10
+{{ prep_sources }}
+{{ prep_patches }}

@@ -41,8 +40,4 @@
 %license COPYING

-* Fri Sep 02 2022 John Doe <john.doe@corp.org> 2.10-1.el8
-- Maintenance build
+{{ changelog }}

The utility modifies the spec file found in the source RPM package so it can benefit from Fatbuildr features. It reports the differences between the original and the newly generated RPM spec file so you can inspect the modifications.

This command produces the following directory structure:

$ tree ~/base ~/sources
└── hello
    ├── artifact.yml
    └── rpm
        └── hello.spec
└── hello-2.10.tar.gz

If Fatbuildr is setup with an instance defined with el8 distribution, then the imported source RPM package can be built with this command:

$ fatbuildrctl build --artifact hello --basedir ~/base --distribution el8 --watch