NEWS 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590
  1. News file for Stow.
  2. * Changes in version 2.3.1
  3. *** Remove dependencies on Hash::Merge and Clone::Choose
  4. stow 2.3.0 added external runtime dependencies on Hash::Merge and
  5. Clone::Choose. Historically stow hasn't had runtime dependencies
  6. other than Perl itself, which is a useful property if you're
  7. managing the installation of Perl using stow; the bootstrapping
  8. instructions in stow's manual would need updating to describe how
  9. to install these two modules (and any dependencies they have now
  10. or in the future) as well.
  11. However, Hash::Merge is much more general than stow actually
  12. needs, so replace the merge() call with a few lines of equivalent
  13. code -- this avoids the external dependencies, and is clearer than
  14. the merge() call.
  15. Many thanks to Adam Sampson for this patch!
  16. https://lists.gnu.org/archive/html/bug-stow/2019-06/msg00001.html
  17. *** Fix an issue with the test suite
  18. t/cli.t was not testing with the right Perl executable, as
  19. reported here:
  20. https://rt.cpan.org/Ticket/Display.html?id=129944
  21. Thanks to Slaven Rezic for spotting this and reporting it!
  22. *** Various maintainer tweaks
  23. Improved the release process and its documentation in various
  24. minor ways.
  25. * Changes in version 2.3.0
  26. *** New features / changes in behaviour
  27. ***** New --dotfiles option
  28. Enable special handling for "dotfiles" (files or folders whose name
  29. begins with a period) in the package directory. If this option is
  30. enabled, Stow will add a preprocessing step for each file or folder
  31. whose name begins with "dot-", and replace the "dot-" prefix in the
  32. name by a period ("."). This is useful when Stow is used to manage
  33. collections of dotfiles, to avoid having a package directory full
  34. of hidden files.
  35. For example, suppose we have a package containing two files,
  36. stow/dot-bashrc and stow/dot-emacs.d/init.el. With this option,
  37. Stow will create symlinks from .bashrc to stow/dot-bashrc and from
  38. .emacs.d/init.el to stow/dot-emacs.d/init.el. Any other files,
  39. whose name does not begin with "dot-", will be processed as usual.
  40. Thanks to Joris Vankerschaver for this feature!
  41. ***** Shell-like expansion in .stowrc files
  42. For options within .stowrc files which describe file paths, "~" can
  43. be included to expand to the current value of $HOME, and
  44. environment variables can be referenced e.g. via "$FOO" or
  45. "${FOO}". To prevent expansion, escape with a backslash.
  46. Thanks a lot to Charles LeDoux for his diligent work on this
  47. feature!
  48. ***** chkstow now honours the $STOW_DIR environment variable
  49. The stow script already honoured the $STOW_DIR environment
  50. variable. Now chkstow does too, for consistency.
  51. ***** Stow now has a non-zero exit code if option parsing failed
  52. Thanks to Brice Waegeneire for reporting this.
  53. *** License upgraded from GPL version 2 to version 3
  54. Copyright and license notices were also added to the headers of
  55. various files in accordance with GNU guidelines.
  56. *** Documentation fixes and enhancements
  57. ***** Remove dependency on unmaintained texi2html
  58. The dependency on the ancient and unmaintained texi2html for
  59. building the single-page HTML version of the manual has been
  60. removed, since it was difficult to get running on most distros
  61. other than openSUSE.
  62. Instead use the more modern "makeinfo --html --no-split" approach.
  63. Rules have been kept for posterity in the Makefile for the old
  64. approach and also an "in-between" approach based on texi2any;
  65. however these are not triggered by default. Run
  66. make manual-single-html-all
  67. to compare the three versions.
  68. ***** Fixed naming of man page
  69. The title of the generated man page was previously ending up as
  70. something like:
  71. IO::FILE=IO(0XA719C0)(1)
  72. Thanks to @Corin-EU on GitHub highlighting this and proposing a
  73. fix.
  74. ***** Convert README and INSTALL to Markdown
  75. They are now named README.md and INSTALL.md, and render nicely
  76. when viewed via git hosting services which support Markdown.
  77. ***** Update documentation to reflect more modern use cases
  78. The README.md, stow(8) man page, and info manual have been updated
  79. to de-emphasise the package management use, since these days almost
  80. everyone prefers to use modern package managers such as rpm / dpkg
  81. / Nix for (system-wide) package management.
  82. To compensate, more popular modern use cases for Stow have been
  83. added, such as management of dotfiles and software compiled in the
  84. user's $HOME directory.
  85. ***** Miscellaneous documentation fixes
  86. - Various typos were fixed.
  87. - The documentation for --verbose was updated to indicate that
  88. verbosity levels now go up to 5.
  89. - Erroneous glob examples in the --ignore documentation were fixed.
  90. - The abbreviation "regex" was removed from the info manual for
  91. consistency.
  92. - INSTALL.md now also documents how to build directly from git.
  93. *** Fixes for bugs, tests, and other technical debt
  94. ***** Add Docker files for convenient testing across multiple Perl versions
  95. This is the first release which has been tested across 5 different
  96. versions of Perl prior to release! The versions are:
  97. perl-5.22.2
  98. perl-5.20.3
  99. perl-5.18.4
  100. perl-5.16.3
  101. perl-5.14.4
  102. Thanks to Charles LeDoux for this!
  103. ***** Set up continuous testing via Travis CI
  104. This means that the test suite will be automatically run on any
  105. pull requests submitted to GitHub, as well as "make distcheck"
  106. and "./Build distcheck".
  107. ***** Add Coveralls integration with GitHub
  108. This means that test coverage analysis will be automatically be run
  109. on any pull requests submitted to GitHub.
  110. ***** Miscellaneous improvements to the test suite
  111. These include proper testing of the distinct impact of ~/.stowrc
  112. and .stowrc in the directory from which Stow is invoked.
  113. ***** Fix for test suite on Cygwin
  114. Thanks to Lucas Theisen for this fix!
  115. ***** aclocal.m4 was updated using aclocal 1.15.1.
  116. ***** Miscellaneous fixes to the build and distribution process
  117. ***** Improve handling of directories with unusual names
  118. Various fixes for corner cases where directories are named "0"
  119. or begin with a space character, or where STOW_DIR is empty.
  120. Thanks to Cuong Manh Le for highlighting some of the issues and
  121. proposing fixes!
  122. * Changes in version 2.2.2
  123. *** @VERSION@ substitution was set up for the Stow::Util module.
  124. * Changes in version 2.2.1
  125. Version 2.2.1 was not released since it was rejected by pause.perl.org
  126. due to Stow::Util missing $VERSION.
  127. *** Small improvements to documentation
  128. ***** The README has been revamped.
  129. ***** Some index points have been added to the manual.
  130. ***** Some typos were fixed.
  131. ***** @VERSION@ substitution was fixed in the stow(8) man page.
  132. *** Fix Perl warnings
  133. Stow no longer emits "v-string in use/require non-portable" and
  134. "Possible precedence issue with control flow operator" warnings
  135. with newer Perl versions. See https://savannah.gnu.org/bugs/?36478
  136. and http://lists.gnu.org/archive/html/bug-stow/2014-06/msg00000.html
  137. for full details.
  138. *** Fix "Undefined subroutine &main::error" error
  139. See https://rt.cpan.org/Public/Bug/Display.html?id=75349 for details.
  140. *** Failed system calls now include error description
  141. This should make errors easier to understand.
  142. *** Default ignore list now ignores top-level README.*, LICENSE.*, and COPYING
  143. These files are by definition specific to a given package, so if
  144. they exist in the top-level directory, they should not be stowed.
  145. *** Correctly handle the stow/target directories as non-canonical paths
  146. Fix the case discovered by Hiroyuki Iwatsuki where stowing fails if
  147. the stow / target directories are non-canonical paths. For
  148. example, on FreeBSD /home is a symlink pointing to 'usr/home', so
  149. running with the stow directory as /home/user/local/stow and the
  150. target directory as /home/user/local previously resulted in the
  151. stow directory path being calculated as
  152. ../../../usr/home/user/local/stow relative to the target.
  153. See http://article.gmane.org/gmane.comp.gnu.stow.bugs/8820 for details.
  154. *** Fix stowing of relative links when --no-folding is used.
  155. With a tree like this:
  156. .
  157. |-- stow
  158. | `-- pkg
  159. | `-- lib
  160. | |-- itk-current -> itk4.0.0
  161. | `-- itk4.0.0
  162. | `-- libitk4.0.0.so
  163. `-- target
  164. `-- lib
  165. |-- itk4.0.0 -> ../../stow/pkg/lib/itk4.0.0
  166. `-- libfoo-1.2.3.so
  167. stowing pkg with the --no-folding option resulted in itk-current
  168. being "unpacked":
  169. .
  170. `-- target
  171. `-- lib
  172. |-- itk-current
  173. | `-- libitk4.0.0.so -> ../../../stow/pkg/lib/itk-current/libitk4.0.0.so
  174. |-- itk4.0.0
  175. | `-- libitk4.0.0.so -> ../../../stow/pkg/lib/itk4.0.0/libitk4.0.0.so
  176. `-- libfoo-1.2.3.so
  177. This commit fixes it so that it gets stowed as a symlink:
  178. .
  179. `-- target
  180. `-- lib
  181. ...
  182. |-- itk-current -> ../../stow/pkg/lib/itk-current
  183. ...
  184. Thanks to Gabriele Balducci for reporting this problem:
  185. http://thread.gmane.org/gmane.comp.gnu.stow.general/6676
  186. *** Internal code cleanups
  187. ***** aclocal was updated.
  188. ***** automake files were removed.
  189. ***** Trailing whitespace was removed.
  190. ***** Comments were added.
  191. ***** Debug messages were improved.
  192. * Changes in version 2.2.0
  193. *** New --no-folding option
  194. Disables folding of newly stowed directories when stowing, and
  195. refolding of newly foldable directories when unstowing.
  196. *** Remove -a option (--adopt still available)
  197. As --adopt is the only option which allows stow to modify files, it
  198. is considered potentially dangerous (especially for stow package
  199. directories which are not managed by a version control system).
  200. Therefore it seems prudent to require a bit more effort from the
  201. user to enable this option, minimising the change of enabling it
  202. via a typo.
  203. *** Improve error message when stow package is not found.
  204. The error message displayed a path to the missing stow package
  205. which was relative to the target directory rather than the cwd,
  206. which was confusing for the user.
  207. *** Test suite improvements
  208. The test suite has been tightened up slightly.
  209. *** Documentation improvements
  210. Various fixes and cosmetic improvements have been made in the manual.
  211. *** Remove "There are no outstanding operations to perform" warning.
  212. * Changes in version 2.1.3
  213. *** New --adopt / -a option
  214. This allows plain files in the target to be "adopted" into the
  215. package being stowed. See the manual has more details.
  216. *** ./configure now checks for Perl modules required by the test suite.
  217. * Changes in version 2.1.2
  218. Many thanks to Stefano Lattarini for help with numerous autoconf and
  219. automake issues which are addressed in this release.
  220. *** Significantly improve the handling of --with-pmdir.
  221. ***** Calculation of the default value for --with-pmdir is now done safely in Perl.
  222. Previously non-POSIX-compliant shells could cause issues.
  223. ***** The output of ./configure and make are now much more helpful.
  224. ***** The Makefile will now check whether pmdir is in Perl's built-in @INC.
  225. If not, it will insert a
  226. use lib "...";
  227. line into the generated stow script to ensure that it can always
  228. locate the Perl modules without needing to manually set PERL5LIB.
  229. ***** Updated INSTALL and HOWTO-RELEASE accordingly.
  230. *** ./configure now aborts if Perl isn't found.
  231. *** Ensured the ChangeLog is up-to-date when making a new distribution.
  232. *** Fixed bug with `make clean' removing files which the user may not be able to rebuild.
  233. * Changes in version 2.1.1
  234. *** Fixed bug where ./configure --with-pmdir=X was ineffectual.
  235. *** Calculated the correct default value for pmdir based on the local Perl installation.
  236. *** Fixed some automake issues (thanks to Stefano Lattarini for spotting these!)
  237. *** Improved various bits of documentation.
  238. * Changes in version 2.1.0
  239. *** Major refactoring of code into separate Stow and Stow::Util Perl modules.
  240. *** Added support for ignore list files.
  241. *** Added support for CPAN-style installation and distribution via Module::Build.
  242. *** Introduced `make test' target and significantly tightened up test suite.
  243. *** Very large number of code and documentation fixes (over 80 commits since version 2.0.1).
  244. *** The '--conflicts' option has been removed.
  245. Stow will always show conflicts if they are found during the scanning
  246. phase.
  247. *** Improved debugging output.
  248. *** Converted man page to POD format.
  249. *** Include PDF, and both split- and single-page HTML versions of manual in the distribution.
  250. *** Fixed code style consistency issues.
  251. *** Running configure from outside the source tree now works.
  252. *** `make distcheck' now works.
  253. * Changes in version 2.0.1
  254. *** Defer operations until all potential conflicts have been assessed.
  255. We do this by traversing the installation image(s) and recording the
  256. actions that need to be performed. Redundant actions are factored out,
  257. e.g., we don't want to create a link that we will later remove in order to
  258. create a directory. Benefits of this approach:
  259. 1. Get to see _all_ the conflicts that are blocking an installation:
  260. you don't have to deal with them one at a time.
  261. 2. No operations are be performed if _any_ conflicts are detected:
  262. a failed stow will not leave you with a partially installed
  263. package.
  264. 3. Minimises the set of operations that need to be performed.
  265. 4. Operations are executed as a batch which is much faster
  266. This can be an advantage when upgrading packages on a live system
  267. where you want to minimise the amount of time when the package is
  268. unavailable.
  269. *** The above fixes the false conflict problem mentioned in the info file.
  270. *** It also fixes the two bugs mentioned in the man page.
  271. *** Multiple stow directories will now cooperate in folding/unfolding.
  272. *** Conflict messages are more uniform and informative.
  273. *** Verbosity and tracing is more extensive and uniform.
  274. *** Implemented option parsing via Getopt::Long.
  275. *** Default command line arguments set via '.stowrc' and '~/.stowrc' files.
  276. Contents of these files are parsed as though they occurred first on
  277. the command line.
  278. *** Support multiple actions per invocation.
  279. In order for this to work, we had to add a new (optional) command line arg
  280. (-S) to specify packages to stow. For example, to update an installation
  281. of emacs you can now do
  282. stow -D emacs-21.3 -S emacs-21.4a
  283. which will replace emacs-21.3 with emacs-21.4a.
  284. You can mix and match any number of actions, e.g.,
  285. stow -S p1 p2 -D p3 p4 -S p5 -R p6
  286. will unstow p3, p4 and p6, then stow p1, p2, p5 and p6.
  287. *** New (repeatable) command line arg: --ignore='<regex>'
  288. This suppresses operating on a file matching the regex (suffix),
  289. e.g.
  290. --ignore='~' --ignore='\.#.*'
  291. will ignore emacs and CVS backup files (suitable for ~/.stowrc file).
  292. (I opted for Perl regular expressions because they are more
  293. powerful and easier to implement).
  294. *** New (repeatable) command line arg: --defer='<regex>'
  295. This defers stowing a file matching the regex (prefix) if that file
  296. is already stowed to a different package, e.g.,
  297. --defer='man' --defer='info'
  298. will cause stow to skip over pre-existing man and info pages.
  299. Equivalently, you could use --defer='man|info' since the argument
  300. is just a Perl regex.
  301. *** New (repeatable) command line arg: --override='<regex>'
  302. This forces a file matching the regex (prefix) to be stowed even if
  303. the file is already stowed to a different package, e.g.
  304. --override='man' --override='info'
  305. will unstow any pre-existing man and info pages that would conflict
  306. with the file we are trying to stow.
  307. Equivalently, you could use --override='man|info' since the
  308. argument is just a Perl regex.
  309. *** The above gives the ability to manage packages with common content.
  310. For example, man pages that are shared by a number of CPAN
  311. packages. Using multiple stow directories and .stowrc files can
  312. also simplify things. In our setup we use the standard
  313. /usr/local/stow directory for packages to be installed in
  314. /usr/local. Since we install a large number of extra Perl packages
  315. (currently about 300) we use an additional stow directory:
  316. /usr/local/stow/perl-5.8.8-extras. Both stow directories contain a
  317. '.stow' file so that they collaborate appropriately. I then use
  318. the following .stowrc file in /usr/local/stow/perl-5.8.8-extras
  319. --dir=/usr/local/stow/perl-5.8.8-extras
  320. --target=/usr/local
  321. --override=bin
  322. --override=man
  323. --ignore='perllocal\.pod'
  324. --ignore='\.packlist'
  325. --ignore='\.bs'
  326. When I stow packages from there, they automatically override any
  327. man pages and binaries that may already have been stowed by another
  328. package or by the core perl-5.8.8 installation. For example, if
  329. you want to upgrade the Test-Simple package, you need to override
  330. all the man pages that would have been installed by the core
  331. package. If you are upgrading CPAN, you will also have to override
  332. the pre-existing cpan executable.
  333. *** By default, search less aggressively for invalid symlinks when unstowing.
  334. That is, we only search for bad symlinks in the directories
  335. explicitly mentioned in the installation image, and do not dig down
  336. into other subdirs. Digging down into other directories can be
  337. very time consuming if you have a really big tree (like with a
  338. couple of Oracle installations lying around). In general the old
  339. behaviour is only necessary when you have really stuffed up your
  340. installation by deleting a directory that has already been stowed.
  341. Doing that on a live system is somewhat crazy and hopefully rare.
  342. We provide an option '-p|--compat' to enable the old behaviour for
  343. those needing to patch up mistakes.
  344. *** New chkstow utility for checking the integrity of the target directory.
  345. *** Implement a test suite and support code.
  346. This was built before implementing any of the extra features so I
  347. could more easily check for equivalent functionality. The initial
  348. code base had to be refactored substantially to allow for testing.
  349. The test suite is not exhaustive, but it should provide enough to
  350. check for regressions.
  351. * Changes in version 1.3.3
  352. *** Now requires Perl 5.005 or later
  353. *** Initially empty directories are not removed anymore
  354. *** Removed buggy fastcwd (we use POSIX::getcwd instead)
  355. *** Fixed bug when the common Parent of Target dir and Stow dir was "/"
  356. *** Fixed bug when handling directories named "0"
  357. *** Stow now only warns the user if a directory is unreadable during unstowing.
  358. * Changes in version 1.3:
  359. *** Added --restow option.
  360. *** Fixed handling of slashes in package names.
  361. *** Expanded configure-time search for Perl binary.
  362. * Changes in version 1.2:
  363. *** Dependency on `pwd' removed.
  364. *** Perl 4 compatibility fixes.
  365. *** Manual expanded even more.
  366. * Changes in version 1.1:
  367. *** Long and short options now accepted.
  368. *** Manual expanded.
  369. *** `make clean' removes stow (which is generated from stow.in).
  370. * Initial public release (v1.0) of Stow.
  371. * emacs local variables
  372. Local Variables:
  373. mode: org
  374. org-export-with-toc: nil
  375. org-export-with-author: nil
  376. org-toc-odd-levels-only: t
  377. End: