]> pilppa.org Git - familiar-h63xx-build.git/blobdiff - org.handhelds.familiar/classes/kernel.bbclass
kernel.bbclass: be more verbose about unresolved symbols.
[familiar-h63xx-build.git] / org.handhelds.familiar / classes / kernel.bbclass
index e663643ce532ccbd3666a2c1feec578c3c9c62a4..8a5b814c0422be13683a969399ab82dd45ac87f1 100644 (file)
@@ -52,8 +52,6 @@ def get_kernelmajorversion(p):
 KERNEL_VERSION = "${@get_kernelversion('${S}/include/linux/version.h')}"
 KERNEL_MAJOR_VERSION = "${@get_kernelmajorversion('${KERNEL_VERSION}')}"
 
-KERNEL_LOCALVERSION ?= ""
-
 # kernels are generally machine specific
 PACKAGE_ARCH = "${MACHINE_ARCH}"
 
@@ -94,9 +92,9 @@ kernel_do_stage() {
                cp -fR drivers/sound/*.h ${STAGING_KERNEL_DIR}/include/drivers/sound/
        fi
 
-       install -m 0644 .config ${STAGING_KERNEL_DIR}/config-${PV}${KERNEL_LOCALVERSION}
-       ln -sf config-${PV}${KERNEL_LOCALVERSION} ${STAGING_KERNEL_DIR}/.config
-       ln -sf config-${PV}${KERNEL_LOCALVERSION} ${STAGING_KERNEL_DIR}/kernel-config
+       install -m 0644 .config ${STAGING_KERNEL_DIR}/config-${KERNEL_VERSION}
+       ln -sf config-${KERNEL_VERSION} ${STAGING_KERNEL_DIR}/.config
+       ln -sf config-${KERNEL_VERSION} ${STAGING_KERNEL_DIR}/kernel-config
        echo "${KERNEL_VERSION}" >${STAGING_KERNEL_DIR}/kernel-abiversion
        echo "${S}" >${STAGING_KERNEL_DIR}/kernel-source
        echo "${KERNEL_CCSUFFIX}" >${STAGING_KERNEL_DIR}/kernel-ccsuffix
@@ -111,7 +109,7 @@ kernel_do_stage() {
        fi
        cp -fR include/config* ${STAGING_KERNEL_DIR}/include/   
        install -m 0644 ${KERNEL_OUTPUT} ${STAGING_KERNEL_DIR}/${KERNEL_IMAGETYPE}
-       install -m 0644 System.map ${STAGING_KERNEL_DIR}/System.map-${PV}${KERNEL_LOCALVERSION}
+       install -m 0644 System.map ${STAGING_KERNEL_DIR}/System.map-${KERNEL_VERSION}
        [ -e Module.symvers ] && install -m 0644 Module.symvers ${STAGING_KERNEL_DIR}/
 
        cp -fR scripts ${STAGING_KERNEL_DIR}/
@@ -127,9 +125,9 @@ kernel_do_install() {
        
        install -d ${D}/${KERNEL_IMAGEDEST}
        install -d ${D}/boot
-       install -m 0644 ${KERNEL_OUTPUT} ${D}/${KERNEL_IMAGEDEST}/${KERNEL_IMAGETYPE}-${PV}${KERNEL_LOCALVERSION}
-       install -m 0644 System.map ${D}/boot/System.map-${PV}${KERNEL_LOCALVERSION}
-       install -m 0644 .config ${D}/boot/config-${PV}${KERNEL_LOCALVERSION}
+       install -m 0644 ${KERNEL_OUTPUT} ${D}/${KERNEL_IMAGEDEST}/${KERNEL_IMAGETYPE}-${KERNEL_VERSION}
+       install -m 0644 System.map ${D}/boot/System.map-${KERNEL_VERSION}
+       install -m 0644 .config ${D}/boot/config-${KERNEL_VERSION}
        install -d ${D}/etc/modutils
 
         # Check if scripts/genksyms exists and if so, build it
@@ -145,11 +143,11 @@ kernel_do_configure() {
 }
 
 pkg_postinst_kernel () {
-       update-alternatives --install /${KERNEL_IMAGEDEST}/${KERNEL_IMAGETYPE} ${KERNEL_IMAGETYPE} /${KERNEL_IMAGEDEST}/${KERNEL_IMAGETYPE}-${PV}${KERNEL_LOCALVERSION} ${KERNEL_PRIORITY} || true
+       update-alternatives --install /${KERNEL_IMAGEDEST}/${KERNEL_IMAGETYPE} ${KERNEL_IMAGETYPE} /${KERNEL_IMAGEDEST}/${KERNEL_IMAGETYPE}-${KERNEL_VERSION} ${KERNEL_PRIORITY} || true
 }
 
 pkg_postrm_kernel () {
-       update-alternatives --remove ${KERNEL_IMAGETYPE} /${KERNEL_IMAGEDEST}/${KERNEL_IMAGETYPE}-${PV}${KERNEL_LOCALVERSION} || true
+       update-alternatives --remove ${KERNEL_IMAGETYPE} /${KERNEL_IMAGEDEST}/${KERNEL_IMAGETYPE}-${KERNEL_VERSION} || true
 }
 
 inherit cml1
@@ -160,14 +158,17 @@ PACKAGES = "kernel kernel-image kernel-dev"
 FILES = ""
 FILES_kernel-image = "/boot/${KERNEL_IMAGETYPE}*"
 FILES_kernel-dev = "/boot/System.map* /boot/config*"
-RDEPENDS_kernel = "kernel-image-${KERNEL_VERSION}"
-PKG_kernel-image = "kernel-image-${KERNEL_VERSION}"
+RDEPENDS_kernel = "kernel-image-${KERNEL_MAJOR_VERSION}"
+PKG_kernel-image = "kernel-image-${KERNEL_MAJOR_VERSION}"
+RPROVIDES_kernel-image = "kernel-image-${KERNEL_VERSION}"
+RCONFLICTS_kernel-image = "kernel-image-${KERNEL_VERSION}"
+RREPLACES_kernel-image = "kernel-image-${KERNEL_VERSION}"
 ALLOW_EMPTY_kernel = "1"
 ALLOW_EMPTY_kernel-image = "1"
 
 pkg_postinst_modules () {
 if [ -n "$D" ]; then
-       ${HOST_PREFIX}depmod -A -b $D -F ${STAGING_KERNEL_DIR}/System.map-${PV}${KERNEL_LOCALVERSION} ${KERNEL_VERSION}
+       ${HOST_PREFIX}depmod -A -b $D -F ${STAGING_KERNEL_DIR}/System.map-${KERNEL_VERSION} ${KERNEL_VERSION}
 else
        depmod -A
        update-modules || true
@@ -229,7 +230,7 @@ python populate_packages_prepend () {
                        bb.error("D not defined")
                        return
 
-               kernelver = bb.data.getVar('PV', d, 1) + bb.data.getVar('KERNEL_LOCALVERSION', d, 1)
+               kernelver = bb.data.getVar('KERNEL_VERSION', d, 1)
                kernelver_stripped = kernelver
                m = re.match('^(.*-hh.*)[\.\+].*$', kernelver)
                if m and not bb.data.getVar('KERNEL_PRESERVE_HH_MINOR_VER', d, 1):
@@ -237,7 +238,7 @@ python populate_packages_prepend () {
                path = bb.data.getVar("PATH", d, 1)
                host_prefix = bb.data.getVar("HOST_PREFIX", d, 1) or ""
 
-               cmd = "PATH=\"%s\" %sdepmod -n -a -r -b %s -F %s/boot/System.map-%s %s" % (path, host_prefix, dvar, dvar, kernelver, kernelver_stripped)
+               cmd = "PATH=\"%s\" %sdepmod -n -a -e -r -b %s -F %s/boot/System.map-%s %s" % (path, host_prefix, dvar, dvar, kernelver, kernelver_stripped)
                bb.debug (1, cmd)
                f = os.popen(cmd, 'r')
 
@@ -269,7 +270,7 @@ python populate_packages_prepend () {
                                        m4 = re.match(pattern4, line)
                                        deps[m2.group(1)].extend(m4.group(1).split())
                        line = f.readline()
-               if f.close() or not deps:
+               if f.close() or (not deps and not bb.data.getVar("KERNEL_NO_MODULES", d, 1)):
                        # depmod returned an error or no deps found (very unlikely)
                        raise bb.build.FuncFailed("Failed to extract module dependencies.")
                return deps
@@ -345,7 +346,7 @@ python populate_packages_prepend () {
 
        postinst = bb.data.getVar('pkg_postinst_modules', d, 1)
        postrm = bb.data.getVar('pkg_postrm_modules', d, 1)
-       do_split_packages(d, root='/lib/modules', file_regex=module_regex, output_pattern=module_pattern, description='%s kernel module', postinst=postinst, postrm=postrm, recursive=True, hook=frob_metadata, extra_depends='update-modules kernel-image-%s' % bb.data.getVar("KERNEL_VERSION", d, 1))
+       do_split_packages(d, root='/lib/modules', file_regex=module_regex, output_pattern=module_pattern, description='%s kernel module', postinst=postinst, postrm=postrm, recursive=True, hook=frob_metadata, extra_depends='update-modules kernel-image-%s' % bb.data.getVar("KERNEL_MAJOR_VERSION", d, 1))
 
        import re, os
        metapkg = "kernel-modules"
@@ -371,6 +372,7 @@ python populate_packages_prepend () {
                kv = bb.data.getVar("KERNEL_MAJOR_VERSION", d, 1)
                packages = bb.data.getVar("PACKAGES", d, 1)
                module_re = re.compile("^kernel-module-")
+               repl_vers = bb.data.getVar("PARALLEL_INSTALL_REPLACE_VERSIONS", d, 1)
                for p in packages.split():
                        if not module_re.match(p):
                                continue
@@ -383,4 +385,40 @@ python populate_packages_prepend () {
                        else:
                                rprovides = pkg
                        bb.data.setVar("RPROVIDES_%s" % p, rprovides, d)
+
+                       # kv was changed from KERNEL_VERSION to KERNEL_MAJOR_VERSION.
+                       # now fix the upgrade path...
+                       if repl_vers:
+                               repl_pkgs = []
+                               for v in repl_vers.split():
+                                       repl_pkgs.append("%s-%s" % (pkg, v))
+                               for i in ["PROVIDES", "CONFLICTS", "REPLACES"]:
+                                       val = bb.data.getVar("R%s_%s" % (i, p), d, 1)
+                                       if val:
+                                               old = val.split()
+                                               add = []
+                                               for k in repl_pkgs:
+                                                       if not k in old:
+                                                               add.append(k)
+                                               val = "%s %s" % (val, " ".join(add))
+                                       else:
+                                               val = "%s" % " ".join(repl_pkgs)
+                                       bb.data.setVar("R%s_%s" % (i, p), val, d)
+               if repl_vers:
+                       p = "kernel-image"
+                       repl_pkgs = []
+                       for v in repl_vers.split():
+                               repl_pkgs.append("%s-%s" % (p, v))
+                       for i in ["PROVIDES", "CONFLICTS", "REPLACES"]:
+                               val = bb.data.getVar("R%s_%s" % (i, p), d, 1)
+                               if val:
+                                       old = val.split()
+                                       add = []
+                                       for k in repl_pkgs:
+                                               if not k in old:
+                                                       add.append(k)
+                                       val = "%s %s" % (val, " ".join(add))
+                               else:
+                                       val = "%s" % " ".join(repl_pkgs)
+                               bb.data.setVar("R%s_%s" % (i, p), val, d)
 }