APPLIED[M,L,J,F]: [SRU][N,U][M,L,J,F][PATCH] UBUNTU: [Debian] autoreconstruct - Do not generate chmod -x for deleted files
Roxana Nicolescu
roxana.nicolescu at canonical.com
Thu Jan 4 19:23:52 UTC 2024
On 04/12/2023 16:15, Roxana Nicolescu wrote:
> BugLink: https://bugs.launchpad.net/bugs/2045562
>
> Debian source format 1.0 cannot remove files, create symlinks and change
> permission in the .diff.gz tarball. Therefore any changes in these 3
> categories cannot be represented without any tricks. To solve this,
> the `reconstruct` script is used every time we build the source package.
> The script is generated by `gen-auto-reconstruct` script during `cranky
> close`. It checks if there has been any changes in the 3 categories
> mentioned above between the upstream version (i.e v6.5) and the current one.
> The problem with the script is that in case a file A was removed since the
> upstream version was released, the `reconstruct` script will contains
> these commands in this exact order:
> rm -f A
> chmod -x A
> The second command will fail because file A does not exist anymore.
> This is solved by generating the `chmod +/-x` commands before `rm`.
> Which results in:
> chmod -x A
> rm -f A
> But because the reconstruct script is used during `clean` rule which is
> triggered pretty much during every cranky step which is run in the
> source repo, the first command will always file because file A is not
> present anymore in the tree. To solved this, any `chmod` change is added
> only if the file has not been deleted. Therefore if file A has been
> deleted, the `reconstruct` script will contain only this:
> rm -f A
>
> Signed-off-by: Roxana Nicolescu <roxana.nicolescu at canonical.com>
> ---
> debian/scripts/misc/gen-auto-reconstruct | 18 +++++++++---------
> 1 file changed, 9 insertions(+), 9 deletions(-)
>
> diff --git a/debian/scripts/misc/gen-auto-reconstruct b/debian/scripts/misc/gen-auto-reconstruct
> index a50ceb619f17..87a6ff6ef0f0 100755
> --- a/debian/scripts/misc/gen-auto-reconstruct
> +++ b/debian/scripts/misc/gen-auto-reconstruct
> @@ -34,14 +34,6 @@ fi
> echo "[ ! -L '$name' ] && ln -sf '$link' '$name'"
> done
>
> - # Identify all removed files since the proffered tag.
> - echo "# Remove any files deleted from the orig."
> - git diff "$tag.." --raw --no-renames | awk '(/^:/ && $5 == "D") { print $NF }' | \
> - while read name
> - do
> - echo "rm -f '$name'"
> - done
> -
> # Identify files with execute permissions added since the proffered tag.
> git diff "$tag.." --raw --no-renames | awk -F '[: \t]' '{print $2, $3, $NF }' | \
> while IFS=" " read old new name
> @@ -53,12 +45,20 @@ fi
> added=$(( new & 0111 ))
> if [ "$added" -ne 0 ]; then
> echo "chmod +x '$name'"
> - else
> + elif [ "$new" -ne 0 ]; then
> echo "chmod -x '$name'"
> fi
> fi
> done
>
> + # Identify all removed files since the proffered tag.
> + echo "# Remove any files deleted from the orig."
> + git diff "$tag.." --raw --no-renames | awk '(/^:/ && $5 == "D") { print $NF }' | \
> + while read name
> + do
> + echo "rm -f '$name'"
> + done
> +
> # All done, make sure this does not complete in error.
> echo "exit 0"
> ) >"$reconstruct"
Applied to mantic, lunar, jammy, focal master-next branch with the
adjustements suggested by Dimitri. Thanks!
More information about the kernel-team
mailing list