VCS package guidelines
Template:Article summary start Template:Article summary text Template:Article summary heading Template:Article summary wiki Template:Article summary wiki Template:Article summary wiki Template:Article summary wiki Template:Article summary wiki Template:Article summary wiki Template:Article summary end
Guidelines for creating PKGBUILDs for software managed with version control systems.
- Properly suffix Template:Codeline with Template:Codeline, Template:Codeline, Template:Codeline, Template:Codeline, Template:Codeline or Template:Codeline. If the package tracks a moving development trunk it should be given a suffix. If the package fetches a release from a VCS tag then it should not be given a suffix. Use this rule of thumb: if the output of the package depends on the time at which it was compiled, append a suffix; otherwise do not.
- When makepkg is run, by default it will check for newer revisions and then update the Template:Codeline in the PKGBUILD. Look at Template:Codeline in man makepkg if you want otherwise. Template:Codeline only works for cvs and svn, which allow checkout of older revisions.
- Check for package conflicts. For example fluxbox-svn will conflict with fluxbox. In this case, you need to use Template:Codeline.
- Use the Template:Codeline field so that packages that require the non-VCS package can be installed (Template:Codeline).
- You should AVOID using Template:Codeline as it generally causes unnecessary problems.
- When using/defining the cvsroot, use Template:Codeline rather than Template:Codeline to avoid a password prompt and having to enter a blank password OR use Template:Codeline if a password is required.
- Though it is often unnecessary to use the Template:Codeline field when building CVS/SVN/GIT packages (changes to the package are usually often and will be reflected in the Template:Codeline), makepkg will require it.
- Don't forget to include the appropriate VCS tool (cvs, subversion, git, ...) in Template:Codeline.
- To preserve the integrity of the checked-out code consider copying the original build directory if you have to make edits. For example, having checked out source code to Template:Filename from Template:Filename you can use:
mkdir src/$_cvsmod-build cd src/$_cvsmod-build ../$_cvsmod/configure
cp -r src/$_cvsmod src/$_cvsmod-build cd src/$_cvsmod-build
- With the introduction of the AUR, it is most important to avoid using backtick execution to create package variables. makepkg will automatically bump the Template:Codeline anyway when building the package (unless Template:Codeline is used).
- You should make sure that there are no VCS directories and files left over in your package. If there are, you may want to remove them, by adding a command similar to this one at the end of the the package() script:
rm -rf `find "$pkgdir" -type d -name ".svn"`
- When using Git, one can speed up the cloning operation using the Template:Codeline parameter. This creates a shallow clone, and has only the last change history - since histories are unimportant for builds most of the time.
git clone git://hostname.dom/project.git --depth=1