= Building RPMs with Mock = I'll try to write down what I need to do to set-up a simple rpm build system using mock, whereby some packages have dependencies on my own builds. == Requirements for the build system == {{{ yum install mock createrepo yum-utils }}} Create the following directories to allow inspection and modification of RPM packages {{{ mkdir -p ~/rpm/BUILD ~/rpm/RPMS ~/rpm/SOURCES ~/rpm/SPECS ~/rpm/SRPMS }}} Create a ~/.rpmmacros file with the following content {{{ %HOME %{expand:%%(cd; pwd)} %_topdir %{HOME}/rpm }}} Any source rpm you now install (as regular user) will end up under $HOME/rpm/* Generate a GPG signing key: {{{ gpg --gen-key }}} follow the instructions {{{ gpg --export -a 'Jorrit Jorritsma' > ~/RPM-GPG-KEY-jorrit }}} Import your public key to your RPM DB {{{ sudo rpm --import RPM-GPG-KEY-jorrit }}} Add the following to your ~/.rpmmacros file {{{ %_signature gpg %_gpg_path ~/.gnupg %_gpg_name Jorrit Jorritsma %_gpgbin /usr/bin/gpg }}} Singing of packages can now be done with: {{{ rpm --addsign *.rpm }}} == get the src rpms == {{{ wget -r --no-parent -A *.src.rpm https://ast.tucny.com/repo/ }}} Create a rpm repository under your web server: {{{ sudo mkdir -p /var/www/html/repos sudo chown jorrit. /var/www/html/repos mkdir /var/www/html/repos/x86_64 createrepo /var/www/html/repo/x86_64 }}} Add your own repo to your mock config for the target build (e.g. /etc/mock/epel-7-x86_64.cfg) {{{ [jj] name=jj baseurl=http://centos7.fritz.box/repo/x86_64/ gpgcheck=1 skip_if_unavailable=False }}} Do the building part {{{ mock --target=epel-7-x86_64 --rebuild dahdi-linux-2.11.1-2.el7.centos.src.rpm rm -f /var/lib/mock/epel-7-x86_64/result/*src.rpm rpm --addsign /var/lib/mock/epel-7-x86_64/result/*.rpm cp /var/lib/mock/epel-7-x86_64/result/*.rpm /var/www/html/repo/x86_64 createrepo --update /var/www/html/repo/x86_64 }}}