Changes

Jump to navigation Jump to search
Update CVS server details
Line 1: Line 1:  +
{{Level|Developer}}
 
The simplest package modification is for someone to access the code via anonymous CVS and produce a patch to put into Bugzilla.
 
The simplest package modification is for someone to access the code via anonymous CVS and produce a patch to put into Bugzilla.
 
This can be done on SME 8 by installing only cvs as follows.
 
This can be done on SME 8 by installing only cvs as follows.
    
== Setting up your build server ==
 
== Setting up your build server ==
This How-to is based on SME8, and that you have your development SME8 server fully updated and up and running. This can be a dedicated machine or a virtual machine. Special instructions for 32 and 64 bit architecture??
+
This How-to is based on SME8, and that you have your development SME8 server fully updated and up and running. This can be a dedicated machine or a virtual machine.  
    
==== Install CVS ====
 
==== Install CVS ====
SME Server uses CVS for maintaining code and packages. By default, CVS is not installed on SME8 (not required for normal SME Server operation). To install CVS on SME8 issue the following command:
+
SME Server uses CVS for maintaining code and packages. By default, CVS is not installed on SME8 (not required for normal SME Server operation). To install CVS on SME8 issue the following command as root user.
 
  yum install cvs
 
  yum install cvs
    
==== Create a new 'builder' user ====
 
==== Create a new 'builder' user ====
We will create a new user account that we use for our building purposes. The new user account can be created, as usual, through the server-manager, In this How-To we will have named our new user account 'builder'  
+
We will create a new user account that we use for our building purposes. The new user account can be created, as usual, through the server-manager, In this How-To we will have named our new user account 'builder'
 +
 
 +
useradd builder
 +
passwd builder
    
==== Grant shell access ====
 
==== Grant shell access ====
Line 21: Line 25:  
==== Create a development directory ====
 
==== Create a development directory ====
 
The user 'builder needs a dedicated development directory. In this How-To we will use ~/home/smeserver. To create the directory ~/home/smeserver please issue the following command as user 'builder':
 
The user 'builder needs a dedicated development directory. In this How-To we will use ~/home/smeserver. To create the directory ~/home/smeserver please issue the following command as user 'builder':
  mkdir ~/home/smeserver
+
  mkdir ~/smeserver
  cd ~/home/smeserver
+
  cd ~/smeserver
   −
This is all what is required to setup your server to be able to start working on patches and packages
+
To add the smecontribs cvs:
 +
mkdir ~/smecontribs
 +
cd ~/smecontribs
 +
 
 +
This is all what is required to setup your server to be able to start working on patches and packages.
    
== Retrieve code ==
 
== Retrieve code ==
 
==== Getting the source code ====
 
==== Getting the source code ====
In this How-To we want to work on the package 'e-smith-base'. We first need to download (with CVS this is called retrieving) the code for 'e-smith-base' from the SME Server CVS repository. For this issue the following command:
+
In this How-To we want to work on the package 'e-smith-base'. We first need to download (with CVS this is called retrieving) the code for 'e-smith-base' from the SME Server CVS repository at koozali.org, we can also retrieve the CVS for the smecontribs tree. For this issue the following commands:
  cvs -z3 -d:pserver:anonymous@smeserver.cvs.sourceforge.net:/cvsroot/smeserver checkout -P e-smith-base
+
cd ~/smeserver
 +
  cvs -z3 -d:pserver:anonymous@shell.koozali.org:/cvs/smeserver checkout -P e-smith-base
 +
 
 +
For the 'smeserver-base' base from the contribs tree.
 +
cd ~/smecontribs
 +
cvs -z3 -d:pserver:anonymous@shell.koozali.org:/cvs/smecontribs checkout -P smeserver-base
    
Next to a selective retrieve as per above, you can also retrieve the whole CVS tree.  
 
Next to a selective retrieve as per above, you can also retrieve the whole CVS tree.  
  cd ~/home/smeserver
+
  cd ~/smeserver
  cvs -z3 -d:pserver:anonymous@smeserver.cvs.sourceforge.net:/cvsroot/smeserver co -P rpms  
+
  cvs -z3 -d:pserver:anonymous@shell.koozali.org:/cvs/smeserver co -P rpms  
   −
You can now retrieve one of the packages from SourceForge. In this case, we want to modify the e-smith-base package for SME8, so let's retrieve it from SourceForge:
+
For the SME contribs tree.
First change to the work directory:
+
cd ~/smecontribs
  cd ~/home/smeserver/rpms/e-smith-base/sme8
+
cvs -z3 -d:pserver:anonymous@shell.koozali.org:/cvs/smecontribs co -P rpms
 +
 
 +
If you want to update/refresh the whole CVS tree smeserver or smecontribs, run the following from the rpms directory, or any lower directory with a CVS dir , issue
 +
cvs update -dPA
 +
 
 +
To work on the e-smith-base smeserver tree, change to the e-smith-base SME8 directory:
 +
  cd ~/smeserver/rpms/e-smith-base/sme8
    
Then we have to prepare a tree. Issue the following commands:
 
Then we have to prepare a tree. Issue the following commands:
  cvs update -dPA
+
  cvs update -dPA
  make clean      
+
  make clean
 
  make prep
 
  make prep
 
Please ignore if 'make clean' returns an error about a missing *.tgz package
 
Please ignore if 'make clean' returns an error about a missing *.tgz package
   −
We want to save a copy of the original files:
+
Our patch will be a done with the 'diff' tool which compares the edited files against the original files. So we need to to save a copy of the original files:
 
  cp -R e-smith-base-5.2.0 e-smith-base-5.2.0.old
 
  cp -R e-smith-base-5.2.0 e-smith-base-5.2.0.old
   Line 52: Line 71:  
Now we can make the changes or edit the source code in e-smith-base-5.2.0.
 
Now we can make the changes or edit the source code in e-smith-base-5.2.0.
   −
For a simple test you can edit the 'e-smith-base-5.2.0/root/sbin/e-smith/console' file and add something to the header:
+
For a simple test you can edit the SME8 'e-smith-base-5.2.0/root/sbin/e-smith/console' file and add something to the header.
 +
 
 +
cd ~/smeserver/rpms/e-smith-base/sme8
 +
nano -w e-smith-base-5.2.0/root/sbin/e-smith/console
    
<pre>
 
<pre>
Line 76: Line 98:  
# Let's see if this new line pops up in my patch file and my new test RPM !!!    <----- Add this line
 
# Let's see if this new line pops up in my patch file and my new test RPM !!!    <----- Add this line
 
#----------------------------------------------------------------------
 
#----------------------------------------------------------------------
   
</pre>
 
</pre>
 
+
Save the file
We need to have an example!
      
== Create a patch ==
 
== Create a patch ==
When we have finished our editing the source code (see above example), we can create a patch. (a file that contains the differences between the original file and the file we have been working on). To create the patch issue the following command:  
+
When we have finished our editing of the source code (see above example), we can create a patch. (a file that contains the differences between the original file and the file we have been working on). To create the patch issue the following command:
 +
 +
cd ~/smeserver/rpms/e-smith-base/sme8
 
  diff -urN e-smith-base-5.2.0.old e-smith-base-5.2.0 > e-smith-base-5.2.0-test.patch
 
  diff -urN e-smith-base-5.2.0.old e-smith-base-5.2.0 > e-smith-base-5.2.0-test.patch
    
==== Test the patch ====
 
==== Test the patch ====
To see if our changes work correctly as intended, we will make a local RPM build to test.
+
To see if our changes work correctly as intended, we will make a local RPM build to test, and before building the RPM it is necessary to update the spec file to increase the release number and to ensure your patch is included in the build.
First we will update the spec file (explain spec file in 1 line)
+
 
 +
===== Update the spec file =====
 +
First we will update the spec file. Spec files are text files that contain RPM directives and macro definitions, which are used to build an RPM package.
 +
 
 +
For our examle we will continue to use the e-smith-base-5.2.0
   −
Edit the file e-smith-base.spec and change add:
+
cd ~/smeserver/rpms/e-smith-base/sme8
 +
 
 +
Edit the file e-smith-base.spec
 +
 
 +
nano e-smith-base.spec
 +
 
 +
and change:
    
<pre>
 
<pre>
Line 98: Line 130:  
  Patch2: e-smith-base-5.2.0-test.patch
 
  Patch2: e-smith-base-5.2.0-test.patch
   −
  #update the changelog section, including the bug number
+
  #update the changelog section, including the release version and bug number
  * Wed Jan 23 2013 John Doe <jdoe@foo.net> Patch 68
+
  * Wed Jan 23 2013 John Doe <jdoe@foo.net> 5.2.0-68.sme
 
  - just a test to see if I can do this [SME: 7129]
 
  - just a test to see if I can do this [SME: 7129]
    
  #add patch version to the %setup section
 
  #add patch version to the %setup section
  %patch55 -p1
+
  %patch2 -p1
 
</pre>
 
</pre>
 +
 +
Save the file
 +
 +
To check the changes issue the following command which compares your updated spec file with the original one in CVS. This is an optional step, but helps catch errors in the spec file.
 +
 +
cvs diff -u e-smith-base.spec
    
* Ensure that the changelog version really matches the RPM version.
 
* Ensure that the changelog version really matches the RPM version.
Line 112: Line 150:  
* The version should follow after the email address
 
* The version should follow after the email address
   −
==== Applying the patch ====
+
==== Build the test RPM ====
To apply the new patch on the CVS tree/code issue the following command:
+
Build the rpm locally to test, (note, this deletes the working tree!<-- Please explain)
  cvs diff e-smith-base.spec
+
  make local
 +
 
 +
A new RPM e-smith-base-5.2.0-68.el5.sme.x86_64.rpm will be created which you can test or explore to see if your changes are applied
   −
==== Update CVS ====
+
Once the patch works, attach the patch to the bugzilla entry. That is all what it takes to create a patch.
CVS needs to be updated. Issue the following command:
+
You can also, optionally, attach the updated spec file.
 +
 
 +
This simple package modification ends here. The next section is intended for developers who have CVS commit and build access. The developers will also check your patches and apply them to the CVS tree for you.
 +
 
 +
== Committing the patch ==
 +
==== If you have CVS commit access ====
 +
 
 +
CVS needs to be updated. To check what will be committed to CVS, issue the following command:
 
  cvs update
 
  cvs update
   Line 126: Line 173:  
  * ? egregious file not part of CVS record for this dir
 
  * ? egregious file not part of CVS record for this dir
   −
* Ensure that the patch file has been added cvs add e-smith-base-5.2.0-test.patch
+
* Ensure that the patch file has been added
* Ensure that your patch/files etc. are UNIX style or do they have DOS endings (bad)
+
cvs add e-smith-base-5.2.0-test.patch
 
+
* Ensure that your patch/files etc. are UNIX style and do not have DOS endings.
==== Build a test RPM ====
  −
Build the rpm locally to test, (note, this deletes the working tree!<-- Please explain)
  −
make local
     −
A new RPM e-smith-base-5.2.0-68.el5.sme.x86_64.rpm will be created which you can test.
+
Once you are satisfied and want to submit the package to CVS 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 'your descriptive commit message here'
Once the patch works, attach the patch to the bugzilla entry. That is all what it takes to create a patch.
  −
 
  −
This simple package modification ends here. The next section is intended for developers who have CVS commit and build access. The developers will also check your patches and apply them to the CVS tree for you.
  −
 
  −
== Committing the patch ==
  −
==== If you have CVS commit access ====
     −
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.)
+
for example
cvs commit -m 'your descriptive commit message here'
+
cvs commit -m '* Wed Jan 23 2013 John Doe <jdoe@foo.net> 5.2.0-68.sme
cvs commit -m '<-- copy this then add changelog line
+
- just a test to see if I can do this [SME: 7129]'
   −
==== If you have CVS build access ====
+
==== If you have build access ====
 
Build it (from either the sme7 or sme8 dir):
 
Build it (from either the sme7 or sme8 dir):
 
  make tag
 
  make tag
 
  make build
 
  make build
 +
[[Category:SME9-Development]]
 +
[[Category:SME Server Development Framework]]
 +
[[Category:Development Tools]]

Navigation menu