]> pilppa.org Git - familiar-h63xx-build.git/blob - org.handhelds.familiar/classes/debian-vampyre.bbclass
gnupg: add 1.4.3-2 from Debian.
[familiar-h63xx-build.git] / org.handhelds.familiar / classes / debian-vampyre.bbclass
1 # debian-vampyre.bbclass - the supermarket thing
2 #
3 # Copyright (C) 2006, Rene Wagner
4 # Released under the MIT license (see org.handhelds.familiar/COPYING.MIT)
5 #
6
7 PN = "${@bb.parse.BBHandler.vars_from_file(bb.data.getVar('FILE',d),d)[0] or 'defaultpkgname'}"
8 PV = "${@'-'.join((bb.parse.BBHandler.vars_from_file(bb.data.getVar('FILE',d),d)[1] or '1.0').split('-')[:-1])}"
9 PR = "${@(bb.parse.BBHandler.vars_from_file(bb.data.getVar('FILE',d),d)[1] or '1').split('-')[-1]}"
10
11 DEBIAN_ARCHIVE ?= "main"
12 DEBIAN_BASE_URI = "${DEBIAN_MIRROR}/${DEBIAN_ARCHIVE}/${@bb.data.getVar('PN', d, 1)[0]}/${PN}"
13 SRC_URI_prepend = "${DEBIAN_BASE_URI}/${PN}_${PV}.orig.tar.gz \
14                    ${DEBIAN_BASE_URI}/${PN}_${PV}-${PR}.diff.gz;patch=1 "
15
16 python do_dpatch () {
17         plist = (base_read_file("%s/debian/patches/00list" % bb.data.getVar("S", d, 1)) or "").split()
18         for p in plist:
19                 bb.note("Applying patch '%s'" % p)
20                 bb.data.setVar("do_patchcmd", bb.data.getVar("PATCHCMD", d, 1) % (1, p, "${S}/debian/patches/%s.dpatch" % p), d)
21                 bb.data.setVarFlag("do_patchcmd", "func", 1, d)
22                 bb.data.setVarFlag("do_patchcmd", "dirs", "${WORKDIR} ${S}", d)
23                 bb.build.exec_func("do_patchcmd", d)
24 }
25
26 python patch_applied() {
27         if bb.data.getVar("PATCH_APPLIED_NUM", d, 1) != 0:
28                 return
29
30         import os
31         import os.path
32         
33         dpatch = False
34         try:
35                 os.stat(os.path.join(bb.data.getVar("S", d, 1), "debian", "patches", "00list"))
36                 dpatch = True
37         except Exception, e:
38                 pass
39         
40         if dpatch:
41                 bb.event.fire(bb.build.TaskStarted("do_dpatch", d))
42                 bb.build.exec_func("do_dpatch", d)
43                 bb.event.fire(bb.build.TaskSucceeded("do_dpatch", d))
44 }
45
46 def parse_control(bbvar, field, d):
47         import bb
48         import re
49         
50         readable = False
51         try:
52                 control = (base_read_file("%s/debian/control" % bb.data.getVar("S", d, 1)) or "").split("\n")
53                 readable = True
54         except Exception, e:
55                 pass
56
57         if readable:
58                 pkg = None
59                 r = re.compile("([a-zA-Z]*): (.*)$")
60
61                 fields = {}
62                 for line in control:
63                         m = r.match(line)
64                         if m:
65                                 if m.group(1) == "Package":
66                                         pkg = m.group(2)
67                                 if not pkg or pkg == bb.data.getVar("PN", d, 1):
68                                         fields[m.group(1)] = m.group(2)
69                 if fields.has_key(field):
70                         return fields[field]
71
72         return ""
73
74 def flatten(s):
75         return ' '.join(s.split(','))
76
77 DESCRIPTION = "${@parse_control('DESCRIPTION', 'Description', d)}"
78 SECTION = "${@parse_control('SECTION', 'Section', d)}"
79 PRIORITY = "${@parse_control('PRIORITY', 'Priority', d)}"
80 RCONFLICTS_${PN} = "${@flatten(parse_control('RCONFLICTS', 'Conflicts', d))}"
81 RREPLACES_${PN} = "${@flatten(parse_control('RREPLACES', 'Replaces', d))}"
82 RPROVIDES_${PN} = "${@flatten(parse_control('RPROVIDES', 'Provides', d))}"
83         
84 do_install_append () {
85         mkdir -p ${D}${datadir}/doc/${PN}
86         rm -f ${D}${datadir}/doc/${PN}/changelog.Debian*
87         install -m 0644 debian/changelog ${D}${datadir}/doc/${PN}/changelog.Debian
88         gzip -9 ${D}${datadir}/doc/${PN}/changelog.Debian
89         [ -f debian/README.Debian ] && install -m 0644 debian/README.Debian ${D}${datadir}/doc/${PN}/
90 }