File portus.spec of Package portus.2625

#
# spec file for package portus
#
# Copyright (c) 2016 SUSE LINUX Products 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:           portus

# When you release a new version, set Version and branch accordingly.
# For example:
# Version:        2.0.5
# %define branch 1.0.0

Version:        2.0.5
%define branch 2.0.5
Release:        0.0.1
License:        Apache-2.0
Summary:        Authorization service and fronted for Docker registry (v2)
Url:            https://github.com/SUSE/Portus
Source:        %{branch}.tar.gz
Group:          System/Management
%define portusdir /srv/Portus

Patch0: version-git.patch

Requires:       ruby >= 2.1
Requires:       timezone
Requires:       net-tools
%if 0%{?suse_version} >= 1210
BuildRequires: systemd-rpm-macros
%endif
BuildRequires:  fdupes
BuildRequires:  ruby-macros >= 5
Requires:       rubygem-passenger-apache2
%{?systemd_requires}
Provides:       Portus = %{version}
Obsoletes:      Portus < %{version}
# Portus-20151120162040 was accidentaly released when it should have been Portus-2.0
# This is the reason why we are obsoleting it
Obsoletes:      Portus = 20151120162040
# javascript engine to build assets
BuildRequires:  nodejs

%define rb_build_versions %{rb_default_ruby}
BuildRequires:  %{rubydevel}
BuildRequires:  %{rubygem gem2rpm}
BuildRequires:  %{rubygem bundler} >= 1.3.0


BuildRequires: %{rubygem actionmailer} = 4.2.2

BuildRequires: %{rubygem actionpack} = 4.2.2

BuildRequires: %{rubygem actionview} = 4.2.2

BuildRequires: %{rubygem activejob} = 4.2.2

BuildRequires: %{rubygem activemodel} = 4.2.2

BuildRequires: %{rubygem active_model_serializers} = 0.9.0

BuildRequires: %{rubygem activerecord} = 4.2.2

BuildRequires: %{rubygem active_record_union} = 1.1.0

BuildRequires: %{rubygem activesupport} = 4.2.2

BuildRequires: %{rubygem arel} = 6.0.0

BuildRequires: %{rubygem autoprefixer-rails} = 5.2.0.1

BuildRequires: %{rubygem base32} = 0.3.2

BuildRequires: %{rubygem bcrypt} = 3.1.10

BuildRequires: %{rubygem bootstrap-sass} = 3.3.5

BuildRequires: %{rubygem builder} = 3.2.2

BuildRequires: %{rubygem coffee-rails} = 4.1.0

BuildRequires: %{rubygem coffee-script} = 2.4.1

BuildRequires: %{rubygem coffee-script-source} = 1.9.1.1

BuildRequires: %{rubygem crono} = 0.9.0

BuildRequires: %{rubygem devise} = 3.5.1

BuildRequires: %{rubygem erubis} = 2.7.0

BuildRequires: %{rubygem execjs} = 2.2.2

BuildRequires: %{rubygem globalid} = 0.3.5

BuildRequires: %{rubygem gravatar_image_tag} = 1.2.0

BuildRequires: %{rubygem hike} = 1.2.3

BuildRequires: %{rubygem i18n} = 0.7.0

BuildRequires: %{rubygem jquery-rails} = 3.1.3

BuildRequires: %{rubygem jquery-turbolinks} = 2.1.0

BuildRequires: %{rubygem json} = 1.8.1

BuildRequires: %{rubygem jwt} = 1.5.0

BuildRequires: %{rubygem kaminari} = 0.16.3

BuildRequires: %{rubygem loofah} = 2.0.2

BuildRequires: %{rubygem mail} = 2.5.4

BuildRequires: %{rubygem mime-types} = 1.25

BuildRequires: %{rubygem mini_portile} = 0.5.2

BuildRequires: %{rubygem minitest} = 5.7.0

BuildRequires: %{rubygem multi_json} = 1.8.2

BuildRequires: %{rubygem mysql2} = 0.3.18
BuildRequires: libmysqlclient-devel
Recommends: mariadb

BuildRequires: %{rubygem net-ldap} = 0.11

BuildRequires: %{rubygem nokogiri} = 1.6.1
BuildRequires: libxml2-devel libxslt-devel

BuildRequires: %{rubygem orm_adapter} = 0.5.0

BuildRequires: %{rubygem polyglot} = 0.3.3

BuildRequires: %{rubygem public_activity} = 1.4.2

BuildRequires: %{rubygem pundit} = 1.0.1

BuildRequires: %{rubygem rack} = 1.6.4

BuildRequires: %{rubygem rack-test} = 0.6.2

BuildRequires: %{rubygem rails} = 4.2.2

BuildRequires: %{rubygem rails-deprecated_sanitizer} = 1.0.3

BuildRequires: %{rubygem rails-dom-testing} = 1.0.6

BuildRequires: %{rubygem rails-html-sanitizer} = 1.0.2

BuildRequires: %{rubygem railties} = 4.2.2

BuildRequires: %{rubygem rake} = 10.3.2

BuildRequires: %{rubygem responders} = 2.1.0

BuildRequires: %{rubygem sass} = 3.4.13

BuildRequires: %{rubygem sass-rails} = 5.0.3

BuildRequires: %{rubygem search_cop} = 1.0.6

BuildRequires: %{rubygem slim} = 2.0.2

BuildRequires: %{rubygem sprockets} = 2.12.3

BuildRequires: %{rubygem sprockets-rails} = 2.3.1

BuildRequires: %{rubygem temple} = 0.6.7

BuildRequires: %{rubygem thor} = 0.18.1

BuildRequires: %{rubygem thread_safe} = 0.3.5

BuildRequires: %{rubygem tilt} = 1.4.1

BuildRequires: %{rubygem treetop} = 1.4.15

BuildRequires: %{rubygem turbolinks} = 2.5.3

BuildRequires: %{rubygem tzinfo} = 1.2.2

BuildRequires: %{rubygem uglifier} = 2.7.2

BuildRequires: %{rubygem warden} = 1.2.3




BuildRoot:      %{_tmppath}/%{name}-%{version}-build

%description
Portus targets version 2 of the Docker registry API. It aims to act both as an authoritzation server and as a user interface for the next generation of the Docker registry.

This package has been built with commit 2.0.5 from branch v2.0 on date Tue, 24 May 2016 11:22:12 +0200

%prep
%setup -q -n Portus-%{branch}
%patch0 -p1

%build

install -d vendor/cache
cp %{_libdir}/ruby/gems/%{rb_ver}/cache/*.gem vendor/cache
export NOKOGIRI_USE_SYSTEM_LIBRARIES=1
export PACKAGING=yes
SKIP_MIGRATION="yes" SECRET_KEY_BASE="assets_precompilation" RAILS_ENV=production bundle exec rake assets:precompile
export IGNORE_ASSETS=yes

# patch landing_page
APPLICATION_CSS=$(find . -name application-*.css 2>/dev/null)
cp $APPLICATION_CSS public/landing.css

# run bundle list to redo the Gemfile.lock
bundle list

# deploy gems
bundle install --retry=3 --local --deployment

# install bundler
gem install --no-rdoc --no-ri --install-dir vendor/bundle/ruby/%{rb_ver}/ vendor/cache/bundler-*.gem

rm -rf vendor/cache

# Remove these files, they are going to be created by portusctl setup
rm config/secrets.yml
rm config/database.yml

%install
install -d %{buildroot}/%{portusdir}

cp -av . %{buildroot}/%{portusdir}

rm -rf %{buildroot}/%{portusdir}/log
mkdir %{buildroot}/%{portusdir}/log
rm -rf %{buildroot}/%{portusdir}/tmp
mkdir %{buildroot}/%{portusdir}/tmp

install -d %{buildroot}/%{_sbindir}
cp packaging/suse/bin/portus_crono %{buildroot}/%{_sbindir}/
cp packaging/suse/bin/portusctl %{buildroot}/%{_sbindir}/
%__install -D -m 444 packaging/suse/conf/portus_crono.service %{buildroot}%{_unitdir}/portus_crono.service


%fdupes %{buildroot}/%{portusdir}

%pre
%service_add_pre portus_crono.service

%post
%service_add_post portus_crono.service
%{restart_on_update apache2}

if [ \! -e "/srv/Portus/config/config-local.yml" ]; then
  # First installation of Portus
  cat %{portusdir}/packaging/suse/README.install
fi

%preun
%service_del_preun portus_crono.service

%postun
%service_del_postun portus_crono.service
%{restart_on_update apache2}

%files
%defattr(-,root,root)
%{portusdir}
%exclude %{portusdir}/spec
%exclude %{portusdir}/vagrant
%exclude %{portusdir}/Vagrantfile
%doc %{portusdir}/README.md
%doc %{portusdir}/CONTRIBUTING.md
%doc %{portusdir}/LICENSE
%defattr(0640, root, www)
%config(noreplace) %{portusdir}/config/environment.rb
%defattr(-, root, www, 1770)
%{portusdir}/log/
%{portusdir}/tmp/
%{portusdir}/db/
%{_sbindir}/portus_crono
%{_sbindir}/portusctl
%{_unitdir}/portus_crono.service

%changelog
openSUSE Build Service is sponsored by