Bug 194046 - net/samba41: building Samba 4.1.x on 10.0 and 10.1-RELEASE with "DEVELOPER" option requests older/invalid gdb library
Summary: net/samba41: building Samba 4.1.x on 10.0 and 10.1-RELEASE with "DEVELOPER" o...
Status: Closed FIXED
Alias: None
Product: Ports & Packages
Classification: Unclassified
Component: Individual Port(s) (show other bugs)
Version: Latest
Hardware: amd64 Any
: Normal Affects Only Me
Assignee: Timur I. Bakeyev
URL:
Keywords: patch-ready
Depends on:
Blocks:
 
Reported: 2014-09-30 18:34 UTC by Xenomorph
Modified: 2015-05-17 22:52 UTC (History)
3 users (show)

See Also:
mva: maintainer-feedback? (timur)


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Xenomorph 2014-09-30 18:34:40 UTC
This was a recently-install FreeBSD 10.0-RELEASE installation. 

-----

# portmaster net/samba41

===>>> Port directory: /usr/ports/net/samba41

===>>> Gathering distinfo list for installed ports

===>>> Launching 'make checksum' for net/samba41 in background
===>>> Gathering dependency list for net/samba41 from ports
===>>> Initial dependency check complete for net/samba41


===>>> Starting build for net/samba41 <<<===

===>>> All dependencies are up to date

===>  Cleaning for samba41-4.1.11
===>  License GPLv3 accepted by the user
===>  Found saved configuration for samba41-4.1.11
===>   samba41-4.1.11 depends on file: /usr/local/sbin/pkg - found
===> Fetching all distfiles required by samba41-4.1.11 for building
===>  Extracting for samba41-4.1.11
=> SHA256 Checksum OK for samba-4.1.11.tar.gz.
===>  Patching for samba41-4.1.11
===>  Applying FreeBSD patches for samba41-4.1.11
===>   samba41-4.1.11 depends on package: p5-Parse-Pidl>=4.0.0 - found
===>   samba41-4.1.11 depends on package: talloc>=2.1.0 - found
===>   samba41-4.1.11 depends on package: tevent>=0.9.18 - found
===>   samba41-4.1.11 depends on package: tdb>=1.2.11 - found
===>   samba41-4.1.11 depends on package: ntdb>=1.0 - found
===>   samba41-4.1.11 depends on package: ldb>=1.1.17 - found
===>   samba41-4.1.11 depends on executable: gdb771 - not found
===>    Verifying install for gdb771 in /usr/ports/devel/gdb
===>  Installing for gdb-7.8_2
===>   gdb-7.8_2 depends on shared library: libreadline.so.6 - found (/usr/local/lib/libreadline.so.6)
===>  Checking if gdb already installed
===>   gdb-7.8_2 is already installed
      You may wish to ``make deinstall'' and install this port again
      by ``make reinstall'' to upgrade it properly.
      If you really wish to overwrite the old port of gdb
      without deleting it first, set the variable "FORCE_PKG_REGISTER"
      in your environment or the "make install" command line.
*** Error code 1

Stop.
make[3]: stopped in /usr/ports/devel/gdb
*** Error code 1

Stop.
make[2]: stopped in /usr/ports/devel/gdb
*** Error code 1

Stop.
make[1]: stopped in /usr/ports/net/samba41
*** Error code 1

Stop.
make: stopped in /usr/ports/net/samba41

===>>> make build failed for net/samba41
===>>> Aborting update


===>>> You can restart from the point of failure with this command line:
       portmaster <flags> net/samba41 
#

-----

I'm guessing it's looking for gdb 7.7 ("Verifying install for gdb771"), but gdb 7.8 is current version. I've deleted & rebuilt both Samba 4.1 and gdb. /usr/ports/devel has gdb 7.8 and gdb 6.6 (no 7.7.1).

Samba 4.1 expects ">=" for all other libraries, but wants a very-specific gdb771 library. Is it supposed to do that?
Comment 1 Marcus von Appen freebsd_committer freebsd_triage 2014-10-01 06:52:24 UTC
I guess that the dependency line in net/samba41 was just not updated, when devel/gdb got itds update to 7.8.

Assign to maintainer.
Comment 2 Timur I. Bakeyev freebsd_committer freebsd_triage 2014-10-05 21:45:34 UTC
(In reply to Marcus von Appen from comment #1)
> I guess that the dependency line in net/samba41 was just not updated, when
> devel/gdb got itds update to 7.8.
> 
> Assign to maintainer.
Comment 3 Timur I. Bakeyev freebsd_committer freebsd_triage 2014-10-05 21:48:54 UTC
(In reply to Marcus von Appen from comment #1)
> I guess that the dependency line in net/samba41 was just not updated, when
> devel/gdb got itds update to 7.8.
> 
> Assign to maintainer.

Thanks for the notice! As you stated, I didn't know that gdb was upgraded to version 7.8, and, to be honest I don't know about any mechanism to get such a notification, except a note from the devel/gdb maintainer.

I'll patch samba4* for now.
Comment 4 luca.pizzamiglio 2014-10-06 09:43:26 UTC
By default, devel/gdb installs a link named /usr/local/bin/gdb to allow external ports to check its presence without continuously fight against gdb version suffix.

Do you think it could be viable also for samba41 developer option?

the GDB_CMD should use the absolute path (with PREFIX and so on...)
Comment 5 Timur I. Bakeyev freebsd_committer freebsd_triage 2014-10-06 11:14:36 UTC
(In reply to luca.pizzamiglio from comment #4)
> By default, devel/gdb installs a link named /usr/local/bin/gdb to allow
> external ports to check its presence without continuously fight against gdb
> version suffix.

The path isn't a problem by itself - there is a need for recent enough gdb cause somehow stock gdb gives different results.

So I need a reliable way to check for the presence and place dependency on a devel/ddb in a port. If you have better idea how to do so - please, advice.

Also, as a link is an option, it can be disabled in some installation and then things will break :(
Comment 6 luca.pizzamiglio 2014-10-06 13:09:29 UTC
in devel/gdb everything use the suffix with the version, because of the presence of the FreeBSD's gdb.
This link was added exactly to solve the version suffix issue, providing a way to detect the gdb 7+ is installed.

The link has the same name of the FreeBSD's gdb, it could generate some name conflict, path order issue or other problems, that's why it was introduced as option, but after years nobody noted any problem. In the future, we could install the link, without option.
Comment 7 Xenomorph 2015-02-04 15:28:37 UTC
I just tried a clean FreeBSD 10.1 install with Samba 4.1.16 (February 2015). Pretty much same issue, still.

----------
===>  Applying FreeBSD patches for samba41-4.1.16
===>   samba41-4.1.16 depends on package: p5-Parse-Pidl>=4.0.0 - found
===>   samba41-4.1.16 depends on package: py27-dnspython>=1.9.4 - found
===>   samba41-4.1.16 depends on package: talloc>=2.1.0 - found
===>   samba41-4.1.16 depends on package: tevent>=0.9.18 - found
===>   samba41-4.1.16 depends on package: tdb>=1.2.11 - found
===>   samba41-4.1.16 depends on package: ntdb>=1.0 - found
===>   samba41-4.1.16 depends on package: ldb>=1.1.17 - found
===>   samba41-4.1.16 depends on executable: gdb78 - not found
...
...
...
===>  Installing for gdb-7.8.2
===>  Checking if gdb already installed
===>   gdb-7.8.2 is already installed
      You may wish to ``make deinstall'' and install this port again
      by ``make reinstall'' to upgrade it properly.
      If you really wish to overwrite the old port of gdb
      without deleting it first, set the variable "FORCE_PKG_REGISTER"
      in your environment or the "make install" command line.
*** Error code 1

Stop.
make[3]: stopped in /usr/ports/devel/gdb
*** Error code 1

Stop.
make[2]: stopped in /usr/ports/devel/gdb
*** Error code 1

Stop.
make[1]: stopped in /usr/ports/net/samba41
*** Error code 1

Stop.
make: stopped in /usr/ports/net/samba41

===>>> make build failed for net/samba41
===>>> Aborting update


===>>> You can restart from the point of failure with this command line:
       portmaster <flags> net/samba41 

----------

It is at least looking for "gdb78" now (and not "gdb771" like before). Why would it not "work" with gdb-7.8.2? It still seems to be using an "=" (exact match) instead of the ">=" it uses for other prerequisites.
Comment 8 luca.pizzamiglio 2015-02-04 16:12:16 UTC
it's looking for gdb78, that's wrong. Every new version, the gdb's name is updated as well.
The way to check the presence of devel/gdb is looking for ${LOCALBASE}/bin/gdb , a link to gdb782 or whatever will be the gdb's name.
In this way, the last version of gdb is found.

GDB_CMD?= ${LOCALBASE}/bin/gdb
Comment 9 Timur I. Bakeyev freebsd_committer freebsd_triage 2015-05-17 22:52:10 UTC
(In reply to luca.pizzamiglio from comment #8)

Although I'm not fully satisfied with it, I've set the GDB_CMD this way. I'd hope that you'll make creation of the link mandatory, without an option. Thanks in advance!