diff options
Diffstat (limited to 'testing')
-rw-r--r-- | testing/zfs-git-grsec/APKBUILD | 100 | ||||
-rw-r--r-- | testing/zfs-git-grsec/timestamp.patch | 16 | ||||
-rw-r--r-- | testing/zfs-git-grsec/vdev_id_posix.patch | 103 |
3 files changed, 219 insertions, 0 deletions
diff --git a/testing/zfs-git-grsec/APKBUILD b/testing/zfs-git-grsec/APKBUILD new file mode 100644 index 000000000..d5a5dd7ea --- /dev/null +++ b/testing/zfs-git-grsec/APKBUILD @@ -0,0 +1,100 @@ +# Contributor: Carlo Landmeter <clandmeter@gmail.com> +# Maintainer: + +_flavor=${FLAVOR:-grsec} +_realname=zfs-git +_name=$_realname-$_flavor + +_kpkg=linux-$_flavor +_kver=3.6.6 +_kpkgrel=1 + +_mypkgrel=0 +_date=$(date +%Y%m%d) + +# source the kernel version +if [ -f ../../main/linux-$_flavor/APKBUILD ]; then + . ../../main/linux-$_flavor/APKBUILD + [ "$_kver" != "$pkgver" ] && die "$_name: Please update _kver to $pkgver" + [ "$_kpkgrel" != "$pkgrel" ] && die "$_name: Please update _kpkgrel to $pkgrel" +fi + +_kernelver=$_kver-r$_kpkgrel +_abi_release=$_kver-${_flavor} + +pkgname=$_name +pkgver=$_kver +pkgrel=$(($_kpkgrel + $_mypkgrel)) +pkgdesc="ZFS for Linux" +url="http://zfsonlinux.org" +arch="all" +license="CDDL" +depends="spl-git-$_flavor" +depends_dev="glib-dev e2fsprogs-dev util-linux-dev + linux-$_flavor-dev spl-git-$_flavor-dev" +makedepends="$depends_dev automake autoconf libtool" +install="" +subpackages="$pkgname-dev $pkgname-doc $_realname-utils:utils" +source="saveas-https://github.com/zfsonlinux/zfs/archive/master.tar.gz/zfs-git-$_date.tar.gz + timestamp.patch + vdev_id_posix.patch" + +_builddir="$srcdir"/zfs-master + +prepare() { + local i + cd "$_builddir" + for i in $source; do + case $i in + *.patch) msg $i; patch -p1 -i "$srcdir"/$i || return 1;; + esac + done +} + +build() { + cd "$_builddir" + ./autogen.sh || return 1 + export LIBS="$LIBS -lintl" + export GCC_SPECS=/usr/share/gcc/hardenednopie.specs + ./configure --prefix=/usr \ + --sysconfdir=/etc \ + --mandir=/usr/share/man \ + --infodir=/usr/share/info \ + --localstatedir=/var \ + --with-config=all \ + --with-udevdir=/lib/udev \ + || return 1 + make || return 1 +} + +package() { + cd "$_builddir" + make DESTDIR="$pkgdir" install || return 1 + rm -f "$pkgdir"/usr/lib/*.la + rm -rf "$pkgdir"/usr/libexec + rm -rf "$pkgdir"/usr/share/dracut +} + +dev() { + mkdir -p "$subpkgdir"/usr + mv "$pkgdir"/usr/src \ + "$subpkgdir"/usr || return 1 + default_dev +} + +utils() { + pkgdesc="Userland tools to manage zfs on linux" + depends="$depends bash" + mkdir -p "$subpkgdir" + mv "$pkgdir"/* "$subpkgdir" || return 1 + mkdir -p "$pkgdir"/lib + mv "$subpkgdir"/lib/modules \ + "$pkgdir"/lib || return 1 + rm -f "$subpkgdir"/etc/init.d/zfs + install -m755 -D "$_builddir"/etc/init.d/zfs.gentoo.in \ + "$subpkgdir"/etc/init.d/zfs +} + +md5sums="78652d6a0ea05fa3476d0e1c577dbb98 zfs-git-20121108.tar.gz +9621735b802e34d792b03ef89727f6ea timestamp.patch +c9a5307dc254ff4ff4808a178f4d8bd6 vdev_id_posix.patch" diff --git a/testing/zfs-git-grsec/timestamp.patch b/testing/zfs-git-grsec/timestamp.patch new file mode 100644 index 000000000..68a612faa --- /dev/null +++ b/testing/zfs-git-grsec/timestamp.patch @@ -0,0 +1,16 @@ +uclibc does not support _DATE_FMT, it seems to be a libc only thing +not sure this will work, will need to take a closer look. +http://pubs.opengroup.org/onlinepubs/007904975/basedefs/langinfo.h.html +http://sources.redhat.com/ml/libc-alpha/2000-10/msg00298.html + +--- ./lib/libspl/timestamp.c.orig ++++ ./lib/libspl/timestamp.c +@@ -40,7 +40,7 @@ + + /* We only need to retrieve this once per invocation */ + if (fmt == NULL) +- fmt = nl_langinfo(_DATE_FMT); ++ fmt = nl_langinfo(D_FMT); + + if (timestamp_fmt == UDATE) { + (void) printf("%ld\n", t); diff --git a/testing/zfs-git-grsec/vdev_id_posix.patch b/testing/zfs-git-grsec/vdev_id_posix.patch new file mode 100644 index 000000000..8f44d039c --- /dev/null +++ b/testing/zfs-git-grsec/vdev_id_posix.patch @@ -0,0 +1,103 @@ +From 8714d5292b09502b9f19a6f01f7d5fac99e9759c Mon Sep 17 00:00:00 2001 +From: Ned Bass <bass6@llnl.gov> +Date: Wed, 19 Sep 2012 11:44:12 -0700 +Subject: [PATCH] Make vdev_id POSIX sh compatible + +Full bash may not be available in all environments where udev helpers +run, such as in an initial ramdisk. To avoid breakage in this case, +remove use of bash-specific features such as variable arrays and the +`declare' keyword from the vdev_id script. + +Closes #870 +Signed-off-by: Ned Bass <bass6@llnl.gov> +--- + cmd/vdev_id/vdev_id | 33 ++++++++++++++++++++------------- + 1 file changed, 20 insertions(+), 13 deletions(-) + +diff --git a/cmd/vdev_id/vdev_id b/cmd/vdev_id/vdev_id +index d278197..55af515 100755 +--- a/cmd/vdev_id/vdev_id ++++ b/cmd/vdev_id/vdev_id +@@ -1,4 +1,4 @@ +-#!/bin/bash ++#!/bin/sh + # + # vdev_id: udev helper to generate user-friendly names for JBOD disks + # +@@ -80,7 +80,6 @@ SLOT_MAP= + CHANNEL_MAP= + MULTIPATH= + TOPOLOGY= +-declare -i i j + + usage() { + cat << EOF +@@ -229,32 +228,39 @@ else + sys_path=`udevadm info -q path -p /sys/block/$DEV 2>/dev/null` + fi + +-dirs=(`echo "$sys_path" | tr / ' '`) ++# Use positional parameters as an ad-hoc array ++set -- $(echo "$sys_path" | tr / ' ') ++num_dirs=$# + scsi_host_dir="/sys" + + # Get path up to /sys/.../hostX +-for (( i=0; i<${#dirs[*]}; i++ )); do +- d=${dirs[$i]} ++i=1 ++while [ $i -le $num_dirs ] ; do ++ d=$(eval echo \$$i) + scsi_host_dir="$scsi_host_dir/$d" + echo $d | egrep -q -e '^host[0-9]+$' && break ++ i=$(($i + 1)) + done + +-if [ $i = ${#dirs[*]} ] ; then ++if [ $i = $num_dirs ] ; then + exit 0 + fi + +-PCI_ID=`echo ${dirs[$(( $i - 1 ))]} | awk -F: '{print $2":"$3}'` ++PCI_ID=$(eval echo \$$(($i -1)) | awk -F: '{print $2":"$3}') + +-# In sas_switch mode, the directory three levels beneath /sys/.../hostX ++# In sas_switch mode, the directory four levels beneath /sys/.../hostX + # contains symlinks to phy devices that reveal the switch port number. In + # sas_direct mode, the phy links one directory down reveal the HBA port. + port_dir=$scsi_host_dir + case $TOPOLOGY in +- "sas_switch") j=$(($i+4)) ;; ++ "sas_switch") j=$(($i + 4)) ;; + "sas_direct") j=$(($i + 1)) ;; + esac +-for (( i++; i<=$j; i++ )); do +- port_dir="$port_dir/${dirs[$i]}" ++ ++i=$(($i + 1)) ++while [ $i -le $j ] ; do ++ port_dir="$port_dir/$(eval echo \$$i)" ++ i=$(($i + 1)) + done + + PHY=`ls -d $port_dir/phy* 2>/dev/null | head -1 | awk -F: '{print $NF}'` +@@ -266,13 +272,14 @@ PORT=$(( $PHY / $PHYS_PER_PORT )) + # Look in /sys/.../sas_device/end_device-X for the bay_identifier + # attribute. + end_device_dir=$port_dir +-for (( ; i<${#dirs[*]} ; i++ )); do +- d=${dirs[$i]} ++while [ $i -lt $num_dirs ] ; do ++ d=$(eval echo \$$i) + end_device_dir="$end_device_dir/$d" + if echo $d | egrep -q -e '^end_device' ; then + end_device_dir="$end_device_dir/sas_device/$d" + break + fi ++ i=$(($i + 1)) + done + + SLOT=`cat $end_device_dir/bay_identifier 2>/dev/null` +-- +1.7.10 + |