Commit 6a16e163 authored by Maarten ter Huurne's avatar Maarten ter Huurne Committed by Thomas Petazzoni
Browse files

screen: bump to version 4.2.1



I re-did the patches: one patch per change, patch configure.in instead
of the configure script itself, a few more issues fixed. This should
hopefully make the patches acceptable for upstream, or at least make it
easier to migrate them on version bumps.

This also fixes compilation with musl libc.

Signed-off-by: default avatarMaarten ter Huurne <maarten@treewalker.org>
Signed-off-by: default avatarThomas Petazzoni <thomas.petazzoni@free-electrons.com>
parent 22b65765
Loading
Loading
Loading
Loading
+60 −0
Original line number Diff line number Diff line
From: Maarten ter Huurne <maarten@treewalker.org>
Date: Sat, 13 Sep 2014 10:27:27 +0200
Subject: Removed redundant compiler sanity checks

AC_PROG_CC already performs sanity checks. And unlike the removed
checks, it does so in a way that supports cross compilation.

Signed-off-by: Maarten ter Huurne <maarten@treewalker.org>
---
 configure.in | 27 ---------------------------
 1 file changed, 27 deletions(-)

diff --git a/configure.in b/configure.in
index 87fd43b..572c2a3 100644
--- a/configure.in
+++ b/configure.in
@@ -47,31 +47,6 @@ AC_PROG_GCC_TRADITIONAL
 AC_ISC_POSIX
 AC_USE_SYSTEM_EXTENSIONS
 
-AC_TRY_RUN(main(){exit(0);},,[
-if test $CC != cc ; then
-AC_NOTE(Your $CC failed - restarting with CC=cc)
-AC_NOTE()
-CC=cc
-export CC
-exec $0 $configure_args
-fi
-])
-
-AC_TRY_RUN(main(){exit(0);},,
-exec 5>&2
-eval $ac_link
-AC_NOTE(CC=$CC; CFLAGS=$CFLAGS; LIBS=$LIBS;)
-AC_NOTE($ac_compile)
-AC_MSG_ERROR(Can't run the compiler - sorry))
-
-AC_TRY_RUN([
-main()
-{
-  int __something_strange_();
-  __something_strange_(0);
-}
-],AC_MSG_ERROR(Your compiler does not set the exit status - sorry))
-
 AC_PROG_AWK
 
 AC_PROG_INSTALL
@@ -1299,8 +1274,6 @@ fi
 dnl Ptx bug workaround -- insert -lc after -ltermcap
 test -n "$seqptx" && LIBS="-ltermcap -lc -lsocket -linet -lnsl -lsec -lseq"
 
-AC_TRY_RUN(main(){exit(0);},,AC_MSG_ERROR(Can't run the compiler - internal error. Sorry.))
-
 ETCSCREENRC=
 AC_MSG_CHECKING(for the global screenrc file)
 AC_ARG_WITH(sys-screenrc, [  --with-sys-screenrc=path to the global screenrc file], [ ETCSCREENRC="${withval}" ])
-- 
1.8.4.5
+122 −0
Original line number Diff line number Diff line
From: Maarten ter Huurne <maarten@treewalker.org>
Date: Sat, 13 Sep 2014 11:37:59 +0200
Subject: Do not use memcpy as an alternative for bcopy/memmove

The configure script runs a small test program to check whether
memcpy can handle overlapping memory areas. However, it is not valid
to conclude that if a single case of overlapping memory is handled
correctly, all cases will be handled correctly.

Since screen already has its own bcopy implementation as a fallback
for the case that bcopy and memmove are unusable, removing the memcpy
option should not break any systems.

Signed-off-by: Maarten ter Huurne <maarten@treewalker.org>
---
 acconfig.h   |  3 +--
 configure.in | 18 +-----------------
 os.h         |  8 ++------
 osdef.h.in   | 10 +---------
 4 files changed, 5 insertions(+), 34 deletions(-)

diff --git a/acconfig.h b/acconfig.h
index 2e46985..9b0b9d4 100644
--- a/acconfig.h
+++ b/acconfig.h
@@ -476,7 +476,7 @@
 #undef GETTTYENT
 
 /*
- * Define USEBCOPY if the bcopy/memcpy from your system's C library
+ * Define USEBCOPY if the bcopy from your system's C library
  * supports the overlapping of source and destination blocks.  When
  * undefined, screen uses its own (probably slower) version of bcopy().
  * 
@@ -487,7 +487,6 @@
  * Their memove fails the test in the configure script. Sigh. (Juergen)
  */
 #undef USEBCOPY
-#undef USEMEMCPY
 #undef USEMEMMOVE
 
 /*
diff --git a/configure.in b/configure.in
index 572c2a3..ff9606d 100644
--- a/configure.in
+++ b/configure.in
@@ -1144,7 +1144,7 @@ AC_TRY_LINK(,[getttyent();], AC_DEFINE(GETTTYENT))
 AC_CHECKING(fdwalk)
 AC_TRY_LINK([#include <stdlib.h>], [fdwalk(NULL, NULL);],AC_DEFINE(HAVE_FDWALK))
 
-AC_CHECKING(whether memcpy/memmove/bcopy handles overlapping arguments)
+AC_CHECKING(whether memmove/bcopy handles overlapping arguments)
 AC_TRY_RUN([
 main() {
   char buf[10];
@@ -1174,22 +1174,6 @@ main() {
   exit(0); /* libc version works properly.  */
 }], AC_DEFINE(USEMEMMOVE))
 
-
-AC_TRY_RUN([
-#define bcopy(s,d,l) memcpy(d,s,l)
-main() {
-  char buf[10];
-  strcpy(buf, "abcdefghi");
-  bcopy(buf, buf + 2, 3);
-  if (strncmp(buf, "ababcf", 6))
-    exit(1);
-  strcpy(buf, "abcdefghi");
-  bcopy(buf + 2, buf, 3);
-  if (strncmp(buf, "cdedef", 6))
-    exit(1);
-  exit(0); /* libc version works properly.  */
-}], AC_DEFINE(USEMEMCPY))
-
 AC_SYS_LONG_FILE_NAMES
 
 AC_MSG_CHECKING(for vsprintf)
diff --git a/os.h b/os.h
index 55de249..6838ec0 100644
--- a/os.h
+++ b/os.h
@@ -142,12 +142,8 @@ extern int errno;
 # ifdef USEMEMMOVE
 #  define bcopy(s,d,len) memmove(d,s,len)
 # else
-#  ifdef USEMEMCPY
-#   define bcopy(s,d,len) memcpy(d,s,len)
-#  else
-#   define NEED_OWN_BCOPY
-#   define bcopy xbcopy
-#  endif
+#  define NEED_OWN_BCOPY
+#  define bcopy xbcopy
 # endif
 #endif
 
diff --git a/osdef.h.in b/osdef.h.in
index 8687b60..e4057a0 100644
--- a/osdef.h.in
+++ b/osdef.h.in
@@ -58,16 +58,8 @@ extern int   bcmp __P((char *, char *, int));
 extern int   killpg __P((int, int));
 #endif
 
-#ifndef USEBCOPY
-# ifdef USEMEMCPY
-extern void  memcpy __P((char *, char *, int));
-# else
-#  ifdef USEMEMMOVE
+#if defined(USEMEMMOVE) && !defined(USEBCOPY)
 extern void  memmove __P((char *, char *, int));
-#  else
-extern void  bcopy __P((char *, char *, int));
-#  endif
-# endif
 #else
 extern void  bcopy __P((char *, char *, int));
 #endif
-- 
1.8.4.5
+123 −0
Original line number Diff line number Diff line
From: Maarten ter Huurne <maarten@treewalker.org>
Date: Sat, 13 Sep 2014 12:04:41 +0200
Subject: Provide cross compilation alternatives for all AC_TRY_RUN uses

Signed-off-by: Maarten ter Huurne <maarten@treewalker.org>
---
 configure.in | 30 +++++++++++++++++++-----------
 1 file changed, 19 insertions(+), 11 deletions(-)

diff --git a/configure.in b/configure.in
index ff9606d..d53a079 100644
--- a/configure.in
+++ b/configure.in
@@ -347,7 +347,8 @@ main()
   exit(0);
 }
 ], AC_NOTE(- your fifos are usable) fifo=1,
-AC_NOTE(- your fifos are not usable))
+AC_NOTE(- your fifos are not usable),
+AC_NOTE(- skipping check because we are cross compiling; assuming fifos are usable) fifo=1)
 rm -f /tmp/conftest*
 
 if test -n "$fifo"; then
@@ -395,7 +396,8 @@ main()
   exit(0);
 }
 ], AC_NOTE(- your implementation is ok), 
-AC_NOTE(- you have a broken implementation) AC_DEFINE(BROKEN_PIPE) fifobr=1)
+AC_NOTE(- you have a broken implementation) AC_DEFINE(BROKEN_PIPE) fifobr=1,
+AC_NOTE(- skipping check because we are cross compiling; assuming fifo implementation is ok))
 rm -f /tmp/conftest*
 fi
 
@@ -457,7 +459,8 @@ main()
   exit(0);
 }
 ], AC_NOTE(- your sockets are usable) sock=1,
-AC_NOTE(- your sockets are not usable))
+AC_NOTE(- your sockets are not usable),
+AC_NOTE(- skipping check because we are cross compiling; assuming sockets are usable) sock=1)
 rm -f /tmp/conftest*
 
 if test -n "$sock"; then
@@ -496,7 +499,8 @@ main()
 }
 ],AC_NOTE(- you are normal),
 AC_NOTE(- unix domain sockets are not kept in the filesystem)
-AC_DEFINE(SOCK_NOT_IN_FS) socknofs=1)
+AC_DEFINE(SOCK_NOT_IN_FS) socknofs=1,
+AC_NOTE(- skipping check because we are cross compiling; assuming sockets are normal))
 rm -f /tmp/conftest*
 fi
 
@@ -623,7 +627,8 @@ main()
   exit(0);
 }
 ],AC_NOTE(- select is ok),
-AC_NOTE(- select can't count) AC_DEFINE(SELECT_BROKEN))
+AC_NOTE(- select can't count) AC_DEFINE(SELECT_BROKEN),
+AC_NOTE(- skipping check because we are cross compiling; assuming select is ok))
 
 dnl
 dnl    ****  termcap or terminfo  ****
@@ -665,7 +670,8 @@ main()
 {
  exit(strcmp(tgoto("%p1%d", 0, 1), "1") ? 0 : 1);
 }], AC_NOTE(- you use the termcap database),
-AC_NOTE(- you use the terminfo database) AC_DEFINE(TERMINFO))
+AC_NOTE(- you use the terminfo database) AC_DEFINE(TERMINFO),
+AC_NOTE(- skipping check because we are cross compiling; assuming terminfo database is used) AC_DEFINE(TERMINFO))
 AC_CHECKING(ospeed)
 AC_TRY_LINK(extern short ospeed;,ospeed=5;,,AC_DEFINE(NEED_OSPEED))
 
@@ -800,7 +806,8 @@ main()
     else
       AC_NOTE(- can't determine - assume ptys are world accessable)
     fi
-  ]
+  ],
+  AC_NOTE(- skipping check because we are cross compiling; assuming ptys are world accessable)
 )
 rm -f conftest_grp
 fi
@@ -884,7 +891,7 @@ AC_EGREP_CPP(yes,
 #endif
 ], load=1)
 fi
-if test -z "$load" ; then
+if test -z "$load" && test "$cross_compiling" = no ; then
 AC_CHECKING(for kernelfile)
 for core in /unix /vmunix /dynix /hp-ux /xelos /dev/ksyms /kernel/unix /kernel/genunix /unicos /mach /netbsd /386bsd /dgux /bsd /stand/vmunix; do
   if test -f $core || test -c $core; then
@@ -1077,7 +1084,7 @@ main()
 #endif
   exit(0);
 }
-],,AC_DEFINE(SYSVSIGS))
+],,AC_DEFINE(SYSVSIGS),:)
 
 fi
 
@@ -1157,7 +1164,7 @@ main() {
   if (strncmp(buf, "cdedef", 6))
     exit(1);
   exit(0); /* libc version works properly.  */
-}], AC_DEFINE(USEBCOPY))
+}], AC_DEFINE(USEBCOPY),,:)
 
 AC_TRY_RUN([
 #define bcopy(s,d,l) memmove(d,s,l)
@@ -1172,7 +1179,8 @@ main() {
   if (strncmp(buf, "cdedef", 6))
     exit(1);
   exit(0); /* libc version works properly.  */
-}], AC_DEFINE(USEMEMMOVE))
+}], AC_DEFINE(USEMEMMOVE),,
+  AC_NOTE(- skipping check because we are cross compiling; use memmove) AC_DEFINE(USEMEMMOVE))
 
 AC_SYS_LONG_FILE_NAMES
 
-- 
1.8.4.5
+130 −0
Original line number Diff line number Diff line
From: Maarten ter Huurne <maarten@treewalker.org>
Date: Sun, 14 Sep 2014 07:10:59 +0200
Subject: When cross-compiling, skip checks that look in the host file system

Signed-off-by: Maarten ter Huurne <maarten@treewalker.org>
---
 configure.in | 23 +++++++++++++++++++----
 1 file changed, 19 insertions(+), 4 deletions(-)

diff --git a/configure.in b/configure.in
index d53a079..79aa56d 100644
--- a/configure.in
+++ b/configure.in
@@ -84,7 +84,7 @@ AC_ARG_ENABLE(socket-dir,
 dnl
 dnl    ****  special unix variants  ****
 dnl
-if test -n "$ISC"; then
+if test "$cross_compiling" = no && test -n "$ISC" ; then
   AC_DEFINE(ISC) LIBS="$LIBS -linet"
 fi
 
@@ -95,10 +95,11 @@ dnl AC_DEFINE(OSF1)	# this disables MIPS again....
 dnl fi
 dnl fi
 
-if test -f /sysV68 ; then
+if test "$cross_compiling" = no && test -f /sysV68 ; then
 AC_DEFINE(sysV68)
 fi
 
+if test "$cross_compiling" = no ; then
 AC_CHECKING(for MIPS)
 if test -f /lib/libmld.a || test -f /usr/lib/libmld.a || test -f /usr/lib/cmplrs/cc/libmld.a; then
 oldlibs="$LIBS"
@@ -122,6 +123,7 @@ AC_DEFINE(USE_WAIT2) LIBS="$LIBS -lbsd" ; CC="$CC -I/usr/include/bsd"
 ))
 fi
 fi
+fi
 
 
 AC_CHECKING(for Ultrix)
@@ -131,7 +133,7 @@ AC_EGREP_CPP(yes,
 #endif
 ], ULTRIX=1)
 
-if test -f /usr/lib/libpyr.a ; then
+if test "$cross_compiling" = no && test -f /usr/lib/libpyr.a ; then
 oldlibs="$LIBS"
 LIBS="$LIBS -lpyr"
 AC_CHECKING(Pyramid OSX)
@@ -678,17 +680,21 @@ AC_TRY_LINK(extern short ospeed;,ospeed=5;,,AC_DEFINE(NEED_OSPEED))
 dnl
 dnl    ****  PTY specific things  ****
 dnl
+if test "$cross_compiling" = no ; then
 AC_CHECKING(for /dev/ptc)
 if test -r /dev/ptc; then
 AC_DEFINE(HAVE_DEV_PTC)
 fi
+fi
 
+if test "$cross_compiling" = no ; then
 AC_CHECKING(for SVR4 ptys)
 sysvr4ptys=
 if test -c /dev/ptmx ; then
 AC_TRY_LINK([],[ptsname(0);grantpt(0);unlockpt(0);],[AC_DEFINE(HAVE_SVR4_PTYS)
 sysvr4ptys=1])
 fi
+fi
 
 AC_CHECK_FUNCS(getpt)
 
@@ -698,6 +704,7 @@ AC_CHECK_FUNCS(openpty,,
 [AC_CHECK_LIB(util,openpty, [AC_DEFINE(HAVE_OPENPTY)] [LIBS="$LIBS -lutil"])])
 fi
 
+if test "$cross_compiling" = no ; then
 AC_CHECKING(for ptyranges)
 if test -d /dev/ptym ; then
 pdir='/dev/ptym'
@@ -721,6 +728,7 @@ p1=`echo $ptys | tr ' ' '\012' | sed -e 's/^.*\(.\)$/\1/g'  | sort -u | tr -d '\
 AC_DEFINE_UNQUOTED(PTYRANGE0,"$p0")
 AC_DEFINE_UNQUOTED(PTYRANGE1,"$p1")
 fi
+fi
 
 dnl    ****  pty mode/group handling ****
 dnl
@@ -868,14 +876,16 @@ fi
 dnl
 dnl    ****  loadav  ****
 dnl
+if test "$cross_compiling" = no ; then
 AC_CHECKING(for libutil(s))
 test -f /usr/lib/libutils.a && LIBS="$LIBS -lutils"
 test -f /usr/lib/libutil.a && LIBS="$LIBS -lutil"
+fi
 
 AC_CHECKING(getloadavg)
 AC_TRY_LINK(,[getloadavg((double *)0, 0);],
 AC_DEFINE(LOADAV_GETLOADAVG) load=1,
-if test -f /usr/lib/libkvm.a ; then
+if test "$cross_compiling" = no && test -f /usr/lib/libkvm.a ; then
 olibs="$LIBS"
 LIBS="$LIBS -lkvm"
 AC_CHECKING(getloadavg with -lkvm)
@@ -1093,13 +1103,18 @@ dnl    ****  libraries  ****
 dnl
 
 AC_CHECKING(for crypt and sec libraries)
+if test "$cross_compiling" = no ; then
 test -f /lib/libcrypt_d.a || test -f /usr/lib/libcrypt_d.a && LIBS="$LIBS -lcrypt_d"
+fi
 oldlibs="$LIBS"
 LIBS="$LIBS -lcrypt"
 AC_CHECKING(crypt)
 AC_TRY_LINK(,,,LIBS="$oldlibs")
+if test "$cross_compiling" = no ; then
 test -f /lib/libsec.a || test -f /usr/lib/libsec.a && LIBS="$LIBS -lsec"
 test -f /lib/libshadow.a || test -f /usr/lib/libshadow.a && LIBS="$LIBS -lshadow"
+fi
+
 oldlibs="$LIBS"
 LIBS="$LIBS -lsun"
 AC_CHECKING(IRIX sun library)
-- 
1.8.4.5
+52 −0
Original line number Diff line number Diff line
From: Maarten ter Huurne <maarten@treewalker.org>
Date: Sun, 14 Sep 2014 11:16:58 +0200
Subject: Avoid mis-identifying systems as SVR4

My openSUSE 13.1 Linux system was detected as SVR4 because it had
libelf installed. This leads to linking with libelf, even though no
symbols from that library were actually used, and to a workaround for
a buggy getlogin() being enabled.

It is not documented which exact SVR4 system had the bug that the
workaround was added for, so all I could do is make an educated guess
at the #defines its compiler would be likely to set.

Signed-off-by: Maarten ter Huurne <maarten@treewalker.org>
---
 configure.in | 14 ++++++++++++--
 1 file changed, 12 insertions(+), 2 deletions(-)

diff --git a/configure.in b/configure.in
index f78f81f..181b7f9 100644
--- a/configure.in
+++ b/configure.in
@@ -178,14 +178,24 @@ AC_EGREP_CPP(yes,
 #endif
 ], LIBS="$LIBS -lsocket -linet";seqptx=1)
 
+AC_CHECKING(SVR4)
+AC_EGREP_CPP(yes,
+[main () {
+#if defined(SVR4) || defined(__SVR4)
+  yes;
+#endif
+], AC_NOTE(- you have a SVR4 system) AC_DEFINE(SVR4) svr4=1)
+if test -n "$svr4" ; then
 oldlibs="$LIBS"
 LIBS="$LIBS -lelf"
 AC_CHECKING(SVR4)
 AC_TRY_LINK([#include <utmpx.h>
 ],,
-[AC_CHECK_HEADER(dwarf.h, AC_DEFINE(SVR4) AC_DEFINE(BUGGYGETLOGIN),
-[AC_CHECK_HEADER(elf.h, AC_DEFINE(SVR4) AC_DEFINE(BUGGYGETLOGIN))])]
+[AC_CHECK_HEADER(dwarf.h, AC_DEFINE(BUGGYGETLOGIN),
+[AC_CHECK_HEADER(elf.h, AC_DEFINE(BUGGYGETLOGIN))])]
 ,LIBS="$oldlibs")
+fi
+
 AC_CHECK_HEADERS([stropts.h string.h strings.h])
 
 AC_CHECKING(for Solaris 2.x)
-- 
1.8.4.5
Loading