On Tue, Nov 03, 2009 at 11:05:53PM +0100, Lars Ellenberg wrote:
> On Tue, Nov 03, 2009 at 02:34:30PM -0600, Andrew Barringer wrote:
> > Thanks for the Classic linux help aka: you are st00pid go bug off and
> > RTFM.
> > 
> > For what's it's worth...
> > 
> > The problem was submitted weeks ago to dkms bug list and it was punted
> > to the drbd8 list and there's been no update from that team.
> 
> You should have said so.
> 
> > I thought it obvious that I would have tried what it suggests.
> 
> You have no idea how many people don't even read
> single line error messages, let alone multi line ones,
> and come complaining right away, without trying what was suggested
> in that message.
> 
> > Okay... I'll go away now as directed.
> 
>  ;)
> 
> apparently dkms and drbd sources and debian rules are somewhat
> incompatible currently.
> I'm sorry, I don't know much about dkms internals,

but I know enough apparently.

session log follows.

        (NFSROOT karmic-amd64) # apt-get install drbd8-source
        Reading package lists... Done
        Building dependency tree
        Reading state information... Done
        The following NEW packages will be installed:
          drbd8-source
        0 upgraded, 1 newly installed, 0 to remove and 15 not upgraded.
        Need to get 0B/264kB of archives.
        After this operation, 1044kB of additional disk space will be used.
        Can not write log, openpty() failed (/dev/pts not mounted?)
        Selecting previously deselected package drbd8-source.
        (Reading database ... 413773 files and directories currently installed.)
        Unpacking drbd8-source (from 
.../drbd8-source_2%3a8.3.3-0ubuntu1_all.deb) ...
        Can not write log, openpty() failed (/dev/pts not mounted?)
        Setting up drbd8-source (2:8.3.3-0ubuntu1) ...
        Removing all [drbd8-8.3.3] DKMS Modules

        Error! There are no instances of module: drbd8
        8.3.3 located in the DKMS tree.
        Done.
        Adding [drbd8-8.3.3] Module to DKMS build system

        *************************************************
        ERROR: Missing kernel headers.

ok, you know that one already.

in this case, it is correct: it triggers on uname -r,
and in that changeroot, uname -r does not match any installed linux header
packages.
but anyways.


        (NFSROOT karmic-amd64) # cat /var/lib/dpkg/info/drbd8-source.postinst
        #!/bin/sh
        set -e

        PKG="drbd8"
        PKGVER=`dpkg-query -W -f='${Version}' "$PKG"-source | cut -d: -f2 | cut 
-f1 -d-`

        case "$1" in
                configure)
                        echo "Removing all [$PKG-$PKGVER] DKMS Modules"
                        dkms remove -m $PKG -v $PKGVER --all >/dev/null || true
                        echo "Done."
                        echo "Adding [$PKG-$PKGVER] Module to DKMS build system"
                        dkms add -m $PKG -v $PKGVER >/dev/null
                        if ! dpkg --status linux-headers-`uname -r` 2>/dev/null 
| grep -qs "Status: install ok installed"; then
                                flavor=`uname -r | sed "s/.*-//"`
                                echo
                                echo 
"*************************************************"
                                echo "ERROR: Missing kernel headers."
                                echo
                                echo "You appear to have at least some kernel 
headers"
                                echo "installed, but you do not have the 
necessary"
                                echo "headers to build $PKG-source against this 
kernel."
                                echo
                                echo "You might try installing the meta 
package:"
                                echo " $ sudo apt-get install 
linux-headers-$flavor"
                                echo "or specifically"
                                echo " $ sudo apt-get install 
linux-headers-"`uname -r`
                                echo "to obtain the necessary build 
dependencies."
                                echo
                                echo 
"*************************************************"
                                echo
                                exit 1
                        fi
                        echo "Doing initial module build"
                        dkms build -m $PKG -v $PKGVER >/dev/null

THERE.

                        echo "Installing initial module"
                        dkms install -m $PKG -v $PKGVER >/dev/null
                        echo "Done."
                ;;
        esac


lets try this:

        (NFSROOT karmic-amd64) # dkms build --help

        Error!  Unknown option: --help
        Usage: /usr/sbin/dkms [action] [options]
          [action]  = { add | remove | build | install | uninstall | match
                       | mkdriverdisk | mktarball | ldtarball | mkrpm | mkkmp | 
mkdeb | status }
          [options] = [-m module] [-v module-version] [-k kernel-version] [-a 
arch]
                      [-d distro] [-c dkms.conf-location] [-q] [--force] [--all]
                      [--templatekernel=kernel] 
[--directive='cli-directive=cli-value']
                      [--config=kernel-.config-location] 
[--archive=tarball-location]
                      [--kernelsourcedir=source-location] [--no-prepare-kernel]
                      [--binaries-only] [--source-only] [-r release (SuSE)] 
[--verbose]
                      [--size] [--spec=specfile] [--media=floppy|iso|tar] 
[--legacy-postinst=0|1]

        (NFSROOT karmic-amd64) # dkms build -m drbd8 -v 8.3.5 -k 
2.6.31-14-generic

        Error! DKMS tree does not contain: drbd8-8.3.5
        Build cannot continue without the proper tree.

oops.  my fault. not 8.3.5, only 8.3.3 ;-)
again:

        (NFSROOT karmic-amd64) # dkms build --verbose -m drbd8 -v 8.3.3 -k 
2.6.31-14-generic

        Kernel preparation unnecessary for this kernel.  Skipping...

        Building module:
        make -C drbd clean KERNELDIR=/lib/modules/2.6.31-14-generic/build
        make: Entering directory `/var/lib/dkms/drbd8/8.3.3/build/drbd'
        rm -rf .tmp_versions
        rm -f *.[oas] *.ko .*.cmd .*.d .*.tmp *.mod.c .*.flags .depend .kernel*
        make: Leaving directory `/var/lib/dkms/drbd8/8.3.3/build/drbd'

        su nobody -c "make KERNELRELEASE=2.6.31-14-generic -C drbd 
KERNELDIR=/lib/modules/2.6.31-14-generic/build" >> 
/var/lib/dkms/drbd8/8.3.3/build/make.log 2>&1
        (bad exit status: 2)

WTF? KERNELDIR? it has always been KDIR with DRBD.

        Error! Bad return status for module build on kernel: 2.6.31-14-generic 
(x86_64)
        Consult the make.log in the build directory
        /var/lib/dkms/drbd8/8.3.3/build/ for more information.
        0
        0

        (NFSROOT karmic-amd64) /var/lib/dkms/drbd8/8.3.3/build# cat dkms.conf
        PACKAGE_NAME="drbd"
        PACKAGE_VERSION="8.3.3"
        AUTOINSTALL=yes
        CLEAN="make -C drbd clean KERNELDIR=$kernel_source_dir"
        MAKE="make -C drbd KERNELDIR=$kernel_source_dir"

SIC.
that won't work.
at least not with the Makefile from our tarball.
it may _sometimes_ have worked,
because our makefile defaults to use `uname -r`,
if no explicit KDIR was supplied.

        BUILT_MODULE_NAME[0]="drbd"
        BUILT_MODULE_LOCATION[0]="drbd"
        DEST_MODULE_LOCATION[0]="/kernel/updates"
        MODULES_CONF[0]="options drbd cn_idx=7"

        (NFSROOT karmic-amd64) /var/lib/dkms/drbd8/8.3.3# ls -l
        drwxr-xr-x 4 nobody root 4096 2009-11-03 23:18 build
        lrwxrwxrwx 1 root   root   20 2009-11-03 23:12 source -> 
/usr/src/drbd8-8.3.3

        (NFSROOT karmic-amd64) /var/lib/dkms/drbd8/8.3.3/source# ls -la
        -rw-r--r--  1 root root  307 2009-10-07 19:27 dkms.conf
        drwxr-xr-x  3 root root 4096 2009-11-03 23:12 drbd
        drwxr-xr-x  2 root root 4096 2009-11-03 23:12 scripts

        (NFSROOT karmic-amd64) /var/lib/dkms/drbd8/8.3.3/source# vi dkms.conf
        PACKAGE_NAME="drbd"
        PACKAGE_VERSION="8.3.3"
        AUTOINSTALL=yes
        CLEAN="make -C drbd clean KDIR=$kernel_source_dir"
        MAKE="make -C drbd KDIR=$kernel_source_dir"

Now. THAT should be better.

        BUILT_MODULE_NAME[0]="drbd"
        BUILT_MODULE_LOCATION[0]="drbd"
        DEST_MODULE_LOCATION[0]="/kernel/updates"
        MODULES_CONF[0]="options drbd cn_idx=7"

        (NFSROOT karmic-amd64) /var/lib/dkms/drbd8/8.3.3/source# dkms build 
--verbose -m drbd8 -v 8.3.3 -k 2.6.31-14-generic

        Kernel preparation unnecessary for this kernel.  Skipping...

        Building module:
        make -C drbd clean KDIR=/lib/modules/2.6.31-14-generic/build
        make: Entering directory `/var/lib/dkms/drbd8/8.3.3/build/drbd'
        rm -rf .tmp_versions
        rm -f *.[oas] *.ko .*.cmd .*.d .*.tmp *.mod.c .*.flags .depend .kernel*
        make: Leaving directory `/var/lib/dkms/drbd8/8.3.3/build/drbd'

        su nobody -c "make KERNELRELEASE=2.6.31-14-generic -C drbd 
KDIR=/lib/modules/2.6.31-14-generic/build" >> 
/var/lib/dkms/drbd8/8.3.3/build/make.log 2>&1

        make -C drbd clean KDIR=/lib/modules/2.6.31-14-generic/build
        make: Entering directory `/var/lib/dkms/drbd8/8.3.3/build/drbd'
        rm -rf .tmp_versions
        rm -f *.[oas] *.ko .*.cmd .*.d .*.tmp *.mod.c .*.flags .depend .kernel*
        make: Leaving directory `/var/lib/dkms/drbd8/8.3.3/build/drbd'


        DKMS: build Completed.


See.

Now we can go together and complain to the package maintainers.

hth,

> Just cd'ing into the sources, and doing the make, should work fine.
> 
> if you have to do the make yourself anyways,
> I'd suggest using the 8.3.5 tarball, though.

-- 
: Lars Ellenberg
: LINBIT | Your Way to High Availability
: DRBD/HA support and consulting http://www.linbit.com

DRBD® and LINBIT® are registered trademarks of LINBIT, Austria.
__
please don't Cc me, but send to list   --   I'm subscribed
_______________________________________________
drbd-user mailing list
[email protected]
http://lists.linbit.com/mailman/listinfo/drbd-user

Reply via email to