Buildroot Archive on lore.kernel.org
 help / color / mirror / Atom feed
From: "Yann E. MORIN" <yann.morin.1998@free.fr>
To: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
Cc: Charles Hardin <ckhardin@gmail.com>, buildroot@buildroot.org
Subject: Re: [Buildroot] [PATCH 1/1] package/dhcp: fix dhcp symlink in target/var/lib/dhcp
Date: Mon, 10 Jul 2023 21:49:02 +0200	[thread overview]
Message-ID: <20230710194902.GA188780@scaer> (raw)
In-Reply-To: <20230710204704.6eba9c3f@windsurf>

Thomas, Chrles, Al,

On 2023-07-10 20:47 +0200, Thomas Petazzoni spake thusly:
> +Yann in Cc. I will ask a few questions below, but honestly I'm not
> super familiar with this part of the code base, so I might be asking
> some stupid questions.

There are no stupid questions, only stupid answers (which is customary
for me to provide).

> On Tue, 20 Jun 2023 10:07:26 -0700
> Charles Hardin <ckhardin@gmail.com> wrote:
> > the var directories to the usr/share/factory and the run a command
> > like this:
> > 
> >    mv $(TARGET_DIR)/var $(TARGET_DIR)/usr/share/factory/var
> >    mkdir -p $(TARGET_DIR)/var
> >    for i in $(TARGET_DIR)/usr/share/factory/var/* \
> >             $(TARGET_DIR)/usr/share/factory/var/lib/* \
> >             $(TARGET_DIR)/usr/share/factory/var/lib/systemd/*; do
> > 
> > If the symlink is to the /tmp directory the glob compare on the
> > dhcp link will evaluate and result in an incorrect entry being
> > created in the resulting tmpfs mount on var.
> I'm not able to parse your explanation here. Which glob compare? Which
> evaluation?
> > 
> >     L+! /var/lib/dhcp - - - - ../usr/share/factory//var/lib/dhcp
> Not obvious to me what is invalid in this entry, but admittedly I have
> not done a test build/test run to investigate more.

This line is indeed incorrect: it means to create /var/lib/dhcp as a
symlink to ../usr/share/factory//var/lib/dhcp, i.e. to
/var/lib/../usr/share/factory//var/lib/dhcp, which in turn is made
cannonical as /var/usr/share/factory//var/lib/dhcp, which indeed does
not exist.

> Perhaps you can give a little bit more details to make the issue
> obvious to the reviewer, and therefore help your patch to be merged?

I think a better solution is to actually fix the factory:

   41 »   for i in $(TARGET_DIR)/usr/share/factory/var/* \
   42 »   »    $(TARGET_DIR)/usr/share/factory/var/lib/* \
   43 »   »    $(TARGET_DIR)/usr/share/factory/var/lib/systemd/*; do \
   44 »   »   [ -e "$${i}" ] || continue; \
   45 »   »   j="$${i#$(TARGET_DIR)/usr/share/factory}"; \
   46 »   »   if [ -L "$${i}" ]; then \
   47 »   »   »   printf "L+! %s - - - - %s\n" \
   48 »   »   »   »   "$${j}" "../usr/share/factory/$${j}" \

The ../ here should be replaced with as-many ../ as the fiel is deep
relative to /usr/share/factory/var/

i.e. probably something (untested) like:

       for i in $(TARGET_DIR)/usr/share/factory/var/* \
            $(TARGET_DIR)/usr/share/factory/var/lib/* \
            $(TARGET_DIR)/usr/share/factory/var/lib/systemd/*; do \
           [ -e "$${i}" ] || continue; \
           j="$${i#$(TARGET_DIR)/usr/share/factory}"; \
           if [ -L "$${i}" ]; then \
               d="$$(sed -r -e 's,([^./]+/),../,g' <<<$${j%/*}/)" \
               printf "L+! %s - - - - %s\n" \
                   "$${j}" "${d}/usr/share/factory/$${j}" \

This way, that should fix all absolute synlinks that are in an arbitrary
depth in the factory.

Regards,
Yann E. MORIN.

> Thanks!
> 
> Thomas
> -- 
> Thomas Petazzoni, co-owner and CEO, Bootlin
> Embedded Linux and Kernel engineering and training
> https://bootlin.com

-- 
.-----------------.--------------------.------------------.--------------------.
|  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.  |
'------------------------------^-------^------------------^--------------------'
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot

  reply	other threads:[~2023-07-10 19:49 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-06-20 17:07 [Buildroot] [PATCH 1/1] package/dhcp: fix dhcp symlink in target/var/lib/dhcp Charles Hardin
2023-07-10 18:47 ` Thomas Petazzoni via buildroot
2023-07-10 19:49   ` Yann E. MORIN [this message]
2023-07-10 19:17 ` Thomas Petazzoni via buildroot

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20230710194902.GA188780@scaer \
    --to=yann.morin.1998@free.fr \
    --cc=buildroot@buildroot.org \
    --cc=ckhardin@gmail.com \
    --cc=thomas.petazzoni@bootlin.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox