Latest GNU tar
This is the version used in most Linux dists
This commit is contained in:
parent
6933cf9e0f
commit
87fd44a463
116
tar/build.sh
Executable file
116
tar/build.sh
Executable file
@ -0,0 +1,116 @@
|
||||
#!/usr/local/bin/bash
|
||||
#
|
||||
# This is a generic build.sh script
|
||||
# It can be used nearly unmodified with many packages
|
||||
#
|
||||
# The concept of "method" registering and the logic that implements it was shamelessly
|
||||
# stolen from jhlj's Compile.sh script :)
|
||||
#
|
||||
# Check the following 4 variables before running the script
|
||||
topdir=tar
|
||||
version=1.13.25
|
||||
pkgver=2
|
||||
source[0]=$topdir-$version.tar.bz2
|
||||
# If there are no patches, simply comment this
|
||||
patch[0]=tar-1.13.18-manpage.patch
|
||||
patch[1]=tar-1.13.19-absolutenames.patch
|
||||
patch[2]=tar-1.13.19-error.patch
|
||||
patch[3]= #tar-1.13.22-nolibrt.patch
|
||||
patch[4]=tar-1.13.25-argv.patch
|
||||
patch[5]= #tar-1.13.25-autoconf.patch
|
||||
patch[6]=tar-1.13.25-dots.patch
|
||||
patch[7]=tar-1.13.25-sock.patch
|
||||
|
||||
# Source function library
|
||||
. ${BUILDPKG_BASE}/scripts/buildpkg.functions
|
||||
|
||||
# Fill in pkginfo values if necessary
|
||||
# using pkgname,name,pkgcat,pkgvendor & pkgdesc
|
||||
name="GNU tar"
|
||||
pkgcat="application"
|
||||
pkgvendor="http://www.gnu.org"
|
||||
pkgdesc="Creates tar archives"
|
||||
|
||||
# Define script functions and register them
|
||||
METHODS=""
|
||||
reg() {
|
||||
METHODS="$METHODS $1"
|
||||
}
|
||||
|
||||
reg prep
|
||||
prep()
|
||||
{
|
||||
generic_prep
|
||||
}
|
||||
|
||||
reg build
|
||||
build()
|
||||
{
|
||||
generic_build
|
||||
}
|
||||
|
||||
reg install
|
||||
install()
|
||||
{
|
||||
generic_install DESTDIR
|
||||
$RM -f $stagedir$prefix/info/dir
|
||||
INSTALL="/usr/local/bin/install -D"
|
||||
setdir source
|
||||
$INSTALL -m 644 tar.1 $stagedir$prefix/man/man1/tar.1
|
||||
|
||||
}
|
||||
|
||||
reg pack
|
||||
pack()
|
||||
{
|
||||
generic_pack
|
||||
}
|
||||
|
||||
reg distclean
|
||||
distclean()
|
||||
{
|
||||
clean distclean
|
||||
}
|
||||
|
||||
###################################################
|
||||
# No need to look below here
|
||||
###################################################
|
||||
|
||||
reg all
|
||||
all()
|
||||
{
|
||||
for METHOD in $METHODS
|
||||
do
|
||||
case $METHOD in
|
||||
all*|*clean) ;;
|
||||
*) $METHOD
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
}
|
||||
|
||||
reg
|
||||
usage() {
|
||||
echo Usage $0 "{"$(echo $METHODS | tr " " "|")"}"
|
||||
exit 1
|
||||
}
|
||||
|
||||
OK=0
|
||||
for METHOD in $*
|
||||
do
|
||||
METHOD=" $METHOD *"
|
||||
if [ "${METHODS%$METHOD}" == "$METHODS" ] ; then
|
||||
usage
|
||||
fi
|
||||
OK=1
|
||||
done
|
||||
|
||||
if [ $OK = 0 ] ; then
|
||||
usage;
|
||||
fi
|
||||
|
||||
for METHOD in $*
|
||||
do
|
||||
( $METHOD )
|
||||
done
|
339
tar/src/tar-1.13.18-manpage.patch
Normal file
339
tar/src/tar-1.13.18-manpage.patch
Normal file
@ -0,0 +1,339 @@
|
||||
--- tar-1.13.18/tar.1.manpage Mon Oct 30 12:52:03 2000
|
||||
+++ tar-1.13.18/tar.1 Mon Oct 30 12:56:15 2000
|
||||
@@ -0,0 +1,336 @@
|
||||
+.\" @(#)tar.1 1.13.14 2000/10/30 Bero;
|
||||
+.TH TAR 1 "30 October 2000"
|
||||
+.SH NAME
|
||||
+tar \- The GNU version of the tar archiving utility
|
||||
+.SH SYNOPSIS
|
||||
+.B tar
|
||||
+[
|
||||
+.B \-
|
||||
+]
|
||||
+.B A --catenate --concatenate \||\| c --create \||\| d --diff --compare \||\| r --append \||\| t --list \||\| u --update \||\| x -extract --get
|
||||
+[
|
||||
+.B --atime-preserve
|
||||
+]
|
||||
+[
|
||||
+.B -b, --block-size N
|
||||
+]
|
||||
+[
|
||||
+.B -B, --read-full-blocks
|
||||
+]
|
||||
+[
|
||||
+.B -C, --directory DIR
|
||||
+]
|
||||
+[
|
||||
+.B --checkpoint
|
||||
+]
|
||||
+[
|
||||
+.B -f, --file [HOSTNAME:]F
|
||||
+]
|
||||
+[
|
||||
+.B --force-local
|
||||
+]
|
||||
+[
|
||||
+.B -F, --info-script F --new-volume-script F
|
||||
+]
|
||||
+[
|
||||
+.B -G, --incremental
|
||||
+]
|
||||
+[
|
||||
+.B -g, --listed-incremental F
|
||||
+]
|
||||
+[
|
||||
+.B -h, --dereference
|
||||
+]
|
||||
+[
|
||||
+.B -i, --ignore-zeros
|
||||
+]
|
||||
+[
|
||||
+.B -j, -I, --bzip
|
||||
+]
|
||||
+[
|
||||
+.B --ignore-failed-read
|
||||
+]
|
||||
+[
|
||||
+.B -k, --keep-old-files
|
||||
+]
|
||||
+[
|
||||
+.B -K, --starting-file F
|
||||
+]
|
||||
+[
|
||||
+.B -l, --one-file-system
|
||||
+]
|
||||
+[
|
||||
+.B -L, --tape-length N
|
||||
+]
|
||||
+[
|
||||
+.B -m, --modification-time
|
||||
+]
|
||||
+[
|
||||
+.B -M, --multi-volume
|
||||
+]
|
||||
+[
|
||||
+.B -N, --after-date DATE, --newer DATE
|
||||
+]
|
||||
+[
|
||||
+.B -o, --old-archive, --portability
|
||||
+]
|
||||
+[
|
||||
+.B -O, --to-stdout
|
||||
+]
|
||||
+[
|
||||
+.B -p, --same-permissions, --preserve-permissions
|
||||
+]
|
||||
+[
|
||||
+.B -P, --absolute-paths
|
||||
+]
|
||||
+[
|
||||
+.B --preserve
|
||||
+]
|
||||
+[
|
||||
+.B -R, --record-number
|
||||
+]
|
||||
+[
|
||||
+.B --remove-files
|
||||
+]
|
||||
+[
|
||||
+.B -s, --same-order, --preserve-order
|
||||
+]
|
||||
+[
|
||||
+.B --same-owner
|
||||
+]
|
||||
+[
|
||||
+.B -S, --sparse
|
||||
+]
|
||||
+[
|
||||
+.B -T, --files-from=F
|
||||
+]
|
||||
+[
|
||||
+.B --null
|
||||
+]
|
||||
+[
|
||||
+.B --totals
|
||||
+]
|
||||
+[
|
||||
+.B -v, --verbose
|
||||
+]
|
||||
+[
|
||||
+.B -V, --label NAME
|
||||
+]
|
||||
+[
|
||||
+.B --version
|
||||
+]
|
||||
+[
|
||||
+.B -w, --interactive, --confirmation
|
||||
+]
|
||||
+[
|
||||
+.B -W, --verify
|
||||
+]
|
||||
+[
|
||||
+.B --exclude FILE
|
||||
+]
|
||||
+[
|
||||
+.B -X, --exclude-from FILE
|
||||
+]
|
||||
+[
|
||||
+.B -Z, --compress, --uncompress
|
||||
+]
|
||||
+[
|
||||
+.B -z, --gzip, --ungzip
|
||||
+]
|
||||
+[
|
||||
+.B --use-compress-program PROG
|
||||
+]
|
||||
+[
|
||||
+.B --block-compress
|
||||
+]
|
||||
+[
|
||||
+.B -[0-7][lmh]
|
||||
+]
|
||||
+.TP
|
||||
+.I filename1 [ filename2, ... filenameN ]
|
||||
+.TP
|
||||
+.I directory1 [ directory2, ...directoryN ]
|
||||
+.SH DESCRIPTION
|
||||
+.LP
|
||||
+This manual page documents the GNU version of
|
||||
+.B tar
|
||||
+, an archiving program designed to store and extract files from
|
||||
+an archive file known as a
|
||||
+.IR tarfile.
|
||||
+A
|
||||
+.IR tarfile
|
||||
+may be made on a tape drive, however, it is also common
|
||||
+to write a
|
||||
+.IR tarfile
|
||||
+to a normal file.
|
||||
+The first argument to
|
||||
+.B tar
|
||||
+must be one of the options:
|
||||
+.BR Acdrtux ,
|
||||
+followed by any optional functions.
|
||||
+The final arguments to
|
||||
+.B tar
|
||||
+are the names of the files or directories which should be archived. The use
|
||||
+of a directory name always implies that the subdirectories below should be
|
||||
+included in the archive.
|
||||
+.SH "FUNCTION LETTERS"
|
||||
+.TP
|
||||
+.B One of the following options must be used:
|
||||
+.TP
|
||||
+.B -A, --catenate, --concatenate
|
||||
+append tar files to an archive
|
||||
+.TP
|
||||
+.B -c, --create
|
||||
+create a new archive
|
||||
+.TP
|
||||
+.B -d, --diff, --compare
|
||||
+find differences between archive and file system
|
||||
+.TP
|
||||
+.B --delete
|
||||
+delete from the archive (not for use on mag tapes!)
|
||||
+.TP
|
||||
+.B -r, --append
|
||||
+append files to the end of an archive
|
||||
+.TP
|
||||
+.B -t, --list
|
||||
+list the contents of an archive
|
||||
+.TP
|
||||
+.B -u, --update
|
||||
+only append files that are newer than copy in archive
|
||||
+.TP
|
||||
+.B -x, --extract, --get
|
||||
+extract files from an archive
|
||||
+.SH "OTHER OPTIONS"
|
||||
+.TP
|
||||
+.B --atime-preserve
|
||||
+don't change access times on dumped files
|
||||
+.TP
|
||||
+.B -b, --block-size N
|
||||
+block size of Nx512 bytes (default N=20)
|
||||
+.TP
|
||||
+.B -B, --read-full-blocks
|
||||
+reblock as we read (for reading 4.2BSD pipes)
|
||||
+.TP
|
||||
+.B -C, --directory DIR
|
||||
+change to directory DIR
|
||||
+.TP
|
||||
+.B --checkpoint
|
||||
+print directory names while reading the archive
|
||||
+.TP
|
||||
+.B -f, --file [HOSTNAME:]F
|
||||
+use archive file or device F (default /dev/rmt0)
|
||||
+.TP
|
||||
+.B --force-local
|
||||
+archive file is local even if has a colon
|
||||
+.TP
|
||||
+.B -F, --info-script F --new-volume-script F
|
||||
+run script at end of each tape (implies -M)
|
||||
+.TP
|
||||
+.B -G, --incremental
|
||||
+create/list/extract old GNU-format incremental backup
|
||||
+.TP
|
||||
+.B -g, --listed-incremental F
|
||||
+create/list/extract new GNU-format incremental backup
|
||||
+.TP
|
||||
+.B -h, --dereference
|
||||
+don't dump symlinks; dump the files they point to
|
||||
+.TP
|
||||
+.B -i, --ignore-zeros
|
||||
+ignore blocks of zeros in archive (normally mean EOF)
|
||||
+.TP
|
||||
+.B -j, -I, --bzip
|
||||
+filter the archive through bzip2. Note: -I is deprecated and may get a
|
||||
+different meaning in the near future.
|
||||
+.TP
|
||||
+.B --ignore-failed-read
|
||||
+don't exit with non-zero status on unreadable files
|
||||
+.TP
|
||||
+.B -k, --keep-old-files
|
||||
+keep existing files; don't overwrite them from archive
|
||||
+.TP
|
||||
+.B -K, --starting-file F
|
||||
+begin at file F in the archive
|
||||
+.TP
|
||||
+.B -l, --one-file-system
|
||||
+stay in local file system when creating an archive
|
||||
+.TP
|
||||
+.B -L, --tape-length N
|
||||
+change tapes after writing N*1024 bytes
|
||||
+.TP
|
||||
+.B -m, --modification-time
|
||||
+don't extract file modified time
|
||||
+.TP
|
||||
+.B -M, --multi-volume
|
||||
+create/list/extract multi-volume archive
|
||||
+.TP
|
||||
+.B -N, --after-date DATE, --newer DATE
|
||||
+only store files newer than DATE
|
||||
+.TP
|
||||
+.B -o, --old-archive, --portability
|
||||
+write a V7 format archive, rather than ANSI format
|
||||
+.TP
|
||||
+.B -O, --to-stdout
|
||||
+extract files to standard output
|
||||
+.TP
|
||||
+.B -p, --same-permissions, --preserve-permissions
|
||||
+extract all protection information
|
||||
+.TP
|
||||
+.B -P, --absolute-paths
|
||||
+don't strip leading `/'s from file names
|
||||
+.TP
|
||||
+.B --preserve
|
||||
+like -p -s
|
||||
+.TP
|
||||
+.B -R, --record-number
|
||||
+show record number within archive with each message
|
||||
+.TP
|
||||
+.B --remove-files
|
||||
+remove files after adding them to the archive
|
||||
+.TP
|
||||
+.B -s, --same-order, --preserve-order
|
||||
+list of names to extract is sorted to match archive
|
||||
+.TP
|
||||
+.B --same-owner
|
||||
+create extracted files with the same ownership
|
||||
+.TP
|
||||
+.B -S, --sparse
|
||||
+handle sparse files efficiently
|
||||
+.TP
|
||||
+.B -T, --files-from=F
|
||||
+get names to extract or create from file F
|
||||
+.TP
|
||||
+.B --null
|
||||
+-T reads null-terminated names, disable -C
|
||||
+.TP
|
||||
+.B --totals
|
||||
+print total bytes written with --create
|
||||
+.TP
|
||||
+.B -v, --verbose
|
||||
+verbosely list files processed
|
||||
+.TP
|
||||
+.B -V, --label NAME
|
||||
+create archive with volume name NAME
|
||||
+.TP
|
||||
+.B --version
|
||||
+print tar program version number
|
||||
+.TP
|
||||
+.B -w, --interactive, --confirmation
|
||||
+ask for confirmation for every action
|
||||
+.TP
|
||||
+.B -W, --verify
|
||||
+attempt to verify the archive after writing it
|
||||
+.TP
|
||||
+.B --exclude FILE
|
||||
+exclude file FILE
|
||||
+.TP
|
||||
+.B -X, --exclude-from FILE
|
||||
+exclude files listed in FILE
|
||||
+.TP
|
||||
+.B -Z, --compress, --uncompress
|
||||
+filter the archive through compress
|
||||
+.TP
|
||||
+.B -z, --gzip, --ungzip
|
||||
+filter the archive through gzip
|
||||
+.TP
|
||||
+.B --use-compress-program PROG
|
||||
+filter the archive through PROG (which must accept -d)
|
23
tar/src/tar-1.13.19-absolutenames.patch
Normal file
23
tar/src/tar-1.13.19-absolutenames.patch
Normal file
@ -0,0 +1,23 @@
|
||||
--- tar-1.13.19/src/extract.c~ Sat Jan 13 00:59:29 2001
|
||||
+++ tar-1.13.19/src/extract.c Mon Aug 20 08:50:49 2001
|
||||
@@ -932,10 +932,19 @@
|
||||
{
|
||||
struct stat st1, st2;
|
||||
int e;
|
||||
+ size_t skiplinkcrud;
|
||||
+
|
||||
+ if (absolute_names_option)
|
||||
+ skiplinkcrud = 0;
|
||||
+ else {
|
||||
+ skiplinkcrud = FILESYSTEM_PREFIX_LEN (current_link_name);
|
||||
+ while (ISSLASH (current_link_name[skiplinkcrud]))
|
||||
+ skiplinkcrud++;
|
||||
+ }
|
||||
|
||||
/* MSDOS does not implement links. However, djgpp's link() actually
|
||||
copies the file. */
|
||||
- status = link (current_link_name, CURRENT_FILE_NAME);
|
||||
+ status = link (current_link_name + skiplinkcrud, CURRENT_FILE_NAME);
|
||||
|
||||
if (status == 0)
|
||||
break;
|
15
tar/src/tar-1.13.19-error.patch
Normal file
15
tar/src/tar-1.13.19-error.patch
Normal file
@ -0,0 +1,15 @@
|
||||
--- tar-1.13.19/src/incremen.c.sux Thu May 17 14:16:47 2001
|
||||
+++ tar-1.13.19/src/incremen.c Thu May 17 14:17:00 2001
|
||||
@@ -182,8 +182,11 @@
|
||||
struct directory *directory; /* for checking if already already seen */
|
||||
enum children children;
|
||||
|
||||
+ if (! dirp) {
|
||||
- if (! dirp)
|
||||
savedir_error (path);
|
||||
+ errno = 1;
|
||||
+ return NULL;
|
||||
+ }
|
||||
errno = 0;
|
||||
|
||||
name_buffer_size = strlen (path) + NAME_FIELD_SIZE;
|
19
tar/src/tar-1.13.22-nolibrt.patch
Normal file
19
tar/src/tar-1.13.22-nolibrt.patch
Normal file
@ -0,0 +1,19 @@
|
||||
--- tar-1.13.22/configure.ac.rt Thu Sep 13 14:06:03 2001
|
||||
+++ tar-1.13.22/configure.ac Thu Sep 13 14:06:50 2001
|
||||
@@ -166,12 +166,13 @@
|
||||
#
|
||||
# Solaris 2.5.1 needs -lposix4 to get the clock_gettime function.
|
||||
# Solaris 7 prefers the library name -lrt to the obsolescent name -lposix4.
|
||||
+# We don't want that dependency, though. Check for something weird. ;)
|
||||
tar_LDADD=
|
||||
tar_save_LIBS="$LIBS"
|
||||
-AC_SEARCH_LIBS(clock_gettime, [rt posix4])
|
||||
-AC_CHECK_FUNCS(clock_gettime)
|
||||
+AC_SEARCH_LIBS(clock_gettyme, [rt posix4])
|
||||
+AC_CHECK_FUNCS(clock_gettyme)
|
||||
if test " $LIBS" != " $tar_save_LIBS"; then
|
||||
- tar_LDADD="$ac_cv_search_clock_gettime"
|
||||
+ tar_LDADD="$ac_cv_search_clock_gettyme"
|
||||
LIBS="$tar_save_LIBS"
|
||||
fi
|
||||
AC_SUBST(tar_LDADD)
|
22
tar/src/tar-1.13.25-argv.patch
Normal file
22
tar/src/tar-1.13.25-argv.patch
Normal file
@ -0,0 +1,22 @@
|
||||
--- tar-1.13.25/src/tar.c 2001-09-21 02:11:27.000000000 +0200
|
||||
+++ tar-1.13.25/src/tar.c 2002-06-16 18:19:04.000000000 +0200
|
||||
@@ -534,7 +534,7 @@
|
||||
/* Allocate a new argument array, and copy program name in it. */
|
||||
|
||||
new_argc = argc - 1 + strlen (argv[1]);
|
||||
- new_argv = xmalloc (new_argc * sizeof (char *));
|
||||
+ new_argv = xmalloc ((new_argc + 1) * sizeof (char *));
|
||||
in = argv;
|
||||
out = new_argv;
|
||||
*out++ = *in++;
|
||||
@@ -562,6 +562,10 @@
|
||||
while (in < argv + argc)
|
||||
*out++ = *in++;
|
||||
|
||||
+ /* K&R standard requires a NULL termination */
|
||||
+
|
||||
+ *out = NULL;
|
||||
+
|
||||
/* Replace the old option list by the new one. */
|
||||
|
||||
argc = new_argc;
|
11
tar/src/tar-1.13.25-autoconf.patch
Normal file
11
tar/src/tar-1.13.25-autoconf.patch
Normal file
@ -0,0 +1,11 @@
|
||||
--- tar-1.13.25/configure.ac.253 Tue Apr 9 19:21:01 2002
|
||||
+++ tar-1.13.25/configure.ac Tue Apr 9 19:21:22 2002
|
||||
@@ -234,7 +234,7 @@
|
||||
jm_FUNC_MALLOC
|
||||
jm_FUNC_MKTIME
|
||||
jm_FUNC_REALLOC
|
||||
-test "$ac_cv_func_strstr" = yes || LIBOBJS="$LIBOBJS strstr.o"
|
||||
+test "$ac_cv_func_strstr" = yes || AC_LIBOBJ(strstr)
|
||||
|
||||
AC_CACHE_CHECK(for remote shell, tar_cv_path_RSH,
|
||||
[if test -n "$RSH"; then
|
16
tar/src/tar-1.13.25-dots.patch
Normal file
16
tar/src/tar-1.13.25-dots.patch
Normal file
@ -0,0 +1,16 @@
|
||||
--- tar-1.13.25/src/misc.c.orig Mon Aug 27 00:14:26 2001
|
||||
+++ tar-1.13.25/src/misc.c Mon May 27 11:29:31 2002
|
||||
@@ -214,6 +214,13 @@
|
||||
return 0;
|
||||
}
|
||||
while (! ISSLASH (*p));
|
||||
+
|
||||
+ do
|
||||
+ {
|
||||
+ if (! *p++)
|
||||
+ return 0;
|
||||
+ }
|
||||
+ while ( ISSLASH (*p));
|
||||
}
|
||||
}
|
||||
|
36
tar/src/tar-1.13.25-sock.patch
Normal file
36
tar/src/tar-1.13.25-sock.patch
Normal file
@ -0,0 +1,36 @@
|
||||
--- tar-1.13.25/src/create.c.sock Tue Oct 23 15:00:52 2001
|
||||
+++ tar-1.13.25/src/create.c Tue Oct 23 15:02:33 2001
|
||||
@@ -1128,6 +1128,16 @@
|
||||
}
|
||||
else if (is_avoided_name (p))
|
||||
return;
|
||||
+ else if (S_ISSOCK (current_stat.st_mode))
|
||||
+ {
|
||||
+ WARN ((0, 0, _("%s: socket ignored"), quotearg_colon (p)));
|
||||
+ return;
|
||||
+ }
|
||||
+ else if (S_ISDOOR (current_stat.st_mode))
|
||||
+ {
|
||||
+ WARN ((0, 0, _("%s: door ignored"), quotearg_colon (p)));
|
||||
+ return;
|
||||
+ }
|
||||
else
|
||||
{
|
||||
/* Check for multiple links.
|
||||
@@ -1507,16 +1517,6 @@
|
||||
type = BLKTYPE;
|
||||
else if (S_ISFIFO (current_stat.st_mode))
|
||||
type = FIFOTYPE;
|
||||
- else if (S_ISSOCK (current_stat.st_mode))
|
||||
- {
|
||||
- WARN ((0, 0, _("%s: socket ignored"), quotearg_colon (p)));
|
||||
- return;
|
||||
- }
|
||||
- else if (S_ISDOOR (current_stat.st_mode))
|
||||
- {
|
||||
- WARN ((0, 0, _("%s: door ignored"), quotearg_colon (p)));
|
||||
- return;
|
||||
- }
|
||||
else
|
||||
goto unknown;
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user