Difference between revisions of "DeveloperWiki:HOWTO Be A Packager"

From ArchWiki
Jump to: navigation, search
(New page: == Follow Package Guidelines == Package guidelines can be found in the Arch Linux documentation. Please follow them closely. Arch Packaging Standards == How To Use SVN == === Non-r...)
 
(No difference)

Revision as of 18:33, 5 May 2008

Follow Package Guidelines

Package guidelines can be found in the Arch Linux documentation. Please follow them closely.

Arch Packaging Standards

How To Use SVN

Non-recursive checkout

  svn checkout -N svn+ssh://archlinux.org/home/svn-packages 

This creates a directory named "svn-packages" which contains nothing. It does, however, know that it is an svn checkout.

Checkout a package

  cd svn-packages
  svn update package-name

This will pull the package you requested into your checkout. From now on, any time you `svn update` at the top level, this will be updated as well.

Updating all packages

  cd svn-packages
  svn update

Adding a package

  cd svn-packages
  mkdir new-package
  mkdir new-package/{repos,trunk}
  $EDITOR new-package/trunk/PKGBUILD
  svn add new-package
  svn commit

Removing a package

  cd svn-packages
  svn rm dead-package/
  svn commit

"Tagging" releases

  cd svn-packages/package-name/trunk
  archrelease extra-i686

This makes an svn copy of the trunk entries in a directory named "extra-i686" indicating that this package is in the extra repository for the i686 architecture.

The Process

=== Checkout/update your local repository

  cd svn-packages
  svn update

Update the needed package

  svn update some-package

=== Traverse to the package's trunk directory

  cd some-package/trunk/

Change and build

  $EDITOR PKGBUILD
  makepkg

Run namcap on both PKGBUILD and package

  namcap PKGBUILD
  namcap some-package-1.0-1-i686.pkg.tar.gz

Use devtools to upload and commit

This is repo dependent. For 'extra', you use 'extrapkg'. 'testingpkg' for 'testing', etc

  extrapkg "A commit message"

Update the repository

This is repo dependent. For 'extra', you use 'db-extra'. 'db-testing' for 'testing', etc Additionally, db-{repo}64 is used for x86_64 repos.

  ssh archlinux.org
  /arch/db-extra

Remove old package versions from the ftp directory

NOTE: this will be automated in the future


Staging Directories

Staging directories are needed on archlinux.org for uploading of packages. The following structure is NOT automatically created. You must do it yourself:

   ~/staging/
   |-- core/
   |   |-- add/
   |   `-- del/
   |-- core64/
   |   |-- add/
   |   `-- del/
   |-- extra/
   |   |-- add/
   |   `-- del/
   |-- extra64/
   |   |-- add/
   |   `-- del/
   |-- testing/
   |   |-- add/
   |   `-- del/
   `-- testing64/
       |-- add/
       `-- del/

These directories are searched by the db scripts to find new packages and those slated for removal.

Removing a package

Removing a package is sadly a little complex right now. In order to do so, you need to move it FROM the ftp directory and to your staging/$REPO/del directory, before running the db scripts again.

Miscellaneous Stuff

SVN $Id$ tags

$Id$ tags are a nice helper for PKGBUILDs and should be added to the top of all PKGBUILDs in a comment. However, svn needs an additional push to know that it should modify this line on checkout.

  svn propset svn:keywords "Id" my-package/trunk/PKGBUILD

Package checking tools

namcap

TODO

checkpkg

TODO

Commit messages

Please try to write concise commit messages. If the package is simply an upstream change, that is fine, but if anything more complex changes, please inform us by writing an appropriate commit message.