From: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
To: buildroot@busybox.net
Subject: [Buildroot] [RFCv1 01/11] Makefile: make $(BUILD_DIR)/.root rule idempotent
Date: Sun, 8 Sep 2013 15:30:34 +0200 [thread overview]
Message-ID: <20130908153034.10b46fdf@skate> (raw)
In-Reply-To: <CANxTyt4-UNps4mw2KRMbg9TGjj03e5eL5vczCJORuE4as4HwQg@mail.gmail.com>
Dear Danomi Manchego,
On Sun, 8 Sep 2013 09:13:30 -0400, Danomi Manchego wrote:
> > $(TARGET_DIR_WARNING_FILE)
> > - @ln -s lib $(TARGET_DIR)/$(LIB_SYMLINK)
> > - @mkdir -p $(TARGET_DIR)/usr
> > - @ln -s lib $(TARGET_DIR)/usr/$(LIB_SYMLINK)
> > + $(Q)if [ ! -L $(TARGET_DIR)/$(LIB_SYMLINK) ]; then \
> > + ln -s lib $(TARGET_DIR)/$(LIB_SYMLINK) ; \
> > + fi
> > + $(Q)mkdir -p $(TARGET_DIR)/usr
> > + $(Q)if [ ! -L $(TARGET_DIR)/usr/$(LIB_SYMLINK) ]; then \
> > + ln -s lib $(TARGET_DIR)/usr/$(LIB_SYMLINK) ; \
> > + fi
> > touch $@
> >
> > $(TARGET_DIR): $(BUILD_DIR)/.root
>
>
> Wouldn't just changing the "ln -s" to "ln -snf" be sufficient? After
> all, that's what is being done to make $(STAGING_DIR):
I think, when I tried it, it wasn't working: at the second invocation,
it creates a symbolic link *within* the lib directory. Example:
thomas at skate:/tmp$ mkdir target
thomas at skate:/tmp$ cd target/
thomas at skate:/tmp/target$ ls
thomas at skate:/tmp/target$ mkdir lib
thomas at skate:/tmp/target$ ls lib/
# lib/ is empty
thomas at skate:/tmp/target$ ln -sf lib lib32
thomas at skate:/tmp/target$ ls -l
total 0
drwxrwxr-x 2 thomas thomas 40 sept. 8 15:27 lib
lrwxrwxrwx 1 thomas thomas 3 sept. 8 15:28 lib32 -> lib
thomas at skate:/tmp/target$ ls lib/
# we have the symbolic link, lib/ is still empty. Now we will create
# the symbolic link again
thomas at skate:/tmp/target$ ln -sf lib lib32
thomas at skate:/tmp/target$ ls -l
total 0
drwxrwxr-x 2 thomas thomas 60 sept. 8 15:28 lib
lrwxrwxrwx 1 thomas thomas 3 sept. 8 15:28 lib32 -> lib
thomas at skate:/tmp/target$ ls -l lib/
total 0
lrwxrwxrwx 1 thomas thomas 3 sept. 8 15:28 lib -> lib
# A stale symbolic link was created in lib/
Best regards,
Thomas
--
Thomas Petazzoni, Free Electrons
Kernel, drivers, real-time and embedded Linux
development, consulting, training and support.
http://free-electrons.com
next prev parent reply other threads:[~2013-09-08 13:30 UTC|newest]
Thread overview: 49+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-09-05 21:27 [Buildroot] [RFCv1 00/11] Convert toolchain backends to packages to fix source/external-deps/legal-info Thomas Petazzoni
2013-09-05 21:27 ` [Buildroot] [RFCv1 01/11] Makefile: make $(BUILD_DIR)/.root rule idempotent Thomas Petazzoni
2013-09-08 12:06 ` Thomas De Schampheleire
2013-09-08 13:13 ` Danomi Manchego
2013-09-08 13:30 ` Thomas Petazzoni [this message]
2013-09-08 16:59 ` Danomi Manchego
2013-09-08 17:31 ` Thomas Petazzoni
2013-09-09 8:54 ` Luca Ceresoli
2013-09-09 21:38 ` Peter Korsgaard
2013-09-10 7:23 ` Thomas Petazzoni
2013-09-05 21:27 ` [Buildroot] [RFCv1 02/11] toolchain-crosstool-ng: remove support Thomas Petazzoni
2013-09-06 9:35 ` Yann E. MORIN
2013-09-06 15:53 ` Yann E. MORIN
2013-09-06 15:56 ` Thomas Petazzoni
2013-09-08 12:52 ` Thomas De Schampheleire
2013-09-13 16:10 ` Luca Ceresoli
2013-09-05 21:27 ` [Buildroot] [RFCv1 03/11] toolchain-external: make ext-tool.mk includable in all cases Thomas Petazzoni
2013-09-08 15:31 ` Thomas De Schampheleire
2013-09-05 21:27 ` [Buildroot] [RFCv1 04/11] toolchain: move helpers.mk into toolchain-external/ Thomas Petazzoni
2013-09-08 17:50 ` Thomas De Schampheleire
2013-09-13 16:07 ` Luca Ceresoli
2013-09-05 21:27 ` [Buildroot] [RFCv1 05/11] toolchain: introduce a virtual package Thomas Petazzoni
2013-09-13 16:24 ` Luca Ceresoli
2013-09-15 14:27 ` Thomas De Schampheleire
2013-09-05 21:27 ` [Buildroot] [RFCv1 06/11] toolchain-buildroot: convert to the package infrastructure Thomas Petazzoni
2013-09-15 14:30 ` Thomas De Schampheleire
2013-09-05 21:27 ` [Buildroot] [RFCv1 07/11] toolchain: intermediate .mk files no longer needed Thomas Petazzoni
2013-09-15 14:33 ` Thomas De Schampheleire
2013-09-05 21:27 ` [Buildroot] [RFCv1 08/11] package: package-based implementation of source, external-deps and legal-info Thomas Petazzoni
2013-09-15 19:29 ` Thomas De Schampheleire
2013-09-15 20:09 ` Thomas Petazzoni
2013-09-16 1:21 ` Thomas De Schampheleire
2013-09-05 21:27 ` [Buildroot] [RFCv1 09/11] package: add a <pkg>_SOURCE_ADDONS variable Thomas Petazzoni
2013-09-16 13:39 ` Thomas De Schampheleire
2013-09-16 18:31 ` Thomas Petazzoni
2013-09-16 19:20 ` Arnout Vandecappelle
2013-09-17 7:21 ` Thomas De Schampheleire
2013-09-27 14:27 ` Luca Ceresoli
2013-09-05 21:27 ` [Buildroot] [RFCv1 10/11] toolchain-external: convert to the package infrastructure Thomas Petazzoni
2013-09-16 13:29 ` Thomas De Schampheleire
2013-09-27 14:21 ` Luca Ceresoli
2013-09-27 14:24 ` Luca Ceresoli
2013-09-05 21:27 ` [Buildroot] [RFCv1 11/11] dependencies: remove useless targets Thomas Petazzoni
2013-09-06 8:28 ` [Buildroot] [RFCv1 00/11] Convert toolchain backends to packages to fix source/external-deps/legal-info Fabio Porcedda
2013-09-06 8:38 ` Thomas Petazzoni
2013-09-06 8:50 ` Fabio Porcedda
2013-09-06 12:37 ` Ryan Barnett
2013-09-06 8:57 ` Jérôme Pouiller
2013-09-06 9:05 ` Thomas Petazzoni
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=20130908153034.10b46fdf@skate \
--to=thomas.petazzoni@free-electrons.com \
--cc=buildroot@busybox.net \
/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 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.