1
0
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:
Martin Matuska 2016-09-28 22:36:21 +00:00
parent ea5cf989e7
commit e83cbd7b9f
Notes: svn2git 2021-03-31 03:12:20 +00:00
svn path=/head/; revision=422894
6 changed files with 212 additions and 8 deletions

View File

@ -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=""

View 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

View 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.

View File

@ -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)
#

View 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;

View File

@ -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/