bug-gnulib
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Phase 2 - topic/libposix


From: Bruce Korb
Subject: Phase 2 - topic/libposix
Date: Wed, 17 Nov 2010 13:19:51 -0800
User-agent: Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1.12) Gecko/20100914 SUSE/3.0.8 Thunderbird/3.0.8

Below are two patches.  The first probably ought to be applied
to the main branch and someone should go tell glibc about it.
Personally, I don't want to deal with Mr. Glibc.

The libposix project now installs the following files on my
x86-64 openSuSE 11.3 platform:

$ find * -type f
usr/local/lib/libposix.a
usr/local/lib/libposix.so.0.0.0
usr/local/lib/libposix.la
usr/local/include/libposix/dirent.h
usr/local/include/libposix/version.h
usr/local/include/libposix/langinfo.h
usr/local/include/libposix/netdb.h
usr/local/include/libposix/sys/socket.h
usr/local/include/libposix/sys/ioctl.h
usr/local/include/libposix/sys/select.h
usr/local/include/libposix/sys/wait.h
usr/local/include/libposix/sys/times.h
usr/local/include/libposix/sys/time.h
usr/local/include/libposix/sys/utsname.h
usr/local/include/libposix/sys/stat.h
usr/local/include/libposix/c++defs.h
usr/local/include/libposix/iconv_open-osf.h
usr/local/include/libposix/poll.h
usr/local/include/libposix/arg-nonnull.h
usr/local/include/libposix/string.h
usr/local/include/libposix/inttypes.h
usr/local/include/libposix/iconv_open-solaris.h
usr/local/include/libposix/alloca.h
usr/local/include/libposix/math.h
usr/local/include/libposix/arpa/inet.h
usr/local/include/libposix/warn-on-use.h
usr/local/include/libposix/glob.h
usr/local/include/libposix/strings.h
usr/local/include/libposix/unitypes.h
usr/local/include/libposix/iconv.h
usr/local/include/libposix/wctype.h
usr/local/include/libposix/stdlib.h
usr/local/include/libposix/time.h
usr/local/include/libposix/iconv_open-irix.h
usr/local/include/libposix/signal.h
usr/local/include/libposix/ctype.h
usr/local/include/libposix/spawn.h
usr/local/include/libposix/fcntl.h
usr/local/include/libposix/locale.h
usr/local/include/libposix/iconv_open-aix.h
usr/local/include/libposix/search.h
usr/local/include/libposix/unused-parameter.h
usr/local/include/libposix/termios.h
usr/local/include/libposix/unistd.h
usr/local/include/libposix/wchar.h
usr/local/include/libposix/iconv_open-hpux.h
usr/local/include/libposix/stdio.h
usr/local/libexec/libposix/pt_chown

There is still some work to do.

>From cdbc611a5ef23702ae7478fe099d8b6dde4e817e Mon Sep 17 00:00:00 2001
From: Bruce Korb <address@hidden>
Date: Wed, 17 Nov 2010 12:57:10 -0800
Subject: [PATCH 1/2] Do an early malloc/free under Linux to bypass setrlimit bug

---
 ChangeLog                   |    6 ++++++
 tests/test-dprintf-posix2.c |    2 ++
 tests/test-fprintf-posix3.c |    2 ++
 3 files changed, 10 insertions(+), 0 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index 47d9c85..1a26057 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,11 @@
 2010-11-16  Bruce Korb  <address@hidden>

+       * tests/test-dprintf-posix2.c (main): call malloc & free before
+       setrlimit under Linux.  Avoid setrlimit/malloc interaction bug.
+       * tests/test-fprintf-posix3.c: ditto
+
+2010-11-16  Bruce Korb  <address@hidden>
+
        * libposix/bootstrap: generate libposix module file on the fly.
        * modules/libposix: remove
        * modules/*: Use pkginclude_HEADERS instead of plain "include".
diff --git a/tests/test-dprintf-posix2.c b/tests/test-dprintf-posix2.c
index fd54070..2e1afe6 100644
--- a/tests/test-dprintf-posix2.c
+++ b/tests/test-dprintf-posix2.c
@@ -64,6 +64,8 @@ main (int argc, char *argv[])
 #endif
   /* On Linux systems, malloc() is limited by RLIMIT_AS.  */
 #ifdef RLIMIT_AS
+  free (malloc (0x88));
+
   if (getrlimit (RLIMIT_AS, &limit) < 0)
     return 77;
   if (limit.rlim_max == RLIM_INFINITY || limit.rlim_max > MAX_ALLOC_TOTAL)
diff --git a/tests/test-fprintf-posix3.c b/tests/test-fprintf-posix3.c
index 6c0d5f2..d590a91 100644
--- a/tests/test-fprintf-posix3.c
+++ b/tests/test-fprintf-posix3.c
@@ -63,6 +63,8 @@ main (int argc, char *argv[])
 #endif
   /* On Linux systems, malloc() is limited by RLIMIT_AS.  */
 #ifdef RLIMIT_AS
+  free (malloc (0x88));
+
   if (getrlimit (RLIMIT_AS, &limit) < 0)
     return 77;
   if (limit.rlim_max == RLIM_INFINITY || limit.rlim_max > MAX_ALLOC_TOTAL)
-- 
1.7.1

>From e3a220aadc8abc56c5987a98cd52d8987af91bd1 Mon Sep 17 00:00:00 2001
From: Bruce Korb <address@hidden>
Date: Wed, 17 Nov 2010 13:02:52 -0800
Subject: [PATCH 2/2] add script to make libposix distribution

---
 .gitignore               |    1 +
 ChangeLog                |   11 ++++-
 libposix/.gitignore      |    8 +--
 libposix/bootstrap       |   27 +++++++----
 libposix/configure.ac    |    5 +-
 libposix/lib/Makefile.am |    2 +
 libposix/mk-tarball      |  117 ++++++++++++++++++++++++++++++++++++++++++++++
 7 files changed, 153 insertions(+), 18 deletions(-)
 create mode 100755 libposix/mk-tarball

diff --git a/.gitignore b/.gitignore
index b95fb40..a9a9402 100644
--- a/.gitignore
+++ b/.gitignore
@@ -6,3 +6,4 @@
 allsnippets.tmp
 amsnippet.tmp
 testdir*
+*.diff
diff --git a/ChangeLog b/ChangeLog
index 1a26057..ea219fb 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,4 +1,13 @@
-2010-11-16  Bruce Korb  <address@hidden>
+2010-11-17  Bruce Korb  <address@hidden>
+
+       * libposix/mk-tarball: script to make a libposix distribution
+       tarball.
+       * libposix/bootstrap: cleanup and ensure the mkdir's are invoked
+       only when needed.
+       * libposix/configure.ac (m4_esyscmd): fix git version suffix
+       * libposix/lib/Makefile.am (HEADERS): include version info
+
+2010-11-17  Bruce Korb  <address@hidden>

        * tests/test-dprintf-posix2.c (main): call malloc & free before
        setrlimit under Linux.  Avoid setrlimit/malloc interaction bug.
diff --git a/libposix/.gitignore b/libposix/.gitignore
index 404d178..871206d 100644
--- a/libposix/.gitignore
+++ b/libposix/.gitignore
@@ -39,12 +39,10 @@ ltmain.sh
 /m4
 missing
 stamp-h1
-/tests/*.c
-/tests/*.h
-/tests/*.mk
-/tests/*.sh
-/tests/test-*
 unused-parameter.h
 warn-on-use.h
 /tests
 /tmp
+_b*
+_i*
+/libposix*.tar.*
diff --git a/libposix/bootstrap b/libposix/bootstrap
index 10c37a9..4bce30f 100755
--- a/libposix/bootstrap
+++ b/libposix/bootstrap
@@ -2,16 +2,23 @@

 PATH=..:$PATH

-mkdir tmp
-mkdir tmp/modules
-
-    {   echo alloca
-        posix-modules
-    } | sort -u > tmp/posix-list
-
-    posix_list=$(grep -v '^$' tmp/posix-list)
-
-    cat > tmp/modules/libposix <<- _EOF_
+if test -d tmp
+then
+    if test -d tmp/modules
+    then rm -f tmp/modules/* >/dev/null 2>&1
+    else mkdir tmp/modules
+    fi
+else
+    mkdir tmp tmp/modules
+fi
+
+{   echo alloca
+    posix-modules
+} | sort -u > tmp/posix-list
+
+posix_list=`grep -v '^$' tmp/posix-list`
+
+cat > tmp/modules/libposix <<- _EOF_
        Description:
        Wrap up all the posix modules into an installable libposix.la.

diff --git a/libposix/configure.ac b/libposix/configure.ac
index c68fa48..455b857 100644
--- a/libposix/configure.ac
+++ b/libposix/configure.ac
@@ -1,6 +1,7 @@
 AC_INIT([GNU libposix],
-        m4_esyscmd([./git-version-gen .tarball-version]),
-        address@hidden)
+    m4_esyscmd([./git-version-gen .tarball-version | \
+       sed 's/-dirty/-modified/']),
+    address@hidden)

 AS_BOX([Configuring AC_PACKAGE_TARNAME AC_PACKAGE_VERSION])

diff --git a/libposix/lib/Makefile.am b/libposix/lib/Makefile.am
index 0a31f4e..3a7621b 100644
--- a/libposix/lib/Makefile.am
+++ b/libposix/lib/Makefile.am
@@ -5,6 +5,7 @@ EXTRA_DIST =
 EXTRA_HEADERS =
 nodist_pkginclude_HEADERS =
 nobase_nodist_pkginclude_HEADERS =
+pkginclude_HEADERS = version.h

 CLEANFILES =
 MOSTLYCLEANDIRS =
@@ -14,3 +15,4 @@ MAINTAINERCLEANFILES =
 include gnulib.mk

 libposix_la_LDFLAGS += -version-info $(LTV_CURRENT):$(LTV_REVISION):$(LTV_AGE)
+libposix_la_SOURCES += version.c
diff --git a/libposix/mk-tarball b/libposix/mk-tarball
new file mode 100755
index 0000000..ed724a4
--- /dev/null
+++ b/libposix/mk-tarball
@@ -0,0 +1,117 @@
+#! /bin/sh
+# -*- Mode: Shell-script -*-
+
+# Copyright (C) 2002-2010 Free Software Foundation, Inc.
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+case "$0" in
+*/* ) progdir=`echo "$0" | sed 's@/[^/]*$@@'`
+      cd ${progdir}
+      progdir=`pwd`
+      prognam=`echo "$0" | sed 'address@hidden/@@'`
+      ;;
+
+* )   progdir=`pwd`
+      prognam="$0"
+      ;;
+esac
+
+# kill the patriarch process.  If we are not the patriarch,
+# then exit 1 too.
+#
+func_die()
+{
+    echo "${prognam} failure:  $*" >&2
+    kill -${SIGTERM} ${progpid}
+    exit 1
+}
+
+func_init()
+{
+    progpid=$$
+    glibdir=`cd .. >/dev/null ; pwd`
+    SIGTERM=15
+
+    git --version >/dev/null 2>&1 \
+        || func_die "git is not operational"
+
+    case "$*" in
+    *'--clean'* )
+        git clean -f -x -d .
+        ;;
+    esac
+}
+
+func_mkver()
+{
+    {
+        echo '/*'
+        sed '1,/^$/d;s/^#/ */;/http:\/\/www\.gnu\.org/q' ${prognam}
+        echo ' */'
+
+        gv=`../build-aux/git-version-gen .tarball-version | \
+            sed 's/-dirty/-modified/'`
+        sedcmd='/^2[01][0-9][0-9]-[0-1][0-9]-[0-3][0-9]  /{
+         s/ .*//
+         s/-/./gp
+         q
+       }'
+        dv=`sed -n "${sedcmd}" ${glibdir}/ChangeLog`
+        cat <<-_EOF_
+               #ifndef LIBPOSIX_GIT_VERSION
+               #define LIBPOSIX_GIT_VERSION "$gv"
+               #define LIBPOSIX_VERSION     "$dv"
+
+               extern char const libposix_git_version[];
+               extern char const libposix_version[];
+               #endif  /* LIBPOSIX_GIT_VERSION */
+       _EOF_
+    } > lib/version.h
+
+    {
+        sed -n '1,/^ \*\/$/p' lib/version.h
+
+        cat <<-_EOF_
+               #include "version.h"
+
+               char const libposix_git_version[] = LIBPOSIX_GIT_VERSION;
+               char const libposix_version[]     = LIBPOSIX_VERSION;
+       _EOF_
+
+    } > lib/version.c
+}
+
+func_bootstrap()
+{
+    /bin/sh ./bootstrap \
+        || func_die bootstrap failure
+}
+
+func_mkdistro()
+{
+    mkdir _b || die mkdir _b
+    cd _b
+    ../configure || die configure
+    make || die make
+    make distcheck || die make distcheck
+    mv libposix*.tar.gz .. || die cannot move tarball
+}
+
+func_init ${1+"$@"}
+func_mkver
+func_bootstrap
+func_mkdistro
+
+:
-- 
1.7.1




reply via email to

[Prev in Thread] Current Thread [Next in Thread]