Browse Source

Add lc15-firmware package for sysmoBTS 2100 support

master
Harald Welte 4 years ago
committed by Harald Welte
parent
commit
ff217ad58c
  1. 155
      classes/gitver-pkg.bbclass
  2. 139
      classes/gitver-repo.bbclass
  3. 48
      recipes-sysmobts/firmware/lc15-firmware_git.bb

155
classes/gitver-pkg.bbclass

@ -0,0 +1,155 @@
# gitver-pkg.bbclass
#
# Based on gitpkgv.bbclass from meta-openembedded
PKGGITH = "${@get_pkg_gith(d, '${PN}')}"
PKGGITN = "${@get_pkg_gitn(d, '${PN}')}"
PKGGITV = "${@get_pkg_gitv(d, '${PN}')}"
def gitpkgv_drop_tag_prefix(version):
import re
if re.match("v\d", version):
return version[1:]
else:
return version
def get_pkg_gitv(d, pn):
import os
import bb
from pipes import quote
src_uri = d.getVar('SRC_URI', 1).split()
fetcher = bb.fetch2.Fetch(src_uri, d)
ud = fetcher.ud
ver = "0.0-0"
for url in ud.values():
if url.type == 'git' or url.type == 'gitsm':
for name, rev in url.revisions.items():
if not os.path.exists(url.localpath):
return None
vars = { 'repodir' : quote(url.localpath),
'rev' : quote(rev) }
# Verify of the hash is present
try:
bb.fetch2.runfetchcmd(
"cd %(repodir)s && "
"git describe %(rev)s --always 2>/dev/null" % vars,
d, quiet=True).strip()
except Exception:
bb.fetch2.runfetchcmd(
"cd %(repodir)s && git fetch 2>/dev/null" % vars,
d, quiet=True).strip()
# Try to get a version using git describe
try:
output = bb.fetch2.runfetchcmd(
"cd %(repodir)s && "
"git describe %(rev)s --long 2>/dev/null" % vars,
d, quiet=True).strip()
ver = gitpkgv_drop_tag_prefix(output)
except Exception:
try:
commits = bb.fetch2.runfetchcmd(
"cd %(repodir)s && "
"git rev-list %(rev)s --count 2> /dev/null " % vars,
d, quiet=True).strip()
if commits == "":
commits = "0"
rev = bb.fetch2.get_srcrev(d).split('+')[1]
ver = "0.0-%s-g%s" % (commits, rev[:7])
except Exception:
pass
return ver
def get_pkg_gitn(d, pn):
import os
import bb
from pipes import quote
src_uri = d.getVar('SRC_URI', 1).split()
fetcher = bb.fetch2.Fetch(src_uri, d)
ud = fetcher.ud
for url in ud.values():
if url.type == 'git' or url.type == 'gitsm':
for name, rev in url.revisions.items():
if not os.path.exists(url.localpath):
return None
vars = { 'repodir' : quote(url.localpath),
'rev' : quote(rev) }
# Verify of the hash is present
try:
bb.fetch2.runfetchcmd(
"cd %(repodir)s && "
"git describe %(rev)s --always 2>/dev/null" % vars,
d, quiet=True).strip()
except Exception:
bb.fetch2.runfetchcmd(
"cd %(repodir)s && git fetch 2>/dev/null" % vars,
d, quiet=True).strip()
try:
tag = bb.fetch2.runfetchcmd(
"cd %(repodir)s && "
"git describe --abbrev=0 %(rev)s 2>/dev/null" % vars,
d, quiet=True).strip()
vars = { 'repodir' : quote(url.localpath),
'rev' : quote(rev),
'tag' : quote(tag) }
commits = bb.fetch2.runfetchcmd(
"cd %(repodir)s && "
"git rev-list %(rev)s ^%(tag)s --count 2> /dev/null " % vars,
d, quiet=True).strip()
return commits
except Exception:
commits = bb.fetch2.runfetchcmd(
"cd %(repodir)s && "
"git rev-list %(rev)s --count 2> /dev/null " % vars,
d, quiet=True).strip()
if commits == "":
commits = "0"
return commits
return '0'
def get_pkg_gith(d, pn):
import os
import bb
from pipes import quote
src_uri = d.getVar('SRC_URI', 1).split()
fetcher = bb.fetch2.Fetch(src_uri, d)
ud = fetcher.ud
for url in ud.values():
if url.type == 'git' or url.type == 'gitsm':
for name, rev in url.revisions.items():
if not os.path.exists(url.localpath):
return None
else:
return rev
return None

139
classes/gitver-repo.bbclass

@ -0,0 +1,139 @@
# gitver-repo.bbclass
#
# Based on gitpkgv.bbclass from meta-openembedded
REPODIR ?= "${THISDIR}"
REPOGITH = "${@get_repo_gith(d, '${REPODIR}')}"
REPOGITN = "${@get_repo_gitn(d, '${REPODIR}')}"
REPOGITV = "${@get_repo_gitv(d, '${REPODIR}')}"
REPOGITT = "${@get_repo_gitt(d, '${REPODIR}')}"
REPOGITFN = "${@get_repo_gitfn(d, '${REPODIR}', '${REPOFILE}')}"
def gitver_repo_drop_tag_prefix(version):
import re
if re.match("v\d", version):
return version[1:]
else:
return version
def get_repo_gitv(d, repodir):
import os
import bb
from pipes import quote
vars = { 'repodir' : quote(repodir) }
try:
output = bb.fetch2.runfetchcmd(
"git -C %(repodir)s describe --long 2>/dev/null" % vars,
d, quiet=True).strip()
ver = gitver_repo_drop_tag_prefix(output)
except Exception:
return None
return ver
def get_repo_gitn(d, repodir):
import os
import bb
from pipes import quote
vars = { 'repodir' : quote(repodir) }
try:
tag = bb.fetch2.runfetchcmd(
"git -C %(repodir)s describe --abbrev=0 2>/dev/null" % vars,
d, quiet=False).strip()
vars = { 'repodir' : quote(repodir),
'tag' : quote(tag) }
commits = bb.fetch2.runfetchcmd(
"git -C %(repodir)s rev-list %(tag)s.. --count 2> /dev/null" % vars,
d, quiet=True).strip()
return commits
except Exception:
commits = bb.fetch2.runfetchcmd(
"git -C %(repodir)s rev-list --count HEAD 2>/dev/null" % vars,
d, quiet=True).strip()
if commits == "":
commits = "0"
return commits
def get_repo_gitt(d, repodir):
import os
import bb
from pipes import quote
vars = { 'repodir' : quote(repodir) }
try:
tag = bb.fetch2.runfetchcmd(
"git -C %(repodir)s describe --abbrev=0 2>/dev/null" % vars,
d, quiet=True).strip()
return tag
except Exception:
return None
def get_repo_gith(d, repodir):
import os
import bb
from pipes import quote
vars = { 'repodir' : quote(repodir) }
try:
hash = bb.fetch2.runfetchcmd(
"git -C %(repodir)s rev-parse HEAD 2>/dev/null" % vars,
d, quiet=True).strip()
return hash
except Exception:
return None
def get_repo_gitfn(d, repodir, repofile):
import os
import bb
from pipes import quote
vars = { 'repodir' : quote(repodir),
'repofile' : quote(repofile) }
try:
tag = bb.fetch2.runfetchcmd(
"git -C %(repodir)s describe --abbrev=0 2>/dev/null" % vars,
d, quiet=False).strip()
vars = { 'repodir' : quote(repodir),
'repofile' : quote(repofile),
'tag' : quote(tag) }
commits = bb.fetch2.runfetchcmd(
"git -C %(repodir)s rev-list --count %(tag)s.. %(repofile)s 2> /dev/null" % vars,
d, quiet=True).strip()
return commits
except Exception:
commits = bb.fetch2.runfetchcmd(
"git -C %(repodir)s rev-list --count HEAD %(repofile)s 2>/dev/null" % vars,
d, quiet=True).strip()
if commits == "":
commits = "0"
return commits

48
recipes-sysmobts/firmware/lc15-firmware_git.bb

@ -0,0 +1,48 @@
SUMMARY = "Firmware files for Nuran Wireless Litecell 1.5 Mainboard"
LICENSE = "CLOSED"
NRW_LC15_MIRROR ??= "git@gitlab.com/nrw_litecell15"
S = "${WORKDIR}/git"
inherit gitver-pkg gitver-repo
REPODIR = "${THISDIR}"
REPOFILE = "lc15-firmware_git.bb"
PR := "r${REPOGITFN}"
PV = "git${SRCPV}"
PKGV = "${PKGGITV}"
DEV_BRANCH = "${@ 'nrw/litecell15-next' if d.getVar('NRW_BSP_DEVEL', False) == "next" else 'nrw/litecell15'}"
DEV_SRCREV = "${AUTOREV}"
DEV_SRCURI := "git://${NRW_LC15_MIRROR}/litecell15-fw.git;protocol=ssh;branch=${DEV_BRANCH}"
REL_BRANCH = "nrw/litecell15"
REL_SRCREV = "68607b5c33a02883c50f9408f423234747407d99"
REL_SRCURI := "git://${NRW_LC15_MIRROR}/litecell15-fw.git;protocol=ssh;branch=${REL_BRANCH}"
BRANCH = "${@ '${DEV_BRANCH}' if d.getVar('NRW_BSP_DEVEL', False) else '${REL_BRANCH}'}"
SRCREV = "${@ '${DEV_SRCREV}' if d.getVar('NRW_BSP_DEVEL', False) else '${REL_SRCREV}'}"
SRC_URI = "${@ '${DEV_SRCURI}' if d.getVar('NRW_BSP_DEVEL', False) else '${REL_SRCURI}'}"
addtask showversion after do_compile before do_install
do_showversion() {
bbplain "${PN}: ${PKGGITV} => ${BRANCH}:${PKGGITH}"
}
inherit allarch
do_install() {
install -d ${D}${includedir}/nrw
install -d ${D}${includedir}/nrw/litecell15
install -m 0644 ${S}/inc/nrw/litecell15/* ${D}${includedir}/nrw/litecell15
install -d ${D}${base_libdir}/firmware
install -m 0644 ${S}/bin/* ${D}${base_libdir}/firmware
}
INSANE_SKIP_${PN} = "arch"
FILES_${PN} = "${base_libdir}/firmware/*"
FILES_${PN}-dev = "${includedir}/nrw/litecell15/*"
Loading…
Cancel
Save