]> git.proxmox.com Git - mirror_spl-debian.git/blobdiff - scripts/kmodtool
dch: close a bug and refresh timestamp.
[mirror_spl-debian.git] / scripts / kmodtool
old mode 100755 (executable)
new mode 100644 (file)
index 2fe014c..ce3f042
@@ -37,6 +37,7 @@ kernel_versions_to_build_for=
 prefix=
 filterfile=
 target=
+buildroot=
 
 error_out()
 {
@@ -63,7 +64,7 @@ print_akmodtemplate ()
        cat <<EOF
 
 %global akmod_install mkdir -p \$RPM_BUILD_ROOT/%{_usrsrc}/akmods/; \\\
-rpmbuild --define "_sourcedir %{_sourcedir}" \\\
+LANG=C rpmbuild --define "_sourcedir %{_sourcedir}" \\\
 --define "_srcrpmdir \$RPM_BUILD_ROOT/%{_usrsrc}/akmods/" \\\
 -bs --nodeps %{_specdir}/%{name}.spec ; \\\
 ln -s \$(ls \$RPM_BUILD_ROOT/%{_usrsrc}/akmods/) \$RPM_BUILD_ROOT/%{_usrsrc}/akmods/${kmodname}-kmod.latest
@@ -154,9 +155,6 @@ Provides:         ${kmodname}-kmod = %{?epoch:%{epoch}:}%{version}-%{release}
 Requires:         ${kmodname}-kmod-common >= %{?epoch:%{epoch}:}%{version}
 Requires(post):   ${prefix}/sbin/depmod
 Requires(postun): ${prefix}/sbin/depmod
-%{?KmodsRequires:Requires: %{KmodsRequires}-uname-r = ${kernel_uname_r}}
-%{?KmodsBuildRequires:BuildRequires: %{KmodsBuildRequires}-uname-r = ${kernel_uname_r}}
-%{?KmodsBuildRequires:BuildRequires: %{KmodsBuildRequires}}
 EOF
 
        if [[ ${obsolete_name} ]]; then
@@ -169,6 +167,8 @@ EOF
             cat <<EOF
 Requires:         kernel-uname-r = ${kernel_uname_r}
 BuildRequires:   kernel-devel-uname-r = ${kernel_uname_r}
+%{?KmodsRequires:Requires: %{KmodsRequires}-uname-r = ${kernel_uname_r}}
+%{?KmodsRequires:BuildRequires: %{KmodsRequires}-uname-r = ${kernel_uname_r}}
 %post          -n kmod-${kmodname}-${kernel_uname_r}
 ${prefix}/sbin/depmod -aeF /boot/System.map-${kernel_uname_r} ${kernel_uname_r} > /dev/null || :
 %postun        -n kmod-${kmodname}-${kernel_uname_r}
@@ -201,15 +201,38 @@ EOF
 
 print_rpmtemplate_kmoddevelpkg ()
 {
+       if [[ "${1}" == "--custom" ]]; then
+               shift
+               local customkernel=true
+       elif [[ "${1}" == "--redhat" ]]; then
+               shift
+               local redhatkernel=true
+       fi
+
+       local kernel_uname_r=${1}
+
        cat <<EOF
 %package       -n kmod-${kmodname}-devel
 Summary:          ${kmodname} kernel module(s) devel common
 Group:            System Environment/Kernel
-Provides:         ${kmodname}-devel-kmod-common = %{?epoch:%{epoch}:}%{version}-%{release}
+Provides:         ${kmodname}-devel-kmod = %{?epoch:%{epoch}:}%{version}-%{release}
+EOF
+
+       if [[ ! ${customkernel} ]] && [[ ! ${redhatkernel} ]]; then
+               echo "Requires:        kmod-${kmodname}-devel-${kernel_uname_r} >= %{?epoch:%{epoch}:}%{version}-%{release}"
+       fi
+
+       if [[ ${obsolete_name} ]]; then
+               echo "Provides:        kmod-${obsolete_name}-devel = ${obsolete_version}"
+               echo "Obsoletes:       kmod-${obsolete_name}-devel < ${obsolete_version}"
+       fi
 
+       cat <<EOF
 %description  -n kmod-${kmodname}-devel
 This package provides the common header files to build kernel modules
-which depend on the ${kmodname} kernel module.
+which depend on the ${kmodname} kernel module.  It may optionally require
+the ${kmodname}-devel-<kernel> objects for the newest kernel.
+
 %files        -n kmod-${kmodname}-devel
 %defattr(644,root,root,755)
 %{_usrsrc}/${kmodname}-%{version}
@@ -238,23 +261,32 @@ print_rpmtemplate_per_kmoddevelpkg ()
        local kernel_uname_r=${1}
        local kernel_variant="${2:+-${2}}"
 
+       # first part
        cat <<EOF
 %package       -n kmod-${kmodname}-devel-${kernel_uname_r}
 Summary:          ${kmodname} kernel module(s) devel for ${kernel_uname_r}
 Group:            System Environment/Kernel
-Requires:         ${kmodname}-devel-kmod-common = %{?epoch:%{epoch}:}%{version}-%{release}
+Provides:         kernel-objects-for-kernel = ${kernel_uname_r}
 Provides:         ${kmodname}-devel-kmod = %{?epoch:%{epoch}:}%{version}-%{release}
-Provides:         ${kmodname}-devel-kmod-uname-r = ${kernel_uname_r}
+Provides:         kmod-${kmodname}-devel-uname-r = ${kernel_uname_r}
 EOF
 
+       if [[ ${obsolete_name} ]]; then
+               echo "Provides:        kmod-${obsolete_name}-devel-${kernel_uname_r} = ${obsolete_version}"
+               echo "Obsoletes:       kmod-${obsolete_name}-devel-${kernel_uname_r} < ${obsolete_version}"
+       fi
+
        # second part
        if [[ ! "${customkernel}" ]]; then
                cat <<EOF
-Requires:         kernel-uname-r = ${kernel_uname_r}
+Requires:         kernel-devel-uname-r = ${kernel_uname_r}
 BuildRequires:    kernel-devel-uname-r = ${kernel_uname_r}
+%{?KmodsDevelRequires:Requires: %{KmodsDevelRequires}-uname-r = ${kernel_uname_r}}
+%{?KmodsDevelRequires:BuildRequires: %{KmodsDevelRequires}-uname-r = ${kernel_uname_r}}
 EOF
        fi
 
+       # third part
        cat <<EOF
 %description  -n kmod-${kmodname}-devel-${kernel_uname_r}
 This package provides objects and symbols required to build kernel modules
@@ -280,8 +312,9 @@ Group:           System Environment/Kernel
 
 Provides:        ${kmodname}-kmod = %{?epoch:%{epoch}:}%{version}-%{release}
 Requires:        kmod-${kmodname}-${kernel_uname_r} >= %{?epoch:%{epoch}:}%{version}-%{release}
+%{?KmodsMetaRequires:Requires: %{?KmodsMetaRequires}}
 EOF
-       
+
                if [[ ${obsolete_name} ]]; then
                        echo "Provides:        kmod-${obsolete_name}${kernel_variant} = ${obsolete_version}"
                        echo "Obsoletes:       kmod-${obsolete_name}${kernel_variant} < ${obsolete_version}"
@@ -305,9 +338,9 @@ print_customrpmtemplate ()
 {
        for kernel in ${1}
        do
-               if      [[ -e "/usr/src/kernels/${kernel}" ]] ; then
+               if [[ -e "${buildroot}/usr/src/kernels/${kernel}" ]] ; then
                        # this looks like a Fedora/RH kernel -- print a normal template (which includes the proper BR) and be happy :)
-                       kernel_versions="${kernel_versions}${kernel}___%{_usrsrc}/kernels/${kernel} "
+                       kernel_versions="${kernel_versions}${kernel}___${buildroot}%{_usrsrc}/kernels/${kernel} "
 
                        # parse kernel versions string and print template
                        local kernel_verrelarch=${kernel%%${kernels_known_variants}}
@@ -315,6 +348,10 @@ print_customrpmtemplate ()
 
                        # create development package
                        if [[ "${devel}" ]]; then
+                               # create devel package including common headers
+                               print_rpmtemplate_kmoddevelpkg --redhat ${kernel} ${kernel##${kernel_verrelarch}}
+
+                               # create devel package
                                print_rpmtemplate_per_kmoddevelpkg --redhat ${kernel} ${kernel##${kernel_verrelarch}}
                        fi
                elif [[ -e ${prefix}/lib/modules/"${kernel}"/build/Makefile ]] ; then 
@@ -326,6 +363,10 @@ print_customrpmtemplate ()
 
                        # create development package
                        if [[ "${devel}" ]]; then
+                               # create devel package including common headers
+                               print_rpmtemplate_kmoddevelpkg --custom "${kernel}"
+
+                               # create devel package
                                print_rpmtemplate_per_kmoddevelpkg --custom "${kernel}"
                        fi
                else
@@ -333,11 +374,6 @@ print_customrpmtemplate ()
                fi
        done
 
-       # create common development package
-       if [[ "${devel}" ]]; then
-               print_rpmtemplate_kmoddevelpkg "${1}"
-       fi
-
        # well, it's no header anymore, but who cares ;-)
        print_rpmtemplate_header
 }
@@ -365,16 +401,14 @@ print_rpmtemplate ()
                # create package
                print_rpmtemplate_per_kmodpkg ${kernel} ${kernel##${kernel_verrelarch}}
 
-               # create development package
                if [[ "${devel}" ]]; then
+                       # create devel package including common headers
+                       print_rpmtemplate_kmoddevelpkg ${kernel} ${kernel##${kernel_verrelarch}}
+
+                       # create devel package
                        print_rpmtemplate_per_kmoddevelpkg ${kernel} ${kernel##${kernel_verrelarch}}
                fi
        done
-
-       # create common development package
-       if [[ "${devel}" ]]; then
-               print_rpmtemplate_kmoddevelpkg "${1}"
-       fi
 }
 
 myprog_help ()
@@ -382,7 +416,6 @@ myprog_help ()
        echo "Usage: $(basename ${0}) [OPTIONS]"
        echo $'\n'"Creates a template to be used during kmod building"
        echo $'\n'"Available options:"
-       # FIXME echo " --datadir <dir>     -- look for our shared files in <dir>"
        echo " --filterfile <file>  -- filter the results with grep --file <file>"
        echo " --for-kernels <list> -- created templates only for these kernels"
        echo " --kmodname <file>    -- name of the kmod (required)"
@@ -390,6 +423,7 @@ myprog_help ()
        echo " --noakmod            -- no akmod package"
        echo " --repo <name>        -- use buildsys-build-<name>-kerneldevpkgs"
        echo " --target <arch>      -- target-arch (required)"
+       echo " --buildroot <dir>    -- Build root (place to look for build files)"
 }
 
 while [ "${1}" ] ; do
@@ -478,6 +512,11 @@ while [ "${1}" ] ; do
                        shift
                        build_kernels="current"
                        ;;
+               --buildroot)
+                       shift
+                       buildroot="${1}"
+                       shift
+                       ;;
                --help)
                        myprog_help
                        exit 0