diff --git a/.gitignore b/.gitignore index 88103e0..67bf0f5 100644 --- a/.gitignore +++ b/.gitignore @@ -9,3 +9,14 @@ xfsdump-3.0.4.tar.gz /xfsdump-3.1.6.tar.gz /xfsdump-3.1.8.tar.xz /xfsdump-3.1.9.tar.xz +/xfsdump-3.1.10.tar.sign +/xfsdump-3.1.10.tar.xz +/xfsdump-3.1.11-1.fc38.src.rpm +/xfsdump-3.1.11.tar.sign +/xfsdump-3.1.11.tar.xz +/xfsdump-3.1.12.tar.sign +/xfsdump-3.1.12.tar.xz +/xfsdump-3.2.0.tar.xz +/xfsdump-3.2.0.tar.sign +/xfsdump-3.3.0.tar.sign +/xfsdump-3.3.0.tar.xz diff --git a/46A7EA18AC33E108.asc b/46A7EA18AC33E108.asc new file mode 100644 index 0000000..71a5fc7 --- /dev/null +++ b/46A7EA18AC33E108.asc @@ -0,0 +1,43 @@ +pub ed25519 2024-07-30 [SC] + AE1B2A9562721A6FC4307C1F46A7EA18AC33E108 +uid Andrey Albershteyn (kernel.org) +sub cv25519 2024-07-30 [E] + 6970FDF6D1E4238DD1F646DB321F8D8C374A9F36 + +-----BEGIN PGP PUBLIC KEY BLOCK----- + +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 +1OmvS52Zk7eABR0apAi2szMSpYNJmmFITK8sAg== +=lNIZ +-----END PGP PUBLIC KEY BLOCK----- diff --git a/sources b/sources index 908cb57..0464a06 100644 --- a/sources +++ b/sources @@ -1 +1,2 @@ -SHA512 (xfsdump-3.1.9.tar.xz) = e8f9811d16fc06ab49fe2c109de0546c989575eca6e68b579c6d219a745f935952020069f58b357c5c87b944c5097ca2894466d328d09f06beb8a55880142351 +SHA512 (xfsdump-3.3.0.tar.sign) = 5d02d01af294e8cb466ae5bb1e5c81b99646d109de3bef6a1d1406066e13b4f7b6394fa0aeeadaaeea477221fa9271bc891a98911fe3719af260491f54a346a4 +SHA512 (xfsdump-3.3.0.tar.xz) = d20119ea15317422763679ce41b6112ef7edfe22637551cdbd419bed5c9c713664aed30317d491b23f3a95f792e1fa4ddd642339ad3cd1c3a6da92bc9b1ff71b diff --git a/xfsdump-ancient-getdents-code.patch b/xfsdump-ancient-getdents-code.patch deleted file mode 100644 index cdbd7bc..0000000 --- a/xfsdump-ancient-getdents-code.patch +++ /dev/null @@ -1,284 +0,0 @@ -commit b1d6979f1fae82acc79d27cf0add4d55da6d83cc -Author: Kyle McMartin -Date: Tue Apr 8 10:35:34 2014 +1000 - - remove ancient sys_getdents code paths - - Everything since 2.4.1 has supported getdents64... so let's remove all - the legacy code paths to handle it and just rely on getdents64 existing - everywhere. Also re-indent the function to not look entirely awful. - - Signed-off-by: Kyle McMartin - Reviewed-by: Christoph Hellwig - Signed-off-by: Dave Chinner - -diff --git a/common/getdents.c b/common/getdents.c -index 49d0d03..957bb5a 100644 ---- a/common/getdents.c -+++ b/common/getdents.c -@@ -35,47 +35,13 @@ - - #include - --/* For Linux we need a special version of this file since the -- definition of `struct dirent' is not the same for the kernel and -- the libc. There is one additional field which might be introduced -- in the kernel structure in the future. -- -- Here is the kernel definition of `struct dirent' as of 2.1.20: */ -- --struct kernel_dirent -- { -- long int d_ino; -- __kernel_off_t d_off; -- unsigned short int d_reclen; -- char d_name[256]; -- }; -- --struct kernel_dirent64 -- { -- uint64_t d_ino; -- int64_t d_off; -- unsigned short int d_reclen; -- unsigned char d_type; -- char d_name[256]; -- }; -- --#define DIRENT_SET_DP_INO(dp, value) (dp)->d_ino = (value) -- --#define __set_errno(e) (errno = (e)) -- --int __have_no_getdents64; -- --#ifdef __NR_getdents64 --# define __SYS_GETDENTS64(fd, buf, len) (syscall(SYS_getdents64, fd, buf, len)) --#else --# define __SYS_GETDENTS64(fd, buf, len) ({ __set_errno(ENOSYS); -1; }) --#endif -- --#ifdef __NR_getdents --# define __SYS_GETDENTS(fd, buf, len) (syscall(SYS_getdents, fd, buf, len)) --#else --# define __SYS_GETDENTS(fd, buf, len) ({ __set_errno(ENOSYS); -1; }) --#endif -+struct kernel_dirent64 { -+ uint64_t d_ino; -+ int64_t d_off; -+ unsigned short int d_reclen; -+ unsigned char d_type; -+ char d_name[256]; -+}; - - /* The problem here is that we cannot simply read the next NBYTES - bytes. We need to take the additional field into account. We use -@@ -85,148 +51,74 @@ int __have_no_getdents64; - reasonable number of bytes to read. If we should be wrong, we can - reset the file descriptor. In practice the kernel is limiting the - amount of data returned much more then the reduced buffer size. */ --int --getdents_wrap (int fd, char *buf, size_t nbytes) -+int getdents_wrap(int fd, char *buf, size_t nbytes) - { -- struct dirent *dp; -- off64_t last_offset = -1; -- ssize_t retval; -- -- if (!__have_no_getdents64) -- { -- int saved_errno = errno; -- char *kbuf = buf; -- size_t kbytes = nbytes; -- if (offsetof (struct dirent, d_name) -- < offsetof (struct kernel_dirent64, d_name) -- && nbytes <= sizeof (struct dirent)) -- { -- kbytes = nbytes + offsetof (struct kernel_dirent64, d_name) -- - offsetof (struct dirent, d_name); -- kbuf = alloca(kbytes); -+ struct dirent *dp; -+ struct kernel_dirent64 *kdp; -+ off64_t last_offset = -1; -+ ssize_t retval; -+ char *kbuf = buf; -+ size_t kbytes = nbytes; -+ const size_t size_diff = (offsetof(struct kernel_dirent64, d_name) -+ - offsetof(struct dirent, d_name)); -+ -+ if (offsetof(struct dirent, d_name) -+ < offsetof(struct kernel_dirent64, d_name) -+ && nbytes <= sizeof(struct dirent)) { -+ kbytes = nbytes + size_diff; -+ kbuf = alloca(kbytes); - } -- retval = __SYS_GETDENTS64(fd, kbuf, kbytes); -- if (retval != -1) -- { -- struct kernel_dirent64 *kdp; -- const size_t size_diff = (offsetof (struct kernel_dirent64, d_name) -- - offsetof (struct dirent, d_name)); -- -- /* If the structure returned by the kernel is identical to what we -- need, don't do any conversions. */ -- if (offsetof (struct dirent, d_name) -- == offsetof (struct kernel_dirent64, d_name) -- && sizeof (dp->d_ino) == sizeof (kdp->d_ino) -- && sizeof (dp->d_off) == sizeof (kdp->d_off)) -- return retval; -- -- dp = (struct dirent *)buf; -- kdp = (struct kernel_dirent64 *) kbuf; -- while ((char *) kdp < kbuf + retval) -- { -- const size_t alignment = __alignof__ (struct dirent); -- /* Since kdp->d_reclen is already aligned for the kernel -- structure this may compute a value that is bigger -- than necessary. */ -- size_t old_reclen = kdp->d_reclen; -- size_t new_reclen = ((old_reclen - size_diff + alignment - 1) -- & ~(alignment - 1)); -- uint64_t d_ino = kdp->d_ino; -- int64_t d_off = kdp->d_off; -- unsigned char d_type = kdp->d_type; - -- DIRENT_SET_DP_INO (dp, d_ino); -- dp->d_off = d_off; -- if ((sizeof (dp->d_ino) != sizeof (kdp->d_ino) -- && dp->d_ino != d_ino) -- || (sizeof (dp->d_off) != sizeof (kdp->d_off) -- && dp->d_off != d_off)) -- { -- /* Overflow. If there was at least one entry -- before this one, return them without error, -- otherwise signal overflow. */ -- if (last_offset != -1) -- { -- lseek64 (fd, last_offset, SEEK_SET); -- return (char *) dp - buf; -- } -- __set_errno (EOVERFLOW); -- return -1; -+ retval = syscall(SYS_getdents64, fd, kbuf, kbytes); -+ if (retval != -1) -+ return retval; -+ -+ /* If the structure returned by the kernel is identical to what we -+ need, don't do any conversions. */ -+ if (offsetof(struct dirent, d_name) -+ == offsetof(struct kernel_dirent64, d_name) -+ && sizeof(dp->d_ino) == sizeof(kdp->d_ino) -+ && sizeof(dp->d_off) == sizeof(kdp->d_off)) -+ return retval; -+ -+ dp = (struct dirent *)buf; -+ kdp = (struct kernel_dirent64 *)kbuf; -+ while ((char *)kdp < kbuf + retval) { -+ const size_t alignment = __alignof__(struct dirent); -+ /* Since kdp->d_reclen is already aligned for the kernel -+ structure this may compute a value that is bigger -+ than necessary. */ -+ size_t old_reclen = kdp->d_reclen; -+ size_t new_reclen = ((old_reclen - size_diff + alignment - 1) -+ & ~(alignment - 1)); -+ uint64_t d_ino = kdp->d_ino; -+ int64_t d_off = kdp->d_off; -+ unsigned char d_type = kdp->d_type; -+ -+ dp->d_ino = d_ino; -+ dp->d_off = d_off; -+ if ((sizeof(dp->d_ino) != sizeof(kdp->d_ino)) -+ || (sizeof(dp->d_off) != sizeof(kdp->d_off))) { -+ /* Overflow. If there was at least one entry -+ before this one, return them without error, -+ otherwise signal overflow. */ -+ if (last_offset != -1) { -+ lseek64(fd, last_offset, SEEK_SET); -+ return (char *)dp - buf; -+ } -+ errno = EOVERFLOW; -+ return -1; - } - -- last_offset = d_off; -- dp->d_reclen = new_reclen; -- dp->d_type = d_type; -- memmove (dp->d_name, kdp->d_name, -- old_reclen - offsetof (struct kernel_dirent64, d_name)); -+ last_offset = d_off; -+ dp->d_reclen = new_reclen; -+ dp->d_type = d_type; -+ memmove(dp->d_name, kdp->d_name, -+ old_reclen - offsetof(struct kernel_dirent64, d_name)); - -- dp = (struct dirent *) ((char *) dp + new_reclen); -- kdp = (struct kernel_dirent64 *) ((char *) kdp + old_reclen); -- } -- -- return (char *) dp - buf; -+ dp = (struct dirent *)((char *)dp + new_reclen); -+ kdp = (struct kernel_dirent64 *)((char *)kdp + old_reclen); - } - -- __set_errno (saved_errno); -- __have_no_getdents64 = 1; -- } -- -- /* fallback to getdents */ -- { -- size_t red_nbytes; -- struct kernel_dirent *skdp, *kdp; -- const size_t size_diff = (offsetof (struct dirent, d_name) -- - offsetof (struct kernel_dirent, d_name)); -- -- red_nbytes = MIN (nbytes -- - ((nbytes / (offsetof (struct dirent, d_name) + 14)) -- * size_diff), -- nbytes - size_diff); -- -- dp = (struct dirent *) buf; -- skdp = kdp = alloca (red_nbytes); -- -- retval = __SYS_GETDENTS(fd, kdp, red_nbytes); -- if (retval == -1) -- return -1; -- -- while ((char *) kdp < (char *) skdp + retval) -- { -- const size_t alignment = __alignof__ (struct dirent); -- /* Since kdp->d_reclen is already aligned for the kernel structure -- this may compute a value that is bigger than necessary. */ -- size_t new_reclen = ((kdp->d_reclen + size_diff + alignment - 1) -- & ~(alignment - 1)); -- if ((char *) dp + new_reclen > buf + nbytes) -- { -- /* Our heuristic failed. We read too many entries. Reset -- the stream. */ -- assert (last_offset != -1); -- lseek64 (fd, last_offset, SEEK_SET); -- -- if ((char *) dp == buf) -- { -- /* The buffer the user passed in is too small to hold even -- one entry. */ -- __set_errno (EINVAL); -- return -1; -- } -- -- break; -- } -- -- last_offset = kdp->d_off; -- DIRENT_SET_DP_INO(dp, kdp->d_ino); -- dp->d_off = kdp->d_off; -- dp->d_reclen = new_reclen; -- dp->d_type = DT_UNKNOWN; -- memcpy (dp->d_name, kdp->d_name, -- kdp->d_reclen - offsetof (struct kernel_dirent, d_name)); -- -- dp = (struct dirent *) ((char *) dp + new_reclen); -- kdp = (struct kernel_dirent *) (((char *) kdp) + kdp->d_reclen); -- } -- } -- -- return (char *) dp - buf; -+ return (char *)dp - buf; - } diff --git a/xfsdump-getdents-ifdef-hell.patch b/xfsdump-getdents-ifdef-hell.patch deleted file mode 100644 index b6fe794..0000000 --- a/xfsdump-getdents-ifdef-hell.patch +++ /dev/null @@ -1,214 +0,0 @@ -commit 9ed517b63df35876681e8883388fbf154afda0c1 -Author: Kyle McMartin -Date: Tue Apr 8 10:33:57 2014 +1000 - - xfsdump: getdents.c: clean up ifdef-hell around sys_getdents - - Remove the ifdef-hell imported from glibc around getdents64. Everything - since 2.4.1 supports things properly and this seems like a sensible - clean up, so lets just assume it exists and handle it by falling back - if not. - - Additionally, if the old getdents syscall doesn't exist, just stub out - the actual syscall and return ENOSYS. - - Signed-off-by: Kyle McMartin - Reviewed-by: Christoph Hellwig - Signed-off-by: Dave Chinner - -diff --git a/common/getdents.c b/common/getdents.c -index e9ba25a..49d0d03 100644 ---- a/common/getdents.c -+++ b/common/getdents.c -@@ -35,44 +35,6 @@ - - #include - --/* Copied from kernel-features.h for __ASSUME_GETDENTS64_SYSCALL */ --#ifndef __LINUX_KERNEL_VERSION --/* We assume the worst; all kernels should be supported. */ --# define __LINUX_KERNEL_VERSION 0 --#endif --/* The getdents64 syscall was introduced in 2.4.0-test7. We test for -- 2.4.1 for the earliest version we know the syscall is available. */ --#if __LINUX_KERNEL_VERSION >= 132097 --# define __ASSUME_GETDENTS64_SYSCALL 1 --#endif --/* There are an infinite number of PA-RISC kernel versions numbered -- 2.4.0. But they've not really been released as such. We require -- and expect the final version here. */ --#ifdef __hppa__ --# define __ASSUME_GETDENTS64_SYSCALL 1 --#endif -- --#ifndef __set_errno --#define __set_errno(e) (errno = (e)) --#endif -- -- --#ifdef __NR_getdents64 --# ifndef __ASSUME_GETDENTS64_SYSCALL --# ifndef __GETDENTS --/* The variable is shared between all *getdents* calls. */ --int __have_no_getdents64; --# else --extern int __have_no_getdents64; --# endif --# endif --/* Earlier versions of glibc don't define SYS_getdents64 at all */ --# ifndef SYS_getdents64 --# define SYS_getdents64 __NR_getdents64 --# endif --#endif -- -- - /* For Linux we need a special version of this file since the - definition of `struct dirent' is not the same for the kernel and - the libc. There is one additional field which might be introduced -@@ -97,11 +59,22 @@ struct kernel_dirent64 - char d_name[256]; - }; - --#ifndef DIRENT_TYPE --# define DIRENT_TYPE struct dirent -+#define DIRENT_SET_DP_INO(dp, value) (dp)->d_ino = (value) -+ -+#define __set_errno(e) (errno = (e)) -+ -+int __have_no_getdents64; -+ -+#ifdef __NR_getdents64 -+# define __SYS_GETDENTS64(fd, buf, len) (syscall(SYS_getdents64, fd, buf, len)) -+#else -+# define __SYS_GETDENTS64(fd, buf, len) ({ __set_errno(ENOSYS); -1; }) - #endif --#ifndef DIRENT_SET_DP_INO --# define DIRENT_SET_DP_INO(dp, value) (dp)->d_ino = (value) -+ -+#ifdef __NR_getdents -+# define __SYS_GETDENTS(fd, buf, len) (syscall(SYS_getdents, fd, buf, len)) -+#else -+# define __SYS_GETDENTS(fd, buf, len) ({ __set_errno(ENOSYS); -1; }) - #endif - - /* The problem here is that we cannot simply read the next NBYTES -@@ -115,50 +88,43 @@ struct kernel_dirent64 - int - getdents_wrap (int fd, char *buf, size_t nbytes) - { -- DIRENT_TYPE *dp; -+ struct dirent *dp; - off64_t last_offset = -1; - ssize_t retval; - --#ifdef __NR_getdents64 --# ifndef __ASSUME_GETDENTS64_SYSCALL - if (!__have_no_getdents64) --# endif - { --# ifndef __ASSUME_GETDENTS64_SYSCALL - int saved_errno = errno; --# endif - char *kbuf = buf; - size_t kbytes = nbytes; -- if (offsetof (DIRENT_TYPE, d_name) -+ if (offsetof (struct dirent, d_name) - < offsetof (struct kernel_dirent64, d_name) -- && nbytes <= sizeof (DIRENT_TYPE)) -+ && nbytes <= sizeof (struct dirent)) - { - kbytes = nbytes + offsetof (struct kernel_dirent64, d_name) -- - offsetof (DIRENT_TYPE, d_name); -+ - offsetof (struct dirent, d_name); - kbuf = alloca(kbytes); - } -- retval = syscall(SYS_getdents64, fd, kbuf, kbytes); --# ifndef __ASSUME_GETDENTS64_SYSCALL -- if (retval != -1 && errno != -EINVAL) --# endif -+ retval = __SYS_GETDENTS64(fd, kbuf, kbytes); -+ if (retval != -1) - { - struct kernel_dirent64 *kdp; - const size_t size_diff = (offsetof (struct kernel_dirent64, d_name) -- - offsetof (DIRENT_TYPE, d_name)); -+ - offsetof (struct dirent, d_name)); - - /* If the structure returned by the kernel is identical to what we - need, don't do any conversions. */ -- if (offsetof (DIRENT_TYPE, d_name) -+ if (offsetof (struct dirent, d_name) - == offsetof (struct kernel_dirent64, d_name) - && sizeof (dp->d_ino) == sizeof (kdp->d_ino) - && sizeof (dp->d_off) == sizeof (kdp->d_off)) - return retval; - -- dp = (DIRENT_TYPE *)buf; -+ dp = (struct dirent *)buf; - kdp = (struct kernel_dirent64 *) kbuf; - while ((char *) kdp < kbuf + retval) - { -- const size_t alignment = __alignof__ (DIRENT_TYPE); -+ const size_t alignment = __alignof__ (struct dirent); - /* Since kdp->d_reclen is already aligned for the kernel - structure this may compute a value that is bigger - than necessary. */ -@@ -194,41 +160,39 @@ getdents_wrap (int fd, char *buf, size_t nbytes) - memmove (dp->d_name, kdp->d_name, - old_reclen - offsetof (struct kernel_dirent64, d_name)); - -- dp = (DIRENT_TYPE *) ((char *) dp + new_reclen); -+ dp = (struct dirent *) ((char *) dp + new_reclen); - kdp = (struct kernel_dirent64 *) ((char *) kdp + old_reclen); - } - - return (char *) dp - buf; - } - --# ifndef __ASSUME_GETDENTS64_SYSCALL - __set_errno (saved_errno); - __have_no_getdents64 = 1; --# endif - } --#endif -+ -+ /* fallback to getdents */ - { - size_t red_nbytes; - struct kernel_dirent *skdp, *kdp; -- const size_t size_diff = (offsetof (DIRENT_TYPE, d_name) -+ const size_t size_diff = (offsetof (struct dirent, d_name) - - offsetof (struct kernel_dirent, d_name)); - - red_nbytes = MIN (nbytes -- - ((nbytes / (offsetof (DIRENT_TYPE, d_name) + 14)) -+ - ((nbytes / (offsetof (struct dirent, d_name) + 14)) - * size_diff), - nbytes - size_diff); - -- dp = (DIRENT_TYPE *) buf; -+ dp = (struct dirent *) buf; - skdp = kdp = alloca (red_nbytes); - -- retval = syscall(SYS_getdents, fd, kdp, red_nbytes); -- -+ retval = __SYS_GETDENTS(fd, kdp, red_nbytes); - if (retval == -1) - return -1; - - while ((char *) kdp < (char *) skdp + retval) - { -- const size_t alignment = __alignof__ (DIRENT_TYPE); -+ const size_t alignment = __alignof__ (struct dirent); - /* Since kdp->d_reclen is already aligned for the kernel structure - this may compute a value that is bigger than necessary. */ - size_t new_reclen = ((kdp->d_reclen + size_diff + alignment - 1) -@@ -259,7 +223,7 @@ getdents_wrap (int fd, char *buf, size_t nbytes) - memcpy (dp->d_name, kdp->d_name, - kdp->d_reclen - offsetof (struct kernel_dirent, d_name)); - -- dp = (DIRENT_TYPE *) ((char *) dp + new_reclen); -+ dp = (struct dirent *) ((char *) dp + new_reclen); - kdp = (struct kernel_dirent *) (((char *) kdp) + kdp->d_reclen); - } - } diff --git a/xfsdump.spec b/xfsdump.spec index a18a16a..6f6b632 100644 --- a/xfsdump.spec +++ b/xfsdump.spec @@ -1,17 +1,17 @@ -Summary: Administrative utilities for the XFS filesystem -Name: xfsdump -Version: 3.1.9 -Release: 5%{?dist} -# Licensing based on generic "GNU GENERAL PUBLIC LICENSE" -# in source, with no mention of version. -License: GPL+ -URL: http://oss.sgi.com/projects/xfs/ -Source0: http://kernel.org/pub/linux/utils/fs/xfs/%{name}/%{name}-%{version}.tar.xz -BuildRequires: make -BuildRequires: gcc -BuildRequires: libtool, gettext, gawk -BuildRequires: xfsprogs-devel, libuuid-devel, libattr-devel ncurses-devel -Requires: xfsprogs >= 2.6.30, attr >= 2.0.0 +Summary: Backup and restore utilities for the XFS filesystem +Name: xfsdump +Version: 3.3.0 +Release: 2%{?dist} +License: GPL-2.0-or-later +Source0: http://kernel.org/pub/linux/utils/fs/xfs/%{name}/%{name}-%{version}.tar.xz +Source1: http://kernel.org/pub/linux/utils/fs/xfs/%{name}/%{name}-%{version}.tar.sign +Source2: https://git.kernel.org/pub/scm/docs/kernel/pgpkeys.git/plain/keys/46A7EA18AC33E108.asc +BuildRequires: make +BuildRequires: gcc +BuildRequires: libtool, gettext, gawk +BuildRequires: xfsprogs-devel, libuuid-devel, libattr-devel ncurses-devel +BuildRequires: gnupg2, xz +Requires: xfsprogs >= 2.6.30, attr >= 2.0.0 %description The xfsdump package contains xfsdump, xfsrestore and a number of @@ -19,10 +19,10 @@ other utilities for administering XFS filesystems. xfsdump examines files in a filesystem, determines which need to be backed up, and copies those files to a specified disk, tape or other -storage medium. It uses XFS-specific directives for optimizing the +storage medium. It uses XFS-specific directives for optimizing the dump of an XFS filesystem, and also knows how to backup XFS extended attributes. Backups created with xfsdump are "endian safe" and can -thus be transfered between Linux machines of different architectures +thus be transferred between Linux machines of different architectures and also between IRIX machines. xfsrestore performs the inverse function of xfsdump; it can restore a @@ -31,6 +31,7 @@ be layered on top of the full backup. Single files and directory subtrees may be restored from full or partial backups. %prep +xzcat '%{SOURCE0}' | %{gpgverify} --keyring='%{SOURCE2}' --signature='%{SOURCE1}' --data=- %setup -q %build @@ -40,14 +41,16 @@ make V=1 %{?_smp_mflags} %install rm -rf $RPM_BUILD_ROOT -make DIST_ROOT=$RPM_BUILD_ROOT install +# seems to ignore the ./configure options that set the sbin dir, so we have to +# pass them to `make install` +make \ + DIST_ROOT=$RPM_BUILD_ROOT \ + PKG_SBIN_DIR=%{_sbindir} \ + PKG_ROOT_SBIN_DIR=%{_sbindir} \ + install # remove non-versioned docs location rm -rf $RPM_BUILD_ROOT/%{_datadir}/doc/xfsdump/ -# Bit of a hack to move files from /sbin to /usr/sbin -(cd $RPM_BUILD_ROOT/%{_sbindir}; mv ../../sbin/xfsdump .) -(cd $RPM_BUILD_ROOT/%{_sbindir}; mv ../../sbin/xfsrestore .) - # Create inventory dir (otherwise created @ runtime) mkdir -p $RPM_BUILD_ROOT/%{_sharedstatedir}/xfsdump/inventory @@ -60,6 +63,64 @@ mkdir -p $RPM_BUILD_ROOT/%{_sharedstatedir}/xfsdump/inventory %{_sharedstatedir}/xfsdump/inventory %changelog +* Fri Jul 17 2026 Fedora Release Engineering - 3.3.0-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_45_Mass_Rebuild + +* Thu May 28 2026 Marcus Müller - 3.3.0-1 +- Bump to new upstream release 3.3.0 +- Fix wrong license (see doc/COPYING in source code) +- Fix installation location in a less hacky way +- Fix keyring source. (you need to git clone the kernel gpgkeys repo and then + grep for the key needed, then replace the Source here. This is not a + sustainable system.) +- Fix description typo +- Remove stray tab byte from description, which was shown as \x09 in + `dnf info xfsdump` (huh?) + +* Sat Jan 17 2026 Fedora Release Engineering - 3.2.0-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_44_Mass_Rebuild + +* Fri Jul 25 2025 Fedora Release Engineering - 3.2.0-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild + +* Sun Jan 19 2025 Fedora Release Engineering - 3.2.0-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild + +* Mon Sep 02 2024 Pavel Reichl - 3.2.0-1 +- Update to latest upstream version +- Related: rhbz#2309186 + +* Sat Jul 20 2024 Fedora Release Engineering - 3.1.12-5 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild + +* Sat Jan 27 2024 Fedora Release Engineering - 3.1.12-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild + +* Tue Oct 03 2023 Pavel Reichl - 3.1.12-3 +- Convert License tag to SPDX format + +* Sat Jul 22 2023 Fedora Release Engineering - 3.1.12-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild + +* Wed May 17 2023 Pavel Reichl - 3.1.12-1 +- New upstream release (#2154255) + +* Sat Jan 21 2023 Fedora Release Engineering - 3.1.11-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild + +* Fri Aug 26 2022 Eric Sandeen - 3.1.11-1 +- New upstream release +- Fix FTBFS with newer xfsprogs (#2113765) + +* Sat Jul 23 2022 Fedora Release Engineering - 3.1.10-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild + +* Fri Feb 11 2022 Eric Sandeen - 3.1.10-1 +- New upstream release + +* Sat Jan 22 2022 Fedora Release Engineering - 3.1.9-6 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild + * Fri Jul 23 2021 Fedora Release Engineering - 3.1.9-5 - Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild @@ -73,7 +134,7 @@ mkdir -p $RPM_BUILD_ROOT/%{_sharedstatedir}/xfsdump/inventory * Wed Jul 29 2020 Fedora Release Engineering - 3.1.9-2 - Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild -* Fri Jan 31 2020 Eric Sandeen 3.1.9-1 +* Fri Jan 31 2020 Eric Sandeen - 3.1.9-1 - New upstream release * Fri Jan 31 2020 Fedora Release Engineering - 3.1.8-7 @@ -88,13 +149,13 @@ mkdir -p $RPM_BUILD_ROOT/%{_sharedstatedir}/xfsdump/inventory * Sat Jul 14 2018 Fedora Release Engineering - 3.1.8-4 - Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild -* Mon Feb 26 2018 Eric Sandeen 3.1.8-3 +* Mon Feb 26 2018 Eric Sandeen - 3.1.8-3 - BuildRequires: gcc * Fri Feb 09 2018 Fedora Release Engineering - 3.1.8-2 - Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild -* Thu Sep 21 2017 Eric Sandeen 3.1.8-1 +* Thu Sep 21 2017 Eric Sandeen - 3.1.8-1 - New upstream release * Thu Aug 03 2017 Fedora Release Engineering - 3.1.6-6 @@ -103,7 +164,7 @@ mkdir -p $RPM_BUILD_ROOT/%{_sharedstatedir}/xfsdump/inventory * Thu Jul 27 2017 Fedora Release Engineering - 3.1.6-5 - Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild -* Thu Jun 08 2017 Eric Sandeen 3.1.6-4 +* Thu Jun 08 2017 Eric Sandeen - 3.1.6-4 - Build with largefile support on 32-bit platforms * Sat Feb 11 2017 Fedora Release Engineering - 3.1.6-3 @@ -112,7 +173,7 @@ mkdir -p $RPM_BUILD_ROOT/%{_sharedstatedir}/xfsdump/inventory * Fri Feb 05 2016 Fedora Release Engineering - 3.1.6-2 - Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild -* Tue Nov 10 2015 Eric Sandeen 3.1.6-1 +* Tue Nov 10 2015 Eric Sandeen - 3.1.6-1 - New upstream release * Fri Jun 19 2015 Fedora Release Engineering - 3.1.4-3 @@ -121,55 +182,55 @@ mkdir -p $RPM_BUILD_ROOT/%{_sharedstatedir}/xfsdump/inventory * Mon Aug 18 2014 Fedora Release Engineering - 3.1.4-2 - Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild -* Thu Jul 17 2014 Eric Sandeen 3.1.4-1 +* Thu Jul 17 2014 Eric Sandeen - 3.1.4-1 - New upstream release -* Mon Jun 16 2014 Eric Sandeen 3.1.3-5 +* Mon Jun 16 2014 Eric Sandeen - 3.1.3-5 - Fix aarch64 build (#926800) * Sun Jun 08 2014 Fedora Release Engineering - 3.1.3-4 - Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild -* Mon Jan 20 2014 Eric Sandeen 3.1.3-3 +* Mon Jan 20 2014 Eric Sandeen - 3.1.3-3 - Add /var/lib/xfsdump/inventory to file list (was created runtime) * Sun Aug 04 2013 Fedora Release Engineering - 3.1.3-2 - Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild -* Wed May 08 2013 Eric Sandeen 3.1.3-1 +* Wed May 08 2013 Eric Sandeen - 3.1.3-1 - New upstream release * Fri Feb 15 2013 Fedora Release Engineering - 3.1.2-2 - Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild -* Thu Dec 13 2012 Eric Sandeen 3.1.2-1 +* Thu Dec 13 2012 Eric Sandeen - 3.1.2-1 - New upstream release, with non-broken tarball -* Thu Dec 13 2012 Eric Sandeen 3.1.1-1 +* Thu Dec 13 2012 Eric Sandeen - 3.1.1-1 - New upstream release * Sun Jul 22 2012 Fedora Release Engineering - 3.1.0-3 - Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild -* Wed Mar 28 2012 Eric Sandeen 3.1.0-2 +* Wed Mar 28 2012 Eric Sandeen - 3.1.0-2 - Move files out of /sbin to /usr/sbin -* Fri Mar 23 2012 Eric Sandeen 3.1.0-1 +* Fri Mar 23 2012 Eric Sandeen - 3.1.0-1 - New upstream release * Sat Jan 14 2012 Fedora Release Engineering - 3.0.6-2 - Rebuilt for https://fedoraproject.org/wiki/Fedora_17_Mass_Rebuild -* Mon Oct 17 2011 Eric Sandeen 3.0.6-1 +* Mon Oct 17 2011 Eric Sandeen - 3.0.6-1 - New upstream release -* Thu Mar 31 2011 Eric Sandeen 3.0.5-1 +* Thu Mar 31 2011 Eric Sandeen - 3.0.5-1 - New upstream release * Mon Feb 07 2011 Fedora Release Engineering - 3.0.4-2 - Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild -* Wed Jan 13 2010 Eric Sandeen 3.0.4-1 +* Wed Jan 13 2010 Eric Sandeen - 3.0.4-1 - New upstream release * Mon Nov 30 2009 Dennis Gregorovic - 3.0.1-3.1 @@ -178,19 +239,19 @@ mkdir -p $RPM_BUILD_ROOT/%{_sharedstatedir}/xfsdump/inventory * Mon Jul 27 2009 Fedora Release Engineering - 3.0.1-3 - Rebuilt for https://fedoraproject.org/wiki/Fedora_12_Mass_Rebuild -* Tue Jun 30 2009 Eric Sandeen 3.0.1-2 +* Tue Jun 30 2009 Eric Sandeen - 3.0.1-2 - Fix up build-requires after e2fsprogs splitup -* Tue May 05 2009 Eric Sandeen 3.0.1-1 +* Tue May 05 2009 Eric Sandeen - 3.0.1-1 - New upstream release * Thu Feb 26 2009 Fedora Release Engineering - 3.0.0-2 - Rebuilt for https://fedoraproject.org/wiki/Fedora_11_Mass_Rebuild -* Wed Feb 04 2009 Eric Sandeen 3.0.0-1 +* Wed Feb 04 2009 Eric Sandeen - 3.0.0-1 - New upstream release -* Wed Nov 12 2008 Eric Sandeen 2.2.48-2 +* Wed Nov 12 2008 Eric Sandeen - 2.2.48-2 - Enable parallel builds * Sun Feb 10 2008 Eric Sandeen - 2.2.48-1