summaryrefslogtreecommitdiffstats
path: root/scripts
diff options
context:
space:
mode:
Diffstat (limited to 'scripts')
-rwxr-xr-xscripts/oe-pkgdata-util167
-rwxr-xr-xscripts/opkg-query-helper.py76
2 files changed, 243 insertions, 0 deletions
diff --git a/scripts/oe-pkgdata-util b/scripts/oe-pkgdata-util
new file mode 100755
index 0000000000..2427f10d89
--- /dev/null
+++ b/scripts/oe-pkgdata-util
@@ -0,0 +1,167 @@
+#!/usr/bin/env python
+
+# OpenEmbedded pkgdata utility
+#
+# Written by: Paul Eggleton <paul.eggleton@linux.intel.com>
+#
+# Copyright 2012 Intel Corporation
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License version 2 as
+# published by the Free Software Foundation.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along
+# with this program; if not, write to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+#
+# Currently only has one function - mapping of packages to their dev/dbg/doc/locale etc.
+# counterparts ("glob" command). Could be extended in future to perform other useful querying
+# functions on the pkgdata though.
+#
+
+import sys
+import os
+import os.path
+import fnmatch
+import re
+
+def usage():
+ print("syntax: pkgdata-util glob [-d] <pkgdatadir> <vendor-os> <pkglist> \"<globs>\"");
+
+
+
+def glob(args):
+ if len(args) < 4:
+ usage()
+ sys.exit(1)
+
+ pkgdata_dir = args[0]
+ target_suffix = args[1]
+ pkglist_file = args[2]
+ globs = args[3].split()
+
+ if target_suffix.startswith("-"):
+ target_suffix = target_suffix[1:]
+
+ skipregex = re.compile("-locale-|^locale-base-|-dev$|-doc$|-dbg$|-staticdev$|^kernel-module-")
+
+ mappedpkgs = set()
+ with open(pkglist_file, 'r') as f:
+ for line in f:
+ fields = line.rstrip().split()
+ if len(fields) < 2:
+ continue
+ pkg = fields[0]
+ arch = fields[1]
+ multimach_target_sys = "%s-%s" % (arch, target_suffix)
+
+ # Skip packages for which there is no point applying globs
+ if skipregex.search(pkg):
+ if debug:
+ print("%s -> !!" % pkg)
+ continue
+
+ # Skip packages that already match the globs, so if e.g. a dev package
+ # is already installed and thus in the list, we don't process it any further
+ # Most of these will be caught by skipregex already, but just in case...
+ already = False
+ for g in globs:
+ if fnmatch.fnmatchcase(pkg, g):
+ already = True
+ break
+ if already:
+ if debug:
+ print("%s -> !" % pkg)
+ continue
+
+ # Define some functions
+ def revpkgdata(pkgn):
+ return os.path.join(pkgdata_dir, multimach_target_sys, "runtime-reverse", pkgn)
+ def fwdpkgdata(pkgn):
+ return os.path.join(pkgdata_dir, multimach_target_sys, "runtime", pkgn)
+ def readpn(pkgdata_file):
+ pn = ""
+ with open(pkgdata_file, 'r') as f:
+ for line in f:
+ if line.startswith("PN:"):
+ pn = line.split(': ')[1].rstrip()
+ return pn
+ def readrenamed(pkgdata_file):
+ renamed = ""
+ pn = os.path.basename(pkgdata_file)
+ with open(pkgdata_file, 'r') as f:
+ for line in f:
+ if line.startswith("PKG_%s:" % pn):
+ renamed = line.split(': ')[1].rstrip()
+ return renamed
+
+ # Main processing loop
+ for g in globs:
+ mappedpkg = ""
+ # First just try substitution (i.e. packagename -> packagename-dev)
+ newpkg = g.replace("*", pkg)
+ revlink = revpkgdata(newpkg)
+ if os.path.exists(revlink):
+ mappedpkg = os.path.basename(os.readlink(revlink))
+ fwdfile = fwdpkgdata(mappedpkg)
+ if os.path.exists(fwdfile):
+ mappedpkg = readrenamed(fwdfile)
+ else:
+ # That didn't work, so now get the PN, substitute that, then map in the other direction
+ revlink = revpkgdata(pkg)
+ if os.path.exists(revlink):
+ pn = readpn(revlink)
+ newpkg = g.replace("*", pn)
+ fwdfile = fwdpkgdata(newpkg)
+ if os.path.exists(fwdfile):
+ mappedpkg = readrenamed(fwdfile)
+ else:
+ # Package doesn't even exist...
+ if debug:
+ print "%s is not a valid package!" % (pkg)
+ break
+
+ if mappedpkg:
+ if debug:
+ print "%s (%s) -> %s" % (pkg, g, mappedpkg)
+ mappedpkgs.add(mappedpkg)
+ else:
+ if debug:
+ print "%s (%s) -> ?" % (pkg, g)
+
+ if debug:
+ print "------"
+
+ print("\n".join(mappedpkgs))
+
+
+
+# Too lazy to use getopt
+debug = False
+noopt = False
+args = []
+for arg in sys.argv[1:]:
+ if arg == "--":
+ noopt = True
+ else:
+ if not noopt:
+ if arg == "-d":
+ debug = True
+ continue
+ args.append(arg)
+
+if len(args) < 1:
+ usage()
+ sys.exit(1)
+
+if args[0] == "glob":
+ glob(args[1:])
+else:
+ usage()
+ sys.exit(1)
diff --git a/scripts/opkg-query-helper.py b/scripts/opkg-query-helper.py
new file mode 100755
index 0000000000..b52284b325
--- /dev/null
+++ b/scripts/opkg-query-helper.py
@@ -0,0 +1,76 @@
+#!/usr/bin/env python
+
+# OpenEmbedded opkg query helper utility
+#
+# Written by: Paul Eggleton <paul.eggleton@linux.intel.com>
+#
+# Copyright 2012 Intel Corporation
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License version 2 as
+# published by the Free Software Foundation.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along
+# with this program; if not, write to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+#
+
+
+import sys
+import fileinput
+import re
+
+archmode = False
+filemode = False
+
+args = []
+for arg in sys.argv[1:]:
+ if arg == '-a':
+ archmode = True
+ elif arg == '-f':
+ filemode = True
+ else:
+ args.append(arg)
+
+# Regex for removing version specs after dependency items
+verregex = re.compile(' \([=<>]* [^ )]*\)')
+
+pkg = ""
+ver = ""
+for line in fileinput.input(args):
+ line = line.rstrip()
+ if ': ' in line:
+ if line.startswith("Package:"):
+ pkg = line.split(": ")[1]
+ ver = ""
+ else:
+ if archmode:
+ if line.startswith("Architecture:"):
+ arch = line.split(": ")[1]
+ print("%s %s" % (pkg,arch))
+ elif filemode:
+ if line.startswith("Version:"):
+ ver = line.split(": ")[1]
+ elif line.startswith("Architecture:"):
+ arch = line.split(": ")[1]
+ print("%s %s_%s_%s.ipk" % (pkg,pkg,ver,arch))
+ else:
+ if line.startswith("Depends:"):
+ depval = line.split(": ")[1]
+ deps = depval.split(", ")
+ for dep in deps:
+ dep = verregex.sub('', dep)
+ print("%s|%s" % (pkg,dep))
+ elif line.startswith("Recommends:"):
+ recval = line.split(": ")[1]
+ recs = recval.split(", ")
+ for rec in recs:
+ rec = verregex.sub('', rec)
+ print("%s|%s [REC]" % (pkg, rec))
+
/* Name.Function.Magic */ .highlight .vc { color: #336699 } /* Name.Variable.Class */ .highlight .vg { color: #dd7700 } /* Name.Variable.Global */ .highlight .vi { color: #3333bb } /* Name.Variable.Instance */ .highlight .vm { color: #336699 } /* Name.Variable.Magic */ .highlight .il { color: #0000DD; font-weight: bold } /* Literal.Number.Integer.Long */ }
diff -urN linux.old/drivers/mtd/maps/Kconfig linux.dev/drivers/mtd/maps/Kconfig
--- linux.old/drivers/mtd/maps/Kconfig	2006-08-30 06:30:59.000000000 +0200
+++ linux.dev/drivers/mtd/maps/Kconfig	2006-08-30 06:11:51.000000000 +0200
@@ -323,6 +323,15 @@
 	  Walnut board. If you have one of these boards and would like to
 	  use the flash chips on it, say 'Y'.
 
+config MTD_MAGICMAP
+	tristate "Flash device mapped on IBM 405EP MagicBox"
+	depends on MTD_CFI && MTD_PARTITIONS && 40x && MAGICBOX
+	help
+	  This enables access routines for the flash chips on the IBM 405EP
+	  MagicBox board. If you have one of these boards and would like to
+	  use the flash chips on it, say 'Y'.
+
+
 config MTD_EBONY
 	tristate "Flash devices mapped on IBM 440GP Ebony"
 	depends on MTD_JEDECPROBE && EBONY
diff -urN linux.old/drivers/mtd/maps/magicmap.c linux.dev/drivers/mtd/maps/magicmap.c
--- linux.old/drivers/mtd/maps/magicmap.c	1970-01-01 01:00:00.000000000 +0100
+++ linux.dev/drivers/mtd/maps/magicmap.c	2006-08-30 06:52:34.000000000 +0200
@@ -0,0 +1,113 @@
+/*
+ * magicmap.c: Copyleft 2005  Karol Lewandowski
+ *
+ * Mapping for MagicBox flash.
+ * Based on walnut.c.
+ *
+ * Heikki Lindholm <holindho@infradead.org>
+ *
+ *
+ * This program is free software; you can redistribute  it and/or modify it
+ * under  the terms of  the GNU General  Public License as published by the
+ * Free Software Foundation;  either version 2 of the  License, or (at your
+ * option) any later version.
+ */
+
+#include <linux/module.h>
+#include <linux/types.h>
+#include <linux/kernel.h>
+#include <linux/init.h>
+#include <linux/mtd/mtd.h>
+#include <linux/mtd/map.h>
+#include <linux/mtd/partitions.h>
+#include <linux/autoconf.h>
+#include <asm/io.h>
+
+static struct mtd_info *flash;
+
+static struct map_info magic_map = {
+	.name =		"Magically mapped flash",
+	.phys =         0xffc00000,
+	.size =		0x400000,
+	.bankwidth =	2,
+};
+
+static struct mtd_partition magic_partitions[] = {
+	{
+		.name =   "linux",
+		.offset = 0x0,
+		.size =   0x3c0000,
+	},
+	{
+		.name =   "rootfs",
+		.offset = 0x100000,
+		.size =   0x2c0000,
+	},
+	{
+		.name =   "bootloader",
+		.offset = 0x3c0000,
+		.size =   0x040000,
+		.mask_flags = MTD_WRITEABLE,
+	},
+};
+
+int __init init_magic(void)
+{
+	u32 size, len;
+	
+	magic_map.virt =
+		(void __iomem *)ioremap(magic_map.phys, magic_map.size);
+
+	if (!magic_map.virt) {
+		printk("Failed to ioremap flash.\n");
+		return -EIO;
+	}
+
+	simple_map_init(&magic_map);
+
+	flash = do_map_probe("cfi_probe", &magic_map);
+	if (flash) {
+		flash->owner = THIS_MODULE;
+		if (flash->read(flash, 12, sizeof(u32), &len, (char *) &size) ||
+			len != 4)
+			return -ENXIO;
+		size += 0x40; /* header size of the uImage */
+		if (size < 0x400000) {
+			/* skip to next erase block */
+			if (size & (flash->erasesize - 1)) {
+				size |= (flash->erasesize - 1);
+				size += 1;
+			}
+			magic_partitions[1].offset = size;
+			magic_partitions[1].size = magic_partitions[2].offset - size;
+		}
+		
+		add_mtd_partitions(flash, magic_partitions,
+					ARRAY_SIZE(magic_partitions));
+	} else {
+		printk("map probe failed for flash\n");
+		return -ENXIO;
+	}
+
+	return 0;
+}
+
+static void __exit cleanup_magic(void)
+{
+	if (flash) {
+		del_mtd_partitions(flash);
+		map_destroy(flash);
+	}
+
+	if (magic_map.virt) {
+		iounmap((void *)magic_map.virt);
+		magic_map.virt = NULL;
+	}
+}
+
+module_init(init_magic);
+module_exit(cleanup_magic);
+
+MODULE_LICENSE("GPL");
+MODULE_AUTHOR("Karol Lewandowski");
+MODULE_DESCRIPTION("MTD map and partitions for IBM 405EP MagicBox boards");
diff -urN linux.old/drivers/mtd/maps/Makefile linux.dev/drivers/mtd/maps/Makefile
--- linux.old/drivers/mtd/maps/Makefile	2006-08-30 06:30:59.000000000 +0200
+++ linux.dev/drivers/mtd/maps/Makefile	2006-08-30 06:11:51.000000000 +0200
@@ -58,6 +58,7 @@
 obj-$(CONFIG_MTD_BEECH)		+= beech-mtd.o
 obj-$(CONFIG_MTD_ARCTIC)	+= arctic-mtd.o
 obj-$(CONFIG_MTD_WALNUT)        += walnut.o
+obj-$(CONFIG_MTD_MAGICMAP)      += magicmap.o
 obj-$(CONFIG_MTD_H720X)		+= h720x-flash.o
 obj-$(CONFIG_MTD_SBC8240)	+= sbc8240.o
 obj-$(CONFIG_MTD_NOR_TOTO)	+= omap-toto-flash.o