News | About | Get Frugalware | Packages | Documentation | Discussion Forums | Bug Tracker | Wiki | Community | Development

WIP repos

From FrugalWiki

Jump to: navigation, search
i18n
English
Français

Contents

Warning

This howto now has been moved to the official documentation. If you modify this page, please send a patch to keep the official text in sync. Thanks.

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 genesis:

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.

To workaround a git bug:

rm -rf .git/refs/remotes

Also edit .git/config and remove the section named 'origin'.

Okay now you can git clone your repo to localhost:

git clone nick@git.frugalware.org:/home/ftp/pub/other/people/nick/flac113

Don't forget to set some variables:

git config user.name "Foo Bar"
git config user.email foo@bar.org

Now you have to configure repoman and pacman-g2.

Just append your ~/.repoman.conf:

repos=(${repos[@]} 'flac113')
flac113_servers=("nick@git.frugalware.org:/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:

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 nick@git.frugalware.org:/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

Testing

If you want to test this, you'll need repoman>=0.9.6. Actually this wiki page is the documentation for fpmmerge, manpage is not yet updated.

Personal tools
Namespaces
Variants
Actions