Package Modification
SME Server code is stored in the CVS on http://SourceForge.net in two repositories smeserver and smecontribs
This page is to help you make changes to the contribs packages stored on sourceforge.
[For now changes to the base are still made using mezzanine]
Set up
Local environment
- We now use cvs without needing mezzanine, check you have it installed
yum install cvs
- Setup CVS to use ssh by creating /etc/profile.d/smebuild.sh with the following content
# Developer environment # This gets symlinked into /etc/profile.d export CVS_RSH=ssh # tell CVS to use ssh # DO NOT set CVSROOT alias rm='rm -i' alias cp='cp -i --preserve=timestamps' alias mv='mv -i'
You have to logout an login again to the console for changes to take effects.
Access to build system
Check updates/status on the build server: http://buildsys.contribs.org
Ask admin@contribs.org for certificates, give the email address to use for notifications.
yum install --enablerepo=smedev plague-client
From now, do not use account "root" anymore. Use a dedicated dev account. Copy certificates and config file to ~/
.plague-client.cfg .username.pem .contribs-upload-ca.pem .contribs-server-ca.pem
Don't forget to set the proper privileges on the file
chmod 600 .username.pem
Check it's working
plague-client list_builders Builders: ------------------------------------------------------------------------------------------ build64-1.contribs.org x86_64 amd64 ia32e noarch i386 i486 i586 i686 athlon available build32-1.contribs.org i386 i486 i586 i686 athlon noarch available
Sourceforge access
- SME Server code is stored in the CVS on http://SourceForge.net. To be able to work on your code in the SME Server CVS repository you need an account on SourceForge. With this account the development team can give you access to the CVS repository. More information can be found here:
B04: Registering a User Account E04: CVS (Version Control for Source Code) F02: SSH Key Generation and Usage
- After you have created your SourceForge account you can ask the development team to give you developer access to smecontribs. Create a bug in the Bug Tracker as usual.
- Copy your local public SSH key to SourceForge https://sourceforge.net/account/editsshkeys.php
- If local username is different to sf.net username edit ~/.ssh/config:
Host smeserver.cvs.sourceforge.net User sfusername (without @shell.sf.net) Host smecontribs.cvs.sourceforge.net User sfusername (without @shell.sf.net)
- Don't forget to set the proper privileges on the file
chmod 600 ~/.ssh/config
Usage
Import src.rpm
Email admin@contribs.org with the location of your rpm, it will be imported into the build system for you.
Import cvs
This is just cvs information, not source code.
You can use ~/home/smeserver or whatever suits.
mkdir ~/smeserver cd ~/smeserver cvs -z3 -d:ext:smeserver.cvs.sourceforge.net:/cvsroot/smeserver co -P rpms cd rpms cvs -z3 -d:ext:smeserver.cvs.sourceforge.net:/cvsroot/smeserver co -P common (for now changes to smeserver are still made with the mezzanine method, and updated manually by devs)
mkdir ~/smecontribs cd ~/smecontribs cvs -z3 -d:ext:smecontribs.cvs.sourceforge.net:/cvsroot/smecontribs co -P rpms cd rpms cvs -z3 -d:ext:smecontribs.cvs.sourceforge.net:/cvsroot/smecontribs co -P common
To refresh run the following from the rpms directory, or any lower directory with a CVS dir
cvs update -dPA
Modify a package
Builders have rights to patch packages, tag, and build. If you need to upload new source tarballs or versions shad has to do that for now. Email them. Binary files are stored in a look-aside cache on shads box. CVS isn't great on binary files.
Mezzanine, (mzsfget, mzclean, mzprep, mzpatch, mzbuild, mzput) have all be replaced with a new method.
Change to work directory
cd smecontribs/rpms/smeserver-foo/contribs7
To prepare a tree
cvs update -dPA [optional] make clean [optional] make prep
Then switch to the tree and make modification.
In the prepared dir copy a file you want to modify like so:
cp 28UserManagerProxyPass 28UserManagerProxyPass.{patchname}
Then modify the original file 28UserManagerProxyPass. To add new files touch the file.{patchname} so it is empty. (really empty = 0kb, some file manager don't!)
Once you have all the files you want patched copied and changed then you can build the patch (from the contribs7 dir) with:
make patch SUFFIX={patchname}
It will build and add the patch for you. It should be named "name-version-{patchname}.patch" (man gendiff. That is what the makefile uses to generate the diff file.)
Edit the spec
nano -w smeserver-foo.spec
Build the rpm locally to test, (note, this deletes the working tree!)
make local
Once you are satisfied and want to submit the package to the build server commit your changes. (Please use descriptive comments so that other developers are aware of what is happening. Comments will appear on the subject line of the commit email that get send to the other developers.)
cvs commit -m 'msg'
Then tag all files as belonging to a particular build version
make tag
Then submit the request to the build server which will checkout the recently tagged version and build it in a chroot (mock) env.
make build
Key things are to always do "make tag" before "make build"
Always ensure you are working with the latest version (cvs update -dPA)
You and updatesteam will get an email on successfull build. Only you will get an email on failed build.
CVS cheat sheet Package_Modification/More cvs commands
Workflow
Once the server successfully builds it will automatically be pulled on the next repo update run (40 past the even hours MDT). The package will either be put into the smedev (new package) or smetest (exist in higher repo) After verification the package is manually moved from smedev/smetest to smecontribs/smeupdates-testing
Mailing Lists
Subscribe yourself to the devinfo mailinglist. This is the place to discuss the development of the server and contribs. If you have other questions, not regarding development please use the forums.
Other lists exist to monitor bugs and the build system, UpdatesTeam + ...