On Tue, Nov 3, 2020 at 2:20 AM Yuval Lifshitz <ylifshit(a)redhat.com> wrote:
Dear Community,
Hi Yuval,
As part of the work to add AWS endpoints to RGW bucket
notifications [1], I'm trying to figure out how to package the AWS libraries that we
generate in the submodule.
So, my first step is to try and see how packaging works regardless of the AWS PR (just on
master). I'm trying to follow the instructions from our docs [2], but these
instructions seem to indicate that the code tarball needs to be downloaded from our
official location (although the instructions also ask to clone ceph locally). Instead I
used the "make-dist" script to generate the tarball locally, and continued with
the instructions using that tarball instead of the downloaded one.
This worked to some point, but I started receiving 2 kinds of issues:
One (seems like a warning):
"
/usr/bin/gdb.minimal: warning: Could not complete Guile gdb module initialization from:
/usr/share/gdb/guile/gdb/boot.scm.
If it's complaining about not being able to find
/usr/share/gdb/guile/gdb/boot.scm (as in the BZ) you could try
installing gdb-headlessbut it looks like a bit of a harmless warning
AFAICT.
"
Probably related to this BZ [3], but could not figure out what to do to solve it
The other is an error with rpath causign the process to fail:
"
ERROR 0002: file '/app/lib64/ceph/libceph-common.so.2' contains an invalid
rpath '/app/lib64/ceph' in [/app/lib64/ceph]
ERROR 0002: file '/app/lib64/ceph/librbd/libceph_librbd_parent_cache.so.1.0.0'
contains an invalid rpath '/app/lib64/ceph' in [/app/lib64/ceph]
ERROR 0002: file '/app/lib64/libcephfs.so.2.0.0' contains an invalid rpath
'/app/lib64/ceph' in [/app/lib64/ceph]
...
"
Would appreciate any advice on that.
This is due to the following.
$ rpm --eval "%{_prefix}"
/app
$ rpm --showrc | grep "^Macro path:"
Macro path:
/usr/lib/rpm/macros:/usr/lib/rpm/macros.d/macros.*:/usr/lib/rpm/platform/%{_target}/macros:/usr/lib/rpm/fileattrs/*.attr:/usr/lib/rpm/redhat/macros:/etc/rpm/macros.*:/etc/rpm/macros:/etc/rpm/%{_target}/macros:~/.rpmmacros
$ ag "%_prefix.*app" /usr/lib/rpm/ /etc/rpm/
/etc/rpm/macros.flatpak
2:%_prefix /app
$ rpm -qf /etc/rpm/macros.flatpak
flatpak-rpm-macros-32-2.fc32.x86_64
So you could uninstall flatpak-rpm-macros or you can add the following
line to ~/.rpmmacros to override the definition.
%_prefix /usr
The way I normally create rpms is by running the following.
$ rpmdev-wipetree
$ ./make-srpm.sh
$ rpm -ivh ceph-15.0.0-19449.g161b7e118b4.fc32.src.rpm
$ rpmbuild -ba ~/working/rpmbuild/SPECS/ceph.spec
There are other options available as well such as using mock profiles
[0] to build the srpm and/or uploading to copr [1] or similar to allow
the rpms to be built there. Of course you could also do these builds
in containers.
Let me know if I can be of any further help.
[0]
https://fedoraproject.org/wiki/Using_Mock_to_test_package_builds
[1]
https://copr.fedorainfracloud.org/coprs/badone/
--
Cheers,
Brad