267 lines
10 KiB
RPMSpec
267 lines
10 KiB
RPMSpec
|
# Based on Arch Linux PKGBUILD for 13.10.0
|
||
|
%define gitlab_uid 65434
|
||
|
%define gitlab_gid 65434
|
||
|
%define _use_internal_dependency_generator 0
|
||
|
|
||
|
Name: gitlab-foss
|
||
|
Version: 13.10.0
|
||
|
Release: 2mamba
|
||
|
Summary: A Web interface to create projects and repositories, manage access and do code reviews
|
||
|
Group: Applications/Web
|
||
|
Vendor: openmamba
|
||
|
Distribution: openmamba
|
||
|
Packager: Silvan Calarco <silvan.calarco@mambasoft.it>
|
||
|
URL: https://www.gitlab.com/gitlab-foss/
|
||
|
Source: https://gitlab.com/gitlab-org/gitlab-foss.git/v%{version}/gitlab-foss-%{version}.tar.bz2
|
||
|
#Source: https://gitlab.com/gitlab-org/gitlab-ce.git/v%{version}/gitlab-ce-%{version}.tar.bz2
|
||
|
License: MIT
|
||
|
Source1: gitlab.target
|
||
|
Source2: gitlab-sidekiq.service
|
||
|
Source3: gitlab-unicorn.service
|
||
|
Source4: gitlab.logrotate
|
||
|
Source5: gitlab.tmpfiles.d
|
||
|
Source6: gitlab-apache-conf
|
||
|
Source7: gitlab-environment
|
||
|
Source8: gitlab-backup.service
|
||
|
Source9: gitlab-backup.timer
|
||
|
Source10: gitlab-mailroom.service
|
||
|
Source11: gitlab-puma.service
|
||
|
Patch0: gitlab-configs.patch
|
||
|
Patch1: gitlab-13.10.0-Gemfile-mimemagic-fix.patch
|
||
|
## AUTOBUILDREQ-BEGIN
|
||
|
BuildRequires: glibc-devel
|
||
|
BuildRequires: libassuan-devel
|
||
|
BuildRequires: libffi-devel
|
||
|
BuildRequires: libgcc
|
||
|
BuildRequires: libgpg-error-devel
|
||
|
BuildRequires: libgpgme-devel
|
||
|
BuildRequires: libicu-devel
|
||
|
BuildRequires: liblzma-devel
|
||
|
BuildRequires: libopenssl-devel
|
||
|
BuildRequires: libperl
|
||
|
BuildRequires: libpostgresql-devel
|
||
|
BuildRequires: libre2-devel
|
||
|
BuildRequires: libruby-devel
|
||
|
BuildRequires: libssh2-devel
|
||
|
BuildRequires: libstdc++6-devel
|
||
|
BuildRequires: libz-devel
|
||
|
BuildRequires: perl-File-Find-Rule
|
||
|
BuildRequires: perl-IPC-Run3
|
||
|
BuildRequires: perl-devel
|
||
|
BuildRequires: perl-Parallel-Runner
|
||
|
## AUTOBUILDREQ-END
|
||
|
BuildRequires: ruby
|
||
|
BuildRequires: yarn
|
||
|
BuildRequires: go
|
||
|
BuildRequires: nodejs
|
||
|
Requires: ruby >= 1:2.7
|
||
|
Requires: ruby < 1:2.8
|
||
|
Requires: redis
|
||
|
Requires: postgresql
|
||
|
#Requires: apache
|
||
|
Requires: git
|
||
|
Requires(pre): gitlab-shell >= 13.17.0
|
||
|
Requires: gitlab-gitaly
|
||
|
Requires: gitlab-workhorse
|
||
|
Provides: gitlab
|
||
|
Obsoletes: gitlab < 13.10.0
|
||
|
Obsoletes: gitlab-ce < 13.10.0
|
||
|
|
||
|
%description
|
||
|
GitLab Community Edition (CE) is open source software to collaborate 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).
|
||
|
|
||
|
%debug_package
|
||
|
|
||
|
%prep
|
||
|
%setup -q -n gitlab-foss-%{version} -D -T
|
||
|
:<< _EOF
|
||
|
|
||
|
%global __requires_exclude_from ^%{_datadir}/gitlab/vendor/.*$
|
||
|
|
||
|
%patch0 -p1
|
||
|
%patch1 -p1
|
||
|
|
||
|
cp config/gitlab.yml.example config/gitlab.yml
|
||
|
cp config/database.yml.postgresql config/database.yml
|
||
|
cp config/puma.rb.example config/puma.rb
|
||
|
cp config/resque.yml.example config/resque.yml
|
||
|
cp config/secrets.yml.example config/secrets.yml
|
||
|
cp config/initializers/smtp_settings.rb.sample config/initializers/smtp_settings.rb
|
||
|
|
||
|
# https://github.com/bundler/bundler/issues/6882
|
||
|
sed -e '/BUNDLED WITH/,+1d' -i Gemfile.lock
|
||
|
bundle lock --update=bundler-audit
|
||
|
# 'lock' adds 'BUNDLED WITH' back. Remove it again.
|
||
|
sed -e '/BUNDLED WITH/,+1d' -i Gemfile.lock
|
||
|
|
||
|
%build
|
||
|
:<< _EOF
|
||
|
|
||
|
echo "Fetching bundled gems..."
|
||
|
# Gems will be installed into vendor/bundle
|
||
|
bundle config build.gpgme --use-system-libraries
|
||
|
bundle config force_ruby_platform true
|
||
|
bundle install --jobs=$(nproc) --no-cache --deployment --without development test aws kerberos
|
||
|
|
||
|
yarn install --production --pure-lockfile
|
||
|
bundle exec rake gitlab:assets:compile RAILS_ENV=production NODE_ENV=production NODE_OPTIONS="--max_old_space_size=4096"
|
||
|
bundle exec rake gettext:compile RAILS_ENV=production
|
||
|
|
||
|
%install
|
||
|
[ "%{buildroot}" != / ] && rm -rf "%{buildroot}"
|
||
|
|
||
|
%define homedir %{_localstatedir}/lib/gitlab
|
||
|
|
||
|
install -d %{buildroot}%{_datadir}/gitlab
|
||
|
|
||
|
cp -r * %{buildroot}%{_datadir}/gitlab/
|
||
|
cp -r .[a-zA-Z0-9]* %{buildroot}%{_datadir}/gitlab/
|
||
|
|
||
|
# Remove unneeded directories: node_modules is only needed during build
|
||
|
rm -r %{buildroot}%{_datadir}/gitlab/node_modules
|
||
|
for dir in spec qa rubocop app/assets vendor/assets; do
|
||
|
rm -r %{buildroot}%{_datadir}/gitlab/${dir}
|
||
|
done
|
||
|
|
||
|
rm -r %{buildroot}%{_datadir}/gitlab/{builds,tmp,log,shared}
|
||
|
|
||
|
install -d \
|
||
|
%{buildroot}%{_datadir}/gitlab \
|
||
|
%{buildroot}%{homedir}/shared/{artifacts,lfs-objects} \
|
||
|
%{buildroot}%{homedir}/builds \
|
||
|
%{buildroot}%{homedir}/uploads \
|
||
|
%{buildroot}%{homedir}/backups \
|
||
|
%{buildroot}%{_sysconfdir}/gitlab \
|
||
|
%{buildroot}%{_localstatedir}/log/gitlab \
|
||
|
%{buildroot}%{_docdir}/gitlab \
|
||
|
|
||
|
# Rails app hardcodes/configures by default that data is stored under $_appdir
|
||
|
# Create symlinks that point to data directories under /var
|
||
|
ln -fs %{_localstatedir}/log/gitlab %{buildroot}%{_datadir}/gitlab/log
|
||
|
ln -fs ../../..%{homedir}/builds %{buildroot}%{_datadir}/gitlab/builds
|
||
|
ln -fs ../../..%{homedir}/tmp %{buildroot}%{_datadir}/gitlab/tmp
|
||
|
mkdir -p %{buildroot}%{homedir}/tmp/backups
|
||
|
ln -fs ../../../..%{homedir}/uploads %{buildroot}%{_datadir}/gitlab/public/uploads
|
||
|
ln -fs ../../..%{homedir}/shared %{buildroot}%{_datadir}/gitlab/shared
|
||
|
|
||
|
# TODO: workhorse and shell secret files are the application data and should be stored under /var/lib/gitlab
|
||
|
ln -fs ../../..%{_sysconfdir}/gitlab/gitlab_workhorse_secret %{buildroot}%{_datadir}/gitlab/.gitlab_workhorse_secret
|
||
|
ln -fs ../../..%{_sysconfdir}/gitlab/gitlab-shell-secret %{buildroot}%{_datadir}/gitlab/.gitlab_shell_secret
|
||
|
|
||
|
# Install config files
|
||
|
for config_file in gitlab.yml database.yml puma.rb resque.yml secrets.yml; do
|
||
|
cp config/${config_file} %{buildroot}%{_sysconfdir}/gitlab/
|
||
|
# TODO: configure rails app to use configs right from /etc
|
||
|
ln -fs ../../../..%{_sysconfdir}/gitlab/${config_file} %{buildroot}%{_datadir}/gitlab/config/
|
||
|
done
|
||
|
cp config/initializers/smtp_settings.rb %{buildroot}%{_sysconfdir}/gitlab/
|
||
|
ln -fs ../../../../..%{_sysconfdir}/gitlab/smtp_settings.rb %{buildroot}%{_datadir}/gitlab/config/initializers/smtp_settings.rb
|
||
|
|
||
|
# Install secrets symlink
|
||
|
# TODO: ruby uses _appdir to load config files. Figure out if we can load files directly from /etc
|
||
|
ln -fs ../../../..%{_sysconfdir}/gitlab/secrets.yml %{buildroot}%{_datadir}/gitlab/config/secrets.yml
|
||
|
|
||
|
install -Dm644 %{SOURCE7} %{buildroot}%{_datadir}/gitlab/environment
|
||
|
|
||
|
# Install systemd service files
|
||
|
install -D -m0644 %{S:1} %{buildroot}%{_unitdir}/gitlab.target
|
||
|
install -D -m0644 %{S:2} %{buildroot}%{_unitdir}/gitlab-sidekiq.service
|
||
|
install -D -m0644 %{S:3} %{buildroot}%{_unitdir}/gitlab-unicorn.service
|
||
|
install -D -m0644 %{S:8} %{buildroot}%{_unitdir}/gitlab-backup.service
|
||
|
install -D -m0644 %{S:9} %{buildroot}%{_unitdir}/gitlab-backup.timer
|
||
|
install -D -m0644 %{S:10} %{buildroot}%{_unitdir}/gitlab-mailroom.service
|
||
|
install -D -m0644 %{S:11} %{buildroot}%{_unitdir}/gitlab-puma.service
|
||
|
install -D -m0644 %{S:4} %{buildroot}%{_sysconfdir}/logrotate.d/gitlab.logrotate
|
||
|
install -D -m0644 %{S:5} %{buildroot}%{_tmpfilesdir}/gitlab.conf
|
||
|
install -D -m0644 %{S:6} %{buildroot}%{_sysconfdir}/httpd/httpd.d/gitlab.conf.example
|
||
|
|
||
|
# Fix weird shebang causing weird require
|
||
|
sed -i "s|#!/this/.*|#!/usr/bin/ruby|" %{buildroot}%{_datadir}/gitlab/vendor/bundle/ruby/*/gems/unicorn-*/bin/unicorn*
|
||
|
|
||
|
%clean
|
||
|
[ "%{buildroot}" != / ] && rm -rf "%{buildroot}"
|
||
|
|
||
|
%preun
|
||
|
%systemd_preun gitlab.target
|
||
|
:
|
||
|
|
||
|
%post
|
||
|
%systemd_post gitlab.target
|
||
|
|
||
|
if [ $1 -eq 1 ]; then
|
||
|
echo "Configure your /etc/gitlab/gitlab.yml"
|
||
|
echo "Set up your redis to run on /run/redis/redis.sock or configure gitlab to use redis TCP"
|
||
|
echo "Put a secret bytestring to /etc/gitlab/secret"
|
||
|
echo "Configure /etc/webapps/gitlab/secrets.yml"
|
||
|
echo "Setup the database:"
|
||
|
echo "$ (cd /usr/share/gitlab && sudo -u gitlab \$(cat environment | xargs) bundle exec rake gitlab:setup)"
|
||
|
echo "Finally run the following commands to check your installation:"
|
||
|
echo "$ (cd /usr/share/gitlab && sudo -u gitlab \$(cat environment | xargs) bundle exec rake gitlab:env:info)"
|
||
|
echo "$ (cd /usr/share/gitlab && sudo -u gitlab \$(cat environment | xargs) bundle exec rake gitlab:check)"
|
||
|
#sudo -u gitlab -H git config --global user.name "GitLab"
|
||
|
#sudo -u gitlab -H git config --global user.email "gitlab@localhost"
|
||
|
#sudo -u gitlab -H git config --global core.autocrlf input
|
||
|
#echo "Create and configure database in /etc/gitlab/database.yml"
|
||
|
#echo "Then run 'sudo -u gitlab bundle exec rake gitlab:setup RAILS_ENV=production'"
|
||
|
#echo
|
||
|
fi
|
||
|
if [ $1 -gt 1 ]; then
|
||
|
echo "You should upgrade your database:"
|
||
|
echo "$ (cd /usr/share/gitlab && sudo -u gitlab \$(cat environment | xargs) bundle exec rake db:migrate)"
|
||
|
echo "Afterwards, restart gitlab-related services:"
|
||
|
echo "# systemctl daemon-reload"
|
||
|
echo "# systemctl restart gitlab-sidekiq gitlab-puma gitlab-workhorse gitlab-gitaly"
|
||
|
fi
|
||
|
:
|
||
|
|
||
|
%postun
|
||
|
%systemd_postun_with_restart gitlab.target
|
||
|
:
|
||
|
|
||
|
%files
|
||
|
%defattr(-,root,root)
|
||
|
%dir %{_sysconfdir}/gitlab
|
||
|
%config(noreplace) %{_sysconfdir}/gitlab/database.yml
|
||
|
%config(noreplace) %{_sysconfdir}/gitlab/gitlab.yml
|
||
|
%config(noreplace) %{_sysconfdir}/gitlab/puma.rb
|
||
|
%config(noreplace) %{_sysconfdir}/gitlab/resque.yml
|
||
|
%config(noreplace) %{_sysconfdir}/gitlab/secrets.yml
|
||
|
%config(noreplace) %{_sysconfdir}/gitlab/smtp_settings.rb
|
||
|
%{_sysconfdir}/httpd/httpd.d/gitlab.conf.example
|
||
|
%{_sysconfdir}/logrotate.d/gitlab.logrotate
|
||
|
%{_unitdir}/gitlab-backup.service
|
||
|
%{_unitdir}/gitlab-backup.timer
|
||
|
%{_unitdir}/gitlab-mailroom.service
|
||
|
%{_unitdir}/gitlab-puma.service
|
||
|
%{_unitdir}/gitlab-sidekiq.service
|
||
|
%{_unitdir}/gitlab-unicorn.service
|
||
|
%{_unitdir}/gitlab.target
|
||
|
%{_tmpfilesdir}/gitlab.conf
|
||
|
%{_datadir}/gitlab
|
||
|
%dir %attr(0750,gitlab,gitlab) %{homedir}/builds
|
||
|
%dir %attr(0700,gitlab,gitlab) %{homedir}/uploads
|
||
|
%dir %attr(0750,gitlab,gitlab) %{homedir}/shared
|
||
|
%dir %attr(0750,gitlab,gitlab) %{homedir}/shared/artifacts
|
||
|
%dir %attr(0750,gitlab,gitlab) %{homedir}/shared/lfs-objects
|
||
|
%dir %attr(0750,gitlab,gitlab) %{homedir}/tmp
|
||
|
%dir %attr(0750,gitlab,gitlab) %{homedir}/tmp/backups
|
||
|
%doc LICENSE
|
||
|
|
||
|
%changelog
|
||
|
* Mon Mar 29 2021 Silvan Calarco <silvan.calarco@mambasoft.it> 13.10.0-2mamba
|
||
|
- various fixes after testing
|
||
|
|
||
|
* Sun Mar 28 2021 Silvan Calarco <silvan.calarco@mambasoft.it> 13.10.0-1mamba
|
||
|
- update to 13.10.0
|
||
|
|
||
|
* Sat Nov 21 2015 Silvan Calarco <silvan.calarco@mambasoft.it> 8.1.4-1mamba
|
||
|
- update to 8.1.4
|
||
|
|
||
|
* Tue Jul 08 2014 Silvan Calarco <silvan.calarco@mambasoft.it> 6.9.2-1mamba
|
||
|
- update to 6.9.2
|
||
|
|
||
|
* Sun May 25 2014 Silvan Calarco <silvan.calarco@mambasoft.it> 6.9.0-1mamba
|
||
|
- package created using the webbuild interface
|