mirror of
https://git.FreeBSD.org/ports.git
synced 2024-12-04 01:48:54 +00:00
Update star to 1.5.3
Allow build with clang Add patch for FreeBSD NFSv4 ACL support PR: 212274 Submitted by: mm@FreeBSD.org Approved by: maintainer timeout
This commit is contained in:
parent
ea5cf989e7
commit
e83cbd7b9f
Notes:
svn2git
2021-03-31 03:12:20 +00:00
svn path=/head/; revision=422894
@ -2,9 +2,9 @@
|
||||
# $FreeBSD$
|
||||
|
||||
PORTNAME= star
|
||||
DISTVERSION= 1.5.2
|
||||
DISTVERSION= 1.5.3
|
||||
CATEGORIES= archivers
|
||||
MASTER_SITES= http://BSDforge.com/projects/source/srchivers/star/
|
||||
MASTER_SITES= SF/s-tar
|
||||
|
||||
MAINTAINER= portmaster@BSDforge.com
|
||||
COMMENT= Unique standard tape archiver with many enhancements
|
||||
@ -16,7 +16,6 @@ LICENSE_FILES= ${WRKSRC}/CDDL.Schily.txt
|
||||
BUILD_DEPENDS= smake:devel/smake
|
||||
|
||||
USES= gettext iconv tar:bzip2
|
||||
USE_GCC= any
|
||||
|
||||
.if defined(NO_INSTALL_MANPAGES)
|
||||
XMKFLAGS= XMK_FILE=""
|
||||
|
@ -1,2 +1,3 @@
|
||||
SHA256 (star-1.5.2.tar.bz2) = 762645b98af13bb9b0512812814ec8e90635d1400c94eb5911e9774daed2addf
|
||||
SIZE (star-1.5.2.tar.bz2) = 874558
|
||||
TIMESTAMP = 1472598366
|
||||
SHA256 (star-1.5.3.tar.bz2) = 070342833ea83104169bf956aa880bcd088e7af7f5b1f8e3d29853b49b1a4f5b
|
||||
SIZE (star-1.5.3.tar.bz2) = 889881
|
||||
|
25
archivers/star/files/patch-autoconf_xconfig.h.in
Normal file
25
archivers/star/files/patch-autoconf_xconfig.h.in
Normal file
@ -0,0 +1,25 @@
|
||||
--- autoconf/xconfig.h.in.orig 2014-05-15 19:04:57 UTC
|
||||
+++ autoconf/xconfig.h.in
|
||||
@@ -3,7 +3,7 @@
|
||||
* Dynamic autoconf C-include code.
|
||||
* Do not edit, this file has been created automatically.
|
||||
*
|
||||
- * Copyright (c) 1998-2014 J. Schilling
|
||||
+ * Copyright (c) 1998-2016 J. Schilling
|
||||
*
|
||||
* The layout for this file is controlled by "configure".
|
||||
* Switch off cstyle(1) checks for now.
|
||||
@@ -1051,6 +1051,13 @@
|
||||
# define HAVE_NFSV4_ACL 1 /* NFSv4 ACL's present */
|
||||
#endif
|
||||
|
||||
+#if defined(HAVE_ACL_GET_BRAND_NP)
|
||||
+#ifndef HAVE_NFSV4_ACL
|
||||
+# define HAVE_NFSV4_ACL 1 /* NFSv4 ACL's present */
|
||||
+#endif
|
||||
+# define HAVE_FREEBSD_NFSV4_ACL 1 /* FreeBSD NFSv4 ACL implementation */
|
||||
+#endif
|
||||
+
|
||||
/*
|
||||
* HP-UX ACL support.
|
||||
* Note: unfortunately, HP-UX has an (undocumented) acl() function in libc.
|
@ -1,4 +1,4 @@
|
||||
--- star/Makefile.orig 2010-05-13 19:47:27 UTC
|
||||
--- star/Makefile.orig 2013-11-05 22:36:07 UTC
|
||||
+++ star/Makefile
|
||||
@@ -15,7 +15,7 @@ include $(SRCROOT)/$(RULESDIR)/rules.to
|
||||
INSDIR= bin
|
||||
@ -9,7 +9,7 @@
|
||||
CPPOPTS += -D__STAR__
|
||||
CPPOPTS += -DSET_CTIME -DFIFO -DUSE_MMAP -DUSE_REMOTE -DUSE_RCMD_RSH
|
||||
#CPPOPTS += -DSET_CTIME -DFIFO -DUSE_MMAP
|
||||
@@ -52,8 +52,8 @@ LIBS= -ldeflt -lrmt -lfind -lschily $(L
|
||||
@@ -55,8 +55,8 @@ LIBS= -ldeflt -lrmt -lfind -lschily $(L
|
||||
#
|
||||
# Wenn -lfind, dann auch $(LIB_INTL)
|
||||
#
|
||||
|
179
archivers/star/files/patch-star_acl__unix.c
Normal file
179
archivers/star/files/patch-star_acl__unix.c
Normal file
@ -0,0 +1,179 @@
|
||||
--- star/acl_unix.c.orig 2014-03-31 17:44:46 UTC
|
||||
+++ star/acl_unix.c
|
||||
@@ -1,8 +1,8 @@
|
||||
-/* @(#)acl_unix.c 1.49 14/03/31 Copyright 2001-2014 J. Schilling */
|
||||
+/* @(#)acl_unix.c 1.51 16/09/03 Copyright 2001-2014 J. Schilling */
|
||||
#include <schily/mconfig.h>
|
||||
#ifndef lint
|
||||
static UConst char sccsid[] =
|
||||
- "@(#)acl_unix.c 1.49 14/03/31 Copyright 2001-2014 J. Schilling";
|
||||
+ "@(#)acl_unix.c 1.51 16/09/03 Copyright 2001-2014 J. Schilling";
|
||||
#endif
|
||||
/*
|
||||
* ACL get and set routines for unix like operating systems.
|
||||
@@ -11,7 +11,7 @@ static UConst char sccsid[] =
|
||||
*
|
||||
* There are currently two basic flavors of ACLs:
|
||||
*
|
||||
- * Flavor 1: UFS/POSIX draft
|
||||
+ * Flavor 1: UFS/POSIX.1e draft (withrawn in 1997)
|
||||
*
|
||||
* The Solaric UFS ACLs that have been developed between 1990 and 1994.
|
||||
* These ACLs have been made available as extensions to NFSv2 and NFSv3.
|
||||
@@ -27,7 +27,7 @@ static UConst char sccsid[] =
|
||||
* As True64 does not like ACL "mask" entries and this version of the
|
||||
* ACL code does not generate "mask" entries on True64, ACL support for
|
||||
* True64 is currently broken. You cannot read back archives created
|
||||
- * on true64.
|
||||
+ * on True64.
|
||||
*
|
||||
* Flavor 2: NFSv4
|
||||
*
|
||||
@@ -196,6 +196,9 @@ EXPORT void
|
||||
opt_acl()
|
||||
{
|
||||
printf(" acl-POSIX.1e-draft");
|
||||
+#ifdef HAVE_NFSV4_ACL
|
||||
+ printf(" acl-NFSv4");
|
||||
+#endif
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -217,6 +220,15 @@ get_acls(info)
|
||||
if (is_symlink(info))
|
||||
return (TRUE);
|
||||
|
||||
+#ifdef HAVE_FREEBSD_NFSV4_ACL
|
||||
+ if (acl_to_info(info->f_sname, ACL_TYPE_NFS4, &acl_ace_text)) {
|
||||
+ if (*acl_ace_text.ps_path != '\0') {
|
||||
+ info->f_xflags |= XF_ACL_ACE;
|
||||
+ info->f_acl_ace = acl_ace_text.ps_path;
|
||||
+ }
|
||||
+ return (TRUE);
|
||||
+ }
|
||||
+#endif
|
||||
if (!acl_to_info(info->f_sname, ACL_TYPE_ACCESS, &acl_access_text))
|
||||
return (FALSE);
|
||||
if (*acl_access_text.ps_path != '\0') {
|
||||
@@ -263,6 +275,13 @@ acl_to_info(name, type, acltext)
|
||||
if (err == ENOSYS)
|
||||
return (TRUE);
|
||||
#endif
|
||||
+#ifdef HAVE_FREEBSD_NFSV4_ACL
|
||||
+ /*
|
||||
+ * If ACL type is not NFS4 we continue with POSIX.1e ACLs
|
||||
+ */
|
||||
+ if (type == ACL_TYPE_NFS4 && err == EINVAL)
|
||||
+ return (FALSE);
|
||||
+#endif
|
||||
if (!errhidden(E_GETACL, name)) {
|
||||
if (!errwarnonly(E_GETACL, name))
|
||||
xstats.s_getaclerrs++;
|
||||
@@ -273,7 +292,12 @@ acl_to_info(name, type, acltext)
|
||||
return (FALSE);
|
||||
}
|
||||
seterrno(0);
|
||||
- text = acl_to_text(acl, NULL);
|
||||
+#ifdef HAVE_FREEBSD_NFSV4_ACL
|
||||
+ if (type == ACL_TYPE_NFS4)
|
||||
+ text = acl_to_text_np(acl, NULL, ACL_TEXT_APPEND_ID);
|
||||
+ else
|
||||
+#endif
|
||||
+ text = acl_to_text(acl, NULL);
|
||||
acl_free(acl);
|
||||
if (text == NULL) {
|
||||
if (geterrno() == 0)
|
||||
@@ -313,6 +337,22 @@ acl_to_info(name, type, acltext)
|
||||
;
|
||||
}
|
||||
|
||||
+#ifdef HAVE_FREEBSD_NFSV4_ACL
|
||||
+ /* remove space fields */
|
||||
+ if (type == ACL_TYPE_NFS4) {
|
||||
+ c = text;
|
||||
+ while ((c = strchr(c, ' ')) != NULL) {
|
||||
+ char *d = c, *e;
|
||||
+
|
||||
+ while (*d && *d == ' ')
|
||||
+ d++;
|
||||
+ e = c;
|
||||
+ while ((*e++ = *d++) != '\0')
|
||||
+ ;
|
||||
+ }
|
||||
+ }
|
||||
+#endif
|
||||
+
|
||||
/* count fields */
|
||||
for (c = text; *c != '\0'; c++) {
|
||||
if (*c == '\n') {
|
||||
@@ -320,6 +360,14 @@ acl_to_info(name, type, acltext)
|
||||
entries++;
|
||||
}
|
||||
}
|
||||
+#ifdef HAVE_FREEBSD_NFSV4_ACL
|
||||
+ if (type == ACL_TYPE_NFS4) {
|
||||
+ if (strcpy_pspace(PS_EXIT, acltext, text) < 0) {
|
||||
+ acl_free((acl_t)text);
|
||||
+ return (FALSE);
|
||||
+ }
|
||||
+ } else
|
||||
+#endif
|
||||
if ((entries > 3) || /* > 4 on Solaris? */
|
||||
(type == ACL_TYPE_DEFAULT && entries >= 3)) {
|
||||
if ((entries * 56) > acltext->ps_size)
|
||||
@@ -446,6 +494,55 @@ set_acls(info)
|
||||
|
||||
aclps.ps_path = acltext;
|
||||
aclps.ps_size = PATH_MAX;
|
||||
+
|
||||
+#ifdef HAVE_FREEBSD_NFSV4_ACL
|
||||
+ if (info->f_xflags & XF_ACL_ACE) {
|
||||
+ ssize_t len = strlen(info->f_acl_ace) + 2;
|
||||
+
|
||||
+ if (len > aclps.ps_size) {
|
||||
+ aclps.ps_path = NULL;
|
||||
+ aclps.ps_size = 0;
|
||||
+ grow_pspace(PS_EXIT, &aclps, len);
|
||||
+ if (aclps.ps_size <= len) {
|
||||
+ free_pspace(&aclps);
|
||||
+ return;
|
||||
+ }
|
||||
+ }
|
||||
+ acl_check_ids(aclps.ps_path, info->f_acl_ace, TRUE);
|
||||
+
|
||||
+ if ((acl = acl_from_text(aclps.ps_path)) == NULL) {
|
||||
+ if (!errhidden(E_BADACL, info->f_name)) {
|
||||
+ if (!errwarnonly(E_BADACL, info->f_name))
|
||||
+ xstats.s_badacl++;
|
||||
+ errmsg("Cannot convert NFSv4 ACL '%s' to internal format for ' %s'.\n",
|
||||
+ aclps.ps_path, info->f_name);
|
||||
+ (void) errabort(E_BADACL, info->f_name, TRUE);
|
||||
+ }
|
||||
+ } else {
|
||||
+ if (acl_set_file(info->f_name, ACL_TYPE_NFS4,
|
||||
+ acl) < 0) {
|
||||
+ /*
|
||||
+ * XXX What should we do if errno is
|
||||
+ * ENOTSUP/ENOSYS?
|
||||
+ */
|
||||
+ if (!errhidden(E_SETACL, info->f_name)) {
|
||||
+ if (!errwarnonly(E_SETACL,
|
||||
+ info->f_name))
|
||||
+ xstats.s_setacl++;
|
||||
+ errmsg("Cannot set NFSv4 ACL '%s' for '%s'.\n",
|
||||
+ aclps.ps_path, info->f_name);
|
||||
+ (void) errabort(E_SETACL, info->f_name,
|
||||
+ TRUE);
|
||||
+ }
|
||||
+ }
|
||||
+ acl_free(acl);
|
||||
+ }
|
||||
+ if (aclps.ps_path != acltext)
|
||||
+ free_pspace(&aclps);
|
||||
+ return;
|
||||
+ }
|
||||
+#endif /* HAVE_FREEBSD_NFSV4_ACL */
|
||||
+
|
||||
if (info->f_xflags & XF_ACL_ACCESS) {
|
||||
ssize_t len = strlen(info->f_acl_access) + 2;
|
||||
|
@ -16,4 +16,4 @@ Main advantages over other tar implementations:
|
||||
|
||||
Please mail bugs and suggestions to:
|
||||
Author: Joerg Schilling <js@cs.tu-berlin.de>
|
||||
WWW: http://cdrecord.berlios.de/old/private/star.html
|
||||
WWW: https://sourceforge.net/projects/s-tar/
|
||||
|
Loading…
Reference in New Issue
Block a user