svn checkout

Ryan Schmidt ryandesign at macports.org
Mon Jan 16 14:36:00 PST 2012


On Jan 16, 2012, at 10:21, Mark Brethen wrote:

> The Reduce subversion repository for quite large. If you do not use CSL at all (ie you are just fetching for PSL) you can just exclude the csl directory and save a LOT. Additionally csl/support-packages contains code that you will not actually use during the build but is included to try to be extra careful that (L)GPL rights holders are kept content, and some things that are not even (L)GPL but are nevertheless imported from elsewhere are put there for reference and politeness so that people can see the original form of them. The README.* files there are intended to comment on provenance and licencing. An individual who is just building Reduce but does not intend to redistribute it does not need any of that 80 Mbytes!
> 
> Similarly when building just for CSL you do not need the 30+ Mbytes of PSL stuff. And in both cases, jlisp or jslisp would not be needed. 
> 
> Individual modules could be checked out using:
> 
> svn co [repo]/trunk/[module] [target-directory]
> 
> This could then be tailored to each subport. What might this look like in a portfile?

Consider, as Daniel said, making a distfile or distfiles. Consider writing a script or scripts (in bash, perl, whatever you're comfortable with) to automate this. For example, write one script that checks out a working copy from the repository, using however many svn commands to manipulate the depth of various directories to include and exclude the parts that are needed. You would run this once. Then, a second script that updates that working copy to a particular version and creates e.g. a .tar.xz file from it. You would run this whenever you want to update the port. You would upload this .tar.xz file to your web space and reference the URL to your web space in the portfile. Or, if you have no web space, you can work with admin -at- macosforge.org to get the file transferred directly to our distfiles mirror.

If the CSL and PSL versions of reduce differ greatly, maybe you need two distfiles, one for each. And two sets of scripts. Or scripts that can be told which version to check out or build for.

If the CSL and PSL versions of reduce have many files in common, maybe you need three distfiles -- one for the common stuff, and one each for the files that vary in CSL and PSL.

If the common files are installed in common locations, and both the CSL and PSL versions share them, maybe you need three ports or subports: one for the common files and one each for the CSL and PSL versions (they would declare a dependency on the common (sub)port).




More information about the macports-dev mailing list