On Thursday, January 23, 2020 5:30:28 PM EST Jeff Law wrote: > On Thu, 2020-01-23 at 17:23 -0500, Steve Grubb wrote: > > On Tuesday, January 21, 2020 1:52:54 PM EST Jeff Law wrote: > > > > > > That was the idea. Provide a trivial opt-out so that upstreams > > > > > > had > > > > > > time to fix properly. I even volunteered to add the opt-out > > > > > > marker > > > > > > where appropriate to minimize the FTBFS issues. I also > > > > > > volunteered > > > > > > to help with the packages that don't honor flags injection. > > > > > > > > > > This sounds reasonable to me. > > > > > > > > > > The PR is > > > > > https://src.fedoraproject.org/rpms/redhat-rpm-config/pull-request/7 > > > > > 7 > > > > > > > > > > I have reopened it. > > > > > > > > > > The mass rebuild will notify the maintainrs and they can use that > > > > > macro > > > > > to short-workaround the problem. It' also easier to grep from the > > > > > specs > > > > > than custom patches and whatnots > > > > > > > > I need something like this for suricata. It has about 45 variables > > > > causing this. And it's not a simple "extern" addition because it > > > > looks > > > > like in many cases the variable was never placed in a C file. Simply > > > > adding extern keyword leads undefined reference errors. This will > > > > take a > > > > while to sort out with upstream. > > > > > > You also have to be careful if you're building shared libraries -- I > > > was looking at a package (I forget which) which built multiple DSOs. > > > If you're not careful you can end up with some DSOs which wouldn't have > > > the definition -- worse yet, you're not going to get an undefined > > > symbol when you build those DSOs. > > > > So, I have a weird one. I'm compiling audit and getting multiple > > definitions. > > > > I have > > > > /usr/bin/ld: ausearch-checkpt.o:/home/sgrubb/working/BUILD/audit-3.0/src/ > > ausearch-common.h:53: multiple definition of `event_node_list'; > > ausearch.o:/ > > home/sgrubb/working/BUILD/audit-3.0/src/ausearch-common.h:53: first > > defined here > > > > $ cat ausearch-checkpt.c | grep event_node_list > > > > Hmm. Nothing found. > > > > $ objdump --syms ausearch-checkpt.o | grep event_node_list > > 0000000000000040 g O .bss 0000000000000008 event_node_list > > > > It's in the object file? In ausearch-checkpt.c we have #include > > "ausearch- > > checkpt.h which does not define it. That file has #include > > "ausearch-llist.h" which does not define it. That file has #include > > "ausearch-common.h" which does define it as: > > > > extern slist *event_node_list; > > > > So, what appears to be happening is all these C files are creating a > > definition based on this and they don't even use this variable. It seems > > like they would create a spot in their table *if and only if* it was > > referenced somewhere in the code. I'm not sure if this was intended but > > it will be a big problem for everyone. > > Use -save-temps and post the .i file. > > An "extern blah blah blah" should not be doing that. That was very helpful. Thanks. Turns out the build testing I was doing was using a Fedora spec file instead of my upstream spec file which means it was untarring the wrong file instead of the freshly fixed file. That -save-temps option might help me figure out some missing definitions in suricata. Thanks, -Steve _______________________________________________ devel mailing list -- devel@xxxxxxxxxxxxxxxxxxxxxxx To unsubscribe send an email to devel-leave@xxxxxxxxxxxxxxxxxxxxxxx Fedora Code of Conduct: https://docs.fedoraproject.org/en-US/project/code-of-conduct/ List Guidelines: https://fedoraproject.org/wiki/Mailing_list_guidelines List Archives: https://lists.fedoraproject.org/archives/list/devel@xxxxxxxxxxxxxxxxxxxxxxx