Line 6: |
Line 6: |
| http://www.openfusion.net/linux/mocking_rpms | | http://www.openfusion.net/linux/mocking_rpms |
| | | |
− | Mock is a Fedora project that allows you to build RPM packages within a chroot environment, allowing you to build packages for other systems than the one you're running on (e.g. building CentOS 4 32-bit RPMs on a CentOS 5 64-bit host), and ensuring that all the required build dependencies are specified correctly in the RPM spec file. | + | Mock is a Fedora project that allows you to build RPM packages within a chroot environment, allowing you to build packages for other systems than the one you're running on (e.g. building CentOS 4 32-bit RPMs on a CentOS 5 64-bit host), and ensuring that all the required build dependencies are specified correctly in the RPM spec file. You can find more example [[Rpm_build_example_using_cvs/mock|of how using Mock]] |
| | | |
| ==== Prerequisites ==== | | ==== Prerequisites ==== |
− | =====Installation Centos6 minimal=====
| + | {{warning box|If you plan to build for sme10, you must use an el7 version of centos minimal. It is also workable on a Fedora25}} |
| + | ====Installation CentOS6 / CentOS7 minimal==== |
| * It is recommended that you use the latest CentOS 6 (64bit) version as a base http://mirror.centos.org/centos/6/isos/x86_64/ this has been verified to build for SME 7, 8 & 9 and for i386 &x86_64 | | * It is recommended that you use the latest CentOS 6 (64bit) version as a base http://mirror.centos.org/centos/6/isos/x86_64/ this has been verified to build for SME 7, 8 & 9 and for i386 &x86_64 |
− | Just install a minimal el6 installation. You can use either the DVD, the minimal CD install, a net install with PXE, it's up to you. | + | Just install a minimal el6 installation. You can use either the DVD, the minimal CD install, a net install with PXE, it's up to you. Of course if you prefer you can use a system with a Xorg-server installed (eg: gnome, kde, xfce...) |
| * Setup network: | | * Setup network: |
| To start the networking | | To start the networking |
Line 18: |
Line 19: |
| [root@buildcos9 ~]# dhclient eth0 | | [root@buildcos9 ~]# dhclient eth0 |
| * Install utilities | | * Install utilities |
− | [root@buildcos9 ~]# yum install nano system-config-network-tui mc man htop top iftop iptraf screen | + | [root@buildcos9 ~]# yum install nano system-config-network-tui mc man htop top iftop iptraf screen openssh-clients mlocate |
| * Finalise network setup | | * Finalise network setup |
| [root@buildcos9 ~]# nano /etc/sysconfig/network-scripts/ifcfg-eth0 | | [root@buildcos9 ~]# nano /etc/sysconfig/network-scripts/ifcfg-eth0 |
Line 39: |
Line 40: |
| [root@buildcos9 ~]# chkconfig network on | | [root@buildcos9 ~]# chkconfig network on |
| [root@buildcos9 ~]# service network restart | | [root@buildcos9 ~]# service network restart |
| + | |
| * Enable SSH | | * Enable SSH |
| SSH is present but is disabled at this stage. To enable ssh issue: | | SSH is present but is disabled at this stage. To enable ssh issue: |
| service sshd start | | service sshd start |
| + | |
| + | You may have a slow login to ssh, if needed : |
| + | nano /etc/ssh/sshd_config |
| + | |
| + | And change the “UseDNS yes” field to “UseDNS no”. |
| + | Now change the “GSSAPIAuthentication yes” line to “GSSAPIAuthentication no”. |
| + | |
| + | You have to restart the ssh service or the server |
| | | |
| * Reboot system to ensure all new config are permanent | | * Reboot system to ensure all new config are permanent |
| [root@buildcos9 ~]# reboot | | [root@buildcos9 ~]# reboot |
| | | |
− | *Disable SELinux | + | *Disable SELinux SME9 |
| It will be easier to see what's going on (and turn off selinux at kernel level, just to be sure) | | It will be easier to see what's going on (and turn off selinux at kernel level, just to be sure) |
| [root@buildcos9 ~]# sed -i -e 's/rhgb quiet/selinux=0/g' /boot/grub/grub.conf | | [root@buildcos9 ~]# sed -i -e 's/rhgb quiet/selinux=0/g' /boot/grub/grub.conf |
| [root@buildcos9 ~]# sed -i -e 's/SELINUX=.*/SELINUX=disabled/g' /etc/selinux/config | | [root@buildcos9 ~]# sed -i -e 's/SELINUX=.*/SELINUX=disabled/g' /etc/selinux/config |
| + | |
| + | *SME10 |
| + | in /etc/selinux/config set */SELINUX=disabled |
| | | |
| * Remove selinux-policy-targeted and authconfig -they conflict with some e-smith/smeserver packages | | * Remove selinux-policy-targeted and authconfig -they conflict with some e-smith/smeserver packages |
| [root@buildcos9 ~]# yum remove selinux-policy-targeted authconfig | | [root@buildcos9 ~]# yum remove selinux-policy-targeted authconfig |
− |
| |
| | | |
| * Apply all available updates. | | * Apply all available updates. |
Line 62: |
Line 74: |
| * You need to have EPEL repository configured as EPELs version of mock will be used | | * You need to have EPEL repository configured as EPELs version of mock will be used |
| <syntaxhighlight lang="Bash"> | | <syntaxhighlight lang="Bash"> |
| + | |
| # Enable EPEL for Centos 6 | | # Enable EPEL for Centos 6 |
| rpm -Uvh http://fr2.rpmfind.net/linux/epel/6/i386/epel-release-6-8.noarch.rpm | | rpm -Uvh http://fr2.rpmfind.net/linux/epel/6/i386/epel-release-6-8.noarch.rpm |
| </syntaxhighlight> | | </syntaxhighlight> |
| + | |
| + | # Enable EPEL and sclo repo for Centos 7 |
| + | rpm -ivh <nowiki>https://dl.fedoraproject.org/pub/epel/7/x86_64/Packages/e/epel-release-7-12.noarch.rpm</nowiki> |
| + | or (works 29Dec19 - bjr) |
| + | |
| + | yum install -y epel-release |
| + | |
| + | rpm -ivh <nowiki>http://mirror.centos.org/altarch/7/extras/aarch64/Packages/centos-release-scl-rh-2-3.el7.centos.noarch.rpm</nowiki> |
| + | |
| + | yum install centos-release-scl-rh |
| | | |
| * You need to create a new user, for mock will not accept user root for building packages | | * You need to create a new user, for mock will not accept user root for building packages |
− | <div class="mw-collapsible mw-collapsed" data-collapsetext="Collapse" data-expandtext="More on creating a sudo user"> | + | <div class="mw-collapsible mw-collapsed" data-expandtext="More on creating a sudo user" data-collapsetext="Collapse"> |
| | | |
| <syntaxhighlight lang="Bash"> | | <syntaxhighlight lang="Bash"> |
Line 103: |
Line 126: |
| | | |
| ==== Installing Mock ==== | | ==== Installing Mock ==== |
| + | {{note box|Mock creates chroots and builds packages in them. Its only task is to reliably populate a chroot and attempt to build a package in that chroot. Mock is currently being used for all Fedora builds. Mock takes a srpm and builds it in a chroot. This ensures that your [http://fedoraproject.org/wiki/Packaging:Guidelines#BuildRequires_2 BuildRequires] lines are correct, that there are no missing dependencies, and that it builds cleanly. The [http://fedoraproject.org/wiki/Projects/Mock Mock project] page has more information on Mock.}} |
| + | |
| Install mock, make and rpm-build and python-ctypes packages (the latter for better setarch support) | | Install mock, make and rpm-build and python-ctypes packages (the latter for better setarch support) |
| <syntaxhighlight lang="Bash"> | | <syntaxhighlight lang="Bash"> |
| sudo yum --enablerepo=epel install mock python-ctypes glances | | sudo yum --enablerepo=epel install mock python-ctypes glances |
− | sudo yum install make rpm-build | + | sudo yum install make rpm-build rpm-sign wget |
| </syntaxhighlight> | | </syntaxhighlight> |
| Add yourself to the 'mock' group that will have now been created | | Add yourself to the 'mock' group that will have now been created |
Line 113: |
Line 138: |
| </syntaxhighlight> | | </syntaxhighlight> |
| | | |
− | The mock package creates an /etc/mock directory with configs for various OS versions (mostly Fedoras). Shad has provided working configurations for SME Server here http://mirror.canada.pialasse.com/contribs/slords/mock/ | + | The mock package creates an /etc/mock directory with configs for various OS versions (mostly Fedoras). dani has provided working configurations for SME Server here http://mirror.contribs.org/contribs/dani/mock/ |
| | | |
| Copy all the .cfg files into /etc/mock including overwriting the site-defaults.cfg | | Copy all the .cfg files into /etc/mock including overwriting the site-defaults.cfg |
Line 121: |
Line 146: |
| [root@buildcos9 mock]# rm site-defaults.cfg | | [root@buildcos9 mock]# rm site-defaults.cfg |
| | | |
− | wget http://mirror.canada.pialasse.com/contribs/slords/mock/site-defaults.cfg | + | wget http://mirror.contribs.org/contribs/dani/mock/site-defaults.cfg |
− | wget http://mirror.canada.pialasse.com/contribs/slords/mock/smeserver-7-i386-base.cfg | + | wget http://mirror.contribs.org/contribs/dani/mock/smeserver-8-i386-base.cfg |
− | wget http://mirror.canada.pialasse.com/contribs/slords/mock/smeserver-7-i386-iso.cfg | + | wget http://mirror.contribs.org/contribs/dani/mock/smeserver-8-i386-iso.cfg |
− | wget http://mirror.canada.pialasse.com/contribs/slords/mock/smeserver-7-x86_64-base.cfg | + | wget http://mirror.contribs.org/contribs/dani/mock/smeserver-8-x86_64-base.cfg |
− | wget http://mirror.canada.pialasse.com/contribs/slords/mock/smeserver-7-x86_64-iso.cfg | + | wget http://mirror.contribs.org/contribs/dani/mock/smeserver-8-x86_64-iso.cfg |
− | wget http://mirror.canada.pialasse.com/contribs/slords/mock/smeserver-8-i386-base.cfg | + | wget http://mirror.contribs.org/contribs/dani/mock/smeserver-9-i386-base.cfg |
− | wget http://mirror.canada.pialasse.com/contribs/slords/mock/smeserver-8-i386-iso.cfg | + | wget http://mirror.contribs.org/contribs/dani/mock/smeserver-9-i386-iso.cfg |
− | wget http://mirror.canada.pialasse.com/contribs/slords/mock/smeserver-8-x86_64-base.cfg | + | wget http://mirror.contribs.org/contribs/dani/mock/smeserver-9-x86_64-base.cfg |
− | wget http://mirror.canada.pialasse.com/contribs/slords/mock/smeserver-8-x86_64-iso.cfg | + | wget http://mirror.contribs.org/contribs/dani/mock/smeserver-9-x86_64-iso.cfg |
− | wget http://mirror.canada.pialasse.com/contribs/slords/mock/smeserver-9-i386-base.cfg | + | wget http://mirror.contribs.org/contribs/dani/mock/smeserver-10-x86_64-base.cfg |
− | wget http://mirror.canada.pialasse.com/contribs/slords/mock/smeserver-9-i386-iso.cfg
| |
− | wget http://mirror.canada.pialasse.com/contribs/slords/mock/smeserver-9-x86_64-base.cfg
| |
− | wget http://mirror.canada.pialasse.com/contribs/slords/mock/smeserver-9-x86_64-iso.cfg
| |
| | | |
| * Change group ownership to mock: | | * Change group ownership to mock: |
| [root@buildcos9 mock]# chown root:mock /etc/mock/* | | [root@buildcos9 mock]# chown root:mock /etc/mock/* |
| + | |
| + | * workaround (as of 11Oct2016 - this does not seem necessary - the required line is already in the cfg files - bjr) |
| + | if the tag 'sme' is not added to the built package see [[bugzilla:8636]] and add <br /> |
| + | |
| + | to smeserver-8-i386-base.cfg & smeserver-8-x86_64-base.cfg |
| + | config_opts['macros']['%dist'] = ".el5.sme" |
| + | to smeserver-9-i386-base.cfg & smeserver-9-x86_64-base.cfg |
| + | config_opts['macros']['%dist'] = ".el6.sme" |
| + | |
| + | * Script to create build directories |
| + | #!/bin/sh |
| + | mkdir ~/rpmbuild |
| + | for i in BUILD BUILDROOT RPMS SOURCES SPECS SRPMS |
| + | do |
| + | mkdir ~/rpmbuild/$i |
| + | done |
| | | |
| ==== Testing building environment ==== | | ==== Testing building environment ==== |
| + | |
| You can then run a test by doing: | | You can then run a test by doing: |
| | | |
| # e.g. initialise a smeserver-9-x86_64-base chroot environment | | # e.g. initialise a smeserver-9-x86_64-base chroot environment |
− | $ CONFIG=smeserver-9-x86_64-base | + | [chris@build-system SRPMS] $ CONFIG=smeserver-9-x86_64-base |
− | $ mock -r $CONFIG --init | + | [chris@build-system SRPMS] $ mock -r $CONFIG --init |
− | # It might take a while to configure at the "Start: yum update"
| |
| | | |
− | which will setup an initial chroot environment using the given config. If that seemed to work (you weren't inundated with error messages), you can try a build:
| + | It might take a while to configure at the "Start: yum update" |
− | You will need an SRPM, for instance from http://mirror.canada.pialasse.com/releases/testing/9/smeupdates-testing/SRPMS/
| |
| | | |
| + | which will setup an initial chroot environment using the given config. If that seemed to work (you weren't inundated with error messages), you can try a build |
| + | |
| + | =====Perform a Build for sme9 64 bits from an SRPM===== |
| + | You will need an SRPM, for instance from http://mirror.contribs.org/releases/testing/9/smeupdates-testing/SRPMS/ |
| + | you can use '''wget''' to download it in your terminal |
| # Rebuild the given source RPM within the chroot environment | | # Rebuild the given source RPM within the chroot environment |
| # usage: mock -r <mock_config> --rebuild /path/to/SRPM e.g. | | # usage: mock -r <mock_config> --rebuild /path/to/SRPM e.g. |
− | $ mock -r $CONFIG --rebuild ~/rpmbuild/SRPMS/e-smith-runit-2.4.0-1.el6.sme.src.rpm
| + | [chris@build-system SRPMS]$ CONFIG=smeserver-9-x86_64-base |
| + | [chris@build-system SRPMS] $ mock -r $CONFIG --rebuild ~/rpmbuild/SRPMS/e-smith-runit-2.4.0-1.el6.sme.src.rpm |
| | | |
| If the build succeeds, it drops your packages into the /var/lib/mock/$CONFIG/result directory. | | If the build succeeds, it drops your packages into the /var/lib/mock/$CONFIG/result directory. |
Line 164: |
Line 207: |
| state.log | | state.log |
| | | |
− | ====INSTALL AND CONFIG CVS==== | + | =====Perform a Build for sme9 32 bits from an SRPM===== |
| + | [chris@build-system SRPMS]$ CONFIG=smeserver-9-i386-base |
| + | [chris@build-system SRPMS] $ mock -r $CONFIG --rebuild ~/rpmbuild/SRPMS/e-smith-runit-2.4.0-1.el6.sme.src.rpm |
| + | |
| + | =====Perform a Build for sme8 64 bits from an SRPM===== |
| + | [chris@build-system SRPMS]$ wget http://mirror.contribs.org/releases/8.0/smeupdates-testing/SRPMS/perl-CGI-FormMagick-0.92-23.el5.sme.src.rpm |
| + | [chris@build-system SRPMS]$ CONFIG=smeserver-8-x86_64-base |
| + | [chris@build-system SRPMS] $ mock -r $CONFIG --rebuild ~/smeupdates-testing/SRPMS/perl-CGI-FormMagick-0.92-23.el5.sme.src.rpm |
| + | |
| + | see the built rpm in the relevant folder |
| + | |
| + | ls -1 /var/lib/mock/smeserver-8-x86_64/result |
| + | |
| + | =====Perform a Build for sme8 32 bits from an SRPM===== |
| + | [chris@build-system SRPMS]$ CONFIG=smeserver-8-i386-base |
| + | [chris@build-system SRPMS] $ mock -r $CONFIG --rebuild ~/smeupdates-testing/SRPMS/perl-CGI-FormMagick-0.92-23.el5.sme.src.rpm |
| + | |
| + | ====Install and config CVS==== |
| + | {{note box|SME Server uses CVS for maintaining code and packages. SME Server core and contribs code is stored in CVS, this is a system to maintain version history and change management for program code. |
| + | There are two repositories hosting code for SME Server: |
| + | |
| + | SME Server - holding the source code for the SME Server core |
| + | SME Contribs - holding the source code for contribs (add-ons) for SME Server |
| + | |
| + | Both repositories are organized by the package name under which they appear in the software installer in the server-manager (or yum). please see [[CVS|CVS page]] for more specific information}} |
| | | |
| If this works, it is worth grabbing either CVS for one module, or the whole CVS tree using this : http://wiki.contribs.org/Simple_Package_Modification | | If this works, it is worth grabbing either CVS for one module, or the whole CVS tree using this : http://wiki.contribs.org/Simple_Package_Modification |
| * Setup CVS to use ssh by creating /etc/profile.d/smebuild.sh with the following content | | * Setup CVS to use ssh by creating /etc/profile.d/smebuild.sh with the following content |
− | [chris@buildcos9 profile.d]$ sudo touch smebuild.sh
| + | |
− | [chris@buildcos9 profile.d]$ nano smebuild.sh
| |
| [chris@buildcos9 profile.d]$ sudo nano smebuild.sh | | [chris@buildcos9 profile.d]$ sudo nano smebuild.sh |
− | [chris@buildcos9 profile.d]$ cat smebuild.sh
| + | |
| + | Paste this: |
| | | |
| # Developer environment | | # Developer environment |
Line 187: |
Line 254: |
| | | |
| * Check CVS account | | * Check CVS account |
− | You need top create an account on sourceforge, then get Shad to includ you in sme group + give access to Buildsys. Can be done later...Of course it is not an issue if you have not a cvs access like we will see below, you can retrieve package in mode anonymous. | + | You need top create an account on shell.koozali.org, then get an admin to include you in sme group + give access to Buildsys. Can be done later...Of course it is not an issue if you have not a cvs access like we will see below, you can retrieve package in mode anonymous. |
| + | |
| + | ====KOOZALI CVS access==== |
| + | This chapter is used only by developers who aim to be granted in write access to the source code on shell.koozali.org, you don't need it if you want to only make patch or modify code in your build environment. You can see [[Package_Modification]] for more information. |
| + | * SME Server code is stored in the CVS on shell.koozali.org. To be able to work on your code in the SME Server CVS repository you need an account on Koozali.org. With this account the development team can give you access to the CVS repository. |
| + | * After you have had your account created you can ask the development team to give you developer access to smecontribs. Create a bug in the Bug Tracker as usual. |
| + | |
| + | * If local username is different to koozali.org username edit ~/.ssh/config: |
| + | |
| + | Host shell.koozali.org |
| + | User koozaliusername ''(without @shell.koozali.org)'' |
| + | Host shell.koozali.org |
| + | User koozaliusername ''(without @shell.koozali.org)'' |
| + | |
| + | * Don't forget to set the proper privileges on the file |
| + | |
| + | chmod 600 ~/.ssh/config |
| + | |
| + | the port 222 will need to be defined in ~/.ssh/config |
| + | host shell.koozali.org |
| + | port 222 |
| | | |
− | ====USING CVS - GETTING SOURCE CODES==== | + | you can also define there the rsa key you want to use... |
| + | |
| + | If you have a number of different keys ssh/cvs may try and use the wrong one. |
| + | |
| + | You can add the following to your ~/.ssh/config file to specify the correct key: |
| + | |
| + | Host shell.koozali.org |
| + | User koozaliusername |
| + | IdentityFile ~/.ssh/my.private.key |
| + | |
| + | ====Using CVS - Getting source Code==== |
| We need to create directory in /home/chris for example this how you can do | | We need to create directory in /home/chris for example this how you can do |
| | | |
Line 197: |
Line 294: |
| rpms - used for CVS tree download | | rpms - used for CVS tree download |
| | | |
| + | [chris@buildcos9 work]$ cd /home/chris |
| + | [chris@buildcos9 work]$ mkdir {exchange,work,rpmbuild,rpms} |
| '''CVS is used for maintaining code and packages.'''<br /> | | '''CVS is used for maintaining code and packages.'''<br /> |
| | | |
− | We first need to download (with CVS this is called retrieving) the code for the package to be modified from the SME Server CVS repository at SourceForge (we can also retrieve the CVS for the smecontribs tree). | + | We first need to download (with CVS this is called retrieving) the code for the package to be modified from the SME Server CVS repository at Koozali.org (we can also retrieve the CVS for the smecontribs tree). |
| Two cases with CVS: | | Two cases with CVS: |
| | | |
− | To be able to work on your code in the SME Server CVS repository you need an account on SourceForge. If you do not have an account at CVS, retrieving is performed as an anonymous user and changes cannot be saved. | + | To be able to work on your code in the SME Server CVS repository you need an account on Koozali.org. If you do not have an account at CVS, retrieving is performed as an anonymous user and changes cannot be saved. |
| | | |
− | ===== CASE 1 - REGISTERED USERS ===== | + | ===== Case 1 - Registered Users ===== |
| - To retrieve a package or a full tree as a registered user, cd into a work directory and issue following commands: | | - To retrieve a package or a full tree as a registered user, cd into a work directory and issue following commands: |
| * for smeserver | | * for smeserver |
− | cvs -z3 -d:ext:smeserver.cvs.sourceforge.net:/cvsroot/smeserver co -P packagename [individual package] | + | cvs -z3 -d:ext:shell.koozali.org:/cvs/smeserver co -P packagename [individual package] |
− | cvs -z3 -d:ext:smeserver.cvs.sourceforge.net:/cvsroot/smeserver co -P rpms [full tree] | + | cvs -z3 -d:ext:shell.koozali.org:/cvs/smeserver co -P rpms [full tree] |
| + | env CVS_RSH=ssh cvs -d:ext:YOURUSERNAME@shell.koozali.org:/cvs/smeserver checkout CVSROOT rpms common |
| + | |
| * for smecontribs | | * for smecontribs |
− | cvs -z3 -d:ext:smeserver.cvs.sourceforge.net:/cvsroot/smecontribs co -P packagename [individual package] | + | cvs -z3 -d:ext:shell.koozali.org:/cvs/smecontribs co -P packagename [individual package] |
− | cvs -z3 -d:ext:smeserver.cvs.sourceforge.net:/cvsroot/smecontribs co -P rpms [full tree] | + | cvs -z3 -d:ext:shell.koozali.org:/cvs/smecontribs co -P rpms [full tree] |
| + | env CVS_RSH=ssh cvs -d:ext:YOURUSERNAME@shell.koozali.org:/cvs/smecontribs checkout CVSROOT rpms common |
| | | |
− | ===== CASE 2 - ANONYMOUS USERS ===== | + | ===== Case 2 - Anonymous users ===== |
| - To retrieve a package or a full tree as an anonymous user, cd into a work directory and issue following commands: | | - To retrieve a package or a full tree as an anonymous user, cd into a work directory and issue following commands: |
| * for smeserver | | * for smeserver |
− | cvs -z3 -d:pserver:anonymous@smeserver.cvs.sourceforge.net:/cvsroot/smeserver checkout -P packagename [individual package] | + | cvs -z3 -d:pserver:anonymous@shell.koozali.org:/cvs/smeserver checkout -P packagename [individual package] |
− | cvs -z3 -d:pserver:anonymous@smeserver.cvs.sourceforge.net:/cvsroot/smeserver co -P rpms [full tree] | + | cvs -z3 -d:pserver:anonymous@shell.koozali.org:/cvs/smeserver co -P rpms [full tree] |
| | | |
| * for smecontribs | | * for smecontribs |
− | cvs -z3 -d:pserver:anonymous@smeserver.cvs.sourceforge.net:/cvsroot/smecontribs checkout -P packagename [individual package] | + | cvs -z3 -d:pserver:anonymous@shell.koozali.org:/cvs/smecontribs checkout -P packagename [individual package] |
− | cvs -z3 -d:pserver:anonymous@smeserver.cvs.sourceforge.net:/cvsroot/smecontribs co -P rpms [full tree] | + | cvs -z3 -d:pserver:anonymous@shell.koozali.org:/cvs/smecontribs co -P rpms [full tree] |
| | | |
| Note: If at a later stage you obtain a valid account with CVS, you will need to edit ALL packages /CVS/Root in order to save your work in CVS. As an example, for package "packagename", CVS/Root will need to be edited to be exactly as shown below: | | Note: If at a later stage you obtain a valid account with CVS, you will need to edit ALL packages /CVS/Root in order to save your work in CVS. As an example, for package "packagename", CVS/Root will need to be edited to be exactly as shown below: |
| [chris@buildcos9 work]$ cat packagename/CVS/Root | | [chris@buildcos9 work]$ cat packagename/CVS/Root |
− | :ext:smeserver.cvs.sourceforge.net:/cvsroot/smeserver | + | :ext:shell.koozali.org:/cvs/smeserver |
| | | |
| ok - CVS/Root uses 'ext' which should be SSH access | | ok - CVS/Root uses 'ext' which should be SSH access |
| + | the port 222 will need to be defined in ~/.ssh/config |
| + | host shell.koozali.org |
| + | port 222 |
| + | you can also define there the rsa key you want to use... |
| | | |
− | ==== PACKAGE MODIFICATION ==== | + | ==== Package modification ==== |
| * Prepare work areas, make some directories: | | * Prepare work areas, make some directories: |
| [chris@buildcos9 ~]$ pwd | | [chris@buildcos9 ~]$ pwd |
Line 241: |
Line 347: |
| [chris@buildcos9 ~]$ mkdir smeserver | | [chris@buildcos9 ~]$ mkdir smeserver |
| [chris@buildcos9 ~]$ cd smeserver | | [chris@buildcos9 ~]$ cd smeserver |
− | [chris@buildcos9 work]$ cvs -z3 -d:ext:smeserver.cvs.sourceforge.net:/cvsroot/smeserver co -P packagename | + | [chris@buildcos9 work]$ cvs -z3 -d:ext:shell.koozali.org:/cvs/smeserver co -P packagename |
| | | |
| or for smecontribs | | or for smecontribs |
Line 247: |
Line 353: |
| [chris@buildcos9 ~]$ mkdir smecontribs | | [chris@buildcos9 ~]$ mkdir smecontribs |
| [chris@buildcos9 ~]$ cd smecontribs | | [chris@buildcos9 ~]$ cd smecontribs |
− | [chris@buildcos9 work]$ cvs -z3 -d:ext:smeserver.cvs.sourceforge.net:/cvsroot/smecontribs co -P packagename | + | [chris@buildcos9 work]$ cvs -z3 -d:ext:shell.koozali.org:/cvs/smecontribs co -P packagename |
| | | |
| * To refresh run the following from the rpms directory, or any lower directory with a CVS dir. | | * To refresh run the following from the rpms directory, or any lower directory with a CVS dir. |
Line 281: |
Line 387: |
| Patch3: packagename-1.2.3-my_changes_description | | Patch3: packagename-1.2.3-my_changes_description |
| | | |
− | * Add patch version to the %setup section bot forgetting to increase number by 1: | + | * Add patch version to the %setup section not forgetting to increase number by 1: |
| %patch3 -p1 | | %patch3 -p1 |
| | | |
Line 291: |
Line 397: |
| NOTE: The formatting of date information is critical, any errors will prevent successful commit to CVS. | | NOTE: The formatting of date information is critical, any errors will prevent successful commit to CVS. |
| In doubts, check previous entries in the changelog. | | In doubts, check previous entries in the changelog. |
| + | |
| + | NOTE: There must be a bug reference for every change, it must be in the format [SME: xxxx] |
| | | |
| * Check changes against CVS | | * Check changes against CVS |
Line 298: |
Line 406: |
| [chris@buildcos9 sme9]$ pwd | | [chris@buildcos9 sme9]$ pwd |
| /home/chris/work/packagename/sme9 | | /home/chris/work/packagename/sme9 |
| + | |
| [chris@buildcos9 sme9]$ make mockbuild | | [chris@buildcos9 sme9]$ make mockbuild |
| + | |
| {{Note box|msg=Mock will determine which configuration to use, but you can specify it if wanting to build for a different architecture for instance. | | {{Note box|msg=Mock will determine which configuration to use, but you can specify it if wanting to build for a different architecture for instance. |
| * Default | | * Default |
Line 306: |
Line 416: |
| * IF 64 BITS SYSTEM: | | * IF 64 BITS SYSTEM: |
| BUILDARCH=x86_64 make mockbuild}} | | BUILDARCH=x86_64 make mockbuild}} |
| + | |
| + | ===== Basic Testing of Package: ===== |
| + | Check for built packages: |
| + | [chris@buildcos9 sme9]$ ls -la packagename-1_2_3-4_el6_sme |
| + | |
| + | - Send new package (and patch if required) to workstation for testing/processing, as an example: |
| + | [chris@buildcos9 packagename-1_2_3-4_el6_sme]$ scp -P 22 packagename-1_2_3-4_el6_sme.noarch.rpm chris\@192.168.0.1:/home/chris/WIP |
| + | |
| + | - Move package to an ibay on test server |
| + | |
| + | - Install package (yum localinstall or rpm -Uvh, for SME9 you can also use yum update packagename-1_2_3-4_el6_sme.noarch.rpm) |
| + | |
| + | - Ensure nothing is broken. |
| + | |
| | | |
| ======Notes on mock/cvs====== | | ======Notes on mock/cvs====== |
Line 332: |
Line 456: |
| $ rpm -qpl package_name.noarch.rpm |grep perl | | $ rpm -qpl package_name.noarch.rpm |grep perl |
| | | |
− | ===== BASIC TESTING OF PACKAGE: ===== | + | ===== Finalising in CVS and buildsys ===== |
− | Check for built packages:
| |
− | [chris@buildcos9 sme9]$ ls -la packagename-1_2_3-4_el6_sme
| |
− | | |
− | - Send new package (and patch if required) to workstation for testing/processing, as an example:
| |
− | [chris@buildcos9 packagename-1_2_3-4_el6_sme]$ scp -P 22 packagename-1_2_3-4_el6_sme.noarch.rpm chris\@192.168.0.1:/home/chris/WIP
| |
− | | |
− | - Move package to an ibay on test server
| |
− | | |
− | - Install package (yum localinstall or rpm -Uvh)
| |
− | | |
− | - Ensure nothing is broken.
| |
− | | |
− | ===== FINALISING IN CVS AND BUILSYS =====
| |
| * Add the patch file to cvs: | | * Add the patch file to cvs: |
− | [chris@buildcos9 sme9]$ cvs add packagename-1.2.3-your_changes-description | + | [chris@buildcos9 sme9]$ cvs add packagename-1.2.3-your_changes-description.patch |
| cvs add: scheduling file `packagename-1.2.3-your_changes-description' for addition | | cvs add: scheduling file `packagename-1.2.3-your_changes-description' for addition |
| cvs add: use 'cvs commit' to add this file permanently | | cvs add: use 'cvs commit' to add this file permanently |
Line 377: |
Line 488: |
| == Patching an upstream package == | | == Patching an upstream package == |
| | | |
− | initscripts is an example of a package where we have to patch the upstream package. | + | initscripts is an example of a package where we have to patch the upstream package. Note that this is not the best approach, new method to be documented by Ian soon. |
| | | |
| Original author [http://lists.contribs.org/pipermail/devinfo/2013-October/011977.html Ian Wells] | | Original author [http://lists.contribs.org/pipermail/devinfo/2013-October/011977.html Ian Wells] |
Line 524: |
Line 635: |
| | | |
| == Older notes == | | == Older notes == |
− | | + | * You can find more example [[Rpm_build_example_using_cvs/mock|of how using Mock]] |
− | * To set up mock as used above see [[Setting_up_RPM_Building_for_SME_Server|Building using Mock]] | + | * To set up mock as used above see [http://wiki.contribs.org/Setting_up_RPM_Building_for_SME_Server Building using Mock] |
| * To checkout packages from CVS see [[Simple_Package_Modification|Simplest way to develop patches to submit]] | | * To checkout packages from CVS see [[Simple_Package_Modification|Simplest way to develop patches to submit]] |
| | | |
Line 536: |
Line 647: |
| * there don't seem to be any hooks in mock to allow you to sign packages you've built, so if you do want signed packages you need to sign them afterwards via a rpm --resign $RPMS. | | * there don't seem to be any hooks in mock to allow you to sign packages you've built, so if you do want signed packages you need to sign them afterwards via a rpm --resign $RPMS. |
| * If you get an error message 'create archive failed cpio: Bad magic' then try 'yum update' as this appears to be a known problem on COS6. | | * If you get an error message 'create archive failed cpio: Bad magic' then try 'yum update' as this appears to be a known problem on COS6. |
− |
| |
| | | |
| [[Category:SME Server Development Framework]] | | [[Category:SME Server Development Framework]] |
| [[Category:Development Tools]] | | [[Category:Development Tools]] |
| [[Category:SME9-Development]] | | [[Category:SME9-Development]] |