Reorganise more files into subdirectories and add CPAN support via Module::Build
This commit is contained in:
parent
382ad5c58d
commit
58625800ee
15 changed files with 369 additions and 95 deletions
58
Build.PL
Normal file
58
Build.PL
Normal file
|
@ -0,0 +1,58 @@
|
|||
use strict;
|
||||
use warnings;
|
||||
|
||||
use Module::Build;
|
||||
|
||||
# These are required by the test suite.
|
||||
use lib "t";
|
||||
use lib "bin";
|
||||
|
||||
my $build = Module::Build->new(
|
||||
module_name => 'Stow',
|
||||
keywords => [ qw/stow symlink software package management install/ ],
|
||||
license => 'gpl',
|
||||
|
||||
# Module::Build forces us to use v1.4 of the CPAN Meta Spec:
|
||||
# https://rt.cpan.org/Ticket/Display.html?id=71502
|
||||
# 'meta-spec' => {
|
||||
# version => '2.0',
|
||||
# url => 'http://search.cpan.org/perldoc?CPAN::Meta::Spec',
|
||||
# },
|
||||
meta_add => {
|
||||
resources => {
|
||||
license => 'http://www.gnu.org/licenses/gpl-2.0.html' ,
|
||||
homepage => 'https://savannah.gnu.org/projects/stow',
|
||||
|
||||
# Module::Build forces us to use v1.4 of the CPAN Meta Spec:
|
||||
# https://rt.cpan.org/Ticket/Display.html?id=71502
|
||||
# bugtracker => {
|
||||
# web => 'http://rt.cpan.org/Public/Dist/Display.html?Name=Stow',
|
||||
# mailto => 'mysqldiff@adamspiers.org',
|
||||
# },
|
||||
#bugtracker => 'http://rt.cpan.org/Public/Dist/Display.html?Name=Stow',
|
||||
|
||||
# Module::Build forces us to use v1.4 of the CPAN Meta Spec:
|
||||
# https://rt.cpan.org/Ticket/Display.html?id=71502
|
||||
# repository => {
|
||||
# url => 'git:github.com/aspiers/stow.git',
|
||||
# web => 'http://github.com/aspiers/stow',
|
||||
# type => 'git',
|
||||
# },
|
||||
repository => 'http://github.com/aspiers/stow',
|
||||
#repository => 'https://savannah.gnu.org/git/?group=stow',
|
||||
},
|
||||
},
|
||||
requires => {
|
||||
'perl' => '5.006',
|
||||
'Carp' => 0,
|
||||
'File::Slurp' => 0,
|
||||
'IO::File' => 0,
|
||||
},
|
||||
script_files => [ 'bin/stow' ],
|
||||
all_from => 'lib/Stow.pm',
|
||||
configure_requires => {
|
||||
'Module::Build' => 0,
|
||||
},
|
||||
);
|
||||
|
||||
$build->create_build_script();
|
46
MANIFEST
Normal file
46
MANIFEST
Normal file
|
@ -0,0 +1,46 @@
|
|||
aclocal.m4
|
||||
AUTHORS
|
||||
automake/install-sh
|
||||
automake/mdate-sh
|
||||
automake/missing
|
||||
automake/stamp-vti
|
||||
bin/chkstow
|
||||
bin/chkstow.in
|
||||
bin/stow
|
||||
bin/stow.in
|
||||
Build.PL
|
||||
ChangeLog
|
||||
configure
|
||||
configure.ac
|
||||
COPYING
|
||||
doc/stow.8
|
||||
doc/stow.info
|
||||
doc/stow.texi
|
||||
doc/texinfo.tex
|
||||
doc/version.texi
|
||||
INSTALL
|
||||
lib/Stow.pm
|
||||
lib/Stow.pm.in
|
||||
lib/Stow/Util.pm
|
||||
Makefile.am
|
||||
Makefile.in
|
||||
MANIFEST This list of files
|
||||
NEWS
|
||||
README
|
||||
t/chkstow.t
|
||||
t/cleanup_invalid_links.t
|
||||
t/defer.t
|
||||
t/examples.t
|
||||
t/find_stowed_path.t
|
||||
t/foldable.t
|
||||
t/join_paths.t
|
||||
t/parent.t
|
||||
t/stow.t
|
||||
t/stow_contents.t
|
||||
t/testutil.pm
|
||||
t/unstow_contents.t
|
||||
t/unstow_contents_orig.t
|
||||
THANKS
|
||||
TODO
|
||||
META.yml
|
||||
META.json
|
78
MANIFEST.SKIP
Normal file
78
MANIFEST.SKIP
Normal file
|
@ -0,0 +1,78 @@
|
|||
|
||||
#!start included /usr/share/perl5/ExtUtils/MANIFEST.SKIP
|
||||
# Avoid version control files.
|
||||
\bRCS\b
|
||||
\bCVS\b
|
||||
\bSCCS\b
|
||||
,v$
|
||||
\B\.svn\b
|
||||
\B\.git\b
|
||||
\B\.gitignore\b
|
||||
\b_darcs\b
|
||||
\B\.cvsignore$
|
||||
|
||||
# Avoid VMS specific MakeMaker generated files
|
||||
\bDescrip.MMS$
|
||||
\bDESCRIP.MMS$
|
||||
\bdescrip.mms$
|
||||
|
||||
# Avoid Makemaker generated and utility files.
|
||||
\bMANIFEST\.bak
|
||||
\bMakefile$
|
||||
\bblib/
|
||||
\bMakeMaker-\d
|
||||
\bpm_to_blib\.ts$
|
||||
\bpm_to_blib$
|
||||
\bblibdirs\.ts$ # 6.18 through 6.25 generated this
|
||||
|
||||
# Avoid Module::Build generated and utility files.
|
||||
\bBuild$
|
||||
\b_build/
|
||||
\bBuild.bat$
|
||||
\bBuild.COM$
|
||||
\bBUILD.COM$
|
||||
\bbuild.com$
|
||||
|
||||
# Avoid temp and backup files.
|
||||
~$
|
||||
\.old$
|
||||
\#$
|
||||
\b\.#
|
||||
\.bak$
|
||||
\.tmp$
|
||||
\.#
|
||||
\.rej$
|
||||
|
||||
# Avoid OS-specific files/dirs
|
||||
# Mac OSX metadata
|
||||
\B\.DS_Store
|
||||
# Mac OSX SMB mount metadata files
|
||||
\B\._
|
||||
|
||||
# Avoid Devel::Cover files.
|
||||
\bcover_db\b
|
||||
#!end included /usr/share/perl5/ExtUtils/MANIFEST.SKIP
|
||||
|
||||
# Avoid configuration metadata file
|
||||
^MYMETA\.
|
||||
|
||||
# Avoid Module::Build generated and utility files.
|
||||
\bBuild$
|
||||
\bBuild.bat$
|
||||
\b_build
|
||||
\bBuild.COM$
|
||||
\bBUILD.COM$
|
||||
\bbuild.com$
|
||||
^MANIFEST\.SKIP
|
||||
|
||||
# Avoid archives of this distribution
|
||||
\bStow-[\d\.\_]+
|
||||
|
||||
# Avoid autotools stuff
|
||||
^autom4te\.cache/.+$
|
||||
^config\.(log|status)$
|
||||
^doc/\.dirstamp$
|
||||
^doc/stamp-vti$
|
||||
|
||||
# Avoid test files
|
||||
^t/(stow|target)/.+$
|
52
META.json
Normal file
52
META.json
Normal file
|
@ -0,0 +1,52 @@
|
|||
{
|
||||
"abstract" : "manage the installation of multiple software packages",
|
||||
"author" : [
|
||||
"unknown"
|
||||
],
|
||||
"dynamic_config" : 1,
|
||||
"generated_by" : "Module::Build version 0.38, CPAN::Meta::Converter version 2.112621",
|
||||
"license" : [
|
||||
"open_source"
|
||||
],
|
||||
"meta-spec" : {
|
||||
"url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec",
|
||||
"version" : "2"
|
||||
},
|
||||
"name" : "Stow",
|
||||
"prereqs" : {
|
||||
"configure" : {
|
||||
"requires" : {
|
||||
"Module::Build" : 0
|
||||
}
|
||||
},
|
||||
"runtime" : {
|
||||
"requires" : {
|
||||
"Carp" : 0,
|
||||
"File::Slurp" : 0,
|
||||
"IO::File" : 0,
|
||||
"perl" : "5.006"
|
||||
}
|
||||
}
|
||||
},
|
||||
"provides" : {
|
||||
"Stow" : {
|
||||
"file" : "lib/Stow.pm",
|
||||
"version" : "v2.0.2"
|
||||
},
|
||||
"Stow::Util" : {
|
||||
"file" : "lib/Stow/Util.pm",
|
||||
"version" : 0
|
||||
}
|
||||
},
|
||||
"release_status" : "stable",
|
||||
"resources" : {
|
||||
"homepage" : "https://savannah.gnu.org/projects/stow",
|
||||
"license" : [
|
||||
"http://www.gnu.org/licenses/gpl-2.0.html"
|
||||
],
|
||||
"repository" : {
|
||||
"url" : "http://github.com/aspiers/stow"
|
||||
}
|
||||
},
|
||||
"version" : "v2.0.2"
|
||||
}
|
31
META.yml
Normal file
31
META.yml
Normal file
|
@ -0,0 +1,31 @@
|
|||
---
|
||||
abstract: 'manage the installation of multiple software packages'
|
||||
author:
|
||||
- unknown
|
||||
build_requires: {}
|
||||
configure_requires:
|
||||
Module::Build: 0
|
||||
dynamic_config: 1
|
||||
generated_by: 'Module::Build version 0.38, CPAN::Meta::Converter version 2.112621'
|
||||
license: open_source
|
||||
meta-spec:
|
||||
url: http://module-build.sourceforge.net/META-spec-v1.4.html
|
||||
version: 1.4
|
||||
name: Stow
|
||||
provides:
|
||||
Stow:
|
||||
file: lib/Stow.pm
|
||||
version: v2.0.2
|
||||
Stow::Util:
|
||||
file: lib/Stow/Util.pm
|
||||
version: 0
|
||||
requires:
|
||||
Carp: 0
|
||||
File::Slurp: 0
|
||||
IO::File: 0
|
||||
perl: 5.006
|
||||
resources:
|
||||
homepage: https://savannah.gnu.org/projects/stow
|
||||
license: http://www.gnu.org/licenses/gpl-2.0.html
|
||||
repository: http://github.com/aspiers/stow
|
||||
version: v2.0.2
|
30
Makefile.am
30
Makefile.am
|
@ -1,11 +1,14 @@
|
|||
## Process this file with Automake to produce Makefile.in
|
||||
|
||||
bin_SCRIPTS = stow chkstow
|
||||
info_TEXINFOS = stow.texi
|
||||
dist_man_MANS = stow.8
|
||||
dist_bin_SCRIPTS = bin/stow bin/chkstow
|
||||
info_TEXINFOS = doc/stow.texi
|
||||
TEXINFO_TEX = doc/texinfo.tex
|
||||
dist_man_MANS = doc/stow.8
|
||||
dist_doc_DATA = README
|
||||
pmdir = $(libdir)/perl5
|
||||
pm_DATA = lib/Stow.pm lib/Stow/Util.pm
|
||||
dist_pm_DATA = lib/Stow.pm
|
||||
pmstowdir = $(pmdir)/Stow
|
||||
dist_pmstow_DATA = lib/Stow/Util.pm
|
||||
|
||||
TESTS_ENVIRONMENT=$(PERL) -I $(top_srcdir)
|
||||
TESTS = \
|
||||
|
@ -23,8 +26,13 @@ TESTS = \
|
|||
t/chkstow.t
|
||||
|
||||
AUTOMAKE_OPTIONS = dist-shar
|
||||
EXTRA_DIST = $(TESTS) t/testutil.pm
|
||||
CLEANFILES = $(bin_SCRIPTS)
|
||||
CPAN_FILES = MANIFEST MANIFEST.SKIP Build.PL META.yml META.json
|
||||
EXTRA_DIST = \
|
||||
bin/stow.in bin/chkstow.in lib/Stow.pm.in \
|
||||
$(TESTS) t/testutil.pm \
|
||||
$(TEXINFO_TEX) \
|
||||
$(CPAN_FILES)
|
||||
CLEANFILES = $(bin_SCRIPTS) $(dist_pm_DATA)
|
||||
|
||||
# clean up files left behind by test suite
|
||||
clean-local:
|
||||
|
@ -34,11 +42,11 @@ clean-local:
|
|||
edit = sed -e 's|[@]PERL[@]|$(PERL)|g' \
|
||||
-e 's|[@]VERSION[@]|$(VERSION)|g'
|
||||
|
||||
stow: stow.in Makefile
|
||||
bin/stow: bin/stow.in Makefile
|
||||
$(edit) < $< > $@
|
||||
chmod +x $@
|
||||
|
||||
chkstow: chkstow.in Makefile
|
||||
bin/chkstow: bin/chkstow.in Makefile
|
||||
$(edit) < $< > $@
|
||||
chmod +x $@
|
||||
|
||||
|
@ -47,15 +55,15 @@ lib/Stow.pm: lib/Stow.pm.in
|
|||
|
||||
# The rules for manual.html and manual.texi are only used by
|
||||
# the developer
|
||||
manual.html: manual.texi
|
||||
doc/manual.html: doc/manual.texi
|
||||
-rm -f $@
|
||||
texi2html -expandinfo -menu -monolithic -verbose $<
|
||||
|
||||
manual.texi: stow.texi
|
||||
doc/manual.texi: doc/stow.texi
|
||||
-rm -f $@
|
||||
cp $< $@
|
||||
|
||||
MODULES = lib/Stow.pm lib/Stow/Util.pm
|
||||
|
||||
test: stow chkstow $(MODULES)
|
||||
test: bin/stow bin/chkstow $(MODULES)
|
||||
perl -MTest::Harness -Ilib -It -Ibin -e 'runtests(@ARGV)' t/*.t
|
||||
|
|
|
@ -37,11 +37,11 @@ sub usage {
|
|||
print <<"EOT";
|
||||
USAGE: chkstow [options]
|
||||
|
||||
Options:
|
||||
Options:
|
||||
-b, --badlinks Report symlinks that point to non-existant files.
|
||||
-a, --aliens Report non-symlinks in the target directory.
|
||||
-l, --list List packages in the target directory.
|
||||
-t DIR, --target=DIR Set the target directory to DIR (default
|
||||
-t DIR, --target=DIR Set the target directory to DIR (default
|
||||
is /usr/local)
|
||||
EOT
|
||||
exit(0);
|
||||
|
@ -51,7 +51,7 @@ sub check_stow {
|
|||
#my ($Target, $Wanted) = @_;
|
||||
|
||||
my (%options) = (
|
||||
wanted => $Wanted,
|
||||
wanted => $Wanted,
|
||||
preprocess => \&skip_dirs,
|
||||
);
|
||||
|
||||
|
@ -81,12 +81,12 @@ sub skip_dirs {
|
|||
|
||||
# checking for files that do not link to anything
|
||||
sub bad_links {
|
||||
-l && !-e && print "Bogus link: $File::Find::name\n";
|
||||
-l && !-e && print "Bogus link: $File::Find::name\n";
|
||||
}
|
||||
|
||||
# checking for files that are not owned by stow
|
||||
sub aliens {
|
||||
!-l && !-d && print "Unstowed file: $File::Find::name\n";
|
||||
sub aliens {
|
||||
!-l && !-d && print "Unstowed file: $File::Find::name\n";
|
||||
}
|
||||
|
||||
# just list the packages in the the target directory
|
|
@ -87,34 +87,34 @@ sub process_options {
|
|||
'version|V', 'compat|p', 'dir|d=s', 'target|t=s',
|
||||
|
||||
# clean and pre-compile any regex's at parse time
|
||||
'ignore=s' =>
|
||||
'ignore=s' =>
|
||||
sub {
|
||||
# FIXME: do we really need strip_quotes here?
|
||||
my $regex = strip_quotes($_[1]);
|
||||
push @{$options{'ignore'}}, qr($regex\z);
|
||||
},
|
||||
|
||||
'override=s' =>
|
||||
sub {
|
||||
'override=s' =>
|
||||
sub {
|
||||
my $regex = strip_quotes($_[1]);
|
||||
push @{$options{'override'}}, qr(\A$regex);
|
||||
},
|
||||
|
||||
'defer=s' =>
|
||||
sub {
|
||||
'defer=s' =>
|
||||
sub {
|
||||
my $regex = strip_quotes($_[1]);
|
||||
push @{$options{'defer'}}, qr(\A$regex);
|
||||
},
|
||||
|
||||
# a little craziness so we can do different actions on the same line:
|
||||
# a -D, -S, or -R changes the action that will be performed on the
|
||||
# a -D, -S, or -R changes the action that will be performed on the
|
||||
# package arguments that follow it.
|
||||
'D|delete' => sub { $action = 'unstow' },
|
||||
'S|stow' => sub { $action = 'stow' },
|
||||
'R|restow' => sub { $action = 'restow' },
|
||||
|
||||
# Handler for non-option arguments
|
||||
'<>' =>
|
||||
'<>' =>
|
||||
sub {
|
||||
if ($action eq 'restow') {
|
||||
push @pkgs_to_unstow, $_[0];
|
||||
|
@ -146,7 +146,7 @@ sub sanitize_path_options {
|
|||
$options->{'dir'} =~ s/ +\z//;
|
||||
}
|
||||
else {
|
||||
$options->{'dir'} = exists $ENV{STOW_DIR} ? $ENV{STOW_DIR} : getcwd();
|
||||
$options->{'dir'} = exists $ENV{STOW_DIR} ? $ENV{STOW_DIR} : getcwd();
|
||||
}
|
||||
|
||||
if (exists $options->{'target'}) {
|
||||
|
@ -176,7 +176,7 @@ sub check_packages {
|
|||
|
||||
|
||||
#===== SUBROUTINE ============================================================
|
||||
# Name : get_config_file_options()
|
||||
# Name : get_config_file_options()
|
||||
# Purpose : search for default settings in any .stowrc files
|
||||
# Parameters: none
|
||||
# Returns : a list of default options
|
||||
|
@ -190,7 +190,7 @@ sub get_config_file_options {
|
|||
for my $file ("$ENV{'HOME'}/.stowrc", '.stowrc') {
|
||||
if (-r $file) {
|
||||
warn "Loading defaults from $file\n";
|
||||
open my $FILE, '<', $file
|
||||
open my $FILE, '<', $file
|
||||
or die "Could not open $file for reading\n";
|
||||
while (my $line = <$FILE>){
|
||||
chomp $line;
|
||||
|
@ -200,13 +200,13 @@ sub get_config_file_options {
|
|||
}
|
||||
}
|
||||
return @defaults;
|
||||
}
|
||||
}
|
||||
|
||||
#===== SUBROUTINE ===========================================================
|
||||
# Name : usage()
|
||||
# Purpose : print program usage message and exit
|
||||
# Parameters: $msg => string to prepend to the usage message
|
||||
# Returns : n/a
|
||||
# Returns : n/a
|
||||
# Throws : n/a
|
||||
# Comments : if 'msg' is given, then exit with non-zero status
|
||||
#============================================================================
|
||||
|
@ -255,7 +255,7 @@ sub version {
|
|||
}
|
||||
|
||||
#===== METHOD ================================================================
|
||||
# Name : strip_quotes
|
||||
# Name : strip_quotes
|
||||
# Purpose : remove matching outer quotes from the given string
|
||||
# Parameters: none
|
||||
# Returns : n/a
|
|
@ -2,6 +2,7 @@ dnl Process this file with Autoconf to produce configure dnl
|
|||
|
||||
AC_INIT([stow], [2.0.2], [bug-stow@gnu.org])
|
||||
AC_PREREQ([2.61])
|
||||
AC_CONFIG_AUX_DIR([automake])
|
||||
AM_INIT_AUTOMAKE([-Wall -Werror])
|
||||
AC_PROG_INSTALL
|
||||
|
||||
|
|
|
@ -146,7 +146,7 @@ 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 value of the 'STOW_DIR' environment
|
||||
The stow directory is assumed to be the value of the 'STOW_DIR' environment
|
||||
variable or if unset the current directory, and the
|
||||
target directory is assumed to be the parent of the current directory
|
||||
(so it is typical to execute
|
|
@ -129,7 +129,7 @@ remove files in independent packages without confusing them with other
|
|||
files sharing the same file system space. For instance, it is common to
|
||||
install Perl and Emacs in @file{/usr/local}. When one does so, one
|
||||
winds up with the following files@footnote{As of Perl 4.036 and Emacs
|
||||
19.22.} in @file{/usr/local/man/man1}:
|
||||
19.22.} in @file{/usr/local/man/man1}:
|
||||
|
||||
@example
|
||||
a2p.1
|
||||
|
@ -138,7 +138,7 @@ emacs.1
|
|||
etags.1
|
||||
h2ph.1
|
||||
perl.1
|
||||
s2p.1
|
||||
s2p.1
|
||||
@end example
|
||||
|
||||
@noindent
|
||||
|
@ -269,7 +269,7 @@ given perl regular expression. For example, using the options
|
|||
@end example
|
||||
|
||||
@noindent
|
||||
will cause stow to ignore emacs and CVS backup files.
|
||||
will cause stow to ignore emacs and CVS backup files.
|
||||
|
||||
Note that the regular expression is anchored to the end of the filename,
|
||||
because this is what you will want to do most of the time.
|
||||
|
@ -299,7 +299,7 @@ a Perl regex.
|
|||
|
||||
Note that the regular expression is anchored to the beginning of the path
|
||||
relative to the target directory, because this is what you will want to do most
|
||||
of the time.
|
||||
of the time.
|
||||
|
||||
@item --override='<regex>'
|
||||
This (repeatable) option forces any file matching the regular expression to be
|
||||
|
@ -312,7 +312,7 @@ the following options
|
|||
|
||||
@noindent
|
||||
will permit stow to overwrite links that point to pre-existing man and info
|
||||
pages that are owned by stow and would otherwise cause a conflict.
|
||||
pages that are owned by stow and would otherwise cause a conflict.
|
||||
|
||||
The regular expression is anchored to the beginning of the path relative to
|
||||
the target directory, because this is what you will want to do most of the time.
|
||||
|
@ -321,7 +321,7 @@ the target directory, because this is what you will want to do most of the time.
|
|||
@itemx --no
|
||||
@itemx --simulate
|
||||
Do not perform any operations that modify the file system; in combination with
|
||||
@samp{-v} can be used to merely show what would happen.
|
||||
@samp{-v} can be used to merely show what would happen.
|
||||
|
||||
@item -v
|
||||
@itemx --verbose[=@var{n}]
|
||||
|
@ -335,8 +335,8 @@ doing. Verbosity levels are 0, 1, 2, and 3; 0 is the default. Using
|
|||
Scan the whole target tree when unstowing. By default, only directories
|
||||
specified in the @dfn{installation image} are scanned during an unstow
|
||||
operation. Scanning the whole tree can be prohibitive if your target tree is
|
||||
very large. This option restores the legacy behaviour; however, the
|
||||
@samp{--badlinks} option may be a better way of ensuring that your
|
||||
very large. This option restores the legacy behaviour; however, the
|
||||
@samp{--badlinks} option may be a better way of ensuring that your
|
||||
installation does not have any dangling symlinks.
|
||||
|
||||
@item -V
|
||||
|
@ -377,7 +377,7 @@ The following options are useful for cleaning up your target tree:
|
|||
@item -b
|
||||
@itemx --badlinks
|
||||
Checks target directory for bogus symbolic links. That is, links that point to
|
||||
non-existent files.
|
||||
non-existent files.
|
||||
|
||||
@item -a
|
||||
@itemx --aliens
|
||||
|
@ -387,7 +387,7 @@ contain a @file{.stow} file.
|
|||
|
||||
@item -l
|
||||
@itemx --list
|
||||
Will display the target package for every symbolic link in the stow target
|
||||
Will display the target package for every symbolic link in the stow target
|
||||
directory.
|
||||
The following options are deprecated:
|
||||
@end table
|
||||
|
@ -398,9 +398,9 @@ The following options are deprecated as of Stow version 2:
|
|||
@itemx --conflicts
|
||||
Print any conflicts that are encountered. This option
|
||||
implies @samp{-n}, and is used to search for all conflicts that might
|
||||
arise from an actual Stow operation.
|
||||
arise from an actual Stow operation.
|
||||
|
||||
This option is deprecated as conflicts are now printed by default and no
|
||||
This option is deprecated as conflicts are now printed by default and no
|
||||
operations will be performed if any conflicts are detected.
|
||||
@end table
|
||||
|
||||
|
@ -460,8 +460,8 @@ tree-folding symlink.
|
|||
@cindex unfolding trees
|
||||
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 @dfn{splitting open} or
|
||||
@dfn{unfolding} a folded tree. It involves removing the original symlink from
|
||||
its installation image. This operation is called @dfn{splitting open} or
|
||||
@dfn{unfolding} 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 @emph{and} to
|
||||
the old package that used the old symlink. For example, suppose that
|
||||
|
@ -561,7 +561,7 @@ un-populatable symlink.
|
|||
|
||||
For complex packages, scanning the stow and target trees in tandem, and
|
||||
deciding whether to make directories or links, split-open or fold directories,
|
||||
can actually take a long time (a number of seconds). Moreover, an accurate
|
||||
can actually take a long time (a number of seconds). Moreover, an accurate
|
||||
analysis of potential conflicts requires us to take into account all of
|
||||
these operations.
|
||||
|
||||
|
@ -585,7 +585,7 @@ stow -D emacs-21.3 -S emacs-21.4a
|
|||
@end example
|
||||
|
||||
@noindent
|
||||
which will replace emacs-21.3 with emacs-21.4a using a single invocation.
|
||||
which will replace emacs-21.3 with emacs-21.4a using a single invocation.
|
||||
|
||||
This is much faster and cleaner than performing two separate invocations of
|
||||
stow, because redundant folding/unfolding operations can be factored out. In
|
||||
|
@ -593,7 +593,7 @@ addition, all the operations are calculated and merged before being executed
|
|||
@pxref{Deferred Operation}, so the amount of of time in which GNU Emacs is
|
||||
unavailable is minimised.
|
||||
|
||||
You can mix and match any number of actions, for example,
|
||||
You can mix and match any number of actions, for example,
|
||||
|
||||
@example
|
||||
stow -S pkg1 pkg2 -D pkg3 pkg4 -S pkg5 -R pkg6
|
||||
|
@ -631,7 +631,7 @@ symlink, and thus cannot remove it).
|
|||
@chapter Target Maintenance
|
||||
|
||||
From time to time you will need to clean up your target tree.
|
||||
Stow includes three operational modes that performs checks that
|
||||
Stow includes three operational modes that performs checks that
|
||||
would generally be too expensive to performed during normal stow
|
||||
execution.
|
||||
|
||||
|
@ -1020,8 +1020,8 @@ the output from the command (preferably verbose output, obtained by
|
|||
adding @samp{--verbose=3} to the Stow command line).
|
||||
@end itemize
|
||||
|
||||
If you are really keen, consider developing a minimal test case and creating a
|
||||
new test. See the @file{t/} for lots of examples.
|
||||
If you are really keen, consider developing a minimal test case and
|
||||
creating a new test. See the @file{t/} for lots of examples.
|
||||
|
||||
Before reporting a bug, please read the manual carefully, especially
|
||||
@ref{Known Bugs}, to see whether you're encountering
|
|
@ -3,7 +3,7 @@
|
|||
% Load plain if necessary, i.e., if running under initex.
|
||||
\expandafter\ifx\csname fmtname\endcsname\relax\input plain\fi
|
||||
%
|
||||
\def\texinfoversion{2006-10-04.17}
|
||||
\def\texinfoversion{2011-11-21.13}
|
||||
%
|
||||
% Copyright (C) 1985, 1986, 1988, 1990, 1991, 1992, 1993, 1994, 1995,
|
||||
% 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free
|
||||
|
@ -310,7 +310,7 @@
|
|||
% We don't want .vr (or whatever) entries like this:
|
||||
% \entry{{\tt \indexbackslash }acronym}{32}{\code {\acronym}}
|
||||
% "\acronym" won't work when it's read back in;
|
||||
% it needs to be
|
||||
% it needs to be
|
||||
% {\code {{\tt \backslashcurfont }acronym}
|
||||
\shipout\vbox{%
|
||||
% Do this early so pdf references go to the beginning of the page.
|
||||
|
@ -661,7 +661,7 @@
|
|||
\def\?{?\spacefactor=\endofsentencespacefactor\space}
|
||||
|
||||
% @frenchspacing on|off says whether to put extra space after punctuation.
|
||||
%
|
||||
%
|
||||
\def\onword{on}
|
||||
\def\offword{off}
|
||||
%
|
||||
|
@ -1216,7 +1216,7 @@ where each line of input produces a line of output.}
|
|||
% that's what we do).
|
||||
|
||||
% double active backslashes.
|
||||
%
|
||||
%
|
||||
{\catcode`\@=0 \catcode`\\=\active
|
||||
@gdef@activebackslashdouble{%
|
||||
@catcode`@\=@active
|
||||
|
@ -1227,11 +1227,11 @@ where each line of input produces a line of output.}
|
|||
% not active characters. hyperref.dtx (which has the same problem as
|
||||
% us) handles it with this amazing macro to replace tokens. I've
|
||||
% tinkered with it a little for texinfo, but it's definitely from there.
|
||||
%
|
||||
%
|
||||
% #1 is the tokens to replace.
|
||||
% #2 is the replacement.
|
||||
% #3 is the control sequence with the string.
|
||||
%
|
||||
%
|
||||
\def\HyPsdSubst#1#2#3{%
|
||||
\def\HyPsdReplace##1#1##2\END{%
|
||||
##1%
|
||||
|
@ -1420,7 +1420,7 @@ where each line of input produces a line of output.}
|
|||
% tried to figure out what each command should do in the context
|
||||
% of @url. for now, just make @/ a no-op, that's the only one
|
||||
% people have actually reported a problem with.
|
||||
%
|
||||
%
|
||||
\normalturnoffactive
|
||||
\def\@{@}%
|
||||
\let\/=\empty
|
||||
|
@ -1547,7 +1547,7 @@ where each line of input produces a line of output.}
|
|||
|
||||
% Definitions for a main text size of 11pt. This is the default in
|
||||
% Texinfo.
|
||||
%
|
||||
%
|
||||
\def\definetextfontsizexi{
|
||||
% Text fonts (11.2pt, magstep1).
|
||||
\def\textnominalsize{11pt}
|
||||
|
@ -1672,7 +1672,7 @@ where each line of input produces a line of output.}
|
|||
% section, chapter, etc., sizes following suit. This is for the GNU
|
||||
% Press printing of the Emacs 22 manual. Maybe other manuals in the
|
||||
% future. Used with @smallbook, which sets the leading to 12pt.
|
||||
%
|
||||
%
|
||||
\def\definetextfontsizex{%
|
||||
% Text fonts (10pt).
|
||||
\def\textnominalsize{10pt}
|
||||
|
@ -1758,7 +1758,7 @@ where each line of input produces a line of output.}
|
|||
\setfont\secsf\sfbshape{12}{1000}
|
||||
\let\secbf\secrm
|
||||
\setfont\secsc\scbshape{10}{\magstep1}
|
||||
\font\seci=cmmi12
|
||||
\font\seci=cmmi12
|
||||
\font\secsy=cmsy10 scaled \magstep1
|
||||
|
||||
% Subsection fonts (10pt).
|
||||
|
@ -1799,7 +1799,7 @@ where each line of input produces a line of output.}
|
|||
% We provide the user-level command
|
||||
% @fonttextsize 10
|
||||
% (or 11) to redefine the text font size. pt is assumed.
|
||||
%
|
||||
%
|
||||
\def\xword{10}
|
||||
\def\xiword{11}
|
||||
%
|
||||
|
@ -1809,7 +1809,7 @@ where each line of input produces a line of output.}
|
|||
%
|
||||
% Set \globaldefs so that documents can use this inside @tex, since
|
||||
% makeinfo 4.8 does not support it, but we need it nonetheless.
|
||||
%
|
||||
%
|
||||
\begingroup \globaldefs=1
|
||||
\ifx\textsizearg\xword \definetextfontsizex
|
||||
\else \ifx\textsizearg\xiword \definetextfontsizexi
|
||||
|
@ -2094,7 +2094,7 @@ where each line of input produces a line of output.}
|
|||
% each of the four underscores in __typeof__. This is undesirable in
|
||||
% some manuals, especially if they don't have long identifiers in
|
||||
% general. @allowcodebreaks provides a way to control this.
|
||||
%
|
||||
%
|
||||
\newif\ifallowcodebreaks \allowcodebreakstrue
|
||||
|
||||
\def\keywordtrue{true}
|
||||
|
@ -2225,7 +2225,7 @@ where each line of input produces a line of output.}
|
|||
% @acronym for "FBI", "NATO", and the like.
|
||||
% We print this one point size smaller, since it's intended for
|
||||
% all-uppercase.
|
||||
%
|
||||
%
|
||||
\def\acronym#1{\doacronym #1,,\finish}
|
||||
\def\doacronym#1,#2,#3\finish{%
|
||||
{\selectfonts\lsize #1}%
|
||||
|
@ -2237,7 +2237,7 @@ where each line of input produces a line of output.}
|
|||
|
||||
% @abbr for "Comput. J." and the like.
|
||||
% No font change, but don't do end-of-sentence spacing.
|
||||
%
|
||||
%
|
||||
\def\abbr#1{\doabbr #1,,\finish}
|
||||
\def\doabbr#1,#2,#3\finish{%
|
||||
{\plainfrenchspacing #1}%
|
||||
|
@ -2256,43 +2256,43 @@ where each line of input produces a line of output.}
|
|||
% Theiling, which support regular, slanted, bold and bold slanted (and
|
||||
% "outlined" (blackboard board, sort of) versions, which we don't need).
|
||||
% It is available from http://www.ctan.org/tex-archive/fonts/eurosym.
|
||||
%
|
||||
%
|
||||
% Although only regular is the truly official Euro symbol, we ignore
|
||||
% that. The Euro is designed to be slightly taller than the regular
|
||||
% font height.
|
||||
%
|
||||
%
|
||||
% feymr - regular
|
||||
% feymo - slanted
|
||||
% feybr - bold
|
||||
% feybo - bold slanted
|
||||
%
|
||||
%
|
||||
% There is no good (free) typewriter version, to my knowledge.
|
||||
% A feymr10 euro is ~7.3pt wide, while a normal cmtt10 char is ~5.25pt wide.
|
||||
% Hmm.
|
||||
%
|
||||
%
|
||||
% Also doesn't work in math. Do we need to do math with euro symbols?
|
||||
% Hope not.
|
||||
%
|
||||
%
|
||||
%
|
||||
%
|
||||
\def\euro{{\eurofont e}}
|
||||
\def\eurofont{%
|
||||
% We set the font at each command, rather than predefining it in
|
||||
% \textfonts and the other font-switching commands, so that
|
||||
% installations which never need the symbol don't have to have the
|
||||
% font installed.
|
||||
%
|
||||
%
|
||||
% There is only one designed size (nominal 10pt), so we always scale
|
||||
% that to the current nominal size.
|
||||
%
|
||||
%
|
||||
% By the way, simply using "at 1em" works for cmr10 and the like, but
|
||||
% does not work for cmbx10 and other extended/shrunken fonts.
|
||||
%
|
||||
%
|
||||
\def\eurosize{\csname\curfontsize nominalsize\endcsname}%
|
||||
%
|
||||
\ifx\curfontstyle\bfstylename
|
||||
\ifx\curfontstyle\bfstylename
|
||||
% bold:
|
||||
\font\thiseurofont = \ifusingit{feybo10}{feybr10} at \eurosize
|
||||
\else
|
||||
\else
|
||||
% regular:
|
||||
\font\thiseurofont = \ifusingit{feymo10}{feymr10} at \eurosize
|
||||
\fi
|
||||
|
@ -2316,7 +2316,7 @@ where each line of input produces a line of output.}
|
|||
% Laurent Siebenmann reports \Orb undefined with:
|
||||
% Textures 1.7.7 (preloaded format=plain 93.10.14) (68K) 16 APR 2004 02:38
|
||||
% so we'll define it if necessary.
|
||||
%
|
||||
%
|
||||
\ifx\Orb\undefined
|
||||
\def\Orb{\mathhexbox20D}
|
||||
\fi
|
||||
|
@ -2632,7 +2632,7 @@ where each line of input produces a line of output.}
|
|||
% cause the example and the item to crash together. So we use this
|
||||
% bizarre value of 10001 as a signal to \aboveenvbreak to insert
|
||||
% \parskip glue after all. Section titles are handled this way also.
|
||||
%
|
||||
%
|
||||
\penalty 10001
|
||||
\endgroup
|
||||
\itemxneedsnegativevskipfalse
|
||||
|
@ -3428,7 +3428,7 @@ where each line of input produces a line of output.}
|
|||
% processing continues to some further point. On the other hand, it
|
||||
% seems \endinput does not hurt in the printed index arg, since that
|
||||
% is still getting written without apparent harm.
|
||||
%
|
||||
%
|
||||
% Sample source (mac-idx3.tex, reported by Graham Percival to
|
||||
% help-texinfo, 22may06):
|
||||
% @macro funindex {WORD}
|
||||
|
@ -3436,12 +3436,12 @@ where each line of input produces a line of output.}
|
|||
% @end macro
|
||||
% ...
|
||||
% @funindex commtest
|
||||
%
|
||||
%
|
||||
% The above is not enough to reproduce the bug, but it gives the flavor.
|
||||
%
|
||||
%
|
||||
% Sample whatsit resulting:
|
||||
% .@write3{\entry{xyz}{@folio }{@code {xyz@endinput }}}
|
||||
%
|
||||
%
|
||||
% So:
|
||||
\let\endinput = \empty
|
||||
%
|
||||
|
@ -3677,11 +3677,11 @@ where each line of input produces a line of output.}
|
|||
% makeinfo does not expand macros in the argument to @deffn, which ends up
|
||||
% writing an index entry, and texindex isn't prepared for an index sort entry
|
||||
% that starts with \.
|
||||
%
|
||||
%
|
||||
% Since macro invocations are followed by braces, we can just redefine them
|
||||
% to take a single TeX argument. The case of a macro invocation that
|
||||
% goes to end-of-line is not handled.
|
||||
%
|
||||
%
|
||||
\macrolist
|
||||
}
|
||||
|
||||
|
@ -3807,7 +3807,7 @@ where each line of input produces a line of output.}
|
|||
% to re-insert the same penalty (values >10000 are used for various
|
||||
% signals); since we just inserted a non-discardable item, any
|
||||
% following glue (such as a \parskip) would be a breakpoint. For example:
|
||||
%
|
||||
%
|
||||
% @deffn deffn-whatever
|
||||
% @vindex index-whatever
|
||||
% Description.
|
||||
|
@ -4759,11 +4759,11 @@ where each line of input produces a line of output.}
|
|||
% glue accumulate. (Not a breakpoint because it's preceded by a
|
||||
% discardable item.)
|
||||
\vskip-\parskip
|
||||
%
|
||||
%
|
||||
% This is purely so the last item on the list is a known \penalty >
|
||||
% 10000. This is so \startdefun can avoid allowing breakpoints after
|
||||
% section headings. Otherwise, it would insert a valid breakpoint between:
|
||||
%
|
||||
%
|
||||
% @section sec-whatever
|
||||
% @deffn def-whatever
|
||||
\penalty 10001
|
||||
|
@ -4821,7 +4821,7 @@ where each line of input produces a line of output.}
|
|||
% These characters do not print properly in the Computer Modern roman
|
||||
% fonts, so we must take special care. This is more or less redundant
|
||||
% with the Texinfo input format setup at the end of this file.
|
||||
%
|
||||
%
|
||||
\def\activecatcodes{%
|
||||
\catcode`\"=\active
|
||||
\catcode`\$=\active
|
||||
|
@ -5416,8 +5416,8 @@ where each line of input produces a line of output.}
|
|||
% from cmtt (char 0x0d). The undirected quote is ugly, so don't make it
|
||||
% the default, but it works for pasting with more pdf viewers (at least
|
||||
% evince), the lilypond developers report. xpdf does work with the
|
||||
% regular 0x27.
|
||||
%
|
||||
% regular 0x27.
|
||||
%
|
||||
\def\codequoteright{%
|
||||
\expandafter\ifx\csname SETcodequoteundirected\endcsname\relax
|
||||
'%
|
||||
|
@ -5429,7 +5429,7 @@ where each line of input produces a line of output.}
|
|||
% and a similar option for the left quote char vs. a grave accent.
|
||||
% Modern fonts display ASCII 0x60 as a grave accent, so some people like
|
||||
% the code environments to do likewise.
|
||||
%
|
||||
%
|
||||
\def\codequoteleft{%
|
||||
\expandafter\ifx\csname SETcodequotebacktick\endcsname\relax
|
||||
`%
|
||||
|
@ -5572,7 +5572,7 @@ where each line of input produces a line of output.}
|
|||
% by \defargscommonending, instead of 10000, since the sectioning
|
||||
% commands also insert a nobreak penalty, and we don't want to allow
|
||||
% a break between a section heading and a defun.
|
||||
%
|
||||
%
|
||||
\ifnum\lastpenalty=10002 \penalty2000 \fi
|
||||
%
|
||||
% Similarly, after a section heading, do not allow a break.
|
||||
|
@ -5950,7 +5950,7 @@ where each line of input produces a line of output.}
|
|||
% This does \let #1 = #2, with \csnames; that is,
|
||||
% \let \csname#1\endcsname = \csname#2\endcsname
|
||||
% (except of course we have to play expansion games).
|
||||
%
|
||||
%
|
||||
\def\cslet#1#2{%
|
||||
\expandafter\let
|
||||
\csname#1\expandafter\endcsname
|
||||
|
@ -7420,7 +7420,7 @@ should work if nowhere else does.}
|
|||
|
||||
% Same as @turnoffactive except outputs \ as {\tt\char`\\} instead of
|
||||
% the literal character `\'.
|
||||
%
|
||||
%
|
||||
@def@normalturnoffactive{%
|
||||
@let\=@normalbackslash
|
||||
@let"=@normaldoublequote
|
Loading…
Reference in a new issue