Hi Scott

I think you are confusing destroot.violate_mtree

For which the docs say:
This means that the port installed files outside of their normal locations in ${prefix}. These could be files totally outside of $ {prefix}, which could cause problems on your computer, or files inside of ${prefix} that are not in a standard location. Use port contents portname to see the location for all files that were installed by a given port.

And the apache2 port which actually does install all its files in $prefix in a normal Mac OSX install, as the command "port contents apache2" shows
For most people $prefix is /opt/local/

The issue is that apache2 does not follow the macports hierarchy and instead just follows the standard apache setup
http://httpd.apache.org/docs/2.2/install.html#configure
By default, make install will install all the files in /usr/local/ apache2/bin, /usr/local/apache2/lib etc. You can specify an installation prefix other than /usr/local/apache2 using --prefix, for instance --prefix=$HOME.--enable-layout=LAYOUTConfigure the source code and build scripts to assume an installation tree based on the layout LAYOUT. This allows you to separately specify the locations for each type of file within the Apache HTTP Server installation. Theconfig.layout file contains several example configurations, and you can also create your own custom configuration following the examples. The different layouts in this file are grouped into <Layout FOO>...</ Layout> sections and referred to by name as in FOO. The default layout is Apache.

----- from the layout file....
#   Classical Apache path layout.
<Layout Apache>
    prefix:        /usr/local/apache2
    exec_prefix:   ${prefix}
    bindir:        ${exec_prefix}/bin
    sbindir:       ${exec_prefix}/bin
    libdir:        ${exec_prefix}/lib
    libexecdir:    ${exec_prefix}/modules
    mandir:        ${prefix}/man
    sysconfdir:    ${prefix}/conf
    datadir:       ${prefix}
    installbuilddir: ${datadir}/build
    errordir:      ${datadir}/error
    iconsdir:      ${datadir}/icons
    htdocsdir:     ${datadir}/htdocs
    manualdir:     ${datadir}/manual
    cgidir:        ${datadir}/cgi-bin
    includedir:    ${prefix}/include
    localstatedir: ${prefix}
    runtimedir:    ${localstatedir}/logs
    logfiledir:    ${localstatedir}/logs
    proxycachedir: ${localstatedir}/proxy
</Layout>

So what you are actually suggesting is changing the default layout
    htdocsdir:     ${datadir}/htdocs

to read in macports
    htdocsdir:     ${prefix}/www

to comply with the standard layout?


I believe the
destroot.violate_mtree yes
in the portfile is primarily to allow the platform Darwin to install files outside the prefix.


Mike


On Feb 24, 2009, at 5:03 PM, Scott Haneda wrote:

On Feb 24, 2009, at 3:31 PM, Chris Janton wrote:
On 2009-02-24 , at 15:35 , Scott Haneda wrote:

My feeling is, the sooner the better, there are already a handful of blogs out there, which instructions and hard paths in their instructions pointing to the current location. The sooner we put it where MacPorts recommends, the better the long term usability is going to be.

how about leaving it where it has been for years? I suspect many people who use the port have become "attached" to the current location, including me.

I suspect that as well, which is why I was asking. I believe it should be moved, and if you are so inclined, you can symblink to the old location.

Do a Google search on "/opt/apache2" and you'll see that the choice of /opt/local/apache2 is perfectly sensible when compared to where other "systems" put the application and files.

Correct, I noticed that as well, but it is contrary to the docs, which I am reading, and trying to understand. I am trying to work on several ports to add to MacPorts, and I want to do things the right way, not just the way everyone has gotten used to.

Is there a compelling reason to put it somewhere else?

Warning: portname requests to install files outside the common directory structure! ( That to me sound serious, ominous, and something we should strive to solve for new users )

It generates an error, which is something people have to learn to ignore or research about why the error happened. For a user who is not a port contributor, this error is off putting to them.

It happened to me, I installed mysql devel, saw the error, and had to track it down, to learn that the sql bench files are put in /opt/ local

Now I know what the error is about. There are a lot of people I try to get to use ports, and they all tell me they tried in the past but could not get past errors, maybe this is one of those issues.

From the docs, this is open to new user interpretation, and could be very off putting:

MacPorts tests for compliance to the common directory structure in $ {prefix}. If a port is not compliant with the standard, set it to yes.

You can find the macports standard in MacPorts File Hierarchy or in the porthier(7) man page.

If destroot.violate_mtree is set to yes, the following warning is issued during the installation.

Warning: portname requests to install files outside the common directory structure! This means that the port installed files outside of their normal locations in ${prefix}. These could be files totally outside of $ {prefix}, which could cause problems on your computer, or files inside of ${prefix} that are not in a standard location. Use port contents portname to see the location for all files that were installed by a given port.

My vote is to fix it, those who tend to like the old location, spend time in it, and can symblink it.
--
Scott

_______________________________________________
macports-users mailing list
macports-users@lists.macosforge.org
http://lists.macosforge.org/mailman/listinfo.cgi/macports-users


_______________________________________________
macports-users mailing list
macports-users@lists.macosforge.org
http://lists.macosforge.org/mailman/listinfo.cgi/macports-users

Reply via email to