]> git.pld-linux.org Git - packages/gitlab-ce.git/blobdiff - gitlab-ce.spec
up to 8.12.0
[packages/gitlab-ce.git] / gitlab-ce.spec
index 3d3de9aeb8443c124cc77c4071de41b9ad122b01..3c080e60b3357c062c541b2e18b363c464d93e1d 100644 (file)
 #
 # Conditional build:
 %bcond_with    krb5            # build with kerberos support
-%bcond_without gem_cache       # use local to speedup gem installation
+%bcond_without gem_cache       # use local cache to speedup gem installation
 
 Summary:       A Web interface to create projects and repositories, manage access and do code reviews
 Name:          gitlab-ce
-Version:       8.8.2
-Release:       0.34
+Version:       8.12.0
+Release:       0.74
 License:       MIT
 Group:         Applications/WWW
 # md5 deliberately omitted until this package is useful
@@ -29,13 +29,14 @@ Source4:    gitlab-unicorn.service
 Source5:       gitlab-unicorn.init
 Source6:       gitlab.logrotate
 Source7:       gitlab.tmpfiles.d
-Source8:       gitlab-apache-conf
+Source8:       apache.conf
 Source9:       gitlab-rake.sh
 Source10:      gitconfig
 Source11:      gitlab-ctl.sh
+Source12:      clean-vendor.sh
+Source13:      nginx.conf
 Patch0:                3774.patch
 Patch1:                pld.patch
-Patch2:                bug-14972.patch
 URL:           https://www.gitlab.com/gitlab-ce/
 BuildRequires: cmake
 BuildRequires: gmp-devel
@@ -46,17 +47,19 @@ BuildRequires:      libxml2-devel
 BuildRequires: mysql-devel
 BuildRequires: postgresql-devel
 BuildRequires: rpm-rubyprov
-BuildRequires: rpmbuild(macros) >= 1.228
+BuildRequires: rpmbuild(macros) >= 1.647
 BuildRequires: ruby-bundler
 BuildRequires: ruby-devel >= 1:2.1.0
 BuildRequires: zlib-devel
 Requires(post,preun):  /sbin/chkconfig
 Requires:      apache-base
 Requires:      git-core >= 2.7.4
-Requires:      gitlab-shell >= 2.7.2
+Requires:      gitlab-shell >= 3.4.0
+Requires:      gitlab-workhorse >= 0.7.11
 Requires:      nodejs
 Requires:      rc-scripts
 Requires:      ruby-bundler
+Requires:      systemd-units >= 0.38
 Suggests:      mysql
 Suggests:      redis-server
 Obsoletes:     gitlab <= 8.1.4
@@ -66,7 +69,9 @@ BuildRoot:    %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
 
 %define        uname git
 %define gname git
-%define homedir %{_localstatedir}/lib/gitlab
+%define appdir %{_prefix}/lib/gitlab
+%define vardir  %{_localstatedir}/lib/gitlab
+%define cachedir  %{_localstatedir}/cache/gitlab
 
 %description
 GitLab Community Edition (CE) is open source software to collaborate
@@ -74,39 +79,31 @@ on code. Create projects and repositories, manage access and do code
 reviews. GitLab CE is on-premises software that you can install and
 use on your server(s).
 
+%package doc
+Summary:       Manual for GitLab
+Summary(fr.UTF-8):     Documentation pour GitLab
+Summary(it.UTF-8):     Documentazione di GitLab
+Summary(pl.UTF-8):     PodrÄ™cznik dla GitLab
+Group:         Documentation
+# noarch subpackages only when building with rpm5
+%if "%{_rpmversion}" >= "5"
+BuildArch:     noarch
+%endif
+
+%description doc
+Documentation for GitLab.
+
 %prep
 %setup -qn gitlabhq-%{version}
 mv config/gitlab.yml.example config/gitlab.yml
 mv config/unicorn.rb.example config/unicorn.rb
-%patch0 -p1
+#%patch0 -p1
 %patch1 -p1
-%patch2 -p1
 
 # use mysql for now
 mv config/database.yml.mysql config/database.yml
 
 find -name .gitkeep | xargs rm
-rm -r docker
-rm -r features
-rm -r lib/support/{deploy,init.d}
-rm -r scripts
-rm -r spec
-rm .csscomb.json
-rm .flayignore
-rm .foreman
-rm .gitattributes
-rm .gitignore
-rm .gitlab-ci.yml
-rm .hound.yml
-rm .pkgr.yml
-rm .rspec
-rm .rubocop.yml
-rm .scss-lint.yml
-rm .simplecov
-rm .teatro.yml
-rm Procfile
-rm bin/pkgr_before_precompile.sh
-rm docker-compose.yml
 
 %build
 %if %{with gem_cache}
@@ -115,13 +112,25 @@ install -d vendor/bundle
 test -d "$cachedir" && cp -aul "$cachedir"/* vendor/bundle
 %endif
 
+# enable-gems to workaround https://github.com/ruby-prof/ruby-prof/pull/191
+# until https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/6026 is merged
+RUBYOPT=--enable-gems \
 bundle install %{_smp_mflags} \
        --verbose \
        --deployment \
        --without development test aws %{!?with_krb5:kerberos}
 
+# install newer rugged to fix diff view showing garbage
+# https://gitlab.com/gitlab-org/gitlab-ce/issues/14972
+v=0.25.0b7
+test -d vendor/bundle/ruby/gems/rugged-$v || \
+bundle exec gem install -v $v rugged --no-rdoc --no-ri --verbose
+
+# precompile assets
+# use modified config so it doesn't croak
 cp -p config/gitlab.yml{,.production}
 sed -i -e '/secret_file:/d' config/gitlab.yml
+sed -i -e 's#/var/lib/gitlab/repositories/#./#' config/gitlab.yml
 bundle exec rake RAILS_ENV=production assets:clean assets:precompile USE_DB=false
 mv -f config/gitlab.yml{.production,}
 
@@ -130,8 +139,7 @@ chmod a-x vendor/bundle/ruby/gems/unicorn-*/bin/unicorn*
 
 # remove secrets, log and cache that assets compile initialized
 rm .gitlab_shell_secret
-rm .secret
-rm config/secrets.yml
+cp -f config/secrets.yml{.example,}
 rm log/production.log
 rm -r tmp/cache/*
 
@@ -143,12 +151,13 @@ cp -aul vendor/bundle/* "$cachedir"
 %install
 rm -rf $RPM_BUILD_ROOT
 install -d \
-       $RPM_BUILD_ROOT%{homedir}/www \
-       $RPM_BUILD_ROOT%{homedir}/public/{assets,uploads} \
-       $RPM_BUILD_ROOT%{homedir}/satellites \
-       $RPM_BUILD_ROOT%{homedir}/tmp/{cache/assets,sessions,backups} \
+       $RPM_BUILD_ROOT%{appdir}/public/{assets,uploads} \
+       $RPM_BUILD_ROOT%{appdir}/satellites \
+       $RPM_BUILD_ROOT%{appdir}/tmp/{cache/assets,sessions,backups} \
        $RPM_BUILD_ROOT%{_sysconfdir}/gitlab \
        $RPM_BUILD_ROOT%{_docdir}/gitlab \
+       $RPM_BUILD_ROOT%{vardir}/public \
+       $RPM_BUILD_ROOT%{cachedir}/tmp \
        $RPM_BUILD_ROOT%{_localstatedir}/{run,log}/gitlab
 
 # test if we can hardlink -- %{_builddir} and $RPM_BUILD_ROOT on same partition
@@ -157,33 +166,56 @@ if cp -al VERSION $RPM_BUILD_ROOT/VERSION 2>/dev/null; then
        rm -f $RPM_BUILD_ROOT/VERSION
 fi
 
-cp -a$l . $RPM_BUILD_ROOT%{homedir}
+cp -a$l . $RPM_BUILD_ROOT%{appdir}
 
-# rpm cruft from repackaging
-rm -f $RPM_BUILD_ROOT%{homedir}/debug*.list
+# cleanup unneccessary cruft (gem build files, etc)
+sh -x %{SOURCE12} $RPM_BUILD_ROOT%{appdir}
+
+# replace the contents, yet leave it believe it has proper version installed (for gem dependencies)
+v=0.25.0b7
+ov=0.24.0
+rm -r $RPM_BUILD_ROOT%{appdir}/vendor/bundle/ruby/extensions/%{_arch}-linux/rugged-$ov
+mv $RPM_BUILD_ROOT%{appdir}/vendor/bundle/ruby/extensions/%{_arch}-linux/rugged-{$v,$ov}
+rm -r $RPM_BUILD_ROOT%{appdir}/vendor/bundle/ruby/gems/rugged-$ov
+mv $RPM_BUILD_ROOT%{appdir}/vendor/bundle/ruby/gems/rugged-{$v,$ov}
 
-# nuke tests
-chmod -R u+w $RPM_BUILD_ROOT%{homedir}/vendor/bundle/ruby/gems/*/test
-rm -r $RPM_BUILD_ROOT%{homedir}/vendor/bundle/ruby/gems/*/test
+# rpm cruft from repackaging
+rm -f $RPM_BUILD_ROOT%{appdir}/debug*.list
 
 # Creating links
-rmdir $RPM_BUILD_ROOT%{homedir}/{log,tmp/{pids,sockets}}
-ln -s %{_localstatedir}/run/gitlab $RPM_BUILD_ROOT%{homedir}/tmp/pids
-ln -s %{_localstatedir}/run/gitlab $RPM_BUILD_ROOT%{homedir}/tmp/sockets
-ln -s %{_localstatedir}/log/gitlab $RPM_BUILD_ROOT%{homedir}/log
+rmdir $RPM_BUILD_ROOT%{appdir}/{log,tmp/{pids,sockets}}
+ln -s %{_localstatedir}/run/gitlab $RPM_BUILD_ROOT%{appdir}/tmp/pids
+ln -s %{_localstatedir}/run/gitlab $RPM_BUILD_ROOT%{appdir}/tmp/sockets
+ln -s %{_localstatedir}/log/gitlab $RPM_BUILD_ROOT%{appdir}/log
 
-move_config() {
+# move $source to $target leaving symlink in original path
+move_symlink() {
        local source=$1 target=$2
        mv $RPM_BUILD_ROOT$source $RPM_BUILD_ROOT$target
        ln -s $target $RPM_BUILD_ROOT$source
 }
 
 # Install config files
-for f in gitlab.yml unicorn.rb database.yml; do
-       move_config %{homedir}/config/$f %{_sysconfdir}/gitlab/$f
+for f in gitlab.yml unicorn.rb database.yml secrets.yml; do
+       move_symlink %{appdir}/config/$f %{_sysconfdir}/gitlab/$f
 done
+move_symlink %{appdir}/.gitlab_workhorse_secret %{_sysconfdir}/gitlab/.gitlab_workhorse_secret
+
+cp -p %{SOURCE10} $RPM_BUILD_ROOT%{_sysconfdir}/gitlab/.gitconfig
+ln -s %{_sysconfdir}/gitlab/.gitconfig $RPM_BUILD_ROOT%{vardir}/.gitconfig
+
 touch $RPM_BUILD_ROOT%{_sysconfdir}/gitlab/skip-auto-migrations
 
+# relocate to /etc as it's updated runtime, see 77cff54
+move_symlink %{appdir}/db/schema.rb %{_sysconfdir}/gitlab/schema.rb
+
+for a in satellites builds shared tmp public/{uploads,assets}; do
+       move_symlink %{appdir}/$a %{vardir}/$a
+done
+
+move_symlink %{vardir}/tmp/cache %{cachedir}/cache
+move_symlink %{vardir}/shared/artifacts/tmp/cache %{cachedir}/artifacts
+
 install -d $RPM_BUILD_ROOT{%{_sbindir},%{systemdunitdir},%{systemdtmpfilesdir}} \
        $RPM_BUILD_ROOT/etc/{logrotate.d,rc.d/init.d,httpd/webapps.d}
 
@@ -196,15 +228,14 @@ cp -p %{SOURCE1} $RPM_BUILD_ROOT%{systemdunitdir}/gitlab.target
 cp -p %{SOURCE7} $RPM_BUILD_ROOT%{systemdtmpfilesdir}/gitlab.conf
 cp -p %{SOURCE6} $RPM_BUILD_ROOT/etc/logrotate.d/gitlab.logrotate
 cp -p %{SOURCE8} $RPM_BUILD_ROOT/etc/httpd/webapps.d/gitlab.conf
-cp -p %{SOURCE10} $RPM_BUILD_ROOT%{homedir}/.gitconfig
 install -p %{SOURCE9} $RPM_BUILD_ROOT%{_sbindir}/gitlab-rake
 install -p %{SOURCE11} $RPM_BUILD_ROOT%{_sbindir}/gitlab-ctl
 
 %clean
-rm -rf "$RPM_BUILD_ROOT"
+rm -rf $RPM_BUILD_ROOT
 
 %pre
-if [ "$2" = "2" ]; then
+if [ "$1" = "2" ]; then
        # Looks like an RPM upgrade
        gitlab-ctl preinst
 fi
@@ -214,26 +245,16 @@ fi
 /sbin/chkconfig --add gitlab-unicorn
 %service gitlab-sidekiq restart
 %service gitlab-unicorn restart
+%systemd_post gitlab-sidekiq.service gitlab-unicorn.service
 
-if [ $1 -ge 1 ]; then
-       systemctl -q daemon-reload
-       systemd-tmpfiles --create %{systemdtmpfilesdir}/gitlab.conf
-       [ -e %{_localstatedir}/lock/subsys/httpd ] && service httpd reload || :
-fi
-if [ $1 -eq 1 ]; then
-       systemctl -q enable gitlab-unicorn
-       systemctl -q enable gitlab-sidekiq
-       systemctl -q enable gitlab.target
-       systemctl -q start gitlab-unicorn
-       systemctl -q start gitlab-sidekiq
-       systemctl -q start gitlab.target
-       echo "Create and configure database in %{_sysconfdir}/gitlab/database.yml"
-       echo "Then run 'sudo -u gitlab bundle exec rake gitlab:setup RAILS_ENV=production'"
-       echo
-else
-       systemctl -q try-restart gitlab-unicorn || :
-       systemctl -q try-start gitlab-sidekiq || :
-fi
+%banner -e -o %{name} << EOF
+
+Create and configure database in %{_sysconfdir}/gitlab/database.yml
+
+Then run:
+  # gitlab-rake gitlab:setup
+
+EOF
 
 %posttrans
 if [ "$1" = "0" ]; then
@@ -248,12 +269,14 @@ if [ "$1" = "0" ]; then
        /sbin/chkconfig --del gitlab-sidekiq
        /sbin/chkconfig --del gitlab-unicorn
 fi
+%systemd_preun gitlab-sidekiq.service gitlab-unicorn.service
 
 %postun
 if [ $1 -eq 0 ]; then
        %userremove gitlab
        %groupremove gitlab
 fi
+%systemd_reload
 
 %files
 %defattr(644,root,root,755)
@@ -261,8 +284,13 @@ fi
 %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/gitlab/database.yml
 %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/gitlab/gitlab.yml
 %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/gitlab/unicorn.rb
-%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/httpd/webapps.d/gitlab.conf
+%config(noreplace) %verify(not md5 mtime size) %attr(640,%{uname},%{gname}) %{_sysconfdir}/gitlab/schema.rb
+%config(noreplace) %verify(not md5 mtime size) %attr(640,%{uname},%{gname}) %{_sysconfdir}/gitlab/secrets.yml
+%config(noreplace) %verify(not md5 mtime size) %attr(640,%{uname},%{gname}) %{_sysconfdir}/gitlab/.gitconfig
+%config(noreplace) %verify(not md5 mtime size) %attr(640,%{uname},%{gname}) %{_sysconfdir}/gitlab/.gitlab_workhorse_secret
+
 %ghost %{_sysconfdir}/gitlab/skip-auto-migrations
+%config(noreplace) %verify(not md5 mtime size) /etc/httpd/webapps.d/gitlab.conf
 /etc/logrotate.d/gitlab.logrotate
 %attr(754,root,root) /etc/rc.d/init.d/gitlab-sidekiq
 %attr(754,root,root) /etc/rc.d/init.d/gitlab-unicorn
@@ -272,66 +300,70 @@ fi
 %{systemdunitdir}/gitlab-unicorn.service
 %{systemdunitdir}/gitlab.target
 %{systemdtmpfilesdir}/gitlab.conf
-%dir %attr(755,%{uname},%{gname}) %{homedir}
-%dir %attr(640,%{uname},%{gname}) %{homedir}/.gitconfig
-%dir %attr(755,%{uname},%{gname}) %{homedir}/app
-%attr(-,%{uname},%{gname}) %{homedir}/app/*
-%dir %attr(755,%{uname},%{gname}) %{homedir}/bin
-%attr(-,%{uname},%{gname}) %{homedir}/bin/*
-%dir %attr(755,%{uname},%{gname}) %{homedir}/builds
-%dir %attr(755,%{uname},%{gname}) %{homedir}/config
-%attr(-,%{uname},%{gname}) %{homedir}/config/*
-%dir %attr(755,%{uname},%{gname}) %{homedir}/db
-%attr(-,%{uname},%{gname}) %{homedir}/db/*
-%dir %attr(755,%{uname},%{gname}) %{homedir}/doc
-%attr(-,%{uname},%{gname}) %{homedir}/doc/*
-%dir %attr(755,%{uname},%{gname}) %{homedir}/lib
-%attr(-,%{uname},%{gname}) %{homedir}/lib/*
-
-%{homedir}/fixtures
-%{homedir}/generator_templates
-
-%dir %{homedir}/public
-%{homedir}/public/ci
-%{homedir}/public/*.*
-%attr(-,%{uname},%{gname}) %{homedir}/public/uploads
-%attr(-,%{uname},%{gname}) %{homedir}/public/assets
-%dir %attr(755,%{uname},%{gname}) %{homedir}/satellites
-
-%dir %attr(755,%{uname},%{gname}) %{homedir}/tmp
-%attr(-,%{uname},%{gname}) %{homedir}/tmp/backups
-%attr(-,%{uname},%{gname}) %{homedir}/tmp/cache
-%attr(-,%{uname},%{gname}) %{homedir}/tmp/sessions
-%attr(-,%{uname},%{gname}) %{homedir}/tmp/sockets
-%attr(-,%{uname},%{gname}) %{homedir}/tmp/pids
-
-%dir %attr(755,%{uname},%{gname}) %{homedir}/www
-
-%dir %attr(750,%{uname},%{gname}) %{homedir}/shared
-%dir %attr(750,%{uname},%{gname}) %{homedir}/shared/artifacts
-%dir %attr(750,%{uname},%{gname}) %{homedir}/shared/artifacts/tmp
-%dir %attr(750,%{uname},%{gname}) %{homedir}/shared/artifacts/tmp/cache
-%dir %attr(750,%{uname},%{gname}) %{homedir}/shared/artifacts/tmp/uploads
-%dir %attr(750,%{uname},%{gname}) %{homedir}/shared/lfs-objects
-%dir %attr(750,%{uname},%{gname}) %{homedir}/shared/registry
-
-%dir %attr(755,%{uname},%{gname}) %{homedir}/.bundle
-%attr(-,%{uname},%{gname}) %{homedir}/.bundle/config
-%attr(-,%{uname},%{gname}) %{homedir}/.ruby-version
-%attr(-,%{uname},%{gname}) %{homedir}/CHANGELOG
-%attr(-,%{uname},%{gname}) %{homedir}/GITLAB_WORKHORSE_VERSION
-%attr(-,%{uname},%{gname}) %{homedir}/GITLAB_SHELL_VERSION
-%attr(-,%{uname},%{gname}) %{homedir}/Gemfile*
-%attr(-,%{uname},%{gname}) %{homedir}/LICENSE
-%attr(-,%{uname},%{gname}) %{homedir}/*.md
-%attr(-,%{uname},%{gname}) %{homedir}/Rakefile
-%attr(-,%{uname},%{gname}) %{homedir}/VERSION
-%attr(-,%{uname},%{gname}) %{homedir}/config.ru
-
-%{homedir}/log
+
+%dir %{appdir}
+%dir %{appdir}/bin
+%attr(-,root,root) %{appdir}/bin/*
+# files
+%{appdir}/*.md
+%{appdir}/.bundle
+%{appdir}/.gitlab_workhorse_secret
+%{appdir}/.ruby-version
+%{appdir}/CHANGELOG
+%{appdir}/GITLAB_SHELL_VERSION
+%{appdir}/GITLAB_WORKHORSE_VERSION
+%{appdir}/Gemfile*
+%{appdir}/LICENSE
+%{appdir}/Rakefile
+%{appdir}/VERSION
+%{appdir}/config.ru
+
+# dirs
+%{appdir}/app
+%{appdir}/builds
+%{appdir}/config
+%{appdir}/db
+%{appdir}/fixtures
+%{appdir}/generator_templates
+%{appdir}/lib
+%{appdir}/log
+%{appdir}/public
+%{appdir}/shared
+%{appdir}/tmp
+%{appdir}/satellites
+
+%dir %{vardir}
+%{vardir}/.gitconfig
+%dir %attr(755,%{uname},%{gname}) %{vardir}/satellites
+%dir %attr(755,%{uname},%{gname}) %{vardir}/builds
+%dir %{vardir}/public
+%attr(-,%{uname},%{gname}) %{vardir}/public/uploads
+%attr(-,%{uname},%{gname}) %{vardir}/public/assets
+%dir %attr(755,%{uname},%{gname}) %{vardir}/tmp
+%attr(-,%{uname},%{gname}) %{vardir}/tmp/backups
+%{vardir}/tmp/cache
+%attr(-,%{uname},%{gname}) %{vardir}/tmp/sessions
+%attr(-,%{uname},%{gname}) %{vardir}/tmp/sockets
+%attr(-,%{uname},%{gname}) %{vardir}/tmp/pids
+%dir %attr(750,%{uname},%{gname}) %{vardir}/shared
+%dir %attr(750,%{uname},%{gname}) %{vardir}/shared/artifacts
+%dir %attr(750,%{uname},%{gname}) %{vardir}/shared/artifacts/tmp
+%{vardir}/shared/artifacts/tmp/cache
+%dir %attr(750,%{uname},%{gname}) %{vardir}/shared/artifacts/tmp/uploads
+%dir %attr(750,%{uname},%{gname}) %{vardir}/shared/lfs-objects
+%dir %attr(750,%{uname},%{gname}) %{vardir}/shared/registry
+
+%dir %attr(750,root,%{gname}) %{cachedir}
+%attr(-,%{uname},%{gname}) %{cachedir}/cache
+%dir %attr(750,%{uname},%{gname}) %{cachedir}/artifacts
+
 %dir %attr(771,root,%{gname}) %{_localstatedir}/log/gitlab
 %dir %attr(771,root,%{gname}) %{_localstatedir}/run/gitlab
 
 %defattr(-,root,root,-)
-%dir %{homedir}/vendor
-%{homedir}/vendor/*
+%dir %{appdir}/vendor
+%{appdir}/vendor/*
+
+%files doc
+%defattr(644,root,root,755)
+%{appdir}/doc
This page took 0.078447 seconds and 4 git commands to generate.