wiki:CommittersGuide/Distfiles

Version 7 (modified by ryandesign (Ryan Carsten Schmidt), 12 years ago) (diff)

suggest https urls

The content of each port's "files" directory should be kept fairly small as it is copied to every MacPorts user's hard drive. If larger patches (for example application bundles with icon files) are supplied then they should be added to distfiles so they are only downloaded by those users who are actually installing the port.

Set up personal space in repository

First set up your user directory in the MacPorts Subversion repository to maintain the files. Inside your user directory in the repository, you should create a directory with the port's name. Also create a directory for the port you're working on inside the distfiles area of the Subversion repository. You can use the commands below to do so:

Repository=https://svn.macosforge.org/repository/macports
User=userid
Port=portid

svn mkdir --username ${User}@macports.org -m"Create staging for ${Port}" ${Repository}/users/${User}/${Port}
svn mkdir --username ${User}@macports.org -m"Create distfiles for ${Port}" ${Repository}/distfiles/${Port}

Replace userid and portid with your own userid and the port you are working on.

Prepare files

Prepare the files you want to distribute inside your user directory in the repository and commit them back into Subversion. Then export them again. Export is needed so unnecessary svn meta data is not distributed. The exported files should then be packed. To keep the Portfile simple it is best to use the same archiver as is used for the main source file. You can use the following commands to do so:

Repository=https://svn.macports.org/repository/macports
User=userid
Port=portid
Version=12345

alias tar=/opt/local/bin/gnutar
alias mv=/opt/local/bin/gmv
alias rm=/opt/local/bin/grm

svn export ${Repository}/users/${User}/${Port}
mv --verbose ${Port} ${Port}-r${in_Version}
tar --create --gzip --file="${Port}-r${Version}.tar.gz" "${Port}-r${in_Version}"
svn import -m"Add distfile for ${Port}" "${Port}-r${Version}.tar.gz" "${Repository}/distfiles/${Port}/${Port}-r${Version}.tar.gz"
rm --verbose --recursive "${Port}"

Replace 12345 with a unique version identifier and userid and portid as you did before. Upload.command shows one way how you can automate the whole process.