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
 
  −
 
        Line 114: 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 208: Line 217:     
Then copy the shell scripts to ~/bin or wherever.
 
Then copy the shell scripts to ~/bin or wherever.
 +
 +
mkdir ~/bin
 +
cp smeserver-gitutils/git-*.sh  ~/bin/.
 +
mkdir ~/.smegit
 +
cp smeserver-gitutils/conf ~/.smegit/config
 +
 +
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.
 +
 +
They also use the json utilities "jq", and "git-lfs" plugin and "lua" (needed for change-log) so you need:
 +
 +
sudo dnf install jq
 +
sudo dnf install lua
 +
sudo dnf install git-lfs
 +
 +
 +
Git is quite sensitive to the local time, so make sure your timezone is correct: 
 +
 +
timedatectl
 +
timedatectl list_timezones | grep London
 +
timedatectl set-timezone Europe/London
    
If you want to save your credentials to the gitea server, then do this:
 
If you want to save your credentials to the gitea server, then do this:
Line 213: Line 244:  
  git config --global credential.helper store
 
  git config --global credential.helper store
   −
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!
 +
 
 +
===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 230: 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