* [PATCH] populate_sdk_base: add option of add other type of sdk
@ 2019-01-16 9:37 changqing.li
2019-01-16 12:07 ` Burton, Ross
0 siblings, 1 reply; 10+ messages in thread
From: changqing.li @ 2019-01-16 9:37 UTC (permalink / raw)
To: openembedded-core
From: Changqing Li <changqing.li@windriver.com>
Current sdk type is tar.xz, but for mingw sdk, since we
have symlink under the sdk folder, 7zip which used to
extract tar.xz cannot handle it, refer 7zip upstream bug:
https://sourceforge.net/p/sevenzip/discussion/45797/thread/c71d6b96/
so add option for usr can select the sdk type.
Also tried to use option --dereference of tar which use means:
"follow symlinks; archive and dump the files they point to"
with this option, when archive it will deal with symlink to hard link,
but windows not support hard link, so drop this solution,
and use .zip for windows.
Signed-off-by: Changqing Li <changqing.li@windriver.com>
---
meta/classes/populate_sdk_base.bbclass | 12 ++++++++----
1 file changed, 8 insertions(+), 4 deletions(-)
diff --git a/meta/classes/populate_sdk_base.bbclass b/meta/classes/populate_sdk_base.bbclass
index 677ba3c..4fef2f6 100644
--- a/meta/classes/populate_sdk_base.bbclass
+++ b/meta/classes/populate_sdk_base.bbclass
@@ -44,8 +44,12 @@ TOOLCHAIN_TARGET_TASK ?= "${@multilib_pkg_extend(d, 'packagegroup-core-standalon
TOOLCHAIN_TARGET_TASK_ATTEMPTONLY ?= ""
TOOLCHAIN_OUTPUTNAME ?= "${SDK_NAME}-toolchain-${SDK_VERSION}"
+SDK_TAR_TYPE ?= "tar.xz"
+SDK_TAR_DEPENDS ?= "xz-native"
+SDK_TAR_CMD ?= "tar ${SDKTAROPTS} -cf - . | xz -T 0 > ${SDKDEPLOYDIR}/${TOOLCHAIN_OUTPUTNAME}.${SDK_TAR_TYPE}"
+
SDK_RDEPENDS = "${TOOLCHAIN_TARGET_TASK} ${TOOLCHAIN_HOST_TASK}"
-SDK_DEPENDS = "virtual/fakeroot-native xz-native cross-localedef-native nativesdk-qemuwrapper-cross ${@' '.join(["%s-qemuwrapper-cross" % m for m in d.getVar("MULTILIB_VARIANTS").split()])} qemuwrapper-cross"
+SDK_DEPENDS = "virtual/fakeroot-native ${SDK_TAR_DEPENDS} cross-localedef-native nativesdk-qemuwrapper-cross ${@' '.join(["%s-qemuwrapper-cross" % m for m in d.getVar("MULTILIB_VARIANTS").split()])} qemuwrapper-cross"
PATH_prepend = "${STAGING_DIR_HOST}${SDKPATHNATIVE}${bindir}/crossscripts:${@":".join(all_multilib_tune_values(d, 'STAGING_BINDIR_CROSS').split())}:"
SDK_DEPENDS_append_libc-glibc = " nativesdk-glibc-locale"
@@ -225,7 +229,7 @@ fakeroot tar_sdk() {
# Package it up
mkdir -p ${SDKDEPLOYDIR}
cd ${SDK_OUTPUT}/${SDKPATH}
- tar ${SDKTAROPTS} -cf - . | xz -T 0 > ${SDKDEPLOYDIR}/${TOOLCHAIN_OUTPUTNAME}.tar.xz
+ ${SDK_TAR_CMD}
}
TOOLCHAIN_SHAR_EXT_TMPL ?= "${COREBASE}/meta/files/toolchain-shar-extract.sh"
@@ -268,10 +272,10 @@ EOF
chmod +x ${SDKDEPLOYDIR}/${TOOLCHAIN_OUTPUTNAME}.sh
# append the SDK tarball
- cat ${SDKDEPLOYDIR}/${TOOLCHAIN_OUTPUTNAME}.tar.xz >> ${SDKDEPLOYDIR}/${TOOLCHAIN_OUTPUTNAME}.sh
+ cat ${SDKDEPLOYDIR}/${TOOLCHAIN_OUTPUTNAME}.${SDK_TAR_TYPE} >> ${SDKDEPLOYDIR}/${TOOLCHAIN_OUTPUTNAME}.sh
# delete the old tarball, we don't need it anymore
- rm ${SDKDEPLOYDIR}/${TOOLCHAIN_OUTPUTNAME}.tar.xz
+ rm ${SDKDEPLOYDIR}/${TOOLCHAIN_OUTPUTNAME}.${SDK_TAR_TYPE}
}
populate_sdk_log_check() {
--
2.7.4
^ permalink raw reply related [flat|nested] 10+ messages in thread* Re: [PATCH] populate_sdk_base: add option of add other type of sdk
2019-01-16 9:37 [PATCH] populate_sdk_base: add option of add other type of sdk changqing.li
@ 2019-01-16 12:07 ` Burton, Ross
2019-01-17 9:52 ` [PATCH V2] populate_sdk_base: provide options to set sdk type changqing.li
2019-01-17 9:52 ` changqing.li
0 siblings, 2 replies; 10+ messages in thread
From: Burton, Ross @ 2019-01-16 12:07 UTC (permalink / raw)
To: changqing.li; +Cc: OE-core
On Wed, 16 Jan 2019 at 09:37, <changqing.li@windriver.com> wrote:
> +SDK_TAR_TYPE ?= "tar.xz"
> +SDK_TAR_DEPENDS ?= "xz-native"
> +SDK_TAR_CMD ?= "tar ${SDKTAROPTS} -cf - . | xz -T 0 > ${SDKDEPLOYDIR}/${TOOLCHAIN_OUTPUTNAME}.${SDK_TAR_TYPE}"
Don't call these SDK_TAR because they might not be generating a
tarball. How about SDK_ARCHIVE_*
Using overrides or flags would let you put the zip logic into oe-core
too, because it is feasible that more than meta-mingw will want to use
zip archives.
Also, add a comment about the expected behaviour of the CMD,
specifically what the input variables are and where the output should
go. Bonus points fo refactoring slightly so the command is passed an
absolute input directory, and absolute output filename.
Ross
^ permalink raw reply [flat|nested] 10+ messages in thread* [PATCH V2] populate_sdk_base: provide options to set sdk type
2019-01-16 12:07 ` Burton, Ross
@ 2019-01-17 9:52 ` changqing.li
2019-01-17 9:55 ` Changqing Li
2019-01-17 9:52 ` changqing.li
1 sibling, 1 reply; 10+ messages in thread
From: changqing.li @ 2019-01-17 9:52 UTC (permalink / raw)
To: openembedded-core
change in V2:
1. add overrides to provide options for sdk type
2. move zip part into oe-core for more flexible
who want to use type zip, only need to set
SDK_ARCHIVE_TYPE to override the default tar.xz
Changqing Li (1):
populate_sdk_base: provide options to set sdk type
meta/classes/populate_sdk_base.bbclass | 26 +++++++++++++++++++-------
1 file changed, 19 insertions(+), 7 deletions(-)
--
2.7.4
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH V2] populate_sdk_base: provide options to set sdk type
2019-01-17 9:52 ` [PATCH V2] populate_sdk_base: provide options to set sdk type changqing.li
@ 2019-01-17 9:55 ` Changqing Li
0 siblings, 0 replies; 10+ messages in thread
From: Changqing Li @ 2019-01-17 9:55 UTC (permalink / raw)
To: openembedded-core
Please ignore this cover letter, send two times by accident.
On 1/17/19 5:52 PM, changqing.li@windriver.com wrote:
> change in V2:
> 1. add overrides to provide options for sdk type
> 2. move zip part into oe-core for more flexible
> who want to use type zip, only need to set
> SDK_ARCHIVE_TYPE to override the default tar.xz
>
>
> Changqing Li (1):
> populate_sdk_base: provide options to set sdk type
>
> meta/classes/populate_sdk_base.bbclass | 26 +++++++++++++++++++-------
> 1 file changed, 19 insertions(+), 7 deletions(-)
>
--
BRs
Sandy(Li Changqing)
^ permalink raw reply [flat|nested] 10+ messages in thread
* [PATCH V2] populate_sdk_base: provide options to set sdk type
2019-01-16 12:07 ` Burton, Ross
2019-01-17 9:52 ` [PATCH V2] populate_sdk_base: provide options to set sdk type changqing.li
@ 2019-01-17 9:52 ` changqing.li
2019-01-17 9:52 ` changqing.li
1 sibling, 1 reply; 10+ messages in thread
From: changqing.li @ 2019-01-17 9:52 UTC (permalink / raw)
To: openembedded-core
change in V2:
1. add overrides to provide options for sdk type
2. move zip part into oe-core for more flexible
who want to use type zip, only need to set
SDK_ARCHIVE_TYPE to override the default tar.xz
Changqing Li (1):
populate_sdk_base: provide options to set sdk type
meta/classes/populate_sdk_base.bbclass | 26 +++++++++++++++++++-------
1 file changed, 19 insertions(+), 7 deletions(-)
--
2.7.4
^ permalink raw reply [flat|nested] 10+ messages in thread
* [PATCH V2] populate_sdk_base: provide options to set sdk type
2019-01-17 9:52 ` changqing.li
@ 2019-01-17 9:52 ` changqing.li
2019-01-17 12:06 ` Burton, Ross
0 siblings, 1 reply; 10+ messages in thread
From: changqing.li @ 2019-01-17 9:52 UTC (permalink / raw)
To: openembedded-core
From: Changqing Li <changqing.li@windriver.com>
Current sdk type is tar.xz, but for mingw sdk, since we
have symlink under the sdk folder, 7zip which used to
extract tar.xz cannot handle it, refer 7zip upstream bug:
https://sourceforge.net/p/sevenzip/discussion/45797/thread/c71d6b96/
so add option for usr can select the sdk type.
Add override SDK_ARCHIVE_TYPE, default type is tar.xz, and also
support type zip. user want to use zip type can set SDK_ARCHIVE_TYPE
to zip.
Signed-off-by: Changqing Li <changqing.li@windriver.com>
---
meta/classes/populate_sdk_base.bbclass | 26 +++++++++++++++++++-------
1 file changed, 19 insertions(+), 7 deletions(-)
diff --git a/meta/classes/populate_sdk_base.bbclass b/meta/classes/populate_sdk_base.bbclass
index 677ba3c..a41933f 100644
--- a/meta/classes/populate_sdk_base.bbclass
+++ b/meta/classes/populate_sdk_base.bbclass
@@ -44,8 +44,21 @@ TOOLCHAIN_TARGET_TASK ?= "${@multilib_pkg_extend(d, 'packagegroup-core-standalon
TOOLCHAIN_TARGET_TASK_ATTEMPTONLY ?= ""
TOOLCHAIN_OUTPUTNAME ?= "${SDK_NAME}-toolchain-${SDK_VERSION}"
+# Archived SDK's suffix, also used as OVERRIDES to support multi types. eg, sdk is sdkfilename.yy.zz, then SDK_ARCHIVE_TYPE should be yy.zz
+# now support tar.gz and zip, if user set SDK_ARCHIVE_TYPE wrongly as maybe yy, generate sdk will suffix with .yy, but actually is tar.xz
+SDK_ARCHIVE_TYPE ?= "tar.xz"
+OVERRIDES_append = ":${SDK_ARCHIVE_TYPE}"
+
+SDK_ARCHIVE_DEPENDS ?= "xz-native"
+# SDK_ARCHIVE_CMD used to generate archived sdk ${TOOLCHAIN_OUTPUTNAME}.${SDK_ARCHIVE_TYPE} from input dir ${SDK_OUTPUT}/${SDKPATH} to output dir ${SDKDEPLOYDIR}
+# recommand to cd into input dir first to avoid archive with buildpath
+SDK_ARCHIVE_CMD ?= "cd ${SDK_OUTPUT}/${SDKPATH}; tar ${SDKTAROPTS} -cf - . | xz -T 0 > ${SDKDEPLOYDIR}/${TOOLCHAIN_OUTPUTNAME}.${SDK_ARCHIVE_TYPE}"
+
+SDK_ARCHIVE_DEPENDS_zip = "zip-native"
+SDK_ARCHIVE_CMD_zip = "cd ${SDK_OUTPUT}/${SDKPATH}; zip -r ${SDKDEPLOYDIR}/${TOOLCHAIN_OUTPUTNAME}.${SDK_ARCHIVE_TYPE} ."
+
SDK_RDEPENDS = "${TOOLCHAIN_TARGET_TASK} ${TOOLCHAIN_HOST_TASK}"
-SDK_DEPENDS = "virtual/fakeroot-native xz-native cross-localedef-native nativesdk-qemuwrapper-cross ${@' '.join(["%s-qemuwrapper-cross" % m for m in d.getVar("MULTILIB_VARIANTS").split()])} qemuwrapper-cross"
+SDK_DEPENDS = "virtual/fakeroot-native ${SDK_ARCHIVE_DEPENDS} cross-localedef-native nativesdk-qemuwrapper-cross ${@' '.join(["%s-qemuwrapper-cross" % m for m in d.getVar("MULTILIB_VARIANTS").split()])} qemuwrapper-cross"
PATH_prepend = "${STAGING_DIR_HOST}${SDKPATHNATIVE}${bindir}/crossscripts:${@":".join(all_multilib_tune_values(d, 'STAGING_BINDIR_CROSS').split())}:"
SDK_DEPENDS_append_libc-glibc = " nativesdk-glibc-locale"
@@ -103,7 +116,7 @@ POPULATE_SDK_POST_TARGET_COMMAND_append = " write_sdk_test_data ; "
POPULATE_SDK_POST_TARGET_COMMAND_append_task-populate-sdk = " write_target_sdk_manifest ; "
POPULATE_SDK_POST_HOST_COMMAND_append_task-populate-sdk = " write_host_sdk_manifest; "
SDK_PACKAGING_COMMAND = "${@'${SDK_PACKAGING_FUNC};' if '${SDK_PACKAGING_FUNC}' else ''}"
-SDK_POSTPROCESS_COMMAND = " create_sdk_files; check_sdk_sysroots; tar_sdk; ${SDK_PACKAGING_COMMAND} "
+SDK_POSTPROCESS_COMMAND = " create_sdk_files; check_sdk_sysroots; archive_sdk; ${SDK_PACKAGING_COMMAND} "
def populate_sdk_common(d):
from oe.sdk import populate_sdk
@@ -221,11 +234,10 @@ python check_sdk_sysroots() {
SDKTAROPTS = "--owner=root --group=root"
-fakeroot tar_sdk() {
+fakeroot archive_sdk() {
# Package it up
mkdir -p ${SDKDEPLOYDIR}
- cd ${SDK_OUTPUT}/${SDKPATH}
- tar ${SDKTAROPTS} -cf - . | xz -T 0 > ${SDKDEPLOYDIR}/${TOOLCHAIN_OUTPUTNAME}.tar.xz
+ ${SDK_ARCHIVE_CMD}
}
TOOLCHAIN_SHAR_EXT_TMPL ?= "${COREBASE}/meta/files/toolchain-shar-extract.sh"
@@ -268,10 +280,10 @@ EOF
chmod +x ${SDKDEPLOYDIR}/${TOOLCHAIN_OUTPUTNAME}.sh
# append the SDK tarball
- cat ${SDKDEPLOYDIR}/${TOOLCHAIN_OUTPUTNAME}.tar.xz >> ${SDKDEPLOYDIR}/${TOOLCHAIN_OUTPUTNAME}.sh
+ cat ${SDKDEPLOYDIR}/${TOOLCHAIN_OUTPUTNAME}.${SDK_ARCHIVE_TYPE} >> ${SDKDEPLOYDIR}/${TOOLCHAIN_OUTPUTNAME}.sh
# delete the old tarball, we don't need it anymore
- rm ${SDKDEPLOYDIR}/${TOOLCHAIN_OUTPUTNAME}.tar.xz
+ rm ${SDKDEPLOYDIR}/${TOOLCHAIN_OUTPUTNAME}.${SDK_ARCHIVE_TYPE}
}
populate_sdk_log_check() {
--
2.7.4
^ permalink raw reply related [flat|nested] 10+ messages in thread* Re: [PATCH V2] populate_sdk_base: provide options to set sdk type
2019-01-17 9:52 ` changqing.li
@ 2019-01-17 12:06 ` Burton, Ross
2019-01-21 5:35 ` [PATCH V3] " changqing.li
0 siblings, 1 reply; 10+ messages in thread
From: Burton, Ross @ 2019-01-17 12:06 UTC (permalink / raw)
To: changqing.li; +Cc: OE-core
On Thu, 17 Jan 2019 at 09:53, <changqing.li@windriver.com> wrote:
> +OVERRIDES_append = ":${SDK_ARCHIVE_TYPE}"
Pretty sure RP will reject the patch based on this. Adding overrides
is not to be taken lightly. Should be simple enough to rewrite the
logic to not use overrides directly.
Ross
^ permalink raw reply [flat|nested] 10+ messages in thread* [PATCH V3] populate_sdk_base: provide options to set sdk type
2019-01-17 12:06 ` Burton, Ross
@ 2019-01-21 5:35 ` changqing.li
2019-02-11 7:12 ` Changqing Li
0 siblings, 1 reply; 10+ messages in thread
From: changqing.li @ 2019-01-21 5:35 UTC (permalink / raw)
To: openembedded-core
From: Changqing Li <changqing.li@windriver.com>
Current sdk type is tar.xz, but for mingw sdk, since we
have symlink under the sdk folder, 7zip which used to
extract tar.xz cannot handle it, refer 7zip upstream bug:
https://sourceforge.net/p/sevenzip/discussion/45797/thread/c71d6b96/
so add option for usr can select the sdk type.
default type is tar.xz, and also support type zip.
user want to use zip type can set SDK_ARCHIVE_TYPE to zip.
Signed-off-by: Changqing Li <changqing.li@windriver.com>
---
meta/classes/populate_sdk_base.bbclass | 28 +++++++++++++++++++++-------
1 file changed, 21 insertions(+), 7 deletions(-)
diff --git a/meta/classes/populate_sdk_base.bbclass b/meta/classes/populate_sdk_base.bbclass
index 677ba3c..3e7aec8 100644
--- a/meta/classes/populate_sdk_base.bbclass
+++ b/meta/classes/populate_sdk_base.bbclass
@@ -44,8 +44,23 @@ TOOLCHAIN_TARGET_TASK ?= "${@multilib_pkg_extend(d, 'packagegroup-core-standalon
TOOLCHAIN_TARGET_TASK_ATTEMPTONLY ?= ""
TOOLCHAIN_OUTPUTNAME ?= "${SDK_NAME}-toolchain-${SDK_VERSION}"
+# Default archived SDK's suffix
+SDK_ARCHIVE_TYPE ?= "tar.xz"
+
+# To support different sdk type according to SDK_ARCHIVE_TYPE, now support zip and tar.xz
+python () {
+ if d.getVar('SDK_ARCHIVE_TYPE') == 'zip':
+ d.setVar('SDK_ARCHIVE_DEPENDS', 'zip-native')
+ # SDK_ARCHIVE_CMD used to generate archived sdk ${TOOLCHAIN_OUTPUTNAME}.${SDK_ARCHIVE_TYPE} from input dir ${SDK_OUTPUT}/${SDKPATH} to output dir ${SDKDEPLOYDIR}
+ # recommand to cd into input dir first to avoid archive with buildpath
+ d.setVar('SDK_ARCHIVE_CMD', 'cd ${SDK_OUTPUT}/${SDKPATH}; zip -r ${SDKDEPLOYDIR}/${TOOLCHAIN_OUTPUTNAME}.${SDK_ARCHIVE_TYPE} .')
+ else:
+ d.setVar('SDK_ARCHIVE_DEPENDS', 'xz-native')
+ d.setVar('SDK_ARCHIVE_CMD', 'cd ${SDK_OUTPUT}/${SDKPATH}; tar ${SDKTAROPTS} -cf - . | xz -T 0 > ${SDKDEPLOYDIR}/${TOOLCHAIN_OUTPUTNAME}.${SDK_ARCHIVE_TYPE}')
+}
+
SDK_RDEPENDS = "${TOOLCHAIN_TARGET_TASK} ${TOOLCHAIN_HOST_TASK}"
-SDK_DEPENDS = "virtual/fakeroot-native xz-native cross-localedef-native nativesdk-qemuwrapper-cross ${@' '.join(["%s-qemuwrapper-cross" % m for m in d.getVar("MULTILIB_VARIANTS").split()])} qemuwrapper-cross"
+SDK_DEPENDS = "virtual/fakeroot-native ${SDK_ARCHIVE_DEPENDS} cross-localedef-native nativesdk-qemuwrapper-cross ${@' '.join(["%s-qemuwrapper-cross" % m for m in d.getVar("MULTILIB_VARIANTS").split()])} qemuwrapper-cross"
PATH_prepend = "${STAGING_DIR_HOST}${SDKPATHNATIVE}${bindir}/crossscripts:${@":".join(all_multilib_tune_values(d, 'STAGING_BINDIR_CROSS').split())}:"
SDK_DEPENDS_append_libc-glibc = " nativesdk-glibc-locale"
@@ -103,7 +118,7 @@ POPULATE_SDK_POST_TARGET_COMMAND_append = " write_sdk_test_data ; "
POPULATE_SDK_POST_TARGET_COMMAND_append_task-populate-sdk = " write_target_sdk_manifest ; "
POPULATE_SDK_POST_HOST_COMMAND_append_task-populate-sdk = " write_host_sdk_manifest; "
SDK_PACKAGING_COMMAND = "${@'${SDK_PACKAGING_FUNC};' if '${SDK_PACKAGING_FUNC}' else ''}"
-SDK_POSTPROCESS_COMMAND = " create_sdk_files; check_sdk_sysroots; tar_sdk; ${SDK_PACKAGING_COMMAND} "
+SDK_POSTPROCESS_COMMAND = " create_sdk_files; check_sdk_sysroots; archive_sdk; ${SDK_PACKAGING_COMMAND} "
def populate_sdk_common(d):
from oe.sdk import populate_sdk
@@ -221,11 +236,10 @@ python check_sdk_sysroots() {
SDKTAROPTS = "--owner=root --group=root"
-fakeroot tar_sdk() {
+fakeroot archive_sdk() {
# Package it up
mkdir -p ${SDKDEPLOYDIR}
- cd ${SDK_OUTPUT}/${SDKPATH}
- tar ${SDKTAROPTS} -cf - . | xz -T 0 > ${SDKDEPLOYDIR}/${TOOLCHAIN_OUTPUTNAME}.tar.xz
+ ${SDK_ARCHIVE_CMD}
}
TOOLCHAIN_SHAR_EXT_TMPL ?= "${COREBASE}/meta/files/toolchain-shar-extract.sh"
@@ -268,10 +282,10 @@ EOF
chmod +x ${SDKDEPLOYDIR}/${TOOLCHAIN_OUTPUTNAME}.sh
# append the SDK tarball
- cat ${SDKDEPLOYDIR}/${TOOLCHAIN_OUTPUTNAME}.tar.xz >> ${SDKDEPLOYDIR}/${TOOLCHAIN_OUTPUTNAME}.sh
+ cat ${SDKDEPLOYDIR}/${TOOLCHAIN_OUTPUTNAME}.${SDK_ARCHIVE_TYPE} >> ${SDKDEPLOYDIR}/${TOOLCHAIN_OUTPUTNAME}.sh
# delete the old tarball, we don't need it anymore
- rm ${SDKDEPLOYDIR}/${TOOLCHAIN_OUTPUTNAME}.tar.xz
+ rm ${SDKDEPLOYDIR}/${TOOLCHAIN_OUTPUTNAME}.${SDK_ARCHIVE_TYPE}
}
populate_sdk_log_check() {
--
2.7.4
^ permalink raw reply related [flat|nested] 10+ messages in thread* Re: [PATCH V3] populate_sdk_base: provide options to set sdk type
2019-01-21 5:35 ` [PATCH V3] " changqing.li
@ 2019-02-11 7:12 ` Changqing Li
2019-02-27 6:44 ` Changqing Li
0 siblings, 1 reply; 10+ messages in thread
From: Changqing Li @ 2019-02-11 7:12 UTC (permalink / raw)
To: openembedded-core
ping
On 1/21/19 1:35 PM, changqing.li@windriver.com wrote:
> From: Changqing Li <changqing.li@windriver.com>
>
> Current sdk type is tar.xz, but for mingw sdk, since we
> have symlink under the sdk folder, 7zip which used to
> extract tar.xz cannot handle it, refer 7zip upstream bug:
> https://sourceforge.net/p/sevenzip/discussion/45797/thread/c71d6b96/
> so add option for usr can select the sdk type.
>
> default type is tar.xz, and also support type zip.
> user want to use zip type can set SDK_ARCHIVE_TYPE to zip.
>
> Signed-off-by: Changqing Li <changqing.li@windriver.com>
> ---
> meta/classes/populate_sdk_base.bbclass | 28 +++++++++++++++++++++-------
> 1 file changed, 21 insertions(+), 7 deletions(-)
>
> diff --git a/meta/classes/populate_sdk_base.bbclass b/meta/classes/populate_sdk_base.bbclass
> index 677ba3c..3e7aec8 100644
> --- a/meta/classes/populate_sdk_base.bbclass
> +++ b/meta/classes/populate_sdk_base.bbclass
> @@ -44,8 +44,23 @@ TOOLCHAIN_TARGET_TASK ?= "${@multilib_pkg_extend(d, 'packagegroup-core-standalon
> TOOLCHAIN_TARGET_TASK_ATTEMPTONLY ?= ""
> TOOLCHAIN_OUTPUTNAME ?= "${SDK_NAME}-toolchain-${SDK_VERSION}"
>
> +# Default archived SDK's suffix
> +SDK_ARCHIVE_TYPE ?= "tar.xz"
> +
> +# To support different sdk type according to SDK_ARCHIVE_TYPE, now support zip and tar.xz
> +python () {
> + if d.getVar('SDK_ARCHIVE_TYPE') == 'zip':
> + d.setVar('SDK_ARCHIVE_DEPENDS', 'zip-native')
> + # SDK_ARCHIVE_CMD used to generate archived sdk ${TOOLCHAIN_OUTPUTNAME}.${SDK_ARCHIVE_TYPE} from input dir ${SDK_OUTPUT}/${SDKPATH} to output dir ${SDKDEPLOYDIR}
> + # recommand to cd into input dir first to avoid archive with buildpath
> + d.setVar('SDK_ARCHIVE_CMD', 'cd ${SDK_OUTPUT}/${SDKPATH}; zip -r ${SDKDEPLOYDIR}/${TOOLCHAIN_OUTPUTNAME}.${SDK_ARCHIVE_TYPE} .')
> + else:
> + d.setVar('SDK_ARCHIVE_DEPENDS', 'xz-native')
> + d.setVar('SDK_ARCHIVE_CMD', 'cd ${SDK_OUTPUT}/${SDKPATH}; tar ${SDKTAROPTS} -cf - . | xz -T 0 > ${SDKDEPLOYDIR}/${TOOLCHAIN_OUTPUTNAME}.${SDK_ARCHIVE_TYPE}')
> +}
> +
> SDK_RDEPENDS = "${TOOLCHAIN_TARGET_TASK} ${TOOLCHAIN_HOST_TASK}"
> -SDK_DEPENDS = "virtual/fakeroot-native xz-native cross-localedef-native nativesdk-qemuwrapper-cross ${@' '.join(["%s-qemuwrapper-cross" % m for m in d.getVar("MULTILIB_VARIANTS").split()])} qemuwrapper-cross"
> +SDK_DEPENDS = "virtual/fakeroot-native ${SDK_ARCHIVE_DEPENDS} cross-localedef-native nativesdk-qemuwrapper-cross ${@' '.join(["%s-qemuwrapper-cross" % m for m in d.getVar("MULTILIB_VARIANTS").split()])} qemuwrapper-cross"
> PATH_prepend = "${STAGING_DIR_HOST}${SDKPATHNATIVE}${bindir}/crossscripts:${@":".join(all_multilib_tune_values(d, 'STAGING_BINDIR_CROSS').split())}:"
> SDK_DEPENDS_append_libc-glibc = " nativesdk-glibc-locale"
>
> @@ -103,7 +118,7 @@ POPULATE_SDK_POST_TARGET_COMMAND_append = " write_sdk_test_data ; "
> POPULATE_SDK_POST_TARGET_COMMAND_append_task-populate-sdk = " write_target_sdk_manifest ; "
> POPULATE_SDK_POST_HOST_COMMAND_append_task-populate-sdk = " write_host_sdk_manifest; "
> SDK_PACKAGING_COMMAND = "${@'${SDK_PACKAGING_FUNC};' if '${SDK_PACKAGING_FUNC}' else ''}"
> -SDK_POSTPROCESS_COMMAND = " create_sdk_files; check_sdk_sysroots; tar_sdk; ${SDK_PACKAGING_COMMAND} "
> +SDK_POSTPROCESS_COMMAND = " create_sdk_files; check_sdk_sysroots; archive_sdk; ${SDK_PACKAGING_COMMAND} "
>
> def populate_sdk_common(d):
> from oe.sdk import populate_sdk
> @@ -221,11 +236,10 @@ python check_sdk_sysroots() {
>
> SDKTAROPTS = "--owner=root --group=root"
>
> -fakeroot tar_sdk() {
> +fakeroot archive_sdk() {
> # Package it up
> mkdir -p ${SDKDEPLOYDIR}
> - cd ${SDK_OUTPUT}/${SDKPATH}
> - tar ${SDKTAROPTS} -cf - . | xz -T 0 > ${SDKDEPLOYDIR}/${TOOLCHAIN_OUTPUTNAME}.tar.xz
> + ${SDK_ARCHIVE_CMD}
> }
>
> TOOLCHAIN_SHAR_EXT_TMPL ?= "${COREBASE}/meta/files/toolchain-shar-extract.sh"
> @@ -268,10 +282,10 @@ EOF
> chmod +x ${SDKDEPLOYDIR}/${TOOLCHAIN_OUTPUTNAME}.sh
>
> # append the SDK tarball
> - cat ${SDKDEPLOYDIR}/${TOOLCHAIN_OUTPUTNAME}.tar.xz >> ${SDKDEPLOYDIR}/${TOOLCHAIN_OUTPUTNAME}.sh
> + cat ${SDKDEPLOYDIR}/${TOOLCHAIN_OUTPUTNAME}.${SDK_ARCHIVE_TYPE} >> ${SDKDEPLOYDIR}/${TOOLCHAIN_OUTPUTNAME}.sh
>
> # delete the old tarball, we don't need it anymore
> - rm ${SDKDEPLOYDIR}/${TOOLCHAIN_OUTPUTNAME}.tar.xz
> + rm ${SDKDEPLOYDIR}/${TOOLCHAIN_OUTPUTNAME}.${SDK_ARCHIVE_TYPE}
> }
>
> populate_sdk_log_check() {
--
BRs
Sandy(Li Changqing)
^ permalink raw reply [flat|nested] 10+ messages in thread* Re: [PATCH V3] populate_sdk_base: provide options to set sdk type
2019-02-11 7:12 ` Changqing Li
@ 2019-02-27 6:44 ` Changqing Li
0 siblings, 0 replies; 10+ messages in thread
From: Changqing Li @ 2019-02-27 6:44 UTC (permalink / raw)
To: openembedded-core
ping
On 2/11/19 3:12 PM, Changqing Li wrote:
> ping
>
> On 1/21/19 1:35 PM, changqing.li@windriver.com wrote:
>> From: Changqing Li <changqing.li@windriver.com>
>>
>> Current sdk type is tar.xz, but for mingw sdk, since we
>> have symlink under the sdk folder, 7zip which used to
>> extract tar.xz cannot handle it, refer 7zip upstream bug:
>> https://sourceforge.net/p/sevenzip/discussion/45797/thread/c71d6b96/
>> so add option for usr can select the sdk type.
>>
>> default type is tar.xz, and also support type zip.
>> user want to use zip type can set SDK_ARCHIVE_TYPE to zip.
>>
>> Signed-off-by: Changqing Li <changqing.li@windriver.com>
>> ---
>> meta/classes/populate_sdk_base.bbclass | 28
>> +++++++++++++++++++++-------
>> 1 file changed, 21 insertions(+), 7 deletions(-)
>>
>> diff --git a/meta/classes/populate_sdk_base.bbclass
>> b/meta/classes/populate_sdk_base.bbclass
>> index 677ba3c..3e7aec8 100644
>> --- a/meta/classes/populate_sdk_base.bbclass
>> +++ b/meta/classes/populate_sdk_base.bbclass
>> @@ -44,8 +44,23 @@ TOOLCHAIN_TARGET_TASK ?=
>> "${@multilib_pkg_extend(d, 'packagegroup-core-standalon
>> TOOLCHAIN_TARGET_TASK_ATTEMPTONLY ?= ""
>> TOOLCHAIN_OUTPUTNAME ?= "${SDK_NAME}-toolchain-${SDK_VERSION}"
>> +# Default archived SDK's suffix
>> +SDK_ARCHIVE_TYPE ?= "tar.xz"
>> +
>> +# To support different sdk type according to SDK_ARCHIVE_TYPE, now
>> support zip and tar.xz
>> +python () {
>> + if d.getVar('SDK_ARCHIVE_TYPE') == 'zip':
>> + d.setVar('SDK_ARCHIVE_DEPENDS', 'zip-native')
>> + # SDK_ARCHIVE_CMD used to generate archived sdk
>> ${TOOLCHAIN_OUTPUTNAME}.${SDK_ARCHIVE_TYPE} from input dir
>> ${SDK_OUTPUT}/${SDKPATH} to output dir ${SDKDEPLOYDIR}
>> + # recommand to cd into input dir first to avoid archive with
>> buildpath
>> + d.setVar('SDK_ARCHIVE_CMD', 'cd ${SDK_OUTPUT}/${SDKPATH}; zip
>> -r ${SDKDEPLOYDIR}/${TOOLCHAIN_OUTPUTNAME}.${SDK_ARCHIVE_TYPE} .')
>> + else:
>> + d.setVar('SDK_ARCHIVE_DEPENDS', 'xz-native')
>> + d.setVar('SDK_ARCHIVE_CMD', 'cd ${SDK_OUTPUT}/${SDKPATH}; tar
>> ${SDKTAROPTS} -cf - . | xz -T 0 >
>> ${SDKDEPLOYDIR}/${TOOLCHAIN_OUTPUTNAME}.${SDK_ARCHIVE_TYPE}')
>> +}
>> +
>> SDK_RDEPENDS = "${TOOLCHAIN_TARGET_TASK} ${TOOLCHAIN_HOST_TASK}"
>> -SDK_DEPENDS = "virtual/fakeroot-native xz-native
>> cross-localedef-native nativesdk-qemuwrapper-cross ${@'
>> '.join(["%s-qemuwrapper-cross" % m for m in
>> d.getVar("MULTILIB_VARIANTS").split()])} qemuwrapper-cross"
>> +SDK_DEPENDS = "virtual/fakeroot-native ${SDK_ARCHIVE_DEPENDS}
>> cross-localedef-native nativesdk-qemuwrapper-cross ${@'
>> '.join(["%s-qemuwrapper-cross" % m for m in
>> d.getVar("MULTILIB_VARIANTS").split()])} qemuwrapper-cross"
>> PATH_prepend =
>> "${STAGING_DIR_HOST}${SDKPATHNATIVE}${bindir}/crossscripts:${@":".join(all_multilib_tune_values(d,
>> 'STAGING_BINDIR_CROSS').split())}:"
>> SDK_DEPENDS_append_libc-glibc = " nativesdk-glibc-locale"
>> @@ -103,7 +118,7 @@ POPULATE_SDK_POST_TARGET_COMMAND_append = "
>> write_sdk_test_data ; "
>> POPULATE_SDK_POST_TARGET_COMMAND_append_task-populate-sdk = "
>> write_target_sdk_manifest ; "
>> POPULATE_SDK_POST_HOST_COMMAND_append_task-populate-sdk = "
>> write_host_sdk_manifest; "
>> SDK_PACKAGING_COMMAND = "${@'${SDK_PACKAGING_FUNC};' if
>> '${SDK_PACKAGING_FUNC}' else ''}"
>> -SDK_POSTPROCESS_COMMAND = " create_sdk_files; check_sdk_sysroots;
>> tar_sdk; ${SDK_PACKAGING_COMMAND} "
>> +SDK_POSTPROCESS_COMMAND = " create_sdk_files; check_sdk_sysroots;
>> archive_sdk; ${SDK_PACKAGING_COMMAND} "
>> def populate_sdk_common(d):
>> from oe.sdk import populate_sdk
>> @@ -221,11 +236,10 @@ python check_sdk_sysroots() {
>> SDKTAROPTS = "--owner=root --group=root"
>> -fakeroot tar_sdk() {
>> +fakeroot archive_sdk() {
>> # Package it up
>> mkdir -p ${SDKDEPLOYDIR}
>> - cd ${SDK_OUTPUT}/${SDKPATH}
>> - tar ${SDKTAROPTS} -cf - . | xz -T 0 >
>> ${SDKDEPLOYDIR}/${TOOLCHAIN_OUTPUTNAME}.tar.xz
>> + ${SDK_ARCHIVE_CMD}
>> }
>> TOOLCHAIN_SHAR_EXT_TMPL ?=
>> "${COREBASE}/meta/files/toolchain-shar-extract.sh"
>> @@ -268,10 +282,10 @@ EOF
>> chmod +x ${SDKDEPLOYDIR}/${TOOLCHAIN_OUTPUTNAME}.sh
>> # append the SDK tarball
>> - cat ${SDKDEPLOYDIR}/${TOOLCHAIN_OUTPUTNAME}.tar.xz >>
>> ${SDKDEPLOYDIR}/${TOOLCHAIN_OUTPUTNAME}.sh
>> + cat ${SDKDEPLOYDIR}/${TOOLCHAIN_OUTPUTNAME}.${SDK_ARCHIVE_TYPE}
>> >> ${SDKDEPLOYDIR}/${TOOLCHAIN_OUTPUTNAME}.sh
>> # delete the old tarball, we don't need it anymore
>> - rm ${SDKDEPLOYDIR}/${TOOLCHAIN_OUTPUTNAME}.tar.xz
>> + rm ${SDKDEPLOYDIR}/${TOOLCHAIN_OUTPUTNAME}.${SDK_ARCHIVE_TYPE}
>> }
>> populate_sdk_log_check() {
>
--
BRs
Sandy(Li Changqing)
^ permalink raw reply [flat|nested] 10+ messages in thread
end of thread, other threads:[~2019-02-27 6:45 UTC | newest]
Thread overview: 10+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2019-01-16 9:37 [PATCH] populate_sdk_base: add option of add other type of sdk changqing.li
2019-01-16 12:07 ` Burton, Ross
2019-01-17 9:52 ` [PATCH V2] populate_sdk_base: provide options to set sdk type changqing.li
2019-01-17 9:55 ` Changqing Li
2019-01-17 9:52 ` changqing.li
2019-01-17 9:52 ` changqing.li
2019-01-17 12:06 ` Burton, Ross
2019-01-21 5:35 ` [PATCH V3] " changqing.li
2019-02-11 7:12 ` Changqing Li
2019-02-27 6:44 ` Changqing Li
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox