Import version 1.3.3
This commit is contained in:
parent
3fff521fa1
commit
502cee75a5
21 changed files with 5533 additions and 1996 deletions
8
AUTHORS
8
AUTHORS
|
@ -5,3 +5,11 @@ Contributions from Gord Matzigkeit <gord@enci.ucalgary.ca>.
|
|||
|
||||
John Bazik wrote `fastcwd', the Perl subroutine for computing the
|
||||
current working directory.
|
||||
|
||||
Charles Briscoe-Smith <cpbs@debian.org> wrote the fix to prevent
|
||||
stow -D / stow -R removing initially-empty directories.
|
||||
|
||||
Adam Lackorzynski <al10@inf.tu-dresden.de> wrote the fix to prevente
|
||||
the generation of wrong links if there are links in the stow directory.
|
||||
|
||||
Stow is currently maintained by Guillaume Morin <gmorin@gnu.org>.
|
||||
|
|
32
ChangeLog
32
ChangeLog
|
@ -1,3 +1,35 @@
|
|||
Sun Jan 06 12:18:50 2002 Guillaume Morin <gmorin@gnu.org>
|
||||
|
||||
* Makefile.am: use EXTRA_DIST to include manpage in distribution
|
||||
|
||||
Wed Jan 02 21:33:41 2002 Guillaume Morin <gmorin@gnu.org>
|
||||
|
||||
* stow.in: Stow now only warns the user if a subdirectory
|
||||
is unreadable during unstowing.
|
||||
|
||||
Wed Jan 02 20:58:05 2002 Guillaume Morin <gmorin@gnu.org>
|
||||
|
||||
* stow.in: fixed JoinPaths so that subdirs called "0" are
|
||||
correctly pushed. Thanks a lot to Gergely Nagy
|
||||
<algernon@bonehunter.rulez.org> who patiently helped me to chase
|
||||
this bug.
|
||||
|
||||
Sun Dec 30 21:58:25 2001 Guillaume Morin <gmorin@gnu.org>
|
||||
|
||||
* stow.in: fixed a bug introduced by previous changes when
|
||||
Target argument was relative. (thanks to Luca Filipozzi
|
||||
<lfilipoz@debian.org> for pointing this out)
|
||||
|
||||
Sun Dec 30 18:23:25 2001 Guillaume Morin <gmorin@gnu.org>
|
||||
|
||||
* stow.in: now requires Perl 5. Use POSIX getcwd instead of broken
|
||||
fastcwd. Fixed bug when CommonParent is /. Stow does not remove
|
||||
initially empty directories anymore.
|
||||
|
||||
Sun Dec 30 18:07:51 2001 Guillaume Morin <gmorin@gnu.org>
|
||||
|
||||
* configure.in: automake fixes (fp_ -> AC, +AC_INIT_AUTOMAKE)
|
||||
|
||||
Fri Oct 11 22:09:45 1996 Bob Glickstein <bobg@hiro.zanshin.com>
|
||||
|
||||
* stow.html, configure.in: Version 1.3.2.
|
||||
|
|
4
INSTALL
4
INSTALL
|
@ -1,8 +1,8 @@
|
|||
Basic Installation
|
||||
==================
|
||||
|
||||
Stow is a Perl script. You must have Perl 4 or Perl 5 in order for it
|
||||
to run.
|
||||
Stow is a Perl script. You must have Perl 5.005 or later in order for
|
||||
it to run.
|
||||
|
||||
The steps in building stow are:
|
||||
|
||||
|
|
|
@ -4,6 +4,8 @@ AUTOMAKE_OPTIONS = dist-shar
|
|||
|
||||
bin_SCRIPTS = stow
|
||||
info_TEXINFOS = stow.texi
|
||||
man_MANS = stow.8
|
||||
EXTRA_DIST = $(man_MANS)
|
||||
|
||||
CLEANFILES = stow manual.html manual.texi
|
||||
|
||||
|
|
516
Makefile.in
516
Makefile.in
|
@ -1,11 +1,19 @@
|
|||
# Makefile.in generated automatically by automake 1.0 from Makefile.am
|
||||
# Makefile.in generated automatically by automake 1.5 from Makefile.am.
|
||||
|
||||
# Copyright (C) 1994, 1995, 1996 Free Software Foundation, Inc.
|
||||
# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001
|
||||
# Free Software Foundation, Inc.
|
||||
# This Makefile.in is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy, distribute and modify it.
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
|
||||
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
||||
# PARTICULAR PURPOSE.
|
||||
|
||||
SHELL = /bin/sh
|
||||
@SET_MAKE@
|
||||
|
||||
SHELL = @SHELL@
|
||||
|
||||
srcdir = @srcdir@
|
||||
top_srcdir = @top_srcdir@
|
||||
|
@ -25,241 +33,420 @@ infodir = @infodir@
|
|||
mandir = @mandir@
|
||||
includedir = @includedir@
|
||||
oldincludedir = /usr/include
|
||||
|
||||
pkgdatadir = $(datadir)/@PACKAGE@
|
||||
pkglibdir = $(libdir)/@PACKAGE@
|
||||
pkgincludedir = $(includedir)/@PACKAGE@
|
||||
|
||||
top_builddir = .
|
||||
|
||||
ACLOCAL = @ACLOCAL@
|
||||
AUTOCONF = @AUTOCONF@
|
||||
AUTOMAKE = @AUTOMAKE@
|
||||
AUTOHEADER = @AUTOHEADER@
|
||||
|
||||
INSTALL = @INSTALL@
|
||||
INSTALL_PROGRAM = @INSTALL_PROGRAM@
|
||||
INSTALL_DATA = @INSTALL_DATA@
|
||||
INSTALL_SCRIPT = @INSTALL_SCRIPT@
|
||||
INSTALL_HEADER = $(INSTALL_DATA)
|
||||
transform = @program_transform_name@
|
||||
NORMAL_INSTALL = :
|
||||
PRE_INSTALL = :
|
||||
POST_INSTALL = :
|
||||
NORMAL_UNINSTALL = :
|
||||
PRE_UNINSTALL = :
|
||||
POST_UNINSTALL = :
|
||||
AMTAR = @AMTAR@
|
||||
AWK = @AWK@
|
||||
DEPDIR = @DEPDIR@
|
||||
EXEEXT = @EXEEXT@
|
||||
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
|
||||
OBJEXT = @OBJEXT@
|
||||
PACKAGE = @PACKAGE@
|
||||
PERL = @PERL@
|
||||
VERSION = @VERSION@
|
||||
am__include = @am__include@
|
||||
am__quote = @am__quote@
|
||||
install_sh = @install_sh@
|
||||
|
||||
AUTOMAKE_OPTIONS = dist-shar
|
||||
|
||||
bin_SCRIPTS = stow
|
||||
info_TEXINFOS = stow.texi
|
||||
man_MANS = stow.8
|
||||
EXTRA_DIST = $(man_MANS)
|
||||
|
||||
CLEANFILES = stow manual.html manual.texi
|
||||
ACLOCAL = aclocal.m4
|
||||
mkinstalldirs = $(top_srcdir)/mkinstalldirs
|
||||
subdir = .
|
||||
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
||||
mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
|
||||
CONFIG_CLEAN_FILES = stow
|
||||
SCRIPTS = $(bin_SCRIPTS)
|
||||
|
||||
|
||||
MAKEINFO = makeinfo
|
||||
TEXI2DVI = texi2dvi
|
||||
INFOS = stow.info*
|
||||
DIST_SOURCES =
|
||||
INFO_DEPS = stow.info
|
||||
DVIS = stow.dvi
|
||||
TEXINFOS = stow.texi
|
||||
|
||||
NROFF = nroff
|
||||
MANS = $(man_MANS)
|
||||
DIST_COMMON = README AUTHORS COPYING ChangeLog INSTALL Makefile.am \
|
||||
Makefile.in NEWS README THANKS TODO aclocal.m4 configure configure.in \
|
||||
install-sh mdate-sh mkinstalldirs stamp-vti stow.in texinfo.tex \
|
||||
version.texi
|
||||
Makefile.in NEWS THANKS TODO aclocal.m4 configure configure.in \
|
||||
install-sh mdate-sh missing mkinstalldirs stamp-vti stow.in \
|
||||
texinfo.tex version.texi
|
||||
all: all-am
|
||||
|
||||
.SUFFIXES:
|
||||
.SUFFIXES: .dvi .info .ps .texi
|
||||
$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4)
|
||||
cd $(top_srcdir) && \
|
||||
$(AUTOMAKE) --gnu Makefile
|
||||
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
|
||||
cd $(top_builddir) && \
|
||||
CONFIG_HEADERS= CONFIG_LINKS= \
|
||||
CONFIG_FILES=$@ $(SHELL) ./config.status
|
||||
|
||||
PACKAGE = @PACKAGE@
|
||||
VERSION = @VERSION@
|
||||
$(top_builddir)/config.status: $(srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
|
||||
$(SHELL) ./config.status --recheck
|
||||
$(srcdir)/configure: $(srcdir)/configure.in $(ACLOCAL_M4) $(CONFIGURE_DEPENDENCIES)
|
||||
cd $(srcdir) && $(AUTOCONF)
|
||||
|
||||
DISTFILES = $(DIST_COMMON) $(SOURCES) $(BUILT_SOURCES) $(HEADERS) \
|
||||
$(TEXINFOS) $(INFOS) $(MANS) $(EXTRA_DIST) $(DATA)
|
||||
DEP_DISTFILES = $(DIST_COMMON) $(SOURCES) $(BUILT_SOURCES) $(HEADERS) \
|
||||
$(TEXINFOS) $(INFO_DEPS) $(MANS) $(EXTRA_DIST) $(DATA)
|
||||
|
||||
TAR = tar
|
||||
default: all
|
||||
|
||||
|
||||
$(srcdir)/Makefile.in: Makefile.am configure.in
|
||||
cd $(srcdir) && automake Makefile
|
||||
|
||||
# For an explanation of the following Makefile rules, see node
|
||||
# `Automatic Remaking' in GNU Autoconf documentation.
|
||||
Makefile: Makefile.in config.status
|
||||
CONFIG_FILES=$@ CONFIG_HEADERS= ./config.status
|
||||
config.status: configure
|
||||
./config.status --recheck
|
||||
$(srcdir)/configure: configure.in $(ACLOCAL) $(CONFIGURE_DEPENDENCIES)
|
||||
cd $(srcdir) && autoconf
|
||||
$(ACLOCAL_M4): configure.in
|
||||
cd $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS)
|
||||
stow: $(top_builddir)/config.status stow.in
|
||||
cd $(top_builddir) && CONFIG_FILES=$@ CONFIG_HEADERS= ./config.status
|
||||
|
||||
cd $(top_builddir) && CONFIG_FILES=$@ CONFIG_HEADERS= CONFIG_LINKS= $(SHELL) ./config.status
|
||||
install-binSCRIPTS: $(bin_SCRIPTS)
|
||||
$(mkinstalldirs) $(bindir)
|
||||
list="$(bin_SCRIPTS)"; for p in $$list; do \
|
||||
@$(NORMAL_INSTALL)
|
||||
$(mkinstalldirs) $(DESTDIR)$(bindir)
|
||||
@list='$(bin_SCRIPTS)'; for p in $$list; do \
|
||||
f="`echo $$p|sed '$(transform)'`"; \
|
||||
if test -f $$p; then \
|
||||
$(INSTALL_SCRIPT) $$p $(bindir)/`echo $$p|sed '$(transform)'`; \
|
||||
else if test -f $(srcdir)/$$p; then \
|
||||
$(INSTALL_SCRIPT) $(srcdir)/$$p \
|
||||
$(bindir)/`echo $$p|sed '$(transform)'`; \
|
||||
else :; fi; fi; \
|
||||
echo " $(INSTALL_SCRIPT) $$p $(DESTDIR)$(bindir)/$$f"; \
|
||||
$(INSTALL_SCRIPT) $$p $(DESTDIR)$(bindir)/$$f; \
|
||||
elif test -f $(srcdir)/$$p; then \
|
||||
echo " $(INSTALL_SCRIPT) $(srcdir)/$$p $(DESTDIR)$(bindir)/$$f"; \
|
||||
$(INSTALL_SCRIPT) $(srcdir)/$$p $(DESTDIR)$(bindir)/$$f; \
|
||||
else :; fi; \
|
||||
done
|
||||
|
||||
uninstall-binSCRIPTS:
|
||||
list="$(bin_SCRIPTS)"; for p in $$list; do \
|
||||
rm -f $(bindir)/`echo $$p|sed '$(transform)'`; \
|
||||
@$(NORMAL_UNINSTALL)
|
||||
@list='$(bin_SCRIPTS)'; for p in $$list; do \
|
||||
f="`echo $$p|sed '$(transform)'`"; \
|
||||
echo " rm -f $(DESTDIR)$(bindir)/$$f"; \
|
||||
rm -f $(DESTDIR)$(bindir)/$$f; \
|
||||
done
|
||||
|
||||
version.texi: stamp-vti
|
||||
|
||||
stamp-vti: stow.texi $(top_srcdir)/configure.in
|
||||
echo "@set UPDATED `cd $(srcdir) \
|
||||
&& $(SHELL) ./mdate-sh stow.texi`" > vti.tmp
|
||||
echo "@set EDITION $(VERSION)" >> vti.tmp
|
||||
echo "@set VERSION $(VERSION)" >> vti.tmp
|
||||
if cmp -s vti.tmp $(srcdir)/version.texi; then \
|
||||
rm vti.tmp; \
|
||||
else \
|
||||
mv vti.tmp $(srcdir)/version.texi; \
|
||||
fi
|
||||
echo timestamp > $(srcdir)/stamp-vti
|
||||
$(srcdir)/version.texi: $(srcdir)/stamp-vti
|
||||
@:
|
||||
$(srcdir)/stamp-vti: stow.texi $(top_srcdir)/configure.in
|
||||
@(set `$(SHELL) $(srcdir)/mdate-sh $(srcdir)/stow.texi`; \
|
||||
echo "@set UPDATED $$1 $$2 $$3"; \
|
||||
echo "@set UPDATED-MONTH $$2 $$3"; \
|
||||
echo "@set EDITION $(VERSION)"; \
|
||||
echo "@set VERSION $(VERSION)") > vti.tmp
|
||||
@cmp -s vti.tmp $(srcdir)/version.texi \
|
||||
|| (echo "Updating $(srcdir)/version.texi"; \
|
||||
cp vti.tmp $(srcdir)/version.texi)
|
||||
-@rm -f vti.tmp
|
||||
@cp $(srcdir)/version.texi $@
|
||||
|
||||
mostlyclean-vti:
|
||||
rm -f vti.tmp
|
||||
|
||||
clean-vti:
|
||||
|
||||
distclean-vti:
|
||||
-rm -f vti.tmp
|
||||
|
||||
maintainer-clean-vti:
|
||||
rm -f stamp-vti version.texi
|
||||
|
||||
stow.info: stow.texi version.texi
|
||||
-rm -f $(srcdir)/stamp-vti $(srcdir)/version.texi
|
||||
|
||||
stow.info: stow.texi $(srcdir)/version.texi
|
||||
stow.dvi: stow.texi $(srcdir)/version.texi
|
||||
|
||||
.texi.info:
|
||||
$(MAKEINFO) -I$(srcdir) $< -o $(srcdir)/$@
|
||||
@cd $(srcdir) && rm -f $@ $@-[0-9] $@-[0-9][0-9]
|
||||
cd $(srcdir) \
|
||||
&& $(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) \
|
||||
`echo $< | sed 's,.*/,,'`
|
||||
|
||||
.texi.dvi:
|
||||
TEXINPUTS=$(srcdir):$$TEXINPUTS $(TEXI2DVI) $<
|
||||
TEXINPUTS=$(srcdir):$$TEXINPUTS \
|
||||
MAKEINFO='$(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir)' \
|
||||
$(TEXI2DVI) $<
|
||||
|
||||
install-info: $(INFO_DEPS)
|
||||
$(mkinstalldirs) $(infodir)
|
||||
for file in $(INFO_DEPS); do \
|
||||
for ifile in `cd $(srcdir) && echo $$file*`; do \
|
||||
$(INSTALL_DATA) $(srcdir)/$$ifile $(infodir)/$$ifile; \
|
||||
done; \
|
||||
.texi:
|
||||
@cd $(srcdir) && rm -f $@ $@-[0-9] $@-[0-9][0-9]
|
||||
cd $(srcdir) \
|
||||
&& $(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) \
|
||||
`echo $< | sed 's,.*/,,'`
|
||||
|
||||
MAKEINFO = @MAKEINFO@
|
||||
TEXI2DVI = texi2dvi
|
||||
DVIPS = dvips
|
||||
.dvi.ps:
|
||||
$(DVIPS) $< -o $@
|
||||
|
||||
uninstall-info-am:
|
||||
$(PRE_UNINSTALL)
|
||||
@if (install-info --version && \
|
||||
install-info --version | fgrep -i -v debian) >/dev/null 2>&1; then \
|
||||
list='$(INFO_DEPS)'; \
|
||||
for file in $$list; do \
|
||||
echo " install-info --info-dir=$(DESTDIR)$(infodir) --remove $(DESTDIR)$(infodir)/$$file"; \
|
||||
install-info --info-dir=$(DESTDIR)$(infodir) --remove $(DESTDIR)$(infodir)/$$file; \
|
||||
done; \
|
||||
else :; fi
|
||||
@$(NORMAL_UNINSTALL)
|
||||
@list='$(INFO_DEPS)'; \
|
||||
for file in $$list; do \
|
||||
(if cd $(DESTDIR)$(infodir); then \
|
||||
echo " rm -f $$file $$file-[0-9] $$file-[0-9][0-9])"; \
|
||||
rm -f $$file $$file-[0-9] $$file-[0-9][0-9]; \
|
||||
else :; fi); \
|
||||
done
|
||||
|
||||
uninstall-info:
|
||||
cd $(srcdir) && for file in *.info*; do \
|
||||
rm -f $(infodir)/$$file; \
|
||||
dist-info: $(INFO_DEPS)
|
||||
list='$(INFO_DEPS)'; \
|
||||
for base in $$list; do \
|
||||
d=$(srcdir); \
|
||||
for file in `CDPATH=: && cd $$d && eval echo $$base*`; do \
|
||||
test -f $(distdir)/$$file \
|
||||
|| cp -p $$d/$$file $(distdir)/$$file; \
|
||||
done; \
|
||||
done
|
||||
|
||||
mostlyclean-info:
|
||||
rm -f stow.aux stow.cp stow.cps stow.dvi stow.fn stow.fns stow.ky \
|
||||
stow.log stow.pg stow.toc stow.tp stow.vr stow.op
|
||||
mostlyclean-aminfo:
|
||||
-rm -f stow.aux stow.cp stow.cps stow.dvi stow.fn stow.ky stow.log stow.pg \
|
||||
stow.ps stow.toc stow.tp stow.vr
|
||||
|
||||
clean-info:
|
||||
maintainer-clean-aminfo:
|
||||
cd $(srcdir) && \
|
||||
for i in $(INFO_DEPS); do \
|
||||
rm -f $$i; \
|
||||
if test "`echo $$i-[0-9]*`" != "$$i-[0-9]*"; then \
|
||||
rm -f $$i-[0-9]*; \
|
||||
fi; \
|
||||
done
|
||||
|
||||
distclean-info:
|
||||
|
||||
maintainer-clean-info:
|
||||
rm -f $(INFOS)
|
||||
man8dir = $(mandir)/man8
|
||||
install-man8: $(man8_MANS) $(man_MANS)
|
||||
@$(NORMAL_INSTALL)
|
||||
$(mkinstalldirs) $(DESTDIR)$(man8dir)
|
||||
@list='$(man8_MANS) $(dist_man8_MANS) $(nodist_man8_MANS)'; \
|
||||
l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \
|
||||
for i in $$l2; do \
|
||||
case "$$i" in \
|
||||
*.8*) list="$$list $$i" ;; \
|
||||
esac; \
|
||||
done; \
|
||||
for i in $$list; do \
|
||||
if test -f $(srcdir)/$$i; then file=$(srcdir)/$$i; \
|
||||
else file=$$i; fi; \
|
||||
ext=`echo $$i | sed -e 's/^.*\\.//'`; \
|
||||
inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \
|
||||
inst=`echo $$inst | sed -e 's/^.*\///'`; \
|
||||
inst=`echo $$inst | sed '$(transform)'`.$$ext; \
|
||||
echo " $(INSTALL_DATA) $$file $(DESTDIR)$(man8dir)/$$inst"; \
|
||||
$(INSTALL_DATA) $$file $(DESTDIR)$(man8dir)/$$inst; \
|
||||
done
|
||||
uninstall-man8:
|
||||
@$(NORMAL_UNINSTALL)
|
||||
@list='$(man8_MANS) $(dist_man8_MANS) $(nodist_man8_MANS)'; \
|
||||
l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \
|
||||
for i in $$l2; do \
|
||||
case "$$i" in \
|
||||
*.8*) list="$$list $$i" ;; \
|
||||
esac; \
|
||||
done; \
|
||||
for i in $$list; do \
|
||||
ext=`echo $$i | sed -e 's/^.*\\.//'`; \
|
||||
inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \
|
||||
inst=`echo $$inst | sed -e 's/^.*\///'`; \
|
||||
inst=`echo $$inst | sed '$(transform)'`.$$ext; \
|
||||
echo " rm -f $(DESTDIR)$(man8dir)/$$inst"; \
|
||||
rm -f $(DESTDIR)$(man8dir)/$$inst; \
|
||||
done
|
||||
tags: TAGS
|
||||
TAGS:
|
||||
|
||||
|
||||
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
|
||||
|
||||
top_distdir = .
|
||||
# Avoid unsightly `./'.
|
||||
distdir = $(PACKAGE)-$(VERSION)
|
||||
|
||||
GZIP_ENV = --best
|
||||
|
||||
distdir: $(DISTFILES)
|
||||
-chmod -R a+w $(distdir) >/dev/null 2>&1; rm -rf $(distdir)
|
||||
mkdir $(distdir)
|
||||
$(mkinstalldirs) $(distdir)/.
|
||||
@for file in $(DISTFILES); do \
|
||||
if test -f $$file; then d=.; else d=$(srcdir); fi; \
|
||||
dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
|
||||
if test "$$dir" != "$$file" && test "$$dir" != "."; then \
|
||||
$(mkinstalldirs) "$(distdir)/$$dir"; \
|
||||
fi; \
|
||||
if test -d $$d/$$file; then \
|
||||
cp -pR $$d/$$file $(distdir) \
|
||||
|| exit 1; \
|
||||
else \
|
||||
test -f $(distdir)/$$file \
|
||||
|| cp -p $$d/$$file $(distdir)/$$file \
|
||||
|| exit 1; \
|
||||
fi; \
|
||||
done
|
||||
$(MAKE) $(AM_MAKEFLAGS) \
|
||||
top_distdir="${top_distdir}" distdir="$(distdir)" \
|
||||
dist-info
|
||||
-find $(distdir) -type d ! -perm -777 -exec chmod a+rwx {} \; -o \
|
||||
! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \
|
||||
! -type d ! -perm -400 -exec chmod a+r {} \; -o \
|
||||
! -type d ! -perm -444 -exec $(SHELL) $(install_sh) -c -m a+r {} {} \; \
|
||||
|| chmod -R a+r $(distdir)
|
||||
dist: distdir
|
||||
$(AMTAR) chof - $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
|
||||
-chmod -R a+w $(distdir) >/dev/null 2>&1; rm -rf $(distdir)
|
||||
|
||||
dist-shar: distdir
|
||||
shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz
|
||||
-chmod -R a+w $(distdir) >/dev/null 2>&1; rm -rf $(distdir)
|
||||
|
||||
# This target untars the dist file and tries a VPATH configuration. Then
|
||||
# it guarantees that the distribution is self-contained by making another
|
||||
# tarfile.
|
||||
distcheck: dist
|
||||
rm -rf $(distdir)
|
||||
$(TAR) zxf $(distdir).tar.gz
|
||||
-chmod -R a+w $(distdir) > /dev/null 2>&1; rm -rf $(distdir)
|
||||
GZIP=$(GZIP_ENV) gunzip -c $(distdir).tar.gz | $(AMTAR) xf -
|
||||
chmod -R a-w $(distdir); chmod a+w $(distdir)
|
||||
mkdir $(distdir)/=build
|
||||
mkdir $(distdir)/=inst
|
||||
dc_install_base=`cd $(distdir)/=inst && pwd`; \
|
||||
cd $(distdir)/=build \
|
||||
chmod a-w $(distdir)
|
||||
dc_install_base=`CDPATH=: && cd $(distdir)/=inst && pwd` \
|
||||
&& cd $(distdir)/=build \
|
||||
&& ../configure --srcdir=.. --prefix=$$dc_install_base \
|
||||
&& $(MAKE) \
|
||||
&& $(MAKE) check \
|
||||
&& $(MAKE) install \
|
||||
&& $(MAKE) installcheck \
|
||||
&& $(MAKE) dist
|
||||
rm -rf $(distdir)
|
||||
@echo "========================"; \
|
||||
echo "$(distdir).tar.gz is ready for distribution"; \
|
||||
echo "========================"
|
||||
dist: distdir
|
||||
chmod -R a+r $(distdir)
|
||||
$(TAR) chozf $(distdir).tar.gz $(distdir)
|
||||
rm -rf $(distdir)
|
||||
dist-shar: distdir
|
||||
chmod -R a+r $(distdir)
|
||||
shar $(distdir) | gzip > $(distdir).shar.gz
|
||||
rm -rf $(distdir)
|
||||
distdir: $(DEP_DISTFILES)
|
||||
rm -rf $(distdir)
|
||||
mkdir $(distdir)
|
||||
chmod 777 $(distdir)
|
||||
@for file in `cd $(srcdir) && echo $(DISTFILES)`; do \
|
||||
test -f $(distdir)/$$file \
|
||||
|| ln $(srcdir)/$$file $(distdir)/$$file 2> /dev/null \
|
||||
|| cp -p $(srcdir)/$$file $(distdir)/$$file; \
|
||||
done
|
||||
info: $(INFO_DEPS)
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) dvi \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) check \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) install \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) installcheck \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) uninstall \
|
||||
&& (test `find $$dc_install_base -type f -print | wc -l` -le 1 \
|
||||
|| (echo "Error: files left after uninstall" 1>&2; \
|
||||
exit 1) ) \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) dist \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) distclean \
|
||||
&& rm -f $(distdir).tar.gz \
|
||||
&& (test `find . -type f -print | wc -l` -eq 0 \
|
||||
|| (echo "Error: files left after distclean" 1>&2; \
|
||||
exit 1) )
|
||||
-chmod -R a+w $(distdir) > /dev/null 2>&1; rm -rf $(distdir)
|
||||
@echo "$(distdir).tar.gz is ready for distribution" | \
|
||||
sed 'h;s/./=/g;p;x;p;x'
|
||||
check-am: all-am
|
||||
check: check-am
|
||||
all-am: Makefile $(INFO_DEPS) $(SCRIPTS) $(MANS)
|
||||
|
||||
dvi: $(DVIS)
|
||||
|
||||
check: all
|
||||
|
||||
installcheck:
|
||||
|
||||
install-exec: install-binSCRIPTS
|
||||
|
||||
install-data: install-info
|
||||
|
||||
install: install-exec install-data all
|
||||
@:
|
||||
|
||||
uninstall: uninstall-binSCRIPTS uninstall-info
|
||||
|
||||
all: $(INFO_DEPS) $(SCRIPTS) Makefile
|
||||
|
||||
install-strip:
|
||||
$(MAKE) INSTALL_PROGRAM='$(INSTALL_PROGRAM) -s' install
|
||||
installdirs:
|
||||
$(mkinstalldirs) $(bindir) $(infodir)
|
||||
$(mkinstalldirs) $(DESTDIR)$(bindir) $(DESTDIR)$(infodir) $(DESTDIR)$(man8dir)
|
||||
|
||||
install: install-am
|
||||
install-exec: install-exec-am
|
||||
install-data: install-data-am
|
||||
uninstall: uninstall-am
|
||||
|
||||
install-am: all-am
|
||||
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
|
||||
|
||||
installcheck: installcheck-am
|
||||
install-strip:
|
||||
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||
`test -z '$(STRIP)' || \
|
||||
echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
|
||||
mostlyclean-generic:
|
||||
test -z "$(MOSTLYCLEANFILES)" || rm -f $(MOSTLYCLEANFILES)
|
||||
|
||||
clean-generic:
|
||||
test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
|
||||
-test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
|
||||
|
||||
distclean-generic:
|
||||
rm -f Makefile $(DISTCLEANFILES)
|
||||
rm -f config.cache config.log $(CONFIG_HEADER) stamp-h
|
||||
-rm -f Makefile $(CONFIG_CLEAN_FILES) stamp-h stamp-h[0-9]*
|
||||
|
||||
maintainer-clean-generic:
|
||||
test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
|
||||
test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES)
|
||||
mostlyclean: mostlyclean-vti mostlyclean-info mostlyclean-generic
|
||||
|
||||
clean: clean-vti clean-info clean-generic mostlyclean
|
||||
|
||||
distclean: distclean-vti distclean-info distclean-generic clean
|
||||
rm -f config.status
|
||||
|
||||
maintainer-clean: maintainer-clean-vti maintainer-clean-info \
|
||||
maintainer-clean-generic distclean
|
||||
@echo "This command is intended for maintainers to use;"
|
||||
@echo "This command is intended for maintainers to use"
|
||||
@echo "it deletes files that may require special tools to rebuild."
|
||||
rm -f config.status
|
||||
clean: clean-am
|
||||
|
||||
.PHONY: default uninstall-binSCRIPTS install-binSCRIPTS mostlyclean-vti \
|
||||
distclean-vti clean-vti maintainer-clean-vti install-info \
|
||||
uninstall-info mostlyclean-info distclean-info clean-info \
|
||||
maintainer-clean-info tags distdir info dvi check installcheck \
|
||||
install-exec install-data install uninstall all installdirs \
|
||||
mostlyclean-generic distclean-generic clean-generic \
|
||||
maintainer-clean-generic clean mostlyclean distclean maintainer-clean
|
||||
clean-am: clean-generic mostlyclean-am
|
||||
|
||||
dist-all: distdir
|
||||
$(AMTAR) chof - $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
|
||||
shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz
|
||||
-chmod -R a+w $(distdir) >/dev/null 2>&1; rm -rf $(distdir)
|
||||
distclean: distclean-am
|
||||
-rm -f config.status config.cache config.log
|
||||
distclean-am: clean-am distclean-generic
|
||||
|
||||
dvi: dvi-am
|
||||
|
||||
dvi-am: $(DVIS)
|
||||
|
||||
info: info-am
|
||||
|
||||
info-am: $(INFO_DEPS)
|
||||
|
||||
install-data-am: install-info-am install-man
|
||||
|
||||
install-exec-am: install-binSCRIPTS
|
||||
|
||||
install-info: install-info-am
|
||||
|
||||
install-info-am: $(INFO_DEPS)
|
||||
@$(NORMAL_INSTALL)
|
||||
$(mkinstalldirs) $(DESTDIR)$(infodir)
|
||||
@list='$(INFO_DEPS)'; \
|
||||
for file in $$list; do \
|
||||
d=$(srcdir); \
|
||||
for ifile in `CDPATH=: && cd $$d && echo $$file $$file-[0-9] $$file-[0-9][0-9]`; do \
|
||||
if test -f $$d/$$ifile; then \
|
||||
echo " $(INSTALL_DATA) $$d/$$ifile $(DESTDIR)$(infodir)/$$ifile"; \
|
||||
$(INSTALL_DATA) $$d/$$ifile $(DESTDIR)$(infodir)/$$ifile; \
|
||||
else : ; fi; \
|
||||
done; \
|
||||
done
|
||||
@$(POST_INSTALL)
|
||||
@if (install-info --version && \
|
||||
install-info --version | fgrep -i -v debian) >/dev/null 2>&1; then \
|
||||
list='$(INFO_DEPS)'; \
|
||||
for file in $$list; do \
|
||||
echo " install-info --info-dir=$(DESTDIR)$(infodir) $(DESTDIR)$(infodir)/$$file";\
|
||||
install-info --info-dir=$(DESTDIR)$(infodir) $(DESTDIR)$(infodir)/$$file || :;\
|
||||
done; \
|
||||
else : ; fi
|
||||
install-man: install-man8
|
||||
|
||||
installcheck-am:
|
||||
|
||||
maintainer-clean: maintainer-clean-am
|
||||
|
||||
maintainer-clean-am: distclean-am maintainer-clean-aminfo \
|
||||
maintainer-clean-generic maintainer-clean-vti
|
||||
|
||||
mostlyclean: mostlyclean-am
|
||||
|
||||
mostlyclean-am: mostlyclean-aminfo mostlyclean-generic mostlyclean-vti
|
||||
|
||||
uninstall-am: uninstall-binSCRIPTS uninstall-info-am uninstall-man
|
||||
|
||||
uninstall-man: uninstall-man8
|
||||
|
||||
.PHONY: all all-am check check-am clean clean-generic dist dist-all \
|
||||
dist-info dist-shar distcheck distclean distclean-generic \
|
||||
distdir dvi dvi-am info info-am install install-am \
|
||||
install-binSCRIPTS install-data install-data-am install-exec \
|
||||
install-exec-am install-info install-info-am install-man \
|
||||
install-man8 install-strip installcheck installcheck-am \
|
||||
installdirs maintainer-clean maintainer-clean-aminfo \
|
||||
maintainer-clean-generic maintainer-clean-vti mostlyclean \
|
||||
mostlyclean-aminfo mostlyclean-generic mostlyclean-vti \
|
||||
uninstall uninstall-am uninstall-binSCRIPTS uninstall-info-am \
|
||||
uninstall-man uninstall-man8
|
||||
|
||||
|
||||
# The rules for manual.html and manual.texi are only used by
|
||||
|
@ -271,9 +458,6 @@ manual.html: manual.texi
|
|||
manual.texi: stow.texi
|
||||
-rm -f $@
|
||||
cp $< $@
|
||||
.SUFFIXES:
|
||||
.SUFFIXES: .texi .info .dvi
|
||||
|
||||
# Tell versions [3.59,3.63) of GNU make to not export all variables.
|
||||
# Otherwise a system limit (for SysV at least) may be exceeded.
|
||||
.NOEXPORT:
|
||||
|
|
8
NEWS
8
NEWS
|
@ -1,5 +1,13 @@
|
|||
News file for Stow.
|
||||
|
||||
* Changes in version 1.3.3:
|
||||
** Now requires Perl 5.005 or later
|
||||
** Initially empty directories are not removed anymore
|
||||
** Removed buggy fastcwd (we use POSIX::getcwd instead)
|
||||
** Fixed bug when the common Parent of Target dir and Stow dir was "/"
|
||||
** Fixed bug when handling directories named "0"
|
||||
** Stow now only warns the user if a directory is unreadable during unstowing.
|
||||
|
||||
* Changes in version 1.3:
|
||||
** Added --restow option.
|
||||
** Fixed handling of slashes in package names.
|
||||
|
|
2
THANKS
2
THANKS
|
@ -1,3 +1,5 @@
|
|||
Bob Glickstein:
|
||||
|
||||
Thanks to the following people for testing, using, commenting on, and
|
||||
otherwise aiding the creation of Stow:
|
||||
|
||||
|
|
496
aclocal.m4
vendored
496
aclocal.m4
vendored
|
@ -1,7 +1,493 @@
|
|||
dnl This definition comes from automake 1.0
|
||||
# aclocal.m4 generated automatically by aclocal 1.5
|
||||
|
||||
AC_DEFUN(fp_PROG_INSTALL,
|
||||
[AC_PROG_INSTALL
|
||||
test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL} -m 755'
|
||||
AC_SUBST(INSTALL_SCRIPT)dnl
|
||||
# Copyright 1996, 1997, 1998, 1999, 2000, 2001
|
||||
# Free Software Foundation, Inc.
|
||||
# This file is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
|
||||
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
||||
# PARTICULAR PURPOSE.
|
||||
|
||||
# Do all the work for Automake. This macro actually does too much --
|
||||
# some checks are only needed if your package does certain things.
|
||||
# But this isn't really a big deal.
|
||||
|
||||
# serial 5
|
||||
|
||||
# There are a few dirty hacks below to avoid letting `AC_PROG_CC' be
|
||||
# written in clear, in which case automake, when reading aclocal.m4,
|
||||
# will think it sees a *use*, and therefore will trigger all it's
|
||||
# C support machinery. Also note that it means that autoscan, seeing
|
||||
# CC etc. in the Makefile, will ask for an AC_PROG_CC use...
|
||||
|
||||
|
||||
# We require 2.13 because we rely on SHELL being computed by configure.
|
||||
AC_PREREQ([2.13])
|
||||
|
||||
# AC_PROVIDE_IFELSE(MACRO-NAME, IF-PROVIDED, IF-NOT-PROVIDED)
|
||||
# -----------------------------------------------------------
|
||||
# If MACRO-NAME is provided do IF-PROVIDED, else IF-NOT-PROVIDED.
|
||||
# The purpose of this macro is to provide the user with a means to
|
||||
# check macros which are provided without letting her know how the
|
||||
# information is coded.
|
||||
# If this macro is not defined by Autoconf, define it here.
|
||||
ifdef([AC_PROVIDE_IFELSE],
|
||||
[],
|
||||
[define([AC_PROVIDE_IFELSE],
|
||||
[ifdef([AC_PROVIDE_$1],
|
||||
[$2], [$3])])])
|
||||
|
||||
|
||||
# AM_INIT_AUTOMAKE(PACKAGE,VERSION, [NO-DEFINE])
|
||||
# ----------------------------------------------
|
||||
AC_DEFUN([AM_INIT_AUTOMAKE],
|
||||
[AC_REQUIRE([AC_PROG_INSTALL])dnl
|
||||
# test to see if srcdir already configured
|
||||
if test "`CDPATH=:; cd $srcdir && pwd`" != "`pwd`" &&
|
||||
test -f $srcdir/config.status; then
|
||||
AC_MSG_ERROR([source directory already configured; run \"make distclean\" there first])
|
||||
fi
|
||||
|
||||
# Define the identity of the package.
|
||||
PACKAGE=$1
|
||||
AC_SUBST(PACKAGE)dnl
|
||||
VERSION=$2
|
||||
AC_SUBST(VERSION)dnl
|
||||
ifelse([$3],,
|
||||
[AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package])
|
||||
AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])])
|
||||
|
||||
# Autoconf 2.50 wants to disallow AM_ names. We explicitly allow
|
||||
# the ones we care about.
|
||||
ifdef([m4_pattern_allow],
|
||||
[m4_pattern_allow([^AM_[A-Z]+FLAGS])])dnl
|
||||
|
||||
# Autoconf 2.50 always computes EXEEXT. However we need to be
|
||||
# compatible with 2.13, for now. So we always define EXEEXT, but we
|
||||
# don't compute it.
|
||||
AC_SUBST(EXEEXT)
|
||||
# Similar for OBJEXT -- only we only use OBJEXT if the user actually
|
||||
# requests that it be used. This is a bit dumb.
|
||||
: ${OBJEXT=o}
|
||||
AC_SUBST(OBJEXT)
|
||||
|
||||
# Some tools Automake needs.
|
||||
AC_REQUIRE([AM_SANITY_CHECK])dnl
|
||||
AC_REQUIRE([AC_ARG_PROGRAM])dnl
|
||||
AM_MISSING_PROG(ACLOCAL, aclocal)
|
||||
AM_MISSING_PROG(AUTOCONF, autoconf)
|
||||
AM_MISSING_PROG(AUTOMAKE, automake)
|
||||
AM_MISSING_PROG(AUTOHEADER, autoheader)
|
||||
AM_MISSING_PROG(MAKEINFO, makeinfo)
|
||||
AM_MISSING_PROG(AMTAR, tar)
|
||||
AM_PROG_INSTALL_SH
|
||||
AM_PROG_INSTALL_STRIP
|
||||
# We need awk for the "check" target. The system "awk" is bad on
|
||||
# some platforms.
|
||||
AC_REQUIRE([AC_PROG_AWK])dnl
|
||||
AC_REQUIRE([AC_PROG_MAKE_SET])dnl
|
||||
AC_REQUIRE([AM_DEP_TRACK])dnl
|
||||
AC_REQUIRE([AM_SET_DEPDIR])dnl
|
||||
AC_PROVIDE_IFELSE([AC_PROG_][CC],
|
||||
[_AM_DEPENDENCIES(CC)],
|
||||
[define([AC_PROG_][CC],
|
||||
defn([AC_PROG_][CC])[_AM_DEPENDENCIES(CC)])])dnl
|
||||
AC_PROVIDE_IFELSE([AC_PROG_][CXX],
|
||||
[_AM_DEPENDENCIES(CXX)],
|
||||
[define([AC_PROG_][CXX],
|
||||
defn([AC_PROG_][CXX])[_AM_DEPENDENCIES(CXX)])])dnl
|
||||
])
|
||||
|
||||
#
|
||||
# Check to make sure that the build environment is sane.
|
||||
#
|
||||
|
||||
# serial 3
|
||||
|
||||
# AM_SANITY_CHECK
|
||||
# ---------------
|
||||
AC_DEFUN([AM_SANITY_CHECK],
|
||||
[AC_MSG_CHECKING([whether build environment is sane])
|
||||
# Just in case
|
||||
sleep 1
|
||||
echo timestamp > conftest.file
|
||||
# Do `set' in a subshell so we don't clobber the current shell's
|
||||
# arguments. Must try -L first in case configure is actually a
|
||||
# symlink; some systems play weird games with the mod time of symlinks
|
||||
# (eg FreeBSD returns the mod time of the symlink's containing
|
||||
# directory).
|
||||
if (
|
||||
set X `ls -Lt $srcdir/configure conftest.file 2> /dev/null`
|
||||
if test "$[*]" = "X"; then
|
||||
# -L didn't work.
|
||||
set X `ls -t $srcdir/configure conftest.file`
|
||||
fi
|
||||
rm -f conftest.file
|
||||
if test "$[*]" != "X $srcdir/configure conftest.file" \
|
||||
&& test "$[*]" != "X conftest.file $srcdir/configure"; then
|
||||
|
||||
# If neither matched, then we have a broken ls. This can happen
|
||||
# if, for instance, CONFIG_SHELL is bash and it inherits a
|
||||
# broken ls alias from the environment. This has actually
|
||||
# happened. Such a system could not be considered "sane".
|
||||
AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken
|
||||
alias in your environment])
|
||||
fi
|
||||
|
||||
test "$[2]" = conftest.file
|
||||
)
|
||||
then
|
||||
# Ok.
|
||||
:
|
||||
else
|
||||
AC_MSG_ERROR([newly created file is older than distributed files!
|
||||
Check your system clock])
|
||||
fi
|
||||
AC_MSG_RESULT(yes)])
|
||||
|
||||
|
||||
# serial 2
|
||||
|
||||
# AM_MISSING_PROG(NAME, PROGRAM)
|
||||
# ------------------------------
|
||||
AC_DEFUN([AM_MISSING_PROG],
|
||||
[AC_REQUIRE([AM_MISSING_HAS_RUN])
|
||||
$1=${$1-"${am_missing_run}$2"}
|
||||
AC_SUBST($1)])
|
||||
|
||||
|
||||
# AM_MISSING_HAS_RUN
|
||||
# ------------------
|
||||
# Define MISSING if not defined so far and test if it supports --run.
|
||||
# If it does, set am_missing_run to use it, otherwise, to nothing.
|
||||
AC_DEFUN([AM_MISSING_HAS_RUN],
|
||||
[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
|
||||
test x"${MISSING+set}" = xset || MISSING="\${SHELL} $am_aux_dir/missing"
|
||||
# Use eval to expand $SHELL
|
||||
if eval "$MISSING --run true"; then
|
||||
am_missing_run="$MISSING --run "
|
||||
else
|
||||
am_missing_run=
|
||||
am_backtick='`'
|
||||
AC_MSG_WARN([${am_backtick}missing' script is too old or missing])
|
||||
fi
|
||||
])
|
||||
|
||||
# AM_AUX_DIR_EXPAND
|
||||
|
||||
# For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets
|
||||
# $ac_aux_dir to `$srcdir/foo'. In other projects, it is set to
|
||||
# `$srcdir', `$srcdir/..', or `$srcdir/../..'.
|
||||
#
|
||||
# Of course, Automake must honor this variable whenever it calls a
|
||||
# tool from the auxiliary directory. The problem is that $srcdir (and
|
||||
# therefore $ac_aux_dir as well) can be either absolute or relative,
|
||||
# depending on how configure is run. This is pretty annoying, since
|
||||
# it makes $ac_aux_dir quite unusable in subdirectories: in the top
|
||||
# source directory, any form will work fine, but in subdirectories a
|
||||
# relative path needs to be adjusted first.
|
||||
#
|
||||
# $ac_aux_dir/missing
|
||||
# fails when called from a subdirectory if $ac_aux_dir is relative
|
||||
# $top_srcdir/$ac_aux_dir/missing
|
||||
# fails if $ac_aux_dir is absolute,
|
||||
# fails when called from a subdirectory in a VPATH build with
|
||||
# a relative $ac_aux_dir
|
||||
#
|
||||
# The reason of the latter failure is that $top_srcdir and $ac_aux_dir
|
||||
# are both prefixed by $srcdir. In an in-source build this is usually
|
||||
# harmless because $srcdir is `.', but things will broke when you
|
||||
# start a VPATH build or use an absolute $srcdir.
|
||||
#
|
||||
# So we could use something similar to $top_srcdir/$ac_aux_dir/missing,
|
||||
# iff we strip the leading $srcdir from $ac_aux_dir. That would be:
|
||||
# am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"`
|
||||
# and then we would define $MISSING as
|
||||
# MISSING="\${SHELL} $am_aux_dir/missing"
|
||||
# This will work as long as MISSING is not called from configure, because
|
||||
# unfortunately $(top_srcdir) has no meaning in configure.
|
||||
# However there are other variables, like CC, which are often used in
|
||||
# configure, and could therefore not use this "fixed" $ac_aux_dir.
|
||||
#
|
||||
# Another solution, used here, is to always expand $ac_aux_dir to an
|
||||
# absolute PATH. The drawback is that using absolute paths prevent a
|
||||
# configured tree to be moved without reconfiguration.
|
||||
|
||||
AC_DEFUN([AM_AUX_DIR_EXPAND], [
|
||||
# expand $ac_aux_dir to an absolute path
|
||||
am_aux_dir=`CDPATH=:; cd $ac_aux_dir && pwd`
|
||||
])
|
||||
|
||||
# AM_PROG_INSTALL_SH
|
||||
# ------------------
|
||||
# Define $install_sh.
|
||||
AC_DEFUN([AM_PROG_INSTALL_SH],
|
||||
[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
|
||||
install_sh=${install_sh-"$am_aux_dir/install-sh"}
|
||||
AC_SUBST(install_sh)])
|
||||
|
||||
# One issue with vendor `install' (even GNU) is that you can't
|
||||
# specify the program used to strip binaries. This is especially
|
||||
# annoying in cross-compiling environments, where the build's strip
|
||||
# is unlikely to handle the host's binaries.
|
||||
# Fortunately install-sh will honor a STRIPPROG variable, so we
|
||||
# always use install-sh in `make install-strip', and initialize
|
||||
# STRIPPROG with the value of the STRIP variable (set by the user).
|
||||
AC_DEFUN([AM_PROG_INSTALL_STRIP],
|
||||
[AC_REQUIRE([AM_PROG_INSTALL_SH])dnl
|
||||
INSTALL_STRIP_PROGRAM="\${SHELL} \$(install_sh) -c -s"
|
||||
AC_SUBST([INSTALL_STRIP_PROGRAM])])
|
||||
|
||||
# serial 4 -*- Autoconf -*-
|
||||
|
||||
|
||||
|
||||
# There are a few dirty hacks below to avoid letting `AC_PROG_CC' be
|
||||
# written in clear, in which case automake, when reading aclocal.m4,
|
||||
# will think it sees a *use*, and therefore will trigger all it's
|
||||
# C support machinery. Also note that it means that autoscan, seeing
|
||||
# CC etc. in the Makefile, will ask for an AC_PROG_CC use...
|
||||
|
||||
|
||||
|
||||
# _AM_DEPENDENCIES(NAME)
|
||||
# ---------------------
|
||||
# See how the compiler implements dependency checking.
|
||||
# NAME is "CC", "CXX" or "OBJC".
|
||||
# We try a few techniques and use that to set a single cache variable.
|
||||
#
|
||||
# We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was
|
||||
# modified to invoke _AM_DEPENDENCIES(CC); we would have a circular
|
||||
# dependency, and given that the user is not expected to run this macro,
|
||||
# just rely on AC_PROG_CC.
|
||||
AC_DEFUN([_AM_DEPENDENCIES],
|
||||
[AC_REQUIRE([AM_SET_DEPDIR])dnl
|
||||
AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl
|
||||
AC_REQUIRE([AM_MAKE_INCLUDE])dnl
|
||||
AC_REQUIRE([AM_DEP_TRACK])dnl
|
||||
|
||||
ifelse([$1], CC, [depcc="$CC" am_compiler_list=],
|
||||
[$1], CXX, [depcc="$CXX" am_compiler_list=],
|
||||
[$1], OBJC, [depcc="$OBJC" am_compiler_list='gcc3 gcc']
|
||||
[$1], GCJ, [depcc="$GCJ" am_compiler_list='gcc3 gcc'],
|
||||
[depcc="$$1" am_compiler_list=])
|
||||
|
||||
AC_CACHE_CHECK([dependency style of $depcc],
|
||||
[am_cv_$1_dependencies_compiler_type],
|
||||
[if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
|
||||
# We make a subdir and do the tests there. Otherwise we can end up
|
||||
# making bogus files that we don't know about and never remove. For
|
||||
# instance it was reported that on HP-UX the gcc test will end up
|
||||
# making a dummy file named `D' -- because `-MD' means `put the output
|
||||
# in D'.
|
||||
mkdir conftest.dir
|
||||
# Copy depcomp to subdir because otherwise we won't find it if we're
|
||||
# using a relative directory.
|
||||
cp "$am_depcomp" conftest.dir
|
||||
cd conftest.dir
|
||||
|
||||
am_cv_$1_dependencies_compiler_type=none
|
||||
if test "$am_compiler_list" = ""; then
|
||||
am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp`
|
||||
fi
|
||||
for depmode in $am_compiler_list; do
|
||||
# We need to recreate these files for each test, as the compiler may
|
||||
# overwrite some of them when testing with obscure command lines.
|
||||
# This happens at least with the AIX C compiler.
|
||||
echo '#include "conftest.h"' > conftest.c
|
||||
echo 'int i;' > conftest.h
|
||||
echo "${am__include} ${am__quote}conftest.Po${am__quote}" > confmf
|
||||
|
||||
case $depmode in
|
||||
nosideeffect)
|
||||
# after this tag, mechanisms are not by side-effect, so they'll
|
||||
# only be used when explicitly requested
|
||||
if test "x$enable_dependency_tracking" = xyes; then
|
||||
continue
|
||||
else
|
||||
break
|
||||
fi
|
||||
;;
|
||||
none) break ;;
|
||||
esac
|
||||
# We check with `-c' and `-o' for the sake of the "dashmstdout"
|
||||
# mode. It turns out that the SunPro C++ compiler does not properly
|
||||
# handle `-M -o', and we need to detect this.
|
||||
if depmode=$depmode \
|
||||
source=conftest.c object=conftest.o \
|
||||
depfile=conftest.Po tmpdepfile=conftest.TPo \
|
||||
$SHELL ./depcomp $depcc -c conftest.c -o conftest.o >/dev/null 2>&1 &&
|
||||
grep conftest.h conftest.Po > /dev/null 2>&1 &&
|
||||
${MAKE-make} -s -f confmf > /dev/null 2>&1; then
|
||||
am_cv_$1_dependencies_compiler_type=$depmode
|
||||
break
|
||||
fi
|
||||
done
|
||||
|
||||
cd ..
|
||||
rm -rf conftest.dir
|
||||
else
|
||||
am_cv_$1_dependencies_compiler_type=none
|
||||
fi
|
||||
])
|
||||
$1DEPMODE="depmode=$am_cv_$1_dependencies_compiler_type"
|
||||
AC_SUBST([$1DEPMODE])
|
||||
])
|
||||
|
||||
|
||||
# AM_SET_DEPDIR
|
||||
# -------------
|
||||
# Choose a directory name for dependency files.
|
||||
# This macro is AC_REQUIREd in _AM_DEPENDENCIES
|
||||
AC_DEFUN([AM_SET_DEPDIR],
|
||||
[rm -f .deps 2>/dev/null
|
||||
mkdir .deps 2>/dev/null
|
||||
if test -d .deps; then
|
||||
DEPDIR=.deps
|
||||
else
|
||||
# MS-DOS does not allow filenames that begin with a dot.
|
||||
DEPDIR=_deps
|
||||
fi
|
||||
rmdir .deps 2>/dev/null
|
||||
AC_SUBST(DEPDIR)
|
||||
])
|
||||
|
||||
|
||||
# AM_DEP_TRACK
|
||||
# ------------
|
||||
AC_DEFUN([AM_DEP_TRACK],
|
||||
[AC_ARG_ENABLE(dependency-tracking,
|
||||
[ --disable-dependency-tracking Speeds up one-time builds
|
||||
--enable-dependency-tracking Do not reject slow dependency extractors])
|
||||
if test "x$enable_dependency_tracking" != xno; then
|
||||
am_depcomp="$ac_aux_dir/depcomp"
|
||||
AMDEPBACKSLASH='\'
|
||||
fi
|
||||
AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno])
|
||||
pushdef([subst], defn([AC_SUBST]))
|
||||
subst(AMDEPBACKSLASH)
|
||||
popdef([subst])
|
||||
])
|
||||
|
||||
# Generate code to set up dependency tracking.
|
||||
# This macro should only be invoked once -- use via AC_REQUIRE.
|
||||
# Usage:
|
||||
# AM_OUTPUT_DEPENDENCY_COMMANDS
|
||||
|
||||
#
|
||||
# This code is only required when automatic dependency tracking
|
||||
# is enabled. FIXME. This creates each `.P' file that we will
|
||||
# need in order to bootstrap the dependency handling code.
|
||||
AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS],[
|
||||
AC_OUTPUT_COMMANDS([
|
||||
test x"$AMDEP_TRUE" != x"" ||
|
||||
for mf in $CONFIG_FILES; do
|
||||
case "$mf" in
|
||||
Makefile) dirpart=.;;
|
||||
*/Makefile) dirpart=`echo "$mf" | sed -e 's|/[^/]*$||'`;;
|
||||
*) continue;;
|
||||
esac
|
||||
grep '^DEP_FILES *= *[^ #]' < "$mf" > /dev/null || continue
|
||||
# Extract the definition of DEP_FILES from the Makefile without
|
||||
# running `make'.
|
||||
DEPDIR=`sed -n -e '/^DEPDIR = / s///p' < "$mf"`
|
||||
test -z "$DEPDIR" && continue
|
||||
# When using ansi2knr, U may be empty or an underscore; expand it
|
||||
U=`sed -n -e '/^U = / s///p' < "$mf"`
|
||||
test -d "$dirpart/$DEPDIR" || mkdir "$dirpart/$DEPDIR"
|
||||
# We invoke sed twice because it is the simplest approach to
|
||||
# changing $(DEPDIR) to its actual value in the expansion.
|
||||
for file in `sed -n -e '
|
||||
/^DEP_FILES = .*\\\\$/ {
|
||||
s/^DEP_FILES = //
|
||||
:loop
|
||||
s/\\\\$//
|
||||
p
|
||||
n
|
||||
/\\\\$/ b loop
|
||||
p
|
||||
}
|
||||
/^DEP_FILES = / s/^DEP_FILES = //p' < "$mf" | \
|
||||
sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do
|
||||
# Make sure the directory exists.
|
||||
test -f "$dirpart/$file" && continue
|
||||
fdir=`echo "$file" | sed -e 's|/[^/]*$||'`
|
||||
$ac_aux_dir/mkinstalldirs "$dirpart/$fdir" > /dev/null 2>&1
|
||||
# echo "creating $dirpart/$file"
|
||||
echo '# dummy' > "$dirpart/$file"
|
||||
done
|
||||
done
|
||||
], [AMDEP_TRUE="$AMDEP_TRUE"
|
||||
ac_aux_dir="$ac_aux_dir"])])
|
||||
|
||||
# AM_MAKE_INCLUDE()
|
||||
# -----------------
|
||||
# Check to see how make treats includes.
|
||||
AC_DEFUN([AM_MAKE_INCLUDE],
|
||||
[am_make=${MAKE-make}
|
||||
cat > confinc << 'END'
|
||||
doit:
|
||||
@echo done
|
||||
END
|
||||
# If we don't find an include directive, just comment out the code.
|
||||
AC_MSG_CHECKING([for style of include used by $am_make])
|
||||
am__include='#'
|
||||
am__quote=
|
||||
_am_result=none
|
||||
# First try GNU make style include.
|
||||
echo "include confinc" > confmf
|
||||
# We grep out `Entering directory' and `Leaving directory'
|
||||
# messages which can occur if `w' ends up in MAKEFLAGS.
|
||||
# In particular we don't look at `^make:' because GNU make might
|
||||
# be invoked under some other name (usually "gmake"), in which
|
||||
# case it prints its new name instead of `make'.
|
||||
if test "`$am_make -s -f confmf 2> /dev/null | fgrep -v 'ing directory'`" = "done"; then
|
||||
am__include=include
|
||||
am__quote=
|
||||
_am_result=GNU
|
||||
fi
|
||||
# Now try BSD make style include.
|
||||
if test "$am__include" = "#"; then
|
||||
echo '.include "confinc"' > confmf
|
||||
if test "`$am_make -s -f confmf 2> /dev/null`" = "done"; then
|
||||
am__include=.include
|
||||
am__quote='"'
|
||||
_am_result=BSD
|
||||
fi
|
||||
fi
|
||||
AC_SUBST(am__include)
|
||||
AC_SUBST(am__quote)
|
||||
AC_MSG_RESULT($_am_result)
|
||||
rm -f confinc confmf
|
||||
])
|
||||
|
||||
# serial 3
|
||||
|
||||
# AM_CONDITIONAL(NAME, SHELL-CONDITION)
|
||||
# -------------------------------------
|
||||
# Define a conditional.
|
||||
#
|
||||
# FIXME: Once using 2.50, use this:
|
||||
# m4_match([$1], [^TRUE\|FALSE$], [AC_FATAL([$0: invalid condition: $1])])dnl
|
||||
AC_DEFUN([AM_CONDITIONAL],
|
||||
[ifelse([$1], [TRUE],
|
||||
[errprint(__file__:__line__: [$0: invalid condition: $1
|
||||
])dnl
|
||||
m4exit(1)])dnl
|
||||
ifelse([$1], [FALSE],
|
||||
[errprint(__file__:__line__: [$0: invalid condition: $1
|
||||
])dnl
|
||||
m4exit(1)])dnl
|
||||
AC_SUBST([$1_TRUE])
|
||||
AC_SUBST([$1_FALSE])
|
||||
if $2; then
|
||||
$1_TRUE=
|
||||
$1_FALSE='#'
|
||||
else
|
||||
$1_TRUE='#'
|
||||
$1_FALSE=
|
||||
fi])
|
||||
|
||||
|
|
475
configure
vendored
475
configure
vendored
|
@ -1,7 +1,7 @@
|
|||
#! /bin/sh
|
||||
|
||||
# Guess values for system-dependent variables and create Makefiles.
|
||||
# Generated automatically using autoconf version 2.10
|
||||
# Generated automatically using autoconf version 2.13
|
||||
# Copyright (C) 1992, 93, 94, 95, 96 Free Software Foundation, Inc.
|
||||
#
|
||||
# This configure script is free software; the Free Software Foundation
|
||||
|
@ -11,6 +11,9 @@
|
|||
ac_help=
|
||||
ac_default_prefix=/usr/local
|
||||
# Any additions from configure.in:
|
||||
ac_help="$ac_help
|
||||
--disable-dependency-tracking Speeds up one-time builds
|
||||
--enable-dependency-tracking Do not reject slow dependency extractors"
|
||||
|
||||
# Initialize some variables set by options.
|
||||
# The variables have the same names as the options, with
|
||||
|
@ -49,6 +52,9 @@ mandir='${prefix}/man'
|
|||
# Initialize some other variables.
|
||||
subdirs=
|
||||
MFLAGS= MAKEFLAGS=
|
||||
SHELL=${CONFIG_SHELL-/bin/sh}
|
||||
# Maximum number of lines to put in a shell here document.
|
||||
ac_max_here_lines=12
|
||||
|
||||
ac_prev=
|
||||
for ac_option
|
||||
|
@ -330,7 +336,7 @@ EOF
|
|||
verbose=yes ;;
|
||||
|
||||
-version | --version | --versio | --versi | --vers)
|
||||
echo "configure generated by autoconf version 2.10"
|
||||
echo "configure generated by autoconf version 2.13"
|
||||
exit 0 ;;
|
||||
|
||||
-with-* | --with-*)
|
||||
|
@ -432,11 +438,14 @@ do
|
|||
done
|
||||
|
||||
# NLS nuisances.
|
||||
# Only set LANG and LC_ALL to C if already set.
|
||||
# These must not be set unconditionally because not all systems understand
|
||||
# e.g. LANG=C (notably SCO).
|
||||
if test "${LC_ALL+set}" = set; then LC_ALL=C; export LC_ALL; fi
|
||||
# Only set these to C if already set. These must not be set unconditionally
|
||||
# because not all systems understand e.g. LANG=C (notably SCO).
|
||||
# Fixing LC_MESSAGES prevents Solaris sh from translating var values in `set'!
|
||||
# Non-C LC_CTYPE values break the ctype check.
|
||||
if test "${LANG+set}" = set; then LANG=C; export LANG; fi
|
||||
if test "${LC_ALL+set}" = set; then LC_ALL=C; export LC_ALL; fi
|
||||
if test "${LC_MESSAGES+set}" = set; then LC_MESSAGES=C; export LC_MESSAGES; fi
|
||||
if test "${LC_CTYPE+set}" = set; then LC_CTYPE=C; export LC_CTYPE; fi
|
||||
|
||||
# confdefs.h avoids OS command line length limits that DEFS can exceed.
|
||||
rm -rf conftest* confdefs.h
|
||||
|
@ -497,8 +506,11 @@ ac_ext=c
|
|||
# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
|
||||
ac_cpp='$CPP $CPPFLAGS'
|
||||
ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5'
|
||||
ac_link='${CC-cc} -o conftest $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5'
|
||||
ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5'
|
||||
cross_compiling=$ac_cv_prog_cc_cross
|
||||
|
||||
ac_exeext=
|
||||
ac_objext=o
|
||||
if (echo "testing\c"; echo 1,2,3) | grep c >/dev/null; then
|
||||
# Stardent Vistra SVR4 grep lacks -e, says ghazi@caip.rutgers.edu.
|
||||
if (echo -n testing; echo 1,2,3) | sed s/-n/xn/ | grep xn >/dev/null; then
|
||||
|
@ -514,7 +526,312 @@ fi
|
|||
|
||||
|
||||
PACKAGE=stow
|
||||
VERSION=1.3.2
|
||||
VERSION=1.3.3
|
||||
ac_aux_dir=
|
||||
for ac_dir in $srcdir $srcdir/.. $srcdir/../..; do
|
||||
if test -f $ac_dir/install-sh; then
|
||||
ac_aux_dir=$ac_dir
|
||||
ac_install_sh="$ac_aux_dir/install-sh -c"
|
||||
break
|
||||
elif test -f $ac_dir/install.sh; then
|
||||
ac_aux_dir=$ac_dir
|
||||
ac_install_sh="$ac_aux_dir/install.sh -c"
|
||||
break
|
||||
fi
|
||||
done
|
||||
if test -z "$ac_aux_dir"; then
|
||||
{ echo "configure: error: can not find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." 1>&2; exit 1; }
|
||||
fi
|
||||
ac_config_guess=$ac_aux_dir/config.guess
|
||||
ac_config_sub=$ac_aux_dir/config.sub
|
||||
ac_configure=$ac_aux_dir/configure # This should be Cygnus configure.
|
||||
|
||||
|
||||
# expand $ac_aux_dir to an absolute path
|
||||
am_aux_dir=`CDPATH=:; cd $ac_aux_dir && pwd`
|
||||
|
||||
# Find a good install program. We prefer a C program (faster),
|
||||
# so one script is as good as another. But avoid the broken or
|
||||
# incompatible versions:
|
||||
# SysV /etc/install, /usr/sbin/install
|
||||
# SunOS /usr/etc/install
|
||||
# IRIX /sbin/install
|
||||
# AIX /bin/install
|
||||
# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag
|
||||
# AFS /usr/afsws/bin/install, which mishandles nonexistent args
|
||||
# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
|
||||
# ./install, which can be erroneously created by make from ./install.sh.
|
||||
echo $ac_n "checking for a BSD compatible install""... $ac_c" 1>&6
|
||||
echo "configure:566: checking for a BSD compatible install" >&5
|
||||
if test -z "$INSTALL"; then
|
||||
if eval "test \"`echo '$''{'ac_cv_path_install'+set}'`\" = set"; then
|
||||
echo $ac_n "(cached) $ac_c" 1>&6
|
||||
else
|
||||
IFS="${IFS= }"; ac_save_IFS="$IFS"; IFS=":"
|
||||
for ac_dir in $PATH; do
|
||||
# Account for people who put trailing slashes in PATH elements.
|
||||
case "$ac_dir/" in
|
||||
/|./|.//|/etc/*|/usr/sbin/*|/usr/etc/*|/sbin/*|/usr/afsws/bin/*|/usr/ucb/*) ;;
|
||||
*)
|
||||
# OSF1 and SCO ODT 3.0 have their own names for install.
|
||||
# Don't use installbsd from OSF since it installs stuff as root
|
||||
# by default.
|
||||
for ac_prog in ginstall scoinst install; do
|
||||
if test -f $ac_dir/$ac_prog; then
|
||||
if test $ac_prog = install &&
|
||||
grep dspmsg $ac_dir/$ac_prog >/dev/null 2>&1; then
|
||||
# AIX install. It has an incompatible calling convention.
|
||||
:
|
||||
else
|
||||
ac_cv_path_install="$ac_dir/$ac_prog -c"
|
||||
break 2
|
||||
fi
|
||||
fi
|
||||
done
|
||||
;;
|
||||
esac
|
||||
done
|
||||
IFS="$ac_save_IFS"
|
||||
|
||||
fi
|
||||
if test "${ac_cv_path_install+set}" = set; then
|
||||
INSTALL="$ac_cv_path_install"
|
||||
else
|
||||
# As a last resort, use the slow shell script. We don't cache a
|
||||
# path for INSTALL within a source directory, because that will
|
||||
# break other packages using the cache if that directory is
|
||||
# removed, or if the path is relative.
|
||||
INSTALL="$ac_install_sh"
|
||||
fi
|
||||
fi
|
||||
echo "$ac_t""$INSTALL" 1>&6
|
||||
|
||||
# Use test -z because SunOS4 sh mishandles braces in ${var-val}.
|
||||
# It thinks the first close brace ends the variable substitution.
|
||||
test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}'
|
||||
|
||||
test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL_PROGRAM}'
|
||||
|
||||
test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
|
||||
|
||||
echo $ac_n "checking whether build environment is sane""... $ac_c" 1>&6
|
||||
echo "configure:619: checking whether build environment is sane" >&5
|
||||
# Just in case
|
||||
sleep 1
|
||||
echo timestamp > conftest.file
|
||||
# Do `set' in a subshell so we don't clobber the current shell's
|
||||
# arguments. Must try -L first in case configure is actually a
|
||||
# symlink; some systems play weird games with the mod time of symlinks
|
||||
# (eg FreeBSD returns the mod time of the symlink's containing
|
||||
# directory).
|
||||
if (
|
||||
set X `ls -Lt $srcdir/configure conftest.file 2> /dev/null`
|
||||
if test "$*" = "X"; then
|
||||
# -L didn't work.
|
||||
set X `ls -t $srcdir/configure conftest.file`
|
||||
fi
|
||||
rm -f conftest.file
|
||||
if test "$*" != "X $srcdir/configure conftest.file" \
|
||||
&& test "$*" != "X conftest.file $srcdir/configure"; then
|
||||
|
||||
# If neither matched, then we have a broken ls. This can happen
|
||||
# if, for instance, CONFIG_SHELL is bash and it inherits a
|
||||
# broken ls alias from the environment. This has actually
|
||||
# happened. Such a system could not be considered "sane".
|
||||
{ echo "configure: error: ls -t appears to fail. Make sure there is not a broken
|
||||
alias in your environment" 1>&2; exit 1; }
|
||||
fi
|
||||
|
||||
test "$2" = conftest.file
|
||||
)
|
||||
then
|
||||
# Ok.
|
||||
:
|
||||
else
|
||||
{ echo "configure: error: newly created file is older than distributed files!
|
||||
Check your system clock" 1>&2; exit 1; }
|
||||
fi
|
||||
echo "$ac_t""yes" 1>&6
|
||||
if test "$program_transform_name" = s,x,x,; then
|
||||
program_transform_name=
|
||||
else
|
||||
# Double any \ or $. echo might interpret backslashes.
|
||||
cat <<\EOF_SED > conftestsed
|
||||
s,\\,\\\\,g; s,\$,$$,g
|
||||
EOF_SED
|
||||
program_transform_name="`echo $program_transform_name|sed -f conftestsed`"
|
||||
rm -f conftestsed
|
||||
fi
|
||||
test "$program_prefix" != NONE &&
|
||||
program_transform_name="s,^,${program_prefix},; $program_transform_name"
|
||||
# Use a double $ so make ignores it.
|
||||
test "$program_suffix" != NONE &&
|
||||
program_transform_name="s,\$\$,${program_suffix},; $program_transform_name"
|
||||
|
||||
# sed with no file args requires a program.
|
||||
test "$program_transform_name" = "" && program_transform_name="s,x,x,"
|
||||
|
||||
test x"${MISSING+set}" = xset || MISSING="\${SHELL} $am_aux_dir/missing"
|
||||
# Use eval to expand $SHELL
|
||||
if eval "$MISSING --run true"; then
|
||||
am_missing_run="$MISSING --run "
|
||||
else
|
||||
am_missing_run=
|
||||
am_backtick='`'
|
||||
echo "configure: warning: ${am_backtick}missing' script is too old or missing" 1>&2
|
||||
fi
|
||||
|
||||
for ac_prog in mawk gawk nawk awk
|
||||
do
|
||||
# Extract the first word of "$ac_prog", so it can be a program name with args.
|
||||
set dummy $ac_prog; ac_word=$2
|
||||
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
|
||||
echo "configure:690: checking for $ac_word" >&5
|
||||
if eval "test \"`echo '$''{'ac_cv_prog_AWK'+set}'`\" = set"; then
|
||||
echo $ac_n "(cached) $ac_c" 1>&6
|
||||
else
|
||||
if test -n "$AWK"; then
|
||||
ac_cv_prog_AWK="$AWK" # Let the user override the test.
|
||||
else
|
||||
IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":"
|
||||
ac_dummy="$PATH"
|
||||
for ac_dir in $ac_dummy; do
|
||||
test -z "$ac_dir" && ac_dir=.
|
||||
if test -f $ac_dir/$ac_word; then
|
||||
ac_cv_prog_AWK="$ac_prog"
|
||||
break
|
||||
fi
|
||||
done
|
||||
IFS="$ac_save_ifs"
|
||||
fi
|
||||
fi
|
||||
AWK="$ac_cv_prog_AWK"
|
||||
if test -n "$AWK"; then
|
||||
echo "$ac_t""$AWK" 1>&6
|
||||
else
|
||||
echo "$ac_t""no" 1>&6
|
||||
fi
|
||||
|
||||
test -n "$AWK" && break
|
||||
done
|
||||
|
||||
echo $ac_n "checking whether ${MAKE-make} sets \${MAKE}""... $ac_c" 1>&6
|
||||
echo "configure:720: checking whether ${MAKE-make} sets \${MAKE}" >&5
|
||||
set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y%./+-%__p_%'`
|
||||
if eval "test \"`echo '$''{'ac_cv_prog_make_${ac_make}_set'+set}'`\" = set"; then
|
||||
echo $ac_n "(cached) $ac_c" 1>&6
|
||||
else
|
||||
cat > conftestmake <<\EOF
|
||||
all:
|
||||
@echo 'ac_maketemp="${MAKE}"'
|
||||
EOF
|
||||
# GNU make sometimes prints "make[1]: Entering...", which would confuse us.
|
||||
eval `${MAKE-make} -f conftestmake 2>/dev/null | grep temp=`
|
||||
if test -n "$ac_maketemp"; then
|
||||
eval ac_cv_prog_make_${ac_make}_set=yes
|
||||
else
|
||||
eval ac_cv_prog_make_${ac_make}_set=no
|
||||
fi
|
||||
rm -f conftestmake
|
||||
fi
|
||||
if eval "test \"`echo '$ac_cv_prog_make_'${ac_make}_set`\" = yes"; then
|
||||
echo "$ac_t""yes" 1>&6
|
||||
SET_MAKE=
|
||||
else
|
||||
echo "$ac_t""no" 1>&6
|
||||
SET_MAKE="MAKE=${MAKE-make}"
|
||||
fi
|
||||
|
||||
# Check whether --enable-dependency-tracking or --disable-dependency-tracking was given.
|
||||
if test "${enable_dependency_tracking+set}" = set; then
|
||||
enableval="$enable_dependency_tracking"
|
||||
:
|
||||
fi
|
||||
|
||||
if test "x$enable_dependency_tracking" != xno; then
|
||||
am_depcomp="$ac_aux_dir/depcomp"
|
||||
AMDEPBACKSLASH='\'
|
||||
fi
|
||||
|
||||
|
||||
if test "x$enable_dependency_tracking" != xno; then
|
||||
AMDEP_TRUE=
|
||||
AMDEP_FALSE='#'
|
||||
else
|
||||
AMDEP_TRUE='#'
|
||||
AMDEP_FALSE=
|
||||
fi
|
||||
|
||||
|
||||
|
||||
|
||||
rm -f .deps 2>/dev/null
|
||||
mkdir .deps 2>/dev/null
|
||||
if test -d .deps; then
|
||||
DEPDIR=.deps
|
||||
else
|
||||
# MS-DOS does not allow filenames that begin with a dot.
|
||||
DEPDIR=_deps
|
||||
fi
|
||||
rmdir .deps 2>/dev/null
|
||||
|
||||
|
||||
# test to see if srcdir already configured
|
||||
if test "`CDPATH=:; cd $srcdir && pwd`" != "`pwd`" &&
|
||||
test -f $srcdir/config.status; then
|
||||
{ echo "configure: error: source directory already configured; run \"make distclean\" there first" 1>&2; exit 1; }
|
||||
fi
|
||||
|
||||
# Define the identity of the package.
|
||||
PACKAGE=stow
|
||||
VERSION=$VERSION
|
||||
cat >> confdefs.h <<EOF
|
||||
#define PACKAGE "$PACKAGE"
|
||||
EOF
|
||||
|
||||
cat >> confdefs.h <<EOF
|
||||
#define VERSION "$VERSION"
|
||||
EOF
|
||||
|
||||
|
||||
# Autoconf 2.50 wants to disallow AM_ names. We explicitly allow
|
||||
# the ones we care about.
|
||||
|
||||
# Autoconf 2.50 always computes EXEEXT. However we need to be
|
||||
# compatible with 2.13, for now. So we always define EXEEXT, but we
|
||||
# don't compute it.
|
||||
|
||||
# Similar for OBJEXT -- only we only use OBJEXT if the user actually
|
||||
# requests that it be used. This is a bit dumb.
|
||||
: ${OBJEXT=o}
|
||||
|
||||
|
||||
# Some tools Automake needs.
|
||||
|
||||
ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal"}
|
||||
|
||||
|
||||
AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"}
|
||||
|
||||
|
||||
AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake"}
|
||||
|
||||
|
||||
AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"}
|
||||
|
||||
|
||||
MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"}
|
||||
|
||||
|
||||
AMTAR=${AMTAR-"${am_missing_run}tar"}
|
||||
|
||||
install_sh=${install_sh-"$am_aux_dir/install-sh"}
|
||||
|
||||
INSTALL_STRIP_PROGRAM="\${SHELL} \$(install_sh) -c -s"
|
||||
|
||||
# We need awk for the "check" target. The system "awk" is bad on
|
||||
# some platforms.
|
||||
|
||||
|
||||
|
||||
|
||||
|
@ -538,25 +855,6 @@ test "$program_suffix" != NONE &&
|
|||
test "$program_transform_name" = "" && program_transform_name="s,x,x,"
|
||||
|
||||
|
||||
ac_aux_dir=
|
||||
for ac_dir in $srcdir $srcdir/.. $srcdir/../..; do
|
||||
if test -f $ac_dir/install-sh; then
|
||||
ac_aux_dir=$ac_dir
|
||||
ac_install_sh="$ac_aux_dir/install-sh -c"
|
||||
break
|
||||
elif test -f $ac_dir/install.sh; then
|
||||
ac_aux_dir=$ac_dir
|
||||
ac_install_sh="$ac_aux_dir/install.sh -c"
|
||||
break
|
||||
fi
|
||||
done
|
||||
if test -z "$ac_aux_dir"; then
|
||||
{ echo "configure: error: can not find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." 1>&2; exit 1; }
|
||||
fi
|
||||
ac_config_guess=$ac_aux_dir/config.guess
|
||||
ac_config_sub=$ac_aux_dir/config.sub
|
||||
ac_configure=$ac_aux_dir/configure # This should be Cygnus configure.
|
||||
|
||||
# Find a good install program. We prefer a C program (faster),
|
||||
# so one script is as good as another. But avoid the broken or
|
||||
# incompatible versions:
|
||||
|
@ -564,27 +862,30 @@ ac_configure=$ac_aux_dir/configure # This should be Cygnus configure.
|
|||
# SunOS /usr/etc/install
|
||||
# IRIX /sbin/install
|
||||
# AIX /bin/install
|
||||
# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag
|
||||
# AFS /usr/afsws/bin/install, which mishandles nonexistent args
|
||||
# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
|
||||
# ./install, which can be erroneously created by make from ./install.sh.
|
||||
echo $ac_n "checking for a BSD compatible install""... $ac_c" 1>&6
|
||||
echo "configure:871: checking for a BSD compatible install" >&5
|
||||
if test -z "$INSTALL"; then
|
||||
if eval "test \"`echo '$''{'ac_cv_path_install'+set}'`\" = set"; then
|
||||
echo $ac_n "(cached) $ac_c" 1>&6
|
||||
else
|
||||
IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
|
||||
IFS="${IFS= }"; ac_save_IFS="$IFS"; IFS=":"
|
||||
for ac_dir in $PATH; do
|
||||
# Account for people who put trailing slashes in PATH elements.
|
||||
case "$ac_dir/" in
|
||||
/|./|.//|/etc/*|/usr/sbin/*|/usr/etc/*|/sbin/*|/usr/afsws/bin/*|/usr/ucb/*) ;;
|
||||
*)
|
||||
# OSF1 and SCO ODT 3.0 have their own names for install.
|
||||
for ac_prog in ginstall installbsd scoinst install; do
|
||||
# Don't use installbsd from OSF since it installs stuff as root
|
||||
# by default.
|
||||
for ac_prog in ginstall scoinst install; do
|
||||
if test -f $ac_dir/$ac_prog; then
|
||||
if test $ac_prog = install &&
|
||||
grep dspmsg $ac_dir/$ac_prog >/dev/null 2>&1; then
|
||||
# AIX install. It has an incompatible calling convention.
|
||||
# OSF/1 installbsd also uses dspmsg, but is usable.
|
||||
:
|
||||
else
|
||||
ac_cv_path_install="$ac_dir/$ac_prog -c"
|
||||
|
@ -595,7 +896,7 @@ else
|
|||
;;
|
||||
esac
|
||||
done
|
||||
IFS="$ac_save_ifs"
|
||||
IFS="$ac_save_IFS"
|
||||
|
||||
fi
|
||||
if test "${ac_cv_path_install+set}" = set; then
|
||||
|
@ -614,16 +915,17 @@ echo "$ac_t""$INSTALL" 1>&6
|
|||
# It thinks the first close brace ends the variable substitution.
|
||||
test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}'
|
||||
|
||||
test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL_PROGRAM}'
|
||||
|
||||
test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
|
||||
|
||||
test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL} -m 755'
|
||||
|
||||
|
||||
for ac_prog in perl perl5 perl4
|
||||
for ac_prog in perl perl5
|
||||
do
|
||||
# Extract the first word of "$ac_prog", so it can be a program name with args.
|
||||
set dummy $ac_prog; ac_word=$2
|
||||
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
|
||||
echo "configure:929: checking for $ac_word" >&5
|
||||
if eval "test \"`echo '$''{'ac_cv_path_PERL'+set}'`\" = set"; then
|
||||
echo $ac_n "(cached) $ac_c" 1>&6
|
||||
else
|
||||
|
@ -631,9 +933,13 @@ else
|
|||
/*)
|
||||
ac_cv_path_PERL="$PERL" # Let the user override the test with a path.
|
||||
;;
|
||||
?:/*)
|
||||
ac_cv_path_PERL="$PERL" # Let the user override the test with a dos path.
|
||||
;;
|
||||
*)
|
||||
IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
|
||||
for ac_dir in $PATH; do
|
||||
IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":"
|
||||
ac_dummy="$PATH"
|
||||
for ac_dir in $ac_dummy; do
|
||||
test -z "$ac_dir" && ac_dir=.
|
||||
if test -f $ac_dir/$ac_word; then
|
||||
ac_cv_path_PERL="$ac_dir/$ac_word"
|
||||
|
@ -678,11 +984,25 @@ cat > confcache <<\EOF
|
|||
# --recheck option to rerun configure.
|
||||
#
|
||||
EOF
|
||||
# The following way of writing the cache mishandles newlines in values,
|
||||
# but we know of no workaround that is simple, portable, and efficient.
|
||||
# So, don't put newlines in cache variables' values.
|
||||
# Ultrix sh set writes to stderr and can't be redirected directly,
|
||||
# and sets the high bit in the cache file unless we assign to the vars.
|
||||
(set) 2>&1 |
|
||||
sed -n "s/^\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\)=\(.*\)/\1=\${\1='\2'}/p" \
|
||||
>> confcache
|
||||
case `(ac_space=' '; set | grep ac_space) 2>&1` in
|
||||
*ac_space=\ *)
|
||||
# `set' does not quote correctly, so add quotes (double-quote substitution
|
||||
# turns \\\\ into \\, and sed turns \\ into \).
|
||||
sed -n \
|
||||
-e "s/'/'\\\\''/g" \
|
||||
-e "s/^\\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\\)=\\(.*\\)/\\1=\${\\1='\\2'}/p"
|
||||
;;
|
||||
*)
|
||||
# `set' quotes correctly as required by POSIX, so do not add quotes.
|
||||
sed -n -e 's/^\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\)=\(.*\)/\1=${\1=\2}/p'
|
||||
;;
|
||||
esac >> confcache
|
||||
if cmp -s $cache_file confcache; then
|
||||
:
|
||||
else
|
||||
|
@ -749,7 +1069,7 @@ do
|
|||
echo "running \${CONFIG_SHELL-/bin/sh} $0 $ac_configure_args --no-create --no-recursion"
|
||||
exec \${CONFIG_SHELL-/bin/sh} $0 $ac_configure_args --no-create --no-recursion ;;
|
||||
-version | --version | --versio | --versi | --vers | --ver | --ve | --v)
|
||||
echo "$CONFIG_STATUS generated by autoconf version 2.10"
|
||||
echo "$CONFIG_STATUS generated by autoconf version 2.13"
|
||||
exit 0 ;;
|
||||
-help | --help | --hel | --he | --h)
|
||||
echo "\$ac_cs_usage"; exit 0 ;;
|
||||
|
@ -769,9 +1089,11 @@ sed 's/%@/@@/; s/@%/@@/; s/%g\$/@g/; /@g\$/s/[\\\\&%]/\\\\&/g;
|
|||
s/@@/%@/; s/@@/@%/; s/@g\$/%g/' > conftest.subs <<\\CEOF
|
||||
$ac_vpsub
|
||||
$extrasub
|
||||
s%@SHELL@%$SHELL%g
|
||||
s%@CFLAGS@%$CFLAGS%g
|
||||
s%@CPPFLAGS@%$CPPFLAGS%g
|
||||
s%@CXXFLAGS@%$CXXFLAGS%g
|
||||
s%@FFLAGS@%$FFLAGS%g
|
||||
s%@DEFS@%$DEFS%g
|
||||
s%@LDFLAGS@%$LDFLAGS%g
|
||||
s%@LIBS@%$LIBS%g
|
||||
|
@ -790,29 +1112,81 @@ s%@includedir@%$includedir%g
|
|||
s%@oldincludedir@%$oldincludedir%g
|
||||
s%@infodir@%$infodir%g
|
||||
s%@mandir@%$mandir%g
|
||||
s%@INSTALL_PROGRAM@%$INSTALL_PROGRAM%g
|
||||
s%@INSTALL_SCRIPT@%$INSTALL_SCRIPT%g
|
||||
s%@INSTALL_DATA@%$INSTALL_DATA%g
|
||||
s%@PACKAGE@%$PACKAGE%g
|
||||
s%@VERSION@%$VERSION%g
|
||||
s%@INSTALL_PROGRAM@%$INSTALL_PROGRAM%g
|
||||
s%@INSTALL_DATA@%$INSTALL_DATA%g
|
||||
s%@INSTALL_SCRIPT@%$INSTALL_SCRIPT%g
|
||||
s%@EXEEXT@%$EXEEXT%g
|
||||
s%@OBJEXT@%$OBJEXT%g
|
||||
s%@ACLOCAL@%$ACLOCAL%g
|
||||
s%@AUTOCONF@%$AUTOCONF%g
|
||||
s%@AUTOMAKE@%$AUTOMAKE%g
|
||||
s%@AUTOHEADER@%$AUTOHEADER%g
|
||||
s%@MAKEINFO@%$MAKEINFO%g
|
||||
s%@AMTAR@%$AMTAR%g
|
||||
s%@install_sh@%$install_sh%g
|
||||
s%@INSTALL_STRIP_PROGRAM@%$INSTALL_STRIP_PROGRAM%g
|
||||
s%@AWK@%$AWK%g
|
||||
s%@SET_MAKE@%$SET_MAKE%g
|
||||
s%@AMDEP_TRUE@%$AMDEP_TRUE%g
|
||||
s%@AMDEP_FALSE@%$AMDEP_FALSE%g
|
||||
s%@AMDEPBACKSLASH@%$AMDEPBACKSLASH%g
|
||||
s%@DEPDIR@%$DEPDIR%g
|
||||
s%@PERL@%$PERL%g
|
||||
|
||||
CEOF
|
||||
EOF
|
||||
|
||||
cat >> $CONFIG_STATUS <<\EOF
|
||||
|
||||
# Split the substitutions into bite-sized pieces for seds with
|
||||
# small command number limits, like on Digital OSF/1 and HP-UX.
|
||||
ac_max_sed_cmds=90 # Maximum number of lines to put in a sed script.
|
||||
ac_file=1 # Number of current file.
|
||||
ac_beg=1 # First line for current file.
|
||||
ac_end=$ac_max_sed_cmds # Line after last line for current file.
|
||||
ac_more_lines=:
|
||||
ac_sed_cmds=""
|
||||
while $ac_more_lines; do
|
||||
if test $ac_beg -gt 1; then
|
||||
sed "1,${ac_beg}d; ${ac_end}q" conftest.subs > conftest.s$ac_file
|
||||
else
|
||||
sed "${ac_end}q" conftest.subs > conftest.s$ac_file
|
||||
fi
|
||||
if test ! -s conftest.s$ac_file; then
|
||||
ac_more_lines=false
|
||||
rm -f conftest.s$ac_file
|
||||
else
|
||||
if test -z "$ac_sed_cmds"; then
|
||||
ac_sed_cmds="sed -f conftest.s$ac_file"
|
||||
else
|
||||
ac_sed_cmds="$ac_sed_cmds | sed -f conftest.s$ac_file"
|
||||
fi
|
||||
ac_file=`expr $ac_file + 1`
|
||||
ac_beg=$ac_end
|
||||
ac_end=`expr $ac_end + $ac_max_sed_cmds`
|
||||
fi
|
||||
done
|
||||
if test -z "$ac_sed_cmds"; then
|
||||
ac_sed_cmds=cat
|
||||
fi
|
||||
EOF
|
||||
|
||||
cat >> $CONFIG_STATUS <<EOF
|
||||
|
||||
CONFIG_FILES=\${CONFIG_FILES-"Makefile stow"}
|
||||
EOF
|
||||
cat >> $CONFIG_STATUS <<\EOF
|
||||
for ac_file in .. $CONFIG_FILES; do if test "x$ac_file" != x..; then
|
||||
# Support "outfile[:infile]", defaulting infile="outfile.in".
|
||||
# Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in".
|
||||
case "$ac_file" in
|
||||
*:*) ac_file_in=`echo "$ac_file"|sed 's%.*:%%'`
|
||||
*:*) ac_file_in=`echo "$ac_file"|sed 's%[^:]*:%%'`
|
||||
ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;;
|
||||
*) ac_file_in="${ac_file}.in" ;;
|
||||
esac
|
||||
|
||||
# Adjust relative srcdir, etc. for subdirectories.
|
||||
# Adjust a relative srcdir, top_srcdir, and INSTALL for subdirectories.
|
||||
|
||||
# Remove last slash and all that follows it. Not all systems have dirname.
|
||||
ac_dir=`echo $ac_file|sed 's%/[^/][^/]*$%%'`
|
||||
|
@ -840,6 +1214,7 @@ for ac_file in .. $CONFIG_FILES; do if test "x$ac_file" != x..; then
|
|||
[/$]*) INSTALL="$ac_given_INSTALL" ;;
|
||||
*) INSTALL="$ac_dots$ac_given_INSTALL" ;;
|
||||
esac
|
||||
|
||||
echo creating "$ac_file"
|
||||
rm -f "$ac_file"
|
||||
configure_input="Generated automatically from `echo $ac_file_in|sed 's%.*/%%'` by configure."
|
||||
|
@ -848,16 +1223,22 @@ for ac_file in .. $CONFIG_FILES; do if test "x$ac_file" != x..; then
|
|||
# $configure_input" ;;
|
||||
*) ac_comsub= ;;
|
||||
esac
|
||||
|
||||
ac_file_inputs=`echo $ac_file_in|sed -e "s%^%$ac_given_srcdir/%" -e "s%:% $ac_given_srcdir/%g"`
|
||||
sed -e "$ac_comsub
|
||||
s%@configure_input@%$configure_input%g
|
||||
s%@srcdir@%$srcdir%g
|
||||
s%@top_srcdir@%$top_srcdir%g
|
||||
s%@INSTALL@%$INSTALL%g
|
||||
" -f conftest.subs $ac_given_srcdir/$ac_file_in > $ac_file
|
||||
" $ac_file_inputs | (eval "$ac_sed_cmds") > $ac_file
|
||||
fi; done
|
||||
rm -f conftest.subs
|
||||
rm -f conftest.s*
|
||||
|
||||
EOF
|
||||
cat >> $CONFIG_STATUS <<EOF
|
||||
|
||||
EOF
|
||||
cat >> $CONFIG_STATUS <<\EOF
|
||||
|
||||
exit 0
|
||||
EOF
|
||||
|
|
|
@ -3,15 +3,16 @@ dnl Process this file with Autoconf to produce configure
|
|||
AC_INIT(stow.in)
|
||||
|
||||
PACKAGE=stow
|
||||
VERSION=1.3.2
|
||||
VERSION=1.3.3
|
||||
AM_INIT_AUTOMAKE(stow, $VERSION)
|
||||
AC_SUBST(PACKAGE)
|
||||
AC_SUBST(VERSION)
|
||||
|
||||
AC_ARG_PROGRAM
|
||||
|
||||
fp_PROG_INSTALL
|
||||
AC_PROG_INSTALL
|
||||
|
||||
AC_PATH_PROGS(PERL, perl perl5 perl4, false)
|
||||
AC_PATH_PROGS(PERL, perl perl5, false)
|
||||
|
||||
if test "x$PERL" = xfalse
|
||||
then
|
||||
|
|
21
install-sh
21
install-sh
|
@ -1,15 +1,27 @@
|
|||
#! /bin/sh
|
||||
#!/bin/sh
|
||||
#
|
||||
# install - install a program, script, or datafile
|
||||
# This comes from X11R5.
|
||||
# This comes from X11R5 (mit/util/scripts/install.sh).
|
||||
#
|
||||
# Copyright 1991 by the Massachusetts Institute of Technology
|
||||
#
|
||||
# Permission to use, copy, modify, distribute, and sell this software and its
|
||||
# documentation for any purpose is hereby granted without fee, provided that
|
||||
# the above copyright notice appear in all copies and that both that
|
||||
# copyright notice and this permission notice appear in supporting
|
||||
# documentation, and that the name of M.I.T. not be used in advertising or
|
||||
# publicity pertaining to distribution of the software without specific,
|
||||
# written prior permission. M.I.T. makes no representations about the
|
||||
# suitability of this software for any purpose. It is provided "as is"
|
||||
# without express or implied warranty.
|
||||
#
|
||||
# Calling this script install-sh is preferred over install.sh, to prevent
|
||||
# `make' implicit rules from creating a file called install from it
|
||||
# when there is no Makefile.
|
||||
#
|
||||
# This script is compatible with the BSD install script, but was written
|
||||
# from scratch.
|
||||
#
|
||||
# from scratch. It can only install one file at a time, a restriction
|
||||
# shared with many OS's install programs.
|
||||
|
||||
|
||||
# set DOITPROG to echo to test this script
|
||||
|
@ -106,6 +118,7 @@ if [ x"$dir_arg" != x ]; then
|
|||
|
||||
if [ -d $dst ]; then
|
||||
instcmd=:
|
||||
chmodcmd=""
|
||||
else
|
||||
instcmd=mkdir
|
||||
fi
|
||||
|
|
26
mdate-sh
26
mdate-sh
|
@ -1,7 +1,7 @@
|
|||
#!/bin/sh
|
||||
# mdate-sh - get modification time of a file and pretty-print it
|
||||
# Copyright (C) 1995 Software Foundation, Inc.
|
||||
# Written by Ulrich Drepper <drepper@gnu.ai.mit.edu>, June 1995
|
||||
# Get modification time of a file or directory and pretty-print it.
|
||||
# Copyright 1995, 1996, 1997 Free Software Foundation, Inc.
|
||||
# written by Ulrich Drepper <drepper@gnu.ai.mit.edu>, June 1995
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
|
@ -14,8 +14,13 @@
|
|||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
# along with this program; if not, write to the Free Software Foundation,
|
||||
# Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
|
||||
# As a special exception to the GNU General Public License, if you
|
||||
# distribute this file as part of a program that contains a
|
||||
# configuration script generated by Autoconf, you may include it under
|
||||
# the same distribution terms that you use for the rest of that program.
|
||||
|
||||
# Prevent date giving response in another language.
|
||||
LANG=C
|
||||
|
@ -25,14 +30,15 @@ export LC_ALL
|
|||
LC_TIME=C
|
||||
export LC_TIME
|
||||
|
||||
# Get the extended ls output of the file.
|
||||
# Get the extended ls output of the file or directory.
|
||||
# On HPUX /bin/sh, "set" interprets "-rw-r--r--" as options, so the "x" below.
|
||||
if ls -L /dev/null 1>/dev/null 2>&1; then
|
||||
set - `ls -L -l $1`
|
||||
set - x`ls -L -l -d $1`
|
||||
else
|
||||
set - `ls -l $1`
|
||||
set - x`ls -l -d $1`
|
||||
fi
|
||||
# The month is at least the fourth argument.
|
||||
# (3 shifts here, the next inside the loop)
|
||||
# The month is at least the fourth argument
|
||||
# (3 shifts here, the next inside the loop).
|
||||
shift
|
||||
shift
|
||||
shift
|
||||
|
|
283
missing
Executable file
283
missing
Executable file
|
@ -0,0 +1,283 @@
|
|||
#! /bin/sh
|
||||
# Common stub for a few missing GNU programs while installing.
|
||||
# Copyright 1996, 1997, 1999, 2000 Free Software Foundation, Inc.
|
||||
# Originally by Fran,cois Pinard <pinard@iro.umontreal.ca>, 1996.
|
||||
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 2, or (at your option)
|
||||
# any later version.
|
||||
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
||||
# 02111-1307, USA.
|
||||
|
||||
# As a special exception to the GNU General Public License, if you
|
||||
# distribute this file as part of a program that contains a
|
||||
# configuration script generated by Autoconf, you may include it under
|
||||
# the same distribution terms that you use for the rest of that program.
|
||||
|
||||
if test $# -eq 0; then
|
||||
echo 1>&2 "Try \`$0 --help' for more information"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
run=:
|
||||
|
||||
# In the cases where this matters, `missing' is being run in the
|
||||
# srcdir already.
|
||||
if test -f configure.ac; then
|
||||
configure_ac=configure.ac
|
||||
else
|
||||
configure_ac=configure.in
|
||||
fi
|
||||
|
||||
case "$1" in
|
||||
--run)
|
||||
# Try to run requested program, and just exit if it succeeds.
|
||||
run=
|
||||
shift
|
||||
"$@" && exit 0
|
||||
;;
|
||||
esac
|
||||
|
||||
# If it does not exist, or fails to run (possibly an outdated version),
|
||||
# try to emulate it.
|
||||
case "$1" in
|
||||
|
||||
-h|--h|--he|--hel|--help)
|
||||
echo "\
|
||||
$0 [OPTION]... PROGRAM [ARGUMENT]...
|
||||
|
||||
Handle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an
|
||||
error status if there is no known handling for PROGRAM.
|
||||
|
||||
Options:
|
||||
-h, --help display this help and exit
|
||||
-v, --version output version information and exit
|
||||
--run try to run the given command, and emulate it if it fails
|
||||
|
||||
Supported PROGRAM values:
|
||||
aclocal touch file \`aclocal.m4'
|
||||
autoconf touch file \`configure'
|
||||
autoheader touch file \`config.h.in'
|
||||
automake touch all \`Makefile.in' files
|
||||
bison create \`y.tab.[ch]', if possible, from existing .[ch]
|
||||
flex create \`lex.yy.c', if possible, from existing .c
|
||||
help2man touch the output file
|
||||
lex create \`lex.yy.c', if possible, from existing .c
|
||||
makeinfo touch the output file
|
||||
tar try tar, gnutar, gtar, then tar without non-portable flags
|
||||
yacc create \`y.tab.[ch]', if possible, from existing .[ch]"
|
||||
;;
|
||||
|
||||
-v|--v|--ve|--ver|--vers|--versi|--versio|--version)
|
||||
echo "missing 0.3 - GNU automake"
|
||||
;;
|
||||
|
||||
-*)
|
||||
echo 1>&2 "$0: Unknown \`$1' option"
|
||||
echo 1>&2 "Try \`$0 --help' for more information"
|
||||
exit 1
|
||||
;;
|
||||
|
||||
aclocal)
|
||||
echo 1>&2 "\
|
||||
WARNING: \`$1' is missing on your system. You should only need it if
|
||||
you modified \`acinclude.m4' or \`${configure_ac}'. You might want
|
||||
to install the \`Automake' and \`Perl' packages. Grab them from
|
||||
any GNU archive site."
|
||||
touch aclocal.m4
|
||||
;;
|
||||
|
||||
autoconf)
|
||||
echo 1>&2 "\
|
||||
WARNING: \`$1' is missing on your system. You should only need it if
|
||||
you modified \`${configure_ac}'. You might want to install the
|
||||
\`Autoconf' and \`GNU m4' packages. Grab them from any GNU
|
||||
archive site."
|
||||
touch configure
|
||||
;;
|
||||
|
||||
autoheader)
|
||||
echo 1>&2 "\
|
||||
WARNING: \`$1' is missing on your system. You should only need it if
|
||||
you modified \`acconfig.h' or \`${configure_ac}'. You might want
|
||||
to install the \`Autoconf' and \`GNU m4' packages. Grab them
|
||||
from any GNU archive site."
|
||||
files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' ${configure_ac}`
|
||||
test -z "$files" && files="config.h"
|
||||
touch_files=
|
||||
for f in $files; do
|
||||
case "$f" in
|
||||
*:*) touch_files="$touch_files "`echo "$f" |
|
||||
sed -e 's/^[^:]*://' -e 's/:.*//'`;;
|
||||
*) touch_files="$touch_files $f.in";;
|
||||
esac
|
||||
done
|
||||
touch $touch_files
|
||||
;;
|
||||
|
||||
automake)
|
||||
echo 1>&2 "\
|
||||
WARNING: \`$1' is missing on your system. You should only need it if
|
||||
you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'.
|
||||
You might want to install the \`Automake' and \`Perl' packages.
|
||||
Grab them from any GNU archive site."
|
||||
find . -type f -name Makefile.am -print |
|
||||
sed 's/\.am$/.in/' |
|
||||
while read f; do touch "$f"; done
|
||||
;;
|
||||
|
||||
bison|yacc)
|
||||
echo 1>&2 "\
|
||||
WARNING: \`$1' is missing on your system. You should only need it if
|
||||
you modified a \`.y' file. You may need the \`Bison' package
|
||||
in order for those modifications to take effect. You can get
|
||||
\`Bison' from any GNU archive site."
|
||||
rm -f y.tab.c y.tab.h
|
||||
if [ $# -ne 1 ]; then
|
||||
eval LASTARG="\${$#}"
|
||||
case "$LASTARG" in
|
||||
*.y)
|
||||
SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'`
|
||||
if [ -f "$SRCFILE" ]; then
|
||||
cp "$SRCFILE" y.tab.c
|
||||
fi
|
||||
SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'`
|
||||
if [ -f "$SRCFILE" ]; then
|
||||
cp "$SRCFILE" y.tab.h
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
if [ ! -f y.tab.h ]; then
|
||||
echo >y.tab.h
|
||||
fi
|
||||
if [ ! -f y.tab.c ]; then
|
||||
echo 'main() { return 0; }' >y.tab.c
|
||||
fi
|
||||
;;
|
||||
|
||||
lex|flex)
|
||||
echo 1>&2 "\
|
||||
WARNING: \`$1' is missing on your system. You should only need it if
|
||||
you modified a \`.l' file. You may need the \`Flex' package
|
||||
in order for those modifications to take effect. You can get
|
||||
\`Flex' from any GNU archive site."
|
||||
rm -f lex.yy.c
|
||||
if [ $# -ne 1 ]; then
|
||||
eval LASTARG="\${$#}"
|
||||
case "$LASTARG" in
|
||||
*.l)
|
||||
SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'`
|
||||
if [ -f "$SRCFILE" ]; then
|
||||
cp "$SRCFILE" lex.yy.c
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
if [ ! -f lex.yy.c ]; then
|
||||
echo 'main() { return 0; }' >lex.yy.c
|
||||
fi
|
||||
;;
|
||||
|
||||
help2man)
|
||||
echo 1>&2 "\
|
||||
WARNING: \`$1' is missing on your system. You should only need it if
|
||||
you modified a dependency of a manual page. You may need the
|
||||
\`Help2man' package in order for those modifications to take
|
||||
effect. You can get \`Help2man' from any GNU archive site."
|
||||
|
||||
file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'`
|
||||
if test -z "$file"; then
|
||||
file=`echo "$*" | sed -n 's/.*--output=\([^ ]*\).*/\1/p'`
|
||||
fi
|
||||
if [ -f "$file" ]; then
|
||||
touch $file
|
||||
else
|
||||
test -z "$file" || exec >$file
|
||||
echo ".ab help2man is required to generate this page"
|
||||
exit 1
|
||||
fi
|
||||
;;
|
||||
|
||||
makeinfo)
|
||||
if test -z "$run" && (makeinfo --version) > /dev/null 2>&1; then
|
||||
# We have makeinfo, but it failed.
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo 1>&2 "\
|
||||
WARNING: \`$1' is missing on your system. You should only need it if
|
||||
you modified a \`.texi' or \`.texinfo' file, or any other file
|
||||
indirectly affecting the aspect of the manual. The spurious
|
||||
call might also be the consequence of using a buggy \`make' (AIX,
|
||||
DU, IRIX). You might want to install the \`Texinfo' package or
|
||||
the \`GNU make' package. Grab either from any GNU archive site."
|
||||
file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'`
|
||||
if test -z "$file"; then
|
||||
file=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'`
|
||||
file=`sed -n '/^@setfilename/ { s/.* \([^ ]*\) *$/\1/; p; q; }' $file`
|
||||
fi
|
||||
touch $file
|
||||
;;
|
||||
|
||||
tar)
|
||||
shift
|
||||
if test -n "$run"; then
|
||||
echo 1>&2 "ERROR: \`tar' requires --run"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# We have already tried tar in the generic part.
|
||||
# Look for gnutar/gtar before invocation to avoid ugly error
|
||||
# messages.
|
||||
if (gnutar --version > /dev/null 2>&1); then
|
||||
gnutar ${1+"$@"} && exit 0
|
||||
fi
|
||||
if (gtar --version > /dev/null 2>&1); then
|
||||
gtar ${1+"$@"} && exit 0
|
||||
fi
|
||||
firstarg="$1"
|
||||
if shift; then
|
||||
case "$firstarg" in
|
||||
*o*)
|
||||
firstarg=`echo "$firstarg" | sed s/o//`
|
||||
tar "$firstarg" ${1+"$@"} && exit 0
|
||||
;;
|
||||
esac
|
||||
case "$firstarg" in
|
||||
*h*)
|
||||
firstarg=`echo "$firstarg" | sed s/h//`
|
||||
tar "$firstarg" ${1+"$@"} && exit 0
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
|
||||
echo 1>&2 "\
|
||||
WARNING: I can't seem to be able to run \`tar' with the given arguments.
|
||||
You may want to install GNU tar or Free paxutils, or check the
|
||||
command line arguments."
|
||||
exit 1
|
||||
;;
|
||||
|
||||
*)
|
||||
echo 1>&2 "\
|
||||
WARNING: \`$1' is needed, and you do not seem to have it handy on your
|
||||
system. You might have modified some files without having the
|
||||
proper tools for further handling them. Check the \`README' file,
|
||||
it often tells you about the needed prerequirements for installing
|
||||
this package. You may also peek at any GNU archive site, in case
|
||||
some other package would contain this missing \`$1' program."
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
|
||||
exit 0
|
|
@ -2,29 +2,33 @@
|
|||
# mkinstalldirs --- make directory hierarchy
|
||||
# Author: Noah Friedman <friedman@prep.ai.mit.edu>
|
||||
# Created: 1993-05-16
|
||||
# Last modified: 1994-03-25
|
||||
# Public domain
|
||||
|
||||
# $Id: mkinstalldirs,v 1.13 1999/01/05 03:18:55 bje Exp $
|
||||
|
||||
errstatus=0
|
||||
|
||||
for file in ${1+"$@"} ; do
|
||||
for file
|
||||
do
|
||||
set fnord `echo ":$file" | sed -ne 's/^:\//#/;s/^://;s/\// /g;s/^#/\//;p'`
|
||||
shift
|
||||
|
||||
pathcomp=
|
||||
for d in ${1+"$@"} ; do
|
||||
for d
|
||||
do
|
||||
pathcomp="$pathcomp$d"
|
||||
case "$pathcomp" in
|
||||
-* ) pathcomp=./$pathcomp ;;
|
||||
esac
|
||||
|
||||
if test ! -d "$pathcomp"; then
|
||||
echo "mkdir $pathcomp" 1>&2
|
||||
mkdir "$pathcomp" > /dev/null 2>&1 || lasterr=$?
|
||||
fi
|
||||
echo "mkdir $pathcomp"
|
||||
|
||||
if test ! -d "$pathcomp"; then
|
||||
errstatus=$lasterr
|
||||
mkdir "$pathcomp" || lasterr=$?
|
||||
|
||||
if test ! -d "$pathcomp"; then
|
||||
errstatus=$lasterr
|
||||
fi
|
||||
fi
|
||||
|
||||
pathcomp="$pathcomp/"
|
||||
|
|
|
@ -1 +1,4 @@
|
|||
timestamp
|
||||
@set UPDATED 5 January 2002
|
||||
@set UPDATED-MONTH January 2002
|
||||
@set EDITION 1.3.3
|
||||
@set VERSION 1.3.3
|
||||
|
|
448
stow.8
Normal file
448
stow.8
Normal file
|
@ -0,0 +1,448 @@
|
|||
.TH STOW 8 "28 March 1998"
|
||||
.SH NAME
|
||||
stow \- software package installation manager
|
||||
.SH SYNOPSIS
|
||||
.B stow
|
||||
.RI [ options ]
|
||||
.IR package ...
|
||||
.SH DESCRIPTION
|
||||
This manual page describes GNU Stow 1.3.3, a program for managing the
|
||||
installation of software packages. This is not the definitive
|
||||
documentation for stow; for that, see the info manual.
|
||||
.PP
|
||||
Stow is a tool for managing the installation of multiple software
|
||||
packages in the same run-time directory tree. One historical difficulty
|
||||
of this task has been the need to administer, upgrade, install, and
|
||||
remove files in independent packages without confusing them with other
|
||||
files sharing the same filesystem space. For instance, it is common to
|
||||
install Perl and Emacs in
|
||||
.IR /usr/local .
|
||||
When one does so, one winds up
|
||||
(as of Perl 4.036 and Emacs 19.22)
|
||||
with the following files in
|
||||
.IR /usr/local/man/man1 :
|
||||
.IR a2p.1 ;
|
||||
.IR ctags.1 ;
|
||||
.IR emacs.1 ;
|
||||
.IR etags.1 ;
|
||||
.IR h2ph.1 ;
|
||||
.IR perl.1 ;
|
||||
and
|
||||
.IR s2p.1 .
|
||||
Now
|
||||
suppose it's time to uninstall Perl. Which man pages get removed?
|
||||
Obviously
|
||||
.I perl.1
|
||||
is one of them, but it should not be the
|
||||
administrator's responsibility to memorize the ownership of individual
|
||||
files by separate packages.
|
||||
.PP
|
||||
The approach used by Stow is to install each package into its own
|
||||
tree, then use symbolic links to make it appear as though the files are
|
||||
installed in the common tree. Administration can be performed in the
|
||||
package's private tree in isolation from clutter from other packages.
|
||||
Stow can then be used to update the symbolic links. The structure of
|
||||
each private tree should reflect the desired structure in the common
|
||||
tree; i.e. (in the typical case) there should be a
|
||||
.I bin
|
||||
directory
|
||||
containing executables, a
|
||||
.I man/man1
|
||||
directory containing section 1 man
|
||||
pages, and so on.
|
||||
.PP
|
||||
Stow was inspired by Carnegie Mellon's Depot program, but is
|
||||
substantially simpler and safer. Whereas Depot required database files
|
||||
to keep things in sync, Stow stores no extra state between runs, so
|
||||
there's no danger (as there was in Depot) of mangling directories when
|
||||
file hierarchies don't match the database. Also unlike Depot, Stow will
|
||||
never delete any files, directories, or links that appear in a Stow
|
||||
directory (e.g.,
|
||||
.IR /usr/local/stow/emacs ),
|
||||
so it's always possible to
|
||||
rebuild the target tree (e.g.,
|
||||
.IR /usr/local ).
|
||||
.SH TERMINOLOGY
|
||||
A ``package'' is a related collection of files and directories that
|
||||
you wish to administer as a unit--e.g., Perl or Emacs--and that needs
|
||||
to be installed in a particular directory structure--e.g., with
|
||||
.IR bin ,
|
||||
.IR lib ,
|
||||
and
|
||||
.I man
|
||||
subdirectories.
|
||||
.PP
|
||||
A ``target directory'' is the root of a tree in which one or more
|
||||
packages wish to
|
||||
.B appear
|
||||
to be installed. A common, but by no means
|
||||
the only such location is
|
||||
.IR /usr/local .
|
||||
The examples in this manual page
|
||||
will use
|
||||
.I /usr/local
|
||||
as the target directory.
|
||||
.PP
|
||||
A ``stow directory'' is the root of a tree containing separate
|
||||
packages in private subtrees. When Stow runs, it uses the current
|
||||
directory as the default stow directory. The examples in this manual
|
||||
page will use
|
||||
.I /usr/local/stow
|
||||
as the stow directory, so that individual
|
||||
packages will be, for example,
|
||||
.I /usr/local/stow/perl
|
||||
and
|
||||
.IR /usr/local/stow/emacs .
|
||||
.PP
|
||||
An ``installation image'' is the layout of files and directories
|
||||
required by a package, relative to the target directory. Thus, the
|
||||
installation image for Perl includes: a
|
||||
.I bin
|
||||
directory containing
|
||||
.I perl
|
||||
and
|
||||
.I a2p
|
||||
(among others); an
|
||||
.I info
|
||||
directory containing Texinfo
|
||||
documentation; a
|
||||
.I lib/perl
|
||||
directory containing Perl libraries; and a
|
||||
.I man/man1
|
||||
directory containing man pages.
|
||||
.PP
|
||||
A ``package directory'' is the root of a tree containing the
|
||||
installation image for a particular package. Each package directory
|
||||
must reside in a stow directory--e.g., the package directory
|
||||
.I /usr/local/stow/perl
|
||||
must reside in the stow directory
|
||||
.IR /usr/local/stow .
|
||||
The ``name'' of a package is the name of its
|
||||
directory within the stow directory--e.g.,
|
||||
.IR perl .
|
||||
.PP
|
||||
Thus, the Perl executable might reside in
|
||||
.IR /usr/local/stow/perl/bin/perl ,
|
||||
where
|
||||
.I /usr/local
|
||||
is the target
|
||||
directory,
|
||||
.I /usr/local/stow
|
||||
is the stow directory,
|
||||
.I /usr/local/stow/perl
|
||||
is the package directory, and
|
||||
.I bin/perl
|
||||
within
|
||||
is part of the installation image.
|
||||
.PP
|
||||
A ``symlink'' is a symbolic link. A symlink can be ``relative'' or
|
||||
``absolute''. An absolute symlink names a full path; that is, one
|
||||
starting from
|
||||
.IR / .
|
||||
A relative symlink names a relative path; that is,
|
||||
one not starting from
|
||||
.IR / .
|
||||
The target of a relative symlink is
|
||||
computed starting from the symlink's own directory. Stow only creates
|
||||
relative symlinks.
|
||||
.SH OPTIONS
|
||||
The stow directory is assumed to be the current directory, and the
|
||||
target directory is assumed to be the parent of the current directory
|
||||
(so it is typical to execute
|
||||
.I stow
|
||||
from the directory
|
||||
.IR /usr/local/stow ).
|
||||
Each
|
||||
.I package
|
||||
given on the command line is the name of a package in the stow
|
||||
directory (e.g.,
|
||||
.IR perl ).
|
||||
By default, they are installed into the
|
||||
target directory (but they can be deleted instead using `-D').
|
||||
.TP
|
||||
.I -n
|
||||
.TP
|
||||
.I --no
|
||||
Do not perform any operations that modify the filesystem; merely
|
||||
show what would happen. Since no actual operations are performed,
|
||||
.I stow -n
|
||||
could report conflicts when none would actually take
|
||||
place (see ``Conflicts'' in the info manual);
|
||||
but it won't fail to report conflicts
|
||||
that
|
||||
.B would
|
||||
take place.
|
||||
.TP
|
||||
.I -c
|
||||
.TP
|
||||
.I --conflicts
|
||||
Do not exit immediately when a conflict is encountered. This
|
||||
option implies `-n', and is used to search for all conflicts that
|
||||
might arise from an actual Stow operation. As with `-n', however,
|
||||
false conflicts might be reported (see ``Conflicts'' in the info manual).
|
||||
.TP
|
||||
.I "-d DIR"
|
||||
.TP
|
||||
.I --dir=DIR
|
||||
Set the stow directory to DIR instead of the current directory.
|
||||
This also has the effect of making the default target directory be
|
||||
the parent of DIR.
|
||||
.TP
|
||||
.I "-t DIR"
|
||||
.TP
|
||||
.I --target=DIR
|
||||
Set the target directory to DIR instead of the parent of the stow
|
||||
directory.
|
||||
.TP
|
||||
.I -v
|
||||
.TP
|
||||
.I --verbose[=N]
|
||||
Send verbose output to standard error describing what Stow is
|
||||
doing. Verbosity levels are 0, 1, 2, and 3; 0 is the default.
|
||||
Using `-v' or `--verbose' increases the verbosity by one; using
|
||||
`--verbose=N' sets it to N.
|
||||
.TP
|
||||
.I -D
|
||||
.TP
|
||||
.I --delete
|
||||
Delete packages from the target directory rather than installing
|
||||
them.
|
||||
.TP
|
||||
.I -R
|
||||
.TP
|
||||
.I --restow
|
||||
Restow packages (first unstow, then stow again). This is useful
|
||||
for pruning obsolete symlinks from the target tree after updating
|
||||
the software in a package.
|
||||
.TP
|
||||
.I -V
|
||||
.TP
|
||||
.I --version
|
||||
Show Stow version number, and exit.
|
||||
.TP
|
||||
.I -h
|
||||
.TP
|
||||
.I --help
|
||||
Show Stow command syntax, and exit.
|
||||
.SH "INSTALLING PACKAGES"
|
||||
The default action of Stow is to install a package. This means
|
||||
creating symlinks in the target tree that point into the package tree.
|
||||
Stow attempts to do this with as few symlinks as possible; in other
|
||||
words, if Stow can create a single symlink that points to an entire
|
||||
subtree within the package tree, it will choose to do that rather than
|
||||
create a directory in the target tree and populate it with symlinks.
|
||||
.PP
|
||||
For example, suppose that no packages have yet been installed in
|
||||
.IR /usr/local ;
|
||||
it's completely empty (except for the
|
||||
.I stow
|
||||
subdirectory, of course). Now suppose the Perl package is installed.
|
||||
Recall that it includes the following directories in its installation
|
||||
image:
|
||||
.IR bin ;
|
||||
.IR info ;
|
||||
.IR lib/perl ;
|
||||
.IR man/man1 .
|
||||
Rather than creating
|
||||
the directory
|
||||
.I /usr/local/bin
|
||||
and populating it with symlinks to
|
||||
.I ../stow/perl/bin/perl
|
||||
and
|
||||
.I ../stow/perl/bin/a2p
|
||||
(and so on), Stow
|
||||
will create a single symlink,
|
||||
.IR /usr/local/bin ,
|
||||
which points to
|
||||
.IR stow/perl/bin .
|
||||
In this way, it still works to refer to
|
||||
.I /usr/local/bin/perl
|
||||
and
|
||||
.IR /usr/local/bin/a2p ,
|
||||
and fewer symlinks have
|
||||
been created. This is called ``tree folding'', since an entire subtree
|
||||
is ``folded'' into a single symlink.
|
||||
.PP
|
||||
To complete this example, Stow will also create the symlink
|
||||
.I /usr/local/info
|
||||
pointing to
|
||||
.IR stow/perl/info ;
|
||||
the symlink
|
||||
.I /usr/local/lib
|
||||
pointing to
|
||||
.IR stow/perl/lib ;
|
||||
and the symlink
|
||||
.I /usr/local/man
|
||||
pointing to
|
||||
.IR stow/perl/man .
|
||||
.PP
|
||||
Now suppose that instead of installing the Perl package into an empty
|
||||
target tree, the target tree is not empty to begin with. Instead, it
|
||||
contains several files and directories installed under a different
|
||||
system-administration philosophy. In particular,
|
||||
.I /usr/local/bin
|
||||
already exists and is a directory, as are
|
||||
.I /usr/local/lib
|
||||
and
|
||||
.IR /usr/local/man/man1 .
|
||||
In this case, Stow will descend into
|
||||
.I /usr/local/bin
|
||||
and create symlinks to
|
||||
.I ../stow/perl/bin/perl
|
||||
and
|
||||
.I ../stow/perl/bin/a2p
|
||||
(etc.), and it will descend into
|
||||
.I /usr/local/lib
|
||||
and create the tree-folding symlink
|
||||
.I perl
|
||||
pointing to
|
||||
.IR ../stow/perl/lib/perl ,
|
||||
and so on. As a rule, Stow only descends as
|
||||
far as necessary into the target tree when it can create a tree-folding
|
||||
symlink.
|
||||
.PP
|
||||
The time often comes when a tree-folding symlink has to be undone
|
||||
because another package uses one or more of the folded subdirectories in
|
||||
its installation image. This operation is called ``splitting open'' a
|
||||
folded tree. It involves removing the original symlink from the target
|
||||
tree, creating a true directory in its place, and then populating the
|
||||
new directory with symlinks to the newly-installed package
|
||||
.B and
|
||||
to the
|
||||
old package that used the old symlink. For example, suppose that after
|
||||
installing Perl into an empty
|
||||
.IR /usr/local ,
|
||||
we wish to install Emacs.
|
||||
Emacs's installation image includes a
|
||||
.I bin
|
||||
directory containing the
|
||||
.I emacs
|
||||
and
|
||||
.I etags
|
||||
executables, among others. Stow must make these
|
||||
files appear to be installed in
|
||||
.IR /usr/local/bin ,
|
||||
but presently
|
||||
.I /usr/local/bin
|
||||
is a symlink to
|
||||
.IR stow/perl/bin .
|
||||
Stow therefore takes
|
||||
the following steps: the symlink
|
||||
.I /usr/local/bin
|
||||
is deleted; the
|
||||
directory
|
||||
.I /usr/local/bin
|
||||
is created; links are made from
|
||||
.I /usr/local/bin
|
||||
to
|
||||
.I ../stow/emacs/bin/emacs
|
||||
and
|
||||
.IR ../stow/emacs/bin/etags ;
|
||||
and links are made from
|
||||
.I /usr/local/bin
|
||||
to
|
||||
.I ../stow/perl/bin/perl
|
||||
and
|
||||
.IR ../stow/perl/bin/a2p .
|
||||
.PP
|
||||
When splitting open a folded tree, Stow makes sure that the symlink
|
||||
it is about to remove points inside a valid package in the current stow
|
||||
directory.
|
||||
.BR "Stow will never delete anything that it doesn't own" .
|
||||
Stow ``owns'' everything living in the target tree that points into a
|
||||
package in the stow directory. Anything Stow owns, it can recompute if
|
||||
lost. Note that by this definition, Stow doesn't ``own'' anything
|
||||
.B in
|
||||
the stow directory or in any of the packages.
|
||||
.PP
|
||||
If Stow needs to create a directory or a symlink in the target tree
|
||||
and it cannot because that name is already in use and is not owned by
|
||||
Stow, then a conflict has arisen. See ``Conflicts'' in the info manual.
|
||||
.SH "DELETING PACKAGES"
|
||||
When the `-D' option is given, the action of Stow is to delete a
|
||||
package from the target tree. Note that Stow will not delete anything
|
||||
it doesn't ``own''. Deleting a package does
|
||||
.B not
|
||||
mean removing it from
|
||||
the stow directory or discarding the package tree.
|
||||
.PP
|
||||
To delete a package, Stow recursively scans the target tree,
|
||||
skipping over the stow directory (since that is usually a subdirectory
|
||||
of the target tree) and any other stow directories it encounters (see
|
||||
``Multiple stow directories'' in the info manual). Any symlink it finds that points into
|
||||
the package being deleted is removed. Any directory that contained
|
||||
only symlinks to the package being deleted is removed. Any directory
|
||||
that, after removing symlinks and empty subdirectories, contains only
|
||||
symlinks to a single other package, is considered to be a previously
|
||||
``folded'' tree that was ``split open.'' Stow will re-fold the tree by
|
||||
removing the symlinks to the surviving package, removing the directory,
|
||||
then linking the directory back to the surviving package.
|
||||
.SH "SEE ALSO"
|
||||
The info manual ``Stow 1.3.3:
|
||||
Managing the installation of software packages''
|
||||
by Bob Glickstein, Zanshin Software, Inc.
|
||||
.SH BUGS
|
||||
Please report bugs in Stow using the Debian bug tracking system.
|
||||
.PP
|
||||
Currently known bugs include:
|
||||
.IP *
|
||||
The empty-directory problem. If package FOO includes an empty
|
||||
directory--say, FOO/BAR--then:
|
||||
.IP
|
||||
1.
|
||||
if no other package has a BAR subdirectory, everything's fine.
|
||||
.IP
|
||||
2.
|
||||
if another stowed package, QUUX, has a BAR subdirectory, then
|
||||
when stowing, TARGETDIR/BAR will be ``split open'' and the
|
||||
contents of QUUX/BAR will be individually stowed. So far, so
|
||||
good. But when unstowing QUUX, TARGETDIR/BAR will be
|
||||
removed, even though FOO/BAR needs it to remain. A
|
||||
workaround for this problem is to create a file in FOO/BAR as
|
||||
a placeholder. If you name that file
|
||||
.IR .placeholder ,
|
||||
it will
|
||||
be easy to find and remove such files when this bug is fixed.
|
||||
.IP *
|
||||
When using multiple stow directories (see ``Multiple stow
|
||||
directories'' in the info manual), Stow fails to ``split open'' tree-folding symlinks
|
||||
(see ``Installing packages'' in the info manual) that point into a stow directory
|
||||
which is not the one in use by the current Stow command. Before
|
||||
failing, it should search the target of the link to see whether
|
||||
any element of the path contains a
|
||||
.I .stow
|
||||
file. If it finds one,
|
||||
it can ``learn'' about the cooperating stow directory to
|
||||
short-circuit the
|
||||
.I .stow
|
||||
search the next time it encounters a
|
||||
tree-folding symlink.
|
||||
.SH AUTHOR
|
||||
This man page was constructed by Charles Briscoe-Smith from
|
||||
parts of Stow's info manual. That manual contained the following
|
||||
notice, which, as it says, applied to this manual page, too. The text
|
||||
of the section entitled ``GNU General Public License'' can be found in
|
||||
the file
|
||||
.I /usr/share/common-licenses/GPL
|
||||
on any Debian GNU/Linux system. If you don't have access to a Debian
|
||||
system, or the GPL is not there, write to the Free Software Foundation,
|
||||
Inc., 59 Temple Place, Suite 330, Boston, MA, 02111-1307, USA.
|
||||
.IP
|
||||
Software and documentation Copyright (C) 1993, 1994, 1995, 1996 by
|
||||
Bob Glickstein <bobg+stow@zanshin.com>.
|
||||
.IP
|
||||
Permission is granted to make and distribute verbatim copies of this
|
||||
manual provided the copyright notice and this permission notice are
|
||||
preserved on all copies.
|
||||
.IP
|
||||
Permission is granted to copy and distribute modified versions of
|
||||
this manual under the conditions for verbatim copying, provided also
|
||||
that the section entitled ``GNU General Public License'' is included with
|
||||
the modified manual, and provided that the entire resulting derived
|
||||
work is distributed under the terms of a permission notice identical to
|
||||
this one.
|
||||
.IP
|
||||
Permission is granted to copy and distribute translations of this
|
||||
manual into another language, under the above conditions for modified
|
||||
versions, except that this permission notice may be stated in a
|
||||
translation approved by the Free Software Foundation.
|
93
stow.in
93
stow.in
|
@ -1,8 +1,9 @@
|
|||
#!@PERL@
|
||||
|
||||
# GNU Stow - manage the installation of multiple software packages
|
||||
# Copyright 1993, 1994, 1995, 1996 by Bob Glickstein
|
||||
#
|
||||
# Copyright (C) 1993, 1994, 1995, 1996 by Bob Glickstein
|
||||
# Copyright (C) 2000,2001 Guillaume Morin
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 2 of the License, or
|
||||
|
@ -16,6 +17,14 @@
|
|||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
#
|
||||
# $Id: stow.in,v 1.8 2002/01/05 11:27:01 gmorin Exp $
|
||||
# $Source: /cvsroot/stow/stow/stow.in,v $
|
||||
# $Date: 2002/01/05 11:27:01 $
|
||||
# $Author: gmorin $
|
||||
|
||||
require 5.005;
|
||||
use POSIX;
|
||||
|
||||
$ProgramName = $0;
|
||||
$ProgramName =~ s,.*/,,;
|
||||
|
@ -27,10 +36,12 @@ $Delete = 0;
|
|||
$NotReally = 0;
|
||||
$Verbose = 0;
|
||||
$ReportHelp = 0;
|
||||
$Stow = &fastcwd;
|
||||
$Stow = undef;
|
||||
$Target = undef;
|
||||
$Restow = 0;
|
||||
|
||||
|
||||
# FIXME: use Getopt::Long
|
||||
while (@ARGV && ($_ = $ARGV[0]) && /^-/) {
|
||||
$opt = $';
|
||||
shift;
|
||||
|
@ -105,10 +116,21 @@ while (@ARGV && ($_ = $ARGV[0]) && /^-/) {
|
|||
|
||||
&usage("No packages named") unless @ARGV;
|
||||
|
||||
# Changing dirs helps a lot when soft links are used
|
||||
$current_dir = &getcwd;
|
||||
if ($Stow) {
|
||||
chdir($Stow) || die "Cannot chdir to target tree $Stow ($!)\n";
|
||||
}
|
||||
|
||||
# This prevents problems if $Target was supplied as a relative path
|
||||
$Stow = &getcwd;
|
||||
|
||||
chdir($current_dir) || die "Your directory does not seem to exist anymore ($!)\n";
|
||||
|
||||
$Target = &parent($Stow) unless $Target;
|
||||
|
||||
chdir($Target) || die "Cannot chdir to target tree $Target ($!)\n";
|
||||
$Target = &fastcwd;
|
||||
$Target = &getcwd;
|
||||
|
||||
foreach $package (@ARGV) {
|
||||
$package =~ s,/+$,,; # delete trailing slashes
|
||||
|
@ -142,6 +164,9 @@ sub CommonParent {
|
|||
$result;
|
||||
}
|
||||
|
||||
# Find the relative patch between
|
||||
# two paths given as arguments.
|
||||
|
||||
sub RelativePath {
|
||||
local($a, $b) = @_;
|
||||
local($c) = &CommonParent($a, $b);
|
||||
|
@ -149,12 +174,20 @@ sub RelativePath {
|
|||
local(@b) = split(/\/+/, $b);
|
||||
local(@c) = split(/\/+/, $c);
|
||||
|
||||
splice(@a, 0, @c + 0);
|
||||
splice(@b, 0, @c + 0);
|
||||
# if $c == "/something", scalar(@c) >= 2
|
||||
# but if $c == "/", scalar(@c) == 0
|
||||
# but we want 1
|
||||
my $length = scalar(@c) ? scalar(@c) : 1;
|
||||
splice(@a, 0, $length);
|
||||
splice(@b, 0, $length);
|
||||
|
||||
unshift(@b, (('..') x (@a + 0)));
|
||||
&JoinPaths(@b);
|
||||
}
|
||||
|
||||
# Basically concatenates the paths given
|
||||
# as arguments
|
||||
|
||||
sub JoinPaths {
|
||||
local(@paths, @parts);
|
||||
local ($x, $y);
|
||||
|
@ -164,7 +197,7 @@ sub JoinPaths {
|
|||
foreach $x (@_) {
|
||||
@parts = split(/\/+/, $x);
|
||||
foreach $y (@parts) {
|
||||
push(@paths, $y) if $y;
|
||||
push(@paths, $y) if ($y ne "");
|
||||
}
|
||||
}
|
||||
$result .= join('/', @paths);
|
||||
|
@ -178,18 +211,21 @@ sub Unstow {
|
|||
local(@stowmember);
|
||||
local($pure, $othercollection) = (1, '');
|
||||
local($subpure, $subother);
|
||||
local($empty) = (1);
|
||||
local(@puresubdirs);
|
||||
|
||||
return (0, '') if (&JoinPaths($Target, $targetdir) eq $Stow);
|
||||
return (0, '') if (-e &JoinPaths($Target, $targetdir, '.stow'));
|
||||
warn sprintf("Unstowing in %s\n", &JoinPaths($Target, $targetdir))
|
||||
if ($Verbose > 1);
|
||||
opendir(DIR, &JoinPaths($Target, $targetdir)) ||
|
||||
die "$ProgramName: Cannot read directory \"$dir\" ($!)\n";
|
||||
if (!opendir(DIR, &JoinPaths($Target, $targetdir))) {
|
||||
warn "Warning: $ProgramName: Cannot read directory \"$dir\" ($!). Stow might leave some links. If you think, it does. Rerun Stow with appropriate rights.\n";
|
||||
}
|
||||
@contents = readdir(DIR);
|
||||
closedir(DIR);
|
||||
foreach $content (@contents) {
|
||||
next if (($content eq '.') || ($content eq '..'));
|
||||
$empty = 0;
|
||||
if (-l &JoinPaths($Target, $targetdir, $content)) {
|
||||
($linktarget = readlink(&JoinPaths($Target,
|
||||
$targetdir,
|
||||
|
@ -240,6 +276,9 @@ sub Unstow {
|
|||
$pure = 0;
|
||||
}
|
||||
}
|
||||
# This directory was an initially empty directory therefore
|
||||
# We do not remove it.
|
||||
$pure = 0 if $empty;
|
||||
if ((!$pure || !$targetdir) && @puresubdirs) {
|
||||
&CoalesceTrees($targetdir, $stow, @puresubdirs);
|
||||
}
|
||||
|
@ -501,42 +540,6 @@ sub version {
|
|||
exit(0);
|
||||
}
|
||||
|
||||
# This is from Perl 4's fastcwd.pl, by John Bazik.
|
||||
#
|
||||
# Usage: $cwd = &fastcwd;
|
||||
#
|
||||
# This is a faster version of getcwd. It's also more dangerous
|
||||
# because you might chdir out of a directory that you can't chdir back
|
||||
# into.
|
||||
|
||||
sub fastcwd {
|
||||
local($odev, $oino, $cdev, $cino, $tdev, $tino);
|
||||
local(@path, $path);
|
||||
local(*DIR);
|
||||
|
||||
($cdev, $cino) = stat('.');
|
||||
for (;;) {
|
||||
($odev, $oino) = ($cdev, $cino);
|
||||
chdir('..');
|
||||
($cdev, $cino) = stat('.');
|
||||
last if $odev == $cdev && $oino == $cino;
|
||||
opendir(DIR, '.');
|
||||
for (;;) {
|
||||
$_ = readdir(DIR);
|
||||
next if $_ eq '.';
|
||||
next if $_ eq '..';
|
||||
|
||||
last unless $_;
|
||||
($tdev, $tino) = lstat($_);
|
||||
last unless $tdev != $odev || $tino != $oino;
|
||||
}
|
||||
closedir(DIR);
|
||||
unshift(@path, $_);
|
||||
}
|
||||
chdir($path = '/' . join('/', @path));
|
||||
$path;
|
||||
}
|
||||
|
||||
# Local variables:
|
||||
# mode: perl
|
||||
# End:
|
||||
|
|
118
stow.info
118
stow.info
|
@ -1,11 +1,17 @@
|
|||
This is Info file ./stow.info, produced by Makeinfo version 1.67 from
|
||||
the input file stow.texi.
|
||||
Ceci est le fichier Info stow.info, produit par Makeinfo version 4.0b à
|
||||
partir stow.texi.
|
||||
|
||||
This file describes GNU Stow version 1.3.2, a program for managing
|
||||
INFO-DIR-SECTION Administration
|
||||
START-INFO-DIR-ENTRY
|
||||
* Stow: (stow). GNU Stow.
|
||||
END-INFO-DIR-ENTRY
|
||||
|
||||
This file describes GNU Stow version 1.3.3, a program for managing
|
||||
the installation of software packages.
|
||||
|
||||
Software and documentation Copyright (C) 1993, 1994, 1995, 1996 by
|
||||
Bob Glickstein <bobg+stow@zanshin.com>.
|
||||
Bob Glickstein <bobg+stow@zanshin.com>. Copyright (C) 2000,2001
|
||||
Guillaume Morin <gmorin@gnu.org>
|
||||
|
||||
Permission is granted to make and distribute verbatim copies of this
|
||||
manual provided the copyright notice and this permission notice are
|
||||
|
@ -26,7 +32,7 @@ translation approved by the Free Software Foundation.
|
|||
|
||||
File: stow.info, Node: Top, Next: Introduction, Prev: (dir), Up: (dir)
|
||||
|
||||
This manual describes GNU Stow 1.3.2, a program for managing the
|
||||
This manual describes GNU Stow 1.3.3, a program for managing the
|
||||
installation of software packages.
|
||||
|
||||
* Menu:
|
||||
|
@ -43,7 +49,7 @@ installation of software packages.
|
|||
* GNU General Public License:: Copying terms.
|
||||
* Index:: Index of concepts.
|
||||
|
||||
-- The Detailed Node Listing --
|
||||
--- The Detailed Node Listing ---
|
||||
|
||||
Caveats
|
||||
|
||||
|
@ -97,11 +103,11 @@ directory (e.g., `/usr/local/stow/emacs'), so it's always possible to
|
|||
rebuild the target tree (e.g., `/usr/local').
|
||||
|
||||
For information about the latest version of Stow, you can refer to
|
||||
http://www.gnu.ai.mit.edu/software/stow/stow.html.
|
||||
http://www.gnu.org/software/stow/.
|
||||
|
||||
---------- Footnotes ----------
|
||||
|
||||
(1) As of Perl 4.036 and Emacs 19.22.
|
||||
(1) As of Perl 4.036 and Emacs 19.22.
|
||||
|
||||
|
||||
File: stow.info, Node: Terminology, Next: Invoking Stow, Prev: Introduction, Up: Top
|
||||
|
@ -115,7 +121,7 @@ to be installed in a particular directory structure--e.g., with `bin',
|
|||
`lib', and `man' subdirectories.
|
||||
|
||||
A "target directory" is the root of a tree in which one or more
|
||||
packages wish to *appear* to be installed. A common, but by no means
|
||||
packages wish to _appear_ to be installed. A common, but by no means
|
||||
the only such location is `/usr/local'. The examples in this manual
|
||||
will use `/usr/local' as the target directory.
|
||||
|
||||
|
@ -177,15 +183,15 @@ target directory (but they can be deleted instead using `-D').
|
|||
Do not perform any operations that modify the filesystem; merely
|
||||
show what would happen. Since no actual operations are performed,
|
||||
`stow -n' could report conflicts when none would actually take
|
||||
place (*note Conflicts::.); but it won't fail to report conflicts
|
||||
that *would* take place.
|
||||
place (*note Conflicts::); but it won't fail to report conflicts
|
||||
that _would_ take place.
|
||||
|
||||
`-c'
|
||||
`--conflicts'
|
||||
Do not exit immediately when a conflict is encountered. This
|
||||
option implies `-n', and is used to search for all conflicts that
|
||||
might arise from an actual Stow operation. As with `-n', however,
|
||||
false conflicts might be reported (*note Conflicts::.).
|
||||
false conflicts might be reported (*note Conflicts::).
|
||||
|
||||
`-d DIR'
|
||||
`--dir=DIR'
|
||||
|
@ -273,7 +279,7 @@ because another package uses one or more of the folded subdirectories in
|
|||
its installation image. This operation is called "splitting open" a
|
||||
folded tree. It involves removing the original symlink from the target
|
||||
tree, creating a true directory in its place, and then populating the
|
||||
new directory with symlinks to the newly-installed package *and* to the
|
||||
new directory with symlinks to the newly-installed package _and_ to the
|
||||
old package that used the old symlink. For example, suppose that after
|
||||
installing Perl into an empty `/usr/local', we wish to install Emacs.
|
||||
Emacs's installation image includes a `bin' directory containing the
|
||||
|
@ -288,10 +294,10 @@ directory `/usr/local/bin' is created; links are made from
|
|||
|
||||
When splitting open a folded tree, Stow makes sure that the symlink
|
||||
it is about to remove points inside a valid package in the current stow
|
||||
directory. *Stow will never delete anything that it doesn't own*.
|
||||
directory. _Stow will never delete anything that it doesn't own_.
|
||||
Stow "owns" everything living in the target tree that points into a
|
||||
package in the stow directory. Anything Stow owns, it can recompute if
|
||||
lost. Note that by this definition, Stow doesn't "own" anything *in*
|
||||
lost. Note that by this definition, Stow doesn't "own" anything _in_
|
||||
the stow directory or in any of the packages.
|
||||
|
||||
If Stow needs to create a directory or a symlink in the target tree
|
||||
|
@ -306,13 +312,13 @@ Deleting packages
|
|||
|
||||
When the `-D' option is given, the action of Stow is to delete a
|
||||
package from the target tree. Note that Stow will not delete anything
|
||||
it doesn't "own". Deleting a package does *not* mean removing it from
|
||||
it doesn't "own". Deleting a package does _not_ mean removing it from
|
||||
the stow directory or discarding the package tree.
|
||||
|
||||
To delete a package, Stow recursively scans the target tree,
|
||||
skipping over the stow directory (since that is usually a subdirectory
|
||||
of the target tree) and any other stow directories it encounters (*note
|
||||
Multiple stow directories::.). Any symlink it finds that points into
|
||||
Multiple stow directories::). Any symlink it finds that points into
|
||||
the package being deleted is removed. Any directory that contained
|
||||
only symlinks to the package being deleted is removed. Any directory
|
||||
that, after removing symlinks and empty subdirectories, contains only
|
||||
|
@ -421,7 +427,7 @@ GNU Emacs
|
|||
|
||||
Although the Free Software Foundation has many enlightened practices
|
||||
regarding Makefiles and software installation (see *note Other FSF
|
||||
software::.), Emacs, its flagship program, doesn't quite follow the
|
||||
software::), Emacs, its flagship program, doesn't quite follow the
|
||||
rules. In particular, most GNU software allows you to write:
|
||||
|
||||
make
|
||||
|
@ -442,7 +448,7 @@ the way to work around this problem is:
|
|||
|
||||
---------- Footnotes ----------
|
||||
|
||||
(1) As I write this, the current version of Emacs is 19.31.
|
||||
(1) As I write this, the current version of Emacs is 19.31.
|
||||
|
||||
|
||||
File: stow.info, Node: Other FSF software, Next: Cygnus software, Prev: GNU Emacs, Up: Compile-time and install-time
|
||||
|
@ -479,7 +485,7 @@ are `gdb', `gnats', and `dejagnu'.
|
|||
|
||||
Cygnus packages have the peculiarity that each one unpacks into a
|
||||
directory tree with a generic top-level Makefile, which is set up to
|
||||
compile *all* of Cygnus' packages, any number of which may reside under
|
||||
compile _all_ of Cygnus' packages, any number of which may reside under
|
||||
the top-level directory. In other words, even if you're only building
|
||||
`gnats', the top-level Makefile will look for, and try to build, `gdb'
|
||||
and `dejagnu' subdirectories, among many others.
|
||||
|
@ -518,7 +524,7 @@ Depot, not from AFS.
|
|||
|
||||
The result of this confusion is that Perl 5's configuration script
|
||||
doesn't even offer the option of separating install-time and run-time
|
||||
trees *unless* you're running AFS. Fortunately, after you've entered
|
||||
trees _unless_ you're running AFS. Fortunately, after you've entered
|
||||
all the configuration settings, Perl's setup script gives you the
|
||||
opportunity to edit those settings in a file called `config.sh'. When
|
||||
prompted, you should edit this file and replace occurrences of
|
||||
|
@ -572,7 +578,7 @@ Perl 5 extensions. This way, it's easy to tell at a glance which of
|
|||
the subdirectories of `/usr/local/stow' are Perl 5 extensions.
|
||||
|
||||
When you stow separate Perl 5 modules separately, you are likely to
|
||||
encounter conflicts (*note Conflicts::.) with files named `.exists' and
|
||||
encounter conflicts (*note Conflicts::) with files named `.exists' and
|
||||
`perllocal.pod'. One way to work around this is to remove those files
|
||||
before stowing the module. If you use the `cpan.MODULE' naming
|
||||
convention, you can simply do this:
|
||||
|
@ -592,10 +598,10 @@ software separately, or if there is any other reason to want two or more
|
|||
stow directories, it can be done by creating a file named `.stow' in
|
||||
each stow directory. The presence of `/usr/local/foo/.stow' informs
|
||||
Stow that, though `foo' is not the current stow directory, and though
|
||||
it is a subdirectory of the target directory, nevertheless it is *a*
|
||||
it is a subdirectory of the target directory, nevertheless it is _a_
|
||||
stow directory and as such Stow doesn't "own" anything in it (*note
|
||||
Installing packages::.). This will protect the contents of `foo' from
|
||||
a `stow -D', for instance.
|
||||
Installing packages::). This will protect the contents of `foo' from a
|
||||
`stow -D', for instance.
|
||||
|
||||
When multiple stow directories share a target tree, the effectiveness
|
||||
of Stow is reduced. If a tree-folding symlink is encountered and needs
|
||||
|
@ -682,7 +688,7 @@ mail. The address to use is `<bobg+stow@zanshin.com>'. Please include:
|
|||
Before reporting a bug, please read the manual carefully, especially
|
||||
*Note Known bugs::, and *Note Caveats::, to see whether you're
|
||||
encountering something that doesn't need reporting, such as a "false
|
||||
conflict" (*note Conflicts::.).
|
||||
conflict" (*note Conflicts::).
|
||||
|
||||
|
||||
File: stow.info, Node: Known bugs, Next: GNU General Public License, Prev: Reporting bugs, Up: Top
|
||||
|
@ -690,23 +696,9 @@ File: stow.info, Node: Known bugs, Next: GNU General Public License, Prev: Re
|
|||
Known bugs
|
||||
**********
|
||||
|
||||
* The empty-directory problem. If package FOO includes an empty
|
||||
directory--say, FOO/BAR--then:
|
||||
|
||||
1. if no other package has a BAR subdirectory, everything's fine.
|
||||
|
||||
2. if another stowed package, QUUX, has a BAR subdirectory, then
|
||||
when stowing, TARGETDIR/BAR will be "split open" and the
|
||||
contents of QUUX/BAR will be individually stowed. So far, so
|
||||
good. But when unstowing QUUX, TARGETDIR/BAR will be
|
||||
removed, even though FOO/BAR needs it to remain. A
|
||||
workaround for this problem is to create a file in FOO/BAR as
|
||||
a placeholder. If you name that file `.placeholder', it will
|
||||
be easy to find and remove such files when this bug is fixed.
|
||||
|
||||
* When using multiple stow directories (*note Multiple stow
|
||||
directories::.), Stow fails to "split open" tree-folding symlinks
|
||||
(*note Installing packages::.) that point into a stow directory
|
||||
directories::), Stow fails to "split open" tree-folding symlinks
|
||||
(*note Installing packages::) that point into a stow directory
|
||||
which is not the one in use by the current Stow command. Before
|
||||
failing, it should search the target of the link to see whether
|
||||
any element of the path contains a `.stow' file. If it finds one,
|
||||
|
@ -721,7 +713,6 @@ GNU General Public License
|
|||
**************************
|
||||
|
||||
Version 2, June 1991
|
||||
|
||||
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
|
||||
675 Mass Ave, Cambridge, MA 02139, USA
|
||||
|
||||
|
@ -780,7 +771,6 @@ patent must be licensed for everyone's free use or not licensed at all.
|
|||
modification follow.
|
||||
|
||||
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
||||
|
||||
0. This License applies to any program or other work which contains a
|
||||
notice placed by the copyright holder saying it may be distributed
|
||||
under the terms of this General Public License. The "Program",
|
||||
|
@ -1108,24 +1098,26 @@ Index
|
|||
|
||||
|
||||
Tag Table:
|
||||
Node: Top1103
|
||||
Node: Introduction2273
|
||||
Node: Terminology4480
|
||||
Node: Invoking Stow6830
|
||||
Node: Installing packages9026
|
||||
Node: Deleting packages13143
|
||||
Node: Caveats14294
|
||||
Node: Compile-time and install-time14661
|
||||
Node: GNU Emacs17963
|
||||
Node: Other FSF software19013
|
||||
Node: Cygnus software19769
|
||||
Node: Perl and Perl 5 modules21242
|
||||
Node: Multiple stow directories24792
|
||||
Node: Conflicts25941
|
||||
Node: Bootstrapping27099
|
||||
Node: Reporting bugs27856
|
||||
Node: Known bugs28737
|
||||
Node: GNU General Public License30169
|
||||
Node: Index49343
|
||||
Node: Top1264
|
||||
Node: Introduction2436
|
||||
Ref: Introduction-Footnote-14584
|
||||
Node: Terminology4626
|
||||
Node: Invoking Stow6976
|
||||
Node: Installing packages9170
|
||||
Node: Deleting packages13287
|
||||
Node: Caveats14437
|
||||
Node: Compile-time and install-time14804
|
||||
Node: GNU Emacs18106
|
||||
Ref: GNU Emacs-Footnote-119090
|
||||
Node: Other FSF software19154
|
||||
Node: Cygnus software19910
|
||||
Node: Perl and Perl 5 modules21383
|
||||
Node: Multiple stow directories24932
|
||||
Node: Conflicts26080
|
||||
Node: Bootstrapping27238
|
||||
Node: Reporting bugs27995
|
||||
Node: Known bugs28875
|
||||
Node: GNU General Public License29572
|
||||
Node: Index48744
|
||||
|
||||
End Tag Table
|
||||
|
|
26
stow.texi
26
stow.texi
|
@ -7,6 +7,10 @@
|
|||
@c @setchapternewpage odd
|
||||
@c @footnotestyle separate
|
||||
@c %**end of header
|
||||
@dircategory Administration
|
||||
@direntry
|
||||
* Stow: (stow). GNU Stow.
|
||||
@end direntry
|
||||
|
||||
@include version.texi
|
||||
|
||||
|
@ -16,6 +20,7 @@ managing the installation of software packages.
|
|||
|
||||
Software and documentation Copyright @copyright{} 1993, 1994, 1995, 1996
|
||||
by Bob Glickstein <bobg+stow@@zanshin.com>.
|
||||
Copyright @copyright{} 2000,2001 Guillaume Morin <gmorin@@gnu.org>
|
||||
|
||||
Permission is granted to make and distribute verbatim copies of this
|
||||
manual provided the copyright notice and this permission notice are
|
||||
|
@ -143,7 +148,7 @@ directory (e.g., @file{/usr/local/stow/emacs}), so it's always possible
|
|||
to rebuild the target tree (e.g., @file{/usr/local}).
|
||||
|
||||
For information about the latest version of Stow, you can refer to
|
||||
http://www.gnu.ai.mit.edu/software/stow/stow.html.
|
||||
http://www.gnu.org/software/stow/.
|
||||
|
||||
@node Terminology, Invoking Stow, Introduction, Top
|
||||
@chapter Terminology
|
||||
|
@ -765,25 +770,6 @@ something that doesn't need reporting, such as a ``false conflict''
|
|||
@chapter Known bugs
|
||||
|
||||
@itemize @bullet
|
||||
@item
|
||||
The empty-directory problem. If package @var{foo} includes an empty
|
||||
directory---say, @var{foo}/@var{bar}---then:
|
||||
|
||||
@enumerate
|
||||
@item
|
||||
if no other package has a @var{bar} subdirectory, everything's fine.
|
||||
|
||||
@item
|
||||
if another stowed package, @var{quux}, has a @var{bar} subdirectory,
|
||||
then when stowing, @var{targetdir}/@var{bar} will be ``split open'' and
|
||||
the contents of @var{quux}/@var{bar} will be individually stowed. So
|
||||
far, so good. But when unstowing @var{quux}, @var{targetdir}/@var{bar}
|
||||
will be removed, even though @var{foo}/@var{bar} needs it to remain. A
|
||||
workaround for this problem is to create a file in @var{foo}/@var{bar}
|
||||
as a placeholder. If you name that file @file{.placeholder}, it will be
|
||||
easy to find and remove such files when this bug is fixed.
|
||||
@end enumerate
|
||||
|
||||
@item
|
||||
When using multiple stow directories (@pxref{Multiple stow
|
||||
directories}), Stow fails to ``split open'' tree-folding symlinks
|
||||
|
|
4932
texinfo.tex
4932
texinfo.tex
File diff suppressed because it is too large
Load diff
|
@ -1,3 +1,4 @@
|
|||
@set UPDATED 11 October 1996
|
||||
@set EDITION 1.3.2
|
||||
@set VERSION 1.3.2
|
||||
@set UPDATED 5 January 2002
|
||||
@set UPDATED-MONTH January 2002
|
||||
@set EDITION 1.3.3
|
||||
@set VERSION 1.3.3
|
||||
|
|
Loading…
Reference in a new issue