Jake,
All k2 devices fail in ti-sysbios, ti-xdais and ti-fc due to PVExtras not
being defined, but referenced in arago-source-ipk.inc
Denys
On Thu, Apr 25, 2019 at 12:42:32PM -0400, Jacob Stiffler wrote:
> Instead of manually creating the source "ipk", use the built in
> pacakge_write_* tasks. This is done by constructing the sourceipk
> package contents in a staging area. Then, sometime betwee do_install
> and do_package, copy the contents of the staging area into the ${D}
> directory so that it can get used during packaging. Prevent the
> sourceipk contents from contaminating the sysroot by adding it to the
> blacklist, and disable all QA checks on this package.
>
> Signed-off-by: Jacob Stiffler <[email protected]>
> ---
> v2 changes:
> * Disable strip and debug split of sourceipk package contents by
> adding a PACKAGE_PREPROCESS_FUNCS, srcipk_inhibit_strip().
> * srcipk_inhibit_strip() selectively bypasses strip and debug split by
> adding all files under the SRCIPK_INSTALL_DIR to the
> INHIBIT_PACKAGE_STRIP_FILES.
> * Drop patch to inhibit strip and debug split of U-Boot as it is no
> longer necessary.
>
> Change from RFC:
> * Add src package to list of packages in anonymous python to
> workaround other classes/recipes resetting PACKAGES.
> * PACKAGES_append does not work because some recipes, such as images,
> expect PACKAGES to be completely undefined.
>
> meta-arago-distro/classes/sourceipk.bbclass | 128
> +++++++++++++---------------
> 1 file changed, 59 insertions(+), 69 deletions(-)
>
> diff --git a/meta-arago-distro/classes/sourceipk.bbclass
> b/meta-arago-distro/classes/sourceipk.bbclass
> index 1e49489..1ad8ddb 100644
> --- a/meta-arago-distro/classes/sourceipk.bbclass
> +++ b/meta-arago-distro/classes/sourceipk.bbclass
> @@ -47,6 +47,9 @@ CREATE_SRCIPK ?= "0"
> # Default installation prefix
> SRCIPK_INSTALL_DIR ?= "/usr/src/${PN}-src"
>
> +# Directory to preserve sources until they can be installed for packaging
> +SRCIPK_STAGING_DIR = "${WORKDIR}/srcipk-staging"
> +
> # Specify the directory of the sources
> SRCIPK_SRC_DIR ?= "${S}"
>
> @@ -121,7 +124,7 @@ limit_git_history() {
> gitshallowclone="${WORKDIR}/temp-git-shallow-clone"
>
> # Change directory to the git repository to be safe
> - cd $tmp_dir/${SRCIPK_INSTALL_DIR}
> + cd ${SRCIPK_STAGING_DIR}/${SRCIPK_INSTALL_DIR}
>
> # Create a temporary directory to hold the shallow git clone
> mkdir -p $gitshallowclone
> @@ -134,10 +137,10 @@ limit_git_history() {
>
> # remove original kernel clone since we will replace it with the shallow
> # clone
> - rm -rf $tmp_dir/${SRCIPK_INSTALL_DIR}/.git
> + rm -rf ${SRCIPK_STAGING_DIR}/${SRCIPK_INSTALL_DIR}/.git
>
> # replace the original kernel git data with the shallow clone git data
> - mv $gitshallowclone/.git $tmp_dir/${SRCIPK_INSTALL_DIR}/
> + mv $gitshallowclone/.git ${SRCIPK_STAGING_DIR}/${SRCIPK_INSTALL_DIR}/
> rm -rf $gitshallowclone
>
> # Remove the local remote
> @@ -156,7 +159,7 @@ limit_git_history() {
> adjust_git() {
> orig_dir="$PWD"
>
> - cd $tmp_dir/${SRCIPK_INSTALL_DIR}
> + cd ${SRCIPK_STAGING_DIR}/${SRCIPK_INSTALL_DIR}
>
> if [ -d ".git" ]
> then
> @@ -225,19 +228,8 @@ sourceipk_create_readme() {
> echo " the \"patches\" directory" >> $readme
> }
>
> -SRCIPK_DEPLOYSRC_DIR = "${WORKDIR}/deploy-src"
> -
> -SSTATETASKS += "do_create_srcipk"
> -do_create_srcipk[sstate-inputdirs] = "${SRCIPK_DEPLOYSRC_DIR}"
> -do_create_srcipk[sstate-outputdirs] = "${DEPLOY_DIR_IPK}"
> -
> -python do_create_srcipk_setscene () {
> - sstate_setscene(d)
> -}
> -addtask do_create_srcipk_setscene
> -
> -do_create_srcipk[dirs] = "${SRCIPK_DEPLOYSRC_DIR}"
> -do_create_srcipk[cleandirs] = "${SRCIPK_DEPLOYSRC_DIR}"
> +do_create_srcipk[dirs] = "${SRCIPK_SRC_DIR} ${SRCIPK_STAGING_DIR}"
> +do_create_srcipk[cleandirs] = "${SRCIPK_STAGING_DIR}"
> do_create_srcipk[umask] = "022"
>
> # Create the source ipk file. The ipk is manually created here instead
> @@ -248,75 +240,32 @@ do_create_srcipk[umask] = "022"
> sourceipk_do_create_srcipk() {
> if [ ${CREATE_SRCIPK} != "0" ]
> then
> -
> - tmp_dir="${WORKDIR}/sourceipk-tmp"
> - srcipk_dir="${WORKDIR}/sourceipk-data"
> - mkdir -p $tmp_dir/CONTROL
> - mkdir -p $srcipk_dir
> - control_file="$tmp_dir/CONTROL/control"
> -
> - # Write the control file
> - echo "Package: ${PN}-src" > $control_file
> - echo "Version: ${PV}-${PR}" >> $control_file
> - echo "Description: Patched sources for ${PN}" >> $control_file
> - echo "Section: ${SRCIPK_SECTION}" >> $control_file
> - echo "Priority: Optional" >> $control_file
> - echo "Maintainer: ${MAINTAINER}" >> $control_file
> - echo "License: ${LICENSE}" >> $control_file
> - echo "Architecture: ${SRCIPK_PACKAGE_ARCH}" >> $control_file
> - srcuri="${SRC_URI}"
> - if [ "$srcuri" = "" ]
> - then
> - srcuri="OpenEmbedded"
> - fi
> - echo "Source: $srcuri" >> $control_file
> - #Write the control tarball
> - tar -C $tmp_dir/CONTROL --owner=0 --group=0 -czf
> $srcipk_dir/control.tar.gz .
> -
> - # Get rid of temporary control file
> - rm -rf $tmp_dir/CONTROL
> -
> # Copy sources for packaging
> - mkdir -p $tmp_dir/${SRCIPK_INSTALL_DIR}
> + mkdir -p ${SRCIPK_STAGING_DIR}/${SRCIPK_INSTALL_DIR}
> if [ -e ${SRCIPK_SRC_DIR} ]; then
> if [ "${SRCIPK_SRC_DIR}" = "${WORKDIR}" ]; then
> - excludes='--exclude ./temp --exclude ./sourceipk-tmp
> --exclude ./sourceipk-data'
> + excludes='--exclude ./temp --exclude ${SRCIPK_STAGING_DIR}'
> fi
> - tar -C ${SRCIPK_SRC_DIR} -cO $excludes . | tar -C
> $tmp_dir/${SRCIPK_INSTALL_DIR} -xpf -
> + tar -C ${SRCIPK_SRC_DIR} -cO $excludes . | tar -C
> ${SRCIPK_STAGING_DIR}/${SRCIPK_INSTALL_DIR} -xpf -
> fi
>
> # Fix up patches/ directory to contain actual patches instead of
> symlinks
> - if [ -e $tmp_dir/${SRCIPK_INSTALL_DIR}/patches ]
> + if [ -e ${SRCIPK_STAGING_DIR}/${SRCIPK_INSTALL_DIR}/patches ]
> then
> - mv $tmp_dir/${SRCIPK_INSTALL_DIR}/patches
> $tmp_dir/${SRCIPK_INSTALL_DIR}/patches-links
> - cp -rL $tmp_dir/${SRCIPK_INSTALL_DIR}/patches-links
> $tmp_dir/${SRCIPK_INSTALL_DIR}/patches
> - rm -rf $tmp_dir/${SRCIPK_INSTALL_DIR}/patches-links
> + mv ${SRCIPK_STAGING_DIR}/${SRCIPK_INSTALL_DIR}/patches
> ${SRCIPK_STAGING_DIR}/${SRCIPK_INSTALL_DIR}/patches-links
> + cp -rL ${SRCIPK_STAGING_DIR}/${SRCIPK_INSTALL_DIR}/patches-links
> ${SRCIPK_STAGING_DIR}/${SRCIPK_INSTALL_DIR}/patches
> + rm -rf ${SRCIPK_STAGING_DIR}/${SRCIPK_INSTALL_DIR}/patches-links
> fi
>
> if [ ${SRCIPK_INCLUDE_EXTRAFILES} != "0" ]
> then
> - sourceipk_create_readme $tmp_dir/${SRCIPK_INSTALL_DIR}/
> - cp ${FILE} $tmp_dir/${SRCIPK_INSTALL_DIR}/
> + sourceipk_create_readme
> ${SRCIPK_STAGING_DIR}/${SRCIPK_INSTALL_DIR}/
> + cp ${FILE} ${SRCIPK_STAGING_DIR}/${SRCIPK_INSTALL_DIR}/
> fi
>
> # Adjust the git repository if there is one. Do this adjustment
> # here so we don't have to modify the original sources.
> adjust_git
> -
> - #Write the data tarball
> - tar -C $tmp_dir --owner=0 --group=0 -czf $srcipk_dir/data.tar.gz .
> -
> - # Create the debian-binary file
> - echo "2.0" > $srcipk_dir/debian-binary
> -
> - #Write the ipk file
> - mkdir -p ${SRCIPK_DEPLOYSRC_DIR}/${SRCIPK_PACKAGE_ARCH}
> -
> pkg_file=${SRCIPK_DEPLOYSRC_DIR}/${SRCIPK_PACKAGE_ARCH}/${PN}-src_${PV}-${PR}_${SRCIPK_PACKAGE_ARCH}.ipk
> - rm -f $pkg_file
> - ( cd $srcipk_dir && ar -crf $pkg_file ./debian-binary
> ./control.tar.gz ./data.tar.gz )
> -
> - # Remove the temporary directory
> - rm -rf $tmp_dir
> fi
> }
>
> @@ -326,6 +275,19 @@ do_create_srcipk[deptask] = "do_patch"
>
> addtask create_srcipk after do_patch before do_configure
>
> +fakeroot sourceipk_do_install_srcipk() {
> + if [ ${CREATE_SRCIPK} != "0" ]
> + then
> + install -d ${D}/${SRCIPK_INSTALL_DIR}
> + cp -Prf --preserve=mode,timestamps --no-preserve=ownership
> ${SRCIPK_STAGING_DIR}/${SRCIPK_INSTALL_DIR}/. ${D}/${SRCIPK_INSTALL_DIR}
> + fi
> +}
> +
> +EXPORT_FUNCTIONS do_install_srcipk
> +
> +do_install_srcipk[deptask] = "do_create_srcipk"
> +addtask install_srcipk after do_install do_create_srcipk before do_package
> +
> python () {
> if d.getVar('do_compileconfigs', False):
> deps = d.getVarFlag('do_compileconfigs', 'deps') or []
> @@ -335,3 +297,31 @@ python () {
>
> #Add source packages to list of packages OE knows about
> PACKAGES_DYNAMIC += "${PN}-src"
> +
> +# Exclude sourceipk from sysroot
> +SYSROOT_DIRS_BLACKLIST += "${@oe.utils.conditional("${CREATE_SRCIPK}", "0",
> "", "${SRCIPK_INSTALL_DIR}", d)}"
> +
> +# Do not perform any QA checks on sourceipk packages
> +INSANE_SKIP_${PN}-src += "${@oe.utils.conditional("${CREATE_SRCIPK}", "0",
> "", "${ALL_QA}", d)}"
> +
> +python __anonymous () {
> + if d.getVar("CREATE_SRCIPK") != "0":
> + pn = d.getVar("PN")
> +
> + d.appendVar('PACKAGES', ' %s-src' % (pn))
> + d.setVar('FILES_%s-src' % (pn), '${SRCIPK_INSTALL_DIR}')
> +}
> +
> +# Do not strip nor debug split files in SRCIPK_INSTALL_DIR
> +PACKAGE_PREPROCESS_FUNCS =+
> "${@oe.utils.conditional('CREATE_SRCIPK','0','','srcipk_inhibit_strip',d)}"
> +python srcipk_inhibit_strip() {
> + dvar = d.getVar('PKGD')
> + srcipk_install_dir = dvar + d.getVar('SRCIPK_INSTALL_DIR')
> + srcipk_files = ['']
> +
> + for root, dirs, files in cpath.walk(dvar):
> + for f in files:
> + srcipk_files.append(os.path.join(root, f))
> +
> + d.appendVar('INHIBIT_PACKAGE_STRIP_FILES', ' '.join(srcipk_files))
> +}
> --
> 2.7.4
>
> _______________________________________________
> meta-arago mailing list
> [email protected]
> http://arago-project.org/cgi-bin/mailman/listinfo/meta-arago
_______________________________________________
meta-arago mailing list
[email protected]
http://arago-project.org/cgi-bin/mailman/listinfo/meta-arago