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}
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:
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
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:
--- /dev/null
+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 <support@proxmox.com> Sun, 12 Apr 2015 17:09:48 +0200
++
+ spl-linux (0.6.4-1-wheezy) wheezy; urgency=low
+
+ * New upstream release.
--- /dev/null
+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}
--- /dev/null
+fix-control
+fix-changelog-patch
--- /dev/null
+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 <support@proxmox.com> 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.
--- /dev/null
+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
--- /dev/null
+fix-control.patch
+fix-changelog.patch