Project

General

Profile

Actions

OBS Maintenance » History » Revision 17

« Previous | Revision 17/29 (diff) | Next »
osmith, 03/14/2023 10:00 AM
add specific nftables version required to before we can drop our nftables packages


OBS Maintenance

The Osmocom binary packages are built with OBS (Open Build Service) hosted on obs.osmocom.org. In order to do that, the jenkins jobs Osmocom_OBS_latest / _nightly (config) checkout the source repositories and build debian source packages, then upload these to OBS.

Install osc

Get the command-line client for managing OBS. When using for the first time, it will ask for the credentials.

$ sudo apt install osc
$ osc ls

Upgrading specific packages

eclipse-titan

See the article upgrading eclipse-titan in the Osmocom OBS.

nftables / libnftnl

As of writing, the nftables and libnftnl packages from the Osmocom OBS are linked to openSUSE.org:security:netfilter. When the package gets upgraded there, the build will fail in the Osmocom OBS with:

[   29s] error: Bad source: /home/abuild/rpmbuild/SOURCES/libnftnl-1.2.4.tar.bz2: No such file or directory

That is because the source tarballs get upgraded, but the spec file has differences and so it does not get upgraded automatically.

Diff the upstream spec file against the one in the Osmocom OBS and apply the changes, then it should work again.

$ $EDITOR /tmp/upstream.spec  # put the upstream spec file here
$ mkdir /tmp/obs
$ cd /tmp/obs
$ osc co osmocom:nightly libnftnl
$ cd osmocom:nightly/libnftnl
$ diff libnftnl.spec /tmp/upstream.spec
$ $EDITOR libnftnl.spec  # apply changes
$ diff libnftnl.spec /tmp/upstream.spec  # verify
$ osc commit
$ rm -rf /tmp/obs

Wait until the package has built, then copy it to the other feeds:

$ osc copypac osmocom:nightly libnftnl osmocom:latest
$ osc copypac osmocom:nightly libnftnl osmocom:master

Eventually the nftables version >= 1.0.2 that osmo-upf requires should make it into the distributions we support, at which point we can remove this package.

Workflow for testing OBS configurations

OBS has a project configuration, which may need to be adjusted to state preferred dependencies for example. Before we apply project configurations to the official Osmocom OBS projects, we can test them in our own OBS project. Copy the relevant package first (adjust the username accordingly in all following examples):

$ osc copypac osmocom:nightly osmo-gsm-manuals home:osmith42
Visit the site in your browser: Set up build targets:

The package should get added to the queue already.

Open your project config next to the osmocom:nightly one:

First copy everything from the Osmocom project over to your own project. Then make changes to your config, until the builds are working as expected (dependency problems are resolved etc.). Whenever you change the config, OBS will immediately re-evaluate the build dependencies, no need to upload the source packages again.

When everything works as expected, copy the config changes you have made to the Osmocom project (nightly and latest).

Note that changing osmocom's project config did not seem to have any effect. It seems that we really must change both osmocom:nightly and osmocom:latest instead.

Workflow for modifying packages

(Optional) modify the debian dir

  • clone the source git repository
  • make changes to the debian dir
  • commit your changes
  • push to a "user/..." branch

Build source packages and upload to your own OBS project

  • clone osmo-ci.git
  • open osmo-nightly-packages.sh
  • if you intend to make changes to the script, do them and commit the changes
  • change PROJ to home:USERNAME
  • if you made changes to the debian dir, insert your branch name after the related checkout line (e.g. checkout osmo-gsm-manuals osmith/some-random-change)
  • run osmocom-nightly-packages.sh
  • check in your browser if all packages have been built by OBS as expected (iterate until you get everything right)

When everything works fine, contribute your patches with Gerrit as usually.

Troubleshooting

Debian dir doesn't work for multiple debian versions

Following what has been done for osmo-trx:
  • create the debian dir to work with the latest debian stable
  • create a patch that would make it work with an earlier release (debian 8) and save it as debian/patches/build-for-debian8.patch
  • adjust the osmocom-*-packages.sh scripts to upload a second debian source package, which has the patch applied
  • configure OBS to build the patched package only for the older debian releases, and the unpatched package only for the stable release

Package is not resolvable

have choice for jadetex needed by docbook-utils: jadetex texlive-formats-extra

You'll need to adjust the OBS project configuration (mind the testing workflow above):

Prefer: texlive-htmlxml

Reproduce the nightly builds locally

$ osc co
$ osc build

E-Mail Notifications of build failures

Build failure notifications are sent to the gerrit-log mailing list

See also

Files (0)

Updated by osmith about 1 year ago · 17 revisions

Add picture from clipboard (Maximum size: 48.8 MB)