[Buildroot] [PATCH] systemd: Fix relative ln add-wants wrapper

Yann E. MORIN yann.morin.1998 at free.fr
Tue Feb 27 21:01:46 UTC 2018


Trent, All,

On 2018-02-23 12:18 -0800, Trent Piepho spake thusly:
> The patch to allow systemd to work with old "ln" versions that don't
> support --relative didn't work properly in the the meson-add-wants.sh
> script.
> 
> This results in all the links in systemd's "*.wants" directories being
> broken, e.g.
> /usr/lib/systemd/system/multi-user.target.wants/getty.target ->
>   ../../../../usr/lib/systemd/system/getty.target
> There is one too few ".." in that relative link.
> 
> The problem is that the script is called with the link name being either a
> file or an existing directory.  In the latter case, ln creates the link in
> the directory using the name of the target.  This means the link is one
> level deeper than the relative link making code thinks.
> 
> The solution used is to only dirname the link, moving up a level, if it's
> not a directory, to mimic ln's logic in how it creates links.
> 
> Signed-off-by: Trent Piepho <tpiepho at impinj.com>

Tested-by: "Yann E. MORIN" <yann.morin.1998 at free.fr>

Regards,
Yann E. MORIN.

> ---
>  .../0002-install-don-t-use-ln-relative.patch       | 22 +++++++++++++---------
>  1 file changed, 13 insertions(+), 9 deletions(-)
> 
> diff --git a/package/systemd/0002-install-don-t-use-ln-relative.patch b/package/systemd/0002-install-don-t-use-ln-relative.patch
> index 5f34b56969..61a139e2a2 100644
> --- a/package/systemd/0002-install-don-t-use-ln-relative.patch
> +++ b/package/systemd/0002-install-don-t-use-ln-relative.patch
> @@ -1,4 +1,4 @@
> -From ecf3b9baaebda1d9182c22dc504e32ed275d4abb Mon Sep 17 00:00:00 2001
> +From 17560d52e9ec0afebbfe31e694870c6433b36f60 Mon Sep 17 00:00:00 2001
>  From: Adam Duskett <Adamduskett at outlook.com>
>  Date: Sun, 31 Dec 2017 12:46:04 -0500
>  Subject: [PATCH] install: don't use ln --relative
> @@ -21,17 +21,20 @@ Signed-off-by: "Yann E. MORIN" <yann.morin.1998 at free.fr>
>  [aduskett at gmail.com: Added meson.build section and dirname wrapper in add-wants]
>  [aduskett at gmail.com: Update for systemd v237]
>  Signed-off-by: Adam Duskett <Adamduskett at outlook.com>
> +[tpiepho at impinj.com: Fix add-wants wrapper]
> +Signed-off-by: Trent Piepho <tpiepho at impinj.com>
>  ---
>   meson.build                 | 2 +-
>   tools/meson-make-symlink.sh | 3 ++-
> - units/meson-add-wants.sh    | 5 +++--
> - 3 files changed, 6 insertions(+), 4 deletions(-)
> + units/meson-add-wants.sh    | 6 ++++--
> + 3 files changed, 7 insertions(+), 4 deletions(-)
>  
>  diff --git a/meson.build b/meson.build
> -index ddc061c..614201a 100644
> +index d4af95a44..d75f2b34c 100644
>  --- a/meson.build
>  +++ b/meson.build
> -@@ -572,6 +572,6 @@ conf.set_quoted('TELINIT', get_option('telinit-path'))
> +@@ -586,7 +586,7 @@ endforeach
> + conf.set_quoted('TELINIT', get_option('telinit-path'))
>   
>   if run_command('ln', '--relative', '--help').returncode() != 0
>  -        error('ln does not support --relative')
> @@ -40,7 +43,7 @@ index ddc061c..614201a 100644
>   
>   ############################################################
>  diff --git a/tools/meson-make-symlink.sh b/tools/meson-make-symlink.sh
> -index 47a5e70..e9002ad 100755
> +index 501cd43d4..25e7f89fd 100755
>  --- a/tools/meson-make-symlink.sh
>  +++ b/tools/meson-make-symlink.sh
>  @@ -8,5 +8,6 @@ mkdir -vp "$(dirname "${DESTDIR:-}$2")"
> @@ -52,7 +55,7 @@ index 47a5e70..e9002ad 100755
>  +        ln -vfs -T "${dds}$1" "${DESTDIR:-}$2"
>   fi
>  diff --git a/units/meson-add-wants.sh b/units/meson-add-wants.sh
> -index dfd287e..8c08283 100755
> +index 70f7172ae..bb8155075 100755
>  --- a/units/meson-add-wants.sh
>  +++ b/units/meson-add-wants.sh
>  @@ -14,7 +14,7 @@ case "$target" in
> @@ -64,12 +67,13 @@ index dfd287e..8c08283 100755
>   
>   case "$target" in
>           */)
> -@@ -25,4 +25,5 @@ case "$target" in
> +@@ -25,4 +25,6 @@ case "$target" in
>                   ;;
>   esac
>   
>  -ln -vfs --relative "$unitpath" "$dir"
> -+dds="$( dirname `printf "%s" "${dir#${DESTDIR:-}}" |sed -r -e 's:/+[^/]+:../:g; s:/$::'` )"
> ++[ ! -d "${dir}" ] && linkdir=`dirname "${dir}"` || linkdir="${dir}"
> ++dds="$(printf "%s" "${linkdir#${DESTDIR:-}}" |sed -r -e 's:/+[^/]+:../:g; s:/$::')"
>  +ln -vfs "$dds$unitpath" "$dir"
>  -- 
>  2.14.3
> -- 
> 2.14.3
> 
> _______________________________________________
> 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 223 225 172 `------------.-------:  X  AGAINST      |  \e/  There is no  |
| http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL    |   v   conspiracy.  |
'------------------------------^-------^------------------^--------------------'



More information about the buildroot mailing list