On Nov 27, 2008, at 11:05, Ian Grant wrote:

I am trying to build a port which has a more complicated build procedure than just 'make xxx' I have to first build and install the main package and then go back into several subdirectories of the build directory and build and install plugins.

Can anyone point me to an example port which does something like this? I guess I need to add a post-destroot { } section to do this. But how to change the working directory and run the make. Do I just use the tcl 'cd' and 'exec' commands, or is there some sophisticated error handling that I need to do?

Actually if you're wanting to "make" additional things, then that should happen in post-build, not post-destroot. Destroot is only for moving stuff that has already been built into the staging area. So maybe you need a post-build to build the plugins, and also a post- destroot to stage them. For the post-build, you would probably just use the tcl "system" command. You may not use the tcl "cd" command; it is deprecated and will not be in MacPorts 1.7.0 and later. You might do something like this:

set plugins {foo bar baz}

post-build {
        foreach plugin ${plugins} {
                system "cd ${worksrcpath}/plugins/${plugin} && make"
        }
}

post-destroot {
        foreach plugin ${plugins} {
                system "cd ${worksrcpath}/plugins/${plugin} && make install"
        }
}

Or you might consider fixing their existing Makefile so that it installs the plugins, and contributing that change back to the authors of the software. Then the Portfile becomes simpler.

Just being able to read the default build { } script would be a good start. Where is that kept?

That's probably a lot more complicated than you need but it's here:

http://trac.macports.org/browser/trunk/base/src/port1.0/portbuild.tcl

_______________________________________________
macports-dev mailing list
[email protected]
http://lists.macosforge.org/mailman/listinfo.cgi/macports-dev

Reply via email to