diff options
Diffstat (limited to 'packaging')
-rw-r--r-- | packaging/rpm/README.org | 141 | ||||
-rw-r--r-- | packaging/rpm/xdp-tools.spec | 164 |
2 files changed, 305 insertions, 0 deletions
diff --git a/packaging/rpm/README.org b/packaging/rpm/README.org new file mode 100644 index 0000000..8a6561f --- /dev/null +++ b/packaging/rpm/README.org @@ -0,0 +1,141 @@ +#+OPTIONS: ^:nil + +* Releasing and packaging a new version of xdp-tools + +These are the steps needed to release a new version of xdp-tools. If any of the +steps fail, go back and fix the error, then start over from the appropriate +step. + +If the fix requires changes to the sources, commit those, then rewrite the +commit made in (1.) on top of this and start over from the beginning. This +ensures that we don't end up with a whole series of package revisions just to +fix minor errors. + + +** Steps + +To release a new version of xdp-tools, follow these steps: + +1. Make sure you have valid Kerberos tickets exist for the Fedora and RHEL + infrastructure: + + #+begin_src sh + kinit <username>@FEDORAPROJECT.ORG + kinit <username>@REDHAT.COM + #+end_src + +2. Checkout this git repository as well as the RHEL and Fedora dist-git's. + Also, make sure you move to the correct branch for RHEL and Fedora. + Below is an example of how you could do this: + + #+begin_src sh + export VERSION="<version, for example 1.0.0~beta3>" + mkdir release_$VERSION + cd release_$VERSION + git clone git@github.com:xdp-project/xdp-tools.git + cd xdp-tools + export XDP_TOOLS_DIR=$(pwd) + + rhpkg clone xdp-tools xdp-tools-RHEL + cd xdp-tools-RHEL + rhpkg switch-branch -l + rhpkg switch-branch rhel-8.3.0 + export RHEL_DISTGIT_DIR=$(pwd) + cd .. + + fedpkg clone xdp-tools xdp-tools-FEDORA + cd xdp-tools-FEDORA + fedpkg switch-branch -l + export FEDORA_DISTGIT_DIR=$(pwd) + cd .. + #+end_src + +3. Bump version in =version.mk= and =packacing/rpm/xdp-tools.spec= -- don't + forget a changelog entry in the latter. + + Commit this, bug don't tag and push until the rest of the steps below + completed successfully. + +4. Run =make archive= to generate a source tarball (xdp-tools-$VERSION.tar.gz). + #+begin_src sh + cd $XDP_TOOLS_DIR + git submodule init + git submodule update + make archive + #+end_src + +5. Copy source tarball to =~/rpmbuild/SOURCES=. + #+begin_src sh + mkdir -p ~/rpmbuild/SOURCES/ + cp ./xdp-tools-$VERSION.tar.gz ~/rpmbuild/SOURCES/ + #+end_src + +6. Build local package using =rpmbuild -ba packaging/rpm/xdp-tools.spec=. + +7. Check that building a scratch build on Fedora infrastructure works: + =cd $FEDORA_DISTGIT_DIR && fedpkg scratch-build --srpm ~/rpmbuild/SRPMS/xdp-tools-$VERSION.fcXX.src.rpm= + +7. Sync the xdp-tools.spec file to dist-git (but don't commit anything yet): + - For both RHEL and Fedora, copy over the new version, then manually inspect + the git diff and revert any changes that undo previous modifications in + that distro. For Fedora, this is mainly changelog entries by rebuild bots, + and for RHEL it's mainly the changelog, the =__brp_strip= defines and the + symlinks to earlier .so versions for libxdp. + - For RHEL also manually create a new symlink entry to the previous .so-version + and add it to the file list. + + Make sure to be on the right branch in each dist-git. + +8. Create an SRPM and scratch build for RHEL (in RHEL dist-git directory): + #+begin_src sh + cd $RHEL_DISTGIT_DIR + cp ~/rpmbuild/SOURCES/xdp-tools-$VERSION.tar.gz . + rhpkg srpm + rhpkg scratch-build --srpm xdp-tools-$VERSION.el8.src.rpm + #+end_src + +9. Upload new sources files to both Fedora and RHEL - this will also update + the 'sources' file in each directory, which is why we didn't commit + anything earlier: + #+begin_src sh + cd $FEDORA_DISTGIT_DIR + fedpkg new-sources ~/rpmbuild/SOURCES/xdp-tools-$VERSION.tar.gz + git add xdp-tools.spec + git commit + + cd $RHEL_DISTGIT_DIR + rhpkg new-sources ~/rpmbuild/SOURCES/xdp-tools-$VERSION.tar.gz + git add xdp-tools.spec + git commit + #+end_src + + For both, check the git history for commit message inspiration. In + particular, to be accepted into the RHEL dist-git, the commit message must + reference a valid Bugzilla ID. See the commit log for earlier commits for + syntax for this. + +10. Push the dist-git repositories and request builds for each: + #+begin_src sh + cd $FEDORA_DISTGIT_DIR + git push + fedpkg build + + cd $RHEL_DISTGIT_DIR + git push + rhpkg build + #+end_src + +11. Tag the commit in the xdp-tools repo and push the branch and tags to github. + Tag syntax is =v$VERSION=, where =~betaX= becomes =-betaX= (git doesn't + allow tildes in tag names). + +12. Wait for the CI gating emails to tick in. Check any failures in the CI + dashboard and waive and/or fix as necessary. Then talk to QE to have them + run the =manual.sst_networking.xdp-tools.tier1= tests and mark it as + completed; this will cause the build to be tagged rhel-$VERSION-candidate (from + rhel-$VERSION-gate) and allow it to proceed. + +13. Add the new build to the errata; this may entail moving the errata status + back to =NEW_FILES=. After adding the new build, it should be moved to QE + state; if this is not immediately possible, just resolve any issues blocking + it. diff --git a/packaging/rpm/xdp-tools.spec b/packaging/rpm/xdp-tools.spec new file mode 100644 index 0000000..701c69f --- /dev/null +++ b/packaging/rpm/xdp-tools.spec @@ -0,0 +1,164 @@ +Name: xdp-tools +Version: 1.3.1 +Release: 1%{?dist} +Summary: Utilities and example programs for use with XDP +%global _soversion 1.3.0 + +License: GPLv2 +URL: https://github.com/xdp-project/%{name} +Source0: https://github.com/xdp-project/%{name}/releases/download/v%{version}/xdp-tools-%{version}.tar.gz + +BuildRequires: libbpf-devel +BuildRequires: elfutils-libelf-devel +BuildRequires: zlib-devel +BuildRequires: libpcap-devel +BuildRequires: clang >= 10.0.0 +BuildRequires: llvm >= 10.0.0 +BuildRequires: make +BuildRequires: gcc +BuildRequires: pkgconfig +BuildRequires: m4 +BuildRequires: emacs-nox +BuildRequires: wireshark-cli +BuildRequires: bpftool + +ExcludeArch: i386 i686 + +# Always keep xdp-tools and libxdp packages in sync +Requires: libxdp = %{version}-%{release} + +# find-debuginfo produces empty debugsourcefiles.list +# disable the debug package to avoid rpmbuild error'ing out because of this +%global debug_package %{nil} +%global _hardened_build 1 + +%description +Utilities and example programs for use with XDP + +%package -n libxdp +Summary: XDP helper library +Requires: kernel-headers + +%package -n libxdp-devel +Summary: Development files for libxdp +Requires: kernel-headers +Requires: libxdp = %{version}-%{release} + +%package -n libxdp-static +Summary: Static library files for libxdp +Requires: kernel-headers +Requires: libxdp-devel = %{version}-%{release} + +%description -n libxdp +The libxdp package contains the libxdp library for managing XDP programs, +used by the %{name} package + +%description -n libxdp-devel +The libxdp-devel package contains headers used for building XDP programs using +libxdp. + +%description -n libxdp-static +The libxdp-static package contains the static library version of libxdp. + +%prep +%autosetup -p1 -n %{name}-%{version} + + +%build +export CFLAGS='%{build_cflags}' +export LDFLAGS='%{build_ldflags}' +export LIBDIR='%{_libdir}' +export RUNDIR='%{_rundir}' +export CLANG=%{_bindir}/clang +export LLC=%{_bindir}/llc +export PRODUCTION=1 +export DYNAMIC_LIBXDP=1 +export FORCE_SYSTEM_LIBBPF=1 +export FORCE_EMACS=1 +./configure +make %{?_smp_mflags} V=1 + +%install +export DESTDIR='%{buildroot}' +export SBINDIR='%{_sbindir}' +export LIBDIR='%{_libdir}' +export RUNDIR='%{_rundir}' +export MANDIR='%{_mandir}' +export DATADIR='%{_datadir}' +export HDRDIR='%{_includedir}/xdp' +make install V=1 + +%files +%{_sbindir}/xdp-filter +%{_sbindir}/xdp-loader +%{_sbindir}/xdpdump +%{_sbindir}/xdp-bench +%{_sbindir}/xdp-monitor +%{_sbindir}/xdp-trafficgen +%{_mandir}/man8/* +%{_libdir}/bpf/xdpfilt_*.o +%{_libdir}/bpf/xdpdump_*.o +%{_datadir}/xdp-tools/ +%license LICENSES/* + +%files -n libxdp +%{_libdir}/libxdp.so.1 +%{_libdir}/libxdp.so.%{_soversion} +%{_libdir}/bpf/xdp-dispatcher.o +%{_libdir}/bpf/xsk_def_xdp_prog*.o +%{_mandir}/man3/* +%license LICENSES/* + +%files -n libxdp-static +%{_libdir}/libxdp.a + +%files -n libxdp-devel +%{_includedir}/xdp/*.h +%{_libdir}/libxdp.so +%{_libdir}/pkgconfig/libxdp.pc + +%changelog +* Thu Feb 23 2023 Toke Høiland-Jørgensen <toke@redhat.com> 1.3.1-1 +- Upstream version bump + +* Tue Feb 7 2023 Toke Høiland-Jørgensen <toke@redhat.com> 1.3.0-1 +- Upstream version bump + +* Thu Jan 20 2022 Toke Høiland-Jørgensen <toke@redhat.com> 1.2.2-1 +- Upstream version bump + +* Thu Jan 13 2022 Toke Høiland-Jørgensen <toke@redhat.com> 1.2.1-1 +- Upstream version bump + +* Wed Jul 7 2021 Toke Høiland-Jørgensen <toke@redhat.com> 1.2.0-1 +- Upstream version bump + +* Wed Feb 3 2021 Toke Høiland-Jørgensen <toke@redhat.com> 1.1.1-1 +- Upstream version bump + +* Mon Jan 4 2021 Toke Høiland-Jørgensen <toke@redhat.com> 1.1.0-1 +- Upstream version bump + +* Thu Aug 20 2020 Toke Høiland-Jørgensen <toke@redhat.com> 1.0.1-1 +- Upstream version bump + +* Tue Aug 18 2020 Toke Høiland-Jørgensen <toke@redhat.com> 1.0.0-1 +- Upstream version bump + +* Wed Jul 15 2020 Eelco Chaudron <echaudro@redhat.com> 1.0.0~beta3-0.1 +- Upstream version bump + +* Fri Jul 10 2020 Toke Høiland-Jørgensen <toke@redhat.com> 1.0.0~beta2-0.1 +- Upstream version bump + +* Mon Jun 15 2020 Toke Høiland-Jørgensen <toke@redhat.com> 1.0.0~beta1-0.1 +- Upstream version bump + +* Mon Apr 6 2020 Toke Høiland-Jørgensen <toke@redhat.com> 0.0.3-1 +- Upstream update, add libxdp sub-packages + +* Thu Nov 21 2019 Toke Høiland-Jørgensen <toke@redhat.com> 0.0.2-1 +- Upstream update + +* Fri Nov 8 2019 Toke Høiland-Jørgensen <toke@redhat.com> 0.0.1-1 +- Initial release |