| |
| |
| Package sources checked into git.centos.org are in exploded SRPM format. This means that the package working directory should have at least a SPECS/ subdirectory. |
| |
| |
| |
| If the package you'd like to build isn't yet on https://git.centos.org, create first a ticket on https://pagure.io/centos-infra/issues to request the git repo for /rpms/<your_package> to be created |
| |
| Once it will be created, it will be possible for you to push to *specific* branches, based on the following rules: c{7,8}-<sig_name>* |
| |
| So that means that if I'm member of the sig-core group (in ACO), I'll be able to commit/push to c8-sig-core or c8-sig-core-whatever-I-want branches |
| |
| Let's use the following example : I need to create a branch for pkg centpkg-minimal, and I'm member of the sig-core SIG group. We have to push two things to git.centos.org : |
| |
| * .spec files to build a src.rpm |
| * eventually blob (.tar.gz archive) that will need to be pushed to lookaside cache |
| |
| !!! warning |
| To push to lookaside cache you need to have already a local check out from [https://git.centos.org/centos-git-common](https://git.centos.org/centos-git-common) |
| |
| |
| |
| Let's assume that my pkg centpkg-minimal that I want to build has an archive called centpkg.minimal.tar.gz. To be able to push to lookaside cache, we need the following : |
| |
| * a valid TLS cert (also needed to build on cbs.centos.org) obtained through [centos-cert](../auth/) util |
| * lookaside_upload script in your $PATH (coming from centos-git-common git repo, see above) |
| |
| This simple script would need some paramters: |
| |
| ``` |
| lookaside_upload |
| |
| You need to call the script like this : ~/bin/lookaside_upload -arguments |
| |
| -f : filename/source to upload (required, default:none) |
| -n : package name for that source (requred, default:none, example "httpd") |
| -b : "branch" where to upload to (required, default:none, example "c7-sig-core") |
| -h : display this help |
| ``` |
| |
| So back to our example, the pkg name is centpkg-minimal, file is centpkg-minimal.tar.gz and I'm member of the sig-core group, and want to build it for c7, so we'll call it like this : |
| |
| ``` |
| lookaside_upload -f centpkg-minimal.tar.gz -n centpkg-minimal -b c7-sig-core |
| [+] CentOS Lookaside upload tool -> Checking if file already uploaded |
| [+] CentOS Lookaside upload tool -> Initialing new upload to lookaside |
| [+] CentOS Lookaside upload tool -> URL : https://git.centos.org |
| [+] CentOS Lookaside upload tool -> Source to upload : centpkg-minimal.tar.gz |
| [+] CentOS Lookaside upload tool -> Package name: centpkg-minimal |
| [+] CentOS Lookaside upload tool -> sha1sum: d6616b89617914a0dd0fd5cfa06b0afc7a4541c4 |
| [+] CentOS Lookaside upload tool -> Remote branch: c7-sig-core |
| [+] CentOS Lookaside upload tool -> ====== Trying to upload ======= |
| |
| ################################################################################################################ 100.0% |
| File centpkg-minimal.tar.gz size 15178 CHECKSUM d6616b89617914a0dd0fd5cfa06b0afc7a4541c4 stored OK |
| [+] CentOS Lookaside upload tool -> Validating that source was correctly uploaded .... |
| [+] CentOS Lookaside upload tool -> [SUCCESS] Source should be available at https://git.centos.org/sources/centpkg-minimal/c7-sig-core/d6616b89617914a0dd0fd5cfa06b0afc7a4541c4 |
| |
| ``` |
| |
| Now that we have uploaded to lookaside cache, we can reference it in our /rpms/centpkg-minimal git repository on git.centos.org, see below |
| |
| |
| ## Pushing to git.centos.org |
| |
| We should already have a local checkout of the git repository for the pkg we'd like to work on. In our case, the git repo url is https://git.centos.org/rpms/centpkg-minimal |
| |
| So the way to git clone/pull over ssh is so ssh://git@git.centos.org/rpms/centpkg-minimal.git : |
| |
| ``` |
| git clone ssh: |
| Cloning into 'centpkg-minimal'... |
| remote: Counting objects: 15, done. |
| remote: Compressing objects: 100% (11/11), done. |
| remote: Total 15 (delta 2), reused 0 (delta 0) |
| Receiving objects: 100% (15/15), done. |
| Resolving deltas: 100% (2/2), done. |
| ``` |
| |
| !!! important |
| You can clone over https, but then it wouldn't let you push back to it, as it needs ssh with key verification and based on group membership for acls |
| |
| Let's create a new c7-sig-core branch (still based on the assumption that I want to build for c7) : |
| |
| ``` |
| git checkout -b c7-sig-core |
| ``` |
| |
| You can now create your SPECS/<pkg_name>.spec and add also other text patches under SOURCES/ We still need also to point to /sources/ for the lookaside cache, so we'll use the value of the hash returned when we successfully uploaded to lookaside cache and we'll write a .`<pkg_name>`.metadata file in the root dir that will look like this in our example: |
| |
| ``` |
| d6616b89617914a0dd0fd5cfa06b0afc7a4541c4 SOURCES/centpkg-minimal.tar.gz |
| ``` |
| |
| Now that we have pointer to lookaside cache, and also .spec, we can push back to git and we should be able to proceed with the "build-from-git" on cbs.centos.org. Let's commit first : |
| |
| !!! important |
| Even if your package doesn't contain any source pushed to lookaside cache (like for a package just having some small files in SOURCES/ dir, you *need* to have the `.<pkg_name>.metadata` package present and pushed in git repository |
| |
| Here is what the git repository for a pkg should look like : |
| |
| ``` |
| . |
| ├── .<pkg_name>.metadata |
| ├── SOURCES |
| │ ├── <optional_file> |
| │ └── <optional_patch> |
| └── SPECS |
| └── <pkg_name>.spec |
| |
| |
| ``` |
| |
| You can now push to to git, as usual: |
| |
| ``` |
| # git add <files> # if needed |
| git commit -a |
| git push origin c7-sig-core # to create the c7-sig-core branch on git.centos.org if not existing yet |
| |
| ``` |
| |
| Now that we have our sources pushed to both git.centos.org and lookaside cache, we can now proceed with a build in cbs/koji |
| |
| |
| !!! note |
| It's worth knowing that the documented process and structure is the default one, aka `rpmbuild style` layout for how your files/sources should be declared in your git repository/branch. But since 2022-02-21, the `flat layout` (as used also on [Fedora](https://src.fedoraproject.org) dist-git server) can also be used on git.centos.org. You still need to push tarballs to lookaside but you can use the flat layout when importing from Fedora/Epel, and it's purely an opt-in choice, and so not the default one that SIGs are using for years now |