From d5027f3fc10c370c0f31e2d606f2079925667c7f Mon Sep 17 00:00:00 2001 From: Chris Larson Date: Thu, 1 Jul 2004 23:52:27 +0000 Subject: Merge odin.(none):/home/kergoth/code/packages into odin.(none):/home/kergoth/code/packages.safe 2004/07/01 18:52:12-05:00 (none)!kergoth Move our associated OE metadata (configuration, oeclasses, and CONFIG_SITE files) into the packages repository. BKrev: 40e4a3bbtGGnb-XHAG0xqU2KdwtAPQ --- classes/autotools.oeclass | 0 classes/base.oeclass | 0 classes/base_srpm.oeclass | 0 classes/cml1.oeclass | 0 classes/cpan.oeclass | 0 classes/cross.oeclass | 0 classes/debian.oeclass | 0 classes/distutils.oeclass | 0 classes/flow-lossage.oeclass | 0 classes/gnome.oeclass | 0 classes/gpe.oeclass | 0 classes/image_ipk.oeclass | 0 classes/kernel.oeclass | 0 classes/lib_package.oeclass | 0 classes/module.oeclass | 0 classes/native.oeclass | 0 classes/oebuildstamp.oeclass | 0 classes/opie.oeclass | 0 classes/package.oeclass | 0 classes/package_ipk.oeclass | 0 classes/package_rpm.oeclass | 0 classes/package_tar.oeclass | 0 classes/palmtop.oeclass | 0 classes/pkgconfig.oeclass | 0 classes/qmake-base.oeclass | 0 classes/qmake.oeclass | 0 classes/rootfs_ipk.oeclass | 0 classes/rpm_core.oeclass | 0 classes/simpad_flashimg.oeclass | 0 classes/sip.oeclass | 0 classes/tmake.oeclass | 0 classes/update-alternatives.oeclass | 0 classes/update-rc.d.oeclass | 0 33 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 classes/autotools.oeclass create mode 100644 classes/base.oeclass create mode 100644 classes/base_srpm.oeclass create mode 100644 classes/cml1.oeclass create mode 100644 classes/cpan.oeclass create mode 100644 classes/cross.oeclass create mode 100644 classes/debian.oeclass create mode 100644 classes/distutils.oeclass create mode 100644 classes/flow-lossage.oeclass create mode 100644 classes/gnome.oeclass create mode 100644 classes/gpe.oeclass create mode 100644 classes/image_ipk.oeclass create mode 100644 classes/kernel.oeclass create mode 100644 classes/lib_package.oeclass create mode 100644 classes/module.oeclass create mode 100644 classes/native.oeclass create mode 100644 classes/oebuildstamp.oeclass create mode 100644 classes/opie.oeclass create mode 100644 classes/package.oeclass create mode 100644 classes/package_ipk.oeclass create mode 100644 classes/package_rpm.oeclass create mode 100644 classes/package_tar.oeclass create mode 100644 classes/palmtop.oeclass create mode 100644 classes/pkgconfig.oeclass create mode 100644 classes/qmake-base.oeclass create mode 100644 classes/qmake.oeclass create mode 100644 classes/rootfs_ipk.oeclass create mode 100644 classes/rpm_core.oeclass create mode 100644 classes/simpad_flashimg.oeclass create mode 100644 classes/sip.oeclass create mode 100644 classes/tmake.oeclass create mode 100644 classes/update-alternatives.oeclass create mode 100644 classes/update-rc.d.oeclass (limited to 'classes') diff --git a/classes/autotools.oeclass b/classes/autotools.oeclass new file mode 100644 index 0000000000..e69de29bb2 diff --git a/classes/base.oeclass b/classes/base.oeclass new file mode 100644 index 0000000000..e69de29bb2 diff --git a/classes/base_srpm.oeclass b/classes/base_srpm.oeclass new file mode 100644 index 0000000000..e69de29bb2 diff --git a/classes/cml1.oeclass b/classes/cml1.oeclass new file mode 100644 index 0000000000..e69de29bb2 diff --git a/classes/cpan.oeclass b/classes/cpan.oeclass new file mode 100644 index 0000000000..e69de29bb2 diff --git a/classes/cross.oeclass b/classes/cross.oeclass new file mode 100644 index 0000000000..e69de29bb2 diff --git a/classes/debian.oeclass b/classes/debian.oeclass new file mode 100644 index 0000000000..e69de29bb2 diff --git a/classes/distutils.oeclass b/classes/distutils.oeclass new file mode 100644 index 0000000000..e69de29bb2 diff --git a/classes/flow-lossage.oeclass b/classes/flow-lossage.oeclass new file mode 100644 index 0000000000..e69de29bb2 diff --git a/classes/gnome.oeclass b/classes/gnome.oeclass new file mode 100644 index 0000000000..e69de29bb2 diff --git a/classes/gpe.oeclass b/classes/gpe.oeclass new file mode 100644 index 0000000000..e69de29bb2 diff --git a/classes/image_ipk.oeclass b/classes/image_ipk.oeclass new file mode 100644 index 0000000000..e69de29bb2 diff --git a/classes/kernel.oeclass b/classes/kernel.oeclass new file mode 100644 index 0000000000..e69de29bb2 diff --git a/classes/lib_package.oeclass b/classes/lib_package.oeclass new file mode 100644 index 0000000000..e69de29bb2 diff --git a/classes/module.oeclass b/classes/module.oeclass new file mode 100644 index 0000000000..e69de29bb2 diff --git a/classes/native.oeclass b/classes/native.oeclass new file mode 100644 index 0000000000..e69de29bb2 diff --git a/classes/oebuildstamp.oeclass b/classes/oebuildstamp.oeclass new file mode 100644 index 0000000000..e69de29bb2 diff --git a/classes/opie.oeclass b/classes/opie.oeclass new file mode 100644 index 0000000000..e69de29bb2 diff --git a/classes/package.oeclass b/classes/package.oeclass new file mode 100644 index 0000000000..e69de29bb2 diff --git a/classes/package_ipk.oeclass b/classes/package_ipk.oeclass new file mode 100644 index 0000000000..e69de29bb2 diff --git a/classes/package_rpm.oeclass b/classes/package_rpm.oeclass new file mode 100644 index 0000000000..e69de29bb2 diff --git a/classes/package_tar.oeclass b/classes/package_tar.oeclass new file mode 100644 index 0000000000..e69de29bb2 diff --git a/classes/palmtop.oeclass b/classes/palmtop.oeclass new file mode 100644 index 0000000000..e69de29bb2 diff --git a/classes/pkgconfig.oeclass b/classes/pkgconfig.oeclass new file mode 100644 index 0000000000..e69de29bb2 diff --git a/classes/qmake-base.oeclass b/classes/qmake-base.oeclass new file mode 100644 index 0000000000..e69de29bb2 diff --git a/classes/qmake.oeclass b/classes/qmake.oeclass new file mode 100644 index 0000000000..e69de29bb2 diff --git a/classes/rootfs_ipk.oeclass b/classes/rootfs_ipk.oeclass new file mode 100644 index 0000000000..e69de29bb2 diff --git a/classes/rpm_core.oeclass b/classes/rpm_core.oeclass new file mode 100644 index 0000000000..e69de29bb2 diff --git a/classes/simpad_flashimg.oeclass b/classes/simpad_flashimg.oeclass new file mode 100644 index 0000000000..e69de29bb2 diff --git a/classes/sip.oeclass b/classes/sip.oeclass new file mode 100644 index 0000000000..e69de29bb2 diff --git a/classes/tmake.oeclass b/classes/tmake.oeclass new file mode 100644 index 0000000000..e69de29bb2 diff --git a/classes/update-alternatives.oeclass b/classes/update-alternatives.oeclass new file mode 100644 index 0000000000..e69de29bb2 diff --git a/classes/update-rc.d.oeclass b/classes/update-rc.d.oeclass new file mode 100644 index 0000000000..e69de29bb2 -- cgit v1.2.3 From 7ab7ac62bc77dd0f691d543e10f6fc7fa6b163ea Mon Sep 17 00:00:00 2001 From: Chris Larson Date: Fri, 2 Jul 2004 02:20:10 +0000 Subject: Fix do_clean to obey ${WORKDIR}. BKrev: 40e4c65aEd5yLaZ7byrzK9TFRx7SUw --- classes/base.oeclass | 682 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 682 insertions(+) (limited to 'classes') diff --git a/classes/base.oeclass b/classes/base.oeclass index e69de29bb2..8affad7a6c 100644 --- a/classes/base.oeclass +++ b/classes/base.oeclass @@ -0,0 +1,682 @@ +PATCHES_DIR="${S}" + +def base_dep_prepend(d): + import oe; + # + # Ideally this will check a flag so we will operate properly in + # the case where host == build == target, for now we don't work in + # that case though. + # + deps = "" + if not oe.data.getVar('INHIBIT_DEFAULT_DEPS', d): + deps += "patcher-native" + if (oe.data.getVar('HOST_SYS', d, 1) != + oe.data.getVar('BUILD_SYS', d, 1)): + deps += " virtual/${TARGET_PREFIX}gcc virtual/libc " + return deps + +def base_read_file(filename): + try: + f = file( filename, "r" ) + except IOError, reason: + return ":%s" % reason + else: + return f.read().strip() + return None + +DEPENDS_prepend="${@base_dep_prepend(d)} " + +def base_set_filespath(d): + import os, oe + filespath = [] + for p in [ "${FILE_DIRNAME}/${PF}", "${FILE_DIRNAME}/${P}", "${FILE_DIRNAME}/${PN}", "${FILE_DIRNAME}/files", "${FILE_DIRNAME}" ]: + overrides = oe.data.getVar("OVERRIDES", d, 1) or "" + overrides = overrides + ":" + for o in overrides.split(":"): + filespath.append(os.path.join(p, o)) + oe.data.setVar("FILESPATH", ":".join(filespath), d) + +FILESPATH = "${@base_set_filespath(d)}" + +die() { + oefatal "$*" +} + +oenote() { + echo "NOTE:" "$*" +} + +oewarn() { + echo "WARNING:" "$*" +} + +oefatal() { + echo "FATAL:" "$*" + exit 1 +} + +oedebug() { + test $# -ge 2 || { + echo "Usage: oedebug level \"message\"" + exit 1 + } + + test ${OEDEBUG:-0} -ge $1 && { + shift + echo "DEBUG:" $* + } +} + +oe_runmake() { + if [ x"$MAKE" = x ]; then MAKE=make; fi + oenote ${MAKE} ${EXTRA_OEMAKE} "$@" + ${MAKE} ${EXTRA_OEMAKE} "$@" || die "oemake failed" +} + +oe_soinstall() { + # Purpose: Install shared library file and + # create the necessary links + # Example: + # + # oe_ + # + #oenote installing shared library $1 to $2 + # + libname=`basename $1` + install -m 755 $1 $2/$libname + sonamelink=`${HOST_PREFIX}readelf -d $1 |grep 'Library soname:' |sed -e 's/.*\[\(.*\)\].*/\1/'` + solink=`echo $libname | sed -e 's/\.so\..*/.so/'` + ln -sf $libname $2/$sonamelink + ln -sf $libname $2/$solink +} + +oe_libinstall() { + # Purpose: Install a library, in all its forms + # Example + # + # oe_libinstall libltdl ${STAGING_LIBDIR}/ + # oe_libinstall -C src/libblah libblah ${D}/${libdir}/ + dir="" + libtool="" + while [ "$#" -gt 0 ]; do + case "$1" in + -C) + shift + dir="$1" + ;; + -s) + silent=1 + ;; + -a) + require_static=1 + ;; + -so) + require_shared=1 + ;; + -*) + oefatal "oe_libinstall: unknown option: $1" + ;; + *) + break; + ;; + esac + shift + done + + libname="$1" + shift + destpath="$1" + if [ -z "$destpath" ]; then + oefatal "oe_libinstall: no destination path specified" + fi + + __runcmd () { + if [ -z "$silent" ]; then + echo >&2 "oe_libinstall: $*" + fi + $* + } + + if [ -z "$dir" ]; then + dir=`pwd` + fi + if [ -d "$dir/.libs" ]; then + dir=$dir/.libs + fi + olddir=`pwd` + __runcmd cd $dir + + lafile=$libname.la + if [ -f "$lafile" ]; then + # libtool archive + eval `cat $lafile|grep "^library_names="` + libtool=1 + else + library_names="$libname.so* $libname.dll.a" + fi + + __runcmd install -d $destpath/ + dota=$libname.a + if [ -f "$dota" -o -n "$require_static" ]; then + __runcmd install -m 0644 $dota $destpath/ + fi + dotlai=$libname.lai + if [ -f "$dotlai" -o -n "$libtool" ]; then + __runcmd install -m 0644 $dotlai $destpath/$libname.la + fi + + for name in $library_names; do + files=`eval echo $name` + for f in $files; do + if [ ! -e "$f" ]; then + if [ -n "$libtool" ]; then + oefatal "oe_libinstall: $dir/$f not found." + fi + elif [ -L "$f" ]; then + __runcmd cp -P "$f" $destpath/ + elif [ ! -L "$f" ]; then + libfile="$f" + __runcmd install -m 0755 $libfile $destpath/ + fi + done + done + + if [ -z "$libfile" ]; then + if [ -n "$require_shared" ]; then + oefatal "oe_libinstall: unable to locate shared library" + fi + elif [ -z "$libtool" ]; then + # special case hack for non-libtool .so.#.#.# links + baselibfile=`basename "$libfile"` + if (echo $baselibfile | grep -qE '^lib.*\.so\.[0-9.]*$'); then + sonamelink=`${HOST_PREFIX}readelf -d $libfile |grep 'Library soname:' |sed -e 's/.*\[\(.*\)\].*/\1/'` + solink=`echo $baselibfile | sed -e 's/\.so\..*/.so/'` + if [ -n "$sonamelink" -a x"$baselibfile" != x"$sonamelink" ]; then + __runcmd ln -sf $baselibfile $destpath/$sonamelink + fi + __runcmd ln -sf $baselibfile $destpath/$solink + fi + fi + + __runcmd cd "$olddir" +} + +oe_machinstall() { + # Purpose: Install machine dependent files, if available + # If not available, check if there is a default + # If no default, just touch the destination + # Example: + # $1 $2 $3 $4 + # oe_machinstall -m 0644 fstab ${D}/etc/fstab + # + # TODO: Check argument number? + # + filename=`basename $3` + dirname=`dirname $3` + + for o in `echo ${OVERRIDES} | tr ':' ' '`; do + if [ -e $dirname/$o/$filename ]; then + oenote $dirname/$o/$filename present, installing to $4 + install $1 $2 $dirname/$o/$filename $4 + return + fi + done +# oenote overrides specific file NOT present, trying default=$3... + if [ -e $3 ]; then + oenote $3 present, installing to $4 + install $1 $2 $3 $4 + else + oenote $3 NOT present, touching empty $4 + touch $4 + fi +} + +addtask showdata +do_showdata[nostamp] = "1" +python do_showdata() { + import sys + # emit variables and shell functions + oe.data.emit_env(sys.__stdout__, d, True) + # emit the metadata which isnt valid shell + for e in d.keys(): + if oe.data.getVarFlag(e, 'python', d): + sys.__stdout__.write("\npython %s () {\n%s}\n" % (e, oe.data.getVar(e, d, 1))) + elif oe.data.getVarFlag(e, 'func', d): + sys.__stdout__.write("\n%s () {\n%s}\n" % (e, oe.data.getVar(e, d, 1))) + else: + sys.__stdout__.write("%s=%s\n" % (e, oe.data.getVar(e, d, 1))) +} + +addtask listtasks +do_listtasks[nostamp] = "1" +python do_listtasks() { + import sys + # emit variables and shell functions + #oe.data.emit_env(sys.__stdout__, d) + # emit the metadata which isnt valid shell + for e in d.keys(): + if oe.data.getVarFlag(e, 'task', d): + sys.__stdout__.write("%s\n" % e) +} + +addtask clean +do_clean[dirs] = "${TOPDIR}" +do_clean[nostamp] = "1" +python base_do_clean() { + """clear the build and temp directories""" + dir = oe.data.expand("${WORKDIR}", d) + if dir == '//': raise oe.build.FuncFailed("wrong DATADIR") + oe.note("removing " + dir) + os.system('rm -rf ' + dir) + + dir = "%s.*" % oe.data.expand(oe.data.getVar('STAMP', d), d) + oe.note("removing " + dir) + os.system('rm -f '+ dir) +} + +addtask mrproper +do_mrproper[dirs] = "${TOPDIR}" +do_mrproper[nostamp] = "1" +python base_do_mrproper() { + """clear downloaded sources, build and temp directories""" + dir = oe.data.expand("${DL_DIR}", d) + if dir == '/': oe.build.FuncFailed("wrong DATADIR") + oe.debug(2, "removing " + dir) + os.system('rm -rf ' + dir) + oe.build.exec_task('do_clean', d) +} + +addtask patch after do_unpack +do_patch[dirs] = "${WORKDIR}" +python base_do_patch() { + import re + + src_uri = oe.data.getVar('SRC_URI', d) + if not src_uri: + return + src_uri = oe.data.expand(src_uri, d) + for url in src_uri.split(): +# oe.note('url is %s' % url) + (type, host, path, user, pswd, parm) = oe.decodeurl(url) + if not "patch" in parm: + continue + from oe.fetch import init, localpath + init([url]) + url = oe.encodeurl((type, host, path, user, pswd, [])) + local = '/' + localpath(url, d) + # patch! + dots = local.split(".") + if dots[-1] in ['gz', 'bz2', 'Z']: + efile = os.path.join(oe.data.getVar('WORKDIR', d),os.path.basename('.'.join(dots[0:-1]))) + else: + efile = local + efile = oe.data.expand(efile, d) + patches_dir = oe.data.expand(oe.data.getVar('PATCHES_DIR', d), d) + oe.mkdirhier(patches_dir) + os.chdir(patches_dir) + cmd = "PATH=\"%s\" patcher" % oe.data.getVar("PATH", d, 1) + if "pnum" in parm: + cmd += " -p %s" % parm["pnum"] + cmd += " -n \"%s\" -i %s" % (os.path.basename(efile), efile) + ret = os.system(cmd) + if ret != 0: + raise oe.build.FuncFailed("'patcher' execution failed") +} + +addtask fetch +do_fetch[dirs] = "${DL_DIR}" +do_fetch[nostamp] = "1" +python base_do_fetch() { + import sys, copy + + localdata = copy.deepcopy(d) + oe.data.update_data(localdata) + + src_uri = oe.data.getVar('SRC_URI', localdata, 1) + if not src_uri: + return 1 + + try: + oe.fetch.init(src_uri.split()) + except oe.fetch.NoMethodError: + (type, value, traceback) = sys.exc_info() + raise oe.build.FuncFailed("No method: %s" % value) + + try: + oe.fetch.go(localdata) + except oe.fetch.MissingParameterError: + (type, value, traceback) = sys.exc_info() + raise oe.build.FuncFailed("Missing parameters: %s" % value) + except oe.fetch.FetchError: + (type, value, traceback) = sys.exc_info() + raise oe.build.FuncFailed("Fetch failed: %s" % value) +} + +addtask unpack after do_fetch +do_unpack[dirs] = "${WORKDIR}" +python base_do_unpack() { + import re, copy, os + + localdata = copy.deepcopy(d) + oe.data.update_data(localdata) + + src_uri = oe.data.getVar('SRC_URI', localdata) + if not src_uri: + return + src_uri = oe.data.expand(src_uri, localdata) + for url in src_uri.split(): + try: + local = oe.data.expand(oe.fetch.localpath(url, localdata), localdata) + except oe.MalformedUrl, e: + raise FuncFailed('Unable to generate local path for malformed uri: %s' % e) + # dont need any parameters for extraction, strip them off + local = re.sub(';.*$', '', local) + local = os.path.realpath(local) + dots = local.split(".") + if dots[-1] in ['gz', 'bz2', 'Z']: + efile = os.path.join(oe.data.getVar('WORKDIR', localdata, 1),os.path.basename('.'.join(dots[0:-1]))) + else: + efile = local + cmd = None + if local.endswith('.tar'): + cmd = 'tar x --no-same-owner -f %s' % local + elif local.endswith('.tgz') or local.endswith('.tar.gz'): + cmd = 'tar xz --no-same-owner -f %s' % local + elif local.endswith('.tbz') or local.endswith('.tar.bz2'): + cmd = 'bzip2 -dc %s | tar x --no-same-owner -f -' % local + elif local.endswith('.gz') or local.endswith('.Z') or local.endswith('.z'): + loc = local.rfind('.') + cmd = 'gzip -dc %s > %s' % (local, efile) + elif local.endswith('.bz2'): + loc = local.rfind('.') + cmd = 'bzip2 -dc %s > %s' % (local, efile) + elif local.endswith('.zip'): + loc = local.rfind('.') + cmd = 'unzip %s' % local + elif os.path.isdir(local): + filesdir = os.path.realpath(oe.data.getVar("FILESDIR", localdata, 1)) + destdir = "." + if local[0:len(filesdir)] == filesdir: + destdir = local[len(filesdir):local.rfind('/')] + destdir = destdir.strip('/') + if len(destdir) < 1: + destdir = "." + elif not os.access("%s/%s" % (os.getcwd(), destdir), os.F_OK): + os.makedirs("%s/%s" % (os.getcwd(), destdir)) + cmd = 'cp -a %s %s/%s/' % (local, os.getcwd(), destdir) + else: + (type, host, path, user, pswd, parm) = oe.decodeurl(url) + if not 'patch' in parm: + destdir = oe.decodeurl(url)[1] or "." + oe.mkdirhier("%s/%s" % (os.getcwd(), destdir)) + cmd = 'cp %s %s/%s/' % (local, os.getcwd(), destdir) + if not cmd: + continue + oe.note("Unpacking %s to %s/" % (local, os.getcwd())) + ret = os.system(cmd) + if ret != 0: + raise oe.build.FuncFailed("%s execution failed" % cmd) +} + +addhandler base_eventhandler +python base_eventhandler() { + from oe import note, error, data + from oe.event import Handled, NotHandled, getName + import os + + name = getName(e) + if name in ["PkgSucceeded"]: + note("package %s: build completed" % e.pkg) + if name in ["PkgStarted"]: + note("package %s: build %s" % (e.pkg, name[3:].lower())) + elif name in ["PkgFailed"]: + error("package %s: build %s" % (e.pkg, name[3:].lower())) + elif name in ["TaskStarted"]: + note("package %s: task %s %s" % (data.expand(data.getVar("PF", e.data), e.data), e.task, name[4:].lower())) + elif name in ["TaskSucceeded"]: + note("package %s: task %s completed" % (data.expand(data.getVar("PF", e.data), e.data), e.task)) + elif name in ["TaskFailed"]: + error("package %s: task %s %s" % (data.expand(data.getVar("PF", e.data), e.data), e.task, name[4:].lower())) + elif name in ["UnsatisfiedDep"]: + note("package %s: dependency %s %s" % (e.pkg, e.dep, name[:-3].lower())) + elif name in ["BuildStarted", "BuildCompleted"]: + note("build %s %s" % (e.name, name[5:].lower())) + return NotHandled +} + +addtask configure after do_unpack do_patch +do_configure[dirs] = "${S} ${B}" + +base_do_configure() { + : +} + +addtask compile after do_configure +do_compile[dirs] = "${S} ${B}" +base_do_compile() { + if [ -e Makefile -o -e makefile ]; then + oe_runmake || die "make failed" + else + oenote "nothing to compile" + fi +} + + +addtask stage after do_compile +base_do_stage () { + : +} + +do_populate_staging[dirs] = "${STAGING_DIR}/${TARGET_SYS}/bin ${STAGING_DIR}/${TARGET_SYS}/lib \ + ${STAGING_DIR}/${TARGET_SYS}/include \ + ${STAGING_DIR}/${BUILD_SYS}/bin ${STAGING_DIR}/${BUILD_SYS}/lib \ + ${STAGING_DIR}/${BUILD_SYS}/include \ + ${STAGING_DATADIR} \ + ${S} ${B}" + +addtask populate_staging after do_compile + +#python do_populate_staging () { +# if not oe.data.getVar('manifest', d): +# oe.build.exec_func('do_emit_manifest', d) +# if oe.data.getVar('do_stage', d): +# oe.build.exec_func('do_stage', d) +# else: +# oe.build.exec_func('manifest_do_populate_staging', d) +#} + +python do_populate_staging () { + if oe.data.getVar('manifest_do_populate_staging', d): + oe.build.exec_func('manifest_do_populate_staging', d) + else: + oe.build.exec_func('do_stage', d) +} + +#addtask install +addtask install after do_compile +do_install[dirs] = "${S} ${B}" + +base_do_install() { + : +} + +#addtask populate_pkgs after do_compile +#python do_populate_pkgs () { +# if not oe.data.getVar('manifest', d): +# oe.build.exec_func('do_emit_manifest', d) +# oe.build.exec_func('manifest_do_populate_pkgs', d) +# oe.build.exec_func('package_do_shlibs', d) +#} + +base_do_package() { + : +} + +addtask build after do_populate_staging +do_build = "" +do_build[nostamp] = "1" +do_build[func] = "1" + +# Functions that update metadata based on files outputted +# during the build process. + +SHLIBS = "" +RDEPENDS_prepend = " ${SHLIBS}" + +python read_manifest () { + import sys + mfn = oe.data.getVar("MANIFEST", d, 1) + if os.access(mfn, os.R_OK): + # we have a manifest, so emit do_stage and do_populate_pkgs, + # and stuff some additional bits of data into the metadata store + mfile = file(mfn, "r") + manifest = oe.manifest.parse(mfile, d) + if not manifest: + return + + oe.data.setVar('manifest', manifest, d) +} + +python parse_manifest () { + manifest = oe.data.getVar("manifest", d) + if not manifest: + return + for func in ("do_populate_staging", "do_populate_pkgs"): + value = oe.manifest.emit(func, manifest, d) + if value: + oe.data.setVar("manifest_" + func, value, d) + oe.data.delVarFlag("manifest_" + func, "python", d) + oe.data.delVarFlag("manifest_" + func, "fakeroot", d) + oe.data.setVarFlag("manifest_" + func, "func", 1, d) + packages = [] + for l in manifest: + if "pkg" in l and l["pkg"] is not None: + packages.append(l["pkg"]) + oe.data.setVar("PACKAGES", " ".join(packages), d) +} + +def explode_deps(s): + r = [] + l = s.split() + flag = False + for i in l: + if i[0] == '(': + flag = True + j = [] + if flag: + j.append(i) + if i.endswith(')'): + flag = False + r[-1] += ' ' + ' '.join(j) + else: + r.append(i) + return r + +python read_shlibdeps () { + packages = (oe.data.getVar('PACKAGES', d, 1) or "").split() + for pkg in packages: + shlibsfile = oe.data.expand("${WORKDIR}/install/" + pkg + ".shlibdeps", d) + if os.access(shlibsfile, os.R_OK): + fd = file(shlibsfile) + lines = fd.readlines() + fd.close() + rdepends = explode_deps(oe.data.getVar('RDEPENDS_' + pkg, d, 1) or oe.data.getVar('RDEPENDS', d, 1) or "") + for l in lines: + rdepends.append(l.rstrip()) + oe.data.setVar('RDEPENDS_' + pkg, " " + " ".join(rdepends), d) +} + +python read_subpackage_metadata () { + import re + + data_file = oe.data.expand("${WORKDIR}/install/${PN}.package", d) + if os.access(data_file, os.R_OK): + f = file(data_file, 'r') + lines = f.readlines() + f.close() + r = re.compile("([^:]+):\s*(.*)") + for l in lines: + m = r.match(l) + if m: + oe.data.setVar(m.group(1), m.group(2), d) +} + +python __anonymous () { + need_host = oe.data.getVar('COMPATIBLE_HOST', d, 1) + if need_host: + import re + this_host = oe.data.getVar('HOST_SYS', d, 1) + if not re.match(need_host, this_host): + raise oe.parse.SkipPackage("incompatible with host %s" % this_host) + + pn = oe.data.getVar('PN', d, 1) + cvsdate = oe.data.getVar('CVSDATE_%s' % pn, d, 1) + if cvsdate: + oe.data.setVar('CVSDATE', cvsdate, d) + + try: + oe.build.exec_func('read_manifest', d) + oe.build.exec_func('parse_manifest', d) + oe.build.exec_func('read_shlibdeps', d) + oe.build.exec_func('read_subpackage_metadata', d) + except Exception, e: + oe.error("anonymous function: %s" % e) + pass +} + +addtask emit_manifest +python do_emit_manifest () { +# FIXME: emit a manifest here +# 1) adjust PATH to hit the wrapper scripts + wrappers = oe.which(oe.data.getVar("OEPATH", d, 1), 'build/install', 0) + path = (oe.data.getVar('PATH', d, 1) or '').split(':') + path.insert(0, os.path.dirname(wrappers)) + oe.data.setVar('PATH', ':'.join(path), d) +# 2) exec_func("do_install", d) + oe.build.exec_func('do_install', d) +# 3) read in data collected by the wrappers + oe.build.exec_func('read_manifest', d) +# 4) mangle the manifest we just generated, get paths back into +# our variable form +# 5) write it back out +# 6) re-parse it to ensure the generated functions are proper + oe.build.exec_func('parse_manifest', d) +} + +EXPORT_FUNCTIONS do_clean do_mrproper do_fetch do_unpack do_configure do_compile do_install do_package do_patch do_populate_pkgs do_stage + +MIRRORS[func] = "0" +MIRRORS () { +${DEBIAN_MIRROR}/main http://snapshot.debian.net/archive/pool +${DEBIAN_MIRROR} ftp://ftp.de.debian.org/debian/pool +${DEBIAN_MIRROR} ftp://ftp.au.debian.org/debian/pool +${DEBIAN_MIRROR} ftp://ftp.cl.debian.org/debian/pool +${DEBIAN_MIRROR} ftp://ftp.hr.debian.org/debian/pool +${DEBIAN_MIRROR} ftp://ftp.fi.debian.org/debian/pool +${DEBIAN_MIRROR} ftp://ftp.hk.debian.org/debian/pool +${DEBIAN_MIRROR} ftp://ftp.hu.debian.org/debian/pool +${DEBIAN_MIRROR} ftp://ftp.ie.debian.org/debian/pool +${DEBIAN_MIRROR} ftp://ftp.it.debian.org/debian/pool +${DEBIAN_MIRROR} ftp://ftp.jp.debian.org/debian/pool +${DEBIAN_MIRROR} ftp://ftp.no.debian.org/debian/pool +${DEBIAN_MIRROR} ftp://ftp.pl.debian.org/debian/pool +${DEBIAN_MIRROR} ftp://ftp.ro.debian.org/debian/pool +${DEBIAN_MIRROR} ftp://ftp.si.debian.org/debian/pool +${DEBIAN_MIRROR} ftp://ftp.es.debian.org/debian/pool +${DEBIAN_MIRROR} ftp://ftp.se.debian.org/debian/pool +${DEBIAN_MIRROR} ftp://ftp.tr.debian.org/debian/pool +${GNU_MIRROR} ftp://mirrors.kernel.org/gnu +${GNU_MIRROR} ftp://ftp.matrix.com.br/pub/gnu +${GNU_MIRROR} ftp://ftp.cs.ubc.ca/mirror2/gnu +${GNU_MIRROR} ftp://sunsite.ust.hk/pub/gnu +${GNU_MIRROR} ftp://ftp.ayamura.org/pub/gnu +ftp://ftp.kernel.org/pub http://www.kernel.org/pub +ftp://ftp.kernel.org/pub ftp://ftp.us.kernel.org/pub +ftp://ftp.kernel.org/pub ftp://ftp.uk.kernel.org/pub +ftp://ftp.kernel.org/pub ftp://ftp.hk.kernel.org/pub +ftp://ftp.kernel.org/pub ftp://ftp.au.kernel.org/pub +ftp://ftp.kernel.org/pub ftp://ftp.jp.kernel.org/pub +ftp://.*/.*/ http://treke.net/oe/source/ +http://.*/.*/ http://treke.net/oe/source/ +} + -- cgit v1.2.3 From bfd7382efd25d900ee34a66c295db33254d0f05d Mon Sep 17 00:00:00 2001 From: Phil Blundell Date: Sat, 3 Jul 2004 14:59:23 +0000 Subject: add modconf and autoloading support for kernel modules BKrev: 40e6c9cb2kPa1b2DmmDs1zWugLncaA --- classes/kernel.oeclass | 262 ++++++++++++++++++++++++++++++ classes/package.oeclass | 414 ++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 676 insertions(+) (limited to 'classes') diff --git a/classes/kernel.oeclass b/classes/kernel.oeclass index e69de29bb2..35884000a3 100644 --- a/classes/kernel.oeclass +++ b/classes/kernel.oeclass @@ -0,0 +1,262 @@ +PROVIDES_append = "virtual/kernel" +DEPENDS_append = "modutils-cross virtual/${TARGET_PREFIX}gcc${KERNEL_CCSUFFIX} update-modules" + +export ARCH = "${TARGET_ARCH}" +export OS = "${TARGET_OS}" +export CROSS_COMPILE = "${TARGET_PREFIX}" +KERNEL_IMAGETYPE = "zImage" + +KERNEL_PRIORITY = "${@oe.data.getVar('PV',d,1).split('-')[0].split('.')[-1]}" + +KERNEL_CCSUFFIX ?= "" +KERNEL_LDSUFFIX ?= "" + +KERNEL_CC = "${CCACHE}${HOST_PREFIX}gcc${KERNEL_CCSUFFIX}" +KERNEL_LD = "${LD}${KERNEL_LDSUFFIX}" + +kernel_do_compile() { + unset CFLAGS CPPFLAGS CXXFLAGS LDFLAGS + oe_runmake include/linux/version.h CC="${KERNEL_CC}" LD="${KERNEL_LD}" + oe_runmake dep CC="${KERNEL_CC}" LD="${KERNEL_LD}" + oe_runmake ${KERNEL_IMAGETYPE} CC="${KERNEL_CC}" LD="${KERNEL_LD}" + if (grep -q -i -e '^CONFIG_MODULES=y$' .config); then + oe_runmake modules CC="${KERNEL_CC}" LD="${KERNEL_LD}" + else + oenote "no modules to compile" + fi +} + +kernel_do_stage() { + install -d ${STAGING_KERNEL_DIR}/include/{asm,asm-generic,linux,net,pcmcia} + cp -fR include/linux/* ${STAGING_KERNEL_DIR}/include/linux/ + cp -fR include/asm/* ${STAGING_KERNEL_DIR}/include/asm/ + cp -fR include/asm-generic/* ${STAGING_KERNEL_DIR}/include/asm-generic/ + cp -fR include/net/* ${STAGING_KERNEL_DIR}/include/net/ + cp -fR include/pcmcia/* ${STAGING_KERNEL_DIR}/include/pcmcia/ + install -m 0644 .config ${STAGING_KERNEL_DIR}/config-${PV} + ln -sf config-${PV} ${STAGING_KERNEL_DIR}/.config + ln -sf config-${PV} ${STAGING_KERNEL_DIR}/kernel-config + echo "${PV}" >${STAGING_KERNEL_DIR}/kernel-version + echo "${S}" >${STAGING_KERNEL_DIR}/kernel-source + echo "${KERNEL_CCSUFFIX}" >${STAGING_KERNEL_DIR}/kernel-ccsuffix + echo "${KERNEL_LDSUFFIX}" >${STAGING_KERNEL_DIR}/kernel-ldsuffix + [ -e Rules.make ] && install -m 0644 Rules.make ${STAGING_KERNEL_DIR}/ + [ -e Makefile ] && install -m 0644 Makefile ${STAGING_KERNEL_DIR}/ + install -m 0644 arch/${ARCH}/boot/${KERNEL_IMAGETYPE} ${STAGING_KERNEL_DIR}/${KERNEL_IMAGETYPE} +} + +kernel_do_install() { + unset CFLAGS CPPFLAGS CXXFLAGS LDFLAGS + if (grep -q -i -e '^CONFIG_MODULES=y$' .config); then + oe_runmake DEPMOD=echo INSTALL_MOD_PATH="${D}" modules_install + else + oenote "no modules to install" + fi + install -d ${D}/boot + install -m 0644 arch/${ARCH}/boot/${KERNEL_IMAGETYPE} ${D}/boot/${KERNEL_IMAGETYPE}-${PV} + install -m 0644 System.map ${D}/boot/System.map-${PV} + install -m 0644 .config ${D}/boot/config-${PV} + install -d ${D}/etc/modutils +} + +kernel_do_configure() { + yes '' | oe_runmake oldconfig +} + +pkg_postinst_kernel () { + update-alternatives --install /boot/zImage zImage /boot/zImage-${PV} ${KERNEL_PRIORITY} || true +} + +pkg_postrm_kernel () { + update-alternatives --remove zImage /boot/zImage-${PV} || true +} + +inherit cml1 + +EXPORT_FUNCTIONS do_compile do_install do_stage do_configure + +PACKAGES = "kernel" +FILES = "" +FILES_kernel = "/boot" + +pkg_postinst_modules () { +if [ -n "$D" ]; then + VER=${PV} + ${HOST_PREFIX}depmod -A -b $D -F $D/boot/System.map-${PV} $VER +else + depmod -A + update-modules +fi +} + +autoload_postinst_fragment() { +if [ x"$D" = "x" ]; then + modprobe %s +fi +} + +# defaults +module_autoload_ipv6 = "ipv6" +module_autoload_ipsec = "ipsec" +module_conf_bluez = "alias net-pf-31 bluez" +module_conf_l2cap = "alias bt-proto-0 l2cap" +module_conf_sco = "alias bt-proto-2 sco" +module_conf_rfcomm = "alias bt-proto-3 rfcomm" +module_conf_bnep = "alias bt-proto-4 bnep" +module_conf_hci_uart = "alias tty-ldisc-15 hci_uart" + +python populate_packages_prepend () { + def extract_modinfo(file): + import os, re + tmpfile = os.tmpnam() + cmd = "PATH=\"%s\" %sobjcopy -j .modinfo -O binary %s %s" % (oe.data.getVar("PATH", d, 1), oe.data.getVar("HOST_PREFIX", d, 1) or "", file, tmpfile) + os.system(cmd) + f = open(tmpfile) + l = f.read().split("\000") + f.close() + os.unlink(tmpfile) + exp = re.compile("([^=]+)=(.*)") + vals = {} + for i in l: + m = exp.match(i) + if not m: + continue + vals[m.group(1)] = m.group(2) + return vals + + def parse_depmod(): + import os, re + + dvar = oe.data.getVar('D', d, 1) + if not dvar: + oe.error("D not defined") + return + + kernelver = oe.data.getVar('PV', d, 1) + kernelver_stripped = kernelver + m = re.match('^(.*-hh.*)\..*$', kernelver) + if m: + kernelver_stripped = m.group(1) + path = oe.data.getVar("PATH", d, 1) + host_prefix = oe.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) + f = os.popen(cmd, 'r') + + deps = {} + pattern0 = "^(.*\.o):..*$" + pattern1 = "^(.*\.o):\t(.*\.o)$" + pattern2 = "^(.*\.o):\t(.*\.o) \\\$" + pattern3 = "^\t(.*\.o) \\\$" + pattern4 = "^\t(.*\.o)$" + + line = f.readline() + while line: + if not re.match(pattern0, line): + line = f.readline() + continue + m1 = re.match(pattern1, line) + if m1: + deps[m1.group(1)] = [m1.group(2)] + else: + m2 = re.match(pattern2, line) + if m2: + deps[m2.group(1)] = [m2.group(2)] + line = f.readline() + m3 = re.match(pattern3, line) + while m3: + deps[m2.group(1)].append(m3.group(1)) + line = f.readline() + m3 = re.match(pattern3, line) + m4 = re.match(pattern4, line) + deps[m2.group(1)].append(m4.group(1)) + line = f.readline() + f.close() + return deps + + def get_dependencies(file, pattern, format): + file = file.replace(oe.data.getVar('D', d, 1) or '', '', 1) + + if module_deps.has_key(file): + import os.path, re + dependencies = [] + for i in module_deps[file]: + m = re.match(pattern, os.path.basename(i)) + if not m: + continue + on = m.group(1).lower().replace('_', '+').replace('@', '+') + dependencies.append(format % on) + return dependencies + return [] + + def frob_metadata(file, pkg, pattern, format, basename): + import re + vals = extract_modinfo(file) + + dvar = oe.data.getVar('D', d, 1) + + # If autoloading is requested, output /etc/modutils/ and append + # appropriate modprobe commands to the postinst + autoload = oe.data.getVar('module_autoload_%s' % basename, d, 1) + if autoload: + name = '%s/etc/modutils/%s' % (dvar, basename) + f = open(name, 'w') + for m in autoload.split(): + f.write('%s\n' % m) + f.close() + postinst = oe.data.getVar('pkg_postinst_%s' % pkg, d, 1) + if not postinst: + oe.fatal("pkg_postinst_%s not defined" % pkg) + postinst += oe.data.getVar('autoload_postinst_fragment', d, 1) % autoload + oe.data.setVar('pkg_postinst_%s' % pkg, postinst, d) + + # Write out any modconf fragment + modconf = oe.data.getVar('module_conf_%s' % basename, d, 1) + if modconf: + name = '%s/etc/modutils/%s.conf' % (dvar, basename) + f = open(name, 'w') + f.write("%s\n" % modconf) + f.close() + + files = oe.data.getVar('FILES_%s' % pkg, d, 1) + files = "%s %s/etc/modutils/%s %s/etc/modutils/%s.conf" % (files, dvar, basename, dvar, basename) + oe.data.setVar('FILES_%s' % pkg, files, d) + + if vals.has_key("description"): + old_desc = oe.data.getVar('DESCRIPTION_' + pkg, d, 1) or "" + oe.data.setVar('DESCRIPTION_' + pkg, old_desc + "; " + vals["description"], d) + + rdepends_str = oe.data.getVar('RDEPENDS_' + pkg, d, 1) + if rdepends_str: + rdepends = rdepends_str.split() + else: + rdepends = [] + rdepends.extend(get_dependencies(file, pattern, format)) + oe.data.setVar('RDEPENDS_' + pkg, ' '.join(rdepends), d) + + module_deps = parse_depmod() + module_regex = '^(.*)\.k?o$' + module_pattern = 'kernel-module-%s' + + postinst = oe.data.getVar('pkg_postinst_modules', d, 1) + do_split_packages(d, root='/lib/modules', file_regex=module_regex, output_pattern=module_pattern, description='%s kernel module', postinst=postinst, recursive=True, hook=frob_metadata, extra_depends='update-modules') + + import re, os + metapkg = "kernel-modules" + oe.data.setVar('ALLOW_EMPTY_' + metapkg, "1", d) + oe.data.setVar('FILES_' + metapkg, "", d) + blacklist = [] + for l in module_deps.values(): + for i in l: + pkg = module_pattern % re.match(module_regex, os.path.basename(i)).group(1).lower().replace('_', '+').replace('@', '+') + blacklist.append(pkg) + metapkg_rdepends = [] + packages = oe.data.getVar('PACKAGES', d, 1).split() + for pkg in packages[1:]: + if not pkg in blacklist and not pkg in metapkg_rdepends: + metapkg_rdepends.append(pkg) + oe.data.setVar('RDEPENDS_' + metapkg, ' '.join(metapkg_rdepends), d) + oe.data.setVar('DESCRIPTION_' + metapkg, 'Kernel modules meta package', d) + packages.append(metapkg) + oe.data.setVar('PACKAGES', ' '.join(packages), d) +} diff --git a/classes/package.oeclass b/classes/package.oeclass index e69de29bb2..32da7df8d3 100644 --- a/classes/package.oeclass +++ b/classes/package.oeclass @@ -0,0 +1,414 @@ +def do_split_packages(d, root, file_regex, output_pattern, description, postinst=None, recursive=False, hook=None, extra_depends=None, aux_files_pattern=None): + import os, os.path, oe + + dvar = oe.data.getVar('D', d, 1) + if not dvar: + oe.error("D not defined") + return + + packages = oe.data.getVar('PACKAGES', d, 1).split() + if not packages: + # nothing to do + return + + if postinst: + postinst = '#!/bin/sh\n' + postinst + if not recursive: + objs = os.listdir(dvar + root) + else: + objs = [] + for walkroot, dirs, files in os.walk(dvar + root): + for file in files: + relpath = os.path.join(walkroot, file).replace(dvar + root + '/', '', 1) + if relpath: + objs.append(relpath) + + if extra_depends == None: + extra_depends = oe.data.getVar('PKG_' + packages[0], d, 1) or packages[0] + + for o in objs: + import re, stat + m = re.match(file_regex, os.path.basename(o)) + if not m: + continue + f = os.path.join(dvar + root, o) + if not stat.S_ISREG(os.lstat(f).st_mode): + continue + on = m.group(1).lower().replace('_', '+').replace('@', '+') + pkg = output_pattern % on + if not pkg in packages: + packages.append(pkg) + if aux_files_pattern: + oe.data.setVar('FILES_' + pkg, "%s %s" % (os.path.join(root, o), aux_files_pattern % on), d) + else: + oe.data.setVar('FILES_' + pkg, os.path.join(root, o), d) + if extra_depends != '': + oe.data.setVar('RDEPENDS_' + pkg, extra_depends, d) + oe.data.setVar('DESCRIPTION_' + pkg, description % on, d) + if postinst: + oe.data.setVar('pkg_postinst_' + pkg, postinst, d) + else: + oldfiles = oe.data.getVar('FILES_' + pkg, d, 1) + if not oldfiles: + oe.fatal("Package '%s' exists but has no files" % pkg) + oe.data.setVar('FILES_' + pkg, oldfiles + " " + os.path.join(root, o), d) + if callable(hook): + hook(f, pkg, file_regex, output_pattern, m.group(1)) + + oe.data.setVar('PACKAGES', ' '.join(packages), d) + +python populate_packages () { + import glob, copy, stat, errno, re + + workdir = oe.data.getVar('WORKDIR', d, 1) + if not workdir: + oe.error("WORKDIR not defined, unable to package") + return + + import os # path manipulations + outdir = oe.data.getVar('DEPLOY_DIR', d, 1) + if not outdir: + oe.error("DEPLOY_DIR not defined, unable to package") + return + oe.mkdirhier(outdir) + + dvar = oe.data.getVar('D', d, 1) + if not dvar: + oe.error("D not defined, unable to package") + return + oe.mkdirhier(dvar) + + packages = oe.data.getVar('PACKAGES', d, 1) + if not packages: + oe.debug(1, "PACKAGES not defined, nothing to package") + return + + pn = oe.data.getVar('PN', d, 1) + if not pn: + oe.error("PN not defined") + return + + os.chdir(dvar) + + def isexec(path): + try: + s = os.stat(path) + except (os.error, AttributeError): + return 0 + return (s[stat.ST_MODE] & stat.S_IEXEC) + + for pkg in packages.split(): + localdata = copy.deepcopy(d) + root = os.path.join(workdir, "install", pkg) + + oe.data.setVar('ROOT', '', localdata) + oe.data.setVar('ROOT_%s' % pkg, root, localdata) + pkgname = oe.data.getVar('PKG_%s' % pkg, localdata, 1) + if not pkgname: + pkgname = pkg + oe.data.setVar('PKG', pkgname, localdata) + + overrides = oe.data.getVar('OVERRIDES', localdata, 1) + if not overrides: + raise oe.build.FuncFailed('OVERRIDES not defined') + oe.data.setVar('OVERRIDES', overrides+':'+pkg, localdata) + + oe.data.update_data(localdata) + + root = oe.data.getVar('ROOT', localdata, 1) + oe.mkdirhier(root) + filesvar = oe.data.getVar('FILES', localdata, 1) or "" + files = filesvar.split() + stripfunc = "" + for file in files: + if os.path.isabs(file): + file = '.' + file + if not os.path.islink(file): + if os.path.isdir(file): + newfiles = [ os.path.join(file,x) for x in os.listdir(file) ] + if newfiles: + files += newfiles + continue + globbed = glob.glob(file) + if globbed: + if [ file ] != globbed: + files += globbed + continue + if (not os.path.islink(file)) and (not os.path.exists(file)): + continue + fpath = os.path.join(root,file) + dpath = os.path.dirname(fpath) + oe.mkdirhier(dpath) + if (oe.data.getVar('INHIBIT_PACKAGE_STRIP', d, 1) != '1') and not os.path.islink(file) and isexec(file): + stripfunc += "${STRIP} %s || : ;\n" % fpath + ret = oe.movefile(file,fpath) + if ret is None or ret == 0: + raise oe.build.FuncFailed("File population failed") + if not stripfunc == "": + from oe import build + # strip + oe.data.setVar('RUNSTRIP', '%s\nreturn 0' % stripfunc, localdata) + oe.data.setVarFlag('RUNSTRIP', 'func', 1, localdata) + oe.build.exec_func('RUNSTRIP', localdata) + del localdata + os.chdir(workdir) + + unshipped = [] + for root, dirs, files in os.walk(dvar): + for f in files: + path = os.path.join(root[len(dvar):], f) + unshipped.append(path) + + if unshipped != []: + oe.note("the following files were installed but not shipped in any package:") + for f in unshipped: + oe.note(" " + f) + + oe.build.exec_func("package_name_hook", d) + + dangling_links = {} + pkg_files = {} + for pkg in packages.split(): + dangling_links[pkg] = [] + pkg_files[pkg] = [] + inst_root = os.path.join(workdir, "install", pkg) + for root, dirs, files in os.walk(inst_root): + for f in files: + path = os.path.join(root, f) + rpath = path[len(inst_root):] + pkg_files[pkg].append(rpath) + try: + s = os.stat(path) + except OSError, (err, strerror): + if err != errno.ENOENT: + raise + target = os.readlink(path) + if target[0] != '/': + target = os.path.join(root[len(inst_root):], target) + dangling_links[pkg].append(target) + + for pkg in packages.split(): + for l in dangling_links[pkg]: + oe.debug(1, "%s contains dangling link %s" % (pkg, l)) + for p in packages.split(): + for f in pkg_files[p]: + if f == l: + oe.debug(1, "target found in %s" % p) + rdepends = explode_deps(oe.data.getVar('RDEPENDS_' + pkg, d, 1) or oe.data.getVar('RDEPENDS', d, 1) or "") + rdepends.append(oe.data.getVar('PKG_' + p, d, 1) or p) + oe.data.setVar('RDEPENDS_' + pkg, " " + " ".join(rdepends), d) + break + + def write_if_exists(f, pkg, var): + val = oe.data.getVar('%s_%s' % (var, pkg), d, 1) + if val: + f.write('%s_%s: %s\n' % (var, pkg, val)) + + data_file = os.path.join(workdir, "install", pn + ".package") + f = open(data_file, 'w') + f.write("PACKAGES: %s\n" % packages) + for pkg in packages.split(): + write_if_exists(f, pkg, 'DESCRIPTION') + write_if_exists(f, pkg, 'RDEPENDS') + write_if_exists(f, pkg, 'RPROVIDES') + write_if_exists(f, pkg, 'PKG') + write_if_exists(f, pkg, 'ALLOW_EMPTY') + write_if_exists(f, pkg, 'FILES') + write_if_exists(f, pkg, 'pkg_postinst') + f.close() + oe.build.exec_func("read_subpackage_metadata", d) +} + +python package_do_shlibs() { + import os, re, os.path + + lib_re = re.compile("^lib.*\.so") + libdir_re = re.compile(".*/lib$") + + packages = oe.data.getVar('PACKAGES', d, 1) + if not packages: + oe.note("no packages to build; not calculating shlibs") + return + + workdir = oe.data.getVar('WORKDIR', d, 1) + if not workdir: + oe.error("WORKDIR not defined") + return + + staging = oe.data.getVar('STAGING_DIR', d, 1) + if not staging: + oe.error("STAGING_DIR not defined") + return + + ver = oe.data.getVar('PV', d, 1) + if not ver: + oe.error("PV not defined") + return + + needed = {} + for pkg in packages.split(): + needs_ldconfig = False + oe.debug(2, "calculating shlib provides for %s" % pkg) + + pkgname = oe.data.getVar('PKG_%s' % pkg, d, 1) + if not pkgname: + pkgname = pkg + + needed[pkg] = [] + sonames = list() + top = os.path.join(workdir, "install", pkg) + for root, dirs, files in os.walk(top): + for file in files: + soname = None + path = os.path.join(root, file) + if os.access(path, os.X_OK) or lib_re.match(file): + cmd = (oe.data.getVar('BUILD_PREFIX', d, 1) or "") + "objdump -p " + path + " 2>/dev/null" + fd = os.popen(cmd) + lines = fd.readlines() + fd.close() + for l in lines: + m = re.match("\s+NEEDED\s+([^\s]*)", l) + if m: + needed[pkg].append(m.group(1)) + m = re.match("\s+SONAME\s+([^\s]*)", l) + if m and not m.group(1) in sonames: + sonames.append(m.group(1)) + if m and libdir_re.match(root): + needs_ldconfig = True + shlibs_dir = os.path.join(staging, "shlibs") + oe.mkdirhier(shlibs_dir) + shlibs_file = os.path.join(shlibs_dir, pkgname + ".list") + if os.path.exists(shlibs_file): + os.remove(shlibs_file) + shver_file = os.path.join(shlibs_dir, pkgname + ".ver") + if os.path.exists(shver_file): + os.remove(shver_file) + if len(sonames): + fd = open(shlibs_file, 'w') + for s in sonames: + fd.write(s + '\n') + fd.close() + fd = open(shver_file, 'w') + fd.write(ver + '\n') + fd.close() + if needs_ldconfig: + oe.note('adding ldconfig call to postinst for %s' % pkg) + postinst = oe.data.getVar('pkg_postinst_%s' % pkg, d, 1) or oe.data.getVar('pkg_postinst', d, 1) + if not postinst: + postinst = '#!/bin/sh\n' + postinst += 'ldconfig\n' + oe.data.setVar('pkg_postinst_%s' % pkg, postinst, d) + + for pkg in packages.split(): + oe.debug(2, "calculating shlib requirements for %s" % pkg) + + deps = list() + for n in needed[pkg]: + found = False + for file in os.listdir(shlibs_dir): + m = re.match('^(.*)\.list$', file) + if m: + dep_pkg = m.group(1) + fd = open(os.path.join(shlibs_dir, file)) + lines = fd.readlines() + fd.close() + for l in lines: + if n == l.rstrip(): + if dep_pkg == pkg: + found = True + continue + ver_file = os.path.join(shlibs_dir, dep_pkg + '.ver') + ver_needed = None + if os.path.exists(ver_file): + fd = open(ver_file) + ver_needed = fd.readline().rstrip() + fd.close() + if ver_needed: + dep = "%s (>= %s)" % (dep_pkg, ver_needed) + else: + dep = dep_pkg + if not dep in deps: + deps.append(dep) + found = True + if found == False: + oe.note("Couldn't find shared library provider for %s" % n) + + deps_file = os.path.join(workdir, "install", pkg + ".shlibdeps") + if os.path.exists(deps_file): + os.remove(deps_file) + if len(deps): + fd = open(deps_file, 'w') + for dep in deps: + fd.write(dep + '\n') + fd.close() + + oe.build.exec_func("read_shlibdeps", d) +} + +python package_do_split_locales() { + import os + + if (oe.data.getVar('PACKAGE_NO_LOCALE', d, 1) == '1'): + oe.note("package requested not splitting locales") + return + + packages = (oe.data.getVar('PACKAGES', d, 1) or "").split() + if not packages: + oe.note("no packages to build; not splitting locales") + return + + datadir = oe.data.getVar('datadir', d, 1) + if not datadir: + oe.note("datadir not defined") + return + + dvar = oe.data.getVar('D', d, 1) + if not dvar: + oe.error("D not defined") + return + + pn = oe.data.getVar('PN', d, 1) + if not pn: + oe.error("PN not defined") + return + + if pn + '-locale' in packages: + packages.remove(pn + '-locale') + + localedir = os.path.join(dvar + datadir, 'locale') + + if not os.path.isdir(localedir): + oe.note("No locale files in this package") + return + + locales = os.listdir(localedir) + + mainpkg = packages[0] + + for l in locales: + ln = l.lower().replace('_', '+').replace('@', '+') + pkg = pn + '-locale-' + ln + packages.append(pkg) + oe.data.setVar('FILES_' + pkg, os.path.join(datadir, 'locale', l), d) + oe.data.setVar('RDEPENDS_' + pkg, '%s virtual-locale-%s' % (mainpkg, ln), d) + oe.data.setVar('RPROVIDES_' + pkg, '%s-locale %s-translation' % (pn, ln), d) + oe.data.setVar('DESCRIPTION_' + pkg, '%s translation for %s' % (l, pn), d) + + oe.data.setVar('PACKAGES', ' '.join(packages), d) + + rdep = (oe.data.getVar('RDEPENDS_%s' % mainpkg, d, 1) or oe.data.getVar('RDEPENDS', d, 1) or "").split() + rdep.append('%s-locale*' % pn) + oe.data.setVar('RDEPENDS_%s' % mainpkg, ' '.join(rdep), d) +} + +python package_do_package () { + oe.build.exec_func('do_install', d) + oe.build.exec_func('package_do_split_locales', d) + oe.build.exec_func('populate_packages', d) + oe.build.exec_func('package_do_shlibs', d) +} + +do_package[dirs] = "${D}" +populate_packages[dirs] = "${D}" +EXPORT_FUNCTIONS do_package do_shlibs do_split_locales +addtask package before do_build after do_populate_staging -- cgit v1.2.3 From 581d4eb8af00ee427dcfa084175f09ec487e80b8 Mon Sep 17 00:00:00 2001 From: Phil Blundell Date: Sat, 3 Jul 2004 19:52:59 +0000 Subject: filter values stored in subpackage metadata file through string_escape codec BKrev: 40e70e9bSnw3a9M2es4NLCCquqYxYw --- classes/base.oeclass | 7 ++++++- classes/package.oeclass | 7 ++++++- 2 files changed, 12 insertions(+), 2 deletions(-) (limited to 'classes') diff --git a/classes/base.oeclass b/classes/base.oeclass index 8affad7a6c..5bffe724b5 100644 --- a/classes/base.oeclass +++ b/classes/base.oeclass @@ -589,6 +589,11 @@ python read_shlibdeps () { python read_subpackage_metadata () { import re + def decode(str): + import codecs + c = codecs.getdecoder("string_escape") + return c(str)[0] + data_file = oe.data.expand("${WORKDIR}/install/${PN}.package", d) if os.access(data_file, os.R_OK): f = file(data_file, 'r') @@ -598,7 +603,7 @@ python read_subpackage_metadata () { for l in lines: m = r.match(l) if m: - oe.data.setVar(m.group(1), m.group(2), d) + oe.data.setVar(m.group(1), decode(m.group(2)), d) } python __anonymous () { diff --git a/classes/package.oeclass b/classes/package.oeclass index 32da7df8d3..0a960f8409 100644 --- a/classes/package.oeclass +++ b/classes/package.oeclass @@ -200,9 +200,14 @@ python populate_packages () { break def write_if_exists(f, pkg, var): + def encode(str): + import codecs + c = codecs.getencoder("string_escape") + return c(str)[0] + val = oe.data.getVar('%s_%s' % (var, pkg), d, 1) if val: - f.write('%s_%s: %s\n' % (var, pkg, val)) + f.write('%s_%s: %s\n' % (var, pkg, encode(val))) data_file = os.path.join(workdir, "install", pn + ".package") f = open(data_file, 'w') -- cgit v1.2.3 From d0ef19ca9ab26886a2818ddd502039cfed0a1c96 Mon Sep 17 00:00:00 2001 From: Phil Blundell Date: Sat, 3 Jul 2004 22:21:41 +0000 Subject: wrap generated ldconfig calls in $D checks BKrev: 40e7317582sPh3mSU2gflgzY91cHpw --- classes/package.oeclass | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) (limited to 'classes') diff --git a/classes/package.oeclass b/classes/package.oeclass index 0a960f8409..1c9cc53cbb 100644 --- a/classes/package.oeclass +++ b/classes/package.oeclass @@ -224,6 +224,14 @@ python populate_packages () { oe.build.exec_func("read_subpackage_metadata", d) } +ldconfig_postinst_fragment() { +if [ x"$D" != "x" ]; then + exit 1 +else + ldconfig +fi +} + python package_do_shlibs() { import os, re, os.path @@ -301,7 +309,7 @@ python package_do_shlibs() { postinst = oe.data.getVar('pkg_postinst_%s' % pkg, d, 1) or oe.data.getVar('pkg_postinst', d, 1) if not postinst: postinst = '#!/bin/sh\n' - postinst += 'ldconfig\n' + postinst += oe.data.getVar('ldconfig_postinst_fragment', d, 1) oe.data.setVar('pkg_postinst_%s' % pkg, postinst, d) for pkg in packages.split(): -- cgit v1.2.3 From 5abdcf5b3df201622ffa824fa0d5af8a6402afe4 Mon Sep 17 00:00:00 2001 From: Phil Blundell Date: Sun, 4 Jul 2004 12:57:47 +0000 Subject: Merge bk://openembedded@openembedded.bkbits.net/packages into dixie.nexus.co.uk:/home/pb/oe/oe-packages 2004/07/04 13:57:37+01:00 nexus.co.uk!pb disable root logins initially in gpe-image BKrev: 40e7fecb8nt2kHw6tyKoOOmLgxDSZw --- classes/image_ipk.oeclass | 72 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 72 insertions(+) (limited to 'classes') diff --git a/classes/image_ipk.oeclass b/classes/image_ipk.oeclass index e69de29bb2..7821aa6c6d 100644 --- a/classes/image_ipk.oeclass +++ b/classes/image_ipk.oeclass @@ -0,0 +1,72 @@ +# TODO: +# - now that there is a rootfs_ipk one should re-use it here +# - also, the makedev-stuff should be configurable, there are devices +# out that use devfs and don't need no /dev-directory population +# We probably could do this with some gentoo-like "use devfs || ..." +# feature + +DEPENDS_prepend="ipkg-native ipkg-utils-native makedevs fakeroot-native mtd-native makedevs-native " +DEPENDS_append=" ${EXTRA_IMAGEDEPENDS}" + +PACKAGES = "" + +IMAGE_DEVICE_TABLE = "${@oe.which(oe.data.getVar('OEPATH', d, 1), 'files/device_table-minimal.txt')}" + +do_images[nostamp] = 1 +do_images[dirs] = ${TOPDIR} + +IPKG_ARGS = "-f ${DEPLOY_DIR_IMAGE}/ipkg.conf -o ${IMAGE_ROOTFS}" + +IMAGE_POSTPROCESS_COMMAND ?= "" + +fakeroot do_images () { + set -x + rm -rf ${IMAGE_ROOTFS} + + mkdir -p ${IMAGE_ROOTFS}/dev + makedevs -r ${IMAGE_ROOTFS} -D ${IMAGE_DEVICE_TABLE} + + touch ${DEPLOY_DIR_IPK}/Packages + ipkg-make-index -r ${DEPLOY_DIR_IPK}/Packages -p ${DEPLOY_DIR_IPK}/Packages -l ${DEPLOY_DIR_IPK}/Packages.filelist -m ${DEPLOY_DIR_IPK} + mkdir -p ${DEPLOY_DIR_IMAGE} + echo "src oe file:${DEPLOY_DIR_IPK}" > ${DEPLOY_DIR_IMAGE}/ipkg.conf + cat <>${DEPLOY_DIR_IMAGE}/ipkg.conf +arch all 1 +arch any 1 +arch noarch 1 +arch ${TARGET_ARCH} 10 +EOF + for i in ${IPKG_ARCHS}; do + if [ $i != "all" ] && [ $i != "${TARGET_ARCH}" ]; then + echo "arch $i 5" >> ${DEPLOY_DIR_IMAGE}/ipkg.conf + fi + done + ipkg-cl ${IPKG_ARGS} update + ipkg-cl ${IPKG_ARGS} install ${IPKG_INSTALL} + + export D=${IMAGE_ROOTFS} + export IPKG_OFFLINE_ROOT=${IMAGE_ROOTFS} + + for i in ${IMAGE_ROOTFS}/usr/lib/ipkg/info/*.preinst; do + if [ -f $i ] && ! sh $i; then + ipkg-cl ${IPKG_ARGS} flag unpacked `basename $i .preinst` + fi + done + for i in ${IMAGE_ROOTFS}/usr/lib/ipkg/info/*.postinst; do + if [ -f $i ] && ! sh $i; then + ipkg-cl ${IPKG_ARGS} flag unpacked `basename $i .postinst` + fi + done + + install -d ${IMAGE_ROOTFS}/${sysconfdir} + echo ${BUILDNAME} > ${IMAGE_ROOTFS}/${sysconfdir}/version + + ${IMAGE_POSTPROCESS_COMMAND} + + if test -z "$FAKEROOTKEY"; then + fakeroot -i ${TMPDIR}/fakedb.image oeimage -t ${IMAGE_FSTYPE} -e ${FILE} + else + oeimage -t ${IMAGE_FSTYPE} -e ${FILE} + fi +} +addtask images before do_build after do_install -- cgit v1.2.3 From fd62b55281f1493f24bd4dd0a9c6a2c078390221 Mon Sep 17 00:00:00 2001 From: Phil Blundell Date: Sun, 4 Jul 2004 15:24:14 +0000 Subject: rationalise module handling in kernel packages and MACHINE.conf files. changed module naming to use - rather than + as replacement for underscore. ignore errors from update-modules in postinst, in case modutils-collateral is in use. add postrm scripts. BKrev: 40e8211eLQcjqqTncCe6a_iEukTM_g --- classes/kernel.oeclass | 15 ++++++++++----- classes/linux_modules.oeclass | 0 classes/package.oeclass | 14 +++++++++++--- 3 files changed, 21 insertions(+), 8 deletions(-) create mode 100644 classes/linux_modules.oeclass (limited to 'classes') diff --git a/classes/kernel.oeclass b/classes/kernel.oeclass index 35884000a3..a0b26e33b9 100644 --- a/classes/kernel.oeclass +++ b/classes/kernel.oeclass @@ -85,10 +85,14 @@ if [ -n "$D" ]; then ${HOST_PREFIX}depmod -A -b $D -F $D/boot/System.map-${PV} $VER else depmod -A - update-modules + update-modules || true fi } +pkg_postrm_modules () { +update-modules || true +} + autoload_postinst_fragment() { if [ x"$D" = "x" ]; then modprobe %s @@ -184,7 +188,7 @@ python populate_packages_prepend () { m = re.match(pattern, os.path.basename(i)) if not m: continue - on = m.group(1).lower().replace('_', '+').replace('@', '+') + on = legitimize_package_name(m.group(1)) dependencies.append(format % on) return dependencies return [] @@ -219,7 +223,7 @@ python populate_packages_prepend () { f.close() files = oe.data.getVar('FILES_%s' % pkg, d, 1) - files = "%s %s/etc/modutils/%s %s/etc/modutils/%s.conf" % (files, dvar, basename, dvar, basename) + files = "%s /etc/modutils/%s /etc/modutils/%s.conf" % (files, basename, basename) oe.data.setVar('FILES_%s' % pkg, files, d) if vals.has_key("description"): @@ -239,7 +243,8 @@ python populate_packages_prepend () { module_pattern = 'kernel-module-%s' postinst = oe.data.getVar('pkg_postinst_modules', d, 1) - do_split_packages(d, root='/lib/modules', file_regex=module_regex, output_pattern=module_pattern, description='%s kernel module', postinst=postinst, recursive=True, hook=frob_metadata, extra_depends='update-modules') + postrm = oe.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') import re, os metapkg = "kernel-modules" @@ -248,7 +253,7 @@ python populate_packages_prepend () { blacklist = [] for l in module_deps.values(): for i in l: - pkg = module_pattern % re.match(module_regex, os.path.basename(i)).group(1).lower().replace('_', '+').replace('@', '+') + pkg = module_pattern % legitimize_package_name(re.match(module_regex, os.path.basename(i)).group(1)) blacklist.append(pkg) metapkg_rdepends = [] packages = oe.data.getVar('PACKAGES', d, 1).split() diff --git a/classes/linux_modules.oeclass b/classes/linux_modules.oeclass new file mode 100644 index 0000000000..e69de29bb2 diff --git a/classes/package.oeclass b/classes/package.oeclass index 1c9cc53cbb..cde4ef6e5c 100644 --- a/classes/package.oeclass +++ b/classes/package.oeclass @@ -1,4 +1,7 @@ -def do_split_packages(d, root, file_regex, output_pattern, description, postinst=None, recursive=False, hook=None, extra_depends=None, aux_files_pattern=None): +def legitimize_package_name(s): + return s.lower().replace('_', '-').replace('@', '+') + +def do_split_packages(d, root, file_regex, output_pattern, description, postinst=None, recursive=False, hook=None, extra_depends=None, aux_files_pattern=None, postrm=None): import os, os.path, oe dvar = oe.data.getVar('D', d, 1) @@ -13,6 +16,8 @@ def do_split_packages(d, root, file_regex, output_pattern, description, postinst if postinst: postinst = '#!/bin/sh\n' + postinst + if postrm: + postrm = '#!/bin/sh\n' + postrm if not recursive: objs = os.listdir(dvar + root) else: @@ -34,7 +39,7 @@ def do_split_packages(d, root, file_regex, output_pattern, description, postinst f = os.path.join(dvar + root, o) if not stat.S_ISREG(os.lstat(f).st_mode): continue - on = m.group(1).lower().replace('_', '+').replace('@', '+') + on = legitimize_package_name(m.group(1)) pkg = output_pattern % on if not pkg in packages: packages.append(pkg) @@ -47,6 +52,8 @@ def do_split_packages(d, root, file_regex, output_pattern, description, postinst oe.data.setVar('DESCRIPTION_' + pkg, description % on, d) if postinst: oe.data.setVar('pkg_postinst_' + pkg, postinst, d) + if postrm: + oe.data.setVar('pkg_postrm_' + pkg, postrm, d) else: oldfiles = oe.data.getVar('FILES_' + pkg, d, 1) if not oldfiles: @@ -220,6 +227,7 @@ python populate_packages () { write_if_exists(f, pkg, 'ALLOW_EMPTY') write_if_exists(f, pkg, 'FILES') write_if_exists(f, pkg, 'pkg_postinst') + write_if_exists(f, pkg, 'pkg_postrm') f.close() oe.build.exec_func("read_subpackage_metadata", d) } @@ -399,7 +407,7 @@ python package_do_split_locales() { mainpkg = packages[0] for l in locales: - ln = l.lower().replace('_', '+').replace('@', '+') + ln = legitimize_package_name(l) pkg = pn + '-locale-' + ln packages.append(pkg) oe.data.setVar('FILES_' + pkg, os.path.join(datadir, 'locale', l), d) -- cgit v1.2.3 From 3d9c97d7b2447e6eebb61f2e5f853379168df908 Mon Sep 17 00:00:00 2001 From: Phil Blundell Date: Mon, 5 Jul 2004 23:50:56 +0000 Subject: extract kernel ABI version from and use it for depmod BKrev: 40e9e960sikwl8nkKXWyWODkIMEU2w --- classes/kernel.oeclass | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) (limited to 'classes') diff --git a/classes/kernel.oeclass b/classes/kernel.oeclass index a0b26e33b9..f2b48ab0f7 100644 --- a/classes/kernel.oeclass +++ b/classes/kernel.oeclass @@ -14,6 +14,24 @@ KERNEL_LDSUFFIX ?= "" KERNEL_CC = "${CCACHE}${HOST_PREFIX}gcc${KERNEL_CCSUFFIX}" KERNEL_LD = "${LD}${KERNEL_LDSUFFIX}" +# parse kernel ABI version out of +def get_kernelversion(p): + import re + try: + f = open(p, 'r') + except IOError: + return None + l = f.readlines() + f.close() + r = re.compile("#define UTS_RELEASE \"(.*)\"") + for s in l: + m = r.match(s) + if m: + return m.group(1) + return None + +KERNEL_VERSION = "${@get_kernelversion('${S}/include/linux/version.h')}" + kernel_do_compile() { unset CFLAGS CPPFLAGS CXXFLAGS LDFLAGS oe_runmake include/linux/version.h CC="${KERNEL_CC}" LD="${KERNEL_LD}" @@ -37,6 +55,7 @@ kernel_do_stage() { ln -sf config-${PV} ${STAGING_KERNEL_DIR}/.config ln -sf config-${PV} ${STAGING_KERNEL_DIR}/kernel-config echo "${PV}" >${STAGING_KERNEL_DIR}/kernel-version + echo "${KERNEL_VERSION}" >${STAGING_KERNEL_DIR}/kernel-abiversion echo "${S}" >${STAGING_KERNEL_DIR}/kernel-source echo "${KERNEL_CCSUFFIX}" >${STAGING_KERNEL_DIR}/kernel-ccsuffix echo "${KERNEL_LDSUFFIX}" >${STAGING_KERNEL_DIR}/kernel-ldsuffix @@ -81,8 +100,7 @@ FILES_kernel = "/boot" pkg_postinst_modules () { if [ -n "$D" ]; then - VER=${PV} - ${HOST_PREFIX}depmod -A -b $D -F $D/boot/System.map-${PV} $VER + ${HOST_PREFIX}depmod -A -b $D -F $D/boot/System.map-${PV} ${KERNEL_VERSION} else depmod -A update-modules || true -- cgit v1.2.3 From b279451612d54ca06f95049b88cda857fb98a0ee Mon Sep 17 00:00:00 2001 From: Phil Blundell Date: Wed, 7 Jul 2004 10:13:21 +0000 Subject: filter out ',' from package names BKrev: 40ebccc1nMPN-50Q3ERZwFTyFCwetg --- classes/package.oeclass | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'classes') diff --git a/classes/package.oeclass b/classes/package.oeclass index cde4ef6e5c..381b4a4c76 100644 --- a/classes/package.oeclass +++ b/classes/package.oeclass @@ -1,5 +1,5 @@ def legitimize_package_name(s): - return s.lower().replace('_', '-').replace('@', '+') + return s.lower().replace('_', '-').replace('@', '+').replace(',', '+') def do_split_packages(d, root, file_regex, output_pattern, description, postinst=None, recursive=False, hook=None, extra_depends=None, aux_files_pattern=None, postrm=None): import os, os.path, oe -- cgit v1.2.3 From dbafb5fa2023261d6b709523807650def727d464 Mon Sep 17 00:00:00 2001 From: Michael Lauer Date: Fri, 9 Jul 2004 15:26:22 +0000 Subject: opie.oeclass: add note about quicklaunch symlink BKrev: 40eeb91exiDvkMrEtzwTspNo9MpCkQ --- classes/opie.oeclass | 94 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 94 insertions(+) (limited to 'classes') diff --git a/classes/opie.oeclass b/classes/opie.oeclass index e69de29bb2..f5327fd83b 100644 --- a/classes/opie.oeclass +++ b/classes/opie.oeclass @@ -0,0 +1,94 @@ +# +# This oeclass takes care about some of the itchy details of installing parts +# of Opie applications. Depending on quicklaunch or not, plugin or not, the +# TARGET is either a shared object, a shared object with a link to quicklauncher, +# or a usual binary. +# +# You have to provide two things: 1.) A proper SECTION field, and 2.) a proper APPNAME +# Then opie.oeclass will: +# * create the directory for the binary and install the binary file(s) +# * for applications: create the directory for the .desktop and install the .desktop file +# * for quicklauncher applications: create the startup symlink to the quicklauncher +# You can override the automatic detection of APPTYPE, valid values are 'quicklaunch', 'binary', 'plugin' +# You can override the default location of APPDESKTOP (/apps/
/) +# + +inherit palmtop + +DEPENDS_prepend = "libopie2 " + +# to be consistent, put all targets into workd