Bug 637017

Summary: dhcp-devel is missing bind-9.7.1 devel files
Product: [Fedora] Fedora Reporter: Carl Roth <roth>
Component: dhcpAssignee: Adam Tkac <atkac>
Status: CLOSED ERRATA QA Contact: Fedora Extras Quality Assurance <extras-qa>
Severity: medium Docs Contact:
Priority: low    
Version: 15CC: atkac, carlosd2002, ovasik
Target Milestone: ---   
Target Release: ---   
Hardware: All   
OS: Linux   
Whiteboard:
Fixed In Version: bind-9.8.1-1.fc15 Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2011-09-14 08:59:22 UTC Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Attachments:
Description Flags
patch to dhcp.spec
none
patches for omcmd to compile with F14
none
patch to omcmd.spec none

Description Carl Roth 2010-09-24 01:43:02 UTC
Description of problem:

F14 includes dhcp-4.2.0, which has a build dependency on bind-9.7.1.

The version of bind included in F14 is 9.7.2, which is not source compatible with dhcp-4.2.0.

The dhcp sources therefore include a bind-9.7.1 snapshot in order to build dhcpd.  Unfortunately, the bind-9.7.1 files are not included in dhcp-devel, rendering that package useless for building other dhcp-based applications (like omcmd).

For example:

  - /usr/include/omapip/result.h includes isc/lang.h
  - isc/lang.h is provided by bind-devel-9.7.1
  - isc/lang.h is not provided by bind-devel-9.7.2

Would it be feasible to include the bind-9.7.1 headers and archives as part of dhcp-devel, even if they are stashed in separate directory, e.g. '/usr/lib/dhcp-4.2.0/bind-9.7.1/'...

Version-Release number of selected component (if applicable):

dhcp 4.2.0-1
bind 32:9.7.2-0.3.rc1.fc14

How reproducible:

Always

Steps to Reproduce:
1. yum-install dhcp-devel, bind-devel
2. create a C file that includes <omapip/result.h>
3. try to compile it
  
Actual results:


Expected results:


Additional info:

Comment 1 Jiri Popelka 2010-09-24 13:00:39 UTC
http://koji.fedoraproject.org/koji/taskinfo?taskID=2486665
I made a scratch-build of a new release where headers and libraries from bind-9.7.1 are shipped with dhcp-devel.
I added explicit
'Conflicts: bind-devel'
line into spec.file so you have to first remove bind-devel.
I don't have any better solution on mind at the moment.

Try it and let me know what do you think.

I'm also adding bind maintainer to CC.
Adame, do you have any other idea how to solve this problem ?

Comment 2 Adam Tkac 2010-09-24 13:35:14 UTC
After quick inspection both bind-devel-9.7.2-0.3.rc1.fc14 and bind-devel-9.7.2-1.fc14 contains /usr/include/isc/lang.h. It seems your installation is broken, can you please reinstall bind-devel package?

Note about "Conflicts: bind-devel". "Conflicts" directive is forbidden by Packaging guidelines and should not be used in Fedora packages.

Comment 3 Carl Roth 2010-09-26 22:24:39 UTC
As an initial first step, I set up my F14 build environment with dhcp-devel as per Comment #1.  It seems to work fine when building against dhcp libraries (omcmd in my case).

As per Comment #2, yes my build environment was (temporarily) broken.  I had a few broken symlinks in /usr/include as I was borrowing files from bind-debuginfo.

I'll take a look at that dhcp-devel to see if there's a way to configure it to live alongside bind-devel-9.7.2.

Comment 4 Carl Roth 2010-09-26 22:53:21 UTC
OK here is a small patch to dhcp.spec that pushes the bind compatibility files to a subdirectory.  This requires sources built against dhcp-devel to use a cooked-up CPPFLAGS and LDFLAGS, which I am OK with.  I'm open to other suggestions.

Comment 5 Carl Roth 2010-09-26 22:54:13 UTC
Created attachment 449774 [details]
patch to dhcp.spec

Comment 6 Adam Tkac 2010-09-29 08:06:05 UTC
May I ask you why you need the patch? I tried to compile sample program and everything is fine (with dhcp-devel and bind-devel installed).

[atkac@traged ~]$ cat test.c 
#include <omapip/result.h>

int main(void)
{
        return 0;
}
[atkac@traged ~]$ gcc -o test test.c -Wall
[atkac@traged ~]$ rpm -q bind-devel dhcp-devel
bind-devel-9.7.2-1.fc15.x86_64
dhcp-devel-4.2.0-7.fc15.x86_64

Comment 7 Carl Roth 2010-09-29 15:14:12 UTC
I think you're right, the bind-9.7.2 headers mostly work with source compiles against dhcp.  The libraries on the other hand are not compatible.

See

  http://people.bridgewater.edu/~dparsley/omcmd/omcmd-0.4.8-1.src.rpm

for an example; this compiles find with bind-devel-9.7.2 but fails at link time due to symbol mismatches.

I'll attach diffs for F14 that should work with this SRPM.  You should be able to see the difference there with bind-devel-9.7.1 and bind-devel-9.7.2.

Comment 8 Carl Roth 2010-09-29 15:15:00 UTC
Created attachment 450503 [details]
patches for omcmd to compile with F14

Comment 9 Carl Roth 2010-09-29 15:15:31 UTC
Created attachment 450504 [details]
patch to omcmd.spec

Comment 10 Adam Tkac 2010-09-30 09:04:40 UTC
After more inspection omcmd is not compilable due four different issues which should be fixed:

1. omcmd includes wrong headers (and is probably linked against wrong libraries)

2. bind-devel is missing /usr/include/dns/tsec.h header

3. dhcp-devel package contains static (.a) omapi libraries which is forbidden, dhcp-devel should contain shared libraries only. You are probably receiving linking errors because of this. BIND source is little tricky and when compiled with different configure flags (and dhcp's bundled bind source is compiled with different flags than distribution bind) same symbols can have different names in output library

4. dhcp source contains BIND source which is forbidden, dhcp should be modified and should use libraries shipped in bind-libs package instead of recompile bind source

I will create propose patches.

Comment 11 carlosd2002 2011-06-21 15:06:10 UTC
Hi, i m new at devel things...
I m coding a program and when i include dhcpctl.h and isc/result.h have this compile errors:

In file included from /usr/include/dhcpctl.h:38,
from rece.c:11:
/usr/local/include/omapip/omapip.h:40:22: error: dns/tsec.h: No such file or directory
In file included from /usr/include/dhcpctl.h:38,
from rece.c:11:
/usr/local/include/omapip/omapip.h:158: error: expected specifier-qualifier-list before 'dns_tsec_t'
rece.c: In function 'main':
rece.c:455: warning: return type of 'main' is not 'int'

I think that are related to this problem. how can i workaround this?

Any idea? thanks in advance and sorry if not the appropriated place.

Comment 12 Adam Tkac 2011-09-14 08:59:22 UTC
This issue is fixed in the latest bind-9.8.1-1.fc15 (Fedora 15), it won't be fixed in Fedora 14.