Commit graph

356 commits

Author SHA1 Message Date
Adam Spiers
8d0a46cc88 Set DISTCLEANFILES to clean up more
Docker generates a whole bunch of files as root.
2019-06-29 00:56:11 +01:00
Adam Spiers
872ec96350 HOWTO-RELEASE: Fix cvs commit command for docs 2019-06-29 00:55:51 +01:00
Adam Spiers
cef930852c HOWTO-RELEASE: Fix git tag command 2019-06-29 00:36:00 +01:00
Adam Spiers
8b2123847d Split perlbrew install-multiple into separate RUN cmd
This allows changing which Perls are used etc. without
re-bootstrapping perlbrew.
2019-06-28 23:54:30 +01:00
Adam Spiers
2a4c3d3120
Use Clone backend for Hash::Merge, not Storable (#58)
Use Clone backend for Hash::Merge, not Storable
2019-06-28 21:57:08 +01:00
Adam Spiers
00c92076d9 Use Clone backend for Hash::Merge, not Storable
Need to avoid Storable backend, since it can't deal with regexps:

    https://rt.perl.org/Public/Bug/Display.html?id=50608

This should fix the Docker builds.
2019-06-28 21:20:45 +01:00
Adam Spiers
089151c116 make maintainer-clean remove cover_db/ 2019-06-28 21:20:45 +01:00
Adam Spiers
d991dfbbf8
Make testing within Docker containers easier (#56)
Make testing within Docker containers easier
2019-06-28 20:46:15 +01:00
Adam Spiers
5d667c3e71 Make testing within Docker containers easier 2019-06-28 20:36:38 +01:00
Adam Spiers
8acb10e26c
Merge pull request #57 from aspiers/strict-tests
Allow make to fail if missing modules for test dependencies
2019-06-28 20:33:30 +01:00
Adam Spiers
ba243c0a61 Allow make to fail if missing modules for test dependencies
e.g. make STRICT_TESTS=1

However we don't need this in .travis.yml as explained in the
comments.
2019-06-28 20:28:22 +01:00
Adam Spiers
651f1e6503
Dockerfile: fix Debian jessie sources (#55)
Dockerfile: fix Debian jessie sources
2019-06-28 17:48:04 +01:00
Adam Spiers
71a8d5d42c Dockerfile: fix Debian jessie sources
https://superuser.com/questions/1423486/issue-with-fetching-http-deb-debian-org-debian-dists-jessie-updates-inrelease
2019-06-28 17:14:37 +01:00
Adam Spiers
97b6a35b38
Make docker scripts use get-version (#54)
Make docker scripts use get-version
2019-06-28 17:14:23 +01:00
Adam Spiers
ded84b0d08
rebuild META.* in preparation for 2.3.0 release (#53)
rebuild META.* in preparation for 2.3.0 release
2019-06-28 17:10:42 +01:00
Adam Spiers
ee57b1abc6 Make docker scripts use get-version 2019-06-28 17:08:48 +01:00
Adam Spiers
e98fa1603a rebuild META.* in preparation for 2.3.0 release 2019-06-28 17:04:40 +01:00
Adam Spiers
6d195f95e0
Various improvements to tests (#52)
Various improvements to tests
2019-06-28 16:48:59 +01:00
Adam Spiers
74f0182834 Add separate tests for .stowrc from $HOME and $PWD
.stowrc can be obtained from $HOME and/or the current working
directory; however only the $HOME case was tested before, because
during tests Stow was being run from $HOME.

So switch $TEST_DIR to an absolute path, create a new run_from/
subdirectory, and chdir to that before invoking any Stow code.  This
allows us to test the behaviour of .stowrc in $HOME and run_from/
separately.
2019-06-28 16:39:53 +01:00
Adam Spiers
ac74d75a98 Split up is_deeply() assertions in find_stowed_path.t
This makes the tests and any failures more readable.
2019-06-28 15:24:50 +01:00
Adam Spiers
40a0807185 Check that find_stowed_path $path matches relative/absolute with target
Watch out for a corner case probably only relevant in tests.
2019-06-28 15:24:50 +01:00
Adam Spiers
3270b145e1 Improve comments on function parameters for clarity 2019-06-28 15:24:50 +01:00
Adam Spiers
e4f6a6742b Add examples of how to enable debugging in tests 2019-06-28 15:24:50 +01:00
Adam Spiers
6233298a91 Replace testutil::make_dir with File::Path::make_path
No need for a custom function here.
2019-06-28 01:02:48 +01:00
Adam Spiers
ba48fd3908 Rename $OUT_DIR to $TEST_DIR
This is a more accurate reflection of what it is.
2019-06-28 00:53:12 +01:00
Adam Spiers
5f875009f8
Avoid dereferencing $ENV{HOME} if it is undefined (#32)
Avoid dereferencing $ENV{HOME} if it is undefined
2019-06-28 00:41:55 +01:00
Adam Spiers
fea63ffe65
Improve the history of individual contributions and repositories (#49)
Improve the history of individual contributions and repositories
2019-06-27 20:49:44 +01:00
Adam Spiers
d5d710e3e3
Upgrade to GPL v3 and add headers to files (#50)
Upgrade to GPL v3 and add headers to files
2019-06-27 20:49:18 +01:00
Adam Spiers
311c2d139e Improve the history of individual contributions and repositories
The source code has been through a rather complicated journey, and
it's occasionally useful to understand this history from CVS to a
private Subversion repository to its current location in git.  So
document this more thoroughly, and ensure that everyone involved
is in the THANKS file.
2019-06-27 20:44:48 +01:00
Adam Spiers
157f39385a Change -w to "use warnings;" in tools/get-version
This is more idiomatic and consistent with everywhere else.
2019-06-27 20:39:16 +01:00
Adam Spiers
0979a9c7bd Change #!/usr/local/bin/perl to #!/usr/bin/perl in t/*.t
This doesn't really matter, since these are not executed directly, but
it's more consistent with everything else and modern systems.
2019-06-27 20:37:50 +01:00
Adam Spiers
27796720d5 Upgrade to GPL v3 and add headers to files (#44)
Following advice from maintainers@gnu.org, bring Stow in line with
other GNU projects by upgrading it from GPL v2 to v3

  https://www.gnu.org/prep/maintain/html_node/Licensing-of-GNU-Packages.html#Licensing-of-GNU-Packages

as obtained in plain text and texinfo formats from

  https://www.gnu.org/licenses/

and adding appropriate headers:

  https://www.gnu.org/prep/maintain/html_node/License-Notices-for-Code.html#License-Notices-for-Code

Fixes #44: https://github.com/aspiers/stow/issues/44
2019-06-27 20:37:40 +01:00
Adam Spiers
a4c0ad62d1
Fix Travis failure after merging #42 (#46)
Fix Travis failure after merging #42
2019-06-27 14:14:23 +01:00
Adam Spiers
0f54900cfe
remove trailing whitespace from lines (#45)
remove trailing whitespace from lines
2019-06-27 14:06:19 +01:00
Adam Spiers
fd17b807f5 Fix Travis failure after merging #42
Something weird happened with
https://travis-ci.org/aspiers/stow/jobs/551290921 after merging #42,
as shown below.  Maybe removing texi2html from the list of packages
for Travis to install will help.

---
Installing APT Packages
15.50s$ travis_apt_get_update
0.11s$ sudo -E apt-get -yq --no-install-suggests --no-install-recommends $(travis_apt_get_options) install texinfo texlive texi2html
Reading package lists...
Building dependency tree...
Reading state information...
Package texinfo is not available, but is referred to by another package.
This may mean that the package is missing, has been obsoleted, or
is only available from another source
However the following packages replace it:
  info install-info
E: Package 'texinfo' has no installation candidate
E: Unable to locate package texi2html
apt-get.diagnostics
apt-get install failed
$ cat ${TRAVIS_HOME}/apt-get-update.log
Get:2 http://dl.hhvm.com/ubuntu trusty InRelease [3,106 B]
Get:3 http://security.ubuntu.com/ubuntu trusty-security InRelease [65.9 kB]
Get:4 http://ppa.launchpad.net/chris-lea/redis-server/ubuntu trusty InRelease [15.4 kB]
Ign:5 http://repo.mongodb.org/apt/ubuntu trusty/mongodb-org/3.4 InRelease
Get:6 http://repo.mongodb.org/apt/ubuntu trusty/mongodb-org/3.4 Release [2,495 B]
Get:7 http://repo.mongodb.org/apt/ubuntu trusty/mongodb-org/3.4 Release.gpg [801 B]
Get:8 http://dl.hhvm.com/ubuntu trusty/main amd64 Packages [1,812 B]
Get:9 http://security.ubuntu.com/ubuntu trusty-security/main Sources [220 kB]
Get:10 http://security.ubuntu.com/ubuntu trusty-security/restricted Sources [5,050 B]
Get:11 http://security.ubuntu.com/ubuntu trusty-security/universe Sources [126 kB]
Get:12 http://security.ubuntu.com/ubuntu trusty-security/multiverse Sources [3,070 B]
Get:13 http://security.ubuntu.com/ubuntu trusty-security/main amd64 Packages [1,032 kB]
Get:14 http://security.ubuntu.com/ubuntu trusty-security/main i386 Packages [934 kB]
Get:15 http://security.ubuntu.com/ubuntu trusty-security/main Translation-en [541 kB]
Get:16 http://security.ubuntu.com/ubuntu trusty-security/restricted amd64 Packages [18.1 kB]
Get:17 http://security.ubuntu.com/ubuntu trusty-security/restricted i386 Packages [17.8 kB]
Get:18 http://security.ubuntu.com/ubuntu trusty-security/restricted Translation-en [3,272 B]
Get:19 http://security.ubuntu.com/ubuntu trusty-security/universe amd64 Packages [377 kB]
Get:20 http://security.ubuntu.com/ubuntu trusty-security/universe i386 Packages [355 kB]
Get:21 http://security.ubuntu.com/ubuntu trusty-security/universe Translation-en [203 kB]
Get:22 http://security.ubuntu.com/ubuntu trusty-security/multiverse amd64 Packages [4,730 B]
Get:23 http://security.ubuntu.com/ubuntu trusty-security/multiverse i386 Packages [4,887 B]
Get:24 http://security.ubuntu.com/ubuntu trusty-security/multiverse Translation-en [2,426 B]
Get:25 https://download.docker.com/linux/ubuntu trusty InRelease [37.1 kB]
Get:26 http://repo.mongodb.org/apt/ubuntu trusty/mongodb-org/3.4/multiverse amd64 Packages [14.1 kB]
Get:27 https://download.docker.com/linux/ubuntu trusty/stable amd64 Packages [5,763 B]
Get:28 https://download.docker.com/linux/ubuntu trusty/edge amd64 Packages [6,911 B]
Ign:29 http://ppa.launchpad.net/couchdb/stable/ubuntu trusty InRelease
Get:30 http://ppa.launchpad.net/git-core/ppa/ubuntu trusty InRelease [20.8 kB]
Get:31 http://ppa.launchpad.net/hvr/ghc/ubuntu trusty InRelease [15.4 kB]
Get:32 http://ppa.launchpad.net/pollinate/ppa/ubuntu trusty InRelease [15.4 kB]
Get:33 http://ppa.launchpad.net/webupd8team/java/ubuntu trusty InRelease [15.5 kB]
Get:34 http://ppa.launchpad.net/chris-lea/redis-server/ubuntu trusty/main amd64 Packages [1,843 B]
Get:35 http://ppa.launchpad.net/chris-lea/redis-server/ubuntu trusty/main i386 Packages [1,842 B]
Get:36 http://ppa.launchpad.net/chris-lea/redis-server/ubuntu trusty/main Translation-en [990 B]
Get:37 http://ppa.launchpad.net/couchdb/stable/ubuntu trusty Release [15.1 kB]
Get:38 http://ppa.launchpad.net/couchdb/stable/ubuntu trusty Release.gpg [316 B]
Ign:39 http://dl.google.com/linux/chrome/deb stable InRelease
Get:40 http://dl.google.com/linux/chrome/deb stable Release [943 B]
Get:41 http://dl.google.com/linux/chrome/deb stable Release.gpg [819 B]
Get:42 http://ppa.launchpad.net/git-core/ppa/ubuntu trusty/main amd64 Packages [3,494 B]
Get:43 http://ppa.launchpad.net/git-core/ppa/ubuntu trusty/main i386 Packages [3,496 B]
Get:44 http://ppa.launchpad.net/git-core/ppa/ubuntu trusty/main Translation-en [2,368 B]
Get:45 http://ppa.launchpad.net/hvr/ghc/ubuntu trusty/main amd64 Packages [18.5 kB]
Get:46 http://ppa.launchpad.net/hvr/ghc/ubuntu trusty/main i386 Packages [15.7 kB]
Get:47 http://ppa.launchpad.net/hvr/ghc/ubuntu trusty/main Translation-en [1,107 B]
Get:48 http://ppa.launchpad.net/pollinate/ppa/ubuntu trusty/main amd64 Packages [430 B]
Get:49 http://ppa.launchpad.net/pollinate/ppa/ubuntu trusty/main i386 Packages [430 B]
Get:50 http://ppa.launchpad.net/pollinate/ppa/ubuntu trusty/main Translation-en [374 B]
Get:51 http://ppa.launchpad.net/webupd8team/java/ubuntu trusty/main amd64 Packages [20 B]
Get:52 http://ppa.launchpad.net/webupd8team/java/ubuntu trusty/main i386 Packages [20 B]
Get:53 http://ppa.launchpad.net/webupd8team/java/ubuntu trusty/main Translation-en [20 B]
Get:54 http://ppa.launchpad.net/couchdb/stable/ubuntu trusty/main amd64 Packages [985 B]
Get:55 http://ppa.launchpad.net/couchdb/stable/ubuntu trusty/main i386 Packages [985 B]
Get:56 http://ppa.launchpad.net/couchdb/stable/ubuntu trusty/main Translation-en [644 B]
Get:57 http://dl.google.com/linux/chrome/deb stable/main amd64 Packages [1,107 B]
Err:58 https://packagecloud.io/computology/apt-backport/ubuntu trusty InRelease
  Failed to connect to packagecloud.io port 443: Connection timed out
Err:59 http://us-east-1.ec2.archive.ubuntu.com/ubuntu trusty InRelease
  Could not connect to apt.cache.travis-ci.com:80 (34.96.81.152), connection timed out
Err:60 http://us-east-1.ec2.archive.ubuntu.com/ubuntu trusty-updates InRelease
  Unable to connect to apt.cache.travis-ci.com:http:
Err:61 http://toolbelt.heroku.com/ubuntu ./ InRelease
  Could not connect to apt.cache.travis-ci.com:80 (34.96.81.152), connection timed out
Err:62 http://us-east-1.ec2.archive.ubuntu.com/ubuntu trusty-backports InRelease
  Unable to connect to apt.cache.travis-ci.com:http:
Err:63 http://apt.postgresql.org/pub/repos/apt trusty-pgdg InRelease
  Could not connect to apt.cache.travis-ci.com:80 (34.96.81.152), connection timed out
Err:1 http://dl.bintray.com/apache/cassandra 39x InRelease
  Could not connect to apt.cache.travis-ci.com:80 (34.96.81.152), connection timed out
Get:64 https://packagecloud.io/github/git-lfs/ubuntu trusty InRelease [23.2 kB]
Ign:64 https://packagecloud.io/github/git-lfs/ubuntu trusty InRelease
Get:65 https://packagecloud.io/rabbitmq/rabbitmq-server/ubuntu trusty InRelease [23.7 kB]
Get:66 https://packagecloud.io/github/git-lfs/ubuntu trusty/main Sources [20 B]
Get:67 https://packagecloud.io/github/git-lfs/ubuntu trusty/main amd64 Packages [8,003 B]
Get:68 https://packagecloud.io/github/git-lfs/ubuntu trusty/main i386 Packages [7,761 B]
Get:69 https://packagecloud.io/rabbitmq/rabbitmq-server/ubuntu trusty/main Sources [20 B]
Get:70 https://packagecloud.io/rabbitmq/rabbitmq-server/ubuntu trusty/main amd64 Packages [7,866 B]
Get:71 https://packagecloud.io/rabbitmq/rabbitmq-server/ubuntu trusty/main i386 Packages [7,866 B]
Fetched 4,218 kB in 15s (279 kB/s)
Reading package lists...
W: http://ppa.launchpad.net/couchdb/stable/ubuntu/dists/trusty/Release.gpg: Signature by key 15866BAFD9BCC4F3C1E0DFC7D69548E1C17EAB57 uses weak digest algorithm (SHA1)
W: GPG error: https://packagecloud.io/github/git-lfs/ubuntu trusty InRelease: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 6B05F25D762E3157
W: The repository 'https://packagecloud.io/github/git-lfs/ubuntu trusty InRelease' is not signed.
W: There is no public key available for the following key IDs:
6B05F25D762E3157
W: Failed to fetch http://us-east-1.ec2.archive.ubuntu.com/ubuntu/dists/trusty/InRelease  Could not connect to apt.cache.travis-ci.com:80 (34.96.81.152), connection timed out
W: Failed to fetch http://us-east-1.ec2.archive.ubuntu.com/ubuntu/dists/trusty-updates/InRelease  Unable to connect to apt.cache.travis-ci.com:http:
W: Failed to fetch http://us-east-1.ec2.archive.ubuntu.com/ubuntu/dists/trusty-backports/InRelease  Unable to connect to apt.cache.travis-ci.com:http:
W: Failed to fetch http://www.apache.org/dist/cassandra/debian/dists/39x/InRelease  Could not connect to apt.cache.travis-ci.com:80 (34.96.81.152), connection timed out
W: Failed to fetch https://packagecloud.io/computology/apt-backport/ubuntu/dists/trusty/InRelease  Failed to connect to packagecloud.io port 443: Connection timed out
W: Failed to fetch http://toolbelt.heroku.com/ubuntu/./InRelease  Could not connect to apt.cache.travis-ci.com:80 (34.96.81.152), connection timed out
W: Failed to fetch http://apt.postgresql.org/pub/repos/apt/dists/trusty-pgdg/InRelease  Could not connect to apt.cache.travis-ci.com:80 (34.96.81.152), connection timed out
W: Some index files failed to download. They have been ignored, or old ones used instead.
The command "sudo -E apt-get -yq --no-install-suggests --no-install-recommends $(travis_apt_get_options) install texinfo texlive texi2html" failed and exited with 100 during .
Your build has been stopped.
2019-06-27 13:55:35 +01:00
Adam Spiers
c2a399985a remove trailing whitespace from lines 2019-06-27 13:54:36 +01:00
Adam Spiers
4efb438224
Update maintainership to reflect reality (#41)
Update maintainership to reflect reality
2019-06-27 13:27:12 +01:00
Adam Spiers
a3e8103787
switch from unmaintained texi2html to makeinfo --html --no-split (#42)
switch from unmaintained texi2html to makeinfo --html --no-split
2019-06-26 14:08:48 +01:00
Adam Spiers
833abc4d93 Update maintainership to reflect reality
Troy hasn't been active on the project for many years.

https://lists.gnu.org/archive/html/stow-devel/2011-11/msg00009.html
2019-06-26 13:59:58 +01:00
Adam Spiers
22ca973d59 Switch to makeinfo --html --no-split for single-page HTML manual (#21)
Remove the dependency on the ancient and unmaintained texi2html, which
was difficult to get running on most distros other than openSUSE.

There are two more modern alternative approaches which can replace
this:

  - Use texi2any
  - Use makeinfo --html --no-split

The latter seems to be the standard way these days, so we switch to
that; however we keep Makefile rules for all three, and a phony
meta-rule 'manual-single-html-all' to allow quick comparison between
them.  Make tweaks accordingly to minimise the differences and improve
the output.

The rules for the older two approaches do not get triggered by
default.

Fixes #21: https://github.com/aspiers/stow/issues/21
2019-06-26 13:48:06 +01:00
Adam Spiers
9c402559d2 Include the preamble in online versions of the manual
This is more inline with the suggestion in the texinfo manual:

https://www.gnu.org/software/texinfo/manual/texinfo/html_node/_0040top-Command.html

and also the preamble is useful in all cases.
2019-06-26 13:46:37 +01:00
Adam Spiers
b4cb6e775a Add Guillaume and myself to the list of @authors 2019-06-26 13:46:37 +01:00
Adam Spiers
6764788f71 remove trailing whitespace from lines 2019-06-26 13:25:53 +01:00
Adam Spiers
8b0733a8a0 add tools/get-version to MANIFEST
Forgot to do this, and it broke ./Build.PL distcheck.
2019-06-25 20:33:48 +01:00
Adam Spiers
66d511b07b Merge remote-tracking branch 'bricewge/fix-34' 2019-06-25 20:10:43 +01:00
Adam Spiers
e647c53af1 Add some polish to the release process 2019-06-25 20:05:47 +01:00
Adam Spiers
42ed9ed942
Perform shell expansion on the contents of .stowrc (#40)
Perform shell expansion on the contents of .stowrc
2019-06-25 19:49:46 +01:00
Charles LeDoux
dc42c34107 Add function to expand ~ in .stowrc files (#14)
Add a new expand_tilde() function that performs tilde expansion of
strings, and corresponding unit tests:

    * A ~ at the beginning of a path is expanded to the user's home
      directory.
    * Literal '~' can be provided with '\~'

Combine this with expand_environment() in a new expand_filepath()
function which applies all (both) required expansion functions to a
string, and use that in get_config_file_options() to expand .stowrc
options.

Add more tests to check that tilde expanded in correct places, i.e.:

    * expanded for --target and --dir
    * not expanded for --ignore, --defer, or --override

Update documentation on stowrc files according to this functionality
change.

Fixes #14: https://github.com/aspiers/stow/issues/14
2019-06-25 19:38:43 +01:00
Charles LeDoux
9674738792 Apply environment expansion to options in .stowrc files
Expand environment variables used in stowrc, as requested in

    https://savannah.gnu.org/bugs/?41826

This is achieved by creating a new function expand_environment() that
replaces any substring of the form '$VAR' or '${VAR}' with contents of
environment variable $VAR.  Literal '$' can be given by '\$'.

N.B. The function is only applied to the --target and --dir options,
and only for options specified in .stowrc; cli options are left
untouched.

Undefined variables are expanded to the empty string, as they would be
in normal shell parameter expansion.

Unit tests added accordingly:

  - Test expand_environment():
    * Expand $HOME
    * Expand ${HOME}
    * Expand ${WITH SPACE}
    * Expand '\$HOME'. Expected is '$HOME'
    * Expand ${UNDEFINED}. Expected is ''.

  - Test that it's applied to the correct options.

  - Test that CLI options are not expanded.
2019-06-25 19:38:26 +01:00
Charles LeDoux
4d1167ffd7 Parse cli and stowrc files separately
Why:

* We want to selectively apply expansion to:
    * Only options from stowrc files.
    * Only options that take a path.
* This requires ability to:
    * Differentiate cli options from stowrc options
    * Distinguish between individual stowrc options.

This change addresses the need by:

* Options from ARGV and stowrc files are separately parsed, resulting in
  two options hashes.
    * Creating an option hash from stowrc files allows modification of
      specific arguments without having to rely on something like regex
      parsing of the options.

* get_config_file_options modified to return options hash.
    * Uses the same parse_options function that parses ARGV

* Add Hash:Merge to dependencies in order to merge the two option
  hashes.

* process_options() merges the two option hashes.
    * Get option hash for ARGV
    * Get option hash from get_config_file_options().
    * Merge the two hashes with Hash::Merge.
    * Sanitation and checks are ran on the merged options.

* The options -S, -D, and -R are ignored in stowrc files.
    * Due to the way argument parsing happens, the effect of these
      actions is not carried from stowrc into parsing of cli options.
    * It doesn't seem to make sense to put these options in stowrc
      anyway.
2019-06-25 19:38:25 +01:00