All of lore.kernel.org
 help / color / mirror / Atom feed
* [Buildroot] [PATCH v2] support/scripts/apply-patches.sh: do not blindly remove *.orig files
@ 2020-10-06 20:46 Peter Korsgaard
  2020-10-06 21:41 ` Yann E. MORIN
  2020-10-10 20:44 ` Peter Korsgaard
  0 siblings, 2 replies; 4+ messages in thread
From: Peter Korsgaard @ 2020-10-06 20:46 UTC (permalink / raw)
  To: buildroot

apply-patches currently blindly removes *.orig / .*.orig files as GNU patch
by default writes these as backup files when patches only apply with fuzz.

This is unfortunate as package sources may contain files ending in .orig as
well, breaking the build.  Luckily GNU patch can be told to not write these
backup files using the --no-backup-if-mismatch option, so used that instead
of the .orig removal step.

--no-backup-if-mismatch is supported since GNU patch 2.3.8 (1997-06-17) and
busybox patch if built with CONFIG_DESKTOP, but E.G.  isn't supported by the
BSD patch, so add logic to dependencies.sh to error out if patch doesn't
support the flag.

Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
---
 support/dependencies/dependencies.sh | 6 ++++++
 support/scripts/apply-patches.sh     | 5 +----
 2 files changed, 7 insertions(+), 4 deletions(-)

diff --git a/support/dependencies/dependencies.sh b/support/dependencies/dependencies.sh
index c1bd614edf..b44d28682c 100755
--- a/support/dependencies/dependencies.sh
+++ b/support/dependencies/dependencies.sh
@@ -180,6 +180,12 @@ if test "${missing_progs}" = "yes" ; then
 	exit 1
 fi
 
+# apply-patches.sh needs patch with --no-backup-if-mismatch support (GNU, busybox w/DESKTOP)
+if ! patch --no-backup-if-mismatch </dev/null 2>/dev/null; then
+	echo "Your patch program does not support the --no-backup-if-mismatch option. Install GNU patch"
+	exit 1
+fi
+
 if grep ^BR2_NEEDS_HOST_UTF8_LOCALE=y $BR2_CONFIG > /dev/null; then
 	if ! which locale > /dev/null ; then
 		echo
diff --git a/support/scripts/apply-patches.sh b/support/scripts/apply-patches.sh
index 66fef262ee..2d39d63da1 100755
--- a/support/scripts/apply-patches.sh
+++ b/support/scripts/apply-patches.sh
@@ -119,7 +119,7 @@ function apply_patch {
         exit 1
     fi
     echo "${path}/${patch}" >> ${builddir}/.applied_patches_list
-    ${uncomp} "${path}/$patch" | patch -g0 -p1 -E -d "${builddir}" -t -N $silent
+    ${uncomp} "${path}/$patch" | patch -g0 -p1 -E --no-backup-if-mismatch -d "${builddir}" -t -N $silent
     if [ $? != 0 ] ; then
         echo "Patch failed!  Please fix ${patch}!"
         exit 1
@@ -168,6 +168,3 @@ if [ "`find $builddir/ '(' -name '*.rej' -o -name '.*.rej' ')' -print`" ] ; then
     echo "Aborting.  Reject files found."
     exit 1
 fi
-
-# Remove backup files
-find $builddir/ '(' -name '*.orig' -o -name '.*.orig' ')' -exec rm -f {} \;
-- 
2.20.1

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

* [Buildroot] [PATCH v2] support/scripts/apply-patches.sh: do not blindly remove *.orig files
  2020-10-06 20:46 [Buildroot] [PATCH v2] support/scripts/apply-patches.sh: do not blindly remove *.orig files Peter Korsgaard
@ 2020-10-06 21:41 ` Yann E. MORIN
  2020-10-07  6:02   ` Peter Korsgaard
  2020-10-10 20:44 ` Peter Korsgaard
  1 sibling, 1 reply; 4+ messages in thread
From: Yann E. MORIN @ 2020-10-06 21:41 UTC (permalink / raw)
  To: buildroot

Peter, All,

On 2020-10-06 22:46 +0200, Peter Korsgaard spake thusly:
> apply-patches currently blindly removes *.orig / .*.orig files as GNU patch
> by default writes these as backup files when patches only apply with fuzz.
> 
> This is unfortunate as package sources may contain files ending in .orig as
> well, breaking the build.  Luckily GNU patch can be told to not write these
> backup files using the --no-backup-if-mismatch option, so used that instead
> of the .orig removal step.
> 
> --no-backup-if-mismatch is supported since GNU patch 2.3.8 (1997-06-17) and
> busybox patch if built with CONFIG_DESKTOP, but E.G.  isn't supported by the
> BSD patch, so add logic to dependencies.sh to error out if patch doesn't
> support the flag.
> 
> Signed-off-by: Peter Korsgaard <peter@korsgaard.com>

Applied to master, thanks.

However, does that make sense to also use --no-backup-if-mismatch in our
LIBTOOL_PATCH_HOOK ?

Regards,
Yann E. MORIN.

> ---
>  support/dependencies/dependencies.sh | 6 ++++++
>  support/scripts/apply-patches.sh     | 5 +----
>  2 files changed, 7 insertions(+), 4 deletions(-)
> 
> diff --git a/support/dependencies/dependencies.sh b/support/dependencies/dependencies.sh
> index c1bd614edf..b44d28682c 100755
> --- a/support/dependencies/dependencies.sh
> +++ b/support/dependencies/dependencies.sh
> @@ -180,6 +180,12 @@ if test "${missing_progs}" = "yes" ; then
>  	exit 1
>  fi
>  
> +# apply-patches.sh needs patch with --no-backup-if-mismatch support (GNU, busybox w/DESKTOP)
> +if ! patch --no-backup-if-mismatch </dev/null 2>/dev/null; then
> +	echo "Your patch program does not support the --no-backup-if-mismatch option. Install GNU patch"
> +	exit 1
> +fi
> +
>  if grep ^BR2_NEEDS_HOST_UTF8_LOCALE=y $BR2_CONFIG > /dev/null; then
>  	if ! which locale > /dev/null ; then
>  		echo
> diff --git a/support/scripts/apply-patches.sh b/support/scripts/apply-patches.sh
> index 66fef262ee..2d39d63da1 100755
> --- a/support/scripts/apply-patches.sh
> +++ b/support/scripts/apply-patches.sh
> @@ -119,7 +119,7 @@ function apply_patch {
>          exit 1
>      fi
>      echo "${path}/${patch}" >> ${builddir}/.applied_patches_list
> -    ${uncomp} "${path}/$patch" | patch -g0 -p1 -E -d "${builddir}" -t -N $silent
> +    ${uncomp} "${path}/$patch" | patch -g0 -p1 -E --no-backup-if-mismatch -d "${builddir}" -t -N $silent
>      if [ $? != 0 ] ; then
>          echo "Patch failed!  Please fix ${patch}!"
>          exit 1
> @@ -168,6 +168,3 @@ if [ "`find $builddir/ '(' -name '*.rej' -o -name '.*.rej' ')' -print`" ] ; then
>      echo "Aborting.  Reject files found."
>      exit 1
>  fi
> -
> -# Remove backup files
> -find $builddir/ '(' -name '*.orig' -o -name '.*.orig' ')' -exec rm -f {} \;
> -- 
> 2.20.1
> 
> _______________________________________________
> buildroot mailing list
> buildroot at busybox.net
> http://lists.busybox.net/mailman/listinfo/buildroot

-- 
.-----------------.--------------------.------------------.--------------------.
|  Yann E. MORIN  | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
| +33 662 376 056 | Software  Designer | \ / CAMPAIGN     |  ___               |
| +33 561 099 427 `------------.-------:  X  AGAINST      |  \e/  There is no  |
| http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL    |   v   conspiracy.  |
'------------------------------^-------^------------------^--------------------'

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

* [Buildroot] [PATCH v2] support/scripts/apply-patches.sh: do not blindly remove *.orig files
  2020-10-06 21:41 ` Yann E. MORIN
@ 2020-10-07  6:02   ` Peter Korsgaard
  0 siblings, 0 replies; 4+ messages in thread
From: Peter Korsgaard @ 2020-10-07  6:02 UTC (permalink / raw)
  To: buildroot

>>>>> "Yann" == Yann E MORIN <yann.morin.1998@free.fr> writes:

 > Peter, All,
 > On 2020-10-06 22:46 +0200, Peter Korsgaard spake thusly:
 >> apply-patches currently blindly removes *.orig / .*.orig files as GNU patch
 >> by default writes these as backup files when patches only apply with fuzz.
 >> 
 >> This is unfortunate as package sources may contain files ending in .orig as
 >> well, breaking the build.  Luckily GNU patch can be told to not write these
 >> backup files using the --no-backup-if-mismatch option, so used that instead
 >> of the .orig removal step.
 >> 
 >> --no-backup-if-mismatch is supported since GNU patch 2.3.8 (1997-06-17) and
 >> busybox patch if built with CONFIG_DESKTOP, but E.G.  isn't supported by the
 >> BSD patch, so add logic to dependencies.sh to error out if patch doesn't
 >> support the flag.
 >> 
 >> Signed-off-by: Peter Korsgaard <peter@korsgaard.com>

 > Applied to master, thanks.

 > However, does that make sense to also use --no-backup-if-mismatch in our
 > LIBTOOL_PATCH_HOOK ?

We don't do any cleanup after that, but yes - I indeed think it makes
sense to ensure patch don't write out ltmain.sh.orig files.

I'll send a patch.

-- 
Bye, Peter Korsgaard

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

* [Buildroot] [PATCH v2] support/scripts/apply-patches.sh: do not blindly remove *.orig files
  2020-10-06 20:46 [Buildroot] [PATCH v2] support/scripts/apply-patches.sh: do not blindly remove *.orig files Peter Korsgaard
  2020-10-06 21:41 ` Yann E. MORIN
@ 2020-10-10 20:44 ` Peter Korsgaard
  1 sibling, 0 replies; 4+ messages in thread
From: Peter Korsgaard @ 2020-10-10 20:44 UTC (permalink / raw)
  To: buildroot

>>>>> "Peter" == Peter Korsgaard <peter@korsgaard.com> writes:

 > apply-patches currently blindly removes *.orig / .*.orig files as GNU patch
 > by default writes these as backup files when patches only apply with fuzz.

 > This is unfortunate as package sources may contain files ending in .orig as
 > well, breaking the build.  Luckily GNU patch can be told to not write these
 > backup files using the --no-backup-if-mismatch option, so used that instead
 > of the .orig removal step.

 > --no-backup-if-mismatch is supported since GNU patch 2.3.8 (1997-06-17) and
 > busybox patch if built with CONFIG_DESKTOP, but E.G.  isn't supported by the
 > BSD patch, so add logic to dependencies.sh to error out if patch doesn't
 > support the flag.

 > Signed-off-by: Peter Korsgaard <peter@korsgaard.com>

Committed to 2020.02.x, 2020.05.x and 2020.08.x, thanks.

-- 
Bye, Peter Korsgaard

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

end of thread, other threads:[~2020-10-10 20:44 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-10-06 20:46 [Buildroot] [PATCH v2] support/scripts/apply-patches.sh: do not blindly remove *.orig files Peter Korsgaard
2020-10-06 21:41 ` Yann E. MORIN
2020-10-07  6:02   ` Peter Korsgaard
2020-10-10 20:44 ` Peter Korsgaard

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.