[csw-devel] SF.net SVN: gar:[2866] csw/mgar/pkg/cvsps/trunk
dmichelsen at users.sourceforge.net
dmichelsen at users.sourceforge.net
Tue Jan 20 08:34:03 CET 2009
Revision: 2866
http://gar.svn.sourceforge.net/gar/?rev=2866&view=rev
Author: dmichelsen
Date: 2009-01-20 07:34:03 +0000 (Tue, 20 Jan 2009)
Log Message:
-----------
cvsps: Add depends and install
Modified Paths:
--------------
csw/mgar/pkg/cvsps/trunk/Makefile
csw/mgar/pkg/cvsps/trunk/checksums
csw/mgar/pkg/cvsps/trunk/files/patch-extralibs.diff
Modified: csw/mgar/pkg/cvsps/trunk/Makefile
===================================================================
--- csw/mgar/pkg/cvsps/trunk/Makefile 2009-01-19 22:54:31 UTC (rev 2865)
+++ csw/mgar/pkg/cvsps/trunk/Makefile 2009-01-20 07:34:03 UTC (rev 2866)
@@ -13,6 +13,8 @@
PATCHFILES = patch-extralibs.diff
+REQUIRED_PKGS = CSWzlib
+
# We define upstream file regex so we can be notifed of new upstream software release
UFILES_REGEX = -(\d+(?:\.\d+)*).tar.gz
@@ -22,4 +24,14 @@
BUILD_ARGS = CC="$(CC)" CFLAGS="-I. -DVERSION=\"$(GARVERSION)\" $(CFLAGS)" prefix="$(prefix)"
BUILD_ARGS += _EXTRA_LIBS="-lnsl -lsocket"
+TEST_SCRIPTS =
+
+INSTALL_SCRIPTS = custom
+
include gar/category.mk
+
+install-custom:
+ ginstall -d $(DESTDIR)$(bindir)
+ ginstall -d $(DESTDIR)$(mandir)/man1
+ ginstall -m 755 $(WORKSRC)/cvsps $(DESTDIR)$(bindir)/
+ ginstall -m 644 $(WORKSRC)/cvsps.1 $(DESTDIR)$(mandir)/man1/
Modified: csw/mgar/pkg/cvsps/trunk/checksums
===================================================================
--- csw/mgar/pkg/cvsps/trunk/checksums 2009-01-19 22:54:31 UTC (rev 2865)
+++ csw/mgar/pkg/cvsps/trunk/checksums 2009-01-20 07:34:03 UTC (rev 2866)
@@ -1,3 +1,3 @@
bde2110ed9f5d14de8f8cb04e9d596fe download/cvsps-2.1.tar.gz
cb54db01900320e1bf80da166c60c2f8 download/CSWcvsps.gspec
-d337546e3cf1195cc7b98ed2b5dd06d1 download/patch-extralibs.diff
+fdfe30f050b93e6db82c665d830216e3 download/patch-extralibs.diff
Modified: csw/mgar/pkg/cvsps/trunk/files/patch-extralibs.diff
===================================================================
--- csw/mgar/pkg/cvsps/trunk/files/patch-extralibs.diff 2009-01-19 22:54:31 UTC (rev 2865)
+++ csw/mgar/pkg/cvsps/trunk/files/patch-extralibs.diff 2009-01-20 07:34:03 UTC (rev 2866)
@@ -1,7 +1,16 @@
diff -Naur cvsps-2.1.orig/Makefile cvsps-2.1.patched/Makefile
--- cvsps-2.1.orig/Makefile 2005-05-26 05:39:40.000000000 +0200
-+++ cvsps-2.1.patched/Makefile 2009-01-19 14:40:16.228045093 +0100
-@@ -21,7 +21,7 @@
++++ cvsps-2.1.patched/Makefile 2009-01-19 16:27:48.937444465 +0100
+@@ -16,12 +16,15 @@
+ stats.o\
+ cap.o\
+ cvs_direct.o\
+- list_sort.o
++ list_sort.o\
++ strsep.o\
++ setenv.o\
++ unsetenv.o
+
all: cvsps
cvsps: $(OBJS)
@@ -10,26 +19,493 @@
install:
[ -d $(prefix)/bin ] || mkdir -p $(prefix)/bin
-diff -Naur cvsps-2.1.orig/util.c cvsps-2.1.patched/util.c
---- cvsps-2.1.orig/util.c 2005-05-26 05:39:40.000000000 +0200
-+++ cvsps-2.1.patched/util.c 2009-01-19 14:46:43.782069081 +0100
-@@ -154,16 +154,18 @@
- char * old_tz = getenv("TZ");
- time_t ret;
-
-- setenv("TZ", "UTC", 1);
-+ /* setenv("TZ", "UTC", 1); */
-
- tzset();
-
- ret = mktime(tm);
-
-+ /*
- if (old_tz)
- setenv("TZ", old_tz, 1);
- else
- unsetenv("TZ");
-+ */
-
- tzset();
-
+diff -Naur cvsps-2.1.orig/setenv.c cvsps-2.1.patched/setenv.c
+--- cvsps-2.1.orig/setenv.c 1970-01-01 01:00:00.000000000 +0100
++++ cvsps-2.1.patched/setenv.c 2009-01-19 16:27:26.465469216 +0100
+@@ -0,0 +1,330 @@
++/* Copyright (C) 1992,1995-1999,2000-2003,2005-2008 Free Software Foundation, Inc.
++ This file is part of the GNU C Library.
++
++ 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/>. */
++
++#if !_LIBC
++# include <config.h>
++#endif
++#include <alloca.h>
++
++/* Specification. */
++#include <stdlib.h>
++
++#include <errno.h>
++#ifndef __set_errno
++# define __set_errno(ev) ((errno) = (ev))
++#endif
++
++#include <string.h>
++#if _LIBC || HAVE_UNISTD_H
++# include <unistd.h>
++#endif
++
++#if _LIBC || !HAVE_SETENV
++
++#if !_LIBC
++# include "malloca.h"
++#endif
++
++#if !_LIBC
++# define __environ environ
++#endif
++
++#if _LIBC
++/* This lock protects against simultaneous modifications of `environ'. */
++# include <bits/libc-lock.h>
++__libc_lock_define_initialized (static, envlock)
++# define LOCK __libc_lock_lock (envlock)
++# define UNLOCK __libc_lock_unlock (envlock)
++#else
++# define LOCK
++# define UNLOCK
++#endif
++
++/* In the GNU C library we must keep the namespace clean. */
++#ifdef _LIBC
++# define setenv __setenv
++# define clearenv __clearenv
++# define tfind __tfind
++# define tsearch __tsearch
++#endif
++
++/* In the GNU C library implementation we try to be more clever and
++ allow arbitrarily many changes of the environment given that the used
++ values are from a small set. Outside glibc this will eat up all
++ memory after a while. */
++#if defined _LIBC || (defined HAVE_SEARCH_H && defined HAVE_TSEARCH \
++ && defined __GNUC__)
++# define USE_TSEARCH 1
++# include <search.h>
++typedef int (*compar_fn_t) (const void *, const void *);
++
++/* This is a pointer to the root of the search tree with the known
++ values. */
++static void *known_values;
++
++# define KNOWN_VALUE(Str) \
++ ({ \
++ void *value = tfind (Str, &known_values, (compar_fn_t) strcmp); \
++ value != NULL ? *(char **) value : NULL; \
++ })
++# define STORE_VALUE(Str) \
++ tsearch (Str, &known_values, (compar_fn_t) strcmp)
++
++#else
++# undef USE_TSEARCH
++
++# define KNOWN_VALUE(Str) NULL
++# define STORE_VALUE(Str) do { } while (0)
++
++#endif
++
++
++/* If this variable is not a null pointer we allocated the current
++ environment. */
++static char **last_environ;
++
++
++/* This function is used by `setenv' and `putenv'. The difference between
++ the two functions is that for the former must create a new string which
++ is then placed in the environment, while the argument of `putenv'
++ must be used directly. This is all complicated by the fact that we try
++ to reuse values once generated for a `setenv' call since we can never
++ free the strings. */
++int
++__add_to_environ (const char *name, const char *value, const char *combined,
++ int replace)
++{
++ register char **ep;
++ register size_t size;
++ const size_t namelen = strlen (name);
++ const size_t vallen = value != NULL ? strlen (value) + 1 : 0;
++
++ LOCK;
++
++ /* We have to get the pointer now that we have the lock and not earlier
++ since another thread might have created a new environment. */
++ ep = __environ;
++
++ size = 0;
++ if (ep != NULL)
++ {
++ for (; *ep != NULL; ++ep)
++ if (!strncmp (*ep, name, namelen) && (*ep)[namelen] == '=')
++ break;
++ else
++ ++size;
++ }
++
++ if (ep == NULL || *ep == NULL)
++ {
++ char **new_environ;
++#ifdef USE_TSEARCH
++ char *new_value;
++#endif
++
++ /* We allocated this space; we can extend it. */
++ new_environ =
++ (char **) (last_environ == NULL
++ ? malloc ((size + 2) * sizeof (char *))
++ : realloc (last_environ, (size + 2) * sizeof (char *)));
++ if (new_environ == NULL)
++ {
++ UNLOCK;
++ return -1;
++ }
++
++ /* If the whole entry is given add it. */
++ if (combined != NULL)
++ /* We must not add the string to the search tree since it belongs
++ to the user. */
++ new_environ[size] = (char *) combined;
++ else
++ {
++ /* See whether the value is already known. */
++#ifdef USE_TSEARCH
++# ifdef _LIBC
++ new_value = (char *) alloca (namelen + 1 + vallen);
++ __mempcpy (__mempcpy (__mempcpy (new_value, name, namelen), "=", 1),
++ value, vallen);
++# else
++ new_value = (char *) malloca (namelen + 1 + vallen);
++ if (new_value == NULL)
++ {
++ __set_errno (ENOMEM);
++ UNLOCK;
++ return -1;
++ }
++ memcpy (new_value, name, namelen);
++ new_value[namelen] = '=';
++ memcpy (&new_value[namelen + 1], value, vallen);
++# endif
++
++ new_environ[size] = KNOWN_VALUE (new_value);
++ if (new_environ[size] == NULL)
++#endif
++ {
++ new_environ[size] = (char *) malloc (namelen + 1 + vallen);
++ if (new_environ[size] == NULL)
++ {
++#if defined USE_TSEARCH && !defined _LIBC
++ freea (new_value);
++#endif
++ __set_errno (ENOMEM);
++ UNLOCK;
++ return -1;
++ }
++
++#ifdef USE_TSEARCH
++ memcpy (new_environ[size], new_value, namelen + 1 + vallen);
++#else
++ memcpy (new_environ[size], name, namelen);
++ new_environ[size][namelen] = '=';
++ memcpy (&new_environ[size][namelen + 1], value, vallen);
++#endif
++ /* And save the value now. We cannot do this when we remove
++ the string since then we cannot decide whether it is a
++ user string or not. */
++ STORE_VALUE (new_environ[size]);
++ }
++#if defined USE_TSEARCH && !defined _LIBC
++ freea (new_value);
++#endif
++ }
++
++ if (__environ != last_environ)
++ memcpy ((char *) new_environ, (char *) __environ,
++ size * sizeof (char *));
++
++ new_environ[size + 1] = NULL;
++
++ last_environ = __environ = new_environ;
++ }
++ else if (replace)
++ {
++ char *np;
++
++ /* Use the user string if given. */
++ if (combined != NULL)
++ np = (char *) combined;
++ else
++ {
++#ifdef USE_TSEARCH
++ char *new_value;
++# ifdef _LIBC
++ new_value = alloca (namelen + 1 + vallen);
++ __mempcpy (__mempcpy (__mempcpy (new_value, name, namelen), "=", 1),
++ value, vallen);
++# else
++ new_value = malloca (namelen + 1 + vallen);
++ if (new_value == NULL)
++ {
++ __set_errno (ENOMEM);
++ UNLOCK;
++ return -1;
++ }
++ memcpy (new_value, name, namelen);
++ new_value[namelen] = '=';
++ memcpy (&new_value[namelen + 1], value, vallen);
++# endif
++
++ np = KNOWN_VALUE (new_value);
++ if (np == NULL)
++#endif
++ {
++ np = malloc (namelen + 1 + vallen);
++ if (np == NULL)
++ {
++#if defined USE_TSEARCH && !defined _LIBC
++ freea (new_value);
++#endif
++ __set_errno (ENOMEM);
++ UNLOCK;
++ return -1;
++ }
++
++#ifdef USE_TSEARCH
++ memcpy (np, new_value, namelen + 1 + vallen);
++#else
++ memcpy (np, name, namelen);
++ np[namelen] = '=';
++ memcpy (&np[namelen + 1], value, vallen);
++#endif
++ /* And remember the value. */
++ STORE_VALUE (np);
++ }
++#if defined USE_TSEARCH && !defined _LIBC
++ freea (new_value);
++#endif
++ }
++
++ *ep = np;
++ }
++
++ UNLOCK;
++
++ return 0;
++}
++
++int
++setenv (const char *name, const char *value, int replace)
++{
++ return __add_to_environ (name, value, NULL, replace);
++}
++
++/* The `clearenv' was planned to be added to POSIX.1 but probably
++ never made it. Nevertheless the POSIX.9 standard (POSIX bindings
++ for Fortran 77) requires this function. */
++int
++clearenv (void)
++{
++ LOCK;
++
++ if (__environ == last_environ && __environ != NULL)
++ {
++ /* We allocated this environment so we can free it. */
++ free (__environ);
++ last_environ = NULL;
++ }
++
++ /* Clear the environment pointer removes the whole environment. */
++ __environ = NULL;
++
++ UNLOCK;
++
++ return 0;
++}
++
++#ifdef _LIBC
++static void
++free_mem (void)
++{
++ /* Remove all traces. */
++ clearenv ();
++
++ /* Now remove the search tree. */
++ __tdestroy (known_values, free);
++ known_values = NULL;
++}
++text_set_element (__libc_subfreeres, free_mem);
++
++
++# undef setenv
++# undef clearenv
++weak_alias (__setenv, setenv)
++weak_alias (__clearenv, clearenv)
++#endif
++
++#endif /* _LIBC || !HAVE_SETENV */
+diff -Naur cvsps-2.1.orig/strsep.c cvsps-2.1.patched/strsep.c
+--- cvsps-2.1.orig/strsep.c 1970-01-01 01:00:00.000000000 +0100
++++ cvsps-2.1.patched/strsep.c 2009-01-19 16:12:07.783986518 +0100
+@@ -0,0 +1,58 @@
++/* Copyright (C) 2004, 2007 Free Software Foundation, Inc.
++
++ Written by Yoann Vandoorselaere <yoann at prelude-ids.org>.
++
++ 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 2, 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, write to the Free Software Foundation,
++ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
++
++#ifdef HAVE_CONFIG_H
++# include <config.h>
++#endif
++
++/* Specification. */
++#include <string.h>
++
++char *
++strsep (char **stringp, const char *delim)
++{
++ char *start = *stringp;
++ char *ptr;
++
++ if (start == NULL)
++ return NULL;
++
++ /* Optimize the case of no delimiters. */
++ if (delim[0] == '\0')
++ {
++ *stringp = NULL;
++ return start;
++ }
++
++ /* Optimize the case of one delimiter. */
++ if (delim[1] == '\0')
++ ptr = strchr (start, delim[0]);
++ else
++ /* The general case. */
++ ptr = strpbrk (start, delim);
++ if (ptr == NULL)
++ {
++ *stringp = NULL;
++ return start;
++ }
++
++ *ptr = '\0';
++ *stringp = ptr + 1;
++
++ return start;
++}
+diff -Naur cvsps-2.1.orig/unsetenv.c cvsps-2.1.patched/unsetenv.c
+--- cvsps-2.1.orig/unsetenv.c 1970-01-01 01:00:00.000000000 +0100
++++ cvsps-2.1.patched/unsetenv.c 2009-01-19 16:27:33.208656225 +0100
+@@ -0,0 +1,90 @@
++/* Copyright (C) 1992,1995-1999,2000-2002,2005-2008 Free Software Foundation, Inc.
++ This file is part of the GNU C Library.
++
++ 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/>. */
++
++#include <config.h>
++
++/* Specification. */
++#include <stdlib.h>
++
++#include <errno.h>
++#if !_LIBC
++# define __set_errno(ev) ((errno) = (ev))
++#endif
++
++#include <string.h>
++#include <unistd.h>
++
++#if !_LIBC
++# define __environ environ
++#endif
++
++#if _LIBC
++/* This lock protects against simultaneous modifications of `environ'. */
++# include <bits/libc-lock.h>
++__libc_lock_define_initialized (static, envlock)
++# define LOCK __libc_lock_lock (envlock)
++# define UNLOCK __libc_lock_unlock (envlock)
++#else
++# define LOCK
++# define UNLOCK
++#endif
++
++/* In the GNU C library we must keep the namespace clean. */
++#ifdef _LIBC
++# define unsetenv __unsetenv
++#endif
++
++
++int
++unsetenv (const char *name)
++{
++ size_t len;
++ char **ep;
++
++ if (name == NULL || *name == '\0' || strchr (name, '=') != NULL)
++ {
++ __set_errno (EINVAL);
++ return -1;
++ }
++
++ len = strlen (name);
++
++ LOCK;
++
++ ep = __environ;
++ while (*ep != NULL)
++ if (!strncmp (*ep, name, len) && (*ep)[len] == '=')
++ {
++ /* Found it. Remove this pointer by moving later ones back. */
++ char **dp = ep;
++
++ do
++ dp[0] = dp[1];
++ while (*dp++);
++ /* Continue the loop in case NAME appears again. */
++ }
++ else
++ ++ep;
++
++ UNLOCK;
++
++ return 0;
++}
++
++#ifdef _LIBC
++# undef unsetenv
++weak_alias (__unsetenv, unsetenv)
++#endif
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
More information about the devel
mailing list