summaryrefslogtreecommitdiffstats
path: root/meta-extras
diff options
context:
space:
mode:
authorRichard Purdie <rpurdie@linux.intel.com>2010-09-30 21:35:20 +0100
committerRichard Purdie <rpurdie@linux.intel.com>2010-09-30 22:16:10 +0100
commitc09cae578e5568c0ac975124db31f9cac05d50e9 (patch)
tree1183a51498c1d2c7874ea0d3741c4f70dbfc66ef /meta-extras
parenta51df11c1596746c85b015562ed67f37382b88b5 (diff)
downloadpoky-c09cae578e5568c0ac975124db31f9cac05d50e9.tar.gz
Move prism-firmware, spectrum-fw, python-urlgrabber, python-iniparse and yum-metadata to meta-extras
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
Diffstat (limited to 'meta-extras')
-rw-r--r--meta-extras/packages/prism-firmware/prism-firmware.bb32
-rw-r--r--meta-extras/packages/prism-firmware/prism-firmware/hostap.rules4
-rw-r--r--meta-extras/packages/prism-firmware/prism-firmware/prism-fw.sh32
-rw-r--r--meta-extras/packages/python/python-iniparse-native_0.3.2.bb6
-rw-r--r--meta-extras/packages/python/python-iniparse_0.3.2.bb11
-rw-r--r--meta-extras/packages/python/python-urlgrabber-native_3.9.1.bb4
-rw-r--r--meta-extras/packages/python/python-urlgrabber/urlgrabber-3.0.0-cleanup.patch28
-rw-r--r--meta-extras/packages/python/python-urlgrabber/urlgrabber-HEAD.patch142
-rw-r--r--meta-extras/packages/python/python-urlgrabber/urlgrabber-reset.patch15
-rw-r--r--meta-extras/packages/python/python-urlgrabber_3.9.1.bb16
-rw-r--r--meta-extras/packages/python/yum-metadata-parser-native_1.1.4.bb7
-rw-r--r--meta-extras/packages/python/yum-metadata-parser_1.1.4.bb15
-rw-r--r--meta-extras/packages/spectrum-fw/spectrum-fw.bb22
-rwxr-xr-xmeta-extras/packages/spectrum-fw/spectrum-fw/get_symbol_fw29
-rwxr-xr-xmeta-extras/packages/spectrum-fw/spectrum-fw/parse_symbol_fw129
15 files changed, 492 insertions, 0 deletions
diff --git a/meta-extras/packages/prism-firmware/prism-firmware.bb b/meta-extras/packages/prism-firmware/prism-firmware.bb
new file mode 100644
index 0000000000..903c55e15e
--- /dev/null
+++ b/meta-extras/packages/prism-firmware/prism-firmware.bb
@@ -0,0 +1,32 @@
1DESCRIPTION = "Firmware for the Prism 2.x/3 cards"
2SECTION = "base"
3LICENSE = "closed"
4RDEPENDS = "hostap-utils"
5RREPLACES = "prism3-firmware prism3-support"
6RCONFLICTS = "prism3-firmware prism3-support"
7PACKAGE_ARCH = "all"
8PR = "r3"
9
10SRC_URI = "http://www.red-bean.com/~proski/firmware/primary.tar.bz2 \
11 http://www.red-bean.com/~proski/firmware/1.7.4.tar.bz2 \
12 file://prism-fw.sh \
13 file://hostap.rules"
14
15do_install() {
16 install -d ${D}${base_libdir}/firmware/
17 install -d ${D}${base_libdir}/udev/
18 install -d ${D}${sysconfdir}/pcmcia/
19 install -d ${D}${sysconfdir}/udev/rules.d/
20
21 install -m 0644 ${WORKDIR}/primary/af010104.hex ${D}${base_libdir}/firmware/
22 install -m 0644 ${WORKDIR}/primary/ak010104.hex ${D}${base_libdir}/firmware/
23 install -m 0644 ${WORKDIR}/primary/pm010102.hex ${D}${base_libdir}/firmware/
24
25 install -m 0644 ${WORKDIR}/1.7.4/rf010704.hex ${D}${base_libdir}/firmware/
26
27 install -m 0755 ${WORKDIR}/prism-fw.sh ${D}${base_libdir}/udev/
28 install -m 0644 ${WORKDIR}/hostap.rules ${D}${sysconfdir}/udev/rules.d/
29}
30
31PACKAGES = "${PN}"
32FILES_${PN} += "${base_libdir}"
diff --git a/meta-extras/packages/prism-firmware/prism-firmware/hostap.rules b/meta-extras/packages/prism-firmware/prism-firmware/hostap.rules
new file mode 100644
index 0000000000..dece98ae93
--- /dev/null
+++ b/meta-extras/packages/prism-firmware/prism-firmware/hostap.rules
@@ -0,0 +1,4 @@
1#
2# update firmware on Prism cards (load it to RAM, not to Flash)
3#
4SUBSYSTEM=="net", KERNEL=="wlan*" RUN="/lib/udev/prism-fw.sh"
diff --git a/meta-extras/packages/prism-firmware/prism-firmware/prism-fw.sh b/meta-extras/packages/prism-firmware/prism-firmware/prism-fw.sh
new file mode 100644
index 0000000000..619f612be1
--- /dev/null
+++ b/meta-extras/packages/prism-firmware/prism-firmware/prism-fw.sh
@@ -0,0 +1,32 @@
1#!/bin/sh
2
3CARD_ID=`/usr/sbin/hostap_diag $INTERFACE|grep NICID|awk '{print $2}'|sed -e 's/id=0x//'`
4
5# 801d cards lack even Primary firmware so we cannot use hostap_diag
6PRI=/lib/firmware/pm010102.hex
7STA=/lib/firmware/rf010704.hex
8
9if [ $CARD_ID = '800c' ] || [ $CARD_ID = '8013' ] || [ $CARD_ID = '8017' ] || \
10 [ $CARD_ID = '801b' ] || [ $CARD_ID = '8022' ] || [ $CARD_ID = '8023' ] ; then
11 PRI=/lib/firmware/ak010104.hex
12elif [ $CARD_ID = '800b' ] || [ $CARD_ID = '8012' ] || [ $CARD_ID = '8016' ] || \
13 [ $CARD_ID = '801a' ] ; then
14 PRI=/lib/firmware/af010104.hex
15elif [ $CARD_ID = '800e' ] || [ $CARD_ID = '8015' ] || [ $CARD_ID = '8019' ] || \
16 [ $CARD_ID = '801d' ] ; then
17 PRI=/lib/firmware/pm010102.hex
18fi
19
20DIR=/proc/net/hostap/wlan0
21
22if [ ! -d $DIR ]; then
23 exit 1
24fi
25
26if grep -q no_pri=1 $DIR/debug; then
27 /usr/sbin/prism2_srec -gs wlan0 $PRI
28 /usr/sbin/prism2_srec -gp wlan0 $PRI
29fi
30
31/usr/sbin/prism2_srec -rp wlan0 $STA
32
diff --git a/meta-extras/packages/python/python-iniparse-native_0.3.2.bb b/meta-extras/packages/python/python-iniparse-native_0.3.2.bb
new file mode 100644
index 0000000000..41aa13d97a
--- /dev/null
+++ b/meta-extras/packages/python/python-iniparse-native_0.3.2.bb
@@ -0,0 +1,6 @@
1require python-iniparse_${PV}.bb
2inherit native
3DEPENDS = "python-native"
4RDEPENDS = ""
5PR = "r0"
6
diff --git a/meta-extras/packages/python/python-iniparse_0.3.2.bb b/meta-extras/packages/python/python-iniparse_0.3.2.bb
new file mode 100644
index 0000000000..27a38f4249
--- /dev/null
+++ b/meta-extras/packages/python/python-iniparse_0.3.2.bb
@@ -0,0 +1,11 @@
1DESCRIPTION = "iniparse is a INI parser for Python"
2HOMEPAGE = "http://code.google.com/p/iniparse/"
3SECTION = "devel/python"
4PRIORITY = "optional"
5LICENSE = "GPL"
6PR = "r0"
7
8SRC_URI = "http://iniparse.googlecode.com/files/iniparse-${PV}.tar.gz"
9S = "${WORKDIR}/iniparse-${PV}"
10
11inherit distutils
diff --git a/meta-extras/packages/python/python-urlgrabber-native_3.9.1.bb b/meta-extras/packages/python/python-urlgrabber-native_3.9.1.bb
new file mode 100644
index 0000000000..ff8f02ecd7
--- /dev/null
+++ b/meta-extras/packages/python/python-urlgrabber-native_3.9.1.bb
@@ -0,0 +1,4 @@
1require python-urlgrabber_${PV}.bb
2inherit native
3DEPENDS = "python-native python-pycurl-native"
4RDEPENDS = ""
diff --git a/meta-extras/packages/python/python-urlgrabber/urlgrabber-3.0.0-cleanup.patch b/meta-extras/packages/python/python-urlgrabber/urlgrabber-3.0.0-cleanup.patch
new file mode 100644
index 0000000000..7a1ee059d1
--- /dev/null
+++ b/meta-extras/packages/python/python-urlgrabber/urlgrabber-3.0.0-cleanup.patch
@@ -0,0 +1,28 @@
1diff -up urlgrabber-3.0.0/urlgrabber/grabber.py.cleanup urlgrabber-3.0.0/urlgrabber/grabber.py
2--- urlgrabber-3.0.0/urlgrabber/grabber.py.cleanup 2007-11-29 10:25:13.000000000 +0000
3+++ urlgrabber-3.0.0/urlgrabber/grabber.py 2007-11-29 10:26:15.000000000 +0000
4@@ -1204,16 +1204,18 @@ class URLGrabberFileObject:
5 bs = 1024*8
6 size = 0
7
8- if amount is not None: bs = min(bs, amount - size)
9- block = self.read(bs)
10- size = size + len(block)
11- while block:
12- new_fo.write(block)
13+ try:
14 if amount is not None: bs = min(bs, amount - size)
15 block = self.read(bs)
16 size = size + len(block)
17+ while block:
18+ new_fo.write(block)
19+ if amount is not None: bs = min(bs, amount - size)
20+ block = self.read(bs)
21+ size = size + len(block)
22+ finally:
23+ new_fo.close()
24
25- new_fo.close()
26 try:
27 modified_tuple = self.hdr.getdate_tz('last-modified')
28 modified_stamp = rfc822.mktime_tz(modified_tuple)
diff --git a/meta-extras/packages/python/python-urlgrabber/urlgrabber-HEAD.patch b/meta-extras/packages/python/python-urlgrabber/urlgrabber-HEAD.patch
new file mode 100644
index 0000000000..90180d29a0
--- /dev/null
+++ b/meta-extras/packages/python/python-urlgrabber/urlgrabber-HEAD.patch
@@ -0,0 +1,142 @@
1diff --git a/urlgrabber/grabber.py b/urlgrabber/grabber.py
2index e090e90..a26880c 100644
3--- a/urlgrabber/grabber.py
4+++ b/urlgrabber/grabber.py
5@@ -439,6 +439,12 @@ try:
6 except:
7 __version__ = '???'
8
9+try:
10+ # this part isn't going to do much - need to talk to gettext
11+ from i18n import _
12+except ImportError, msg:
13+ def _(st): return st
14+
15 ########################################################################
16 # functions for debugging output. These functions are here because they
17 # are also part of the module initialization.
18@@ -1052,7 +1058,8 @@ class PyCurlFileObject():
19 self._reget_length = 0
20 self._prog_running = False
21 self._error = (None, None)
22- self.size = None
23+ self.size = 0
24+ self._hdr_ended = False
25 self._do_open()
26
27
28@@ -1085,9 +1092,14 @@ class PyCurlFileObject():
29 return -1
30
31 def _hdr_retrieve(self, buf):
32+ if self._hdr_ended:
33+ self._hdr_dump = ''
34+ self.size = 0
35+ self._hdr_ended = False
36+
37 if self._over_max_size(cur=len(self._hdr_dump),
38 max_size=self.opts.max_header_size):
39- return -1
40+ return -1
41 try:
42 self._hdr_dump += buf
43 # we have to get the size before we do the progress obj start
44@@ -1104,7 +1116,17 @@ class PyCurlFileObject():
45 s = parse150(buf)
46 if s:
47 self.size = int(s)
48-
49+
50+ if buf.lower().find('location') != -1:
51+ location = ':'.join(buf.split(':')[1:])
52+ location = location.strip()
53+ self.scheme = urlparse.urlsplit(location)[0]
54+ self.url = location
55+
56+ if len(self._hdr_dump) != 0 and buf == '\r\n':
57+ self._hdr_ended = True
58+ if DEBUG: DEBUG.info('header ended:')
59+
60 return len(buf)
61 except KeyboardInterrupt:
62 return pycurl.READFUNC_ABORT
63@@ -1136,6 +1158,7 @@ class PyCurlFileObject():
64 self.curl_obj.setopt(pycurl.PROGRESSFUNCTION, self._progress_update)
65 self.curl_obj.setopt(pycurl.FAILONERROR, True)
66 self.curl_obj.setopt(pycurl.OPT_FILETIME, True)
67+ self.curl_obj.setopt(pycurl.FOLLOWLOCATION, True)
68
69 if DEBUG:
70 self.curl_obj.setopt(pycurl.VERBOSE, True)
71@@ -1291,7 +1314,12 @@ class PyCurlFileObject():
72 raise err
73
74 elif str(e.args[1]) == '' and self.http_code != 0: # fake it until you make it
75- msg = 'HTTP Error %s : %s ' % (self.http_code, self.url)
76+ if self.scheme in ['http', 'https']:
77+ msg = 'HTTP Error %s : %s ' % (self.http_code, self.url)
78+ elif self.scheme in ['ftp']:
79+ msg = 'FTP Error %s : %s ' % (self.http_code, self.url)
80+ else:
81+ msg = "Unknown Error: URL=%s , scheme=%s" % (self.url, self.scheme)
82 else:
83 msg = 'PYCURL ERROR %s - "%s"' % (errcode, str(e.args[1]))
84 code = errcode
85@@ -1299,6 +1327,12 @@ class PyCurlFileObject():
86 err.code = code
87 err.exception = e
88 raise err
89+ else:
90+ if self._error[1]:
91+ msg = self._error[1]
92+ err = URLGRabError(14, msg)
93+ err.url = self.url
94+ raise err
95
96 def _do_open(self):
97 self.curl_obj = _curl_cache
98@@ -1532,11 +1566,14 @@ class PyCurlFileObject():
99 def _over_max_size(self, cur, max_size=None):
100
101 if not max_size:
102- max_size = self.size
103- if self.opts.size: # if we set an opts size use that, no matter what
104- max_size = self.opts.size
105+ if not self.opts.size:
106+ max_size = self.size
107+ else:
108+ max_size = self.opts.size
109+
110 if not max_size: return False # if we have None for all of the Max then this is dumb
111- if cur > max_size + max_size*.10:
112+
113+ if cur > int(float(max_size) * 1.10):
114
115 msg = _("Downloaded more than max size for %s: %s > %s") \
116 % (self.url, cur, max_size)
117@@ -1582,7 +1619,11 @@ class PyCurlFileObject():
118 self.opts.progress_obj.end(self._amount_read)
119 self.fo.close()
120
121-
122+ def geturl(self):
123+ """ Provide the geturl() method, used to be got from
124+ urllib.addinfourl, via. urllib.URLopener.* """
125+ return self.url
126+
127 _curl_cache = pycurl.Curl() # make one and reuse it over and over and over
128
129
130diff --git a/urlgrabber/progress.py b/urlgrabber/progress.py
131index dd07c6a..45eb248 100644
132--- a/urlgrabber/progress.py
133+++ b/urlgrabber/progress.py
134@@ -658,6 +658,8 @@ def format_time(seconds, use_hours=0):
135 if seconds is None or seconds < 0:
136 if use_hours: return '--:--:--'
137 else: return '--:--'
138+ elif seconds == float('inf'):
139+ return 'Infinite'
140 else:
141 seconds = int(seconds)
142 minutes = seconds / 60
diff --git a/meta-extras/packages/python/python-urlgrabber/urlgrabber-reset.patch b/meta-extras/packages/python/python-urlgrabber/urlgrabber-reset.patch
new file mode 100644
index 0000000000..b63e7c33ac
--- /dev/null
+++ b/meta-extras/packages/python/python-urlgrabber/urlgrabber-reset.patch
@@ -0,0 +1,15 @@
1--- a/urlgrabber/grabber.py 2010-02-19 14:50:45.000000000 -0500
2+++ b/urlgrabber/grabber.py 2010-02-19 14:51:28.000000000 -0500
3@@ -1626,6 +1626,12 @@
4
5 _curl_cache = pycurl.Curl() # make one and reuse it over and over and over
6
7+def reset_curl_obj():
8+ """To make sure curl has reread the network/dns info we force a reload"""
9+ global _curl_cache
10+ _curl_cache.close()
11+ _curl_cache = pycurl.Curl()
12+
13
14 #####################################################################
15 # DEPRECATED FUNCTIONS
diff --git a/meta-extras/packages/python/python-urlgrabber_3.9.1.bb b/meta-extras/packages/python/python-urlgrabber_3.9.1.bb
new file mode 100644
index 0000000000..9f3a4cc6a7
--- /dev/null
+++ b/meta-extras/packages/python/python-urlgrabber_3.9.1.bb
@@ -0,0 +1,16 @@
1DESCRIPTION = "urlgrabber is a pure python package that drastically simplifies the fetching of files."
2
3HOMEPAGE = "http://urlgrabber.baseurl.org/"
4SECTION = "devel/python"
5PRIORITY = "optional"
6LICENSE = "GPL"
7PR = "r1"
8
9SRC_URI = "http://urlgrabber.baseurl.org/download/urlgrabber-${PV}.tar.gz \
10 file://urlgrabber-HEAD.patch;patch=1 \
11 file://urlgrabber-reset.patch;patch=1"
12S = "${WORKDIR}/urlgrabber-${PV}"
13
14DEPENDS = "python-pycurl"
15
16inherit distutils \ No newline at end of file
diff --git a/meta-extras/packages/python/yum-metadata-parser-native_1.1.4.bb b/meta-extras/packages/python/yum-metadata-parser-native_1.1.4.bb
new file mode 100644
index 0000000000..0a44b99e2c
--- /dev/null
+++ b/meta-extras/packages/python/yum-metadata-parser-native_1.1.4.bb
@@ -0,0 +1,7 @@
1require yum-metadata-parser_${PV}.bb
2inherit native
3DEPENDS = "python-native sqlite3-native glib-2.0-native libxml2-native"
4RDEPENDS = ""
5PR = "r0"
6
7#BUILD_CFLAGS += "-I${STAGING_LIBDIR}/glib-2.0"
diff --git a/meta-extras/packages/python/yum-metadata-parser_1.1.4.bb b/meta-extras/packages/python/yum-metadata-parser_1.1.4.bb
new file mode 100644
index 0000000000..2e404a2bb1
--- /dev/null
+++ b/meta-extras/packages/python/yum-metadata-parser_1.1.4.bb
@@ -0,0 +1,15 @@
1DESCRIPTION = "C-based metadata parser to quickly parse xml metadata into sqlite databases."
2HOMEPAGE = "http://linux.duke.edu/projects/yum/download.ptml"
3SECTION = "devel/python"
4PRIORITY = "optional"
5DEPENDS = "python sqlite3 glib-2.0 libxml2"
6LICENSE = "GPL"
7
8PR = "r1"
9
10SRC_URI = "http://linux.duke.edu/projects/yum/download/yum-metadata-parser/yum-metadata-parser-${PV}.tar.gz"
11S = "${WORKDIR}/yum-metadata-parser-${PV}"
12
13TARGET_CFLAGS += "-I${STAGING_LIBDIR}/glib-2.0"
14
15inherit distutils
diff --git a/meta-extras/packages/spectrum-fw/spectrum-fw.bb b/meta-extras/packages/spectrum-fw/spectrum-fw.bb
new file mode 100644
index 0000000000..45011d336c
--- /dev/null
+++ b/meta-extras/packages/spectrum-fw/spectrum-fw.bb
@@ -0,0 +1,22 @@
1DESCRIPTION = "Firmware for Spectrum Wireless LAN cards"
2DEPENDS += " unzip-native "
3LICENSE = "closed"
4PR = "r2"
5
6SRC_URI = "http://ftp.osuosl.org/pub/nslu2/sources/MC&DriverOnlyInstallers.zip \
7 file://get_symbol_fw \
8 file://parse_symbol_fw"
9S = "${WORKDIR}"
10
11do_configure() {
12 ./get_symbol_fw
13}
14
15do_install() {
16 install -d ${D}${base_libdir}/firmware/
17 install -m 0755 ${WORKDIR}/symbol_sp24t_prim_fw ${D}${base_libdir}/firmware/symbol_sp24t_prim_fw
18 install -m 0755 ${WORKDIR}/symbol_sp24t_sec_fw ${D}${base_libdir}/firmware/symbol_sp24t_sec_fw
19}
20
21PACKAGE_ARCH = "all"
22FILES_${PN} += "${base_libdir}/firmware/symbol*"
diff --git a/meta-extras/packages/spectrum-fw/spectrum-fw/get_symbol_fw b/meta-extras/packages/spectrum-fw/spectrum-fw/get_symbol_fw
new file mode 100755
index 0000000000..80420b01a8
--- /dev/null
+++ b/meta-extras/packages/spectrum-fw/spectrum-fw/get_symbol_fw
@@ -0,0 +1,29 @@
1#!/bin/sh
2
3# Get firmware for Symbol Spectrum24 Trilogy.
4# Both the header file and the binary firmware files are produced.
5
6# Copyright (C) 2004 Pavel Roskin <proski@gnu.org>
7
8# This script is Free Software, and it can be copied, distributed and
9# modified as defined in the GNU General Public License. A copy of
10# its license can be downloaded from http://www.gnu.org/copyleft/gpl.html
11
12# Usage: get_symbol_fw
13# Output: spectrum_fw.h symbol_sp24t_prim_fw symbol_sp24t_sec_fw
14# Needed tools: curl (or wget), unzip, perl.
15
16set -e
17
18DL_INT1='S24DRVR392B67-01.exe'
19DL_INT2='Driver Only Installer/NetWLan5.sys'
20DRIVER1=symbol1.drv
21DRIVER2=symbol2.drv
22
23unzip -p $DL_INT1 "$DL_INT2" >$DRIVER2
24
25perl parse_symbol_fw $DRIVER2 spectrum_fw.h symbol_sp24t_prim_fw \
26 symbol_sp24t_sec_fw
27
28rm -f $DRIVER1 $DRIVER2
29
diff --git a/meta-extras/packages/spectrum-fw/spectrum-fw/parse_symbol_fw b/meta-extras/packages/spectrum-fw/spectrum-fw/parse_symbol_fw
new file mode 100755
index 0000000000..7fe0ea57c4
--- /dev/null
+++ b/meta-extras/packages/spectrum-fw/spectrum-fw/parse_symbol_fw
@@ -0,0 +1,129 @@
1#!/usr/bin/perl -w
2
3# Extract Symbol firmware and convert is to a header file and two binary
4# files.
5
6# Copyright (C) 2004 Pavel Roskin <proski@gnu.org>
7
8# This script is Free Software, and it can be copied, distributed and
9# modified as defined in the GNU General Public License. A copy of
10# its license can be downloaded from http://www.gnu.org/copyleft/gpl.html
11
12# Usage:
13# parse_symbol_fw infile header binfile1 binfile2
14
15use strict;
16
17# Print message and exit (like "die", but without raising an exception).
18# Newline is added at the end.
19sub error
20{
21 printf STDERR "ERROR: ";
22 printf STDERR @_;
23 printf STDERR "\n";
24 exit 1;
25}
26
27sub readnum_ba ()
28{
29 my $byte_a;
30 read INFILE,$byte_a,1;
31 my $byte_b;
32 read INFILE,$byte_b,1;
33 return (ord($byte_b) << 8) + ord($byte_a);
34}
35
36
37if ($#ARGV != 3) {
38 error ("Usage: parse_symbol_fw infile header binfile1 binfile2");
39}
40
41unless (open (INFILE, "< $ARGV[0]")) {
42 error ("couldn't open $ARGV[0] for reading: $!");
43}
44
45unless (open (OUTFILE, "> $ARGV[1]")) {
46 error ("couldn't open $ARGV[1] for writing: $!");
47}
48
49# Process one array, either for primary or for secondary firmware
50sub process_one_array($$) {
51 my $arrname = shift(@_);
52 my $binfile = shift(@_);
53 my $offset = -1;
54 my $str_offset = 0;
55
56 # Skip to the beginning of firmware
57 $/ = "\x00";
58 while (<INFILE>) {
59 if (m{FILE: }g) {
60 $offset = $str_offset + pos() - 6;
61 last;
62 }
63 $str_offset = tell(INFILE);
64 }
65
66 if ($offset == -1) {
67 error("Cannot find FILE: marker");
68 }
69
70 my @fwdata = split;
71 print $fwdata[1] . "\n";
72 seek(INFILE, $offset, 0);
73
74 my $blknum = $fwdata[3];
75 my $pdrlen = $fwdata[4];
76 my $crclen = $fwdata[5];
77 my $compatlen = $fwdata[6];
78
79 while (!eof(INFILE)) {
80 my $byte;
81 read INFILE, $byte, 1;
82 last if (ord($byte) == 0x1a);
83 }
84
85 # Walk all blocks
86 my $block = $blknum;
87 while ($block-- > 0) {
88 seek(INFILE, 4, 1);
89 my $len = readnum_ba();
90 seek(INFILE, $len, 1);
91 }
92
93 my $img_len = tell(INFILE) - $offset + $pdrlen + $crclen + $compatlen + 2;
94 seek(INFILE, $offset, 0);
95
96 # Write binary file for the section
97 unless (open (BINFILE, "> $binfile")) {
98 error ("couldn't open $binfile for writing: $!");
99 }
100
101 # Output the array
102 printf OUTFILE "/* %s %s */\n", $fwdata[1], $fwdata[2];
103 printf OUTFILE "static u8 %s[] = {\n", $arrname;
104
105 my $count = 0;
106 while ($count++ < $img_len) {
107 my $byte;
108 read INFILE, $byte, 1;
109 $byte = ord($byte);
110 printf OUTFILE "0x%02x,", $byte;
111 printf BINFILE "%c", $byte;
112 if ($count % 16 == 0) {
113 printf OUTFILE "\n";
114 }
115 }
116
117 if ($img_len % 16) {
118 printf OUTFILE "\n";
119 }
120
121 print OUTFILE "};\n";
122 close(BINFILE);
123}
124
125process_one_array("primsym", $ARGV[2]);
126process_one_array("secsym", $ARGV[3]);
127
128close(INFILE);
129close(OUTFILE);