This is a dist-git like repo for cephadm
The master brach is unused: use an existing branch instead.
Branch names follow convention like c<VERSION>-sig-storage-ceph-VERSION> as described
on Naming and Patterns for Mapping Git Branches to Koji Tags
c8-sig-storage-ceph-octopus: CentOS-8 c8-sig-storage-ceph-pacific: CentOS-8 ...
Instructions for building the ceph package for the CentOS Storage SIG can be found in the following places:
Comunity Build System Storage SIG landing page
Before starting, choose the branch containing the maintained spec for the cephadm package:
git checkout -t origin/c8-sig-storage-ceph-<VERSION>
You can find the sha1 for the "patches_base" comment and "Source0" with "git ls-remote", e.g.
$ git ls-remote https://github.com/ceph/ceph octopus ca0faa0a628c041f5b5313060344006830812e25 refs/heads/octopus
The source code can be downloaded using the 'spectool' tool , which uses the Source0 entry in the SPEC:
$ spectool -g SPECS/cephadm.spec $ mv cephadm SOURCES/cephadm
Create a src.rpm with:
$ rpmbuild -bs \ --define "_sourcedir $PWD/SOURCES" --define "_srcrpmdir $PWD" \ --define "dist .el8" SPECS/cephadm.spec
and finally we can build it running:
$ cbs build [--scratch] storage8-ceph-octopus-el8 cephadm.el8.src.rpm
A Makefile is provided with the purpose of automating the steps described before. It provides an helper function and can be used to build the srpm, as well as obtaining additional information on the current build. The act of running the 'cbs build' command is not automated on the Makefile since it's out of scope: feel free to refer to the last step of the previous section to run the cbs build after the Makefile execution ends.
If no parameters are provided, the Makefile computes the branch name, the version and the release from the current spec file. The Release field is increased by 1 but the version remains the same: this is because we're building the package against a newer hash instead of bumping the cephadm version according to the provided tags (the ceph-ansible approach).
If you want to produce a new srpm for an existing cephadm version, just run:
make
and you will see an output like this:
[fmount@buildbot cephadm]$ make sed SPECS/cephadm.spec.in \ -e "s/89ceb19fd8609fd4c99d10dd63f42e6786e37c86/dcf77bd9ff89dfef682c4a2dda05ac5c8651dbe5/" \ -e 's/@VERSION@/15.2.10/' \ -e 's/@RELEASE@/2/' \ > SPECS/cephadm.spec cp SPECS/cephadm.spec SPECS/cephadm.spec.in /usr/bin/spectool -g SPECS/cephadm.spec -C SOURCES -f Getting https://github.com/ceph/ceph/raw/dcf77bd9ff89dfef682c4a2dda05ac5c8651dbe5/src/cephadm/cephadm to SOURCES/cephadm % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 170 100 170 0 0 32 0 0:00:05 0:00:05 --:--:-- 40 100 214k 100 214k 0 0 20886 0 0:00:10 0:00:10 --:--:-- 47630 rpmbuild -bs /home/fmount/cephadm/SPECS/cephadm.spec \ --define "_sourcedir /home/fmount/cephadm/SOURCES" \ --define "_srcrpmdir /home/fmount/cephadm" \ --define "dist .el8" Wrote: /home/fmount/cephadm/cephadm-15.2.10-2.el8.src.rpm
In addition, a cephadm.spec file is generated from the input SPECS/cephadm.spec.in
and it can be
found under the SPECS directory.
At the end of this process, as described in the previous section, you can run the cbs build:
$ cbs build [--scratch] storage8-ceph-octopus-el8 cephadm-15.2.10-2.el8.src.rpm
If you want to bump to a newer released version, the hash computation remains unchanged,
but you might want to patch the spec input file properly.
For this reason a few parameters, exposed via the cephadm.spec.in
file can be overrided:
For instance, assuming you have the following data in the current spec:
[fmount@buildbot cephadm]$ cat SPECS/cephadm.spec | grep -iE "(Release|Version)" Version: 15.2.10 Release: 2%{?dist}
you can patch (and bump to a newer NVR) the current (existing) spec file by running:
DIST=el8 RELEASE=1 VERSION=15.2.11 make
Then, running the regular cbs build command a new cephadm rpm can be built:
$ cbs build [--scratch] storage8-ceph-octopus-el8 cephadm-15.2.11-1.el8.src.rpm