Skip to content

Instantly share code, notes, and snippets.

@sjjohansen
Created October 19, 2014 22:39
Show Gist options
  • Save sjjohansen/4e7cae53b098a0410572 to your computer and use it in GitHub Desktop.
Save sjjohansen/4e7cae53b098a0410572 to your computer and use it in GitHub Desktop.
Setup Mock for rpm builds
# pre-req packages
yum -y groupinstall "Development Tools"
yum -y install yum-utils
yum -y install epel-release
yum -y install mock rpm-build
yum -y install wget
yum -y install createrepo
# yum repos for downloading CentOS SPRMS
[root@localhost ~]# tail -16 /etc/yum.repos.d/CentOS-Vault.repo
[base-SRPMS-6.5]
name=CentOS-$releasever - Base SRPMS
baseurl=http://vault.centos.org/6.4/os/Source
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
priority=1
enabled=1
[updates-SRPMS-6.5]
name=CentOS-$releasever - Base SRPMS
baseurl=http://vault.centos.org/6.4/updates/Source
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
priority=1
enabled=1
# add the build user to the mock group
usermod -aG mock sjj
# setup build directories as build user. This uses git as an example:
mkdir ~/packages/buildroot.clean/{RPMS,SRPMS,SPECS,BUILD,SOURCES} -p
echo "%_topdir %(pwd)" > ~/.rpmmacros
# if we want to inspect the spec file or whatever:
mkdir -p ~/srpms/git/
cd ~/srpms/git/
yumdownloader --source git
mkdir unpack
cd unpack
rpm2cpio ../git-1.7.1-3.el6_4.1.src.rpm | cpio -idmv
# rebuild using mock
cd ~/packages
cp -a buildroot.clean/ git/
cd git
rpm -ivh http://vault.centos.org/6.5/os/Source/SPackages/git-1.7.1-3.el6_4.1.src.rpm
rpmbuild -bs SPECS/git.spec
mock rebuild SRPMS/git-1.7.1-3.el6.1.src.rpm
# testing using the standard git.spec that comes with new git releases
mkdir -p ~/src/git
cd ~/src/git
wget https://www.kernel.org/pub/software/scm/git/git-2.1.0.tar.gz
tar zxvfp git-2.1.0.tar.gz
rm -rf ~/packages/git/
cd ~/packages
cp -a buildroot.clean/ git/
cd git
cp ~/src/git/git-2.1.0.tar.gz SOURCES/
cp ~/src/git/git-2.1.0/git.spec SPECS/
rpmbuild -bs SPECS/git.spec
mock rebuild SRPMS/git-2.1.0-1.el6.src.rpm
# create local repo
[root@localhost yum.repos.d]# cat /etc/yum.repos.d/local.repo
[local]
name=CentOS-$releasever - local packages for $basearch
baseurl=file:///yumrepo/CentOS/$releasever/local/$basearch
enabled=1
gpgcheck=0
protect=1
# add the new rpms to that local repo for testing
sudo mkdir -p /yumrepo/CentOS/6/local/x86_64/RPMS
sudo cp /var/lib/mock/epel-6-x86_64/result/git*2.1.0*.rpm /yumrepo/CentOS/6/local/x86_64/RPMS
sudo createrepo /yumrepo/CentOS/6/local/x86_64/
sudo yum remove git
sudo yum -y install git
git --version
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment