Hi,

I initially wrote App::Build to solve exactly the problem you describe.
At that time, it depended on internals of Module::Build that were changed
when Module::Build went from 0.26xx to 0.28xx.
I discontinued development of it.

However, Mattia Barbon picked it up (<[EMAIL PROTECTED]>) and continues
to develop it for Module::Build 0.28xx.

Stephen

P.S. App::Options is an awesome/awesomely simple configuration/option
handling module.  It would be too bad if Module::Build::ConfigData
didn't work well
with App::Options.

On 8/22/07, wu-lee <[EMAIL PROTECTED]> wrote:
> Hello - new subscriber here.
>
> I've written a module which is essentially an application.
>
> As such, it needs to install some config files, templates, and web
> content. These need to have permissions and ownership set appropriately
> for the host system (which might not be unix).
>
> I'm pretty sure installing files to standard locations such as $etc,
> $var, $usr_lib, and setting permissions are common things to want to do,
> at least it's a common problem for me, but so far as I know none of the
> CPAN frameworks (ExtUtils::MakeMaker, Module::Install, and what I'm
> using currenly, Module::Build) seem to support that directly.
>
> Naively you might think this should be as transparent as installing .pm
> files.  I'm sure it isn't, but I also wonder why there doesn't seem to
> be many (any?) modules which try to tackle it, since it'd seem to be
> such a common requirement.
>
>
> So far I've seen the M::B::Cookbook, and looked at the Alien::Selenium
> and OpenGuides distributions for examples of custom Module::Build
> installations.
>
> I also just recently discovered App::Build which looks promising as more
> general solution.  On closer inspection it seems to mandate the use of
> App::Options over the usual Module::Build::ConfigData mechanism (which
> it clobbers), and it doesn't do any automatic platform-specific path
> configuration for you (which would be nice to have).  Perhaps this would
> be a good starting point, however.
>
>
>
> Firstly, as presumably this wheel has been invented lots of times already:
>
>   - Are there any existing application installation frameworks exist
> that I could use/build on (besides the ones above)?
>
>   - Are there any guidelines, or opinions about the various options I
> could choose (such as App::Install)?
>
>   - Is there some reason why this niche hasn't already been filled by
> Module::Build?
>
>
>
> To elaborate, I'm looking for something which can not only define new
> install directories for config, data, cgi scripts etc., but can infer
> these appropriately for the platform in use, and set up permissions and
> ownership too, where necessary.  Perhaps that's asking for a lot.
>
> My current solution is based on OpenGuides' installer - a subclass of
> Module::Build which sets up new install directories with
> M::B->install_path.  After installing, my implementation sets the
> correct file ownership and permissions of web content.  It gets this
> information from a file in the distribution called 'blib.perms' that
> maps blib/ paths to symbolic permissions/ownership properties.  To get
> the paths it currently queries the user.  Finally, it stores the paths
> using Module::Build::ConfigData, so that the application can find the files.
>
> It mostly works for me, but isn't especially well tested on platforms
> besides Debian Linux (and even then, could probably do with more testing).
>
>
> Some related questions I'd also like to ask:
>
>   - Are there any CPAN implementations of a function which works like
> unix's 'cp -a', but cross platform? (File::Copy doesn't copy permissions
> or ownership, and neither does ExtUtils::Install, at least on
> directories. Therefore I've tried to implement one, it seems to work,
> but see disclaimer above. )
>
>   - Likewise a directory generator which can assign the correct
> permissions / ACLs or whatever?  (Ditto last aside).
>
>   - If not, can anyone advice me where I might contribute most usefully?
>   Module::Build?  App::Build?
>
>
> Thanks,
>
> Nick
>

Reply via email to