Search code examples
embedded-linuxyoctobitbake

Update a recipe that was previously based on master branch but now is released with version


I have a recipe canboat which was previously based on no official release version and was based on the SRCREV on the master branch.

canboat.bb

SUMMARY = "CANBOAT- A small but effective set of command-line utilities to work with CAN networks on BOATs."
SECTION = "base"
LICENSE = "GPLv3"

DEPENDS += "libxslt-native canboat-native"

LIC_FILES_CHKSUM = "file://GPL;md5=05507c6da2404b0e88fe5a152fd12540"

SRC_URI = "git://github.com/canboat/canboat.git;branch=${SRCBRANCH} \
           file://0001-Do-not-use-root-user-group-during-install.patch \
           file://0001-Define-ANALYZEREXEC.patch \
           file://0001-use-php-instead-of-php5.patch \
          "
SRCBRANCH = "master"
SRCREV = "93b2ebfb334d7a9750b6947d3a4af9b091be2432"

S = "${WORKDIR}/git"

PREFIX ?= "${root_prefix}"
#PREFIX_class-native = "${prefix}"

EXTRA_OEMAKE_append_class-target = " ANALYZEREXEC=analyzer "

do_compile() {
    oe_runmake
}
do_install() {
   oe_runmake DESTDIR=${D} PREFIX=${root_prefix} EXEC_PREFIX=${exec_prefix} install

}

RDEPENDS_${PN}_append_class-target = " php-cli perl"

BBCLASSEXTEND = "native nativesdk"

The main repository did a release officially a couple of days ago and I want to update my recipe to point to v.1.0.0.

Workflow

  1. I used devtool add canboat [link-tar-ball]
  2. copied the changes in the original canboat.bb
  3. changed the name of the recipe to canboat_1.0.0.bb since the recipe now has ${PV} for fetching the right version

Updated recipe

only the SRC_URI now pointing to the .tar.gz is and the md5sums have been updated.

SUMMARY = "CANBOAT- A small but effective set of command-line utilities to work with CAN networks on BOATs."
SECTION = "base"
LICENSE = "GPLv3"

DEPENDS += "libxslt-native canboat-native"

LIC_FILES_CHKSUM = "file://GPL;md5=05507c6da2404b0e88fe5a152fd12540"

SRC_URI = "git://github.com/canboat/canboat.git;branch=${SRCBRANCH} \
           file://0001-Do-not-use-root-user-group-during-install.patch \
           file://0001-Define-ANALYZEREXEC.patch \
           file://0001-use-php-instead-of-php5.patch \
          "
SRC_URI = "https://github.com/canboat/canboat/archive/v${PV}.tar.gz"
SRC_URI[md5sum] = "6ee6162d30faa3b3f1ff068cc7a70a60"
SRC_URI[sha256sum] = "6bf1050a83a5d7eb8351547c10e7e2ae2e1811250d50a63880074f0c07ec672e"

S = "${WORKDIR}/git"

PREFIX ?= "${root_prefix}"
#PREFIX_class-native = "${prefix}"

EXTRA_OEMAKE_append_class-target = " ANALYZEREXEC=analyzer "

do_compile() {
    oe_runmake
}
do_install() {
   oe_runmake DESTDIR=${D} PREFIX=${root_prefix} EXEC_PREFIX=${exec_prefix} install

}

RDEPENDS_${PN}_append_class-target = " php-cli perl"

BBCLASSEXTEND = "native nativesdk"

I tried bitbake -k canboat to check the build process

Error

I get a QA error as following:

 QA Issue: canboat-native: LIC_FILES_CHKSUM points to an invalid file: 
/home/des/Yocto/PHYTEC_BSPs/yocto_fsl/build/tmp/work/x86_64-linux/canboat-native/1.0.0-r0/git/GPL

I tried going into the above mentioned folder and there was no GPL file there on the contrary the file is present in the canboat_1.0.0 folder.

The structure is as follows:

.
├── canboat-1.0.0
│   ├── actisense-serial
│   ├── airmar
│   ├── analyzer
│   ├── candump2analyzer
│   ├── common
│   ├── config
│   ├── group-function
│   ├── ip
│   ├── n2kd
│   ├── nmea0183
│   ├── samples
│   ├── send-message
│   ├── socketcan-writer
│   └── util
├── git
└── temp

and the git folder has nothing in it.

Question

How do I overcome the QA test and is there a better way to update the recipes?


Solution

  • You don't need S = "${WORKDIR}/git" in your new recipe. When you refer specific version from tarball, yocto de-references the path using ${PN}-${PV}

    This is because when tarball is extracted, the source path will be ${WORKDIR}/${PN}-${PV}.

    Additionally, you can remove do_compile section of your recipe as Yocto by default calls make when it can't find Makefile.am/in or autoconf files.