Openembedded Core Discussions
 help / color / mirror / Atom feed
* [PATCH 0/1] archive.bbclass: archive work directory
@ 2012-01-06  8:20 wenzong.fan
  2012-01-06  8:20 ` [PATCH 1/1] " wenzong.fan
  0 siblings, 1 reply; 6+ messages in thread
From: wenzong.fan @ 2012-01-06  8:20 UTC (permalink / raw)
  To: openembedded-core

From: Wenzong Fan <wenzong.fan@windriver.com>

Archive the sources and build scripts for license compliance checking
by end users or legal departments.

The functionality is in a separate class which 'archive.bbclass' and the
user can optionally include it for archiving any packages.

[Yocto #1590]

The following changes since commit 5797feac5f06f5cc363869cd440b82b3eaafd456:
  Richard Purdie (1):
        image-mklibs/package_ipk: Remove bashisms

are available in the git repository at:

  git://git.pokylinux.org/poky-contrib wenzong/1590
  http://git.pokylinux.org/cgit.cgi/poky-contrib/log/?h=wenzong/1590

Wenzong Fan (1):
  archive.bbclass: archive work directory

 meta/classes/archive.bbclass |   42 ++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 42 insertions(+), 0 deletions(-)
 create mode 100644 meta/classes/archive.bbclass




^ permalink raw reply	[flat|nested] 6+ messages in thread

* [PATCH 1/1] archive.bbclass: archive work directory
  2012-01-06  8:20 [PATCH 0/1] archive.bbclass: archive work directory wenzong.fan
@ 2012-01-06  8:20 ` wenzong.fan
  2012-01-06  8:46   ` Saul Wold
  2012-01-06 17:39   ` Phil Blundell
  0 siblings, 2 replies; 6+ messages in thread
From: wenzong.fan @ 2012-01-06  8:20 UTC (permalink / raw)
  To: openembedded-core

From: Wenzong Fan <wenzong.fan@windriver.com>

Some legal departments believe a complete archive of the work directory
is required for certain license compliance issues. We could therefore
do with a class which archives up the work directories in each build and
provide them so those legal departments can be happy.

Implementations:

Add a new class named 'archive.bbclass' to provide task 'do_archive',
and get it called after 'do_patch' before 'do_configure'.

Following cases should be considered to the sources dirs:
1) The sources dir is under $WORKDIR:
Just archive sources and temp/run.* up.

2) The sources dir is outside of $WORKDIR, the only package is gcc:
Copy its sources and temp/run.* to a temporary dir and then archive
them up.

3) The sources dir is equal to $WORKDIR:
Just archive whole work dir up.

[YOCTO #1590]

Signed-off-by: Wenzong Fan <wenzong.fan@windriver.com>
---
 meta/classes/archive.bbclass |   42 ++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 42 insertions(+), 0 deletions(-)
 create mode 100644 meta/classes/archive.bbclass

diff --git a/meta/classes/archive.bbclass b/meta/classes/archive.bbclass
new file mode 100644
index 0000000..75ac090
--- /dev/null
+++ b/meta/classes/archive.bbclass
@@ -0,0 +1,42 @@
+# Archive the patched sources and build scripts to assist in license
+# compliance by the end user or legal departments.
+
+ARCHIVE_DIR = "${TMPDIR}/archives/${MULTIMACH_TARGET_SYS}/"
+do_archive[dirs] = "${ARCHIVE_DIR}"
+
+archive_do_archive() {
+    # In mostly scenarios the $S is under $WORKDIR and has a separate
+    # dir for storing the sources; but gcc is a special case, its sources
+    # had been moved to the shared location 'tmp/work-shared/'
+    if [[ -d ${S} && ${S} != ${WORKDIR} ]]; then
+        if [[ ${S} =~ "/work-shared/gcc" ]]; then
+            # Create temporary sources directory for gcc
+            mkdir -p ${PF}/temp
+            cp -r ${S} ${PF}
+            cp -r ${S}/../temp/* ${PF}/temp
+            cp -r ${WORKDIR}/temp/* ${PF}/temp
+            tarbase=`pwd`
+        else
+            tarbase=`dirname ${WORKDIR}`
+        fi
+
+        sourcedir=`basename ${S}`
+        tar -C $tarbase -cjf ${PF}.tar.bz2 ${PF}/$sourcedir \
+            ${PF}/temp --exclude log.do_*
+
+        # Remove the temporary gcc sources directory
+        if [[ ${S} =~ "/work-shared/gcc" && -d ${PF} ]]; then
+            rm -rf ${PF}
+        fi
+    fi
+
+    # Just archive whole build directory up when $S is equal to $WORKDIR
+    if [[ -d ${S} && ${S} == ${WORKDIR} ]]; then
+        tarbase=`dirname ${WORKDIR}`
+        tar -C $tarbase -cjf ${PF}.tar.bz2 ${PF} --exclude log.do_*
+    fi
+}
+
+addtask do_archive after do_patch before do_configure
+
+EXPORT_FUNCTIONS do_archive
-- 
1.7.0.4




^ permalink raw reply related	[flat|nested] 6+ messages in thread

* Re: [PATCH 1/1] archive.bbclass: archive work directory
  2012-01-06  8:20 ` [PATCH 1/1] " wenzong.fan
@ 2012-01-06  8:46   ` Saul Wold
  2012-01-09  2:20     ` wenzong fan
  2012-01-06 17:39   ` Phil Blundell
  1 sibling, 1 reply; 6+ messages in thread
From: Saul Wold @ 2012-01-06  8:46 UTC (permalink / raw)
  To: Patches and discussions about the oe-core layer

On 01/06/2012 12:20 AM, wenzong.fan@windriver.com wrote:
> From: Wenzong Fan<wenzong.fan@windriver.com>
>
> Some legal departments believe a complete archive of the work directory
> is required for certain license compliance issues. We could therefore
> do with a class which archives up the work directories in each build and
> provide them so those legal departments can be happy.
>
> Implementations:
>
> Add a new class named 'archive.bbclass' to provide task 'do_archive',
> and get it called after 'do_patch' before 'do_configure'.
>
> Following cases should be considered to the sources dirs:
> 1) The sources dir is under $WORKDIR:
> Just archive sources and temp/run.* up.
>
> 2) The sources dir is outside of $WORKDIR, the only package is gcc:
> Copy its sources and temp/run.* to a temporary dir and then archive
> them up.
>
> 3) The sources dir is equal to $WORKDIR:
> Just archive whole work dir up.
>
> [YOCTO #1590]
>
> Signed-off-by: Wenzong Fan<wenzong.fan@windriver.com>
> ---
>   meta/classes/archive.bbclass |   42 ++++++++++++++++++++++++++++++++++++++++++
>   1 files changed, 42 insertions(+), 0 deletions(-)
>   create mode 100644 meta/classes/archive.bbclass
>
> diff --git a/meta/classes/archive.bbclass b/meta/classes/archive.bbclass
> new file mode 100644
> index 0000000..75ac090
> --- /dev/null
> +++ b/meta/classes/archive.bbclass
> @@ -0,0 +1,42 @@
> +# Archive the patched sources and build scripts to assist in license
> +# compliance by the end user or legal departments.
> +
> +ARCHIVE_DIR = "${TMPDIR}/archives/${MULTIMACH_TARGET_SYS}/"
> +do_archive[dirs] = "${ARCHIVE_DIR}"
> +
I see you set ARCHIVE_DIR, but I don' see you move or copy any files to 
this directory, am I missing something?

> +archive_do_archive() {
> +    # In mostly scenarios the $S is under $WORKDIR and has a separate
> +    # dir for storing the sources; but gcc is a special case, its sources
> +    # had been moved to the shared location 'tmp/work-shared/'
> +    if [[ -d ${S}&&  ${S} != ${WORKDIR} ]]; then
> +        if [[ ${S} =~ "/work-shared/gcc" ]]; then
> +            # Create temporary sources directory for gcc
> +            mkdir -p ${PF}/temp
> +            cp -r ${S} ${PF}
> +            cp -r ${S}/../temp/* ${PF}/temp
> +            cp -r ${WORKDIR}/temp/* ${PF}/temp
> +            tarbase=`pwd`
> +        else
> +            tarbase=`dirname ${WORKDIR}`
> +        fi
> +
> +        sourcedir=`basename ${S}`
> +        tar -C $tarbase -cjf ${PF}.tar.bz2 ${PF}/$sourcedir \
> +            ${PF}/temp --exclude log.do_*
> +
Also, do you want to name the tarball PF or BP, which deals with 
removing any multilib naming issues if the build it multilib.

Note BP = ${BPN}-${PV} so it removes the ${PR} if that is important 
(which it might be).

> +        # Remove the temporary gcc sources directory
> +        if [[ ${S} =~ "/work-shared/gcc"&&  -d ${PF} ]]; then
> +            rm -rf ${PF}
> +        fi
> +    fi
> +
> +    # Just archive whole build directory up when $S is equal to $WORKDIR
> +    if [[ -d ${S}&&  ${S} == ${WORKDIR} ]]; then
> +        tarbase=`dirname ${WORKDIR}`
> +        tar -C $tarbase -cjf ${PF}.tar.bz2 ${PF} --exclude log.do_*
> +    fi
> +}
> +
> +addtask do_archive after do_patch before do_configure
> +
> +EXPORT_FUNCTIONS do_archive



^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH 1/1] archive.bbclass: archive work directory
  2012-01-06  8:20 ` [PATCH 1/1] " wenzong.fan
  2012-01-06  8:46   ` Saul Wold
@ 2012-01-06 17:39   ` Phil Blundell
  2012-01-09  3:31     ` [PATCH 1/1] archive.bbclass: archive work directoryDistribution wenzong fan
  1 sibling, 1 reply; 6+ messages in thread
From: Phil Blundell @ 2012-01-06 17:39 UTC (permalink / raw)
  To: Patches and discussions about the oe-core layer

On Fri, 2012-01-06 at 16:20 +0800, wenzong.fan@windriver.com wrote:
> +    if [[ -d ${S} && ${S} != ${WORKDIR} ]]; then
> +        if [[ ${S} =~ "/work-shared/gcc" ]]; then
> +            # Create temporary sources directory for gcc
> +            mkdir -p ${PF}/temp
> +            cp -r ${S} ${PF}
> +            cp -r ${S}/../temp/* ${PF}/temp
> +            cp -r ${WORKDIR}/temp/* ${PF}/temp
> +            tarbase=`pwd`

Special-casing gcc like this seems a bit lame.  Is that check really
needed?

Also, will the above code work with all shells?  It looks a bit
bash-specific to me.

p.





^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH 1/1] archive.bbclass: archive work directory
  2012-01-06  8:46   ` Saul Wold
@ 2012-01-09  2:20     ` wenzong fan
  0 siblings, 0 replies; 6+ messages in thread
From: wenzong fan @ 2012-01-09  2:20 UTC (permalink / raw)
  To: Saul Wold; +Cc: Patches and discussions about the oe-core layer

On 01/06/2012 04:46 PM, Saul Wold wrote:
> On 01/06/2012 12:20 AM, wenzong.fan@windriver.com wrote:
>> From: Wenzong Fan<wenzong.fan@windriver.com>
>>
>> Some legal departments believe a complete archive of the work directory
>> is required for certain license compliance issues. We could therefore
>> do with a class which archives up the work directories in each build and
>> provide them so those legal departments can be happy.
>>
>> Implementations:
>>
>> Add a new class named 'archive.bbclass' to provide task 'do_archive',
>> and get it called after 'do_patch' before 'do_configure'.
>>
>> Following cases should be considered to the sources dirs:
>> 1) The sources dir is under $WORKDIR:
>> Just archive sources and temp/run.* up.
>>
>> 2) The sources dir is outside of $WORKDIR, the only package is gcc:
>> Copy its sources and temp/run.* to a temporary dir and then archive
>> them up.
>>
>> 3) The sources dir is equal to $WORKDIR:
>> Just archive whole work dir up.
>>
>> [YOCTO #1590]
>>
>> Signed-off-by: Wenzong Fan<wenzong.fan@windriver.com>
>> ---
>>   meta/classes/archive.bbclass |   42 
>> ++++++++++++++++++++++++++++++++++++++++++
>>   1 files changed, 42 insertions(+), 0 deletions(-)
>>   create mode 100644 meta/classes/archive.bbclass
>>
>> diff --git a/meta/classes/archive.bbclass b/meta/classes/archive.bbclass
>> new file mode 100644
>> index 0000000..75ac090
>> --- /dev/null
>> +++ b/meta/classes/archive.bbclass
>> @@ -0,0 +1,42 @@
>> +# Archive the patched sources and build scripts to assist in license
>> +# compliance by the end user or legal departments.
>> +
>> +ARCHIVE_DIR = "${TMPDIR}/archives/${MULTIMACH_TARGET_SYS}/"
>> +do_archive[dirs] = "${ARCHIVE_DIR}"
>> +
> I see you set ARCHIVE_DIR, but I don' see you move or copy any files 
> to this directory, am I missing something?

It just gets bitbake creating '${ARCHIVE_DIR}' before the task started, 
and then 'do_archive' will be run in this dir.

>
>> +archive_do_archive() {
>> +    # In mostly scenarios the $S is under $WORKDIR and has a separate
>> +    # dir for storing the sources; but gcc is a special case, its 
>> sources
>> +    # had been moved to the shared location 'tmp/work-shared/'
>> +    if [[ -d ${S}&&  ${S} != ${WORKDIR} ]]; then
>> +        if [[ ${S} =~ "/work-shared/gcc" ]]; then
>> +            # Create temporary sources directory for gcc
>> +            mkdir -p ${PF}/temp
>> +            cp -r ${S} ${PF}
>> +            cp -r ${S}/../temp/* ${PF}/temp
>> +            cp -r ${WORKDIR}/temp/* ${PF}/temp
>> +            tarbase=`pwd`
>> +        else
>> +            tarbase=`dirname ${WORKDIR}`
>> +        fi
>> +
>> +        sourcedir=`basename ${S}`
>> +        tar -C $tarbase -cjf ${PF}.tar.bz2 ${PF}/$sourcedir \
>> +            ${PF}/temp --exclude log.do_*
>> +
> Also, do you want to name the tarball PF or BP, which deals with 
> removing any multilib naming issues if the build it multilib.
>
> Note BP = ${BPN}-${PV} so it removes the ${PR} if that is important 
> (which it might be).

Sorry I'm not clear your exact meanings here, do you mean the tarball 
name with '${PF}' will have any issues?

Thanks
Wenzong

>
>> +        # Remove the temporary gcc sources directory
>> +        if [[ ${S} =~ "/work-shared/gcc"&&  -d ${PF} ]]; then
>> +            rm -rf ${PF}
>> +        fi
>> +    fi
>> +
>> +    # Just archive whole build directory up when $S is equal to 
>> $WORKDIR
>> +    if [[ -d ${S}&&  ${S} == ${WORKDIR} ]]; then
>> +        tarbase=`dirname ${WORKDIR}`
>> +        tar -C $tarbase -cjf ${PF}.tar.bz2 ${PF} --exclude log.do_*
>> +    fi
>> +}
>> +
>> +addtask do_archive after do_patch before do_configure
>> +
>> +EXPORT_FUNCTIONS do_archive
>




^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH 1/1] archive.bbclass: archive work directoryDistribution
  2012-01-06 17:39   ` Phil Blundell
@ 2012-01-09  3:31     ` wenzong fan
  0 siblings, 0 replies; 6+ messages in thread
From: wenzong fan @ 2012-01-09  3:31 UTC (permalink / raw)
  To: philb; +Cc: openembedded-core

On 01/07/2012 01:39 AM, Phil Blundell wrote:
> On Fri, 2012-01-06 at 16:20 +0800, wenzong.fan@windriver.com wrote:
>    
>> +    if [[ -d ${S}&&  ${S} != ${WORKDIR} ]]; then
>> +        if [[ ${S} =~ "/work-shared/gcc" ]]; then
>> +            # Create temporary sources directory for gcc
>> +            mkdir -p ${PF}/temp
>> +            cp -r ${S} ${PF}
>> +            cp -r ${S}/../temp/* ${PF}/temp
>> +            cp -r ${WORKDIR}/temp/* ${PF}/temp
>> +            tarbase=`pwd`
>>      
> Special-casing gcc like this seems a bit lame.  Is that check really
> needed?
>    

Oh, we might have other packages under this dir, so I'll remove the 
special-casing 'gcc' here.
> Also, will the above code work with all shells?  It looks a bit
> bash-specific to me.
>    
I assume that the bitbake have to run with 'bash', looks like this is 
not right on all distributions.

I'll update this.

Thanks
Wenzong

> p.
>
>
>
> _______________________________________________
> Openembedded-core mailing list
> Openembedded-core@lists.openembedded.org
> http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/openembedded-core
>
>    




^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2012-01-09  3:39 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-01-06  8:20 [PATCH 0/1] archive.bbclass: archive work directory wenzong.fan
2012-01-06  8:20 ` [PATCH 1/1] " wenzong.fan
2012-01-06  8:46   ` Saul Wold
2012-01-09  2:20     ` wenzong fan
2012-01-06 17:39   ` Phil Blundell
2012-01-09  3:31     ` [PATCH 1/1] archive.bbclass: archive work directoryDistribution wenzong fan

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox