MDS2

MDS2 uses a different manner of accessing repositories and source code than MDS1. This means that instead of accessing Mer:MDS:Core:i586, you access Mer:MDS:Core:i586:

Instead of using a individual checkout, MDS2 uses the git repositories directly and allows individual downloads of binary releases.

= Installation =

Requirements
This guide has been tested with:


 * a fresh minimal OpenSuse 12.1 install with network connection
 * python 2.7
 * git, gitdb, GitPython
 * recent lxml (2.3 was tested)

Create mer user
useradd -m -d /home/mer -g users -k /etc/skel -r -s /bin/bash mer passwd mer  # set the password for the new user

Install packages
If zypper tells you about conflicting packages, remove them.

zypper install zlib-devel python-devel gcc gcc-g++ python-pip git-core python-xml libxml2-devel libxslt-devel

pip install gitdb pip install GitPython pip install elementtree pip install lxml pip install PDIS-XPath

Clone MDS repo from Github
cd /home/mer ssh-keygen -t rsa git clone git://github.com/mer-tools/mds.git cd mds git checkout mds2

Check mappings.xml file


Launch daemon
python2.7 tools/mds2.py 7000

Systemd integration
For systemd create a service file to run MDS as a daemon. Note the value of the port, and uncomment the rsync proxy if needed.

[Unit] Description=Mer Delivery System After=multi-user.target

[Service] User=mer Group=users WorkingDirectory=/home/mer/mds ExecStart=/usr/bin/python2.7 /home/mer/mds/tools/mds2.py 7000 Restart=always
 * 1) Environment=RSYNC_PROXY=proxy:8080

[Install] WantedBy=multi-user.target

Initial download of packages and repos
Choose the initial Mer release that you want to download, for example 0.20130528.1, and pull packages and repos using the REST API.

WARNING: It will take a long time with no output, just be patient.

curl http://127.0.0.1:7000/update/packages/Core curl http://127.0.0.1:7000/update/repo/Core/0.20130528.1

= Administration commands =

In the following, HOST:PORT is the host and port of the MDS2 server:

curl http://HOST:PORT/update/packages/

What this will do is look in mappings.xml, find the relevant project mapping, and then rsync update from packages-upstream to packages-path. This will bring the packages-path directory up to date, and make the relevant version/tag/branches available through OBS protocol.

curl http://HOST:PORT/update/repo/ /

What this will do is look in mappings.xml, find the relevant project mapping, then rsync from the binaries-upstream the binary repositories named :*: into 'binaries' directory. This makes it available for binary repository access through OBS protocol.

= MDS2 in Mer Community OBS =

The MDS2 sits on cmds:8002 on the cmds host, within /data/mds

When a new Mer release or prerelease comes in, you need to first sync the local copy of the git repositories, which includes the Mer Core in git.

curl http://cmds:8002/update/packages/Core This will synchronise the git repositories and as one of the effects, make the sources for the new release available in mer:mds2:Core:ARCH:

Next up, you need to import the individual release:

curl http://cmds:8002/update/repo/Core/

This will rsync down the individual binary release locally. Now over OBS api this version has binary repositories available for mer:mds2:Core:ARCH:

So how do we update so that people take the new version into use?

mer:devel project serves as "This project serves as a convenient pointer to the mer core project in the mds2 instance".

You then modify the 'next' or 'latest' pointers in that meta prj, depending on which type of release, to the version you'd like it to within MDS2. Current maintainers of mer:devel are lbt, stskeeps and sage