[Dirvish] Dirvish version 1.3.0 now available

Eric Mountain em-dirvish-1 at nerim.net
Tue Dec 21 16:18:38 PST 2004

On Friday 17 Dec 2004 07:05, Doug Hanks spake thus:
> Dirvish version 1.3.0 is now available.  Dirvish has been upgraded
> slightly with a beta release of GNU autoconf.

Thanks for showing the way...!

> Please beta test this release and provide feedback and bugs so that
> they may be corrected in the next release.

I have a few questions:
- You look up the location of rsync and ssh (AC_PATH_PROG).  I didn't see any 
use of the result.  Am I missing something, or are they placeholders for use 
later on?
- It seems like $CONFDIR is not set anywhere.  I installed to a fake root 
directory and got "ERROR: no master configuration file" when I ran dirvish, 
even though I do have /etc/dirvish/master.conf.

Anyway, I decided to follow your lead...  I started looking into Perl 
equivalents of the auto* tools.  There are basically 2: ExtUtils::MakeMaker 
(http://www.perldoc.com/perl5.6/lib/ExtUtils/MakeMaker.html) and 
(http://cpan.uwinnipeg.ca/htdocs/Module-Build/Module/Build.html).  MakeMaker 
is the historic builder/installer.  Module::Build is a rewrite of the former 
with a view to "making the job easier".

I decided to give Module::Build a try.  You can find the result here: 


BEWARE: This version includes patches for the following issues mentionned on 
the dirvish Wiki:
 - BadShellCommandCWD
 - RsyncError24 (now it's error 100, a warning)
 - SpacesInSource
 - ChmodOnExpire (requires File::chmod in addition to the previous dirvish 
modules dependencies)

It has only undergone very light testing and may very well not work as 

This version uses both the autoconf work Doug did and Module::Build.  This is 
because M::B has no native mechanism for installing manpages in sections 5 
and 8, so I used Doug's autoconf work to handle that aspect.

Anyway, to use it after untarring:
- Optional steps: "aclocal", "autoconf", "automake --add-missing"
- perl Build.PL
- ./Build install
(configure and make install are called from the Build script - see Build.PL)

Note that you have considerable flexibility in deciding where files should go 
during install, e.g:

* ./Build install destdir=/tmp/test installdirs=vendor
will install to a "vendor" hierarchy (e.g. /usr) under /tmp/test  
(i.e. /tmp/test/usr/...).

* ./Build install installdirs=site --install_path script=/usr/local/sbin
will install to "site" hierarchy (e.g. /usr/local) except that the main 
scripts will be installed to /usr/local/sbin instead of /usr/local/bin.  
(Paul, that example is specially for you ;-) ).

- Ability to easily check for presence of required Perl modules, including 
version number if necessary.  (Missing modules are not treated as fatal.)
- Very flexible about specifying target directories.  See above.
- Follows Perl standards.  (Directory layout, access to perl configuration...)
- loadconfig is now a module and is installed to an appropriate perl module 

- Doesn't natively handle manpages for sections 5 and 8.  This is in fact 
because Perl itself doesn't have settings for this in Config.pm from what I 
can tell.  Means we have to use both M::B and autoconf, so could be 
considered cumbersome.
- Requires Module::Build which is not yet part of Perl core.  We could use 
MakeMaker instead though.

Problems not yet handled:
- CONFDIR has been hardcoded to /etc/dirvish in each script.
- INSTALL not updated.
- The call to ./configure in Build.PL should probably move to another target, 
or have some form of up to date check, otherwise it runs every time...
- The man pages should be converted to POD.  Then we can generate the man 
pages (and HTML/...) from the POD files which would probably allow us to 
include version info etc. more easily.
- loadconfig has been turned into a module, but is still in the toplevel 
directory.  It should move to lib.
- etc. ;-)

Please let me know what you think of this...

Cheers and have a Happy Christmas,
Eric Mountain

More information about the Dirvish mailing list