Created
December 16, 2010 19:11
-
-
Save goldmann/743820 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
config_opts['root'] = 'fedora-rawhide-x86_64' | |
config_opts['target_arch'] = 'x86_64' | |
config_opts['chroot_setup_cmd'] = 'groupinstall buildsys-build' | |
config_opts['dist'] = 'fc13' # only useful for --resultdir variable subst | |
#config_opts['createrepo_on_rpms'] = True | |
config_opts['yum.conf'] = """ | |
[main] | |
cachedir=/var/cache/yum | |
debuglevel=1 | |
reposdir=/dev/null | |
logfile=/var/log/yum.log | |
retries=20 | |
obsoletes=1 | |
gpgcheck=0 | |
assumeyes=1 | |
syslog_ident=mock | |
syslog_device= | |
# grub/syslinux on x86_64 need glibc-devel.i386 which pulls in glibc.i386, need to exclude all | |
# .i?86 packages except these. | |
#exclude=[0-9A-Za-fh-z]*.i?86 g[0-9A-Za-km-z]*.i?86 gl[0-9A-Za-hj-z]*.i?86 gli[0-9A-Zac-z]*.i?86 glib[0-9A-Za-bd-z]*.i?86 | |
# The above is not needed anymore with yum multilib policy of "best" which is the default in Fedora. | |
# repos | |
[fedora] | |
name=fedora | |
mirrorlist=http://mirrors.fedoraproject.org/mirrorlist?repo=rawhide&arch=x86_64 | |
failovermethod=priority | |
[boxgrinder] | |
name=boxgrinder | |
baseurl=file:///home/goldmann/git/mock/RPMS # CHANGE THIS | |
cost=10 | |
[local] | |
name=local | |
baseurl=http://kojipkgs.fedoraproject.org/repos/dist-rawhide/latest/x86_64/ | |
cost=2000 | |
enabled=0 | |
""" |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
require 'rbconfig' | |
require 'fileutils' | |
specs = [ | |
"boxgrinder-core/rubygem-boxgrinder-core.spec", | |
"boxgrinder-build/rubygem-boxgrinder-build.spec", | |
"boxgrinder-build-plugins/os/rpm-based/rubygem-boxgrinder-build-rpm-based-os-plugin.spec", | |
"boxgrinder-build-plugins/os/rhel/rubygem-boxgrinder-build-rhel-os-plugin.spec", | |
"boxgrinder-build-plugins/os/centos/rubygem-boxgrinder-build-centos-os-plugin.spec", | |
"boxgrinder-build-plugins/os/fedora/rubygem-boxgrinder-build-fedora-os-plugin.spec", | |
"boxgrinder-build-plugins/platform/vmware/rubygem-boxgrinder-build-vmware-platform-plugin.spec", | |
"boxgrinder-build-plugins/platform/ec2/rubygem-boxgrinder-build-ec2-platform-plugin.spec", | |
"boxgrinder-build-plugins/delivery/s3/rubygem-boxgrinder-build-s3-delivery-plugin.spec", | |
"boxgrinder-build-plugins/delivery/ebs/rubygem-boxgrinder-build-ebs-delivery-plugin.spec", | |
"boxgrinder-build-plugins/delivery/local/rubygem-boxgrinder-build-local-delivery-plugin.spec", | |
"boxgrinder-build-plugins/delivery/sftp/rubygem-boxgrinder-build-sftp-delivery-plugin.spec" | |
] | |
configdir = "#{ENV['HOME']}/mock" | |
resultdir = "#{configdir}/output" | |
rpmsdir = "#{resultdir}/RPMS" | |
srpmsdir = "#{resultdir}/SRPMS" | |
target = 'fedora' | |
version = 'rawhide' | |
arch = RbConfig::CONFIG['host_cpu'] | |
specs.each do |spec| | |
rubygem = File.basename(spec, ".spec") | |
rpm_version = `rpm --specfile #{spec} -q --qf '%{Version}\\n' 2> /dev/null`.split("\n").first | |
desc "Build Gem for #{rubygem}" | |
task "gem:#{rubygem}" do | |
Dir.chdir(File.dirname(spec)) do | |
system "rake clean manifest gem" | |
exit 1 unless $? == 0 | |
end | |
end | |
desc "Build SRPM for #{rubygem}" | |
task "srpm:#{rubygem}" => ["gem:#{rubygem}"] do | |
# Remove previous SRPM's for this version | |
FileUtils.rm_rf Dir.glob("#{srpmsdir}/#{rubygem}-#{rpm_version}-*.rpm"), :verbose => true | |
cmd = "mock -r #{target}-#{version}-#{arch} --buildsrpm --sources #{File.dirname(spec)}/pkg/ --spec #{spec} --resultdir #{srpmsdir}" | |
puts "BUILDING SRPM #{File.basename(spec, ".spec")} with '#{cmd}'" | |
system cmd | |
exit 1 unless $? == 0 | |
puts "UPDATING local SRPM boxgrinder repository..." | |
system "createrepo #{srpmsdir}" | |
exit 1 unless $? == 0 | |
end | |
desc "Build RPM for #{rubygem}" | |
task "rpm:#{rubygem}" => ["srpm:#{rubygem}"] do | |
# Remove previous RPM's for this version | |
FileUtils.rm_rf Dir.glob("#{rpmsdir}/#{rubygem}-#{rpm_version}-*.rpm"), :verbose => true | |
cmd = "mock --configdir=#{configdir} -r #{target}-#{version}-#{arch} --rebuild #{srpmsdir}/#{rubygem}-#{rpm_version}-*.rpm --resultdir #{rpmsdir}" | |
puts "BUILDING RPM #{rubygem}: '#{cmd}'" | |
system cmd | |
exit 1 unless $? == 0 | |
# Remove SRPMs from RPMs directory | |
FileUtils.rm_rf Dir.glob("#{rpmsdir}/*.src.rpm"), :verbose => true | |
puts "UPDATING local RPM boxgrinder repository..." | |
system "createrepo #{rpmsdir}" | |
exit 1 unless $? == 0 | |
end | |
end | |
task "srpm:clean" do | |
FileUtils.rm_rf(srpmsdir, :verbose => true) | |
end | |
task "rpm:clean" do | |
FileUtils.rm_rf(rpmsdir, :verbose => true) | |
end | |
task "rpm:init_repo" do | |
FileUtils.mkdir_p rpmsdir, :verbose => true | |
system "createrepo #{rpmsdir}" | |
exit 1 unless $? == 0 | |
end | |
desc "Build all SRPMs" | |
task "srpm:all" => (["srpm:clean"] << specs.collect { |spec| "srpm:#{File.basename(spec, ".spec")}" }).flatten | |
desc "Build all RPMs" | |
task "rpm:all" => (["rpm:clean", "rpm:init_repo"] << specs.collect { |spec| "rpm:#{File.basename(spec, ".spec")}" }).flatten |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
rake srpm:all rpm:all |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment