Bug 214161 - net/freebsd-uucp: Using "PAM" option makes port build fail
Summary: net/freebsd-uucp: Using "PAM" option makes port build fail
Status: Closed FIXED
Alias: None
Product: Ports & Packages
Classification: Unclassified
Component: Individual Port(s) (show other bugs)
Version: Latest
Hardware: Any Any
: --- Affects Some People
Assignee: Dirk Meyer
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2016-11-03 10:20 UTC by Armin Gruner
Modified: 2016-11-14 00:06 UTC (History)
1 user (show)

See Also:
dinoex: maintainer-feedback+


Attachments
metadata patch file (320 bytes, text/plain)
2016-11-03 10:20 UTC, Armin Gruner
no flags Details

Note You need to log in before you can comment on or make changes to this bug.
Description Armin Gruner 2016-11-03 10:20:54 UTC
Created attachment 176586 [details]
metadata patch file

When selecting the "use PAM" build option, building "uucpd" fails because libpam is not linked:

--- uucpd ---
cc -O2 -pipe -fstack-protector -fno-strict-aliasing -DPREFIX=\"/usr/local\" -DUSE_PAM_NEW -DUSE_PAM -std=gnu99 -fstack-protector-strong -Qunused-arguments  -fstack-protector -o uucpd uucpd.o  -lcrypt -lutil 
uucpd.o: In function `doit':
uucpd.c:(.text+0x348): undefined reference to `pam_start'
....
cc: error: linker command failed with exit code 1 (use -v to see invocation)
*** [uucpd] Error code 1

make[3]: stopped in /usr/ports/net/freebsd-uucp/work/freebsd-uucp-r1_07_3/uucpd
===> Compilation failed unexpectedly.


The attached patch sets the make variable MINUSLPAM so uucpd is successfully linked.
Comment 1 Dirk Meyer freebsd_committer freebsd_triage 2016-11-06 16:25:21 UTC
Sorry, I can not reproduce your problem.

FreeBSD 10.3 amd64:

LIBPAM, MINUSLPAM is defined in /usr/share/mk/bsd.libnames.mk
which detect all needed libraries.

cd /usr/ports/net/freebsd-uucp
make clean OPTIONS_SET=PAM configure
cd `make -V WRKSRC`
cd uucpd
make WITH_PAM= -V LIBPAM -V MINUSLPAM 
/usr/lib/libpam.a
-lpam


Hardcoding it to -lpam might help you,
but your patch will fail when you build your system with kerberos or other options.

make WITH_PAM= -V MINUSLPAM LDFLAGS=-static
-lpam -lkrb5 -lhx509 -lasn1 -lcrypto -lcrypt -lroken -lcom_err -lradius -ltacplus -lcrypt  -lutil -lopie -lmd -lssh -lcrypto -lcrypt -lypclnt

Please check your base system, some files may be missing or broken.
Comment 2 Armin Gruner 2016-11-06 23:42:36 UTC
I have no 10.x system anymore, but this happens on three 11.0-RELEASE hosts I'm running:

I will try with a virtualbox 10.3-RELEASE tomorrow


» freebsd-version -u -k
11.0-RELEASE-p2
11.0-RELEASE-p3

net/freebsd-uucp » make
===>  Building for freebsd-uucp-pam-1.07.3_3
--- all ---
(cd uucp && /usr/bin/make all)
--- all ---
===> libunix (all)
--- objwarn ---
Warning: Object directory not changed from original /usr/ports/net/freebsd-uucp/work/freebsd-uucp-r1_07_3/uucp/libunix
===> libuucp (all)
--- objwarn ---
Warning: Object directory not changed from original /usr/ports/net/freebsd-uucp/work/freebsd-uucp-r1_07_3/uucp/libuucp
===> libuuconf (all)
--- objwarn ---
Warning: Object directory not changed from original /usr/ports/net/freebsd-uucp/work/freebsd-uucp-r1_07_3/uucp/libuuconf
===> sample (all)
--- objwarn ---
Warning: Object directory not changed from original /usr/ports/net/freebsd-uucp/work/freebsd-uucp-r1_07_3/uucp/sample
===> cu (all)
--- objwarn ---
Warning: Object directory not changed from original /usr/ports/net/freebsd-uucp/work/freebsd-uucp-r1_07_3/uucp/cu
===> uuchk (all)
--- objwarn ---
Warning: Object directory not changed from original /usr/ports/net/freebsd-uucp/work/freebsd-uucp-r1_07_3/uucp/uuchk
===> uucico (all)
--- objwarn ---
Warning: Object directory not changed from original /usr/ports/net/freebsd-uucp/work/freebsd-uucp-r1_07_3/uucp/uucico
===> uuconv (all)
--- objwarn ---
Warning: Object directory not changed from original /usr/ports/net/freebsd-uucp/work/freebsd-uucp-r1_07_3/uucp/uuconv
===> uucp (all)
--- objwarn ---
Warning: Object directory not changed from original /usr/ports/net/freebsd-uucp/work/freebsd-uucp-r1_07_3/uucp/uucp
===> uulog (all)
--- objwarn ---
Warning: Object directory not changed from original /usr/ports/net/freebsd-uucp/work/freebsd-uucp-r1_07_3/uucp/uulog
===> uuname (all)
--- objwarn ---
Warning: Object directory not changed from original /usr/ports/net/freebsd-uucp/work/freebsd-uucp-r1_07_3/uucp/uuname
===> uupick (all)
--- objwarn ---
Warning: Object directory not changed from original /usr/ports/net/freebsd-uucp/work/freebsd-uucp-r1_07_3/uucp/uupick
===> uusched (all)
--- objwarn ---
Warning: Object directory not changed from original /usr/ports/net/freebsd-uucp/work/freebsd-uucp-r1_07_3/uucp/uusched
===> uustat (all)
--- objwarn ---
Warning: Object directory not changed from original /usr/ports/net/freebsd-uucp/work/freebsd-uucp-r1_07_3/uucp/uustat
===> uuto (all)
--- objwarn ---
Warning: Object directory not changed from original /usr/ports/net/freebsd-uucp/work/freebsd-uucp-r1_07_3/uucp/uuto
===> uux (all)
--- objwarn ---
Warning: Object directory not changed from original /usr/ports/net/freebsd-uucp/work/freebsd-uucp-r1_07_3/uucp/uux
===> uuxqt (all)
--- objwarn ---
Warning: Object directory not changed from original /usr/ports/net/freebsd-uucp/work/freebsd-uucp-r1_07_3/uucp/uuxqt
(cd uucpd && /usr/bin/make all)
--- objwarn ---
Warning: Object directory not changed from original /usr/ports/net/freebsd-uucp/work/freebsd-uucp-r1_07_3/uucpd
--- uucpd ---
cc -O2 -pipe -fstack-protector -fno-strict-aliasing -DPREFIX=\"/usr/local\" -DUSE_PAM_NEW -DUSE_PAM -std=gnu99 -fstack-protector-strong -Qunused-arguments  -fstack-protector -o uucpd uucpd.o  -lcrypt -lutil 
uucpd.o: In function `doit':
uucpd.c:(.text+0x348): undefined reference to `pam_start'
uucpd.c:(.text+0x35a): undefined reference to `pam_strerror'
uucpd.c:(.text+0x378): undefined reference to `pam_set_item'
uucpd.c:(.text+0x38e): undefined reference to `pam_strerror'
uucpd.c:(.text+0x493): undefined reference to `pam_setcred'
uucpd.c:(.text+0x4a5): undefined reference to `pam_strerror'
uucpd.c:(.text+0x4ca): undefined reference to `pam_close_session'
uucpd.c:(.text+0x4de): undefined reference to `pam_strerror'
uucpd.c:(.text+0x503): undefined reference to `pam_end'
uucpd.c:(.text+0x515): undefined reference to `pam_strerror'
uucpd.c:(.text+0x556): undefined reference to `pam_authenticate'
uucpd.c:(.text+0x58d): undefined reference to `pam_get_item'
uucpd.c:(.text+0x59f): undefined reference to `pam_strerror'
uucpd.c:(.text+0x5c7): undefined reference to `pam_strerror'
uucpd.c:(.text+0x621): undefined reference to `pam_acct_mgmt'
uucpd.c:(.text+0x644): undefined reference to `pam_chauthtok'
uucpd.c:(.text+0x65f): undefined reference to `pam_strerror'
uucpd.c:(.text+0x68b): undefined reference to `pam_end'
uucpd.c:(.text+0x69d): undefined reference to `pam_strerror'
uucpd.c:(.text+0x715): undefined reference to `pam_setcred'
uucpd.c:(.text+0x727): undefined reference to `pam_strerror'
uucpd.c:(.text+0x74c): undefined reference to `pam_close_session'
uucpd.c:(.text+0x760): undefined reference to `pam_strerror'
uucpd.c:(.text+0x785): undefined reference to `pam_end'
uucpd.c:(.text+0x797): undefined reference to `pam_strerror'
uucpd.c:(.text+0x8a2): undefined reference to `pam_setcred'
uucpd.c:(.text+0x8b4): undefined reference to `pam_open_session'
uucpd.c:(.text+0x8c6): undefined reference to `pam_strerror'
uucpd.c:(.text+0x8e1): undefined reference to `pam_strerror'
uucpd.c:(.text+0x909): undefined reference to `pam_end'
uucpd.c:(.text+0x91b): undefined reference to `pam_strerror'
cc: error: linker command failed with exit code 1 (use -v to see invocation)
*** [uucpd] Error code 1

make[3]: stopped in /usr/ports/net/freebsd-uucp/work/freebsd-uucp-r1_07_3/uucpd
1 error

make[3]: stopped in /usr/ports/net/freebsd-uucp/work/freebsd-uucp-r1_07_3/uucpd
*** [all] Error code 2

make[2]: stopped in /usr/ports/net/freebsd-uucp/work/freebsd-uucp-r1_07_3
1 error

make[2]: stopped in /usr/ports/net/freebsd-uucp/work/freebsd-uucp-r1_07_3
===> Compilation failed unexpectedly.
Try to set MAKE_JOBS_UNSAFE=yes and rebuild before reporting the failure to
the maintainer.
*** Error code 1

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

Stop.
make: stopped in /usr/ports/net/freebsd-uucp
net/freebsd-uucp »
Comment 3 Armin Gruner 2016-11-07 20:49:28 UTC
% vagrant init freebsd/FreeBSD-11.0-RELEASE-p1; vagrant up --provider virtualbox

Bringing machine 'default' up with 'virtualbox' provider...
==> default: Box 'freebsd/FreeBSD-11.0-RELEASE-p1' could not be found. Attempting to find and install...
    default: Box Provider: virtualbox
    default: Box Version: >= 0
==> default: Loading metadata for box 'freebsd/FreeBSD-11.0-RELEASE-p1'
    default: URL: https://atlas.hashicorp.com/freebsd/FreeBSD-11.0-RELEASE-p1
==> default: Adding box 'freebsd/FreeBSD-11.0-RELEASE-p1' (v2016.09.29) for provider: virtualbox
    default: Downloading: https://atlas.hashicorp.com/freebsd/boxes/FreeBSD-11.0-RELEASE-p1/versions/2016.09.29/providers/virtualbox.box
[...]

[ Second "vagrant up" fixes some base box issues, see https://lists.freebsd.org/pipermail/freebsd-bugs/2015-July/063189.html ]
% vagrant up
% vagrant ssh


vagrant@:~ % sudo -s
# portsnap fetch
# portsnap extract
# cd /usr/ports/net/freebsd-uucp/
# make config
# make
[...]
(cd uucpd && /usr/bin/make all)
Warning: Object directory not changed from original /usr/ports/net/freebsd-uucp/work/freebsd-uucp-r1_07_3/uucpd
echo uucpd: /usr/lib/libc.a /usr/lib/libcrypt.a /usr/lib/libutil.a /usr/lib/libpam.a >> .depend
cc -O2 -pipe  -fstack-protector -fno-strict-aliasing -DPREFIX=\"/usr/local\" -DUSE_PAM_NEW -DUSE_PAM   -MD  -MF.depend.uucpd.o -MTuucpd.o -std=gnu99 -fstack-protector-strong    -Qunused-arguments  -c uucpd.c -o uucpd.o
uucpd.c:163:26: warning: passing 'int *' to parameter of type 'socklen_t *' (aka 'unsigned int *') converts between pointers to integer types with different sign [-Wpointer-sign]
        if (getpeername(0, sin, &hisaddrlen) < 0) {
                                ^~~~~~~~~~~
/usr/include/sys/socket.h:622:74: note: passing argument to parameter here
int     getpeername(int, struct sockaddr * __restrict, socklen_t * __restrict);
                                                                             ^
uucpd.c:375:6: warning: comparison of array 'remotehost' not equal to a null pointer is always true [-Wtautological-pointer-compare]
        if (remotehost != NULL &&
            ^~~~~~~~~~    ~~~~
2 warnings generated.
cc -O2 -pipe -fstack-protector -fno-strict-aliasing -DPREFIX=\"/usr/local\" -DUSE_PAM_NEW -DUSE_PAM -std=gnu99 -fstack-protector-strong -Qunused-arguments  -fstack-protector -o uucpd uucpd.o  -lcrypt -lutil 
uucpd.o: In function `doit':
uucpd.c:(.text+0x348): undefined reference to `pam_start'
uucpd.c:(.text+0x35a): undefined reference to `pam_strerror'
uucpd.c:(.text+0x378): undefined reference to `pam_set_item'
uucpd.c:(.text+0x38e): undefined reference to `pam_strerror'
uucpd.c:(.text+0x493): undefined reference to `pam_setcred'
uucpd.c:(.text+0x4a5): undefined reference to `pam_strerror'
uucpd.c:(.text+0x4ca): undefined reference to `pam_close_session'
uucpd.c:(.text+0x4de): undefined reference to `pam_strerror'
uucpd.c:(.text+0x503): undefined reference to `pam_end'
uucpd.c:(.text+0x515): undefined reference to `pam_strerror'
uucpd.c:(.text+0x556): undefined reference to `pam_authenticate'
uucpd.c:(.text+0x58d): undefined reference to `pam_get_item'
uucpd.c:(.text+0x59f): undefined reference to `pam_strerror'
uucpd.c:(.text+0x5c7): undefined reference to `pam_strerror'
uucpd.c:(.text+0x621): undefined reference to `pam_acct_mgmt'
uucpd.c:(.text+0x644): undefined reference to `pam_chauthtok'
uucpd.c:(.text+0x65f): undefined reference to `pam_strerror'
uucpd.c:(.text+0x68b): undefined reference to `pam_end'
uucpd.c:(.text+0x69d): undefined reference to `pam_strerror'
uucpd.c:(.text+0x715): undefined reference to `pam_setcred'
uucpd.c:(.text+0x727): undefined reference to `pam_strerror'
uucpd.c:(.text+0x74c): undefined reference to `pam_close_session'
uucpd.c:(.text+0x760): undefined reference to `pam_strerror'
uucpd.c:(.text+0x785): undefined reference to `pam_end'
uucpd.c:(.text+0x797): undefined reference to `pam_strerror'
uucpd.c:(.text+0x8a2): undefined reference to `pam_setcred'
uucpd.c:(.text+0x8b4): undefined reference to `pam_open_session'
uucpd.c:(.text+0x8c6): undefined reference to `pam_strerror'
uucpd.c:(.text+0x8e1): undefined reference to `pam_strerror'
uucpd.c:(.text+0x909): undefined reference to `pam_end'
uucpd.c:(.text+0x91b): undefined reference to `pam_strerror'
cc: error: linker command failed with exit code 1 (use -v to see invocation)
*** [uucpd] Error code 1

make[3]: stopped in /usr/ports/net/freebsd-uucp/work/freebsd-uucp-r1_07_3/uucpd
1 error

make[3]: stopped in /usr/ports/net/freebsd-uucp/work/freebsd-uucp-r1_07_3/uucpd
*** [all] Error code 2

make[2]: stopped in /usr/ports/net/freebsd-uucp/work/freebsd-uucp-r1_07_3
1 error

make[2]: stopped in /usr/ports/net/freebsd-uucp/work/freebsd-uucp-r1_07_3
===> Compilation failed unexpectedly.
Try to set MAKE_JOBS_UNSAFE=yes and rebuild before reporting the failure to
the maintainer.
*** Error code 1

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

Stop.
make: stopped in /usr/ports/net/freebsd-uucp
Comment 4 Armin Gruner 2016-11-08 09:55:18 UTC
This commit removes "MINUSLPAM"  altogether.

https://github.com/freebsd/freebsd/commit/64307db9dad086ba5b1955726a985f18c8068000

At a first glance, this also affects

security/pam_helper
Comment 5 commit-hook freebsd_committer freebsd_triage 2016-11-14 00:05:42 UTC
A commit references this bug:

Author: dinoex
Date: Mon Nov 14 00:04:55 UTC 2016
New revision: 426076
URL: https://svnweb.freebsd.org/changeset/ports/426076

Log:
  - fix build on FreeBSD-11 with option PAM
  PR:		214161

Changes:
  head/net/freebsd-uucp/Makefile