Skip to content

Commit

Permalink
Merge branch 'master' into total_test_coverage
Browse files Browse the repository at this point in the history
  • Loading branch information
ikapelyukhin committed Oct 26, 2017
2 parents b8c45a9 + f7babf6 commit 0165e7e
Show file tree
Hide file tree
Showing 9 changed files with 107 additions and 41 deletions.
2 changes: 1 addition & 1 deletion .ruby-version
@@ -1 +1 @@
ruby-2.4.1
ruby-2.4
5 changes: 4 additions & 1 deletion Makefile
@@ -1,6 +1,5 @@
NAME = rmt
VERSION = 0.0.1
WWW_BASE = /srv/www

all:
@:
Expand Down Expand Up @@ -47,5 +46,9 @@ dist: clean man
cd $(NAME)-$(VERSION) && bundler package --all
rm -rf $(NAME)-$(VERSION)/vendor/bundle/

# bundler hacks for ruby2.5
sed -i '/source .*rubygems\.org/d' $(NAME)-$(VERSION)/Gemfile
sed -i '/remote: .*rubygems\.org/d' $(NAME)-$(VERSION)/Gemfile.lock

tar cfvj package/$(NAME)-$(VERSION).tar.bz2 $(NAME)-$(VERSION)/
rm -rf $(NAME)-$(VERSION)/
19 changes: 10 additions & 9 deletions package/rmt-rpmlintrc
@@ -1,11 +1,12 @@
addFilter("non-standard-uid")
addFilter("script-without-shebang")
addFilter("hidden-file-or-dir /srv/www/rmt/vendor/bundle/*")
addFilter("unexpanded-macro /srv/www/rmt/vendor/bundle/*")
addFilter("zero-length /srv/www/rmt/vendor/bundle/*")
addFilter("wrong-script-end-of-line-encoding /srv/www/rmt/vendor/bundle/*")
addFilter("hidden-file-or-dir /srv/www/rmt/.bundle")
addFilter("file-not-in-%lang /srv/www/rmt/vendor/bundle/*")
addFilter("no-soname /srv/www/rmt/vendor/bundle/*")
addFilter("non-executable-script /srv/www/rmt/vendor/bundle/*")
addFilter("E: env-script-interpreter .* /srv/www/rmt/vendor/bundle/*")
addFilter("hidden-file-or-dir /usr/share/rmt/*")
addFilter("hidden-file-or-dir /usr/lib64/rmt/vendor/bundle/*")
addFilter("unexpanded-macro /usr/lib64/rmt/vendor/bundle/*")
addFilter("zero-length /usr/lib64/rmt/vendor/bundle/*")
addFilter("wrong-script-end-of-line-encoding /usr/lib64/rmt/vendor/bundle/*")
addFilter("hidden-file-or-dir /usr/lib64/rmt/.bundle")
addFilter("file-not-in-%lang /usr/lib64/rmt/vendor/bundle/*")
addFilter("no-soname /usr/lib64/rmt/vendor/bundle/*")
addFilter("non-executable-script /usr/lib64/rmt/vendor/bundle/*")
addFilter("E: env-script-interpreter .* /usr/lib64/rmt/vendor/bundle/*")
2 changes: 1 addition & 1 deletion package/rmt.conf
Expand Up @@ -13,7 +13,7 @@ scc:
password:

mirroring:
base_dir: /srv/www/rmt/public/repo/
base_dir: /usr/share/rmt/public/repo/
mirror_url_prefix: /repo/
mirror_src: false
verify_rpm_checksums: false
Expand Down
92 changes: 68 additions & 24 deletions package/rmt.spec
Expand Up @@ -15,8 +15,13 @@
# Please submit bugfixes or comments via http://bugs.opensuse.org/
#

%if (0%{?suse_version} > 0 && 0%{?suse_version} <= 1320) || (0%{?sle_version} > 0 && 0%{?sle_version} <= 120300)
%define use_ruby_2_4 1
%endif

%define www_base /srv/www/rmt/
%define app_dir /usr/share/rmt/
%define lib_dir %{_libdir}/rmt/
%define data_dir /var/lib/rmt/
%define systemd_dir %{_prefix}/lib/systemd/system/
%define rmt_user _rmt
%define rmt_group nginx
Expand All @@ -33,19 +38,31 @@ Source2: rmt.conf
Source3: rmt.8.gz
Patch0: use-ruby-2.4-in-rmt-cli.patch
Patch1: use-ruby-2.4-in-rails.patch
Patch2: use-ruby-2.5-in-rmt-cli.patch
Patch3: use-ruby-2.5-in-rails.patch
BuildRequires: gcc
BuildRequires: libcurl-devel
BuildRequires: libffi-devel
BuildRequires: libmysqlclient-devel
BuildRequires: libxml2-devel
BuildRequires: libxslt-devel
%if 0%{?use_ruby_2_4}
BuildRequires: ruby2.4
BuildRequires: ruby2.4-devel
BuildRequires: ruby2.4-rubygem-bundler
%else
BuildRequires: ruby2.5
BuildRequires: ruby2.5-devel
BuildRequires: ruby2.5-stdlib
%endif
BuildRequires: fdupes
Requires: mariadb
%if 0%{?use_ruby_2_4}
Requires(post): ruby2.4
Requires(post): ruby2.4-rubygem-bundler
%else
Requires(post): ruby2.5
%endif
Requires(post): timezone
Requires(post): util-linux
Requires(post): shadow
Expand All @@ -67,17 +84,39 @@ RMT superseeds the main functionality of SMT in SLES 15.
cp -p %SOURCE2 .

%setup -q

%if 0%{?use_ruby_2_4}
%patch0 -p1
%patch1 -p1
%else
%patch2 -p1
%patch3 -p1
%endif

%build
%if 0%{?use_ruby_2_4}
bundle.ruby2.4 install %{?jobs:--jobs %jobs} --without test development --deployment --standalone
%else
bundle.ruby.ruby2.5 install %{?jobs:--jobs %jobs} --without test development --deployment --standalone
%endif


%install
mkdir -p %{buildroot}%{www_base}
cp -ar . %{buildroot}%{www_base}
mkdir -p %{buildroot}%{data_dir}
mkdir -p %{buildroot}%{lib_dir}
mkdir -p %{buildroot}%{app_dir}

mv log %{buildroot}%{data_dir}
mv tmp %{buildroot}%{data_dir}
mv public %{buildroot}%{data_dir}
mv vendor %{buildroot}%{lib_dir}

cp -ar . %{buildroot}%{app_dir}
ln -s %{data_dir}/log %{buildroot}%{app_dir}/log
ln -s %{data_dir}/tmp %{buildroot}%{app_dir}/tmp
ln -s %{data_dir}/public %{buildroot}%{app_dir}/public
mkdir -p %{buildroot}%{_bindir}
ln -s %{www_base}/bin/rmt-cli %{buildroot}%{_bindir}
ln -s %{app_dir}/bin/rmt-cli %{buildroot}%{_bindir}
install -D -m 644 %_sourcedir/rmt.8.gz %{buildroot}%_mandir/man8/rmt.8.gz

# systemd
Expand All @@ -92,27 +131,31 @@ ln -fs %{_sbindir}/service %{buildroot}%{_sbindir}/rcrmt-migration
mkdir -p %{buildroot}%{_sysconfdir}
mv %{_builddir}/rmt.conf %{buildroot}%{_sysconfdir}/rmt.conf

sed -i '/BUNDLE_PATH: .*/cBUNDLE_PATH: "\/usr\/lib64\/rmt\/vendor\/bundle\/"' %{buildroot}%{app_dir}/.bundle/config

# cleanup unneeded files
rm -r %{buildroot}%{www_base}/service
rm -r %{buildroot}%{www_base}/vendor/bundle/ruby/2.4.0/cache
find %{buildroot}%{www_base} "(" -name "*.c" -o -name "*.h" -o -name .keep ")" -delete
rm -rf %{buildroot}%{www_base}/vendor/cache
rm -rf %{buildroot}%{www_base}/vendor/bundle/ruby/*/gems/*/doc
rm -rf %{buildroot}%{www_base}/vendor/bundle/ruby/*/gems/*/examples
rm -rf %{buildroot}%{www_base}/vendor/bundle/ruby/*/gems/*/samples
rm -rf %{buildroot}%{www_base}/vendor/bundle/ruby/*/gems/*/test
rm -rf %{buildroot}%{www_base}/vendor/bundle/ruby/*/gems/*/ports
rm -rf %{buildroot}%{www_base}/vendor/bundle/ruby/*/gems/*/ext
rm -rf %{buildroot}%{www_base}/vendor/bundle/ruby/*/gems/*/bin
rm -rf %{buildroot}%{www_base}/vendor/bundle/ruby/*/gems/*/spec
rm -rf %{buildroot}%{www_base}/vendor/bundle/ruby/*/gems/*/.gitignore

%fdupes %{buildroot}/%{_prefix}
%fdupes %{buildroot}/srv
rm -r %{buildroot}%{app_dir}/service
find %{buildroot}%{lib_dir} "(" -name "*.c" -o -name "*.h" -o -name .keep ")" -delete
find %{buildroot}%{app_dir} -name .keep -delete
find %{buildroot}%{data_dir} -name .keep -delete
rm -r %{buildroot}%{lib_dir}/vendor/bundle/ruby/2.*.0/cache
rm -rf %{buildroot}%{lib_dir}/vendor/cache
rm -rf %{buildroot}%{lib_dir}/vendor/bundle/ruby/*/gems/*/doc
rm -rf %{buildroot}%{lib_dir}/vendor/bundle/ruby/*/gems/*/examples
rm -rf %{buildroot}%{lib_dir}/vendor/bundle/ruby/*/gems/*/samples
rm -rf %{buildroot}%{lib_dir}/vendor/bundle/ruby/*/gems/*/test
rm -rf %{buildroot}%{lib_dir}/vendor/bundle/ruby/*/gems/*/ports
rm -rf %{buildroot}%{lib_dir}/vendor/bundle/ruby/*/gems/*/ext
rm -rf %{buildroot}%{lib_dir}/vendor/bundle/ruby/*/gems/*/bin
rm -rf %{buildroot}%{lib_dir}/vendor/bundle/ruby/*/gems/*/spec
rm -rf %{buildroot}%{lib_dir}/vendor/bundle/ruby/*/gems/*/.gitignore

%fdupes %{buildroot}/%{lib_dir}

%files
%defattr(-,root,root)
%attr(-,%{rmt_user},%{rmt_group}) %{www_base}
%attr(-,%{rmt_user},%{rmt_group}) %{app_dir}
%attr(-,%{rmt_user},%{rmt_group}) %{data_dir}
%config(noreplace) %{_sysconfdir}/rmt.conf
%doc %{_mandir}/man8/rmt.8.gz
%{_bindir}/rmt-cli
Expand All @@ -121,18 +164,19 @@ rm -rf %{buildroot}%{www_base}/vendor/bundle/ruby/*/gems/*/.gitignore
%{_libexecdir}/systemd/system/rmt.target
%{_libexecdir}/systemd/system/rmt.service
%{_libexecdir}/systemd/system/rmt-migration.service
%{_libdir}/rmt

%pre
getent group %{rmt_group} >/dev/null || %{_sbindir}/groupadd -r %{rmt_group}
getent passwd %{rmt_user} >/dev/null || \
%{_sbindir}/useradd -g %{rmt_group} -s /bin/false -r \
-c "user for RMT" -d %{www_base} %{rmt_user}
-c "user for RMT" -d %{app_dir} %{rmt_user}
%service_add_pre rmt.target rmt.service rmt-migration.service

%post
%service_add_post rmt.target rmt.service rmt-migration.service
cd /srv/www/rmt && runuser -u %{rmt_user} -g %{rmt_group} -- bin/rails secrets:setup >/dev/null
cd /srv/www/rmt && runuser -u %{rmt_user} -g %{rmt_group} -- bin/rails runner -e production "Rails::Secrets.write({'production' => {'secret_key_base' => SecureRandom.hex(64)}}.to_yaml)"
cd /usr/share/rmt && runuser -u %{rmt_user} -g %{rmt_group} -- bin/rails secrets:setup >/dev/null
cd /usr/share/rmt && runuser -u %{rmt_user} -g %{rmt_group} -- bin/rails runner -e production "Rails::Secrets.write({'production' => {'secret_key_base' => SecureRandom.hex(64)}}.to_yaml)"

%preun
%service_del_preun rmt.target rmt.service rmt-migration.service
Expand Down
10 changes: 10 additions & 0 deletions package/use-ruby-2.5-in-rails.patch
@@ -0,0 +1,10 @@
diff --git a/bin/rails b/bin/rails
index 5badb2f..2936967 100755
--- a/bin/rails
+++ b/bin/rails
@@ -1,4 +1,4 @@
-#!/usr/bin/env ruby
+#!/usr/bin/ruby.ruby2.5
begin
load File.expand_path('../spring', __FILE__)
rescue LoadError => e
8 changes: 8 additions & 0 deletions package/use-ruby-2.5-in-rmt-cli.patch
@@ -0,0 +1,8 @@
diff --git a/bin/rmt-cli b/bin/rmt-cli
index 8e9c41d..16481f5 100755
--- a/bin/rmt-cli
+++ b/bin/rmt-cli
@@ -1,2 +1,2 @@
-#!/usr/bin/env ruby
+#!/usr/bin/ruby.ruby2.5

4 changes: 2 additions & 2 deletions service/rmt-migration.service
Expand Up @@ -7,8 +7,8 @@ Before=rmt.service
[Service]
Type=oneshot
User=_rmt
WorkingDirectory=/srv/www/rmt
ExecStart=/srv/www/rmt/bin/rails db:create db:migrate RAILS_ENV=production
WorkingDirectory=/usr/share/rmt
ExecStart=/usr/share/rmt/bin/rails db:create db:migrate RAILS_ENV=production

[Install]
WantedBy=rmt.target
6 changes: 3 additions & 3 deletions service/rmt.service
Expand Up @@ -7,10 +7,10 @@ After=rmt-migration.service
[Service]
Type=forking
User=_rmt
WorkingDirectory=/srv/www/rmt
ExecStart=/srv/www/rmt/bin/rails server -e production --daemon
WorkingDirectory=/usr/share/rmt
ExecStart=/usr/share/rmt/bin/rails server -e production --daemon
ExecStop=/usr/bin/kill -15 $MAINPID
PIDFile=/srv/www/rmt/tmp/pids/server.pid
PIDFile=/usr/share/rmt/tmp/pids/server.pid
Restart=always

[Install]
Expand Down

0 comments on commit 0165e7e

Please sign in to comment.