File dice.spec of Package dice
#
# spec file for package dice
#
# Copyright (c) 2015 SUSE LINUX GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
# upon. The license for this file, and modifications and additions to the
# file, is the same license as for the pristine package itself (unless the
# license for the pristine package is not an Open Source License, in which
# case the license is the MIT License). An "Open Source License" is a
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.
# Please submit bugfixes or comments via http://bugs.opensuse.org/
#
Name: dice
Version: 0.7.3
Release: 0
%define mod_name dice
%define mod_full_name %{mod_name}-%{version}
%define rb_build_versions %{rb_default_ruby}
BuildRoot: %{_tmppath}/%{name}-%{version}-build
BuildRequires: %{rubygem abstract_method >= 1.2.1}
BuildRequires: %{rubygem bundler}
BuildRequires: %{rubygem cheetah >= 0.4.0}
BuildRequires: %{rubygem gem2rpm}
BuildRequires: %{rubygem gli >= 2.11.0}
BuildRequires: %{rubygem inifile >= 2.0.2}
BuildRequires: %{rubygem json >= 1.8.0}
BuildRequires: %{rubygem rice}
BuildRequires: %{ruby}
BuildRequires: fdupes
BuildRequires: gcc-c++
BuildRequires: ruby-devel
BuildRequires: ruby-macros >= 5
BuildRequires: update-alternatives
# Disable autogenerating "Requires:" headers for bundled gems.
%define __requires_exclude ^rubygem
Requires: ruby >= 2.0
Requires: ruby-solv
Url: http://www.suse.com
Source0: %{mod_full_name}.gem
Source1: %{mod_name}-rpmlintrc
Source2: gem2rpm.yml
Summary: Light Weight Image Build System
License: GPL-3.0
Group: Development/Languages/Ruby
%description
Given there is the need to build a kiwi appliance for a customer,
one wants to keep track of the updates from the distribution and
software vendors according to the components used in the appliance.
This leads to a regular rebuild of that appliance which should be
automatically triggered whenever the repository which stores all
the software packages has changed. With Dice there is a tool which
automatically builds all appliances stored in a directory
%prep
%build
%install
# Install the Ruby source
%gem_install \
--symlink-binaries \
--doc-files="COPYING key" \
-f
# Change to ruby gem dir
pushd %{buildroot}%{_libdir}/ruby/gems/%{rb_ver}/gems/%{mod_full_name}
# Build CPP extensions
( cd lib/semaphore && ruby ./extconf.rb && make && rm -f semaphore.o )
# Bundle dependencies
cat > Gemfile <<EOT
gem "cheetah", ">= 0.4.0"
gem "gli", ">= 2.11.0"
gem "abstract_method", ">= 1.2.1"
%if %suse_version <= 1310
gem "json", ">= 1.8.0"
%endif
gem "inifile", ">= 2.0.2"
EOT
mkdir -p vendor/cache
cp %{_libdir}/ruby/gems/%{rb_ver}/cache/*.gem vendor/cache
bundle install --standalone --local
rm -rf vendor .bundle Gemfile Gemfile.lock
# Delete devel source
( cd lib/semaphore && rm -f semaphore.cpp Makefile extconf.rb )
# Move bash completion
mkdir -p %{buildroot}/etc/bash_completion.d
mv completion/dice.sh %{buildroot}/etc/bash_completion.d
popd
# Adapt the binary
# Here we do a surgery on the binary to actually load the bundled gems.
# This is a hack, but it can't be done anywhere else because the binary
# is generated during gem install.
sed -i '/gem/i \
Gem.path.unshift("%{_libdir}/ruby/gems/%{rb_ver}/gems/%{mod_full_name}/bundle/ruby/%{rb_ver}")
' %{buildroot}/usr/bin/dice.ruby*-%{version}
# Convert duplicate files to symlinks
%fdupes -s %{buildroot}
%gem_packages
%config /etc/bash_completion.d/dice.sh
%changelog