[Spread-users] symlink creation by "install" target still problematic
Daniel Rall
dlr at finemaltcoding.com
Tue Oct 1 18:12:30 EDT 2002
Though -f is a valid option to ln on Solaris, its semantics seem to
differ from Linux. The Solaris man page says that -f mean "don't
prompt", while on Linux it seems to mean something along the lines of
"force".
Solaris 5.8:
dlr at nagoya:/tmp$ touch file
dlr at nagoya:/tmp$ ln -s file symlink # initial symlink
dlr at nagoya:/tmp$ ln -s file symlink # symlink exists, error
ln: cannot create symlink: File exists
dlr at nagoya:/tmp$ ln -fs file symlink # symlink exists and won't be
ln: cannot create symlink: File exists # overwritten
RedHat Linux 7.3:
dlr at despot:tmp$ touch file
dlr at despot:tmp$ ln -s file symlink # initial symlink
dlr at despot:tmp$ ln -s file symlink # symlink exists, error
ln: `symlink': File exists
dlr at despot:tmp$ ln -fs file symlink # symlink existed, but overwritten
I'm guessing its more probably portable to `rm -f` any existing
symlink before creating it.
jonathan at spread.org writes:
...
> Change softlinks of libraries to force the link (-f) so it overwrites existing links.
...
> Index: Makefile.in
> ===================================================================
> RCS file: /storage/cvsroot/spread/daemon/Makefile.in,v
> retrieving revision 1.4
> retrieving revision 1.5
> diff -u -r1.4 -r1.5
> --- Makefile.in 27 Sep 2002 22:38:59 -0000 1.4
> +++ Makefile.in 1 Oct 2002 21:02:14 -0000 1.5
> @@ -5,6 +5,7 @@
> bindir=@bindir@
> sbindir=@sbindir@
> libdir=@libdir@
> +includedir=@includedir@
> mandir=@mandir@
> mansubdir=@mansubdir@
> sysconfdir=@sysconfdir@
> @@ -94,8 +95,8 @@
> $(SHCC) $(SHCFLAGS) $(SHCPPFLAGS) -D_REENTRANT -c $< -o $*.tlo
>
> parser:
> - $(YACC) -d config_parse.y
> - $(LEX) config_gram.l
> + $(YACC) -d $(srcdir)/config_parse.y
> + $(LEX) $(srcdir)/config_gram.l
>
> #Disabled now because of timestamp errors causing extra regeneration
> #To build parser run "make parser" after ./configure is run.
> @@ -121,14 +122,14 @@
>
> install-libspread.dylib: libspread.dylib
> $(INSTALL) -m 0755 libspread.$(LIBVERSION).dylib $(DESTDIR)$(libdir)/libspread.$(LIBVERSION).dylib
> - (cd $(DESTDIR)$(libdir); $(SOFTLINK) libspread.$(LIBVERSION).dylib libspread.dylib)
> + (cd $(DESTDIR)$(libdir); $(SOFTLINK) -f libspread.$(LIBVERSION).dylib libspread.dylib)
>
> libspread.so: $(LIBSP_SHOBJS)
> $(SHLD) -o $@ $(LIBSP_SHOBJS) $(SHLDFLAGS) $(SHLIBS)
>
> install-libspread.so: libspread.so
> $(INSTALL) -m 0755 libspread.so $(DESTDIR)$(libdir)/libspread.so.$(LIBVERSION)
> - (cd $(DESTDIR)$(libdir); $(SOFTLINK) libspread.so.$(LIBVERSION) libspread.so)
> + (cd $(DESTDIR)$(libdir); $(SOFTLINK) -f libspread.so.$(LIBVERSION) libspread.so)
>
> libtspread.a: $(LIBTSP_OBJS)
> $(AR) rv $@ $(LIBTSP_OBJS)
> @@ -140,14 +141,14 @@
>
> install-libtspread.dylib: libtspread.dylib
> $(INSTALL) -m 0755 libtspread.$(LIBVERSION).dylib $(DESTDIR)$(libdir)/libtspread.$(LIBVERSION).dylib
> - (cd $(DESTDIR)$(libdir); $(SOFTLINK) libtspread.$(LIBVERSION).dylib libtspread.dylib)
> + (cd $(DESTDIR)$(libdir); $(SOFTLINK) -f libtspread.$(LIBVERSION).dylib libtspread.dylib)
>
> libtspread.so: $(LIBTSP_SHOBJS)
> $(SHLD) -o $@ $(LIBTSP_SHOBJS) $(SHLDFLAGS) $(SHLIBS) $(THLIBS)
>
> install-libtspread.so: libtspread.so
> $(INSTALL) -m 0755 libtspread.so $(DESTDIR)$(libdir)/libtspread.so.$(LIBVERSION)
> - (cd $(DESTDIR)$(libdir); $(SOFTLINK) libtspread.so.$(LIBVERSION) libtspread.so)
> + (cd $(DESTDIR)$(libdir); $(SOFTLINK) -f libtspread.so.$(LIBVERSION) libtspread.so)
>
> spread$(EXEEXT): $(SPREADOBJS)
> $(LD) -o $@ $(SPREADOBJS) $(LDFLAGS) $(LIBS)
> @@ -215,6 +216,7 @@
> $(buildtoolsdir)/mkinstalldirs $(DESTDIR)$(mandir)/$(mansubdir)1
> $(buildtoolsdir)/mkinstalldirs $(DESTDIR)$(mandir)/$(mansubdir)3
> $(buildtoolsdir)/mkinstalldirs $(DESTDIR)$(libdir)
> + $(buildtoolsdir)/mkinstalldirs $(DESTDIR)$(includedir)
> $(INSTALL) -m 0755 -s spmonitor$(EXEEXT) $(DESTDIR)$(bindir)/spmonitor$(EXEEXT)
> $(INSTALL) -m 0755 -s spuser$(EXEEXT) $(DESTDIR)$(bindir)/spuser$(EXEEXT)
> $(INSTALL) -m 0755 -s sptuser$(EXEEXT) $(DESTDIR)$(bindir)/sptuser$(EXEEXT)
> @@ -222,6 +224,9 @@
> $(INSTALL) -m 0755 -s spread$(EXEEXT) $(DESTDIR)$(sbindir)/spread$(EXEEXT)
> $(INSTALL) -m 644 libspread.a $(DESTDIR)$(libdir)/libspread.a
> $(INSTALL) -m 644 libtspread.a $(DESTDIR)$(libdir)/libtspread.a
> + $(INSTALL) -m 644 $(srcdir)/sp.h $(DESTDIR)$(includedir)/sp.h
> + $(INSTALL) -m 644 $(srcdir)/sp_func.h $(DESTDIR)$(includedir)/sp_func.h
> + $(INSTALL) -m 644 $(srcdir)/sp_events.h $(DESTDIR)$(includedir)/sp_events.h
> $(INSTALL) -m 644 docs/spread.1.out $(DESTDIR)$(mandir)/$(mansubdir)1/spread.1
> $(INSTALL) -m 644 docs/spuser.1.out $(DESTDIR)$(mandir)/$(mansubdir)1/spuser.1
> $(INSTALL) -m 644 docs/sptuser.1.out $(DESTDIR)$(mandir)/$(mansubdir)1/sptuser.1
> @@ -250,6 +255,7 @@
> -rmdir $(DESTDIR)$(mandir)/$(mansubdir)3
> -rmdir $(DESTDIR)$(mandir)
> -rmdir $(DESTDIR)$(libdir)
> + -rmdir $(DESTDIR)$(includedir)
>
> uninstall:
> -rm -f $(DESTDIR)$(bindir)/spuser$(EXEEXT)
> @@ -259,6 +265,9 @@
> -rm -f $(DESTDIR)$(sbindir)/spread$(EXEEXT)
> -rm -f $(DESTDIR)$(libdir)/libspread.a
> -rm -f $(DESTDIR)$(libdir)/libtspread.a
> + -rm -f $(DESTDIR)$(includedir)/sp.h
> + -rm -f $(DESTDIR)$(includedir)/sp_func.h
> + -rm -f $(DESTDIR)$(includedir)/sp_events.h
> -rm -f $(DESTDIR)$(mandir)/$(mansubdir)3/SP_*.3
> -rm -f $(DESTDIR)$(mandir)/$(mansubdir)3/libsp.3
> -rm -f $(DESTDIR)$(mandir)/$(mansubdir)1/spread.1
--
Daniel Rall <dlr at finemaltcoding.com>
More information about the Spread-users
mailing list