add a package for xfsprogs
authorFelix Fietkau <nbd@openwrt.org>
Wed, 16 Feb 2011 18:20:30 +0000 (18:20 +0000)
committerFelix Fietkau <nbd@openwrt.org>
Wed, 16 Feb 2011 18:20:30 +0000 (18:20 +0000)
SVN-Revision: 25558

package/xfsprogs/Makefile [new file with mode: 0644]
package/xfsprogs/patches/100-no_aio.patch [new file with mode: 0644]
package/xfsprogs/patches/110-uclibc_no_ustat.patch [new file with mode: 0644]
package/xfsprogs/patches/120-portability.patch [new file with mode: 0644]
package/xfsprogs/patches/130-uclibc_no_xattr.patch [new file with mode: 0644]

diff --git a/package/xfsprogs/Makefile b/package/xfsprogs/Makefile
new file mode 100644 (file)
index 0000000..1ba38b1
--- /dev/null
@@ -0,0 +1,83 @@
+# 
+# Copyright (C) 2006-2008 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=xfsprogs
+PKG_RELEASE:=1
+PKG_VERSION:=3.1.4
+PKG_SOURCE_URL:=http://ftp.debian.org/pool/main/x/xfsprogs
+PKG_MD5SUM:=23568a603c913b80076abe3c23521573
+
+PKG_SOURCE:=$(PKG_NAME)_$(PKG_VERSION).tar.gz
+PKG_INSTALL:=1
+PKG_FIXUP = libtool
+
+include $(INCLUDE_DIR)/package.mk
+include $(INCLUDE_DIR)/nls.mk
+
+define Package/xfsprogs/default
+  SECTION:=utils
+  CATEGORY:=Utilities
+  DEPENDS:=+libuuid +libpthread +librt
+  URL:=http://oss.sgi.com/projects/xfs
+endef
+
+define Package/xfs-mkfs
+$(call Package/xfsprogs/default)
+  TITLE:=Utility for creating XFS filesystems
+endef
+
+define Package/xfs-fsck
+$(call Package/xfsprogs/default)
+  TITLE:=Utilities for checking and repairing XFS filesystems
+endef
+
+define Package/xfs-growfs
+$(call Package/xfsprogs/default)
+  TITLE:=Utility for increasing the size of XFS filesystems
+endef
+
+TARGET_CFLAGS += \
+       -I$(STAGING_DIR)/usr/include \
+       -D_LARGEFILE64_SOURCE \
+       -D_FILE_OFFSET_BITS=64 \
+       -D_GNU_SOURCE
+
+MAKE_FLAGS += \
+       DEBUG= Q= \
+       PCFLAGS="-Wall" \
+       PKG_PLATFORM=linux \
+       ENABLE_GETTEXT=no \
+       prefix=$(PKG_INSTALL_DIR)/usr \
+       exec_prefix=$(PKG_INSTALL_DIR)/usr \
+       PKG_SBIN_DIR=$(PKG_INSTALL_DIR)/usr/sbin \
+       PKG_ROOT_SBIN_DIR=$(PKG_INSTALL_DIR)/sbin \
+       PKG_MAN_DIR=$(PKG_INSTALL_DIR)/usr/man \
+       PKG_LOCALE_DIR=$(PKG_INSTALL_DIR)/usr/share/locale \
+       PKG_ROOT_LIB_DIR=$(PKG_INSTALL_DIR)/lib \
+       PKG_DOC_DIR=$(PKG_INSTALL_DIR)/usr/share/doc/xfsprogs
+
+define Package/xfs-mkfs/install
+       mkdir -p $(1)/sbin
+       $(INSTALL_BIN) $(PKG_INSTALL_DIR)/sbin/mkfs.xfs $(1)/sbin
+endef
+
+define Package/xfs-fsck/install
+       mkdir -p $(1)/sbin
+       $(INSTALL_BIN) $(PKG_INSTALL_DIR)/sbin/xfs_repair $(1)/sbin
+       $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/sbin/xfs_db $(1)/sbin
+endef
+
+define Package/xfs-growfs/install
+       mkdir -p $(1)/sbin
+       $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/sbin/xfs_growfs $(1)/sbin
+endef
+
+$(eval $(call BuildPackage,xfs-mkfs))
+$(eval $(call BuildPackage,xfs-fsck))
+$(eval $(call BuildPackage,xfs-growfs))
diff --git a/package/xfsprogs/patches/100-no_aio.patch b/package/xfsprogs/patches/100-no_aio.patch
new file mode 100644 (file)
index 0000000..b16faa8
--- /dev/null
@@ -0,0 +1,13 @@
+--- a/configure.in
++++ b/configure.in
+@@ -87,8 +87,8 @@ AC_PACKAGE_GLOBALS(xfsprogs)
+ AC_PACKAGE_UTILITIES(xfsprogs)
+ AC_MULTILIB($enable_lib64)
+-AC_PACKAGE_NEED_AIO_H
+-AC_PACKAGE_NEED_LIO_LISTIO
++librt="-lrt"
++AC_SUBST(librt)
+ AC_PACKAGE_NEED_UUID_H
+ AC_PACKAGE_NEED_UUIDCOMPARE
diff --git a/package/xfsprogs/patches/110-uclibc_no_ustat.patch b/package/xfsprogs/patches/110-uclibc_no_ustat.patch
new file mode 100644 (file)
index 0000000..9cd2dc2
--- /dev/null
@@ -0,0 +1,28 @@
+--- a/libxfs/linux.c
++++ b/libxfs/linux.c
+@@ -21,7 +21,9 @@
+ #include <mntent.h>
+ #include <sys/stat.h>
+ #undef ustat
++#ifndef __UCLIBC__
+ #include <sys/ustat.h>
++#endif
+ #include <sys/mount.h>
+ #include <sys/ioctl.h>
+ #include <sys/sysinfo.h>
+@@ -49,6 +51,7 @@ static int max_block_alignment;
+ int
+ platform_check_ismounted(char *name, char *block, struct stat64 *s, int verbose)
+ {
++#ifndef __UCLIBC__
+       /* Pad ust; pre-2.6.28 linux copies out too much in 32bit compat mode */
+       struct ustat    ust[2];
+       struct stat64   st;
+@@ -68,6 +71,7 @@ platform_check_ismounted(char *name, cha
+                               progname, name);
+               return 1;
+       }
++#endif
+       return 0;
+ }
diff --git a/package/xfsprogs/patches/120-portability.patch b/package/xfsprogs/patches/120-portability.patch
new file mode 100644 (file)
index 0000000..d8bda81
--- /dev/null
@@ -0,0 +1,39 @@
+--- a/copy/xfs_copy.c
++++ b/copy/xfs_copy.c
+@@ -463,6 +463,15 @@ read_ag_header(int fd, xfs_agnumber_t ag
+ }
++static void sig_mask(int type)
++{
++      sigset_t mask;
++      sigemptyset(&mask);
++      sigaddset(&mask, SIGCHLD);
++      sigprocmask(type, &mask, NULL);
++}
++
++
+ void
+ write_wbuf(void)
+ {
+@@ -478,9 +487,9 @@ write_wbuf(void)
+               if (target[i].state != INACTIVE)
+                       pthread_mutex_unlock(&targ[i].wait);    /* wake up */
+-      sigrelse(SIGCHLD);
++      sig_mask(SIG_UNBLOCK);
+       pthread_mutex_lock(&mainwait);
+-      sighold(SIGCHLD);
++      sig_mask(SIG_BLOCK);
+ }
+@@ -847,7 +856,7 @@ main(int argc, char **argv)
+       /* set up sigchild signal handler */
+       signal(SIGCHLD, handler);
+-      sighold(SIGCHLD);
++      sig_mask(SIG_BLOCK);
+       /* make children */
diff --git a/package/xfsprogs/patches/130-uclibc_no_xattr.patch b/package/xfsprogs/patches/130-uclibc_no_xattr.patch
new file mode 100644 (file)
index 0000000..30cb861
--- /dev/null
@@ -0,0 +1,28 @@
+--- a/fsr/xfs_fsr.c
++++ b/fsr/xfs_fsr.c
+@@ -35,7 +35,9 @@
+ #include <sys/wait.h>
+ #include <sys/vfs.h>
+ #include <sys/statvfs.h>
++#ifndef __UCLIBC__
+ #include <sys/xattr.h>
++#endif
+ #ifndef XFS_XFLAG_NODEFRAG
+@@ -990,6 +992,7 @@ fsr_setup_attr_fork(
+       int             tfd,
+       xfs_bstat_t     *bstatp)
+ {
++#ifndef __UCLIBC__
+       struct stat64   tstatbuf;
+       int             i;
+       int             last_forkoff = 0;
+@@ -1108,6 +1111,7 @@ fsr_setup_attr_fork(
+ out:
+       if (dflag)
+               fsrprintf(_("set temp attr\n"));
++#endif
+       return 0;
+ }