Thanks Jacob, this looks good to me.

On Wed, Dec 4, 2019 at 11:02 AM Jacob Stiffler <j-stiff...@ti.com> wrote:
>
> Any further comments on this updated approach?
>
>
> On 12/2/2019 1:45 PM, Jacob Stiffler via Lists.Yoctoproject.Org wrote:
>
> Recently individual components and LLD sources have been combined
> into a single PDK repo. Use this class to specify the common source.
> Also use this class to keep the sources separate from each other when
> building. This keeps the build identical to previous recipes while
> keeping control on interdependencies.
>
> Similar to gcc-source, use the ti-pdk-source recipe to unpack the
> sources into a "work-shared" area. Then hard-link only the necessary
> files into a recipe's WORKDIR.
>
> Signed-off-by: Jacob Stiffler <j-stiff...@ti.com>
> ---
> v2 changes:
>
> To be more efficient, use ti-pdk-source to unpack sources once to a
> common "work-shared" area. Then each recipe will hard-link only the
> necessary sources. Follow the example set by gcc-source in oe-core.
>
>  classes/ti-pdk-fetch.bbclass                   | 43 
> ++++++++++++++++++++++++++
>  recipes-bsp/ti-pdk-source/ti-pdk-source_git.bb | 33 ++++++++++++++++++++
>  2 files changed, 76 insertions(+)
>  create mode 100644 classes/ti-pdk-fetch.bbclass
>  create mode 100644 recipes-bsp/ti-pdk-source/ti-pdk-source_git.bb
>
> diff --git a/classes/ti-pdk-fetch.bbclass b/classes/ti-pdk-fetch.bbclass
> new file mode 100644
> index 0000000..d845ccc
> --- /dev/null
> +++ b/classes/ti-pdk-fetch.bbclass
> @@ -0,0 +1,43 @@
> +TI_PDK_GIT_URI ?= "git://git.ti.com/processor-sdk/pdk.git"
> +TI_PDK_GIT_BRANCH ?= "master"
> +TI_PDK_GIT_PROTOCOL ?= "git"
> +TI_PDK_SRCREV ?= "a1d6fab78b8c9e9dcaec5bd6df54af8d196a901a"
> +
> +TI_PDK_VERSION ?= "2019.11.0"
> +
> +PV = "${TI_PDK_VERSION}"
> +
> +TI_PDK_COMP ?= ""
> +TI_PDK_COMP_PATH = "${@'${TI_PDK_COMP}'.replace('.','/')}"
> +
> +TI_PDK_SOURCE_PN = "ti-pdk-source"
> +TI_PDK_SOURCE_WORKDIR = "${TMPDIR}/work-shared/ti-pdk-${PV}"
> +TI_PDK_SOURCE = "${TI_PDK_SOURCE_WORKDIR}/git"
> +
> +S = "${WORKDIR}/git/${TI_PDK_COMP_PATH}"
> +
> +# Hard-link only required sources from PDK
> +python do_unpack_append() {
> +    if len(d.getVar('TI_PDK_COMP') or '') > 0:
> +        import shutil
> +
> +        # Get src/dst paths
> +        src = 
> os.path.join(d.getVar('TI_PDK_SOURCE'),'packages',d.getVar('TI_PDK_COMP_PATH'))
> +        s = d.getVar('S')
> +
> +        # Set up the directory structure, except for the root of the sources
> +        # hard-linked.
> +        bb.utils.mkdirhier(s)
> +        os.rmdir(s)
> +
> +        # Recursively hard-link the sources
> +        shutil.copytree(src, s, copy_function=os.link)
> +}
> +
> +# Make sure that ti-pdk-source is unpacked before we set up the hardlinks.
> +python __anonymous () {
> +    pn = d.getVar('PN')
> +    pdk_src_pn = d.getVar('TI_PDK_SOURCE_PN')
> +    if pn != pdk_src_pn:
> +        d.appendVarFlag('do_unpack', 'depends', ' 
> ${TI_PDK_SOURCE_PN}:do_unpack')
> +}
> diff --git a/recipes-bsp/ti-pdk-source/ti-pdk-source_git.bb 
> b/recipes-bsp/ti-pdk-source/ti-pdk-source_git.bb
> new file mode 100644
> index 0000000..f4b3da9
> --- /dev/null
> +++ b/recipes-bsp/ti-pdk-source/ti-pdk-source_git.bb
> @@ -0,0 +1,33 @@
> +# Recipe to fetch/unpack sources used by ti-pdk-fetch recipes.
> +#
> +# Mimic gcc-source.inc from oe-core.
> +
> +# These shources will be unpacked to a "work-shared" directory. Then each
> +# "ti-pdk-fetch" recipe will hard-link only the sources it requires.
> +
> +deltask do_configure
> +deltask do_compile
> +deltask do_install
> +deltask do_populate_sysroot
> +deltask do_populate_lic
> +
> +RM_WORK_EXCLUDE += "${PN}"
> +EXCLUDE_FROM_WORLD = "1"
> +
> +inherit nopackages ti-pdk-fetch
> +
> +LICENSE = "BSD-3-Clause"
> +
> +PN = "${TI_PDK_SOURCE_PN}"
> +WORKDIR = "${TI_PDK_SOURCE_WORKDIR}"
> +SSTATE_SWSPEC = "sstate:ti-pdk::${PV}:${PR}::${SSTATE_VERSION}:"
> +
> +STAMP = "${STAMPS_DIR}/work-shared/ti-pdk-${PV}"
> +STAMPCLEAN = "${STAMPS_DIR}/work-shared/ti-pdk-${PV}*"
> +
> +INHIBIT_DEFAULT_DEPS = "1"
> +DEPENDS = ""
> +PACKAGES = ""
> +
> +SRC_URI = 
> "${TI_PDK_GIT_URI};branch=${TI_PDK_GIT_BRANCH};protocol=${TI_PDK_GIT_PROTOCOL}"
> +SRCREV = "${TI_PDK_SRCREV}"
>
>
> -=-=-=-=-=-=-=-=-=-=-=-
> Links: You receive all messages sent to this group.
>
> View/Reply Online (#12539): 
> https://lists.yoctoproject.org/g/meta-ti/message/12539
> Mute This Topic: https://lists.yoctoproject.org/mt/65159993/3619770
> Group Owner: meta-ti+ow...@lists.yoctoproject.org
> Unsubscribe: https://lists.yoctoproject.org/g/meta-ti/unsub  
> [j-stiff...@ti.com]
> -=-=-=-=-=-=-=-=-=-=-=-
-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.

View/Reply Online (#12548): 
https://lists.yoctoproject.org/g/meta-ti/message/12548
Mute This Topic: https://lists.yoctoproject.org/mt/66514334/21656
Group Owner: meta-ti+ow...@lists.yoctoproject.org
Unsubscribe: https://lists.yoctoproject.org/g/meta-ti/unsub  
[arch...@mail-archive.com]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to