ports/132579: [patch] sysutils/screen: fix build with externel compiler (gcc42/gcc43/gcc43/llvm)
Anonymous
swell.k at gmail.com
Thu Mar 12 14:10:08 UTC 2009
>Number: 132579
>Category: ports
>Synopsis: [patch] sysutils/screen: fix build with externel compiler (gcc42/gcc43/gcc44/llvm)
>Confidential: no
>Severity: non-critical
>Priority: low
>Responsible: freebsd-ports-bugs
>State: open
>Quarter:
>Keywords:
>Date-Required:
>Class: sw-bug
>Submitter-Id: current-users
>Arrival-Date: Thu Mar 12 14:10:04 UTC 2009
>Closed-Date:
>Last-Modified:
>Originator: Anonymous
>Release: FreeBSD 8.0-CURRENT amd64
>Organization:
>Environment:
System: FreeBSD luffy 8.0-CURRENT FreeBSD 8.0-CURRENT #0 r189706M: Wed Mar 11 20:47:32 UTC 2009 root at luffy:/usr/obj/usr/src/sys/PHOENIX amd64
$ make showconfig (all default)
===> The following configuration options are available for screen-4.0.3_6:
CJK=off "Treat CJK ambiguous characters as full width"
INFO=on "Build and install info documentation"
MAN=on "Build and install man pages"
NETHACK=on "Enable nethack-style messages"
XTERM_256=off "Enable support for 256 colour xterm"
HOSTINLOCKED=off "Print user at host in locked message"
SHOWENC=off "Show encoding on the status line"
>Description:
The port builds only with base compiler if sysutils/libutempter is installed.
>How-To-Repeat:
install lang/gcc43
install sysutils/libutempter
$ make CC=gcc43
===> Configuring for screen-4.0.3_6
...
checking utempter.h usability... yes
checking utempter.h presence... yes
checking for utempter.h... yes
...
configure: error: Can't run the compiler - internal error. Sorry.
And in config.log there are errors like
configure:5842: gcc43 -o conftest -O2 -pipe -fno-strict-aliasing conftest.c -ltermcap -lutil -lutempter -lutil >&5
/usr/bin/ld: cannot find -lutempter
collect2: ld returned 1 exit status
But if you specify LDFLAGS="-L${LOCALBASE}/lib ${LDFLAGS}" then build
fails in another place
gcc43 -c -I. -I. -O2 -pipe -fno-strict-aliasing utmp.c
utmp.c: In function 'initutmp':
utmp.c:646: error: 'utmpfd' undeclared (first use in this function)
utmp.c:646: error: (Each undeclared identifier is reported only once
utmp.c:646: error: for each function it appears in.)
utmp.c: In function 'setutent':
utmp.c:654: error: 'utmpfd' undeclared (first use in this function)
utmp.c: In function 'endutent':
utmp.c:661: error: 'utmpfd' undeclared (first use in this function)
utmp.c: In function 'getutent':
utmp.c:669: error: 'utmpfd' undeclared (first use in this function)
utmp.c: In function 'getutslot':
utmp.c:680: error: 'utmpfd' undeclared (first use in this function)
utmp.c: In function 'pututslot':
utmp.c:699: error: 'utmpfd' undeclared (first use in this function)
*** Error code 1
>Fix:
Either link with libutempter.so
--- link.diff begins here ---
Index: sysutils/screen/Makefile
===================================================================
RCS file: /home/csup/ports/sysutils/screen/Makefile,v
retrieving revision 1.77
diff -u -p -r1.77 Makefile
--- sysutils/screen/Makefile 23 Feb 2009 21:48:34 -0000 1.77
+++ sysutils/screen/Makefile 12 Mar 2009 13:04:24 -0000
@@ -31,6 +31,7 @@ NO_PACKAGE= Tends to loop using 100% CPU
.include <bsd.port.pre.mk>
GNU_CONFIGURE= yes
+CONFIGURE_ENV= LDFLAGS="-L${LOCALBASE}/lib ${LDFLAGS}"
.if defined(WITH_MAN)
MAN1= screen.1
MAKE_ARGS+= -DWITH_MAN
Index: sysutils/screen/files/patch-utmp.c
===================================================================
RCS file: /home/csup/ports/sysutils/screen/files/patch-utmp.c,v
retrieving revision 1.1
diff -u -p -r1.1 patch-utmp.c
--- sysutils/screen/files/patch-utmp.c 21 Oct 2005 14:24:02 -0000 1.1
+++ sysutils/screen/files/patch-utmp.c 12 Mar 2009 13:06:37 -0000
@@ -1,5 +1,14 @@
--- utmp.c.orig Mon Sep 8 16:27:17 2003
+++ utmp.c Wed Oct 19 14:58:40 2005
+@@ -69,7 +69,7 @@
+ * we have a suid-root helper app that changes the utmp for us
+ * (won't work for login-slots)
+ */
+-#if (defined(sun) && defined(SVR4) && defined(GETUTENT)) || defined(HAVE_UTEMPTER)
++#if (defined(sun) && defined(SVR4) && defined(GETUTENT))
+ # define UTMP_HELPER
+ #endif
+
@@ -726,9 +728,12 @@
char *line, *user;
int pid;
--- link.diff ends here ---
or remove utempter.h check entirely
--- skip.diff begins here ---
Index: sysutils/screen/files/patch-remove-utempter-check
===================================================================
RCS file: sysutils/screen/files/patch-remove-utempter-check
diff -N sysutils/screen/files/patch-remove-utempter-check
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ sysutils/screen/files/patch-remove-utempter-check 12 Mar 2009 13:15:40 -0000
@@ -0,0 +1,168 @@
+--- configure.in.orig 2003-06-03 15:58:24.000000000 +0400
++++ configure.in
+@@ -855,12 +855,6 @@
+ #include <utmp.h>
+ #endif
+ ],[struct utmp u; u.ut_host[0] = 0;], AC_DEFINE(UTHOST))
+-AC_CHECK_HEADER(utempter.h, have_utempter=yes, have_utempter=no)
+-if test "$have_utempter" = yes; then
+- AC_DEFINE(HAVE_UTEMPTER)
+- LIBS="$LIBS -lutempter"
+-fi
+-
+ dnl
+ dnl **** loadav ****
+ dnl
+--- configure.orig 2003-12-05 16:46:53.000000000 +0300
++++ configure
+@@ -5717,150 +5717,6 @@
+
+ fi
+ rm -f conftest.$ac_objext conftest.$ac_ext
+-if test "${ac_cv_header_utempter_h+set}" = set; then
+- echo "$as_me:$LINENO: checking for utempter.h" >&5
+-echo $ECHO_N "checking for utempter.h... $ECHO_C" >&6
+-if test "${ac_cv_header_utempter_h+set}" = set; then
+- echo $ECHO_N "(cached) $ECHO_C" >&6
+-fi
+-echo "$as_me:$LINENO: result: $ac_cv_header_utempter_h" >&5
+-echo "${ECHO_T}$ac_cv_header_utempter_h" >&6
+-else
+- # Is the header compilable?
+-echo "$as_me:$LINENO: checking utempter.h usability" >&5
+-echo $ECHO_N "checking utempter.h usability... $ECHO_C" >&6
+-cat >conftest.$ac_ext <<_ACEOF
+-#line $LINENO "configure"
+-/* confdefs.h. */
+-_ACEOF
+-cat confdefs.h >>conftest.$ac_ext
+-cat >>conftest.$ac_ext <<_ACEOF
+-/* end confdefs.h. */
+-$ac_includes_default
+-#include <utempter.h>
+-_ACEOF
+-rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -s conftest.$ac_objext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
+- ac_header_compiler=yes
+-else
+- echo "$as_me: failed program was:" >&5
+-sed 's/^/| /' conftest.$ac_ext >&5
+-
+-ac_header_compiler=no
+-fi
+-rm -f conftest.$ac_objext conftest.$ac_ext
+-echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+-echo "${ECHO_T}$ac_header_compiler" >&6
+-
+-# Is the header present?
+-echo "$as_me:$LINENO: checking utempter.h presence" >&5
+-echo $ECHO_N "checking utempter.h presence... $ECHO_C" >&6
+-cat >conftest.$ac_ext <<_ACEOF
+-#line $LINENO "configure"
+-/* confdefs.h. */
+-_ACEOF
+-cat confdefs.h >>conftest.$ac_ext
+-cat >>conftest.$ac_ext <<_ACEOF
+-/* end confdefs.h. */
+-#include <utempter.h>
+-_ACEOF
+-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+- ac_status=$?
+- grep -v '^ *+' conftest.er1 >conftest.err
+- rm -f conftest.er1
+- cat conftest.err >&5
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } >/dev/null; then
+- if test -s conftest.err; then
+- ac_cpp_err=$ac_c_preproc_warn_flag
+- else
+- ac_cpp_err=
+- fi
+-else
+- ac_cpp_err=yes
+-fi
+-if test -z "$ac_cpp_err"; then
+- ac_header_preproc=yes
+-else
+- echo "$as_me: failed program was:" >&5
+-sed 's/^/| /' conftest.$ac_ext >&5
+-
+- ac_header_preproc=no
+-fi
+-rm -f conftest.err conftest.$ac_ext
+-echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+-echo "${ECHO_T}$ac_header_preproc" >&6
+-
+-# So? What about this header?
+-case $ac_header_compiler:$ac_header_preproc in
+- yes:no )
+- { echo "$as_me:$LINENO: WARNING: utempter.h: accepted by the compiler, rejected by the preprocessor!" >&5
+-echo "$as_me: WARNING: utempter.h: accepted by the compiler, rejected by the preprocessor!" >&2;}
+- { echo "$as_me:$LINENO: WARNING: utempter.h: proceeding with the preprocessor's result" >&5
+-echo "$as_me: WARNING: utempter.h: proceeding with the preprocessor's result" >&2;}
+- (
+- cat <<\_ASBOX
+-## ------------------------------------ ##
+-## Report this to bug-autoconf at gnu.org. ##
+-## ------------------------------------ ##
+-_ASBOX
+- ) |
+- sed "s/^/$as_me: WARNING: /" >&2
+- ;;
+- no:yes )
+- { echo "$as_me:$LINENO: WARNING: utempter.h: present but cannot be compiled" >&5
+-echo "$as_me: WARNING: utempter.h: present but cannot be compiled" >&2;}
+- { echo "$as_me:$LINENO: WARNING: utempter.h: check for missing prerequisite headers?" >&5
+-echo "$as_me: WARNING: utempter.h: check for missing prerequisite headers?" >&2;}
+- { echo "$as_me:$LINENO: WARNING: utempter.h: proceeding with the preprocessor's result" >&5
+-echo "$as_me: WARNING: utempter.h: proceeding with the preprocessor's result" >&2;}
+- (
+- cat <<\_ASBOX
+-## ------------------------------------ ##
+-## Report this to bug-autoconf at gnu.org. ##
+-## ------------------------------------ ##
+-_ASBOX
+- ) |
+- sed "s/^/$as_me: WARNING: /" >&2
+- ;;
+-esac
+-echo "$as_me:$LINENO: checking for utempter.h" >&5
+-echo $ECHO_N "checking for utempter.h... $ECHO_C" >&6
+-if test "${ac_cv_header_utempter_h+set}" = set; then
+- echo $ECHO_N "(cached) $ECHO_C" >&6
+-else
+- ac_cv_header_utempter_h=$ac_header_preproc
+-fi
+-echo "$as_me:$LINENO: result: $ac_cv_header_utempter_h" >&5
+-echo "${ECHO_T}$ac_cv_header_utempter_h" >&6
+-
+-fi
+-if test $ac_cv_header_utempter_h = yes; then
+- have_utempter=yes
+-else
+- have_utempter=no
+-fi
+-
+-
+-if test "$have_utempter" = yes; then
+- cat >>confdefs.h <<\_ACEOF
+-#define HAVE_UTEMPTER 1
+-_ACEOF
+-
+- LIBS="$LIBS -lutempter"
+-fi
+-
+ { echo "$as_me:$LINENO: checking for libutil(s)..." >&5
+ echo "$as_me: checking for libutil(s)..." >&6;}
+ test -f /usr/lib/libutils.a && LIBS="$LIBS -lutils"
--- skip.diff ends here ---
>Release-Note:
>Audit-Trail:
>Unformatted:
More information about the freebsd-ports-bugs
mailing list