Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!

Bug 354151

Summary: Installing net-dialup/freeradius on g/fbsd
Product: Gentoo/Alt Reporter: Dmitri Bogomolov <4glitch>
Component: FreeBSDAssignee: Gentoo/BSD Team <bsd+disabled>
Status: RESOLVED FIXED    
Severity: enhancement CC: flameeyes, mrness
Priority: High Keywords: KEYWORDREQ
Version: unspecified   
Hardware: All   
OS: FreeBSD   
Whiteboard:
Package list:
Runtime testing required: ---
Attachments: build.log for net-dialup/freeradius-2.1.12 on g/fbsd9.0
freeradius-2.1.12-fbsd9-utmp.patch

Description Dmitri Bogomolov 2011-02-08 20:34:10 UTC
Just successfully installed =net-dialup/freeradius-2.0.5 (ldap postgres ssl threads udpfromto -bindist -debug -edirectory -firebird -frascend -frxp -kerberos -mysql -pam -snmp) on g/fbsd-8.0.

Reproducible: Always
Comment 1 Naohiro Aota gentoo-dev 2012-02-27 13:47:25 UTC
emerge freeradius-2.1.12 gave me this error:

/bin/sh /usr/tmp/portage/net-dialup/freeradius-2.1.12/work/freeradius-server-2.1.12/libtool --mode=compile i686-gentoo-freebsd8.2-gcc  -O2 -pipe -march=prescott -mtune=prescott -lpthread -Wall -D_GNU_SOURCE -DNDEBUG -D_LIBRADIUS -I/usr/tmp/portage/net-dialup/freeradius-2.1.12/work/freeradius-server-2.1.12/src -c dict.c
base_compile+= i686-gentoo-freebsd8.2-gcc: not found
base_compile+= -O2: not found
base_compile+= -pipe: not found
base_compile+= -march=prescott: not found
base_compile+= -mtune=prescott: not found
base_compile+= -lpthread: not found
base_compile+= -Wall: not found
base_compile+= -D_GNU_SOURCE: not found
base_compile+= -DNDEBUG: not found
base_compile+= -D_LIBRADIUS: not found
eval: base_compile+= -I/usr/tmp/portage/net-dialup/freeradius-2.1.12/work/freeradius-server-2.1.12/src: not found
base_compile+= -c: not found
CC_quoted+= i686-gentoo-freebsd8.2-gcc: not found
CC_quoted+= i686-gentoo-freebsd8.2-g++: not found
libtool: compile: you must specify a compilation command
libtool: compile: Try `libtool --help --mode=compile' for more information.

This error is cause because

- libtool script is built to target bash
- but freeradius call it using /bin/sh [1], which cause an error when
  /bin/sh is not /bin/bash

Possible fix would be

1. emake SHELL="${EPREFIX}"/bin/bash ...
or
2. Fix some files to generate sh-compatible libtool

However, the 2nd solution is a bit difficult for Gentoo, because
elibtoolize is generating libtool script..

Alin, Could you tell me your comments on this problem? Or, if you don't
mind, I'd like to take the 1st solution above.

[1] aclocal.m4 has follwing lines
_LT_SHELL_INIT([SHELL=${CONFIG_SHELL-/bin/sh}])
<snip>
LIBTOOL='$(SHELL) $(top_builddir)/libtool'

These line lead to call libtool using /bin/sh
Comment 2 Dmitri Bogomolov 2012-02-27 16:06:22 UTC
(In reply to comment #1)

> This error is cause because
> 
> - libtool script is built to target bash
> - but freeradius call it using /bin/sh [1], which cause an error when
>   /bin/sh is not /bin/bash
> 
> Possible fix would be
> 
> 1. emake SHELL="${EPREFIX}"/bin/bash ...

Thank you for attention. Same change is needed to install phase:
--- freeradius-2.1.12.ebuild	2011-11-20 20:54:06.000000000 +0200
+++ freeradius-2.1.12.ebuild	2012-02-27 17:08:50.959146732 +0200
@@ -118,7 +118,7 @@
 }
 
 src_compile() {
-	emake -j1 || die "emake failed"
+	emake -j1 SHELL="${EPREFIX}"/bin/bash || die "emake failed"
 }
 
 src_install() {
@@ -133,9 +133,9 @@
 	dodir /var/run/radiusd
 	diropts
 
-	make R="${D}" install || die "make install failed"
+	make R="${D}" SHELL="${EPREFIX}"/bin/bash install || die "make install failed"
 	sed -i -e 's:^#user *= *nobody:user = radiusd:;s:^#group *= *nobody:group = radiusd:' \
-	    "${D}"/etc/raddb/radiusd.conf
+		"${D}"/etc/raddb/radiusd.conf
 	chown -R root:radiusd "${D}"/etc/raddb/*
 
 	pamd_mimic_system radiusd auth account password session

The last change is not my :)
Comment 3 Dmitri Bogomolov 2012-06-14 10:02:36 UTC
Created attachment 315265 [details]
build.log for net-dialup/freeradius-2.1.12 on g/fbsd9.0

freeradius seems to have the same problem as openssh in bug 391011. The tail of attached build.log follow

libtool: compile:  i686-gentoo-freebsd9.0-gcc -O2 -march=i686 -mtune=core2 -pipe -lpthread -Wall -D_GNU_SOURCE -D_REENTRANT -D_POSIX_PTHREAD_SEMANTICS -DNDEBUG -I/var/tmp/portage/net-dialup/freeradius-2.1.12/work/freeradius-server-2.1.12/src -c rlm_unix.c  -fPIC -DPIC -o .libs/rlm_unix.o
rlm_unix.c: In function 'groupcmp':
rlm_unix.c:83:14: warning: unused variable 'vp'
rlm_unix.c:81:9: warning: unused variable 'username'
rlm_unix.c: In function 'unix_accounting':
rlm_unix.c:471:32: error: 'struct utmpx' has no member named 'ut_name'
rlm_unix.c:472:15: error: 'struct utmpx' has no member named 'ut_name'
rlm_unix.c:472:59: error: 'struct utmpx' has no member named 'ut_name'
rlm_unix.c:474:16: error: 'struct utmpx' has no member named 'ut_name'
rlm_unix.c:474:60: error: 'struct utmpx' has no member named 'ut_name'
rlm_unix.c:503:16: error: 'struct utmpx' has no member named 'ut_name'
rlm_unix.c:503:44: error: 'struct utmpx' has no member named 'ut_name'
rlm_unix.c:557:5: error: 'struct utmpx' has no member named 'ut_name'
gmake[6]: *** [rlm_unix.lo] Error 1
gmake[6]: Leaving directory `/var/tmp/portage/net-dialup/freeradius-2.1.12/work/freeradius-server-2.1.12/src/modules/rlm_unix'
gmake[5]: *** [rlm_unix] Error 2
gmake[5]: Leaving directory `/var/tmp/portage/net-dialup/freeradius-2.1.12/work/freeradius-server-2.1.12/src/modules'
gmake[4]: *** [all] Error 2
gmake[4]: Leaving directory `/var/tmp/portage/net-dialup/freeradius-2.1.12/work/freeradius-server-2.1.12/src/modules'
gmake[3]: *** [modules] Error 2
gmake[3]: Leaving directory `/var/tmp/portage/net-dialup/freeradius-2.1.12/work/freeradius-server-2.1.12/src'
gmake[2]: *** [all] Error 2
gmake[2]: Leaving directory `/var/tmp/portage/net-dialup/freeradius-2.1.12/work/freeradius-server-2.1.12/src'
gmake[1]: *** [src] Error 2
gmake[1]: Leaving directory `/var/tmp/portage/net-dialup/freeradius-2.1.12/work/freeradius-server-2.1.12'
gmake: *** [all] Error 2
Comment 4 Dmitri Bogomolov 2012-06-14 10:18:31 UTC
Created attachment 315267 [details, diff]
freeradius-2.1.12-fbsd9-utmp.patch

This patch from freebsd's port fixes the problem with utmpx.
Comment 6 Diego Elio Pettenò (RETIRED) gentoo-dev 2012-09-30 04:13:09 UTC
Okay I'm going to look into these and most likely fix them with 2.2.0.
Comment 7 Naohiro Aota gentoo-dev 2012-11-01 08:31:07 UTC
(In reply to comment #6)
> Okay I'm going to look into these and most likely fix them with 2.2.0.

2.2.0 was fine here expect that it depends on sys-libs/pam instead of virtual/pam. Can we replace it with virtual one?
Comment 8 Naohiro Aota gentoo-dev 2014-01-03 12:07:50 UTC
Replaced to virtual/pam and keyworded.