Merge bk://oe-devel@oe-devel.bkbits.net/packages
authorTim Ansell <mithro@mithis.com>
Thu, 25 Nov 2004 11:30:58 +0000 (11:30 +0000)
committerTim Ansell <mithro@mithis.com>
Thu, 25 Nov 2004 11:30:58 +0000 (11:30 +0000)
into mithis.com:/cc/packages

2004/11/25 21:26:24+10:30 mithis.com!mithro
irda now works out of the box on C700 and C860.

2004/11/25 16:00:21+10:30 mithis.com!mithro
Merge bk://oe-devel@oe-devel.bkbits.net/packages
into mithis.com:/cc/packages

2004/11/22 06:03:48+10:30 com[tim]!mithro
packages.cow7.diffs

BKrev: 41a5c272IuQI7xqgYGRkklwBvdUGNw

classes/base.oeclass
classes/package.oeclass
classes/package_ipk.oeclass
classes/package_rpm.oeclass
classes/package_tar.oeclass
irda-utils/files/init [new file with mode: 0644]
irda-utils/irda-utils_0.9.16.oe
misc-binary-only/tda1004x-firmware.oe

index 35c7fbe..4e3e171 100644 (file)
@@ -247,7 +247,7 @@ python do_showdata() {
        # 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():
+       for e in oe.data.keys(d):
                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):
@@ -263,7 +263,7 @@ python do_listtasks() {
        # emit variables and shell functions
        #oe.data.emit_env(sys.__stdout__, d)
        # emit the metadata which isnt valid shell
-       for e in d.keys():
+       for e in oe.data.keys(d):
                if oe.data.getVarFlag(e, 'task', d):
                        sys.__stdout__.write("%s\n" % e)
 }
@@ -299,9 +299,10 @@ addtask fetch
 do_fetch[dirs] = "${DL_DIR}"
 do_fetch[nostamp] = "1"
 python base_do_fetch() {
-       import sys, copy
+       import sys
 
-       localdata = copy.deepcopy(d)
+       localdata = {}
+       oe.data.linkDataSet(localdata,d)
        oe.data.update_data(localdata)
 
        src_uri = oe.data.getVar('SRC_URI', localdata, 1)
@@ -373,9 +374,10 @@ def oe_unpack_file(file, data, url = None):
 addtask unpack after do_fetch
 do_unpack[dirs] = "${WORKDIR}"
 python base_do_unpack() {
-       import re, copy, os
+       import re, os
 
-       localdata = copy.deepcopy(d)
+       localdata = {}
+       oe.data.linkDataSet(localdata,d)
        oe.data.update_data(localdata)
 
        src_uri = oe.data.getVar('SRC_URI', localdata)
index 443c057..e26f5e9 100644 (file)
@@ -98,7 +98,7 @@ def package_frob_arch(d):
                                return
 
 python populate_packages () {
-       import glob, copy, stat, errno, re
+       import glob, stat, errno, re
 
        workdir = oe.data.getVar('WORKDIR', d, 1)
        if not workdir:
@@ -140,7 +140,8 @@ python populate_packages () {
                return (s[stat.ST_MODE] & stat.S_IEXEC)
 
        for pkg in packages.split():
-               localdata = copy.deepcopy(d)
+               localdata = {}
+               oe.data.linkDataSet(localdata,d)
                root = os.path.join(workdir, "install", pkg)
 
                os.system('rm -rf %s' % root)
index 5ec1f82..f680b1b 100644 (file)
@@ -60,7 +60,6 @@ python package_ipk_install () {
 }
 
 python package_ipk_do_package_ipk () {
-       import copy # to back up env data
        import sys
 
        workdir = oe.data.getVar('WORKDIR', d, 1)
@@ -96,8 +95,8 @@ python package_ipk_do_package_ipk () {
                return
 
        for pkg in packages.split():
-               from copy import deepcopy
-               localdata = deepcopy(d)
+               localdata = {}
+               oe.data.linkDataSet(localdata,d)
                root = "%s/install/%s" % (workdir, pkg)
 
                oe.data.setVar('ROOT', '', localdata)
index e69de29..36398f7 100644 (file)
@@ -0,0 +1,135 @@
+inherit package
+inherit rpm_core
+
+RPMBUILD="rpmbuild --short-circuit ${RPMOPTS}"
+
+python write_specfile() {
+       from oe import data, build
+       import sys
+       out_vartranslate = {
+               "PKG": "Name",
+               "PV": "Version",
+               "PR": "Release",
+               "DESCRIPTION": "%description",
+               "ROOT": "BuildRoot",
+               "LICENSE": "License",
+               "SECTION": "Group",
+       }
+
+       root = oe.data.getVar('ROOT', d)
+
+       # get %files
+       filesvar = oe.data.expand(oe.data.getVar('FILES', d), d) or ""
+       from glob import glob
+       files = filesvar.split()
+       todelete = []
+       for file in files:
+               if file[0] == '.':
+                       newfile = file[1:]
+                       files[files.index(file)] = newfile
+                       file = newfile
+               else:
+                       newfile = file
+               realfile = os.path.join(root, './'+file)
+               if not glob(realfile):
+                       todelete.append(files[files.index(newfile)])
+       for r in todelete:
+               try:
+                       del files[files.index(r)]
+               except ValueError:
+                       pass
+       if not files:
+               from oe import note
+               note("Not creating empty archive for %s-%s-%s" % (oe.data.getVar('PKG',d, 1), oe.data.getVar('PV', d, 1), oe.data.getVar('PR', d, 1)))
+               return
+
+       # output .spec using this metadata store
+       try:
+               from __builtin__ import file
+               if not oe.data.getVar('OUTSPECFILE', d):
+                       raise OSError('eek!')
+               specfile = file(oe.data.getVar('OUTSPECFILE', d), 'w')
+       except OSError:
+               raise oe.build.FuncFailed("unable to open spec file for writing.")
+
+#      fd = sys.__stdout__
+       fd = specfile
+       for var in out_vartranslate.keys():
+               if out_vartranslate[var][0] == "%":
+                       continue
+               fd.write("%s\t: %s\n" % (out_vartranslate[var], oe.data.getVar(var, d)))
+       fd.write("Summary\t: .\n")
+
+       for var in out_vartranslate.keys():
+               if out_vartranslate[var][0] != "%":
+                       continue
+               fd.write(out_vartranslate[var] + "\n")
+               fd.write(oe.data.getVar(var, d) + "\n\n")
+
+       fd.write("%files\n")
+       for file in files:
+               fd.write("%s\n" % file)
+
+       fd.close()
+
+       # call out rpm -bb on the .spec, thereby creating an rpm
+
+       oe.data.setVar('BUILDSPEC', "${RPMBUILD} -bb ${OUTSPECFILE}\n", d)
+       oe.data.setVarFlag('BUILDSPEC', 'func', '1', d)
+       oe.build.exec_func('BUILDSPEC', d)
+
+       # move the rpm into the pkgoutdir
+       rpm = oe.data.expand('${RPMBUILDPATH}/RPMS/${TARGET_ARCH}/${PKG}-${PV}-${PR}.${TARGET_ARCH}.rpm', d)
+       outrpm = oe.data.expand('${DEPLOY_DIR_RPM}/${PKG}-${PV}-${PR}.${TARGET_ARCH}.rpm', d)
+       oe.movefile(rpm, outrpm)
+}
+
+python do_package_rpm () {
+       workdir = oe.data.getVar('WORKDIR', d)
+       if not workdir:
+               raise oe.build.FuncFailed("WORKDIR not defined")
+       workdir = oe.data.expand(workdir, d)
+
+       import os # path manipulations
+       outdir = oe.data.getVar('DEPLOY_DIR_RPM', d)
+       if not outdir:
+               raise oe.build.FuncFailed("DEPLOY_DIR_RPM not defined")
+       outdir = oe.data.expand(outdir, d)
+       oe.mkdirhier(outdir)
+
+       packages = oe.data.getVar('PACKAGES', d)
+       if not packages:
+               packages = "${PN}"
+               oe.data.setVar('FILES', '', d)
+               ddir = oe.data.expand(oe.data.getVar('D', d), d)
+               oe.mkdirhier(ddir)
+               oe.data.setVar(oe.data.expand('FILES_${PN}', d), ''.join([ "./%s" % x for x in os.listdir(ddir)]), d)
+       packages = oe.data.expand(packages, d)
+
+       for pkg in packages.split():
+               localdata = {}
+               oe.data.linkDataSet(localdata,d)
+               root = "%s/install/%s" % (workdir, pkg)
+
+               oe.data.setVar('ROOT', '', localdata)
+               oe.data.setVar('ROOT_%s' % pkg, root, localdata)
+               oe.data.setVar('PKG', pkg, localdata)
+
+               overrides = oe.data.getVar('OVERRIDES', localdata)
+               if not overrides:
+                       raise oe.build.FuncFailed('OVERRIDES not defined')
+               overrides = oe.data.expand(overrides, localdata)
+               oe.data.setVar('OVERRIDES', '%s:%s' % (overrides, pkg), localdata)
+
+               oe.data.update_data(localdata)
+# stuff
+               root = oe.data.getVar('ROOT', localdata)
+               basedir = os.path.dirname(root)
+               pkgoutdir = outdir
+               oe.mkdirhier(pkgoutdir)
+               oe.data.setVar('OUTSPECFILE', os.path.join(workdir, "%s.spec" % pkg), localdata)
+               oe.build.exec_func('write_specfile', localdata)
+               del localdata
+}
+
+addtask package_rpm after do_package before do_build
index e69de29..e8faedf 100644 (file)
@@ -0,0 +1,100 @@
+inherit package
+
+python package_tar_fn () {
+       import os
+       from oe import data
+       fn = os.path.join(oe.data.getVar('DEPLOY_DIR_TAR', d), "%s-%s-%s.tar.gz" % (oe.data.getVar('PKG', d), oe.data.getVar('PV', d), oe.data.getVar('PR', d)))
+       fn = oe.data.expand(fn, d)
+       oe.data.setVar('PKGFN', fn, d)
+}
+
+python package_tar_install () {
+       import os, sys
+       pkg = oe.data.getVar('PKG', d, 1)
+       pkgfn = oe.data.getVar('PKGFN', d, 1)
+       rootfs = oe.data.getVar('IMAGE_ROOTFS', d, 1)
+
+       if None in (pkg,pkgfn,rootfs):
+               oe.error("missing variables (one or more of PKG, PKGFN, IMAGEROOTFS)")
+               raise oe.build.FuncFailed
+       try:
+               oe.mkdirhier(rootfs)
+               os.chdir(rootfs)
+       except OSError:
+               (type, value, traceback) = sys.exc_info()
+               print value
+               raise oe.build.FuncFailed
+
+       if not os.access(pkgfn, os.R_OK):
+               oe.debug(1, "%s does not exist, skipping" % pkgfn)
+               raise oe.build.FuncFailed
+
+       ret = os.system('zcat %s | tar -xf -' % pkgfn)
+       if ret != 0:
+               raise oe.build.FuncFailed
+}
+
+python do_package_tar () {
+       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_TAR', d, 1)
+       if not outdir:
+               oe.error("DEPLOY_DIR_TAR 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
+
+       for pkg in packages.split():
+               localdata = {}
+               oe.data.linkDataSet(localdata,d)
+               root = "%s/install/%s" % (workdir, pkg)
+
+               oe.data.setVar('ROOT', '', localdata)
+               oe.data.setVar('ROOT_%s' % pkg, root, localdata)
+               oe.data.setVar('PKG', pkg, localdata)
+
+               overrides = oe.data.getVar('OVERRIDES', localdata)
+               if not overrides:
+                       raise oe.build.FuncFailed('OVERRIDES not defined')
+               overrides = oe.data.expand(overrides, localdata)
+               oe.data.setVar('OVERRIDES', '%s:%s' % (overrides, pkg), localdata)
+
+               oe.data.update_data(localdata)
+# stuff
+               root = oe.data.getVar('ROOT', localdata)
+               oe.mkdirhier(root)
+               basedir = os.path.dirname(root)
+               pkgoutdir = outdir
+               oe.mkdirhier(pkgoutdir)
+               oe.build.exec_func('package_tar_fn', localdata)
+               tarfn = oe.data.getVar('PKGFN', localdata, 1)
+#              if os.path.exists(tarfn):
+#                      del localdata
+#                      continue
+               os.chdir(root)
+               from glob import glob
+               if not glob('*'):
+                       oe.note("Not creating empty archive for %s-%s-%s" % (pkg, oe.data.getVar('PV', localdata, 1), oe.data.getVar('PR', localdata, 1)))
+                       continue
+               ret = os.system("tar -czvf %s %s" % (tarfn, '.'))
+               if ret != 0:
+                       oe.error("Creation of tar %s failed." % tarfn)
+# end stuff
+               del localdata
+}
+
+addtask package_tar after do_package before do_build
diff --git a/irda-utils/files/init b/irda-utils/files/init
new file mode 100644 (file)
index 0000000..e69de29
index 36c1e11..f9aec18 100644 (file)
@@ -3,10 +3,12 @@ DESCRIPTION = "Provides common files needed to use IrDA. \
 IrDA allows communication over Infrared with other devices \
 such as phones and laptops."
 LICENSE = "GPL"
+PR="r1"
 
 SRC_URI = "${SOURCEFORGE_MIRROR}/irda/irda-utils-${PV}.tar.gz \
           file://configure.patch;patch=1 \
-          file://m4.patch;patch=1"
+          file://m4.patch;patch=1 \
+          file://init"
 
 inherit autotools 
 
@@ -19,4 +21,23 @@ do_install () {
        install -d ${D}${sbindir}
        oe_runmake -C irattach ROOT="${D}" install
        oe_runmake -C irdaping ROOT="${D}" install
+
+       install -d ${D}/${sysconfdir}/init.d
+       install -m 0755 ${WORKDIR}/init ${D}/etc/init.d/irattach
+}
+
+pkg_postinst_irda-utils() {
+if test "x$D" != "x"; then
+       exit 1
+else
+       update-rc.d irattach defaults
+fi
+}
+
+pkg_postrm_irda-utils() {
+if test "x$D" != "x"; then
+       exit 1
+else
+       update-rc.d -f irattach remove
+fi
 }
index 9c494ff..ffd72c3 100644 (file)
@@ -5,9 +5,10 @@ SRC_URI = "http://hauppauge.lightpath.net/de/nova-pci216.exe"
 FILES_${PN} = '*'
 
 python do_unpack() {
-       import re, copy
+       import re
 
-       localdata = copy.deepcopy(d)
+       localdata = {}
+       oe.data.linkDataSet(localdata,d)
        overrides = oe.data.getVar('OVERRIDES', localdata, 1)
        if not overrides:
                raise oe.build.FuncFailed('OVERRIDES not defined')