On Feb 25, 2015, at 8:56 AM, Artur Szostak wrote: > OK, so as I suspected, activation performs the dependency check and triggers > a deactivation of the older port. > Not knowing much about the internals of MacPorts, my assumption would have > been that all, pre-<phase>, <phase>, pos-<phase> groups happen atomically as > a transaction. But apparently that is not the way the Portfile API works. > Might be good for someone to mention that in the documentation at some point. > > But now for the problem that triggered this question: > I want a Portfile to download a large amount of demo data. A few Gbytes > worth. I dont want to destroot it because then the binary packages become > huge and unmanageable. The demo data need only be present when the port is > active. Not knowing the correct way to overload the activate and deactivate > phases in a Portfile. My solution was to place the download and cleanup in > the pre-activate and post-deactivate hooks. The reason for pre-activate and > not post-activate is that I noticed that the port would get marked as all OK, > even if the demo data did not download and unpack correctly. i.e. > post-activate is already too late, the port has been fully registered at that > point. > This port works fine up to the point that one tries to upgrade it to a newer > version. At which point the demo data is missing after an upgrade because of > the order that the hooks are called. > > Is there an easy and correct way to overload the activate/deactivate phase > itself? That should solve this problem.
You probably shouldn't do all that second-guessing of the port system, and should just install the demo files in the destroot, as you would any other file. If the demo data is a separate download, with a separate version number and release schedule from the software installed by the rest of the port, making the demo data a separate port as Daniel suggested is a great idea. _______________________________________________ macports-dev mailing list [email protected] https://lists.macosforge.org/mailman/listinfo/macports-dev
