Difference between revisions of "VCS package guidelines"

From ArchWiki
Jump to: navigation, search
m (fixed what I caused)
m (Guidelines: - removed unnecessary 'correctly', minor rewording for cvsroot password prompt, removed date format from pkgrel note (VCS packages use date and versioning so not a prob.))
Line 23: Line 23:
  
 
* Suffix {{Codeline|pkgname}} with {{Codeline|-cvs}}, {{Codeline|-svn}} or {{Codeline|-git}} where applicable -- this prevents confusion with non-development versions of packages (e.g. ''fluxbox-svn'' or ''fvwm-cvs'' compared to ''fluxbox'' or ''fvwm'').
 
* Suffix {{Codeline|pkgname}} with {{Codeline|-cvs}}, {{Codeline|-svn}} or {{Codeline|-git}} where applicable -- this prevents confusion with non-development versions of packages (e.g. ''fluxbox-svn'' or ''fvwm-cvs'' compared to ''fluxbox'' or ''fvwm'').
* When [[makepkg]] is run, by default it will check for newer revisions and then update the {{Codeline|pkgver}} in the PKGBUILD.  Look at {{Codeline|--holdver}} in [http://www.archlinux.org/pacman/makepkg.8.html man makepkg] if you want otherwise.  {{Codeline|--holdver}} only works correctly for cvs and svn, which allow checkout of older revisions.
+
 
 +
* When [[makepkg]] is run, by default it will check for newer revisions and then update the {{Codeline|pkgver}} in the PKGBUILD.  Look at {{Codeline|--holdver}} in [http://www.archlinux.org/pacman/makepkg.8.html man makepkg] if you want otherwise.  {{Codeline|--holdver}} 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 {{Codeline|1=conflicts=('fluxbox')}}.
 
* Check for package conflicts.  For example ''fluxbox-svn'' will conflict with ''fluxbox''.  In this case, you need to use {{Codeline|1=conflicts=('fluxbox')}}.
 +
 
* Use the {{Codeline|provides}} field so that packages that require the non-VCS package can be installed ({{Codeline|1=provides=('fluxbox')}}).
 
* Use the {{Codeline|provides}} field so that packages that require the non-VCS package can be installed ({{Codeline|1=provides=('fluxbox')}}).
* You should AVOID using {{Codeline|1=replaces=...}} as it generally causes unnecessary problems
+
 
* When using/defining the cvsroot use {{Codeline|anonymous:@}} rather than {{Codeline|anonymous@}} to avoid having to press enter to give blank password ''OR'' {{Codeline|anonymous:password@}} if a password is required.
+
* You should AVOID using {{Codeline|1=replaces=...}} as it generally causes unnecessary problems.
* Though it is often unnecessary to use the {{Codeline|pkgrel}} field when building CVS/SVN/GIT packages (any changes to the package will often be on another day and so are usually accounted for by a change in {{Codeline|pkgver}} [assuming {{Codeline|pkgver}} is used to hold a date format], makepkg will require it.
+
 
 +
* When using/defining the cvsroot, use {{Codeline|anonymous:@}} rather than {{Codeline|anonymous@}} to avoid a password prompt and having to enter a blank password ''OR'' use {{Codeline|anonymous:password@}} if a password is required.
 +
 
 +
* Though it is often unnecessary to use the {{Codeline|pkgrel}} field when building CVS/SVN/GIT packages (changes to the package are usually often and will be reflected in the {{Codeline|pkgver}}), makepkg will require it.
 +
 
 
* Don't forget to include the appropriate VCS tool (cvs, subversion, git, ...) in {{Codeline|1=makedepends=...}}.
 
* Don't forget to include the appropriate VCS tool (cvs, subversion, git, ...) in {{Codeline|1=makedepends=...}}.
* To preserve the integrity of the checked-out code, consider copying the original build directory if you have to make edits. e.g. having checked out source code to {{Filename|src/$_cvsmod}} from {{Filename|$startdir}} you can use:
+
 
 +
* 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 {{Filename|src/$_cvsmod}} from {{Filename|$startdir}} you can use:
  
 
  mkdir src/$_cvsmod-build
 
  mkdir src/$_cvsmod-build

Revision as of 16:25, 11 December 2009

Summary help replacing me
Creating PKGBUILDs for software managed with version control systems.
Available in languages

Template:I18n entry

Related articles
Arch Build System
Building Packages in Arch Linux
Arch Linux User-Community Repository (AUR)
makepkg
pacman
PKGBUILD Tricks
PKGBUILD Variables

Guidelines for creating PKGBUILDs for software managed with version control systems.

Prototypes

The Template:Package Official package provides prototypes for cvs, svn, git and darcs PKGBUILDs. When abs is installed, you can find them in Template:Filename.

Guidelines

  • Check for package conflicts. For example fluxbox-svn will conflict with fluxbox. In this case, you need to use Template:Codeline.
  • You should AVOID using Template:Codeline as it generally causes unnecessary problems.
  • 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

or:

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).