diff mbox series

[v6,03/12] scripts: Add archive-source.sh

Message ID 20170905021201.25684-4-famz@redhat.com
State New
Headers show
Series tests: Add VM based build tests (for non-x86_64 and/or non-Linux) | expand

Commit Message

Fam Zheng Sept. 5, 2017, 2:11 a.m. UTC
Signed-off-by: Fam Zheng <famz@redhat.com>
---
 scripts/archive-source.sh | 31 +++++++++++++++++++++++++++++++
 1 file changed, 31 insertions(+)
 create mode 100755 scripts/archive-source.sh

Comments

Alex Bennée Sept. 8, 2017, 2:42 p.m. UTC | #1
Fam Zheng <famz@redhat.com> writes:

> Signed-off-by: Fam Zheng <famz@redhat.com>
> ---
>  scripts/archive-source.sh | 31 +++++++++++++++++++++++++++++++
>  1 file changed, 31 insertions(+)
>  create mode 100755 scripts/archive-source.sh
>
> diff --git a/scripts/archive-source.sh b/scripts/archive-source.sh
> new file mode 100755
> index 0000000000..3cae7f34d3
> --- /dev/null
> +++ b/scripts/archive-source.sh
> @@ -0,0 +1,31 @@
> +#!/bin/sh
> +#
> +# Author: Fam Zheng <famz@redhat.com>
> +#
> +# Create archive of source tree, including submodules
> +#
> +# This work is licensed under the terms of the GNU GPL, version 2.
> +# See the COPYING file in the top-level directory.
> +
> +set -e
> +
> +if test $# -lt 1; then
> +    echo "Usage: $0 <output>"

Maybe <output tarball> to make it clear what it creates?

> +    exit 1
> +fi
> +
> +submodules=$(git submodule foreach --recursive --quiet 'echo $name')
> +
> +if test -n "$submodules"; then
> +    {
> +        git ls-files

Couldn't we do the main git ls-files first and then append the data for
any submodules?

> +        for sm in $submodules; do
> +            (cd $sm; git ls-files) | sed "s:^:$sm/:"
> +        done
> +    } | grep -x -v $(for sm in $submodules; do echo "-e $sm"; done) > $1.list
> +else
> +    git ls-files > $1.list
> +fi
> +
> +tar -cf $1 -T $1.list
> +rm $1.list


--
Alex Bennée
Peter Maydell Sept. 8, 2017, 2:56 p.m. UTC | #2
On 5 September 2017 at 03:11, Fam Zheng <famz@redhat.com> wrote:
> Signed-off-by: Fam Zheng <famz@redhat.com>
> ---
>  scripts/archive-source.sh | 31 +++++++++++++++++++++++++++++++
>  1 file changed, 31 insertions(+)
>  create mode 100755 scripts/archive-source.sh
>
> diff --git a/scripts/archive-source.sh b/scripts/archive-source.sh
> new file mode 100755
> index 0000000000..3cae7f34d3
> --- /dev/null
> +++ b/scripts/archive-source.sh
> @@ -0,0 +1,31 @@
> +#!/bin/sh
> +#
> +# Author: Fam Zheng <famz@redhat.com>
> +#
> +# Create archive of source tree, including submodules
> +#
> +# This work is licensed under the terms of the GNU GPL, version 2.
> +# See the COPYING file in the top-level directory.

Why GPL-2-only? We generally prefer GPL-2-or-later for new
files, or something more permissive.

thanks
-- PMM
Fam Zheng Sept. 8, 2017, 11:13 p.m. UTC | #3
On Fri, 09/08 15:56, Peter Maydell wrote:
> On 5 September 2017 at 03:11, Fam Zheng <famz@redhat.com> wrote:
> > Signed-off-by: Fam Zheng <famz@redhat.com>
> > ---
> >  scripts/archive-source.sh | 31 +++++++++++++++++++++++++++++++
> >  1 file changed, 31 insertions(+)
> >  create mode 100755 scripts/archive-source.sh
> >
> > diff --git a/scripts/archive-source.sh b/scripts/archive-source.sh
> > new file mode 100755
> > index 0000000000..3cae7f34d3
> > --- /dev/null
> > +++ b/scripts/archive-source.sh
> > @@ -0,0 +1,31 @@
> > +#!/bin/sh
> > +#
> > +# Author: Fam Zheng <famz@redhat.com>
> > +#
> > +# Create archive of source tree, including submodules
> > +#
> > +# This work is licensed under the terms of the GNU GPL, version 2.
> > +# See the COPYING file in the top-level directory.
> 
> Why GPL-2-only? We generally prefer GPL-2-or-later for new
> files, or something more permissive.

Copied from some other script/* files, apparently. :)

Will make it GPL-2-or-later.

Fam
Fam Zheng Sept. 8, 2017, 11:14 p.m. UTC | #4
On Fri, 09/08 15:42, Alex Bennée wrote:
> 
> Fam Zheng <famz@redhat.com> writes:
> 
> > Signed-off-by: Fam Zheng <famz@redhat.com>
> > ---
> >  scripts/archive-source.sh | 31 +++++++++++++++++++++++++++++++
> >  1 file changed, 31 insertions(+)
> >  create mode 100755 scripts/archive-source.sh
> >
> > diff --git a/scripts/archive-source.sh b/scripts/archive-source.sh
> > new file mode 100755
> > index 0000000000..3cae7f34d3
> > --- /dev/null
> > +++ b/scripts/archive-source.sh
> > @@ -0,0 +1,31 @@
> > +#!/bin/sh
> > +#
> > +# Author: Fam Zheng <famz@redhat.com>
> > +#
> > +# Create archive of source tree, including submodules
> > +#
> > +# This work is licensed under the terms of the GNU GPL, version 2.
> > +# See the COPYING file in the top-level directory.
> > +
> > +set -e
> > +
> > +if test $# -lt 1; then
> > +    echo "Usage: $0 <output>"
> 
> Maybe <output tarball> to make it clear what it creates?

OK.

> 
> > +    exit 1
> > +fi
> > +
> > +submodules=$(git submodule foreach --recursive --quiet 'echo $name')
> > +
> > +if test -n "$submodules"; then
> > +    {
> > +        git ls-files
> 
> Couldn't we do the main git ls-files first and then append the data for
> any submodules?

Isn't that exactly what we are doing now?

Fam

> 
> > +        for sm in $submodules; do
> > +            (cd $sm; git ls-files) | sed "s:^:$sm/:"
> > +        done
> > +    } | grep -x -v $(for sm in $submodules; do echo "-e $sm"; done) > $1.list
> > +else
> > +    git ls-files > $1.list
> > +fi
> > +
> > +tar -cf $1 -T $1.list
> > +rm $1.list
> 
> 
> --
> Alex Bennée
Alex Bennée Sept. 11, 2017, 1:43 p.m. UTC | #5
Fam Zheng <famz@redhat.com> writes:

> On Fri, 09/08 15:42, Alex Bennée wrote:
>>
>> Fam Zheng <famz@redhat.com> writes:
>>
>> > Signed-off-by: Fam Zheng <famz@redhat.com>
>> > ---
>> >  scripts/archive-source.sh | 31 +++++++++++++++++++++++++++++++
>> >  1 file changed, 31 insertions(+)
>> >  create mode 100755 scripts/archive-source.sh
>> >
>> > diff --git a/scripts/archive-source.sh b/scripts/archive-source.sh
>> > new file mode 100755
>> > index 0000000000..3cae7f34d3
>> > --- /dev/null
>> > +++ b/scripts/archive-source.sh
>> > @@ -0,0 +1,31 @@
>> > +#!/bin/sh
>> > +#
>> > +# Author: Fam Zheng <famz@redhat.com>
>> > +#
>> > +# Create archive of source tree, including submodules
>> > +#
>> > +# This work is licensed under the terms of the GNU GPL, version 2.
>> > +# See the COPYING file in the top-level directory.
>> > +
>> > +set -e
>> > +
>> > +if test $# -lt 1; then
>> > +    echo "Usage: $0 <output>"
>>
>> Maybe <output tarball> to make it clear what it creates?
>
> OK.
>
>>
>> > +    exit 1
>> > +fi
>> > +
>> > +submodules=$(git submodule foreach --recursive --quiet 'echo $name')
>> > +
>> > +if test -n "$submodules"; then
>> > +    {
>> > +        git ls-files
>>
>> Couldn't we do the main git ls-files first and then append the data for
>> any submodules?
>
> Isn't that exactly what we are doing now?

I mean hoist the git ls-files out of the if so we can avoid repeating
with an else leg. e.g.

  git ls-files > $1.list
  if test -n "$submodules"; then
  {
    .. the rest..
  } | grep -x -v $(for sm in $submodules; do echo "-e $sm"; done) >> $1.list

>
> Fam
>
>>
>> > +        for sm in $submodules; do
>> > +            (cd $sm; git ls-files) | sed "s:^:$sm/:"
>> > +        done
>> > +    } | grep -x -v $(for sm in $submodules; do echo "-e $sm"; done) > $1.list
>> > +else
>> > +    git ls-files > $1.list
>> > +fi
>> > +
>> > +tar -cf $1 -T $1.list
>> > +rm $1.list
>>
>>
>> --
>> Alex Bennée


--
Alex Bennée
Fam Zheng Sept. 12, 2017, 12:06 a.m. UTC | #6
On Mon, 09/11 14:43, Alex Bennée wrote:
> 
> Fam Zheng <famz@redhat.com> writes:
> 
> > On Fri, 09/08 15:42, Alex Bennée wrote:
> >>
> >> Fam Zheng <famz@redhat.com> writes:
> >>
> >> > Signed-off-by: Fam Zheng <famz@redhat.com>
> >> > ---
> >> >  scripts/archive-source.sh | 31 +++++++++++++++++++++++++++++++
> >> >  1 file changed, 31 insertions(+)
> >> >  create mode 100755 scripts/archive-source.sh
> >> >
> >> > diff --git a/scripts/archive-source.sh b/scripts/archive-source.sh
> >> > new file mode 100755
> >> > index 0000000000..3cae7f34d3
> >> > --- /dev/null
> >> > +++ b/scripts/archive-source.sh
> >> > @@ -0,0 +1,31 @@
> >> > +#!/bin/sh
> >> > +#
> >> > +# Author: Fam Zheng <famz@redhat.com>
> >> > +#
> >> > +# Create archive of source tree, including submodules
> >> > +#
> >> > +# This work is licensed under the terms of the GNU GPL, version 2.
> >> > +# See the COPYING file in the top-level directory.
> >> > +
> >> > +set -e
> >> > +
> >> > +if test $# -lt 1; then
> >> > +    echo "Usage: $0 <output>"
> >>
> >> Maybe <output tarball> to make it clear what it creates?
> >
> > OK.
> >
> >>
> >> > +    exit 1
> >> > +fi
> >> > +
> >> > +submodules=$(git submodule foreach --recursive --quiet 'echo $name')
> >> > +
> >> > +if test -n "$submodules"; then
> >> > +    {
> >> > +        git ls-files
> >>
> >> Couldn't we do the main git ls-files first and then append the data for
> >> any submodules?
> >
> > Isn't that exactly what we are doing now?
> 
> I mean hoist the git ls-files out of the if so we can avoid repeating
> with an else leg. e.g.
> 
>   git ls-files > $1.list

The output of top "git ls-files" has to be filtered by grep if the submodules
list is non-empty, so we cannot save LoC by hoisting.

Fam

>   if test -n "$submodules"; then
>   {
>     .. the rest..
>   } | grep -x -v $(for sm in $submodules; do echo "-e $sm"; done) >> $1.list
> 
> >
> > Fam
> >
> >>
> >> > +        for sm in $submodules; do
> >> > +            (cd $sm; git ls-files) | sed "s:^:$sm/:"
> >> > +        done
> >> > +    } | grep -x -v $(for sm in $submodules; do echo "-e $sm"; done) > $1.list
> >> > +else
> >> > +    git ls-files > $1.list
> >> > +fi
> >> > +
> >> > +tar -cf $1 -T $1.list
> >> > +rm $1.list
> >>
> >>
> >> --
> >> Alex Bennée
> 
> 
> --
> Alex Bennée
diff mbox series

Patch

diff --git a/scripts/archive-source.sh b/scripts/archive-source.sh
new file mode 100755
index 0000000000..3cae7f34d3
--- /dev/null
+++ b/scripts/archive-source.sh
@@ -0,0 +1,31 @@ 
+#!/bin/sh
+#
+# Author: Fam Zheng <famz@redhat.com>
+#
+# Create archive of source tree, including submodules
+#
+# This work is licensed under the terms of the GNU GPL, version 2.
+# See the COPYING file in the top-level directory.
+
+set -e
+
+if test $# -lt 1; then
+    echo "Usage: $0 <output>"
+    exit 1
+fi
+
+submodules=$(git submodule foreach --recursive --quiet 'echo $name')
+
+if test -n "$submodules"; then
+    {
+        git ls-files
+        for sm in $submodules; do
+            (cd $sm; git ls-files) | sed "s:^:$sm/:"
+        done
+    } | grep -x -v $(for sm in $submodules; do echo "-e $sm"; done) > $1.list
+else
+    git ls-files > $1.list
+fi
+
+tar -cf $1 -T $1.list
+rm $1.list