Changes

Jump to navigation Jump to search
Line 1: Line 1: −
Updated - July 2023 - Added latest smeserver-10-x86_64-base.cfg contents and git details
+
<!-- Updated - July 2023 - Added latest smeserver-10-x86_64-base.cfg contents and git details
    +
Updated Aug 2023 - Add Rocky 8 build details and notification of EL8 plague-client.
   −
Login as brianr (or whatever)
+
And added in instructions for pulling git repos down and mockbuilding locall.
 +
-->
 +
<nowiki>__TOC__</nowiki>
 +
 
 +
==Creating the build system==
 +
 
 +
Build yourself a Rock8 system, probably minimal, but any level will do.
 +
 
 +
https://rockylinux.org/download/
 +
 
 +
Then login to the new system as "brianr" (or whatever user you created as part of the install.)
    
  sudo dnf install epel-release
 
  sudo dnf install epel-release
Line 8: Line 19:  
  sudo /usr/sbin/usermod -G mock brianr
 
  sudo /usr/sbin/usermod -G mock brianr
 
  sudo dnf install glances
 
  sudo dnf install glances
  sudo yum install make rpm-build rpm-sig
+
  sudo yum install make rpm-build rpm-sign
sudo dnf install git-lfs
   
  sudo dnf install xz
 
  sudo dnf install xz
   Line 113: Line 123:  
  baseurl=<nowiki>http://download.fedoraproject.org/pub/epel/7/x86_64</nowiki>
 
  baseurl=<nowiki>http://download.fedoraproject.org/pub/epel/7/x86_64</nowiki>
 
  #baseurl=<nowiki>http://buildsys.koozali.org/build/7/epel/x86_64</nowiki>
 
  #baseurl=<nowiki>http://buildsys.koozali.org/build/7/epel/x86_64</nowiki>
  includepkgs=ccache mhash* perl-Taint-Util libdb4 libdb4-devel php-channel-horde php-horde-* perl-Class-Method-Modifiers perl-Class-XSAccessor perl-Devel-GlobalDestruction perl-Sub-Name perl-indirect perl-B-Hooks-OP-Check perl-ExtUtils-Depends perl-Lexical-SealRequireHints perl-Params-Classify perl-Dist-CheckConflicts perl-Math-Int64 perl-Sort-Naturally perl-Sub-Exporter* perl-Bytes-Random-Secure perl-Crypt-Random-TESHA2 perl-Crypt-Random-Seed perl-Math-Random-ISAAC kmodtool libmaxminddb-devel libmaxminddb perl-Module-Build-Tiny perl-Mojolicious perl-Net-CIDR-Lite mod_perl mod_perl-devel perl-Apache-Test pyzor perl-Linux-Pid perl-BSD-Resource perl-dev  perl-Data-Dumper perl-Razor-Agent perl-generators* perl-Net-Patricia meson libidn2* ninja-build python36-Cython epel-rpm-macros lua-srpm-macros libnetfilter_log* courier-unicode* perl-Path-Class perl-String-Random perl-Test-Class perl-Test-Mojo perl-MRO-Compat perl-Class-Accessor libebml* libmatroska* pugixml* spdlog* multilib-rpm-config cmake3* libuv libzstd rhash google-benchmark* libnet10-* perl-Crypt-GPG gnupg1 perl-Lingua-Stem-Snowball* perl-Lingua-StopWords perl-rpm-build-perl* fmt* perl-Class-Virtual perl-Carp-Assert pyPdf python2-apipkg python2-bottle python2-dateutil python2-docutils python-gevent python2-simplejson python-sqlite3dbm python2-future python2-attrs python2-packaging python2-certifi perl-Email-MIME perl-Email-Simple perl-Net-IP perl-Net-SMTPS perl-Throwable perl-Sub-Override perl-Moose perl-Email-Abstract perl-Eval-Closure perl-Email-Date-Format perl-Devel-PartialDump perl-namespace-clean perl-B-Hooks-EndOfScope perl-Variable-Magic latexmk python3-sphinx* python36-sphinx* python36-pygments python36-jinja2 python36-docutils python36-markupsafe clamav* perl-TAP-Harness-Env rust ghc-* rust-* llvm13-libs pandoc golang* perl-Net-LibIDN* perl-Net-Patricia re2c perl-Data-Validate-IP perl-Clone-PP perl-ExtUtils-Manifest*
+
  includepkgs=ccache mhash* perl-Taint-Util libdb4 libdb4-devel php-channel-horde php-horde-* perl-Class-Method-Modifiers perl-Class-XSAccessor perl-Devel-GlobalDestruction perl-Sub-Name perl-indirect perl-B-Hooks-OP-Check perl-ExtUtils-Depends perl-Lexical-SealRequireHints perl-Params-Classify perl-Dist-CheckConflicts perl-Math-Int64 perl-Sort-Naturally perl-Sub-Exporter* perl-Bytes-Random-Secure perl-Crypt-Random-TESHA2 perl-Crypt-Random-Seed perl-Math-Random-ISAAC kmodtool libmaxminddb-devel libmaxminddb perl-Module-Build-Tiny perl-Mojolicious perl-Net-CIDR-Lite mod_perl mod_perl-devel perl-Apache-Test pyzor perl-Linux-Pid perl-BSD-Resource perl-dev  perl-Data-Dumper perl-Razor-Agent perl-generators* perl-Net-Patricia meson libidn2* ninja-build python36-Cython epel-rpm-macros lua-srpm-macros libnetfilter_log* courier-unicode* perl-Path-Class perl-String-Random perl-Test-Class perl-Test-Mojo perl-MRO-Compat perl-Class-Accessor libebml* libmatroska* pugixml* spdlog* multilib-rpm-config cmake3* libuv libzstd rhash google-benchmark* libnet10-* perl-Crypt-GPG gnupg1 perl-Lingua-Stem-Snowball* perl-Lingua-StopWords perl-rpm-build-perl* fmt* perl-Class-Virtual perl-Carp-Assert pyPdf python2-apipkg python2-bottle python2-dateutil python2-docutils python-gevent python2-simplejson python-sqlite3dbm python2-future python2-attrs python2-packaging python2-certifi perl-Email-MIME perl-Email-Simple perl-Net-IP perl-Net-SMTPS perl-Throwable perl-Sub-Override perl-Moose perl-Email-Abstract perl-Eval-Closure perl-Email-Date-Format perl-Devel-PartialDump perl-namespace-clean perl-B-Hooks-EndOfScope perl-Variable-Magic latexmk python3-sphinx* python36-sphinx* python36-pygments python36-jinja2 python36-docutils python36-markupsafe clamav* perl-TAP-Harness-Env rust ghc-* rust-* llvm13-libs pandoc golang* perl-Net-LibIDN* perl-Net-Patricia re2c perl-Data-Validate-IP perl-Clone-PP perl-ExtUtils-Manifest* perl-ExtUtils-InstallPaths* perl-ExtUtils-Helpers* perl-ExtUtils-Config*
 
   
 
   
 
  [openfusion]
 
  [openfusion]
Line 213: Line 223:  
  cp smeserver-gitutils/conf ~/.smegit/config
 
  cp smeserver-gitutils/conf ~/.smegit/config
   −
Then edit the ~/.smegit/conf for your own setup.
+
Then edit the ~/.smegit/conf for your own setup.  Make sure that ~/bin is in the $PATH - you can use .bashrc to set this up if necessary.
    
The gitutils use the change-log and BogusDataBot.sh scripts which are normally installed from smeserver-mock.  Until an EL8 rpm is built, then you need to copy these to ~/bin or /usr/bin from your EL7 or SMEServer system.
 
The gitutils use the change-log and BogusDataBot.sh scripts which are normally installed from smeserver-mock.  Until an EL8 rpm is built, then you need to copy these to ~/bin or /usr/bin from your EL7 or SMEServer system.
Line 236: Line 246:  
Then next time you need to access the repo to push and it asks for your credentials it will save them.   
 
Then next time you need to access the repo to push and it asks for your credentials it will save them.   
 
This saves them apparently in plain to a restricted file called ".git-credentials" somewhere, however I've not found it yet!
 
This saves them apparently in plain to a restricted file called ".git-credentials" somewhere, however I've not found it yet!
 +
 +
===Using the git utilities===
 +
 +
Say you want to move a package from CVS to the GIT system. Here are the instructions:
 +
 +
* git-cvs2git.sh packagename organisation  #Bring it across from CVS, create an equivalent git repo
 +
* git-get-repo-and-build.sh packagename organisation #Prime it down from the gitr repo and "make mockbuild" on it.
 +
* git-make-release.sh packagename organisation tagname releasetype #Create the release as part of the repo and copy the rpms to it as attachments.
 +
 +
releasetypes are draft, prerelease or release. Note that a draft release is not visible unless you are logged in with write access to the repo.
 +
 +
=== Mockbuilding direct from the git repos ===
 +
 +
First create some sort of directory structure to hold the repo contents - this is what I use:<syntaxhighlight lang="shell">
 +
cd ~
 +
mkdir -p GITFiles
 +
cd GITFiles
 +
mkdir -p {smedev,smecontribs,smeserver}
 +
 +
</syntaxhighlight>and add in the common directory which provides an environment for the mockbuild .<syntaxhighlight lang="shell">
 +
cd smecontribs
 +
git clone https://src.koozali.org/smedev/common.git
 +
cd smeserver
 +
git clone https://src.koozali.org/smedev/common.git
 +
</syntaxhighlight>we then can add in the repo we want to work on (you get the git clone link by browsing to [https://src.koozali.org/smecontribs/smeserver-mailstats https://src.koozali.org] and then (e.g.) https://src.koozali.org/smecontribs/smeserver-mailstats, or you can "guess" the URL!<syntaxhighlight lang="shell">
 +
cd ~/GITFiles/smecontribs
 +
git clone https://src.koozali.org/smecontribs/smeserver-mailstats
 +
</syntaxhighlight>Then to mockbuild it  locally you can:<syntaxhighlight>
 +
cd ~/smecontribs/smeserver-mailstats
 +
make mockbuild
 +
</syntaxhighlight>after a lot of on screen messages you should finally see a positive outcome message.
 +
 +
If you want to pull down a complete set of repos for (e.g.) the core system, then by using one of the git-utils you can do this:<syntaxhighlight lang="shell">
 +
cd ~/GITFiles/smeserver
 +
git-list-all-org-repos.sh smeserver | xargs -I % sh -c 'git clone https://src.koozali.org/smeserver/%'
 +
</syntaxhighlight>
    
==Submitting jobs to the build system==
 
==Submitting jobs to the build system==
Line 252: Line 298:  
Need python2
 
Need python2
 
   sudo dnf install python2
 
   sudo dnf install python2
Unfortunately it seems that the plague client needs things that Rocky is unable to provide (or at least I can't sort out!!). The perceived wisdom is to wait for the move from CVS to git which is expected for SME11.
+
Unfortunately it seems that the plague client needs things that Rocky is unable to provide (or at least I can't sort out!!). The perceived wisdom is to wait for the move from CVS to git which is expected for SME11. (Aug 2023) Apparently Jean-Paul has built a Plague-client for EL8 now - but I've not tried it!
    
[[Category:Developer]]
 
[[Category:Developer]]

Navigation menu