Git-Url: 
http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-tools.git;a=commitdiff;h=b72ed1765ca396250781cd31022efae218bcbe3f

commit b72ed1765ca396250781cd31022efae218bcbe3f
Author: VMiklos <[EMAIL PROTECTED]>
Date:   Sun Sep 30 02:26:54 2007 +0200

repoman: converted the manpage to asciidoc
- and also reviewed, improved, etc.
- i think finally now all options and subcommands are documented (ie fpmmerge 
was
missing from the command reference)

diff --git a/repoman.txt b/repoman.txt
new file mode 100644
index 0000000..fd0f480
--- /dev/null
+++ b/repoman.txt
@@ -0,0 +1,452 @@
+= repoman(1)
+
+== NAME
+
+repoman - Frugalware's program to build and maintain packages
+
+== SYNOPSIS
+
+repoman [global options] [command] [command options]
+
+== DESCRIPTION
+
+repoman is a tool for users to automatically build and install packages on the
+target host. This can be handy when there is no binary package available due to
+license problems for a given software (like Opera or Skype).
+
+It's also a tool for Frugalware developers to upload, delete or register source
+tarballs or fpm packages.
+
+== INSTALLING PACKAGES
+
+NOTE: This section is for users. If you're a developer, just skip it.
+
+Here is a reference comparing pacman-g2 and repoman:
+
+`-----------------------`-----------------
+pacman-g2 -Sy           repoman upd
+pacman-g2 -S pkg        repoman merge pkg
+pacman-g2 -Ss foo       repoman search foo
+------------------------------------------
+
+There is a possibility to alter the result of the merge without editing the
+buildscript for some packages. To build the development version of a package,
+type:
+
+----
+# USE_DEVEL=y repoman merge pkg
+----
+
+== MAINTAINING PACKAGES
+
+NOTE: This section is for developers. If you're a user, just skip it.
+
+A typical package update should be done as follows:
+
+=== Configuring repoman
+
+----
+$ echo 
'current_servers=("<nick>@git.frugalware.org:/home/ftp/pub/frugalware/frugalware-current")'
 \
+       > ~/.repoman.conf
+$ echo 'fst_root=~/git' >> ~/.repoman.conf
+----
+
+Replace <nick> with your nick and make sure about you will have the git tree in
+\~/git/current.
+
+If you want to use more than one (conflicting, ie.: current and stable) trees,
+then please add the <reponame>_pushonly=y option to each repo except one.
+Example: if the host system is -current and you want to enabled current and
+stable, then add stable_pushonly="y" to your config.
+
+=== Getting the repo
+
+Example for the first time:
+
+----
+$ cd ~/git
+$ git clone 
<nick>@git.frugalware.org:/home/ftp/pub/frugalware/frugalware-current current
+----
+
+Getting other git repos are similar. Example for the pacman-tools repo:
+
+----
+$ git clone 
<nick>@git.frugalware.org:/home/ftp/pub/other/pacman-tools/pacman-tools
+----
+
+Now set some defaults:
+
+----
+$ cd current
+$ git config user.name "John Smith"
+$ git config user.email [EMAIL PROTECTED]
+$ git config remote.origin.receivepack "sudo -u <owner> git-receive-pack"
+----
+
+Here you should substitute <owner> with the nick of the repo owner, currently
+vmiklos.
+
+=== Updating the repo
+
+If you already got the repo a simple 'git pull' should be enough.
+
+=== Making changes and building the package
+
+Now it's time to edit the FrugalBuild and make changes.
+
+Build the package with 'sudo makepkg -c'.
+
+Then if you would like to add new file(s) to the source, run this:
+
+----
+$ git add glibc.install
+----
+
+To remove file(s) from the source, run this:
+
+----
+$ git rm at-3.1.8r11-makefile.patch
+----
+
+Or if you would like to rename a file in the source, run this:
+
+----
+$ git mv glibc-2.5-foo.patch glibc-2.5-bar.patch
+----
+
+=== Committing the changes
+
+Simply run 'git commit -a'.
+
+When recording the patch (if this is a package upgrade), the first line must be
+'$pkgname-$pkgver-$pkgrel-$arch'. You can use 'repoman rec' which will fill in
+this first line automatically for you.
+
+For example:
+
+glibc-2.5-1-i686
+
+This is the same as the full package name without trailing '.fpm'.
+
+=== Delete the old source package(s)
+
+If you only do a rebuild, then, of course, skip this step. For example:
+
+----
+$ repoman del source/base/readline/readline-5.0.tar.g
+----
+
+=== Push the FrugalBuild/.install/etc patch
+
+Here you only have to do a simple 'git push'.
+
+This command uploads the changes you made locally to the server.
+
+=== Upload the new source package(s)
+
+If you only do a rebuild, then, of course, skip this step.
+
+For example:
+
+----
+$ repoman up zsh-4.2.5.tar.bz2 /source/apps/zsh/
+$ repoman up zsh-doc-4.2.5.tar.bz2 /source/apps/zsh/
+----
+
+NOTE: If the original mirror is fast, then just skip this step and 'repoman cl'
+(see later) will download the sources for you. If the mirror is slower than
+your upload bandwidth then it worth to upload it now or you'll have to wait
+till the server downloads it!
+
+=== Upload the new fpm package
+
+For example (see the 'up' command description for more details!):
+
+----
+$ repoman up sendmail-8.13.4-2-i686.fpm frugalware-i686/
+----
+
+=== Delete the old fpm package
+
+For example:
+
+----
+$ repoman del frugalware-i686/glibc-2.5-1-i686.fpm
+----
+
+=== Generate a Changelog
+
+You can do this along with updating the '.fdb' and SQL database, downloading
+the missing sources and updating the documentation:
+
+For example:
+
+----
+$ repoman cl perl
+----
+
+=== All in one
+
+Once you understand this procedure, you can do all this at once:
+
+----
+$ repoman -k push
+----
+
+Will be interactive only in case there is some unrecorded change.
+
+Usually I (vmiklos) use the following:
+
+----
+$ repoman rec
+$ repoman -k push
+----
+
+WARNING: You should not use 'repoman push' till you don't understand what it
+does!
+
+== WIP REPOS
+
+=== Introduction
+
+WIP stands for "Work In Progress". Such repos are used usually only for a few
+days or weeks, if you except that a package upgrade will break several others,
+then it's good to create a WIP repo, and merge when you fixed all the revdeps.
+
+=== Before you begin
+
+If the repo you use for your work already exists, it may need some work:
+
+* Remove the already merged fpms manually. This usually means all fpms.
+
+* Remove the obsolete entries from the fdb, or just remove the file if no fpms
+  left in the repo.
+
+=== The How
+
+Choose a name. It should not have to be too meaningful, using anything other
+than a-z 0-9 and underscore may or may not work. For "flac 1.1.3" I have used
+flac113.
+
+First, clone current to your personal directory on the server:
+
+----
+$ cd /home/ftp/pub/other/people/nick
+$ git clone /home/ftp/pub/frugalware/frugalware-current
+$ mv frugalware-current flac113
+$ mkdir flac113/frugalware-$arch
+----
+
+You _need_ hooks. You have two choices. If you want the standard required +
+cia + mailing list combo, then:
+
+----
+$ ln -sf /home/ftp/pub/other/git-hooks/git-hooks.py .git/hooks/post-receive
+----
+
+Otherwise just do:
+
+----
+$ echo "unset GIT_DIR; cd ..; git checkout -f" > .git/hooks/post-receive
+----
+
+Then
+
+----
+$ chmod +x .git/hooks/post-receive
+----
+
+This is necessary to update the working directory after a push, so that repoman
+cl will see the updated FrugalBuild.
+
+Okay now you can git clone your repo to localhost:
+
+----
+$ git clone [EMAIL PROTECTED]:/home/ftp/pub/other/people/nick/flac113
+----
+
+Now you have to configure repoman and pacman-g2.
+
+Just append your '\~/.repoman.conf':
+
+----
+repos=([EMAIL PROTECTED] 'flac113')
+flac113_servers=("[EMAIL PROTECTED]:/home/ftp/pub/other/people/nick/flac113")
+----
+
+And create a file named /etc/pacman.d/flac113:
+
+----
+[flac113]
+Server = 
http://ftp.frugalware.org/pub/other/people/nick/flac113/frugalware-$arch/
+----
+
+Building a package will be a bit more complicated than 'sudo makepkg -c', so
+let's create an alias:
+
+----
+alias flacbuild='sudo makepkg -t flac113,current -c'
+----
+
+Then you can build with:
+
+----
+$ flacbuild
+----
+
+You can record using the usual:
+
+----
+$ repoman rec
+----
+
+and push with:
+
+----
+$ repoman -t flac113 -k push
+----
+
+=== Merge
+
+Once you are ready, go to '\~/git/current' (make sure you don't have anything 
to
+push!) and
+
+----
+$ git pull [EMAIL PROTECTED]:/home/ftp/pub/other/people/nick/flac113
+----
+
+This will merge your WIP repo to your local current repo. If there are
+conflicts, resolve them.
+
+Push your changes:
+
+----
+$ git push
+----
+
+Finally you need to transfer the fpms from your repo and run a repoman cl for 
each package:
+
+----
+$ repoman fpmmerge flac113
+----
+
+== GLOBAL OPTIONS
+
+-d|--dry-run::
+       Don't do anything, just print what would happen.
+
+-h|--help::
+       This manpage.
+
+-k::
+       Don't be interactive.
+
+-t|--tree::
+       Specify a tree to work with, if the default is not sufficient.
+
+       Example: 'current' or 'stable'.
+
+-v|--verbose::
+       More output.
+
+--version::
+       Just repoman's version and exit.
+
+== COMMANDS
+
+c|clean <package>::
+
+       Removes the package from the package database.
+
+cl|changelog [<group>/]<package>::
+
+       Registers a package in the package database. If the group is omitted
+       then the first group from the current directory's FrugalBuild will be 
used (it
+       is correct in most cases). If you specify a group, too then you can run 
this
+       command in any directory.
+
+del|delete <path>::
+
+       Removes a file from the FST which is not under source control (use
+       'git rm' to remove those).
+
+fpmmerge <repo>::
+
+       Merges fpms from an other repo to the current one.
+
+ls|list <path> [<options>]::
+
+       Lists a given directory of the FST. It can be handy to determine which
+       old files you need to remove.
+
+       Example: 'repoman ls source/base/db/ -l'
+
+m|merge <package>::
+
+       To be used by users. Build a package from source and install it. You
+       can configure the build options in the 'makepkg_opts' directive of
+       '/etc/repoman.conf'.
+
+       By default 'repoman' will install the missing dependencies with
+       'pacman-g2', clean up the leftover work files, install the package, and
+       write the resulting package to the 'pacman-g2' package cache.
+
+push::
+
+       All-in-one command to transfer your fpm package and changes to its
+       buildscript to the server.
+
+rec|record [commit message]::
+
+       A frontend to 'git commit'. If parameters are given then it won't be
+       interactive and the parameters are appended to the history as a long 
comment.
+
+s|search [regexp]::
+
+       To be used by users. Search in those FrugalBuilds which are only 
available in
+       source form. If the optional regexp parameter omitted, it will list all
+       source-only packages.
+
+sync::
+
+       Same as 'repoman push', but it will never update the buildscripts on
+       the server. Used by 'syncpkgd'.
+
+up|upload <local file> <path in FST>::
+
+       Adds a file to the FST which is not under source control (use 'git add'
+       to add those).
+
+upd|update::
+
+       To be used by users. Update the repositories listed in 
'/etc/repoman.conf'. If a
+       repository does not exist yet, then 'repoman' will download it (it may 
take
+       some time!).  If you want to blacklist a repository then add
+       '<reponame>_pushonly="y"' to '/etc/repoman.d/<reponame>'.
+
+== ENVIRONMENT
+
+'repoman' utilizes the following environment variable:
+
+'arch': Operate on packages different to 'uname -m'.
+
+Example:
+
+----
+$ arch=x86_64 repoman cl foo
+----
+
+will update the entry of the 'foo-version-x86_64.fpm' in the x86_64 'fdb' as if
+it would be invoked in an x86_64 machine.
+
+== AUTHORS
+
+Written by Miklos Vajna and Laszlo Dvornik.
+
+== REPORTING BUGS
+
+Please report bugs to the <http://bugs.frugalware.org/> bug tracking system.
+
+== SEE ALSO
+
+*git*(7), *pacman-g2*(8)
_______________________________________________
Frugalware-git mailing list
[email protected]
http://frugalware.org/mailman/listinfo/frugalware-git

Reply via email to