File gitlab-ce.spec of Package gitlab-ce
#
# spec file for package gitlab-ce
#
# Copyright (c) 2022 SUSE LLC
#
# 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 https://bugs.opensuse.org/
#
%define gitlab_main_version 18.1.2
%define gitaly_server_version %{gitlab_main_version}
%define gitlab_workhorse_version %{gitlab_main_version}
%define gitlab_kas_version %{gitlab_main_version}
%define gitlab_pages_version %{gitlab_main_version}
%define gitlab_elasticsearch_indexer_version 5.6.0
%define gitlab_shell_version 14.42.0
%define gitlab_metrics_exporter_version main
%define rb_build_versions %gitlab_rb_build_versions
%define rb_build_abi %gitlab_rb_build_abi
%define rb_suffix %gitlab_rb_suffix
%bcond_with allow_rebuilding_assets
%bcond_with rebuilding_nodejs_modules
%define gitlab_service_list %{name}-update.service %{name}-puma.service %{name}-sidekiq.service gitlab-workhorse.service gitlab-ce.target
Name: gitlab-ce
Version: 0
Release: 0
#
%define vhosts_dir /srv/www/vhosts/
%define app_dir %{vhosts_dir}/%{name}/
#
License: MIT
Summary: Open source software to collaborate on code
Url: https://about.gitlab.com/
Group: Development/Tools/Version Control
Source: _service
Source1: gitlab-js-stuff.tar.xz
Source3: extensions.sql
#
Source10: gitlab-ce-update
#
Source11: gitlab-ce-puma.service
Source12: gitlab-ce-sidekiq.service
Source13: gitlab-ce-migrate-services
Source14: gitlab-ce-update.service
Source15: gitlab-workhorse.service
Source16: gitlab-ce.target
#
Source94: gitlab-ce-rpmlintrc
Source95: _servicedata
Source96: series
# keep in sync with rubygem(gettext_i18n_rails_js)
Source97: gettext_i18n_rails_js_tasks_override.rake
Source98: _constraints
Source99: dump-version-info.rb
#
Patch0: gitlab-ce.disable.dev_testing.patch
Patch1: gitlab-ce.less_strict.patch
Patch2: gitlab-ce.default_config.patch
Patch3: no-ohai.patch
Patch4: gitlab-workhorse-pie.patch
Patch6: do-not-enter-the-danger-zone.patch
Patch7: bump-ruby-version.patch
Patch8: chalk-is-a-non-dev-dep.patch
# lock architecture until we can rebuild the nodejs .node files in the build environment.
# currently they are built as part of the vendoring script
ExclusiveArch: x86_64
#
# BuildArch: noarch
#
BuildRequires: golang-packaging
BuildRequires: golang(API) >= 1.17
BuildRequires: rsync
BuildRequires: ruby-common-rails >= 2.6
BuildRequires: gitlab-common
%requires_eq gitlab-common
BuildRequires: gitlab-generate-secrets
%requires_eq gitlab-generate-secrets
Provides: gitlab-ci = %{version}-%{release}
Obsoletes: gitlab-ci < %{version}-%{release}
#
BuildRequires: gitaly = %{gitaly_server_version}
%requires_eq gitaly
BuildRequires: gitlab-elasticsearch-indexer = %{gitlab_elasticsearch_indexer_version}
%requires_eq gitlab-elasticsearch-indexer
BuildRequires: gitlab-pages = %{gitlab_pages_version}
%requires_eq gitlab-pages
BuildRequires: gitlab-shell = %{gitlab_shell_version}
%requires_eq gitlab-shell
Provides: gitlab-workhorse = %{gitlab_workhorse_version}-%{release}
Obsoletes: gitlab-workhorse < %{gitlab_workhorse_version}-%{release}
%if 0
Provides: rubygem(%{gitlab_rb_build_abi}:mail-smtp_pool) = 0.1.0
Provides: rubygem(%{gitlab_rb_build_abi}:devise-pbkdf2-encryptable) = 0.0.0
Provides: rubygem(%{gitlab_rb_build_abi}:omniauth-gitlab) = 4.0.0
Provides: rubygem(%{gitlab_rb_build_abi}:omniauth-crowd) = 2.4.0
Provides: rubygem(%{gitlab_rb_build_abi}:ipynbdiff) = 0.4.7
Provides: rubygem(%{gitlab_rb_build_abi}:error_tracking_open_api) = 1.0.0
%endif
#BuildRequires: gitlab-kas = %%{gitlab_kas_version}
##requires_eq gitlab-kas
#
BuildRequires: exiftool
Requires: exiftool
%if 0%{?suse_version} > 1315
BuildRequires: python3-docutils
Requires: python3-docutils
%else
BuildRequires: python-docutils
Requires: python-docutils
%endif
Requires: postgresql-implementation >= 11
BuildRequires: gcc-c++
%define nodejs_min_version 22
BuildRequires: yarn
BuildRequires: npm%{nodejs_min_version}
BuildRequires: nodejs%{nodejs_min_version}-devel
BuildRequires: nodejs-common
%requires_eq nodejs%{nodejs_min_version}
# BuildRequires: python3-gyp
BuildRequires: python3-six
BuildRequires: pkgconfig(systemd)
%if %{with rebuilding_nodejs_modules}
BuildRequires: cargo-packaging
BuildRequires: tree-sitter
BuildRequires: tree-sitter-devel
BuildRequires: strace
BuildRequires: ca-certificates-mozilla
%endif
%{?systemd_ordering}
# https://github.com/rubygems/rubygems/issues/8008
Requires: %{rb_suffix}-rubygem-net-http
# lets help the scheduler in picking the right versions
BuildRequires: %{rubygem bundler:2 >= 2.4.21}
BuildRequires: %{rubygem openssl >= 3.1.0}
BuildRequires: %{rubygem thrift >= 0.14.0}
BuildRequires: %{rubygem timeout >= 0.4.3}
BuildRequires: %{rubygem date >= 3.4.1}
BuildRequires: %{rubygem net-smtp >= 0.3.3}
BuildRequires: %{rubygem timeout >= 0.3.1}
BuildRequires: %{rubygem racc >= 1.8.1}
BuildRequires: %{rubygem net-pop >= 0.1.2}
BuildRequires: %{rubygem uri >= 0.12.2}
BuildRequires: %{rubygem drb >= 2.2.1}
BuildRequires: %{rubygem graphql = 2.4.13}
BuildRequires: %{rubygem graphql-client >= 0.23.0}
BuildRequires: %{rubygem sassc-rails >= 2.1.0}
BuildRequires: %{rubygem sassc >= 2.4.0}
BuildRequires: %{rubygem ostruct >= 0.6.1}
BuildRequires: %{rubygem http >= 5}
BuildRequires: %{rubygem json >= 2.7.3}
BuildRequires: %{rubygem rack-session:1}
BuildRequires: %{rubygem base64 >= 0.2.0}
BuildRequires: %{rubygem bigdecimal >= 3.1.8}
BuildRequires: %{rubygem sidekiq:7.2 >= 7.2.4}
BuildRequires: %{rubygem google-apis-pubsub_v1:0.45}
BuildRequires: %{rubygem google-apis-monitoring_v3:0.54}
BuildRequires: %{rubygem google-apis-dns_v1:0.36}
BuildRequires: %{rubygem unicode-display_width > 3}
BuildRequires: %{rubygem redis-namespace >= 1.11}
BuildRequires: %{rubygem cgi >= 0.4.2}
BuildRequires: %{rubygem csv >= 3.3.0}
BuildRequires: %{rubygem net-imap >= 0.5.6}
BuildRequires: %{rubygem logger >= 1.6.6}
BuildRequires: %{rubygem rack:2.2}
BuildRequires: %{rubygem rackup:1}
BuildRequires: %{rubygem io-console >= 0.8}
BuildRequires: %{rubygem psych >= 5.2.3}
BuildRequires: %{rubygem rdoc >= 6.13}
BuildRequires: %{rubygem reline >= 0.6.0}
BuildRequires: %{rubygem securerandom >= 0.4.0}
BuildRequires: %{rubygem stringio >= 3.1.7}
BuildRequires: %{rubygem benchmark >= 0.4.0}
# generated
#
BuildRequires: %{rubygem rails:7.1.5 >= 7.1.5.1}
BuildRequires: %{rubygem mutex_m:0 >= 0.3}
BuildRequires: %{rubygem drb:2 >= 2.2}
BuildRequires: %{rubygem bootsnap:1.18 >= 1.18.3}
BuildRequires: %{rubygem ffi:1.17 >= 1.17.2}
BuildRequires: %{rubygem openssl:3 >= 3.0}
BuildRequires: %{rubygem gitlab-secret_detection < 1.0}
BuildRequires: %{rubygem responders:3 >= 3.0}
BuildRequires: %{rubygem sprockets:3.7 >= 3.7.0}
BuildRequires: %{rubygem sprockets-rails:3.5 >= 3.5.1}
BuildRequires: %{rubygem view_component:3.23 >= 3.23.2}
BuildRequires: %{rubygem pg:1.5 >= 1.5.6}
BuildRequires: %{rubygem rugged:1 >= 1.6}
BuildRequires: %{rubygem faraday:2 >= 2}
BuildRequires: %{rubygem faraday-retry:2 >= 2}
BuildRequires: %{rubygem logger >= 1.7.0}
BuildRequires: %{rubygem marginalia:1.11 >= 1.11.1}
BuildRequires: %{rubygem declarative_policy:1.1 >= 1.1.0}
BuildRequires: %{rubygem coverband = 6.1.5}
BuildRequires: %{rubygem devise:4.9 >= 4.9.3}
BuildRequires: %{rubygem bcrypt:3 >= 3.1}
BuildRequires: %{rubygem bcrypt >= 3.1.14}
BuildRequires: %{rubygem doorkeeper:5 >= 5.8}
BuildRequires: %{rubygem doorkeeper >= 5.8.1}
BuildRequires: %{rubygem doorkeeper-openid_connect:1.8 >= 1.8.10}
BuildRequires: %{rubygem doorkeeper-device_authorization_grant:1.0 >= 1.0.0}
BuildRequires: %{rubygem rexml:3.4 >= 3.4.0}
BuildRequires: %{rubygem ruby-saml:1 >= 1.18}
BuildRequires: %{rubygem omniauth-saml:2.2 >= 2.2.1}
BuildRequires: %{rubygem omniauth:2.1 >= 2.1.0}
BuildRequires: %{rubygem omniauth-auth0:3 >= 3.1}
BuildRequires: %{rubygem omniauth-azure-activedirectory-v2:2 >= 2.0}
BuildRequires: %{rubygem omniauth-alicloud:3.0 >= 3.0.0}
BuildRequires: %{rubygem omniauth-github = 2.0.1}
BuildRequires: %{rubygem omniauth-google-oauth2:1 >= 1.1}
BuildRequires: %{rubygem omniauth-oauth2-generic:0.2 >= 0.2.2}
BuildRequires: %{rubygem omniauth-shibboleth-redux:2 >= 2.0}
BuildRequires: %{rubygem omniauth_openid_connect:0.8 >= 0.8.0}
BuildRequires: %{rubygem openid_connect:2.3 >= 2.3.0}
BuildRequires: %{rubygem omniauth-atlassian-oauth2:0.2 >= 0.2.0}
BuildRequires: %{rubygem rack-oauth2:2.2 >= 2.2.1}
BuildRequires: %{rubygem jwt:2.9 >= 2.9.3}
BuildRequires: %{rubygem gssapi:1.3 >= 1.3.1}
BuildRequires: %{rubygem timfel-krb5-auth:0 >= 0.8}
BuildRequires: %{rubygem recaptcha:5 >= 5.12}
BuildRequires: %{rubygem akismet:3 >= 3.0}
BuildRequires: %{rubygem invisible_captcha:2.1 >= 2.1.0}
BuildRequires: %{rubygem devise-two-factor:4.1 >= 4.1.1}
BuildRequires: %{rubygem rqrcode:2 >= 2.2}
BuildRequires: %{rubygem attr_encrypted:4 >= 4.2}
BuildRequires: %{rubygem validates_hostname:1.0 >= 1.0.13}
BuildRequires: %{rubygem rubyzip:2.4 >= 2.4.0}
BuildRequires: %{rubygem acme-client:2.0 >= 2.0.19}
BuildRequires: %{rubygem browser:5.3 >= 5.3.1}
BuildRequires: %{rubygem gpgme:2.0 >= 2.0.24}
BuildRequires: %{rubygem gitlab_omniauth-ldap:2.2 >= 2.2.0}
BuildRequires: %{rubygem net-ldap:0.17 >= 0.17.1}
BuildRequires: %{rubygem grape:2.0 >= 2.0.0}
BuildRequires: %{rubygem grape-entity:1.0 >= 1.0.1}
BuildRequires: %{rubygem grape-path-helpers:2.0 >= 2.0.1}
BuildRequires: %{rubygem rack-cors:2.0 >= 2.0.1}
BuildRequires: %{rubygem graphql = 2.4.13}
BuildRequires: %{rubygem apollo_upload_server:2.1 >= 2.1.6}
BuildRequires: %{rubygem ffaker:2 >= 2.24}
BuildRequires: %{rubygem hashie:5.0 >= 5.0.0}
BuildRequires: %{rubygem kaminari:1.2 >= 1.2.2}
BuildRequires: %{rubygem hamlit:2.15 >= 2.15.0}
BuildRequires: %{rubygem carrierwave:1 >= 1.3}
BuildRequires: %{rubygem mini_magick:4 >= 4.12}
BuildRequires: %{rubygem prawn}
BuildRequires: %{rubygem prawn-svg}
BuildRequires: %{rubygem fog-aws:3 >= 3.26}
BuildRequires: %{rubygem fog-core = 2.1.0}
BuildRequires: %{rubygem fog-google:1.24 >= 1.24.1}
BuildRequires: %{rubygem fog-local:0 >= 0.8}
BuildRequires: %{rubygem fog-aliyun:0 >= 0.4}
BuildRequires: %{rubygem gitlab-fog-azure-rm:2.2 >= 2.2.0}
BuildRequires: %{rubygem google-apis-storage_v1:0 >= 0.29}
BuildRequires: %{rubygem google-cloud-storage:1.45 >= 1.45.0}
BuildRequires: %{rubygem google-apis-core:0.11 >= 0.11.2}
BuildRequires: %{rubygem google-apis-core >= 0.11.1}
BuildRequires: %{rubygem google-apis-compute_v1:0.57 >= 0.57.0}
BuildRequires: %{rubygem google-apis-container_v1:0.43 >= 0.43.0}
BuildRequires: %{rubygem google-apis-container_v1beta1:0.43 >= 0.43.0}
BuildRequires: %{rubygem google-apis-cloudbilling_v1:0.22 >= 0.22.0}
BuildRequires: %{rubygem google-apis-cloudresourcemanager_v1:0.31 >= 0.31.0}
BuildRequires: %{rubygem google-apis-iam_v1:0.36 >= 0.36.0}
BuildRequires: %{rubygem google-apis-serviceusage_v1:0.28 >= 0.28.0}
BuildRequires: %{rubygem google-apis-sqladmin_v1beta4:0.41 >= 0.41.0}
BuildRequires: %{rubygem google-apis-androidpublisher_v3:0.34 >= 0.34.0}
BuildRequires: %{rubygem googleauth >= 1.8.1}
BuildRequires: %{rubygem google-cloud-artifact_registry-v1:0.11 >= 0.11.0}
BuildRequires: %{rubygem google-cloud-compute-v1:2.6 >= 2.6.0}
BuildRequires: %{rubygem seed-fu:2.3 >= 2.3.7}
BuildRequires: %{rubygem elasticsearch-model:7 >= 7.2}
BuildRequires: %{rubygem elasticsearch-rails:7 >= 7.2}
BuildRequires: %{rubygem elasticsearch-api = 7.17.11}
BuildRequires: %{rubygem aws-sdk-core >= 3.225.0}
BuildRequires: %{rubygem aws-sdk-cloudformation:1 >= 1}
BuildRequires: %{rubygem aws-sdk-s3 >= 1.189.0}
BuildRequires: %{rubygem faraday-typhoeus:1 >= 1.1}
BuildRequires: %{rubygem faraday_middleware-aws-sigv4:1.0 >= 1.0.1}
BuildRequires: %{rubygem typhoeus:1.4 >= 1.4.0}
BuildRequires: %{rubygem html-pipeline:2.14 >= 2.14.3}
BuildRequires: %{rubygem deckar01-task_list = 2.3.4}
BuildRequires: %{rubygem gitlab-markup:2.0 >= 2.0.0}
BuildRequires: %{rubygem commonmarker:0.23 >= 0.23.10}
BuildRequires: %{rubygem kramdown:2.5 >= 2.5.0}
BuildRequires: %{rubygem RedCloth:4.3 >= 4.3.3}
BuildRequires: %{rubygem org-ruby:0.9 >= 0.9.12}
BuildRequires: %{rubygem creole:0.5 >= 0.5.0}
BuildRequires: %{rubygem wikicloth = 0.8.1}
BuildRequires: %{rubygem asciidoctor:2.0 >= 2.0.18}
BuildRequires: %{rubygem asciidoctor-include-ext:0.4 >= 0.4.0}
BuildRequires: %{rubygem asciidoctor-plantuml:0.0 >= 0.0.16}
BuildRequires: %{rubygem asciidoctor-kroki:0.10 >= 0.10.0}
BuildRequires: %{rubygem rouge:4.5 >= 4.5.0}
BuildRequires: %{rubygem truncato:0.7 >= 0.7.13}
BuildRequires: %{rubygem nokogiri:1 >= 1.18}
BuildRequires: %{rubygem gitlab-glfm-markdown:0.0 >= 0.0.31}
BuildRequires: %{rubygem tanuki_emoji:0 >= 0.13}
BuildRequires: %{rubygem unicode-emoji:4 >= 4.0}
BuildRequires: %{rubygem icalendar:2.10 >= 2.10.1}
BuildRequires: %{rubygem diffy:3 >= 3.4}
BuildRequires: %{rubygem rack:2.2 >= 2.2.9}
BuildRequires: %{rubygem rack-timeout:0.7 >= 0.7.0}
BuildRequires: %{rubygem puma = 6.6.0}
BuildRequires: %{rubygem sd_notify:0.1 >= 0.1.0}
BuildRequires: %{rubygem state_machines-activerecord:0.8 >= 0.8.0}
BuildRequires: %{rubygem sidekiq-cron:1.12 >= 1.12.0}
BuildRequires: %{rubygem fugit:1.11 >= 1.11.1}
BuildRequires: %{rubygem httparty:0.23 >= 0.23.0}
BuildRequires: %{rubygem rainbow:3 >= 3.0}
BuildRequires: %{rubygem ruby-progressbar:1 >= 1.10}
BuildRequires: %{rubygem re2:2 >= 2.15}
BuildRequires: %{rubygem semver_dialects:3 >= 3.7}
BuildRequires: %{rubygem version_sorter:2 >= 2.3}
BuildRequires: %{rubygem js_regex:3 >= 3.8}
BuildRequires: %{rubygem device_detector}
BuildRequires: %{rubygem redis:5.4 >= 5.4.0}
BuildRequires: %{rubygem redis-clustering:5.4 >= 5.4.0}
BuildRequires: %{rubygem connection_pool:2.5 >= 2.5.3}
BuildRequires: %{rubygem redis-actionpack:5.5 >= 5.5.0}
BuildRequires: %{rubygem jira-ruby:2.3 >= 2.3.0}
BuildRequires: %{rubygem atlassian-jwt:0.2 >= 0.2.1}
BuildRequires: %{rubygem slack-messenger:2.3 >= 2.3.5}
BuildRequires: %{rubygem ruby-fogbugz:0.3 >= 0.3.0}
BuildRequires: %{rubygem kubeclient:4.11 >= 4.11.0}
BuildRequires: %{rubygem circuitbox = 2.0.0}
BuildRequires: %{rubygem sanitize:6.0 >= 6.0.2}
BuildRequires: %{rubygem babosa:2 >= 2.0}
BuildRequires: %{rubygem loofah >= 2.24.0}
BuildRequires: %{rubygem licensee:9 >= 9.16}
BuildRequires: %{rubygem charlock_holmes:0.7 >= 0.7.9}
BuildRequires: %{rubygem ruby-magic:0 >= 0.6}
BuildRequires: %{rubygem fast_blank:1.0 >= 1.0.1}
BuildRequires: %{rubygem gitlab-chronic:0.10 >= 0.10.5}
BuildRequires: %{rubygem gitlab_chronic_duration:0 >= 0.12}
BuildRequires: %{rubygem rack-proxy:0.7 >= 0.7.7}
BuildRequires: %{rubygem cssbundling-rails = 1.4.3}
BuildRequires: %{rubygem terser = 1.0.2}
BuildRequires: %{rubygem addressable:2 >= 2.8}
BuildRequires: %{rubygem gon:6.4 >= 6.4.0}
BuildRequires: %{rubygem request_store:1.7 >= 1.7.0}
BuildRequires: %{rubygem base32:0.3 >= 0.3.0}
BuildRequires: %{rubygem gitlab-license:2 >= 2.6}
BuildRequires: %{rubygem rack-attack:6.7 >= 6.7.0}
BuildRequires: %{rubygem sentry-ruby:5.23 >= 5.23.0}
BuildRequires: %{rubygem sentry-rails:5.23 >= 5.23.0}
BuildRequires: %{rubygem sentry-sidekiq:5.23 >= 5.23.0}
BuildRequires: %{rubygem pg_query:6.1 >= 6.1.0}
BuildRequires: %{rubygem premailer-rails:1.12 >= 1.12.0}
BuildRequires: %{rubygem gitlab-labkit:0.37 >= 0.37.0}
BuildRequires: %{rubygem thrift >= 0.16.0}
BuildRequires: %{rubygem rails-i18n:7 >= 7.0}
BuildRequires: %{rubygem rails-i18n >= 7.0.9}
BuildRequires: %{rubygem gettext_i18n_rails:1.13 >= 1.13.0}
BuildRequires: %{rubygem batch-loader:2.0 >= 2.0.5}
BuildRequires: %{rubygem tty-prompt:0 >= 0.23}
BuildRequires: %{rubygem peek:1 >= 1.1}
BuildRequires: %{rubygem snowplow-tracker:0.8 >= 0.8.0}
BuildRequires: %{rubygem webrick:1.9 >= 1.9.0}
BuildRequires: %{rubygem prometheus-client-mmap:1.2 >= 1.2.8}
BuildRequires: %{rubygem async >= 2.24.0}
BuildRequires: %{rubygem gitlab-security_report_schemas = 0.1.2.min15.0.0.max15.2.1}
BuildRequires: %{rubygem git}
BuildRequires: %{rubygem opentelemetry-sdk}
BuildRequires: %{rubygem opentelemetry-exporter-otlp}
BuildRequires: %{rubygem opentelemetry-instrumentation-active_support}
BuildRequires: %{rubygem opentelemetry-instrumentation-action_pack}
BuildRequires: %{rubygem opentelemetry-instrumentation-active_job}
BuildRequires: %{rubygem opentelemetry-instrumentation-active_record}
BuildRequires: %{rubygem opentelemetry-instrumentation-action_view}
BuildRequires: %{rubygem opentelemetry-instrumentation-aws_sdk}
BuildRequires: %{rubygem opentelemetry-instrumentation-http}
BuildRequires: %{rubygem opentelemetry-instrumentation-concurrent_ruby}
BuildRequires: %{rubygem opentelemetry-instrumentation-ethon}
BuildRequires: %{rubygem opentelemetry-instrumentation-excon}
BuildRequires: %{rubygem opentelemetry-instrumentation-faraday}
BuildRequires: %{rubygem opentelemetry-instrumentation-grape}
BuildRequires: %{rubygem opentelemetry-instrumentation-graphql}
BuildRequires: %{rubygem opentelemetry-instrumentation-http_client}
BuildRequires: %{rubygem opentelemetry-instrumentation-net_http}
BuildRequires: %{rubygem opentelemetry-instrumentation-pg}
BuildRequires: %{rubygem opentelemetry-instrumentation-rack}
BuildRequires: %{rubygem opentelemetry-instrumentation-rails}
BuildRequires: %{rubygem opentelemetry-instrumentation-rake}
BuildRequires: %{rubygem opentelemetry-instrumentation-redis}
BuildRequires: %{rubygem opentelemetry-instrumentation-sidekiq}
BuildRequires: %{rubygem warning:1.5 >= 1.5.0}
BuildRequires: %{rubygem octokit:9 >= 9.0}
BuildRequires: %{rubygem faraday-multipart:1 >= 1.0}
BuildRequires: %{rubygem gitlab-mail_room:0.0 >= 0.0.24}
BuildRequires: %{rubygem email_reply_trimmer:0 >= 0.1}
BuildRequires: %{rubygem html2text}
BuildRequires: %{rubygem stackprof:0.2 >= 0.2.26}
BuildRequires: %{rubygem rbtrace:0 >= 0.4}
BuildRequires: %{rubygem memory_profiler:1 >= 1.0}
BuildRequires: %{rubygem activerecord-explain-analyze:0 >= 0.1}
BuildRequires: %{rubygem oauth2:2 >= 2.0}
BuildRequires: %{rubygem health_check:3 >= 3.0}
BuildRequires: %{rubygem vmstat:2.3 >= 2.3.0}
BuildRequires: %{rubygem sys-filesystem:1.4 >= 1.4.3}
BuildRequires: %{rubygem net-ntp}
BuildRequires: %{rubygem ssh_data:1 >= 1.3}
BuildRequires: %{rubygem spamcheck:1.3 >= 1.3.0}
BuildRequires: %{rubygem gitaly:18.1.0 >= 18.1.0.pre.rc1}
BuildRequires: %{rubygem gitlab-kas-grpc >= 17.11.0}
BuildRequires: %{rubygem grpc:1.72 >= 1.72.0}
BuildRequires: %{rubygem google-protobuf:3 >= 3.25}
BuildRequires: %{rubygem google-protobuf >= 3.25.3}
BuildRequires: %{rubygem toml-rb:2.2 >= 2.2.0}
BuildRequires: %{rubygem flipper:0.28 >= 0.28.0}
BuildRequires: %{rubygem flipper-active_record:0.28 >= 0.28.0}
BuildRequires: %{rubygem flipper-active_support_cache_store:0.28 >= 0.28.0}
BuildRequires: %{rubygem unleash:3.2 >= 3.2.2}
BuildRequires: %{rubygem gitlab-experiment:0.9 >= 0.9.1}
BuildRequires: %{rubygem lograge >= 0.14.0}
BuildRequires: %{rubygem grape_logging:1 >= 1.8}
BuildRequires: %{rubygem grape_logging >= 1.8.4}
BuildRequires: %{rubygem gitlab-net-dns:0.12 >= 0.12.0}
BuildRequires: %{rubygem countries:4.0 >= 4.0.0}
BuildRequires: %{rubygem retriable:3.1 >= 3.1.2}
BuildRequires: %{rubygem lru_redux}
BuildRequires: %{rubygem mail = 2.8.1}
BuildRequires: %{rubygem lockbox:1.3 >= 1.3.0}
BuildRequires: %{rubygem valid_email:0 >= 0.1}
BuildRequires: %{rubygem jsonb_accessor:1 >= 1.4}
BuildRequires: %{rubygem json >= 2.11.0}
BuildRequires: %{rubygem json_schemer:2.3 >= 2.3.0}
BuildRequires: %{rubygem oj >= 3.16.0}
BuildRequires: %{rubygem oj >= 3.16.10}
BuildRequires: %{rubygem oj-introspect:0 >= 0.8}
BuildRequires: %{rubygem multi_json >= 1.14.1}
BuildRequires: %{rubygem yajl-ruby:1.4 >= 1.4.3}
BuildRequires: %{rubygem webauthn:3 >= 3.0}
BuildRequires: %{rubygem ipaddress:0.8 >= 0.8.3}
BuildRequires: %{rubygem parslet:2 >= 2.0}
BuildRequires: %{rubygem ed25519:1.4 >= 1.4.0}
BuildRequires: %{rubygem cvss-suite:3.3 >= 3.3.0}
BuildRequires: %{rubygem arr-pm:0.0 >= 0.0.12}
BuildRequires: %{rubygem devfile:0.4 >= 0.4.4}
BuildRequires: %{rubygem CFPropertyList:3.0 >= 3.0.0}
BuildRequires: %{rubygem app_store_connect}
BuildRequires: %{rubygem telesignenterprise:2 >= 2.2}
BuildRequires: %{rubygem net-protocol:0.1 >= 0.1.3}
BuildRequires: %{rubygem nkf:0.2 >= 0.2.0}
BuildRequires: %{rubygem net-http = 0.6.0}
BuildRequires: %{rubygem uri = 0.13.2}
BuildRequires: %{rubygem duo_api:1 >= 1.3}
BuildRequires: %{rubygem gitlab-sdk:0.3 >= 0.3.0}
BuildRequires: %{rubygem paper_trail:16 >= 16.0}
BuildRequires: %{rubygem i18n_data:0.13 >= 0.13.1}
BuildRequires: %{rubygem gitlab-cloud-connector:1 >= 1.14}
# /generated
#
# vendor/gems/attr_encrypted/
BuildRequires: %{rubygem encryptor:3.0 >= 3.0.0}
# vendor/gems/cloud_profiler_agent
BuildRequires: %{rubygem googleauth >= 0.14}
BuildRequires: %{rubygem google-cloud-profiler-v2:0 >= 0.3}
BuildRequires: %{rubygem google-protobuf:3 >= 3.25}
BuildRequires: %{rubygem stackprof:0 >= 0.2}
# vendor/gems/devise-pbkdf2-encryptable/
BuildRequires: %{rubygem devise:4 >= 4.0}
BuildRequires: %{rubygem devise-two-factor:4 >= 4.1.1}
# vendor/gems/error_tracking_open_api/
BuildRequires: %{rubygem typhoeus:1 >= 1.0.1}
# vendor/gems/mail-smtp_pool/
BuildRequires: %{rubygem connection_pool:2 >= 2.0}
BuildRequires: %{rubygem mail:2 >= 2.8}
# vendor/gems/microsoft_graph_mailer/
BuildRequires: %{rubygem mail:2 >= 2.7}
BuildRequires: %{rubygem oauth2 >= 1.4.4}
# vendor/gems/omniauth-azure-oauth2
BuildRequires: %{rubygem jwt >= 1.0}
BuildRequires: %{rubygem json >= 2.5}
# vendor/gems/omniauth_crowd/
BuildRequires: %{rubygem omniauth:2 >= 2.0}
BuildRequires: %{rubygem nokogiri >= 1.4.4}
# vendor/gems/omniauth-gitlab/ + vendor/gems/omniauth-salesforce/
BuildRequires: %{rubygem omniauth-oauth2:1 >= 1.8}
BuildRequires: %{rubygem omniauth:2 >= 2.0}
# vendor/gems/sidekiq-reliable-fetch/
BuildRequires: %{rubygem sidekiq:7 >= 7.0}
BuildRequires: %{rubygem json >= 2.5}
# vendor/gems/sidekiq-7.2.4/
BuildRequires: %{rubygem concurrent-ruby:1.2}
BuildRequires: %{rubygem connection_pool >= 2.3.0}
BuildRequires: %{rubygem rack >= 2.2.4}
BuildRequires: %{rubygem redis-client >= 0.19.0}
# gems/activerecord-gitlab/
BuildRequires: %{rubygem activerecord >= 7}
# gems/click_house-client/
BuildRequires: %{rubygem activesupport:7}
BuildRequires: %{rubygem addressable:2 >= 2.8}
BuildRequires: %{rubygem json:2.6 >= 2.6.3}
# gems/gitlab-rspec/
BuildRequires: %{rubygem activesupport:7.0}
# gems/ipynbdiff/
BuildRequires: %{rubygem diffy:3 >= 3.4}
BuildRequires: %{rubygem oj:3.13 >= 3.13.16}
# gems/gitlab-utils/
BuildRequires: %{rubygem actionview >= 6.1.7.2}
BuildRequires: %{rubygem activesupport >= 6.1.7.2}
BuildRequires: %{rubygem addressable:2 >= 2.8}
BuildRequires: %{rubygem rake:13 >= 13.0}
# gems/gitlab-schema-validation/
BuildRequires: %{rubygem diffy}
BuildRequires: %{rubygem pg_query}
# gems/ipynb_diff
BuildRequires: %{rubygem diffy:3 >= 3.4}
BuildRequires: %{rubygem oj:3.13 >= 3.13.16}
# gems/gitlab-secret_dection
BuildRequires: %{rubygem grpc >= 1.63.0}
BuildRequires: %{rubygem grpc-tools = 1.63.0}
BuildRequires: %{rubygem parallel >= 1.22}
BuildRequires: %{rubygem re2 >= 2.4}
BuildRequires: %{rubygem toml-rb >= 2.2}
# hack so that grpc-tools doesnt have it as runtime dep
BuildRequires: grpc-devel
BuildRequires: protobuf-devel
#/hack
# gems/gitlab-safe_request_store
BuildRequires: %{rubygem rack:2.2 >= 2.2.8}
BuildRequires: %{rubygem request_store}
# gems/gitlab-http
BuildRequires: %{rubygem activesupport:7 >= 7.0}
BuildRequires: %{rubygem concurrent-ruby:1 >= 1.2}
BuildRequires: %{rubygem httparty:0 >= 0.21.0}
BuildRequires: %{rubygem ipaddress:0.8 >= 0.8.3}
BuildRequires: %{rubygem railties:7 >= 7.0}
BuildRequires: %{rubygem net-http = 0.4.1}
# gems/gitlab-database-load_balancing
BuildRequires: %{rubygem gitlab-net-dns:0.12 >= 0.12.0}
BuildRequires: %{rubygem pg:1.5 >= 1.5.4}
BuildRequires: %{rubygem rails:7.0 >= 7.0.8}
# gems/gitlab-backup-cli
BuildRequires: %{rubygem thor:1 >= 1.3}
BuildRequires: %{rubygem typhoeus:1 >= 1.0.1}
BuildRequires: %{rubygem googleauth:1.8 >= 1.8.1}
BuildRequires: %{rubygem google-cloud-storage_transfer:1.2 >= 1.2.0}
BuildRequires: %{rubygem rainbow:3 >= 3.0}
BuildRequires: %{rubygem addressable >= 2.8}
BuildRequires: %{rubygem concurrent-ruby >= 1.1}
BuildRequires: %{rubygem faraday >= 2}
BuildRequires: %{rubygem google-protobuf >= 3.25.3}
BuildRequires: %{rubygem grpc >= 1.63.0}
BuildRequires: %{rubygem json >= 2.7.6}
BuildRequires: %{rubygem jwt >= 2.5}
BuildRequires: %{rubygem logger >= 1.5.3}
BuildRequires: %{rubygem minitest >= 5.11.0}
BuildRequires: %{rubygem parallel >= 1.19}
BuildRequires: %{rubygem rack >= 2.2.9}
BuildRequires: %{rubygem rexml >= 3.4.0}
# gems/click_house-client
BuildRequires: %{rubygem activesupport:7}
BuildRequires: %{rubygem addressable >= 2.8}
BuildRequires: %{rubygem json >= 2.7.6}
# gems/activerecord-gitlab
BuildRequires: %{rubygem activerecord:7}
# gems/gitlab-backup-cli
BuildRequires: %{rubygem activesupport:7}
BuildRequires: %{rubygem googleauth:1.8}
BuildRequires: %{rubygem google-cloud-storage_transfer:1.2}
BuildRequires: %{rubygem rainbow:3 >= 3.0}
BuildRequires: %{rubygem thor:1 >= 1.3}
# gems/openbao_client
BuildRequires: %{rubygem typhoeus:1 >= 1.0.1}
# gems/gitlab-housekeeper
BuildRequires: %{rubygem activesupport}
BuildRequires: %{rubygem awesome_print}
BuildRequires: %{rubygem httparty}
BuildRequires: %{rubygem rubocop}
# gems/gitlab-active-context
BuildRequires: %{rubygem opensearch-ruby}
BuildRequires: %{rubygem elasticsearch}
%go_nostrip
%description
GitLab offers git repository management, code reviews, issue tracking, activity
feeds and wikis. Enterprises install GitLab on-premise and connect it with LDAP
and Active Directory servers for secure authentication and authorization. A
single GitLab server can handle more than 25,000 users but it is also possible
to create a high availability setup with multiple active servers.
%prep
mv %{_sourcedir}/%{name}-%{version} %{_builddir}/%{name}-%{version}
%setup -q -D -T 0 -a 1
%rails_save_gemfile
%autopatch -p1
perl -p -i -e 's|-ee||g' VERSION
%build
export RAILS5="false"
export RAILS_ENV="production"
export NODE_ENV="production"
rm ./gems/gitlab-backup-cli/Gemfile.lock
%rails_fix_ruby_shebang bin/* qa/bin/qa scripts/* spec/support/*
%rails_regen_gemfile_lock
%rails_fix_ruby_suffix
%rails_write_appinfo
%if %{with rebuilding_nodejs_modules}
find -name \*.node -print -delete
yarn install --offline --pure-lockfile --ignore-engines --production --cache-folder=$PWD/tmp/cache/
find -name \*'node -ls
rm -r $PWD/tmp/cache/
%endif
%if %{with allow_rebuilding_assets}
find node_modules/ \( -name \*.md~ -o -name \*.un~ \) -print -delete
%endif
# allow webpack to use more memory for source maps
for S in node_modules/.bin/webpack* ; do
SB="${S}.backup"
cp ${S} ${SB}
perl -p -i -e 's|#!/usr/bin/env node|#!%{_bindir}/node --max-old-space-size=8192|g' $S
diff -urN ${SB} ${S} || :
rm ${SB}
done
# fill the REVISION file used for the admin dashboard
ruby.%{rb_suffix} "%{SOURCE99}" "%{version}"
sha256sum Gemfile.lock Gemfile
# no longer needed as we downgraded to an older redis library. only needed for >= 4.2
# echo 'Redis.exists_returns_integer = false' > config/initializers_before_autoloader/99_shutup_redis.rb
# generate assets
sed -e "s|/usr/share/gitlab/shell/|$PWD/|g" < config/gitlab.yml.example > config/gitlab.yml
# install -m 0644 %{SOURCE97} lib/tasks/gettext_i18n_rails_js_tasks_override.rake
mv config/initializers/active_record_force_reconnects.rb{,.save}
export RAILS_ENV="production"
export DATABASE_URL=postgresql://none:none@127.0.0.1/none
echo -e "
production:
main:
adapter: postgresql
encoding: unicode
database: none
username: none
password: none
host: localhost
ci:
adapter: postgresql
encoding: unicode
database: none
username: none
password: none
host: localhost
database_tasks: false
" > config/database.yml
# this is extracted from lib/tasks/gitlab/assests.rake
# assets:clean \
# gettext:po_to_json2 \
# gettext:po_to_json2 \
# rake:assets:precompile \
./bin/bundle exec ./bin/rake \
gitlab:assets:clean \
gitlab:assets:compile
rm config/database.yml
mv config/initializers/active_record_force_reconnects.rb{.save,}
# make sure we own the config/ files by copying example files
for i in config/*.example ; do
install -m 0640 ${i} ${i%%\.example}
done
touch .gitlab_shell_secret .gitlab_workhorse_secret .gitlab_pages_secret
touch \
log/api_json.log \
log/application.log \
log/audit_json.log \
log/githost.log \
log/gitlab-shell.log \
log/grpc.log \
log/production.log \
log/production_json.log \
log/sidekiq.log \
log/puma.stderr.log \
log/puma.stdout.log
# https://gitlab.com/gitlab-org/gitlab-ce/issues/57047
chmod -x \
lib/support/deploy/deploy.sh \
scripts/review_apps/automated_cleanup.rb \
scripts/review_apps/review-apps.sh \
vendor/languages.yml
chmod +x \
scripts/create_postgres_user.sh \
scripts/schema_changed.sh
# cleanup
rm -r \
%if ! %{with allow_rebuilding_assets}
tmp/cache/assets/sprockets/v3.0/* node_modules/ \
tmp/cache/vue-loader/* tmp/cache/babel-loader/* \
%endif
spec/
find -type f \( -name .gitkeep -o -name .gitignore \) -print -delete
# add missing directories
mkdir -p public/uploads/-/system/{tmp,user,project,group} public/uploads/tmp tmp/sessions tmp/sockets/private/internal log/gitaly
chmod -R u=rwX,g=rX,o= .
chmod -R o+rX public config.ru
chmod go+X .
chmod -R go+X tmp/
chmod -R go= tmp/sockets/private/
cp ${RPM_SOURCE_DIR}/gitlab-ce-update{,.back}
perl -p -i -e "s/SPROCKETS_FILE/$(basename $(find -name .sprockets-man\*))/" ${RPM_SOURCE_DIR}/gitlab-ce-update
diff -urN ${RPM_SOURCE_DIR}/gitlab-ce-update{.back,} ||:
rm ${RPM_SOURCE_DIR}/gitlab-ce-update.back
rm -f yarn-error.log
echo "obs://%{_project}/%{name}" > INSTALLATION_TYPE
pushd workhorse
make VERSION="%{version}"
rm -rv vendor/
popd
find -name \*.orig -print -delete
%install
install -D -d -m 0751 %{buildroot}%{app_dir}/
rsync -a --exclude=workhorse/ $PWD/ %{buildroot}%{app_dir}/
for i in gitlab-workhorse gitlab-zip-cat gitlab-zip-metadata ; do
install -D -m 0755 workhorse/$i %{buildroot}%{_sbindir}/$i
done
install -D -m 0755 -d %{buildroot}%{_unitdir}/ %{buildroot}%{_sbindir}
install -D -m 0755 %{SOURCE13} %{buildroot}%{_sbindir}/gitlab-ce-migrate-services
install -D -m 0755 %{SOURCE10} %{buildroot}%{_sbindir}/%{name}-update
install -D -m 0644 \
%{SOURCE12} %{SOURCE11} %{SOURCE14} %{SOURCE15} %{SOURCE16} \
%{buildroot}%{_unitdir}/
for i in sidekiq puma update workhorse ; do
ln -sf /sbin/service %{buildroot}%{_sbindir}/rc%{name}-$i
done
cp %{SOURCE3} .
%pre
%service_add_pre %{gitlab_service_list}
%post
%{_sbindir}/gitlab-ce-migrate-services ||:
touch %{app_dir}/tmp/rebuild.txt
%service_add_post %{gitlab_service_list}
%preun
%service_del_preun %{gitlab_service_list}
%postun
%service_del_postun %{gitlab_service_list}
%posttrans
# we can not use the ruby script here as it might be uninstalled already
# Though in the full uninstall case the trigger files should not exist
# and no action should be triggered.
if [ -x /usr/bin/systemctl ] ; then
if [ -e /run/gitlab-ce-services-enable ] ; then
/usr/bin/systemctl enable $(</run/gitlab-ce-services-enable) ||:
fi
if [ -e /run/gitlab-ce-services-start ] ; then
/usr/bin/systemctl start $(</run/gitlab-ce-services-start) ||:
fi
fi
%files
%doc extensions.sql
%license LICENSE
%{_sbindir}/gitlab-workhorse
%{_sbindir}/gitlab-zip-cat
%{_sbindir}/gitlab-zip-metadata
%{_sbindir}/rc%{name}-*
%{_unitdir}/gitlab-ce.target
%{_unitdir}/gitlab-ce-sidekiq.service
%{_unitdir}/gitlab-ce-puma.service
%{_unitdir}/gitlab-ce-update.service
%{_unitdir}/gitlab-workhorse.service
%{_sbindir}/gitlab-ce-update
%{_sbindir}/gitlab-ce-migrate-services
%dir /srv/www
%dir %{vhosts_dir}
%defattr(-,root,gitlab)
%config(noreplace) %{app_dir}/config/
%{app_dir}/GITLAB_ZOEKT_VERSION
%{app_dir}/argo_translation.yml
%{app_dir}/doc-locale/
%{app_dir}/.eslint_todo/
%{app_dir}/.rubocop/
%{app_dir}/.gitpod.yml
%{app_dir}/.test_license_encryption_key.pub
%{app_dir}/.appinfo.yml
%{app_dir}/app
%{app_dir}/bin
%{app_dir}/CHANGELOG.md
%{app_dir}/config.ru
%{app_dir}/crowdin.yml
%{app_dir}/CONTRIBUTING.md
%{app_dir}/changelogs/
%{app_dir}/db
%{app_dir}/data
%{app_dir}/Dangerfile
%{app_dir}/danger
%{app_dir}/storybook/
%{app_dir}/doc
%{app_dir}/.dockerignore
%{app_dir}/docker-compose.yml
%{app_dir}/Dockerfile.assets
%{app_dir}/fixtures
%{app_dir}/file_hooks/
%{app_dir}/generator_templates/
%{app_dir}/Gemfile
%{app_dir}/Gemfile.next*
%{app_dir}/Gemfile.checksum
%{app_dir}/Gemfile.upstream
%{app_dir}/Gemfile.lock
%{app_dir}/Gemfile.lock.upstream
%{app_dir}/DUO_WORKFLOW_EXECUTOR_VERSION
%{app_dir}/GITLAB_ELASTICSEARCH_INDEXER_VERSION
%{app_dir}/GITLAB_KAS_VERSION
%{app_dir}/GITLAB_PAGES_VERSION
%{app_dir}/GITLAB_SHELL_VERSION
%{app_dir}/GITLAB_WORKHORSE_VERSION
%{app_dir}/GITALY_SERVER_VERSION
%{app_dir}/Guardfile
%{app_dir}/jest.config*.js
%{app_dir}/lib/
%{app_dir}/locale/
%if %{with allow_rebuilding_assets}
%{app_dir}/node_modules/
%endif
%{app_dir}/LICENSE
%{app_dir}/MAINTENANCE.md
%dir %{app_dir}/public
%{app_dir}/public/404.html
%{app_dir}/public/422.html
%{app_dir}/public/500.html
%{app_dir}/public/502.html
%{app_dir}/public/503.html
%{app_dir}/public/apple-touch-icon.png
#verify(not mtime size md5)
%{app_dir}/public/-/
%{app_dir}/public/assets/
%{app_dir}/public/deploy.html
%{app_dir}/public/robots.txt
%{app_dir}/public/slash-command-logo.png
%{app_dir}/rubocop
%{app_dir}/Rakefile
%{app_dir}/README.md
%{app_dir}/REVISION
%{app_dir}/scripts
#{app_dir}/spec
%{app_dir}/vendor
%{app_dir}/VERSION
%{app_dir}/babel.config.js
%{app_dir}/.browserslistrc
%{app_dir}/.editorconfig
%{app_dir}/package.json
%{app_dir}/.projections.json.example
%{app_dir}/.github/
%{app_dir}/.gitlab/
%{app_dir}/.git-blame-ignore-revs
%ghost %config(noreplace) %attr(0640,root,gitlab) %{app_dir}/.gitlab_pages_secret
%ghost %config(noreplace) %attr(0640,root,gitlab) %{app_dir}/.gitlab_shell_secret
%ghost %config(noreplace) %attr(0640,root,gitlab) %{app_dir}/.gitlab_workhorse_secret
%ghost %config(noreplace) %attr(0640,root,gitlab) %{app_dir}/.gitlab_kas_secret
%{app_dir}/.gitattributes
%{app_dir}/.gitlab-ci.yml
%{app_dir}/.haml-lint.yml
%{app_dir}/lefthook.yml
%{app_dir}/metrics_server/
%{app_dir}/INSTALLATION_TYPE
%{app_dir}/DEI.md
%{app_dir}/keeps/
%{app_dir}/.mailmap
%{app_dir}/.nvmrc
%{app_dir}/PHILOSOPHY.md
%{app_dir}/jest_resolver.js
%{app_dir}/Pipfile
%{app_dir}/Pipfile.lock
%{app_dir}/.prettierignore
%{app_dir}/.prettierrc
%{app_dir}/.rubocop_todo/
%{app_dir}/.rubocop.yml
%{app_dir}/.ruby-version
%{app_dir}/sidekiq_cluster/
%{app_dir}/patches/
%{app_dir}/gems/
%{app_dir}/.stylelintrc
%{app_dir}/tests.yml
%{app_dir}/tooling/
%{app_dir}/yarn.lock
%{app_dir}/qa/
%{app_dir}/.yamllint
%{app_dir}/haml_lint/
%{app_dir}/.license_encryption_key.pub
%{app_dir}/.vale.ini
%{app_dir}/.solargraph.yml.example
%{app_dir}/.lefthook/
%{app_dir}/.gitleaksignore
%{app_dir}/postcss.config.js
%{app_dir}/vite.config.js
%{app_dir}/.index.yml.example
%{app_dir}/axe-linter.yml
%{app_dir}/.graphqlrc
%{app_dir}/.markdownlint-cli2.yaml
%{app_dir}/GITLAB_OPENBAO_VERSION
%{app_dir}/eslint.config.mjs
%defattr(-,gitlab,gitlab)
%{app_dir}/public/uploads/
%{app_dir}/tmp/
%dir %{app_dir}/log/
%dir %{app_dir}/log/gitaly/
%ghost %{app_dir}/log/*.log
%changelog