* [Buildroot] [PATCH 1/1] package/dhcp: fix dhcp symlink in target/var/lib/dhcp
@ 2023-06-20 17:07 Charles Hardin
2023-07-10 18:47 ` Thomas Petazzoni via buildroot
2023-07-10 19:17 ` Thomas Petazzoni via buildroot
0 siblings, 2 replies; 4+ messages in thread
From: Charles Hardin @ 2023-06-20 17:07 UTC (permalink / raw)
To: buildroot; +Cc: Charles Hardin
In a readonly fs configuration the skeleton-init-fs will move
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.
L+! /var/lib/dhcp - - - - ../usr/share/factory//var/lib/dhcp
So, make the link relative and the result of the configuration
doesn't get impacted.
Signed-off-by: Charles Hardin <ckhardin@gmail.com>
---
package/dhcp/dhcp.mk | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/package/dhcp/dhcp.mk b/package/dhcp/dhcp.mk
index 7be40191c8..edbc6a0d2a 100644
--- a/package/dhcp/dhcp.mk
+++ b/package/dhcp/dhcp.mk
@@ -103,7 +103,7 @@ define DHCP_INSTALL_CTL_LIBS
endef
define DHCP_INSTALL_SERVER
mkdir -p $(TARGET_DIR)/var/lib
- (cd $(TARGET_DIR)/var/lib; ln -snf /tmp dhcp)
+ (cd $(TARGET_DIR)/var/lib; ln -snf ../../tmp dhcp)
$(MAKE) -C $(@D)/server DESTDIR=$(TARGET_DIR) install-sbinPROGRAMS
$(INSTALL) -m 0644 -D package/dhcp/dhcpd.conf \
$(TARGET_DIR)/etc/dhcp/dhcpd.conf
@@ -113,7 +113,7 @@ endif
ifeq ($(BR2_PACKAGE_DHCP_RELAY),y)
define DHCP_INSTALL_RELAY
mkdir -p $(TARGET_DIR)/var/lib
- (cd $(TARGET_DIR)/var/lib; ln -snf /tmp dhcp)
+ (cd $(TARGET_DIR)/var/lib; ln -snf ../../tmp dhcp)
$(MAKE) -C $(@D)/relay DESTDIR=$(TARGET_DIR) install-sbinPROGRAMS
endef
endif
@@ -121,7 +121,7 @@ endif
ifeq ($(BR2_PACKAGE_DHCP_CLIENT),y)
define DHCP_INSTALL_CLIENT
mkdir -p $(TARGET_DIR)/var/lib
- (cd $(TARGET_DIR)/var/lib; ln -snf /tmp dhcp)
+ (cd $(TARGET_DIR)/var/lib; ln -snf ../../tmp dhcp)
$(MAKE) -C $(@D)/client DESTDIR=$(TARGET_DIR) sbindir=/sbin \
install-sbinPROGRAMS
$(INSTALL) -m 0644 -D package/dhcp/dhclient.conf \
--
2.39.2 (Apple Git-143)
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
^ permalink raw reply related [flat|nested] 4+ messages in thread
* Re: [Buildroot] [PATCH 1/1] package/dhcp: fix dhcp symlink in target/var/lib/dhcp
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
2023-07-10 19:17 ` Thomas Petazzoni via buildroot
1 sibling, 1 reply; 4+ messages in thread
From: Thomas Petazzoni via buildroot @ 2023-07-10 18:47 UTC (permalink / raw)
To: Charles Hardin; +Cc: Yann E. MORIN, buildroot
Hello Charles,
+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.
On Tue, 20 Jun 2023 10:07:26 -0700
Charles Hardin <ckhardin@gmail.com> wrote:
> In a readonly fs configuration the skeleton-init-fs will move
I supposed you meant skeleton-init-systemd. Indeed, there's nothing
named skeleton-init-fs in Buildroot as far as I know.
> 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.
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?
Thanks!
Thomas
--
Thomas Petazzoni, co-owner and CEO, Bootlin
Embedded Linux and Kernel engineering and training
https://bootlin.com
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [Buildroot] [PATCH 1/1] package/dhcp: fix dhcp symlink in target/var/lib/dhcp
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:17 ` Thomas Petazzoni via buildroot
1 sibling, 0 replies; 4+ messages in thread
From: Thomas Petazzoni via buildroot @ 2023-07-10 19:17 UTC (permalink / raw)
To: Charles Hardin; +Cc: Yann E. MORIN, buildroot
Hello Charles,
+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.
On Tue, 20 Jun 2023 10:07:26 -0700
Charles Hardin <ckhardin@gmail.com> wrote:
> In a readonly fs configuration the skeleton-init-fs will move
I supposed you meant skeleton-init-systemd. Indeed, there's nothing
named skeleton-init-fs in Buildroot as far as I know.
> 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.
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?
Thanks!
Thomas
--
Thomas Petazzoni, co-owner and CEO, Bootlin
Embedded Linux and Kernel engineering and training
https://bootlin.com
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [Buildroot] [PATCH 1/1] package/dhcp: fix dhcp symlink in target/var/lib/dhcp
2023-07-10 18:47 ` Thomas Petazzoni via buildroot
@ 2023-07-10 19:49 ` Yann E. MORIN
0 siblings, 0 replies; 4+ messages in thread
From: Yann E. MORIN @ 2023-07-10 19:49 UTC (permalink / raw)
To: Thomas Petazzoni; +Cc: Charles Hardin, buildroot
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
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2023-07-10 19:49 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
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
2023-07-10 19:17 ` Thomas Petazzoni via buildroot
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.