mirror of git://git.musl-libc.org/musl
fix atomicity and other issues installing dynamic linker symlink
ln -sf is non-atomic; it unlinks the destination first. instead, make a temporary link and rename it into place. this commit also fixes some of the dependency tracking behavior for the link. depending on the directory it's to be installed in is not reasonable; it causes a new link to be attempted if the library directory has been modified, but does not attempt to make a new link just because libc has been updated. instead, depend on the target to be linked to. this will ensure that, if prefix has changed but syslibdir has not, the link will be updated to point to the new prefix.
This commit is contained in:
parent
63893d3ff1
commit
82fa6b43b3
8
Makefile
8
Makefile
|
@ -155,11 +155,9 @@ $(DESTDIR)$(includedir)/bits/%: arch/$(ARCH)/bits/%
|
|||
$(DESTDIR)$(includedir)/%: include/%
|
||||
install -D -m 644 $< $@
|
||||
|
||||
$(DESTDIR)$(LDSO_PATHNAME): $(DESTDIR)$(syslibdir)
|
||||
ln -sf $(libdir)/libc.so $@ || true
|
||||
|
||||
$(DESTDIR)$(syslibdir):
|
||||
install -d -m 755 $(DESTDIR)$(syslibdir)
|
||||
$(DESTDIR)$(LDSO_PATHNAME): $(DESTDIR)$(libdir)/libc.so
|
||||
test -d $(DESTDIR)$(syslibdir) || install -d -m 755 $(DESTDIR)$(syslibdir) || true
|
||||
{ ln -sf $(libdir)/libc.so $@.tmp.$$$$ && mv -f $@.tmp.$$$$ $@ ; } || true
|
||||
|
||||
install-libs: $(ALL_LIBS:lib/%=$(DESTDIR)$(libdir)/%) $(if $(SHARED_LIBS),$(DESTDIR)$(LDSO_PATHNAME),)
|
||||
|
||||
|
|
Loading…
Reference in New Issue