Package init

This commit is contained in:
overweight 2019-09-30 10:31:47 -04:00
commit 8661060b01
4 changed files with 281 additions and 0 deletions

View File

@ -0,0 +1,29 @@
From 46baedf88fe22abafa3f2341b2c1bcb4764ce389 Mon Sep 17 00:00:00 2001
From: Troy Dawson <tdawson@redhat.com>
Date: Fri, 21 Jul 2017 14:05:47 -0700
Subject: [PATCH] attr: escape left brace in a regex in test/run
... to fix test-suite failure with perl-5.26.0
Bug: https://bugzilla.redhat.com/1473853
Signed-off-by: Kamil Dudka <kdudka@redhat.com>
---
test/run | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/test/run b/test/run
index 4b1f8d0..07e916c 100755
--- a/test/run
+++ b/test/run
@@ -106,7 +106,7 @@ for (;;) {
if (defined $line) {
# Substitute %VAR and %{VAR} with environment variables.
$line =~ s[%(\w+)][$ENV{$1}]eg;
- $line =~ s[%{(\w+)}][$ENV{$1}]eg;
+ $line =~ s[%\{(\w+)}][$ENV{$1}]eg;
}
if (defined $line) {
if ($line =~ s/^\s*< ?//) {
--
2.13.0

View File

@ -0,0 +1,126 @@
From 14adc898a36948267bfe5c63b399996879e94c98 Mon Sep 17 00:00:00 2001
From: Andreas Gruenbacher <agruenba@redhat.com>
Date: Fri, 17 Aug 2018 14:07:31 +0200
Subject: Switch back to syscall()
Switch back to syscall() for the *xattr system calls. The current
mechanism of forwarding those calls to glibc breaks libraries like
libfakeroot (fakeroot) and libasan (the gcc address sanitizer; gcc
-fsanitize=address).
Those libraries provide wrappers for functions defined in other shared
libraries, usually glibc, do their own processing, and forward calls to
the original symbols looke dup via dlsym(RTLD_NEXT, "symbol_name"). In
our case, dlsym returns the libattr_*xattr wrappers. However, when our
wrappers try calling glibc, they end up calling the libfakeroot /
libasan wrappers instead because those override the original symbols =>
recursion.
The libattr_*xattr wrappers will only be used when symbols are looked up
at runtime (dlopen / dlsym). Programs linking against libattr will
directly use the glibc provided symbols. Therefore, the slightly worse
performance of syscall() won't affect any of the "normal" users of
libattr.
[nicolas.cavallari: with uclibc-ng, the recursion always happen]
Signed-off-by: Nicolas Cavallari <nicolas.cavallari@green-communications.fr>
---
libattr/syscalls.c | 26 ++++++++++++++------------
1 file changed, 14 insertions(+), 12 deletions(-)
diff --git a/libattr/syscalls.c b/libattr/syscalls.c
index 3013aa0..721ad7f 100644
--- a/libattr/syscalls.c
+++ b/libattr/syscalls.c
@@ -22,6 +22,8 @@
#include "config.h"
+#include <unistd.h>
+#include <sys/syscall.h>
#include <sys/xattr.h>
#ifdef HAVE_VISIBILITY_ATTRIBUTE
@@ -31,67 +33,67 @@
int libattr_setxattr(const char *path, const char *name,
void *value, size_t size, int flags)
{
- return setxattr(path, name, value, size, flags);
+ return syscall(__NR_setxattr, path, name, value, size, flags);
}
int libattr_lsetxattr(const char *path, const char *name,
void *value, size_t size, int flags)
{
- return lsetxattr(path, name, value, size, flags);
+ return syscall(__NR_lsetxattr, path, name, value, size, flags);
}
int libattr_fsetxattr(int filedes, const char *name,
void *value, size_t size, int flags)
{
- return fsetxattr(filedes, name, value, size, flags);
+ return syscall(__NR_fsetxattr, filedes, name, value, size, flags);
}
ssize_t libattr_getxattr(const char *path, const char *name,
void *value, size_t size)
{
- return getxattr(path, name, value, size);
+ return syscall(__NR_getxattr, path, name, value, size);
}
ssize_t libattr_lgetxattr(const char *path, const char *name,
void *value, size_t size)
{
- return lgetxattr(path, name, value, size);
+ return syscall(__NR_lgetxattr, path, name, value, size);
}
ssize_t libattr_fgetxattr(int filedes, const char *name,
void *value, size_t size)
{
- return fgetxattr(filedes, name, value, size);
+ return syscall(__NR_fgetxattr, filedes, name, value, size);
}
ssize_t libattr_listxattr(const char *path, char *list, size_t size)
{
- return listxattr(path, list, size);
+ return syscall(__NR_listxattr, path, list, size);
}
ssize_t libattr_llistxattr(const char *path, char *list, size_t size)
{
- return llistxattr(path, list, size);
+ return syscall(__NR_llistxattr, path, list, size);
}
ssize_t libattr_flistxattr(int filedes, char *list, size_t size)
{
- return flistxattr(filedes, list, size);
+ return syscall(__NR_flistxattr, filedes, list, size);
}
int libattr_removexattr(const char *path, const char *name)
{
- return removexattr(path, name);
+ return syscall(__NR_removexattr, path, name);
}
int libattr_lremovexattr(const char *path, const char *name)
{
- return lremovexattr(path, name);
+ return syscall(__NR_lremovexattr, path, name);
}
int libattr_fremovexattr(int filedes, const char *name)
{
- return fremovexattr(filedes, name);
+ return syscall(__NR_fremovexattr, filedes, name);
}
#ifdef HAVE_VISIBILITY_ATTRIBUTE
--
cgit v1.0-41-gc330

BIN
attr-2.4.48.tar.gz Normal file

Binary file not shown.

126
attr.spec Normal file
View File

@ -0,0 +1,126 @@
%{!?_licensedir:%global license %%doc}
Name: attr
Version: 2.4.48
Release: 5
Summary: Commands for Manipulating Filesystem Extended Attributes
License: GPLv2+ AND LGPLv2+
URL: https://savannah.nongnu.org/projects/attr
Source0: https://download-mirror.savannah.gnu.org/releases/attr/attr-%{version}.tar.gz
# fix test-suite failure with perl-5.26.0 (#1473853)
Patch0000: 0000-attr-2.4.48-test-suite-perl.patch
Patch6000: 6000-Switch-back-to-syscall.patch
BuildRequires: gettext, libtool, chrpath, gcc, git
Provides: libattr
Obsoletes: libattr
Conflicts: xfsdump < 3.1.8
Conflicts: filesystem < 3
%description
A set of tools for manipulating extended attributes on filesystem
objects, in particular getfattr(1) and setfattr(1).
An attr(1) command is also provided which is largely compatible
with the SGI IRIX tool of the same name.
%package -n libattr-devel
License: LGPLv2+
Summary: Header files for libattr
Obsoletes: libattr
Requires: glibc-headers
%description -n libattr-devel
This package contains header files and documentation needed to
develop programs which make use of extended attributes.
For Linux programs, the documented system call API is the
recommended interface, but an SGI IRIX compatibility interface
is also provided.
%package help
Summary: Including man files for attr
Requires: man
%description help
This contains man files for the using of attr
%prep
%autosetup -Sgit -n %{name}-%{version}
%build
%configure --disable-silent-rules
make %{?_smp_mflags}
%install
%make_install
# remove rpath
chrpath -d $RPM_BUILD_ROOT%{_bindir}/attr
chrpath -d $RPM_BUILD_ROOT%{_bindir}/getfattr
chrpath -d $RPM_BUILD_ROOT%{_bindir}/setfattr
# handle docs on our own
rm -rf $RPM_BUILD_ROOT%{_docdir}/%{name}*
# temporarily provide attr/xattr.h symlink until users are migrated (#1601482)
ln -fs ../sys/xattr.h $RPM_BUILD_ROOT%{_includedir}/attr/xattr.h
%find_lang %{name}
%check
make %{?_smp_mflags} check
%post -n %{name} -p /sbin/ldconfig
%postun -n %{name} -p /sbin/ldconfig
%files -f %{name}.lang
%doc doc/CHANGES
%license doc/COPYING*
%{_bindir}/*
%{_libdir}/libattr.so.*
%config(noreplace) %{_sysconfdir}/xattr.conf
%files -n libattr-devel
%{_libdir}/libattr.so
%{_libdir}/pkgconfig/*.pc
%{_libdir}/libattr.a
%{_libdir}/libattr.la
%{_includedir}/attr
%files help
%{_mandir}/man1/*
%{_mandir}/man3/*
%changelog
* Fri Aug 30 2019 zoujing<zoujing13@huawei.com> - 2.4.48-5
- Type:enhancemnet
- ID:NA
- SUG:restart
- DESCi:openEuler Debranding
* Tue Aug 20 2019 zoujing<zoujing13@huawei.com> - 2.4.48-4
- Type:enhancemnet
- ID:NA
- SUG:NA
- DESCi:openEuler Debranding
* Tue Aug 20 2019 luoshijie<luoshijie1@huawei.com> - 2.4.48-2.3
- Type:bugfix
- ID:NA
- SUG:restart
- DESC:rename patch name
* Wed Jun 12 2019 gulining<gulining1@huawei.com> - 2.4.48-2.2
- Type:bugfix
- ID:NA
- SUG:restart
- DESC:remove rpath
* Wed Apr 24 2019 tianhang<tianhang1@huawei.com>- 2.4.48-2.1
- Type:bugfix
- ID:NA
- SUG:restart
- DESC:Switch back to syscall
* Mon Apr 15 2019 Buildteam <buildteam@openeuler.org> - 2.4.48-2
- Package Initialization