diff --git a/Makefile b/Makefile index d3d4320..ecac598 100644 --- a/Makefile +++ b/Makefile @@ -8,22 +8,22 @@ SPLPKGREL=1~wheezy ZFSPKGVER=${ZFSVER}-${ZFSPKGREL} SPLPKGVER=${ZFSVER}-${SPLPKGREL} -SPLDIR=spl-spl-${ZFSVER} -SPLSRC=spl-${ZFSVER}.tar.gz -ZFSDIR=zfs-zfs-${ZFSVER} -ZFSSRC=zfs-${ZFSVER}.tar.gz +SPLDIR=pkg-spl +SPLSRC=pkg-spl.tar.gz +ZFSDIR=pkg-zfs +ZFSSRC=pkg-zfs.tar.gz -SPL_DEBS= \ +SPL_DEBS= \ spl_${SPLPKGVER}_amd64.deb -ZFS_DEBS= \ +ZFS_DEBS= \ libnvpair1_${ZFSPKGVER}_amd64.deb \ libuutil1_${ZFSPKGVER}_amd64.deb \ -libzfs2_${ZFSPKGVER}_amd64.deb \ +libzfs2_${ZFSPKGVER}_amd64.deb \ libzfs-dev_${ZFSPKGVER}_amd64.deb \ libzpool2_${ZFSPKGVER}_amd64.deb \ -zfs-doc_${ZFSPKGVER}_amd64.deb \ -zfs-initramfs_${ZFSPKGVER}_amd64.deb \ +zfs-dbg_${ZFSPKGVER}_amd64.deb \ +zfs-initramfs_${ZFSPKGVER}_amd64.deb \ zfsutils_${ZFSPKGVER}_amd64.deb DEBS=${SPL_DEBS} ${ZFS_DEBS} @@ -38,26 +38,32 @@ dinstall: ${DEBS} spl ${SPL_DEBS}: ${SPLSRC} rm -rf ${SPLDIR} tar xf ${SPLSRC} - cp -a spl-debian-pve ${SPLDIR}/debian - cd ${SPLDIR}; dpkg-buildpackage -b -uc -us + cd ${SPLDIR}; ln -s ../spl-patches patches + cd ${SPLDIR}; quilt push -a + cd ${SPLDIR}; rm -rf .pc ./patches + cd ${SPLDIR}; ./debian/rules override_dh_prep-base-deb-files + cd ${SPLDIR}; dpkg-buildpackage -b -uc -us .PHONY: zfs zfs ${ZFS_DEBS}: ${ZFSSRC} rm -rf ${ZFSDIR} tar xf ${ZFSSRC} - cp -a zfs-debian-pve ${ZFSDIR}/debian + cd ${ZFSDIR}; ln -s ../zfs-patches patches + cd ${ZFSDIR}; quilt push -a + cd ${ZFSDIR}; rm -rf .pc ./patches + cd ${ZFSDIR}; ./debian/rules override_dh_prep-base-deb-files cd ${ZFSDIR}; dpkg-buildpackage -b -uc -us .PHONY: download download: - #git clone https://github.com/zfsonlinux/pkg-spl.git - #git clone https://github.com/zfsonlinux/pkg-zfs.git - ##git checkout master/ubuntu/precise - ##git checkout master/debian/wheezy - rm -f spl-*.tar.gz - rm -f zfs-*.tar.gz - wget https://github.com/zfsonlinux/spl/archive/${SPLSRC} - wget https://github.com/zfsonlinux/zfs/archive/${ZFSSRC} + rm -rf pkg-spl pkg-zfs ${SPLSRC} ${ZFSSRC} + git clone https://github.com/zfsonlinux/pkg-spl.git + git clone https://github.com/zfsonlinux/pkg-zfs.git + # list tags with: git tag --list 'master/*' + cd pkg-spl; git checkout master/debian/wheezy/0.6.4-1-wheezy + cd pkg-zfs; git checkout master/debian/wheezy/0.6.4-1-2-wheezy + tar czf ${SPLSRC} pkg-spl + tar czf ${ZFSSRC} pkg-zfs .PHONY: clean clean: @@ -85,6 +91,7 @@ upload: ${DEBS} rm -f /pve/${RELEASE}/extra/zfs_*.deb rm -f /pve/${RELEASE}/extra/zfs-dkms_*.deb rm -f /pve/${RELEASE}/extra/zfs-doc_*.deb + rm -f /pve/${RELEASE}/extra/zfs-dbg_*.deb rm -f /pve/${RELEASE}/extra/zfs-initramfs_*.deb rm -f /pve/${RELEASE}/extra/zfsutils_*.deb rm -f /pve/${RELEASE}/extra/zfsutils-dbg_*.deb diff --git a/README b/README index 4fcc083..4f7ecfc 100644 --- a/README +++ b/README @@ -5,8 +5,8 @@ This is based of code from: https://github.com/zfsonlinux/pkg-spl.git https://github.com/zfsonlinux/pkg-zfs.git -We merged updates from the precice branch into the older wheezy -branch. +We removed the dkms/modules related code, because we ship the +modules with the kernel. For licensing questions, see: diff --git a/pkg-spl.tar.gz b/pkg-spl.tar.gz new file mode 100644 index 0000000..4473085 Binary files /dev/null and b/pkg-spl.tar.gz differ diff --git a/pkg-zfs.tar.gz b/pkg-zfs.tar.gz new file mode 100644 index 0000000..01f3a94 Binary files /dev/null and b/pkg-zfs.tar.gz differ diff --git a/spl-0.6.4.tar.gz b/spl-0.6.4.tar.gz deleted file mode 100644 index aa4d708..0000000 Binary files a/spl-0.6.4.tar.gz and /dev/null differ diff --git a/spl-patches/fix-changelog-patch b/spl-patches/fix-changelog-patch new file mode 100644 index 0000000..83ea2f8 --- /dev/null +++ b/spl-patches/fix-changelog-patch @@ -0,0 +1,14 @@ +Index: new-spl/debian/changelog +=================================================================== +--- new-spl.orig/debian/changelog 2015-04-12 14:06:48.000000000 +0200 ++++ new-spl/debian/changelog 2015-04-12 17:09:48.000000000 +0200 +@@ -1,3 +1,9 @@ ++spl-linux (0.6.4-1~wheezy) unstable; urgency=low ++ ++ * recompile for Proxmox VE, keep Proxmox VE versioning schema ++ ++ -- Proxmox Support Team Sun, 12 Apr 2015 17:09:48 +0200 ++ + spl-linux (0.6.4-1-wheezy) wheezy; urgency=low + + * New upstream release. diff --git a/spl-patches/fix-control b/spl-patches/fix-control new file mode 100644 index 0000000..4a153b3 --- /dev/null +++ b/spl-patches/fix-control @@ -0,0 +1,102 @@ +Index: new-spl/debian/rules +=================================================================== +--- new-spl.orig/debian/rules 2015-04-12 14:06:48.000000000 +0200 ++++ new-spl/debian/rules 2015-04-12 16:51:10.000000000 +0200 +@@ -24,15 +24,12 @@ + KIMGVER=$(shell dpkg -s linux-image-$(KVERS)-$(DEB_HOST_ARCH) | grep ^Version | sed 's/.*: //') + + %: +- dh $@ --with dkms ++ dh $@ + + override_dh_prep-base-deb-files: +- sed -e 's/##SHLIB_MAJOR##/$(SHLIB_MAJOR)/g ; s/##MODULES_BUILD_DEPENDS##/linux-headers-$(KVERS)-common, linux-headers-$(KVERS)-$(DEB_HOST_ARCH)/g' \ ++ sed -e 's/##SHLIB_MAJOR##/$(SHLIB_MAJOR)/g ; s/##MODULES_BUILD_DEPENDS##/pve-headers-$(KVERS)/g' \ + < debian/control.in > debian/control + +- sed -e 's/##KVERS##/$(KVERS)/g ; s/#KVERS#/$(KVERS)/g ; s/_KVERS_/$(KVERS)/g ; s/##KDREV##/$(KDREV)/g ; s/#KDREV#/$(KDREV)/g ; s/_KDREV_/$(KDREV)/g ; s/_ARCH_/$(DEB_HOST_ARCH)/g ; s/_IMGVER_/$(KIMGVER)/g' \ +- < debian/control.modules.in >> debian/control +- + for templ in $(wildcard $(CURDIR)/debian/*_KVERS_*.in); do \ + sed -e 's/##KVERS##/$(KVERS)/g ; s/#KVERS#/$(KVERS)/g ; s/_KVERS_/$(KVERS)/g ; s/##KDREV##/$(KDREV)/g ; s/#KDREV#/$(KDREV)/g ; s/_KDREV_/$(KDREV)/g ; s/_ARCH_/$(DEB_HOST_ARCH)/g' \ + < $$templ > `echo $$templ | sed -e 's/_KVERS_/$(KVERS)/g ; s/_ARCH_/$(DEB_HOST_ARCH)/g ; s/\.in$$//'` ; \ +@@ -52,8 +49,7 @@ + @# Build the userland and the modules + dh_auto_configure -- \ + --prefix=/usr \ +- --with-linux=$(KSRC) \ +- --with-linux-obj=$(KOBJ) ++ --with-config=user + + override_dh_auto_test: + # scripts/check.sh tries insmod and rmmod, so it cannot +@@ -67,36 +63,6 @@ + @# This creates the $(CURDIR)/$(NAME)-$(VERSION)/ tree. + $(MAKE) distdir + +- # Install the DKMS source. +- @# We only want the files needed to build the modules +- mkdir -p '$(CURDIR)/debian/tmp/usr/src/$(NAME)-$(VERSION)' +- touch '$(CURDIR)/debian/tmp/usr/src/$(NAME)-$(VERSION)/.nogitrelease' +- rm -Rf '$(CURDIR)/debian/tmp/usr/src/$(NAME)-$(VERSION)/include' +- $(foreach file,$(DKMSFILES),mv '$(CURDIR)/$(NAME)-$(VERSION)/$(file)' '$(CURDIR)/debian/tmp/usr/src/$(NAME)-$(VERSION)' || exit 1;) +- @# Hellish awk line: +- @# * Deletes from configure.ac the parts not needed for building the kernel module +- @# * It deletes from inside AC_CONFIG_FILES([]) everything except: +- @# (Makefile$|include/|module/|*.release$) +- @# * Takes care of spaces and tabs +- awk '/^AC_CONFIG_FILES\(\[/,/^\]\)/ { if ($$0 !~ /^(AC_CONFIG_FILES\(\[([ \t]+)?$$|\]\)([ \t]+)?$$|([ \t]+)?(include\/|module\/|Makefile([ \t]+)?$$|spl\.release([ \t]+)?$$))/){next} } {print}' \ +- '$(CURDIR)/$(NAME)-$(VERSION)/configure.ac' > '$(CURDIR)/debian/tmp/usr/src/$(NAME)-$(VERSION)/configure.ac' +- @# Set "SUBDIRS = module include" for CONFIG_KERNEL and remove SUBDIRS for all other configs. +- sed '1,/CONFIG_KERNEL/s/SUBDIRS.*=.*//g;s/SUBDIRS.*=.*/SUBDIRS = module include/g;' \ +- '$(CURDIR)/$(NAME)-$(VERSION)/Makefile.am' > '$(CURDIR)/debian/tmp/usr/src/$(NAME)-$(VERSION)/Makefile.am' +- @# Sanity test +- grep -q 'SUBDIRS = module include' '$(CURDIR)/debian/tmp/usr/src/$(NAME)-$(VERSION)/Makefile.am' +- @# Run autogen on the stripped source tree +- cd '$(CURDIR)/debian/tmp/usr/src/$(NAME)-$(VERSION)'; ./autogen.sh +- rm -fr '$(CURDIR)/debian/tmp/usr/src/$(NAME)-$(VERSION)/autom4te.cache' +- +- @# This shunt allows DKMS to install the Module.symvers and spl_config.h +- @# files to the ${dkms_tree} area through the POST_INSTALL directive. +- echo '#!/bin/sh' >'$(CURDIR)/debian/tmp/usr/src/$(NAME)-$(VERSION)/cp' +- echo 'cp "$$@"' >>'$(CURDIR)/debian/tmp/usr/src/$(NAME)-$(VERSION)/cp' +- chmod 755 '$(CURDIR)/debian/tmp/usr/src/$(NAME)-$(VERSION)/cp' +- +- find '$(CURDIR)/debian/tmp' -name '*~' | xargs rm +- + override_dh_dkms: + dh_dkms -V $(VERSION) + +Index: new-spl/debian/control.in +=================================================================== +--- new-spl.orig/debian/control.in 2015-04-12 14:06:48.000000000 +0200 ++++ new-spl/debian/control.in 2015-04-12 16:11:39.000000000 +0200 +@@ -18,28 +18,6 @@ + Vcs-Git: git://anonscm.debian.org/pkg-zfsonlinux/spl.git + Vcs-Browser: http://anonscm.debian.org/gitweb/?p=pkg-zfsonlinux/spl.git + +-Package: spl-dkms +-Architecture: all +-Depends: linux-headers-amd64, libc6-dev, ${misc:Depends}, dkms (>> 2.1.1.2-5), lsb-release, file +-Recommends: spl (>= ${source:Upstream-Version}) +-Provides: spl-modules +-Description: Solaris Porting Layer kernel modules for Linux +- The Solaris Porting Layer (SPL) is a Linux kernel module which provides +- many of the Solaris kernel APIs. This shim layer makes it possible to +- run Solaris kernel code in the Linux kernel with relatively minimal +- modification. The Solaris Porting LAyer Tests (SPLAT) is a Linux kernel +- module which provides a testing harness for the SPL module. +- . +- SPL can be particularly useful when you want to track upstream Illumos +- (or any other OpenSolaris fork) development closely and don't want the +- overhead of maintaining a large patch which converts Solaris primitives +- to Linux primitives. +- . +- This package contains the source code for the SPL and SPLAT Linux kernel +- modules, which can be used with DKMS, so that local kernel modules are +- automatically built and installed every time the kernel packages are +- upgraded. +- + Package: spl + Architecture: linux-any + Depends: ${shlibs:Depends}, ${misc:Depends} diff --git a/spl-patches/series b/spl-patches/series new file mode 100644 index 0000000..cc3e949 --- /dev/null +++ b/spl-patches/series @@ -0,0 +1,2 @@ +fix-control +fix-changelog-patch diff --git a/zfs-0.6.4.tar.gz b/zfs-0.6.4.tar.gz deleted file mode 100644 index 62d433a..0000000 Binary files a/zfs-0.6.4.tar.gz and /dev/null differ diff --git a/zfs-patches/fix-changelog.patch b/zfs-patches/fix-changelog.patch new file mode 100644 index 0000000..06a0c4f --- /dev/null +++ b/zfs-patches/fix-changelog.patch @@ -0,0 +1,14 @@ +Index: new-zfs/debian/changelog +=================================================================== +--- new-zfs.orig/debian/changelog 2015-04-12 14:06:48.000000000 +0200 ++++ new-zfs/debian/changelog 2015-04-12 17:07:09.000000000 +0200 +@@ -1,3 +1,9 @@ ++zfs-linux (0.6.4-1~wheezy) unstable; urgency=low ++ ++ * recompile for Proxmox VE, keep Proxmox VE versioning schema ++ ++ -- Proxmox Support Team Sun, 12 Apr 2015 17:06:15 +0200 ++ + zfs-linux (0.6.4-1-2-wheezy) wheezy; urgency=low + + * Replace apparently broken nfs.c with one that works on my Primary. diff --git a/zfs-patches/fix-control.patch b/zfs-patches/fix-control.patch new file mode 100644 index 0000000..48daacb --- /dev/null +++ b/zfs-patches/fix-control.patch @@ -0,0 +1,139 @@ +Index: new-zfs/debian/control.in +=================================================================== +--- new-zfs.orig/debian/control.in 2015-04-12 14:06:48.000000000 +0200 ++++ new-zfs/debian/control.in 2015-04-12 17:24:36.000000000 +0200 +@@ -88,36 +88,9 @@ + . + This zpool library provides support for managing zpools. + +-Package: zfs-dkms +-Architecture: all +-Pre-Depends: spl-dkms +-Depends: dkms (>> 2.1.1.2-5), lsb-release, ${misc:Depends}, file +-Recommends: zfsutils +-Replaces: lzfs, lzfs-dkms +-Provides: lustre-backend-fs, lzfs, lzfs-dkms, zfs-modules +-Conflicts: lzfs, lzfs-dkms +-Description: Native ZFS filesystem kernel modules for Linux +- The Z file system is a pooled filesystem designed for maximum data +- integrity, supporting data snapshots, multiple copies, and data +- checksums. +- . +- This DKMS package includes the SPA, DMU, ZVOL, and ZPL components of ZFS. +- +-Package: zfs-dracut +-Section: utils +-Architecture: linux-any +-Depends: dracut, zfs-modules | zfs-dkms, zfsutils, ${misc:Depends} +-Description: Native ZFS root filesystem capabilities for Linux +- The Z file system is a pooled filesystem designed for maximum data +- integrity, supporting data snapshots, multiple copies, and data +- checksums. +- . +- This package adds ZFS to the system initramfs with a hook +- for the dracut infrastructure. +- + Package: zfs-initramfs + Architecture: linux-any +-Depends: initramfs-tools, zfs-modules | zfs-dkms, zfsutils, ${misc:Depends} ++Depends: initramfs-tools, zfsutils, ${misc:Depends} + Description: Native ZFS root filesystem capabilities for Linux + The Z file system is a pooled filesystem designed for maximum data + integrity, supporting data snapshots, multiple copies, and data +@@ -130,7 +103,6 @@ + Section: admin + Architecture: linux-any + Depends: initscripts, lsb-base, python, ${misc:Depends}, ${shlibs:Depends} +-Recommends: zfs-modules | zfs-dkms + Suggests: nfs-kernel-server, samba-common-bin (>= 3.0.23), zfs-initramfs + Conflicts: zfs, zfs-fuse + Replaces: zfs +Index: new-zfs/debian/rules +=================================================================== +--- new-zfs.orig/debian/rules 2015-04-12 14:06:48.000000000 +0200 ++++ new-zfs/debian/rules 2015-04-12 17:18:04.000000000 +0200 +@@ -24,13 +24,11 @@ + endif + + ifndef SPL +-SPLSRC=/usr/src/spl-$(VERSION) ++SPLSRC=../pkg-spl + endif + + CFG_OPTS=--without-selinux \ +- --with-linux=$(KSRC) \ +- --with-linux-obj=$(KOBJ) \ +- --with-spl=$(SPLSRC) ++ --with-config=user + + non_epoch_version=$(shell echo $(KVERS) | perl -pe 's/^\d+://') + PACKAGE=zfs +@@ -44,15 +42,9 @@ + dh $@ --with dkms --parallel + + override_dh_prep-base-deb-files: +- sed -e 's/##SHLIB_MAJOR##/$(SHLIB_MAJOR)/g ; s/##MODULES_BUILD_DEPENDS##/linux-headers-$(KVERS)-common, linux-headers-$(KVERS)-$(DEB_HOST_ARCH), spl-dkms/g' \ ++ sed -e 's/##SHLIB_MAJOR##/$(SHLIB_MAJOR)/g ; s/##MODULES_BUILD_DEPENDS##/pve-headers-$(KVERS)/g' \ + < debian/control.in > debian/control + +- sed -e 's/##SHLIB_MAJOR##/$(SHLIB_MAJOR)/g' \ +- < debian/control.udeb.in >> debian/control +- +- sed -e 's/##KVERS##/$(KVERS)/g ; s/#KVERS#/$(KVERS)/g ; s/_KVERS_/$(KVERS)/g ; s/##KDREV##/$(KDREV)/g ; s/#KDREV#/$(KDREV)/g ; s/_KDREV_/$(KDREV)/g ; s/_ARCH_/$(DEB_HOST_ARCH)/g ; s/_IMGVER_/$(KIMGVER)/g' \ +- < debian/control.modules.in >> debian/control +- + for templ in $(wildcard $(CURDIR)/debian/*_SHLIB_MAJOR_*.in); do \ + cat $$templ > `echo $$templ | sed -e 's/_SHLIB_MAJOR_/$(SHLIB_MAJOR)/g ; s/\.in$$//'`; \ + done +@@ -89,42 +81,6 @@ + @# Install the utilities. + $(MAKE) install DESTDIR='$(CURDIR)/debian/tmp' + +- @# Get a bare copy of the source code for DKMS. +- @# This creates the $(CURDIR)/$(NAME)-$(VERSION)/ tree, which does not +- @# contain the userland sources. NB: Remove-userland-dist-rules.patch +- $(MAKE) distdir +- +- @# Install the DKMS source. +- @# We only want the files needed to build the modules +- mkdir -p '$(CURDIR)/debian/tmp/usr/src/$(NAME)-$(VERSION)' +- touch '$(CURDIR)/debian/tmp/usr/src/$(NAME)-$(VERSION)/.nogitrelease' +- cp '$(CURDIR)/autogen.sh' '$(CURDIR)/debian/tmp/usr/src/$(NAME)-$(VERSION)/' +- ( for d in include module config; do \ +- rm -Rf $(CURDIR)/debian/tmp/usr/src/$(NAME)-$(VERSION)/$$d; \ +- done) +- $(foreach file,$(DKMSFILES),mv '$(CURDIR)/$(NAME)-$(VERSION)/$(file)' '$(CURDIR)/debian/tmp/usr/src/$(NAME)-$(VERSION)' || exit 1;) +- @# Hellish awk line: +- @# * Deletes from configure.ac the parts not needed for building the kernel module +- @# * It deletes from inside AC_CONFIG_FILES([]) everything except: +- @# (Makefile$|include/|module/|*.release$) +- @# * Takes care of spaces and tabs +- awk '/^AC_CONFIG_FILES\(\[/,/^\]\)/ { if ($$0 !~ /^(AC_CONFIG_FILES\(\[([ \t]+)?$$|\]\)([ \t]+)?$$|([ \t]+)?(include\/|module\/|Makefile([ \t]+)?$$|zfs\.release([ \t]+)?$$))/){next} } {print}' \ +- '$(CURDIR)/$(NAME)-$(VERSION)/configure.ac' > '$(CURDIR)/debian/tmp/usr/src/$(NAME)-$(VERSION)/configure.ac' +- @# Set "SUBDIRS = module include" for CONFIG_KERNEL and remove SUBDIRS for all other configs. +- sed '1,/CONFIG_KERNEL/s/SUBDIRS.*=.*//g;s/SUBDIRS.*=.*/SUBDIRS = module include/g;' \ +- '$(CURDIR)/$(NAME)-$(VERSION)/Makefile.am' > '$(CURDIR)/debian/tmp/usr/src/$(NAME)-$(VERSION)/Makefile.am' +- @# Sanity test +- grep -q 'SUBDIRS = module include' '$(CURDIR)/debian/tmp/usr/src/$(NAME)-$(VERSION)/Makefile.am' +- @# Run autogen on the stripped source tree +- cd '$(CURDIR)/debian/tmp/usr/src/$(NAME)-$(VERSION)'; ./autogen.sh +- rm -fr '$(CURDIR)/debian/tmp/usr/src/$(NAME)-$(VERSION)/autom4te.cache' +- +- @# This shunt allows DKMS to install the Module.symvers and zfs_config.h +- @# files to the ${dkms_tree} area through the POST_INSTALL directive. +- echo '#!/bin/sh' >'$(CURDIR)/debian/tmp/usr/src/$(NAME)-$(VERSION)/cp' +- echo 'cp "$$@"' >>'$(CURDIR)/debian/tmp/usr/src/$(NAME)-$(VERSION)/cp' +- chmod 755 '$(CURDIR)/debian/tmp/usr/src/$(NAME)-$(VERSION)/cp' +- + mkdir -p $(CURDIR)/debian/tmp/usr/lib + for i in `ls $(CURDIR)/debian/tmp/lib/*.so`; do \ + ln -s /lib/`readlink $${i}` $(CURDIR)/debian/tmp/usr/lib/`basename $${i}`; \ +@@ -138,7 +94,7 @@ + mv $(CURDIR)/debian/tmp/usr/lib/systemd/system/* $(CURDIR)/debian/tmp/lib/systemd/system/ + rmdir $(CURDIR)/debian/tmp/usr/lib/systemd/system + +- find '$(CURDIR)/debian/tmp' -name '*~' | xargs rm ++ #find '$(CURDIR)/debian/tmp' -name '*~' | xargs rm + + # Fix the includes according to https://github.com/zfsonlinux/zfs/issues/2903 + ./debian/fix_includes-libspl.sh diff --git a/zfs-patches/series b/zfs-patches/series new file mode 100644 index 0000000..323cac1 --- /dev/null +++ b/zfs-patches/series @@ -0,0 +1,2 @@ +fix-control.patch +fix-changelog.patch