Log In
Log In
Places
All Projects
Status Monitor
Collapse sidebar
obs:server:fedora:2.9
obs-server
obs-server.spec
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File obs-server.spec of Package obs-server
# # spec file for package obs-server # # Copyright (c) 2014 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/ # %if 0%{?fedora} || 0%{?rhel} %global apache_user apache %global apache_group apache %bcond_without selinux %else %global apache_user wwwrun %global apache_group www %bcond_with selinux %endif %if !0%{?_httpd_confdir:1} %define _httpd_confdir %{_sysconfdir}/httpd/conf.d %endif %define secret_key_file %{_datadir}/obs-api/config/secret.key %if 0%{?suse_version} >= 1315 %define reload_on_update() %{?nil: test -n "$FIRST_ARG" || FIRST_ARG=$1 if test "$FIRST_ARG" -ge 1 ; then test -f /etc/sysconfig/services && . /etc/sysconfig/services if test "$YAST_IS_RUNNING" != "instsys" -a "$DISABLE_RESTART_ON_UPDATE" != yes ; then test -x /bin/systemctl && /bin/systemctl daemon-reload >/dev/null 2>&1 || : for service in %{?*} ; do test -x /bin/systemctl && /bin/systemctl reload $service >/dev/null 2>&1 || : done fi fi %nil } %endif # Macros for Suse compatibility. %if 0%{?fedora} || 0%{?rhel} %define enable_services() %{?nil: for service in %{?*}; do /sbin/chkconfig --add $service done %{nil} } %else %define enable_services() %{nil} %endif %if !0%{?stop_on_removal:1} %if 0%{?fedora} || 0%{?rhel} %define stop_on_removal() %{?nil: if [ "$1" = 0 ]; then for service in %{?*}; do /sbin/service $service stop >/dev/null 2>&1 /sbin/chkconfig --del $service done fi %{nil} } %else %define stop_on_removal() %{nil} %endif %endif %if !0%{?restart_on_update:1} %if 0%{?fedora} || 0%{?rhel} %define restart_on_update() %{?nil: if [ "$1" -ge 1 ]; then for service in %{?*}; do /sbin/service $service condrestart >/dev/null 2>&1 done fi %{nil} } %else %define restart_on_update() %{nil} %endif %endif %if !0%{?reload_on_update:1} %if 0%{?fedora} || 0%{?rhel} %define reload_on_update() %{?nil: if [ "$1" -ge 1 ]; then for service in %{?*}; do /sbin/service $service reload >/dev/null 2>&1 done fi %{nil} } %else %define restart_on_update() %{nil} %endif %endif %if !0%{?run_permissions:1} %define run_permissions() %{nil} %endif %if !0%{?fillup_and_insserv:1} %define fillup_and_insserv(n:) %{nil} %endif %if !0%{?insserv_cleanup:1} %define insserv_cleanup() %{nil} %endif %if !0%{?verifyscript:1} %define verifyscript(n:) %{nil} %endif %if !0%{?verify_permissions:1} %define verify_permissions() %{nil} %endif %if !0%{?service_add_pre:1} %define service_add_pre() %{nil} %endif %if !0%{?service_add_post:1} %define service_add_post() %systemd_post %{?*} %endif %if !0%{?service_del_preun:1} %define service_del_preun() %systemd_preun %{?*} %endif %if !0%{?service_del_postun:1} %define service_del_postun() %systemd_postun_with_restart %{?*} %endif %if 0%{fedora} < 29 %define patches_to_apply %(a=(%{patches}); echo ${a[@]:0:((${#a[@]}-6))}) %else %define patches_to_apply %{patches} %endif Name: obs-server Summary: The Open Build Service -- Server Component License: GPL-2.0 and GPL-3.0 %if 0%{?suse_version} < 1210 && 0%{?suse_version:1} Group: Productivity/Networking/Web/Utilities %endif Version: 2.9.6 Release: 1 Url: http://www.openbuildservice.org BuildRoot: %{_tmppath}/%{name}-%{version}-build Source0: https://github.com/openSUSE/open-build-service/archive/%{version}/open-build-service-%{version}.tar.gz Source1: find-requires.sh Source2: obs-server-rc-compat Source3: crawler-user-agents.json Patch1: obs-server-2.9-0001-api-Use-bundler_ext-instead-of-bundler-if-Gemfile.in.patch Patch2: obs-server-2.9-0002-api-Require-json-gem-explicitly-for-tests.patch Patch3: obs-server-2.9-0003-api-Log-server-name-to-test-log-for-backend-log-mess.patch Patch4: obs-server-2.9-0004-api-Use-OBS_API_PREFIX-instead-of-explicit-pathname-.patch Patch5: obs-server-2.9-0005-backend-Make-OBS_BACKEND_DATA_DIR-variable-configura.patch Patch6: obs-server-2.9-0006-dist-Set-proper-Apache-user-group-when-installing-sc.patch Patch7: obs-server-2.9-0007-backend-Set-proper-pathnames-when-installing-backend.patch Patch8: obs-server-2.9-0008-dist-Set-proper-pathnames-when-installing-dist-files.patch Patch9: obs-server-2.9-0009-dist-Use-configuration-variables-instead-of-hardcode.patch Patch10: obs-server-2.9-0010-api-Use-absolute-pathnames-for-apidocs-in-config-env.patch Patch11: obs-server-2.9-0011-dist-Make-fillup-file-location-and-name-configurable.patch Patch12: obs-server-2.9-0012-dist-Make-obs-devel-doc-location-configutrable.patch Patch13: obs-server-2.9-0013-backend-Fix-cleanup-in-BSSched-EventSource-Directory.patch Patch14: obs-server-2.9-0014-api-Autodetect-mysqld-and-memcached-pathname-for-api.patch Patch15: obs-server-2.9-0015-api-Specify-mysqld-pidfile-explicitly-for-api-test.patch Patch16: obs-server-2.9-0016-webui-Wait-for-flash-message-to-appear-in-webui-test.patch Patch17: obs-server-2.9-0017-dist-Make-tests-respect-INITDDIR-and-SBINDIR-configu.patch Patch18: obs-server-2.9-0018-dist-api-backend-Make-backend-ports-configurable.patch Patch19: obs-server-2.9-0019-dist-backend-Make-backend-log-directory-configurable.patch Patch20: obs-server-2.9-0020-api-Make-api-log-directory-configurable.patch Patch21: obs-server-2.9-0021-dist-Allow-worker-to-use-tmpfs-for-other-virtualisat.patch Patch22: obs-server-2.9-0022-ci-Fix-compatibility-with-Ruby-2.3-in-webui-helper-t.patch Patch23: obs-server-2.9-0023-Revert-ci-Downgrade-Airbrake-ruby-to-solve-Errbit-bu.patch Patch24: obs-server-2.9-0024-frontend-Require-less-specific-version-of-rspec-rail.patch Patch25: obs-server-2.9-0025-ci-Nomalise-schema-files-more-before-comparing-them.patch Patch26: obs-server-2.9-0026-api-Convert-tables-created-without-default-charset-t.patch Patch27: obs-server-2.9-0027-dist-Use-python2-instead-of-python-as-interpreter.patch Patch28: obs-server-2.9-0028-frontend-Require-mini_mime-gem-explicitly.patch Patch29: obs-server-2.9-0029-frontend-Require-minimal-version-of-sanitize-webmock.patch Patch30: obs-server-2.9-0030-backend-Make-chekconstraints-in-repserver-not-fail-o.patch Patch31: obs-server-2.9-0031-ci-Make-test-backend-crash-more-prominent.patch Patch32: obs-server-2.9-0032-ci-Actually-wait-for-scheduler-when-test-backend-is-.patch Patch33: obs-server-2.9-0033-frontend-Drop-halt_callback_chains_on_return_false.patch Patch34: obs-server-2.9-0034-Update-data_migrate-to-version-5.2.0.patch Patch35: obs-server-2.9-0035-frontend-Rails-5.2-Add-a-primary-key-to-data-migrati.patch Patch36: obs-server-2.9-0036-webui-ci-Configure-Capybara-with-webrick.patch Patch37: obs-server-2.9-0037-webui-ci-Adapt-tests-to-update-Capybara.patch Patch38: obs-server-2.9-0038-ci-Make-feature-test-more-flexible.patch Patch39: obs-server-2.9-0039-ci-Add-rspec-retry.patch Patch40: obs-server-2.9-0040-backend-Support-new-VM-types-without-modifying-worke.patch Patch41: obs-server-2.9-0041-ci-Make-validator-unit-test-more-flexible.patch Patch42: obs-server-2.9-0042-frontend-Properly-remove-annotate-gem.patch Patch43: obs-server-2.9-0043-api-fix-build-for-mariadb-10.4.patch Patch44: obs-server-2.9-0044-frontend-Require-some-dependencies-explicitly.patch Patch45: obs-server-2.9-0045-backend-support-newer-gpg-2.1.patch Patch46: obs-server-2.9-0046-backend-bs_dodup-support-xz-compressed-Packages-file.patch Patch47: obs-server-2.9-0047-backend-createrelease_debian-use-utc-instead-of-loca.patch Patch101: obs-server-2.9-0101-frontend-Update-OBS-to-Rails-version-5.2.patch Patch102: obs-server-2.9-0102-frontend-Rails-5.2-Add-a-prefix-to-kiwi-preference-e.patch Patch103: obs-server-2.9-0103-frontend-Rails-5.2-Fix-checking-if-data-migration-wa.patch Patch104: obs-server-2.9-0104-frontend-Rails-5.2-Update-database-rake-task.patch Patch105: obs-server-2.9-0105-frontend-Rails-5.2-Update-callback-in-bs-request-mod.patch Patch106: obs-server-2.9-0106-Fix-rails-5.2.2-incompability.patch BuildRequires: python-devel # make sure this is in sync with the RAILS_GEM_VERSION specified in the # config/environment.rb of the various applications. # atm the obs rails version patch above unifies that setting among the applications # also see requires in the obs-server-api sub package BuildRequires: build >= 20170315 BuildRequires: inst-source-utils BuildRequires: perl(BSSolv) >= 0.07 BuildRequires: perl-Compress-Zlib BuildRequires: perl-Diff-LibXDiff BuildRequires: perl-File-Sync >= 0.10 BuildRequires: perl-JSON-XS BuildRequires: perl-Net-SSLeay BuildRequires: perl-Socket-MsgHdr BuildRequires: perl-TimeDate BuildRequires: perl-XML-Parser BuildRequires: perl-XML-Simple BuildRequires: perl(Digest::MD5) BuildRequires: perl(Digest::SHA) BuildRequires: perl(Devel::Cover) BuildRequires: perl(Test::Simple) > 1 BuildRequires: perl(Test::Harness) BuildRequires: perl(Archive::Tar) BuildRequires: procps # Required by the test suite (contains /usr/bin/Xvfb) BuildRequires: /usr/bin/Xvfb Requires(pre): %{_sbindir}/useradd %{_sbindir}/groupadd BuildArch: noarch Requires: obs-common Requires: build >= 20170315 Requires: perl(BSSolv) >= 0.14 Requires: perl(Date::Parse) # Required by source server Requires: diffutils Requires(pre): git-core Requires: patch %if 0%{?suse_version:1} # require the createrepo and python-yum version which got validated during testsuite run Requires: %(/bin/bash -c 'rpm -q --qf "%%{name} = %%{version}-%%{release}" createrepo') Requires: %(/bin/bash -c 'rpm -q --qf "%%{name} = %%{version}-%%{release}" python-yum') %else Requires: createrepo >= 0.10.4 %endif BuildRequires: xz %if 0%{?suse_version:1} BuildRequires: fdupes PreReq: %insserv_prereq permissions pwdutils %endif %if 0%{?fedora} || 0%{?rhel} Requires: chkconfig %endif %if 0%{?suse_version:1} Recommends: yum yum-metadata-parser repoview dpkg Recommends: deb >= 1.5 Recommends: lvm2 Recommends: openslp-server Recommends: obs-signd Recommends: inst-source-utils Recommends: perl-Diff-LibXDiff %else Requires: dpkg %endif Requires: perl-Compress-Zlib Requires: perl-File-Sync >= 0.10 Requires: perl-JSON-XS Requires: perl-Net-SSLeay Requires: perl-Socket-MsgHdr Requires: perl-XML-Parser Requires: perl-XML-Simple Requires: perl(Digest::MD5) Requires: perl(Digest::SHA) Requires: perl(Archive::Tar) %if %{with selinux} BuildRequires: selinux-policy-devel BuildRequires: checkpolicy %endif Obsoletes: obs-source_service < 2.9 Obsoletes: obs-productconverter < 2.9 Provides: obs-source_service = %{version} Provides: obs-productconverter = %{version} Recommends: obs-service-download_url Recommends: obs-service-verify_file %if 0%{?suse_version} >= 1210 BuildRequires: systemd-rpm-macros %endif %if 0%{fedora} || 0%{?rhel} BuildRequires: systemd-units %endif %{?systemd_requires} %description The Open Build Service (OBS) backend is used to store all sources and binaries. It also calculates the need for new build jobs and distributes it. %package -n obs-worker Requires: obs-common Requires: cpio Requires: curl Requires: perl-Compress-Zlib Requires: perl-TimeDate Requires: perl-XML-Parser Requires: screen # for build script Requires: psmisc # For runlevel script: Requires: curl Recommends: openslp lvm2 Requires: bash Requires: binutils Requires: bsdtar Summary: The Open Build Service -- Build Host Component %if 0%{?suse_version} && 0%{?suse_version} < 1210 Group: Productivity/Networking/Web/Utilities %endif %if 0%{?suse_version} PreReq: %insserv_prereq %endif %if 0%{?suse_version} <= 1030 Requires: lzma %endif Requires: util-linux >= 2.16 # the following may not even exist depending on the architecture Recommends: powerpc32 %description -n obs-worker This is the obs build host, to be installed on each machine building packages in this obs installation. Install it alongside obs-server to run a local playground test installation. %package -n obs-common Summary: The Open Build Service -- base configuration files %if 0%{?suse_version} && 0%{?suse_version} < 1210 Group: Productivity/Networking/Web/Utilities %endif %if 0%{?suse_version} PreReq: %fillup_prereq %endif %description -n obs-common This is a package providing basic configuration files. %package -n obs-api Summary: The Open Build Service -- The API and WEBUI %if 0%{?suse_version} && 0%{?suse_version} < 1210 Group: Productivity/Networking/Web/Utilities %endif %if 0%{?suse_version} PreReq: %insserv_prereq %endif Requires: obs-common %if 0%{?suse_version} >= 1330 Requires(pre): group(www) %endif %if 0%{?fedora} >= 19 Requires: ruby(release) Requires: ruby(rubygems) %endif %if 0%{?suse_version:1} #For apache Requires: apache2 apache2-mod_xforward rubygem-passenger-apache2 ruby2.5-rubygem-passenger %endif # memcache is required for session data Requires: memcached Conflicts: memcached < 1.4 Requires: mysql %if %{with selinux} Requires: policycoreutils %endif Requires: ruby >= 2.0 # needed for fulltext searching Requires: sphinx >= 2.1.8 BuildRequires: obs-api-testsuite-deps = %{version} BuildRequires: rubygem(ruby-ldap) # For doc generation BuildRequires: rubygem(i18n) # for test suite: BuildRequires: createrepo >= 0.10.4 BuildRequires: curl BuildRequires: memcached >= 1.4 BuildRequires: mysql BuildRequires: mysql-server %if 0%{?suse_version:1} BuildRequires: netcfg BuildRequires: xorg-x11-Xvnc BuildRequires: xorg-x11-server BuildRequires: xorg-x11-server-extra %endif BuildRequires: nodejs # write down dependencies for production BuildRequires: rubygem(bundler) Requires: %(bash %{S:1} %{S:0} "production" %{patches_to_apply}) # for rebuild_time Requires: perl(GD) %if 0%{?fedora} || 0%{?rhel} Requires: chkconfig %endif %if 0%{?suse_version:1} Requires: ghostscript-fonts-std %else Requires: ghostscript-fonts %if 0%{?fedora} || 0%{?rhel} Requires: urw-fonts %endif %endif Obsoletes: obs-api-doc %description -n obs-api This is the API server instance, and the web client for the OBS. %package -n obs-devel Summary: The Open Build Service -- The API and WEBUI Testsuite %if 0%{?suse_version} < 1210 && 0%{?suse_version:1} Group: Productivity/Networking/Web/Utilities %endif Obsoletes: obs-webui-testsuite Requires: obs-api = %{version}-%{release} %requires_eq obs-api-testsuite-deps %description -n obs-devel Install to track dependencies for git %package -n obs-utils Summary: The Open Build Service -- utilities %if 0%{?suse_version} < 1210 && 0%{?suse_version:1} Group: Productivity/Networking/Web/Utilities %endif Requires: build Requires: osc %description -n obs-utils obs_project_update is a tool to copy a packages of a project from one obs to another %package -n obs-tests-appliance Summary: The Open Build Service -- Test cases for installed appliances Requires: obs-server = %{version} Requires: obs-api = %{version} %if 0%{?suse_version} < 1210 && 0%{?suse_version:1} Group: Productivity/Networking/Web/Utilities %endif %description -n obs-tests-appliance This package contains test cases for testing a installed appliances. Test cases can be for example: * checks for setup-appliance.sh * checks if database setup worked correctly * checks if required service came up properly %package -n obs-cloud-uploader Summary: The Open Build Service -- Image Cloud Uploader Requires: obs-server Requires: aws-cli %if 0%{?suse_version} > 1315 || 0%{fedora} >= 28 Requires: python3-ec2uploadimg %else Requires: python-ec2uploadimg %endif Group: Productivity/Networking/Web/Utilities %description -n obs-cloud-uploader This package contains all the necessary tools for upload images to the cloud. %package plugin-notify_hermes Summary: The Open Build Service -- notification plugin for Hermes Group: Productivity/Networking/Web/Utilities BuildArch: noarch Requires: %{name} %description plugin-notify_hermes Plugin for Open Build Service to send event notifications through Hermes notification distribution system. See http://en.opensuse.org/openSUSE:Hermes for details. %package plugin-notify_rabbitmq Summary: The Open Build Service -- notification plugin for RabbitMQ Group: Productivity/Networking/Web/Utilities BuildArch: noarch Requires: %{name} %description plugin-notify_rabbitmq Plugin for Open Build Service to send event notifications through RabbitMQ is open source message broker. See http://www.rabbitmq.com/ for details. #-------------------------------------------------------------------------------- %prep %setup -q -n open-build-service-%version %patch1 -p1 %patch2 -p1 %patch3 -p1 %patch4 -p1 %patch5 -p1 %patch6 -p1 %patch7 -p1 %patch8 -p1 %patch9 -p1 %patch10 -p1 %patch11 -p1 %patch12 -p1 %patch13 -p1 %patch14 -p1 %patch15 -p1 %patch16 -p1 %patch17 -p1 %patch18 -p1 %patch19 -p1 %patch20 -p1 %patch21 -p1 %patch22 -p1 %patch23 -p1 %patch24 -p1 %patch25 -p1 %patch26 -p1 %patch27 -p1 %patch28 -p1 %patch29 -p1 %patch30 -p1 %patch31 -p1 %patch32 -p1 %patch33 -p1 %patch34 -p1 %patch35 -p1 %patch36 -p1 %patch37 -p1 %patch38 -p1 %patch39 -p1 %patch40 -p1 %patch41 -p1 %patch42 -p1 %patch43 -p1 %patch44 -p1 %patch45 -p1 %patch46 -p1 %patch47 -p1 %if 0%{fedora} >= 29 %patch101 -p1 %patch102 -p1 %patch103 -p1 %patch104 -p1 %patch105 -p1 %patch106 -p1 %endif # drop build script, we require the installed one from own package rm -rf src/backend/build find . -name .git\* \ -o -name Capfile \ -o -name deploy.rb \ -o -name Gemfile.lock \ | xargs rm -rf #Run the test suite with current config version cp %{SOURCE3} src/api/config/ %if 0%{?fedora} || 0%{?rhel} sed -i \ -e '1s|^#!/usr/bin/env ruby\.ruby.*|#!/usr/bin/ruby|' \ -e '1s|^#!/usr/bin/env ruby|#!/usr/bin/ruby|' \ -e '1s|^#! */usr/bin/ruby\.ruby.*|#!/usr/bin/ruby|' \ -e '1s|^#!/usr/bin/env rake\.ruby.*|#!/usr/bin/rake|' \ docs/api/restility/bin/* \ src/api/Rakefile \ src/api/bin/* \ src/api/script/* sed -i \ -e 's|ruby\.ruby[0-9.]*|ruby|g' \ -e 's|rake\.ruby[0-9.]*|rake|g' \ -e 's|rails\.ruby[0-9.]*|rails|g' \ -e 's|bundle\.ruby[0-9.]*|bundle|g' \ -e 's|rspec\.ruby[0-9.]*|rspec|g' \ -e 's|clockworkd\.ruby[0-9.]*|clockworkd|g' \ dist/setup-appliance.sh \ dist/obsapidelayed \ src/api/db/migrate/*.rb \ src/api/test/unit/*.rb \ src/api/script/* \ src/api/Makefile sed -i \ -e 's|/usr/bin/bundle[^ ]* exec ||g' \ dist/obs_api_delayed_jobs_monitor.cron %endif %if %{with selinux} mkdir src/selinux pushd src/selinux cat > obs-api.te <<EOF policy_module(obs-api, 1.0) require { type var_log_t; type passenger_tmp_t; type passenger_t; type httpd_t; class sock_file write; class file { ioctl open getattr append }; } #============= httpd_t ============== allow httpd_t passenger_tmp_t:sock_file write; #============= passenger_t ============== allow passenger_t var_log_t:file { ioctl open getattr append }; corenet_tcp_connect_memcache_port(passenger_t) corenet_tcp_connect_mysqld_port(passenger_t) corenet_tcp_connect_unreserved_ports(passenger_t) dev_manage_sysfs_dirs(passenger_t) init_rw_stream_sockets(passenger_t) EOF cat > obs-api.fc <<EOF /var/log/obs-api(/.*)? system_u:object_r:passenger_log_t:s0 %{_datadir}/obs-api/tmp(/.*)? system_u:object_r:passenger_tmp_t:s0 /var/lib/obs/repos(/.*)? system_u:object_r:httpd_sys_content_t:s0 EOF popd %endif %build export DESTDIR=$RPM_BUILD_ROOT # we need it for the test suite or it may silently succeed test -x /usr/bin/Xvfb # # generate apidocs # make %if %{with selinux} pushd src/selinux make -f %{_datadir}/selinux/devel/Makefile popd %endif %install export DESTDIR=$RPM_BUILD_ROOT %if 0%{?suse_version} < 1300 perl -p -i -e 's/^APACHE_VHOST_CONF=.*/APACHE_VHOST_CONF=obs-apache2.conf/' Makefile.include %endif sed -i \ -e 's|^BINDIR=.*|BINDIR=%{_bindir}|' \ -e 's|^SBINDIR=.*|SBINDIR=%{_sbindir}|' \ -e 's|^INITDDIR=.*|INITDDIR=%{_initddir}|' \ -e 's|^OBS_BACKEND_DATA_DIR=.*|OBS_BACKEND_DATA_DIR=%{_sharedstatedir}/obs|' \ -e 's|^OBS_BACKEND_LOG_DIR=.*|OBS_BACKEND_LOG_DIR=%{_localstatedir}/log/obs|' \ -e 's|^OBS_DOCUMENT_ROOT=.*|OBS_DOCUMENT_ROOT=%{_datadir}/obs|' \ -e 's|^OBS_API_PREFIX=.*|OBS_API_PREFIX=%{_datadir}/obs-api|' \ -e 's|^OBS_API_LOG_DIR=.*|OBS_API_LOG_DIR=%{_localstatedir}/log/obs-api|' \ -e 's|^OBS_APIDOCS_PREFIX=.*|OBS_APIDOCS_PREFIX=%{_datadir}/obs-api-doc|' \ %if 0%{?fedora} || 0%{?rhel} -e 's|^OBS_FILLUP_DIR=.*|OBS_FILLUP_DIR=%{_sysconfdir}/sysconfig|' \ -e 's|^OBS_FILLUP_FILE=.*|OBS_FILLUP_FILE=obs-server|' \ -e 's|^OBS_DEVEL_DOC_DIR=.*|OBS_DEVEL_DOC_DIR=%{_docdir}/obs-devel|' \ -e 's|^OBS_SRCSERVER_PORT=.*|OBS_SRCSERVER_PORT=15352|' \ -e 's|^OBS_REPOSERVER_PORT=.*|OBS_REPOSERVER_PORT=15252|' \ -e 's|^OBS_SERVICESERVER_PORT=.*|OBS_SERVICESERVER_PORT=15152|' \ -e 's|^APACHE_USER=.*|APACHE_USER=apache|' \ -e 's|^APACHE_GROUP=.*|APACHE_GROUP=apache|' \ -e 's|^APACHE_CONIFGDIR=.*|APACHE_CONIFGDIR=/etc/httpd|' \ -e 's|^APACHE_CONIFGDIR_VHOST=.*|APACHE_CONIFGDIR_VHOST=%{_httpd_confdir}|' \ %endif Makefile.include export OBS_VERSION="%{version}" DESTDIR=%{buildroot} RAILS_RELATIVE_URL_ROOT=../.. make install # Clean messages left over from installation %{__cp} /dev/null %{buildroot}%{_localstatedir}/log/obs-api/production.log %if 0%{?fedora} || 0%{?rhel} %{__mv} %{buildroot}%{_httpd_confdir}/obs.conf %{buildroot}%{_httpd_confdir}/obs.conf.dist %endif # # turn duplicates into hard links # # There's dupes between webui and api: %if 0%{?suse_version} >= 1030 %fdupes $RPM_BUILD_ROOT%{_datadir}/obs-api $RPM_BUILD_ROOT%{_datadir}/obs-api-doc %endif # fix build for SLE 11 %if 0%{?suse_version} < 1315 touch %{buildroot}/%{secret_key_file} chmod 0640 %{buildroot}/%{secret_key_file} %endif # To get the most current user agent list we need i-net access. Thus we fetch # the file via an OBS service and install it here. install -m 0644 %{SOURCE3} %{buildroot}%{_datadir}/obs-api/config # drop testcases for now rm -rf %{buildroot}%{_datadir}/obs-api/spec # fail when Makefiles created a directory if ! test -L %{buildroot}/usr/lib/obs/server/build; then echo "/usr/lib/obs/server/build is not a symlink!" exit 1 fi install -m 755 $RPM_BUILD_DIR/open-build-service-%version/dist/clouduploader.rb $RPM_BUILD_ROOT/%{_bindir}/clouduploader mkdir -p $RPM_BUILD_ROOT/etc/obs/cloudupload install -m 644 $RPM_BUILD_DIR/open-build-service-%version/dist/ec2utils.conf.example $RPM_BUILD_ROOT/etc/obs/cloudupload/.ec2utils.conf mkdir -p $RPM_BUILD_ROOT/etc/obs/cloudupload/.aws install -m 644 $RPM_BUILD_DIR/open-build-service-%version/dist/aws_credentials.example $RPM_BUILD_ROOT/etc/obs/cloudupload/.aws/credentials rm %{buildroot}%{_datadir}/obs-api/Gemfile.lock mv %{buildroot}%{_datadir}/obs-api/Gemfile %{buildroot}%{_datadir}/obs-api/Gemfile.in sed -i \ -e "s/'activerecord'/'active_record'/" \ -e "s/'actionmailer'/'action_mailer'/" \ -e "s/'yajl-ruby'/'yajl'/" \ %{buildroot}%{_datadir}/obs-api/Gemfile.in rm -rf %{buildroot}%{_datadir}/obs-api/.bundle %if %{with selinux} %{__mkdir_p} %{buildroot}%{_datadir}/selinux/packages/obs-api %{__install} -m644 src/selinux/obs-api.pp \ %{buildroot}%{_datadir}/selinux/packages/obs-api/obs-api.pp %endif %if !0%{?suse_version:1} install -d -m 755 $RPM_BUILD_ROOT%{_datadir}/obs install -m 0755 %{SOURCE2} $RPM_BUILD_ROOT%{_datadir}/obs/rc.compat sed -i \ -e 's|\. /etc/rc.status|. %{_datadir}/obs/rc.compat|' \ $RPM_BUILD_ROOT%{_initddir}/* %endif sed -i \ -e 's|/usr/bin/bundle[^ ]* exec ||' \ $RPM_BUILD_ROOT%{_initddir}/obsapidelayed %check %if 0%{?disable_obs_test_suite} echo "WARNING:" echo "WARNING: OBS test suite got skipped!" echo "WARNING:" exit 0 %endif export TZ=GMT export LANG=C.UTF-8 export DESTDIR=$RPM_BUILD_ROOT # check installed backend pushd $RPM_BUILD_ROOT/usr/lib/obs/server/ rm -rf build ln -sf /usr/lib/build build # just for %%check, it is a %%ghost popd # run in build environment pushd src/backend/ rm -rf build ln -sf /usr/lib/build build popd #### # start backend testing pushd $RPM_BUILD_ROOT/usr/lib/obs/server/ %if 0%{?disable_obs_backend_test_suite:1} < 1 # TODO: move syntax check to backend test suite for i in bs_*; do perl -wc "$i" done bash $RPM_BUILD_DIR/open-build-service-%version/src/backend/testdata/test_dispatcher || exit 1 popd make -C src/backend test %endif #### # start api testing # %if 0%{?disable_obs_frontend_test_suite:1} < 1 make -C src/api test %endif #### # distribution tests %if 0%{?disable_obs_dist_test_suite:1} < 1 make -C dist test %endif %pre getent passwd obsservicerun >/dev/null || \ /usr/sbin/useradd -r -g obsrun -d /usr/lib/obs -s %{sbin}/nologin \ -c "User for the build service source service" obsservicerun %service_add_pre obsdeltastore exit 0 %pre -n obs-common getent group obsrun >/dev/null || %{_sbindir}/groupadd -r obsrun getent passwd obsrun >/dev/null || \ %{_sbindir}/useradd -r -g obsrun -d /usr/lib/obs -s %{_sbindir}/nologin \ -c "User for build service backend" obsrun exit 0 %preun %stop_on_removal obssrcserver obsrepserver obsdispatcher obsscheduler obspublisher obswarden obssigner obsdodup obsservicedispatch obsservice %service_del_preun obsdeltastore %preun -n obs-worker %stop_on_removal obsworker %preun -n obs-cloud-uploader %stop_on_removal obsclouduploadworker obsclouduploadserver %post %enable_services obssrcserver obsrepserver obsdispatcher obsscheduler obspublisher obswarden obssigner obsdodup obsdeltastore %if 0%{?suse_version} >= 1315 %reload_on_update obssrcserver obsrepserver obsdispatcher obspublisher obswarden obssigner obsdodup obsservicedispatch obsservice %else %restart_on_update obssrcserver obsrepserver obsdispatcher obspublisher obswarden obssigner obsdodup obsservicedispatch obsservice %endif # systemd kills the init script executing the reload first on reload.... %restart_on_update obsscheduler %service_add_post obsdeltastore %post -n obs-cloud-uploader %enable_services obsservice %if 0%{?suse_version} >= 1315 %reload_on_update obsservice obsclouduploadworker obsclouduploadserver %else %restart_on_update obsservice obsclouduploadworker obsclouduploadserver %endif %posttrans # this changes from directory to symlink. rpm can not handle this itself. if [ -e /usr/lib/obs/server/build -a ! -L /usr/lib/obs/server/build ]; then rm -rf /usr/lib/obs/server/build fi if [ ! -e /usr/lib/obs/server/build ]; then ln -sf ../../build /usr/lib/obs/server/build fi %postun %insserv_cleanup %service_del_postun obsdeltastore # cleanup empty directory just in case rmdir %{_sharedstatedir}/obs 2> /dev/null || : %verifyscript -n obs-server %verify_permissions %post -n obs-worker %enable_services obsworker # NOT used on purpose: restart_on_update obsworker # This can cause problems when building chroot # and bs_worker is anyway updating itself at runtime based on server code %pre -n obs-api getent passwd obsapidelayed >/dev/null || \ %{_sbindir}/useradd -r -s /bin/bash -c "User for build service api delayed jobs" \ -d %{_datadir}/obs-api -g %{apache_group} obsapidelayed %post -n obs-common %enable_services obsstoragesetup %{fillup_and_insserv -n obs-server} %post -n obs-api if [ ! -e %{secret_key_file} ]; then pushd . cd %{_datadir}/obs-api/config ( umask 0077; cd %{_datadir}/obs-api && RAILS_ENV=production rake secret > %{secret_key_file} ) || exit 1 popd fi chmod 0640 %{secret_key_file} chown root.%{apache_group} %{secret_key_file} # update config sed -i -e 's,[ ]*adapter: mysql$, adapter: mysql2,' %{_datadir}/obs-api/config/database.yml touch %{_localstatedir}/log/obs-api/production.log chown %{apache_user}:%{apache_group} %{_localstatedir}/log/obs-api/production.log %if %{with selinux} semodule -i %{_datadir}/selinux/packages/obs-api/obs-api.pp restorecon -R %{_localstatedir}/log/obs-api %endif %restart_on_update apache2 %restart_on_update memcached %restart_on_update obsapisetup %restart_on_update obsapidelayed su %{apache_user} -s /bin/sh -c 'cd %{_datadir}/obs-api && RAILS_ENV=production rake db:migrate:with_data' %postun -n obs-api %insserv_cleanup %if %{with selinux} test "$1" -eq 0 && semodule -r obs-api >/dev/null 2>&1 || : %endif %files %defattr(-,root,root) %doc dist/{README.UPDATERS,README.SETUP} docs/openSUSE.org.xml ReleaseNotes-* README.md COPYING AUTHORS %dir /etc/slp.reg.d %dir /usr/lib/obs %dir /usr/lib/obs/server %config(noreplace) /etc/logrotate.d/obs-server %{_initddir}/obsdispatcher %{_initddir}/obspublisher %{_initddir}/obsrepserver %{_initddir}/obsscheduler %{_initddir}/obssrcserver %{_initddir}/obswarden %{_initddir}/obsdodup %{_unitdir}/obsdeltastore.service %{_initddir}/obsservicedispatch %{_initddir}/obssigner %{_sbindir}/obs_admin %{_sbindir}/obs_serverstatus %{_sbindir}/rcobsdispatcher %{_sbindir}/rcobspublisher %{_sbindir}/rcobsrepserver %{_sbindir}/rcobsscheduler %{_sbindir}/rcobssrcserver %{_sbindir}/rcobswarden %{_sbindir}/rcobsdodup %{_sbindir}/rcobsdeltastore %{_sbindir}/rcobsservicedispatch %{_sbindir}/rcobssigner %dir /usr/lib/obs/server/plugins /usr/lib/obs/server/BSDispatcher /usr/lib/obs/server/BSRepServer /usr/lib/obs/server/BSSched /usr/lib/obs/server/BSSrcServer /usr/lib/obs/server/XML /usr/lib/obs/server/*.pm /usr/lib/obs/server/BSConfig.pm.template /usr/lib/obs/server/DESIGN /usr/lib/obs/server/License /usr/lib/obs/server/README /usr/lib/obs/server/bs_admin /usr/lib/obs/server/bs_cleanup /usr/lib/obs/server/bs_archivereq /usr/lib/obs/server/bs_check_consistency /usr/lib/obs/server/bs_deltastore /usr/lib/obs/server/bs_servicedispatch /usr/lib/obs/server/bs_dodup /usr/lib/obs/server/bs_getbinariesproxy /usr/lib/obs/server/bs_mergechanges /usr/lib/obs/server/bs_mkarchrepo /usr/lib/obs/server/bs_notar /usr/lib/obs/server/bs_dispatch /usr/lib/obs/server/bs_publish /usr/lib/obs/server/bs_repserver /usr/lib/obs/server/bs_sched /usr/lib/obs/server/bs_serverstatus /usr/lib/obs/server/bs_srcserver /usr/lib/obs/server/bs_worker /usr/lib/obs/server/bs_signer /usr/lib/obs/server/bs_warden /usr/lib/obs/server/worker /usr/lib/obs/server/worker-deltagen.spec %config(noreplace) /usr/lib/obs/server/BSConfig.pm %config(noreplace) /etc/slp.reg.d/* %dir %attr(-,obsrun,obsrun) %{_sharedstatedir}/obs %dir %attr(-,obsrun,obsrun) %{_localstatedir}/log/obs %attr(-,obsrun,obsrun) %{_sharedstatedir}/obs/log # created via %%post, since rpm fails otherwise while switching from # directory to symlink %ghost /usr/lib/obs/server/build # formerly obs-source_service %{_initddir}/obsservice %config(noreplace) /etc/logrotate.d/obs-source_service /etc/cron.d/cleanup_scm_cache %{_sbindir}/rcobsservice /usr/lib/obs/server/bs_service /usr/lib/obs/server/call-service-in-docker.sh /usr/lib/obs/server/cleanup_scm_cache # formerly obs-productconverter /usr/bin/obs_productconvert /usr/lib/obs/server/bs_productconvert # add obsservicerun user into docker group if docker # gets installed %triggerin -n obs-server -- docker %{_sbindir}/usermod -a -G docker obsservicerun %files -n obs-worker %defattr(-,root,root) %{_initddir}/obsworker %{_sbindir}/rcobsworker %dir %attr(-,obsrun,obsrun) %{_sharedstatedir}/obs %dir %attr(-,obsrun,obsrun) %{_localstatedir}/log/obs %files -n obs-api %defattr(-,root,root) %doc dist/{README.UPDATERS,README.SETUP} docs/openSUSE.org.xml ReleaseNotes-* README.md COPYING AUTHORS %{_datadir}/obs/overview %{_datadir}/obs-api/config/thinking_sphinx.yml.example /etc/cron.d/obs_api_delayed_jobs_monitor %config(noreplace) %{_datadir}/obs-api/config/thinking_sphinx.yml %attr(-,%{apache_user},%{apache_group}) %config(noreplace) %{_datadir}/obs-api/config/production.sphinx.conf %dir %{_datadir}/obs-api %dir %{_datadir}/obs-api/config %config(noreplace) %{_datadir}/obs-api/config/cable.yml %config(noreplace) %{_datadir}/obs-api/config/feature.yml %config(noreplace) %{_datadir}/obs-api/config/puma.rb %config(noreplace) %{_datadir}/obs-api/config/secrets.yml %config(noreplace) %{_datadir}/obs-api/config/spring.rb %config(noreplace) %{_datadir}/obs-api/config/crawler-user-agents.json %{_datadir}/obs-api/config/initializers %dir %{_datadir}/obs-api/config/environments %dir %{_datadir}/obs-api/files %dir %{_datadir}/obs-api/db %{_datadir}/obs-api/db/checker.rb %{_datadir}/obs-api/Gemfile.in %{_datadir}/obs-api/config.ru %{_datadir}/obs-api/config/application.rb %{_datadir}/obs-api/config/clock.rb %config(noreplace) /etc/logrotate.d/obs-api %{_initddir}/obsapidelayed %{_initddir}/obsapisetup %{_sbindir}/rcobsapisetup %{_sbindir}/rcobsapidelayed %{_datadir}/obs-api/app %attr(-,%{apache_user},%{apache_group}) %{_datadir}/obs-api/db/structure.sql %{_datadir}/obs-api/db/attribute_descriptions.rb %{_datadir}/obs-api/db/data %{_datadir}/obs-api/db/migrate %{_datadir}/obs-api/db/seeds.rb %{_datadir}/obs-api/files/wizardtemplate.spec %{_datadir}/obs-api/lib %{_datadir}/obs-api/public %{_datadir}/obs-api/Rakefile %{_datadir}/obs-api/script %{_datadir}/obs-api/bin %{_datadir}/obs-api/test %{_datadir}/obs-api-doc %{_datadir}/obs-api/config/locales %{_datadir}/obs-api/vendor # # some files below config actually are _not_ config files # so here we go, file by file # %{_datadir}/obs-api/config/boot.rb %{_datadir}/obs-api/config/routes.rb %{_datadir}/obs-api/config/environments/development.rb %{_datadir}/obs-api/config/unicorn %attr(0640,root,%apache_group) %config(noreplace) %verify(md5) %{_datadir}/obs-api/config/database.yml %attr(0640,root,%apache_group) %{_datadir}/obs-api/config/database.yml.example %attr(0644,root,root) %config(noreplace) %verify(md5) %{_datadir}/obs-api/config/options.yml %attr(0644,root,root) %{_datadir}/obs-api/config/options.yml.example %dir %attr(0755,%apache_user,%apache_group) %{_datadir}/obs-api/db/sphinx %dir %attr(0755,%apache_user,%apache_group) %{_datadir}/obs-api/db/sphinx/production %config %{_datadir}/obs-api/config/environment.rb %config %{_datadir}/obs-api/config/environments/production.rb %config %{_datadir}/obs-api/config/environments/test.rb %config %{_datadir}/obs-api/config/environments/stage.rb %{_datadir}/obs-api/log %dir %attr(-,%{apache_user},%{apache_group}) %{_localstatedir}/log/obs-api %attr(-,%{apache_user},%{apache_group}) %{_datadir}/obs-api/tmp # these dirs primarily belong to apache2: %if 0%{?fedora} || 0%{?rhel} %{_httpd_confdir}/obs.conf.dist %else %dir /etc/apache2 %dir /etc/apache2/vhosts.d %config(noreplace) /etc/apache2/vhosts.d/obs.conf %endif %if %{with selinux} %{_datadir}/selinux/packages/obs-api/obs-api.pp %endif %defattr(0644,%{apache_user},%{apache_group}) %ghost %{_localstatedir}/log/obs-api/access.log %ghost %{_localstatedir}/log/obs-api/backend_access.log %ghost %{_localstatedir}/log/obs-api/delayed_job.log %ghost %{_localstatedir}/log/obs-api/error.log %ghost %{_localstatedir}/log/obs-api/lastevents.access.log %ghost %{_localstatedir}/log/obs-api/production.log %ghost %attr(0640,root,%{apache_group}) %secret_key_file %files -n obs-common %defattr(-,root,root) %{_datadir}/obs/rc.compat %if 0%{?suse_version:1} /var/adm/fillup-templates/sysconfig.obs-server %else %config(noreplace) %{_sysconfdir}/sysconfig/obs-server %endif /usr/lib/obs/server/setup-appliance.sh %{_initddir}/obsstoragesetup %{_sbindir}/rcobsstoragesetup %files -n obs-utils %defattr(-,root,root) %{_sbindir}/obs_project_update %files -n obs-devel %defattr(-,root,root) %dir %_docdir/obs-devel %_docdir/obs-devel/README.devel %files -n obs-tests-appliance %defattr(-,root,root) %dir /usr/lib/obs/tests/ %dir /usr/lib/obs/tests/appliance /usr/lib/obs/tests/appliance/* %files -n obs-cloud-uploader %defattr(-,root,root) %{_initddir}/obsclouduploadworker %{_initddir}/obsclouduploadserver %{_sbindir}/rcobsclouduploadworker %{_sbindir}/rcobsclouduploadserver /usr/lib/obs/server/bs_clouduploadserver /usr/lib/obs/server/bs_clouduploadworker %{_bindir}/clouduploader %dir /etc/obs %dir /etc/obs/cloudupload %dir /etc/obs/cloudupload/.aws %config(noreplace) /etc/obs/cloudupload/.aws/credentials %config /etc/obs/cloudupload/.ec2utils.conf %package -n obs-container-registry Summary: The Open Build Service -- container registry %if 0%{?suse_version} < 1210 && 0%{?suse_version:1} Group: Productivity/Networking/Web/Utilities %endif Requires: docker-distribution-registry %description -n obs-container-registry The OBS Container Registry, based on the docker registry, which allows * anonymous pulls from anywhere * anonymous pushes from localhost. This is done by proxying access to the registry through apache and restricting any other http method than GET and HEAD to localhost. %files -n obs-container-registry %defattr(-,root,root) %dir %{_datadir}/obs/container-registry %dir %{_datadir}/obs/container-registry/log %dir %{_datadir}/obs/container-registry/htdocs %if 0%{?fedora} || 0%{?rhel} %config %{_httpd_confdir}/obs-container-registry.conf %else %config /etc/apache2/vhosts.d/obs-container-registry.conf %endif %files plugin-notify_hermes %defattr(-,root,root) %dir /usr/lib/obs/server/plugins /usr/lib/obs/server/plugins/notify_hermes.pm %files plugin-notify_rabbitmq %defattr(-,root,root) %dir /usr/lib/obs/server/plugins /usr/lib/obs/server/plugins/notify_rabbitmq.pm %changelog
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Contact
Support
@OBShq
The Open Build Service is an
openSUSE project
.
Log In
Places
Places
All Projects
Status Monitor