Merge commit 'refs/top-bases/linux-have-xdr' into linux-have-xdr

This commit is contained in:
Brian Behlendorf 2009-03-10 11:27:05 -07:00
commit 88527141d6
5 changed files with 243 additions and 101 deletions

View File

@ -1,9 +1,56 @@
AUTOMAKE_OPTIONS = foreign dist-zip
EXTRA_DIST = autogen.sh AUTHORS COPYING COPYRIGHT ChangeLog DISCLAIMER
EXTRA_DIST += GIT META OPENSOLARIS.LICENSE README ZFS.RELEASE
SUBDIRS = config doc scripts lib cmd module
.PHONY: rpm
rpms: dist-bzip2
rpmbuild -ta $(distdir).tar.bz2
AUTOMAKE_OPTIONS = foreign dist-zip
EXTRA_DIST = autogen.sh zfs.spec.in META DISCLAIMER GIT
EXTRA_DIST += OPENSOLARIS.LICENSE ZFS.RELEASE
include_HEADERS = zfs_config.h
distclean-local::
-$(RM) -R autom4te*.cache
-find . \( -name SCCS -o -name BitKeeper -o -name .svn -o -name CVS \
-o -name .pc -o -name .hg -o -name .git \) -prune -o \
\( -name '*.orig' -o -name '*.rej' -o -name '*~' \
-o -name '*.bak' -o -name '#*#' -o -name '.*.orig' \
-o -name '.*.rej' -o -name 'aclocal.m4' -o -size 0 \
-o -name '*%' -o -name '.*.cmd' -o -name 'core' \
-o -name 'Makefile' -o -name 'Module.symvers' \
-o -name '.script-config' \) \
-type f -print | xargs $(RM)
install-data-local:
$(INSTALL) module/Module.symvers $(DESTDIR)/$(includedir)
ctags:
$(RM) $(top_srcdir)/tags
find $(top_srcdir) -name .git -prune -o -name '*.[hc]' | xargs ctags
etags:
$(RM) $(top_srcdir)/TAGS
find $(top_srcdir) -name .pc -prune -o -name '*.[hc]' | xargs etags -a
tags: ctags etags
rpm-local:
mkdir -p $(rpmbuild)/TMP && \
mkdir -p $(rpmbuild)/BUILD && \
mkdir -p $(rpmbuild)/RPMS && \
mkdir -p $(rpmbuild)/SRPMS && \
mkdir -p $(rpmbuild)/SPECS && cp $(PACKAGE).spec $(rpmbuild)/SPECS && \
mkdir -p $(rpmbuild)/SOURCES && cp $(distdir).tar.gz $(rpmbuild)/SOURCES
srpm: dist
rpmbuild=`mktemp -t -d $(PACKAGE)-build-$$USER-XXXXXXXX`; \
$(MAKE) $(AM_MAKEFLAGS) rpmbuild="$$rpmbuild" rpm-local || exit 1; \
/usr/bin/rpmbuild --define "_tmppath $$rpmbuild/TMP" --define "_topdir $$rpmbuild" --define "build_src_rpm 1" --define "dist %{nil}" --nodeps -bs $$rpmbuild/SPECS/$(PACKAGE).spec || exit 1; \
cp $$rpmbuild/SRPMS/$(distdir)-$(ZFS_META_RELEASE).src.rpm . || exit 1;\
$(RM) -R $$rpmbuild
# Use 'make rpm LINUX_VERSION=2.x.y-z' to rebuild the source RPM
# against any installed kernel-devel-2.x.y-z package. This will
# override the LINUX_VERSION detected at configure time.
rpm: srpm
rpmbuild=`mktemp -t -d $(PACKAGE)-build-$$USER-XXXXXXXX`; \
$(MAKE) $(AM_MAKEFLAGS) rpmbuild="$$rpmbuild" rpm-local || exit 1; \
/usr/bin/rpmbuild --define "_tmppath $$rpmbuild/TMP" --define "_topdir $$rpmbuild" --define "dist %{nil}" --define "require_kver $(LINUX_VERSION)" --nodeps --rebuild $(distdir)-$(ZFS_META_RELEASE).src.rpm || exit 1; \
cp $$rpmbuild/RPMS/*/* . || exit 1; \
$(RM) -R $$rpmbuild

View File

@ -1 +0,0 @@
obj-m := conftest.o

View File

@ -88,31 +88,15 @@ AC_DEFUN([ZFS_AC_SPL], [
AC_MSG_CHECKING([spl source directory])
if test -z "$splsrc"; then
splbuild=
sourcelink=/tmp/`whoami`/spl
buildlink=/tmp/`whoami`/spl
if test -e $sourcelink; then
splsrc=`(cd $sourcelink; /bin/pwd)`
fi
if test -e $buildlink; then
splbuild=`(cd $buildlink; /bin/pwd)`
fi
if test -z "$splsrc"; then
splsrc=$splbuild
fi
fi
if test -z "$splsrc" -o -z "$splbuild"; then
sourcelink=/lib/modules/${ver}/source
buildlink=/lib/modules/${ver}/build
sourcelink=${LINUX}/include/spl
buildlink=${LINUX_OBJ}/include/spl
if test -e $sourcelink; then
splsrc=`(cd $sourcelink; /bin/pwd)`
splsrc=`readlink -f ${sourcelink}`
fi
if test -e $buildlink; then
splbuild=`(cd $buildlink; /bin/pwd)`
splbuild=`readlink -f ${buildlink}`
fi
if test -z "$splsrc"; then
splsrc=$splbuild
@ -129,6 +113,22 @@ AC_DEFUN([ZFS_AC_SPL], [
AC_MSG_CHECKING([spl build directory])
AC_MSG_RESULT([$splbuild])
AC_MSG_CHECKING([spl Module.symvers])
if test -r $splbuild/module/Module.symvers; then
splsymvers=$splbuild/module/Module.symvers
elif test -r $kernelbuild/include/spl/Module.symvers; then
splsymvers=$kernelbuild/include/spl/Module.symvers
fi
if test -z "$splsymvers"; then
AC_MSG_RESULT([Not found])
AC_MSG_ERROR([
*** Cannot find extra Module.symvers in the spl source.
*** Please prepare the spl source before running this script])
fi
AC_MSG_RESULT([$splsymvers])
AC_MSG_CHECKING([spl source version])
if test -r $splbuild/spl_config.h &&
fgrep -q VERSION $splbuild/spl_config.h; then
@ -148,33 +148,20 @@ AC_DEFUN([ZFS_AC_SPL], [
AC_MSG_RESULT([$splsrcver])
AC_MSG_CHECKING([spl Module.symvers])
if test -r $splbuild/module/Module.symvers; then
splsymvers=$splbuild/module/Module.symvers
elif test -r $kernelbuild/Module.symvers; then
splsymvers=$kernelbuild/Module.symvers
fi
if test -z "$splsymvers"; then
AC_MSG_RESULT([Not found])
AC_MSG_ERROR([
*** Cannot find extra Module.symvers in the spl source.
*** Please prepare the spl source before running this script])
fi
AC_MSG_RESULT([$splsymvers])
AC_SUBST(splsrc)
AC_SUBST(splsymvers)
])
AC_DEFUN([ZFS_AC_LICENSE], [
AC_MSG_CHECKING([zfs license])
license=`grep MODULE_LICENSE module/zfs/zfs_ioctl.c | cut -f2 -d'"'`
AC_MSG_RESULT([$license])
if test "$license" = GPL; then
LICENSE=`grep MODULE_LICENSE module/zfs/zfs_ioctl.c | cut -f2 -d'"'`
AC_MSG_RESULT([$LICENSE])
if test "$LICENSE" = GPL; then
AC_DEFINE([HAVE_GPL_ONLY_SYMBOLS], [1],
[Define to 1 if module is licensed under the GPL])
fi
AC_SUBST(LICENSE)
])
AC_DEFUN([ZFS_AC_DEBUG], [
@ -228,30 +215,34 @@ AC_DEFUN([ZFS_AC_CONFIG], [
MODDIR=$TOPDIR/module
UNAME=`uname -r | cut -d- -f1`
if test -z "$ZFS_CONFIG"; then
ZFS_CONFIG=all
fi
AC_SUBST(UNAME)
AC_SUBST(TOPDIR)
AC_SUBST(BUILDDIR)
AC_SUBST(LIBDIR)
AC_SUBST(CMDDIR)
AC_SUBST(MODDIR)
AC_SUBST(UNAME)
AC_SUBST(ZFS_CONFIG)
AC_ARG_WITH([zfs-config],
AS_HELP_STRING([--with-config=CONFIG],
[Config file 'kernel|user|all']),
[zfsconfig="$withval"])
[ZFS_CONFIG="$withval"])
AC_MSG_CHECKING([zfs config])
AC_MSG_RESULT([$zfsconfig]);
AC_MSG_RESULT([$ZFS_CONFIG]);
case "$zfsconfig" in
case "$ZFS_CONFIG" in
kernel) ZFS_AC_CONFIG_KERNEL ;;
user) ZFS_AC_CONFIG_USER ;;
all) ZFS_AC_CONFIG_KERNEL
ZFS_AC_CONFIG_USER ;;
*)
AC_MSG_RESULT([Error!])
AC_MSG_ERROR([Bad value "$zfsconfig" for --with-config,
AC_MSG_ERROR([Bad value "$ZFS_CONFIG" for --with-config,
user kernel|user|all]) ;;
esac
@ -287,15 +278,15 @@ dnl #
dnl # ZFS_LINUX_COMPILE_IFELSE / like AC_COMPILE_IFELSE
dnl #
AC_DEFUN([ZFS_LINUX_COMPILE_IFELSE], [
m4_ifvaln([$1], [ZFS_LINUX_CONFTEST([$1])])dnl
rm -f build/conftest.o build/conftest.mod.c build/conftest.ko build/Makefile
echo "obj-m := conftest.o" >build/Makefile
dnl AS_IF([AC_TRY_COMMAND(cp conftest.c build && make [$2] CC="$CC" -f $PWD/build/Makefile LINUXINCLUDE="-Iinclude -include include/linux/autoconf.h" -o tmp_include_depends -o scripts -o include/config/MARKER -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM SUBDIRS=$PWD/build) >/dev/null && AC_TRY_COMMAND([$3])],
AS_IF([AC_TRY_COMMAND(cp conftest.c build && make [$2] CC="$CC" LINUXINCLUDE="-Iinclude -include include/linux/autoconf.h" -o tmp_include_depends -o scripts -o include/config/MARKER -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build) >/dev/null && AC_TRY_COMMAND([$3])],
[$4],
[_AC_MSG_LOG_CONFTEST
m4_ifvaln([$5],[$5])dnl])dnl
rm -f build/conftest.o build/conftest.mod.c build/conftest.mod.o build/conftest.ko m4_ifval([$1], [build/conftest.c conftest.c])[]dnl
m4_ifvaln([$1], [ZFS_LINUX_CONFTEST([$1])])
rm -Rf build && mkdir -p build
echo "obj-m := conftest.o" >build/Makefile
AS_IF(
[AC_TRY_COMMAND(cp conftest.c build && make [$2] CC="$CC" LINUXINCLUDE="-Iinclude -Iinclude2 -I$LINUX/include -include include/linux/autoconf.h" -o tmp_include_depends -o scripts -o include/config/MARKER -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build) >/dev/null && AC_TRY_COMMAND([$3])],
[$4],
[_AC_MSG_LOG_CONFTEST m4_ifvaln([$5],[$5])]
)
rm -Rf build
])
dnl #
@ -303,10 +294,10 @@ dnl # ZFS_LINUX_TRY_COMPILE like AC_TRY_COMPILE
dnl #
AC_DEFUN([ZFS_LINUX_TRY_COMPILE],
[ZFS_LINUX_COMPILE_IFELSE(
[AC_LANG_SOURCE([ZFS_LANG_PROGRAM([[$1]], [[$2]])])],
[modules],
[test -s build/conftest.o],
[$3], [$4])
[AC_LANG_SOURCE([ZFS_LANG_PROGRAM([[$1]], [[$2]])])],
[modules],
[test -s build/conftest.o],
[$3], [$4])
])
dnl #

View File

@ -1,34 +1,34 @@
#
# This file is part of the ZFS Linux port.
#
# Copyright (c) 2008 Lawrence Livermore National Security, LLC.
# Produced at Lawrence Livermore National Laboratory
# Written by:
# Brian Behlendorf <behlendorf1@llnl.gov>,
# Herb Wartens <wartens2@llnl.gov>,
# Jim Garlick <garlick@llnl.gov>
# LLNL-CODE-403049
#
# CDDL HEADER START
#
# The contents of this file are subject to the terms of the
# Common Development and Distribution License, Version 1.0 only
# (the "License"). You may not use this file except in compliance
# with the License.
#
# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
# or http://www.opensolaris.org/os/licensing.
# See the License for the specific language governing permissions
# and limitations under the License.
#
# When distributing Covered Code, include this CDDL HEADER in each
# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
# If applicable, add the following below this CDDL HEADER, with the
# fields enclosed by brackets "[]" replaced with your own identifying
# information: Portions Copyright [yyyy] [name of copyright owner]
#
# CDDL HEADER END
#
/*
* This file is part of the ZFS Linux port.
*
* Copyright (c) 2008 Lawrence Livermore National Security, LLC.
* Produced at Lawrence Livermore National Laboratory
* Written by:
* Brian Behlendorf <behlendorf1@llnl.gov>,
* Herb Wartens <wartens2@llnl.gov>,
* Jim Garlick <garlick@llnl.gov>
* LLNL-CODE-403049
*
* CDDL HEADER START
*
* The contents of this file are subject to the terms of the
* Common Development and Distribution License, Version 1.0 only
* (the "License"). You may not use this file except in compliance
* with the License.
*
* You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
* or http://www.opensolaris.org/os/licensing.
* See the License for the specific language governing permissions
* and limitations under the License.
*
* When distributing Covered Code, include this CDDL HEADER in each
* file and include the License file at usr/src/OPENSOLARIS.LICENSE.
* If applicable, add the following below this CDDL HEADER, with the
* fields enclosed by brackets "[]" replaced with your own identifying
* information: Portions Copyright [yyyy] [name of copyright owner]
*
* CDDL HEADER END
*/
AC_INIT
AC_LANG(C)
@ -44,12 +44,6 @@ AC_PROG_CC
AC_PROG_LIBTOOL
AM_PROG_AS
zfsconfig=all
kernelsrc=
kernelbuild=
splsrc=
splbuild=
ZFS_AC_KERNEL
ZFS_AC_SPL
ZFS_AC_LICENSE
@ -92,5 +86,7 @@ AC_CONFIG_FILES([
module/zfs/Makefile
scripts/Makefile
scripts/zpool-config/Makefile
zfs.spec
])
AC_OUTPUT

109
zfs.spec.in Normal file
View File

@ -0,0 +1,109 @@
# The following block is used to allow the source RPM to be rebuilt
# against arbitrary kernels. It ensure the release name is correct
# and the proper build/install requires are set.
%if 0%{?require_kver:1}
%define kver %{require_kver}
%else
%define _kdir %((echo X; ls -1d /usr/src/kernels/* /usr/src/linux-* 2>/dev/null)|sed -e 's/linux-//' | tail -1)
%define kver %(basename %{_kdir})
%endif
# Each distro has its own kernel package naming convention.
%if 0%{?ch4}
%define kstr chaos-kernel
%define kdev chaos-kernel-devel
%define kdir /usr/src/kernels/%{kver}
%else
%define kstr kernel
%define kdev kernel-devel
%define kdir /usr/src/kernels/%{kver}
%endif
%define debug_package %{nil}
# The kernel version should only be appended to a binary RPM.
# When building a source RPM it must be kernel version agnostic.
%define name @PACKAGE@
%define version @VERSION@
%if %{?build_src_rpm:1}0
%define release @ZFS_META_RELEASE@
%else
%define release @ZFS_META_RELEASE@_%(echo %{kver} | sed -e 's/-/_/g')
%endif
%if 0%{?require_kver:1}
%define k_buildrequires %{kdev}=%{kver}
%define spl_buildrequires spl-devel>=@VERSION@
%else
%define k_buildrequires %{kdev}
%define spl_buildrequires spl-devel
%endif
Summary: ZFS File System
Group: Utilities/System
Name: %{name}
Version: %{version}
Release: %{release}
License: @LICENSE@
URL: git://eris.llnl.gov/zfs.git
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-%(%{__id_u} -n)
Source: %{name}-%{version}.tar.gz
Requires: %{kstr} = %{kver}
Requires: spl >= @VERSION@
BuildRequires: %{k_buildrequires}
BuildRequires: %{spl_buildrequires}
%description
The %{name} package contains kernel modules and support utilities for
the %{name} file system.
%package devel
Summary: ZFS File System Headers and Symbols
Group: Development/Libraries
Requires: %{kstr} = %{kver}
Requires: spl >= @VERSION@
BuildRequires: %{k_buildrequires}
BuildRequires: %{spl_buildrequires}
%description devel
The %{name}-devel package contains the header files and Module.symvers
symbols needed for building additional modules which use %{name}.
%prep
%setup
%build
%configure --includedir=%{kdir}/include/zfs --with-linux=%{kdir}
make
%install
rm -rf $RPM_BUILD_ROOT
make DESTDIR=$RPM_BUILD_ROOT install
%clean
rm -rf $RPM_BUILD_ROOT
%files
%defattr(-, root, root)
%doc AUTHORS ChangeLog COPYING COPYRIGHT DISCLAIMER GIT
%doc OPENSOLARIS.LICENSE README TODO ZFS.RELEASE
%{_sbindir}/*
/lib/modules/*
%files devel
%defattr(-,root,root)
%{kdir}/include/zfs/*
%post
if [ -f /boot/System.map-%{kver} ]; then
depmod -ae -F /boot/System.map-%{kver} %{kver} || exit 0
else
depmod -ae %{kver} || exit 0
fi
%postun
if [ -f /boot/System.map-%{kver} ]; then
depmod -ae -F /boot/System.map-%{kver} %{kver} || exit 0
else
depmod -ae %{kver} || exit 0
fi