On 02/20/2018 05:33 PM, Till Hofmann wrote:
Hi all,
I have a question regarding the the RPM dependency generator scripts.
I'm working on packaging the ROS stack [1,2] and I'm currently dealing
with the dependency generation. My goal is to wrap all Provides and
Requires for sonames because ROS does not use proper sonames (and
therefore they shouldn't be in the ld cache), but I still want to use
the information for ROS packages. This means I want to replace:
Provides: librosconsole.so()(64bit)
=>
Provides: ros(librosconsole.so()(64bit))
[or possibly ros-kinetic(librosconsole.so()(64bit))]
and similarly for Requires.
I have a working solution [3] that wraps all ROS Provides and Requires
and generates other Provides and Requirest just as elfdeps does, but it
uses an (imho ugly) hack: As I don't want to have the normal Provides
generated by elfdeps, I have:
%__ros_path ^/usr/lib.*/ros/.*$
%__elf_exclude_path %__ros_path
in /usr/lib/rpm/fileattrs/ros.attr. I see two problems: If
%__elf_exclude_path is set by something else, it is overridden, because
I couldn't figure out how to append to the exclude path. Second,
%__elf_exclude_path should not be set at all in ros.attr, the doc [4] says:
"NAME needs to be replaced by the name choosen for the file attribute
and needs to be the same as the file name of the macro file itself"
It still works, but shouldn't according to the documentation.
So my question: Is there any other way to exclude the ROS dir to be
checked by elfdeps? I cannot just use %__requires_exclude_from because I
want my dependency generator to run on the directory.
Bump.
This is the current content of the ros.attr file, if it helps:
%__ros_provides %{_rpmconfigdir}/ros.prov
%{?__filter_GLIBC_PRIVATE:--filter-private}
%__ros_requires %{_rpmconfigdir}/ros.req
%{?__filter_GLIBC_PRIVATE:--filter-private}
%__ros_path ^/usr/lib.*/ros/.*$
%__ros_magic ^(setuid,? )?(setgid,? )?(sticky )?ELF (32|64)-bit.*$
%__ros_flags exeonly,magic_and_path
%__elf_exclude_path %__ros_path
Is the last line acceptable? If not, how else can I exclude the ROS
directory (%__ros_path) from being scanned by the ELF dependency generator?
Thanks,
Till
>
> Thanks for any hints.
>
> Kind regards,
> Till
>
> [1]
https://pagure.io/ros
> [2]
https://copr.fedorainfracloud.org/coprs/thofmann/ros/
> [3]
https://pagure.io/ros-rpm-macros
> [4]
http://rpm.org/user_doc/dependency_generators.html
> _______________________________________________
> devel mailing list -- devel(a)lists.fedoraproject.org
> To unsubscribe send an email to devel-leave(a)lists.fedoraproject.org
>