Log In
Log In
Places
All Projects
Status Monitor
Collapse sidebar
obs:server:fedora:2.6:testing
obs-server
obs-server-Fedora_21.spec
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File obs-server-Fedora_21.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:1} %bcond_without selinux %else %bcond_with selinux %endif Name: obs-server Summary: The Open Build Service -- Server Component License: GPL-2.0 and GPL-3.0 Group: Productivity/Networking/Web/Utilities Version: 2.6.7 Release: 1 Url: http://www.openbuildservice.org BuildRoot: %{_tmppath}/%{name}-%{version}-build Source: https://github.com/openSUSE/open-build-service/archive/%{version}/open-build-service-%{version}.tar.gz Source1: obs-server-rc-compat Source2: update-sources.sh Patch1: obs-server-2.6.6-0001-api-Fix-to-work-when-hosted-in-non-root-server-direc.patch Patch2: obs-server-2.6.6-0002-api-Use-bundler_ext-instead-of-bundler-if-Gemfile.in.patch Patch3: obs-server-2.6.6-0003-api-Require-json-gem-explicitly-for-tests.patch Patch4: obs-server-2.6.6-0004-webui-Require-specific-version-range-for-jquery-ui-r.patch Patch5: obs-server-2.6.6-0005-backend-Use-correct-checksum-arg-for-createrepo-and-.patch Patch6: obs-server-2.6.6-0006-webui-Require-specific-version-range-for-jquery-data.patch Patch7: obs-server-2.6.6-0007-test-Log-server-name-to-test-log-for-backend-log-mes.patch Patch8: obs-server-2.6.6-0008-test-Do-not-click-on-invisible-reload-button-wait-fo.patch Patch9: obs-server-2.6.6-0009-webui-fixes-for-new-capybara.patch BuildArch: noarch 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 >= 20140717 %if 0%{?suse_version:1} BuildRequires: inst-source-utils %endif BuildRequires: perl-BSSolv BuildRequires: perl-Compress-Zlib 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: procps BuildRequires: /usr/bin/Xvfb Requires(pre): %{_sbindir}/useradd %{_sbindir}/groupadd Requires: build >= 20140717 Requires: obs-productconverter >= %version Requires: obs-worker Requires: perl-BSSolv >= 0.19.0 # 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}" createrepo') Requires: %(/bin/bash -c 'rpm -q --qf "%%{name} = %%{version}-%%{release}" python-yum') %else Requires: createrepo >= 0.4.10 Requires: yum %endif BuildRequires: xz %if 0%{?suse_version:1} #BuildRequires: fdupes PreReq: %fillup_prereq %insserv_prereq permissions pwdutils %endif %if 0%{?fedora:1} 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 %else Requires: dpkg Requires: yum Requires: yum-metadata-parser %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) %if %{with selinux} BuildRequires: selinux-policy-devel BuildRequires: checkpolicy %endif BuildRequires: ruby(release) BuildRequires: rubygems-devel BuildRequires: ruby >= 2.1.0 BuildRequires: rubygem(ruby-ldap) # for test suite: BuildRequires: createrepo BuildRequires: curl 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: rubygem-ci_reporter BuildRequires: rubygem(bundler) >= 1.3.0 BuildRequires: nodejs BuildRequires: sphinx >= 2.0.8 # OBS_SERVER_BUILDREQUIRES_BEGIN BuildRequires: rubygem(actionmailer) BuildRequires: rubygem(acts_as_list) BuildRequires: rubygem(capybara_minitest_spec) BuildRequires: rubygem(chunky_png) BuildRequires: rubygem(ci_reporter) BuildRequires: rubygem(clockwork) >= 0.7 BuildRequires: rubygem(cocoon) BuildRequires: rubygem(codemirror-rails) >= 4.2 BuildRequires: rubygem(cssmin) >= 1.0.2 BuildRequires: rubygem(daemons) BuildRequires: rubygem(dalli) BuildRequires: rubygem(database_cleaner) >= 1.0.1 BuildRequires: rubygem(delayed_job_active_record) >= 4.0.0 BuildRequires: rubygem(escape_utils) BuildRequires: rubygem(faker) BuildRequires: rubygem(flog) > 4.1.0 BuildRequires: rubygem(font-awesome-rails) BuildRequires: rubygem(haml) BuildRequires: rubygem(hoptoad_notifier) >= 2.3 BuildRequires: rubygem(hoptoad_notifier) < 3 BuildRequires: rubygem(jquery-datatables-rails) >= 1.12 BuildRequires: rubygem(jquery-datatables-rails) < 2 BuildRequires: rubygem(jquery-rails) BuildRequires: rubygem(jquery-ui-rails) >= 4.2 BuildRequires: rubygem(jquery-ui-rails) < 5 BuildRequires: rubygem(json) BuildRequires: rubygem(kaminari) BuildRequires: rubygem(minitest) = 5.3.3 BuildRequires: rubygem(mocha) > 0.13.0 BuildRequires: rubygem(mysql2) BuildRequires: rubygem(nokogiri) >= 1.6.3 BuildRequires: rubygem(nokogiri) < 1.7 BuildRequires: rubygem(poltergeist) >= 1.4 BuildRequires: rubygem(pry) >= 0.9.12 BuildRequires: rubygem(pundit) BuildRequires: rubygem(rack-mini-profiler) BuildRequires: rubygem(rails) >= 4.1.1 BuildRequires: rubygem(rails) < 4.2 BuildRequires: rubygem(rails_tokeninput) >= 1.6.1.rc1 BuildRequires: rubygem(rdoc) BuildRequires: rubygem(redcarpet) BuildRequires: rubygem(ruby-ldap) BuildRequires: rubygem(sanitize) BuildRequires: rubygem(sass-rails) >= 4.0.3 BuildRequires: rubygem(sass-rails) < 4.1 BuildRequires: rubygem(simplecov) BuildRequires: rubygem(single_test) BuildRequires: rubygem(sprite-factory) >= 1.5.2 BuildRequires: rubygem(thinking-sphinx) > 3.1 BuildRequires: rubygem(tilt) >= 1.4.1 BuildRequires: rubygem(timecop) BuildRequires: rubygem(uglifier) >= 1.2.2 BuildRequires: rubygem(unicorn-rails) BuildRequires: rubygem(webmock) >= 1.18.0 BuildRequires: rubygem(xmlhash) >= 1.3.6 BuildRequires: rubygem(yajl-ruby) # OBS_SERVER_BUILDREQUIRES_END # For local runs BuildRequires: rubygem(sqlite3) %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: 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 %if 0%{?suse_version:1} Recommends: openslp lvm2 %endif Requires: bash Requires: binutils Requires: bsdtar Summary: The Open Build Service -- Build Host Component Group: Productivity/Networking/Web/Utilities %if 0%{?suse_version} Requires(pre): %fillup_prereq %insserv_prereq %endif %if 0%{?fedora:1} Requires: chkconfig %endif %if 0%{?suse_version} <= 1030 Requires: lzma %endif BuildArch: noarch Requires: util-linux >= 2.16 %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-api Summary: The Open Build Service -- The API and WEBUI Group: Productivity/Networking/Web/Utilities BuildArch: noarch Obsoletes: obs-webui %if 0%{?suse_version} Obsoletes: obs-common <= 2.2.90 PreReq: %fillup_prereq %insserv_prereq %endif %if 0%{?fedora} >= 19 Requires: ruby(release) Requires: ruby(rubygems) %endif %if 0%{?suse_version:1} #For apache Recommends: apache2 apache2-mod_xforward rubygem(passenger-apache2) %endif # memcache is required for session data Requires: memcached Conflicts: memcached < 1.4 # For local runs BuildRequires: rubygem(sqlite3) Requires: mysql %if %{with selinux} Requires: policycoreutils %endif Requires: ruby >= 2.0 # needed for fulltext searching Requires: sphinx >= 2.1.8 BuildRequires: rubygem(ruby-ldap) # for test suite: BuildRequires: createrepo BuildRequires: curl BuildRequires: memcached >= 1.4 BuildRequires: mysql BuildRequires: perl(GD) %if 0%{?fedora:1} Requires: chkconfig %endif Requires: obs-api-doc Requires: rubygem(bundler_ext) >= 0.3.1 Requires: perl(GD) # OBS_API_REQUIRES_BEGIN Requires: rubygem(actionmailer) Requires: rubygem(acts_as_list) Requires: rubygem(clockwork) >= 0.7 Requires: rubygem(cocoon) Requires: rubygem(daemons) Requires: rubygem(dalli) Requires: rubygem(delayed_job_active_record) >= 4.0.0 Requires: rubygem(escape_utils) Requires: rubygem(haml) Requires: rubygem(hoptoad_notifier) >= 2.3 Requires: rubygem(hoptoad_notifier) < 3 Requires: rubygem(kaminari) Requires: rubygem(mysql2) Requires: rubygem(nokogiri) >= 1.6.3 Requires: rubygem(nokogiri) < 1.7 Requires: rubygem(pundit) Requires: rubygem(rails) >= 4.1.1 Requires: rubygem(rails) < 4.2 Requires: rubygem(rdoc) Requires: rubygem(redcarpet) Requires: rubygem(ruby-ldap) Requires: rubygem(sanitize) Requires: rubygem(thinking-sphinx) > 3.1 Requires: rubygem(tilt) >= 1.4.1 Requires: rubygem(xmlhash) >= 1.3.6 Requires: rubygem(yajl-ruby) # OBS_API_REQUIRES_END %if 0%{?suse_version:1} Requires: ghostscript-fonts-std %else Requires: ghostscript-fonts %if 0%{?fedora:1} Requires: urw-fonts %endif %endif %description -n obs-api This is the API server instance for the OBS. %package -n obs-api-doc Summary: The Open Build Service -- The API documentation Group: Productivity/Networking/Web/Utilities BuildArch: noarch %description -n obs-api-doc This is the documentation files for API server instance for the OBS. %package -n obs-devel Summary: The Open Build Service -- The API and WEBUI Testsuite Group: Productivity/Networking/Web/Utilities BuildArch: noarch 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-source_service Summary: The Open Build Service -- source service daemon Group: Productivity/Networking/Web/Utilities BuildArch: noarch # Our default services, used in osc and webui %if 0%{?suse_version:1} Recommends: obs-service-download_url Recommends: obs-service-verify_file %endif %if 0%{?fedora:1} Requires: chkconfig %endif %description -n obs-source_service The OBS source service is a component to modify submitted sources on the server side. This may include source checkout, spec file generation, gpg validation, quality checks and other stuff. This component is optional and not required to run the service. %package -n obs-productconverter Summary: The Open Build Service -- product definition utility Group: Productivity/Networking/Web/Utilities BuildArch: noarch # For perl library files, TODO: split out obs-lib subpackage? Requires: obs-server %description -n obs-productconverter bs_productconvert is a utility to create Kiwi- and Spec- files from a product definition. %package -n obs-utils Summary: The Open Build Service -- utilities Group: Productivity/Networking/Web/Utilities BuildArch: noarch Requires: build Requires: osc Requires: ruby %description -n obs-utils obs_project_update is a tool to copy a packages of a project from one obs to another %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. #-------------------------------------------------------------------------------- # Macros for Suse compatibility. %if 0%{?fedora} %define enable_services() \ for service in %{?*}; do \ /sbin/chkconfig --add $service \ done \ %{nil} %else %define enable_services() %{nil} %endif %if "%{?stop_on_removal}" == "" %if 0%{?fedora} %define stop_on_removal() \ 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 "%{?restart_on_update}" == "" %if 0%{?fedora} %define restart_on_update() \ 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 "%{?run_permissions}" == "" %define run_permissions() %{nil} %endif %if "%{?fillup_and_insserv}" == "" %define fillup_and_insserv(n:) %{nil} %endif %if "%{?insserv_cleanup}" == "" %define insserv_cleanup() %{nil} %endif %if "%{?verifyscript}" == "" %define verifyscript(n:) %{nil} %endif %if "%{?verify_permissions}" == "" %define verify_permissions() %{nil} %endif %if 0%{?suse_version:1} %define wwwuser wwwrun %define wwwgroup www %else %define wwwuser apache %define wwwgroup apache %endif #-------------------------------------------------------------------------------- %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 # drop build script, we require the installed one from own package rm -rf src/build find . -name .git\* \ -o -name Capfile \ -o -name deploy.rb \ -o -name Gemfile.lock \ | xargs rm -rf %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 EOF popd %endif %build # we need it for the test suite or it may silently succeed test -x /usr/bin/Xvfb # # generate apidocs # pushd docs/api/api make apidocs popd %if %{with selinux} pushd src/selinux make -f %{_datadir}/selinux/devel/Makefile popd %endif %install # # First install all dist files # cd dist # configure apache web service (new default since OBS 2.3) %if 0%{?suse_version:1} mkdir -p $RPM_BUILD_ROOT/etc/apache2/vhosts.d/ %if 0%{?suse_version} < 1300 install -m 0644 obs-apache2.conf $RPM_BUILD_ROOT/etc/apache2/vhosts.d/obs.conf %else install -m 0644 obs-apache24.conf $RPM_BUILD_ROOT/etc/apache2/vhosts.d/obs.conf %endif %else %if !0%{?_httpd_confdir:1} %define _httpd_confdir %{_sysconfdir}/httpd/conf.d %endif mkdir -p $RPM_BUILD_ROOT%{_httpd_confdir} install -m 0644 obs-apache2.conf $RPM_BUILD_ROOT%{_httpd_confdir}/obs.conf.dist %endif # install overview page template #mkdir -p $RPM_BUILD_ROOT/srv/www/obs/overview #install -m 0644 overview.html.TEMPLATE $RPM_BUILD_ROOT/srv/www/obs/overview/ # install obs mirror script and obs copy script install -d -m 755 $RPM_BUILD_ROOT%{_sbindir} install -m 0755 obs_project_update $RPM_BUILD_ROOT%{_sbindir} # install runlevel scripts %if !0%{?suse_version:1} install -d -m 755 $RPM_BUILD_ROOT%{_datadir}/obs install -m 0755 %{SOURCE1} $RPM_BUILD_ROOT%{_datadir}/obs/rc.compat %endif install -d -m 755 $RPM_BUILD_ROOT%{_initddir} for i in obssrcserver obsrepserver obsscheduler obsworker obspublisher obsdispatcher \ obssigner obswarden obsapidelayed obsapisetup obsstoragesetup \ obsservice; do install -m 0755 $i \ $RPM_BUILD_ROOT%{_initddir} %if !0%{?suse_version:1} sed -i -e 's|\. /etc/rc.status|. %{_datadir}/obs/rc.compat|' \ -e 's|\( startproc.* -u\) wwwrun |\1 %{wwwuser} |' \ -e 's|\( startproc.* -g\) www |\1 %{wwwgroup} |' \ $RPM_BUILD_ROOT%{_initddir}/$i %endif ln -sf %{_initddir}/$i $RPM_BUILD_ROOT%{_sbindir}/rc$i done # don't use bundler in delayed_job: we use bundler_ext instead sed -i 's|/usr/bin/bundle exec ||' $RPM_BUILD_ROOT%{_initddir}/obsapidelayed %if !0%{?suse_version:1} sed -i 's|wwwrun:www|%{wwwuser}:%{wwwgroup}|' $RPM_BUILD_ROOT%{_initddir}/obsapidelayed %endif # install logrotate install -d -m 755 $RPM_BUILD_ROOT/etc/logrotate.d/ for i in obs-api obs-server ; do install -m 0644 ${i}.logrotate \ $RPM_BUILD_ROOT/etc/logrotate.d/$i %if !0%{?suse_version:1} sed -i -e 's| wwwrun www| %{wwwuser} %{wwwgroup}|' \ $RPM_BUILD_ROOT/etc/logrotate.d/$i %endif sed -i -e 's|/srv/www/obs/|%{_datadir}/obs-|' \ $RPM_BUILD_ROOT/etc/logrotate.d/$i done %if 0%{?suse_version:1} # install fillups FILLUP_DIR=$RPM_BUILD_ROOT/var/adm/fillup-templates install -d -m 755 $FILLUP_DIR install -m 0644 sysconfig.obs-server $FILLUP_DIR/ %else install -d -m 755 $RPM_BUILD_ROOT%{_sysconfdir}/sysconfig install -m 0644 sysconfig.obs-server \ $RPM_BUILD_ROOT%{_sysconfdir}/sysconfig/obs-server %endif # install SLP registration files SLP_DIR=$RPM_BUILD_ROOT/etc/slp.reg.d/ install -d -m 755 $SLP_DIR install -m 644 obs.source_server.reg $SLP_DIR/ install -m 644 obs.repo_server.reg $SLP_DIR/ # create symlink for product converter mkdir -p $RPM_BUILD_ROOT%{_bindir} cat > $RPM_BUILD_ROOT%{_bindir}/obs_productconvert <<EOF #!/bin/bash exec /usr/lib/obs/server/bs_productconvert "\$@" EOF chmod 0755 $RPM_BUILD_ROOT%{_bindir}/obs_productconvert cat > $RPM_BUILD_ROOT%{_sbindir}/obs_admin <<EOF #!/bin/bash exec /usr/lib/obs/server/bs_admin "\$@" EOF chmod 0755 $RPM_BUILD_ROOT%{_sbindir}/obs_admin cat > $RPM_BUILD_ROOT%{_sbindir}/obs_serverstatus <<EOF #!/bin/bash exec /usr/lib/obs/server/bs_serverstatus "\$@" EOF chmod 0755 $RPM_BUILD_ROOT%{_sbindir}/obs_serverstatus # # Install all web and api parts. # cd ../src mkdir -p $RPM_BUILD_ROOT%{_datadir} cp -a api $RPM_BUILD_ROOT%{_datadir}/obs-api mkdir -p $RPM_BUILD_ROOT%{_datadir}/obs-api/log mkdir -p $RPM_BUILD_ROOT%{_datadir}/obs-api/tmp touch $RPM_BUILD_ROOT%{_datadir}/obs-api/log/production.log touch $RPM_BUILD_ROOT%{_datadir}/obs-api/config/production.sphinx.conf # prepare for running sphinx daemon install -m 0755 -d $RPM_BUILD_ROOT/%{_datadir}/obs-api/db/sphinx{,/production} # # install apidocs # mkdir -p $RPM_BUILD_ROOT%{_datadir} cp -a ../docs/api/api $RPM_BUILD_ROOT%{_datadir}/obs-api-doc cp -a ../docs/api/html $RPM_BUILD_ROOT%{_datadir}/obs-api-doc/html ln -sf %{_datadir}/obs-api-doc $RPM_BUILD_ROOT%{_datadir}/obs-api/public/schema echo 'CONFIG["apidocs_location"] ||= File.expand_path("%{_datadir}/obs-api-doc/html/")' >> $RPM_BUILD_ROOT%{_datadir}/obs-api/config/environment.rb echo 'CONFIG["schema_location"] ||= File.expand_path("%{_datadir}/obs-api-doc/")' >> $RPM_BUILD_ROOT%{_datadir}/obs-api/config/environment.rb # # Install all backend parts. # cd backend/ # we use external build script code rm -rf build cp BSConfig.pm.template BSConfig.pm install -d -m 755 $RPM_BUILD_ROOT/usr/lib/obs/server/ ln -sf /usr/lib/build $RPM_BUILD_ROOT/usr/lib/obs/server/build # just for check, it is a %%ghost #for i in build events info jobs log projects repos run sources trees workers; do # install -d -m 755 $RPM_BUILD_ROOT%{_sharedstatedir}/obs/$i #done # install executables and code cp -a * $RPM_BUILD_ROOT/usr/lib/obs/server/ rm -r $RPM_BUILD_ROOT/usr/lib/obs/server/testdata cd .. sed -i \ -e 's|/srv/www/obs/|%{_datadir}/obs-|' \ -e 's|/srv/obs/log|%{_localstatedir}/log/obs|' \ -e 's|/srv/obs|%{_sharedstatedir}/obs|' \ -e 's|5152|15152|' \ -e 's|5252|15252|' \ -e 's|5352|15352|' \ $RPM_BUILD_ROOT/usr/lib/obs/server/bs_* \ $RPM_BUILD_ROOT/usr/lib/obs/server/*.pm.template \ $RPM_BUILD_ROOT/usr/lib/obs/server/*.pm \ $RPM_BUILD_ROOT%{_initddir}/obs* \ %if 0%{?suse_version:1} $FILLUP_DIR/sysconfig.obs-server \ %else $RPM_BUILD_ROOT%{_sysconfdir}/sysconfig/obs-server \ %endif $RPM_BUILD_ROOT/etc/logrotate.d/obs* # # turn duplicates into hard links # %if 0%{?suse_version} >= 1030 %fdupes $RPM_BUILD_ROOT%{_datadir}/obs-api %endif # these config files must not be hard linked install api/config/database.yml.example $RPM_BUILD_ROOT%{_datadir}/obs-api/config/database.yml install api/config/options.yml.example $RPM_BUILD_ROOT%{_datadir}/obs-api/config/options.yml install api/config/thinking_sphinx.yml.example $RPM_BUILD_ROOT%{_datadir}/obs-api/config/thinking_sphinx.yml # change port numbers to avoid conflicts sed -i \ -e 's|5352|15352|' \ $RPM_BUILD_ROOT%{_datadir}/obs-api/config/options.yml \ $RPM_BUILD_ROOT%{_datadir}/obs-api/config/options.yml.example for file in api/log/access.log api/log/backend_access.log api/log/delayed_job.log api/log/error.log api/log/lastevents.access.log; do touch $RPM_BUILD_ROOT%{_datadir}/obs-$file done pushd $RPM_BUILD_ROOT%{_datadir}/obs-api # we need to have *something* as secret key echo "" | sha256sum| cut -d\ -f 1 > config/secret.key RAILS_ENV=production RAILS_GROUPS=assets RAILS_RELATIVE_URL_ROOT=../.. bundle exec rake --trace assets:precompile rm -rf tmp/cache/sass tmp/cache/assets config/secret.key rm Gemfile.lock mv Gemfile Gemfile.in sed -i \ -e "s/'activerecord'/'active_record'/" \ -e "s/'actionmailer'/'action_mailer'/" \ -e "s/'yajl-ruby'/'yajl'/" \ Gemfile.in # reinstall install config/database.yml.example config/database.yml : > log/production.log sed -i -e 's,^api_version.*,api_version = "%version",' config/initializers/02_apiversion.rb popd mkdir -p %{buildroot}%{_docdir} cat > %{buildroot}%{_docdir}/README.devel <<EOF This package does not contain any development files. But it helps you start with git development - look at http://github.com/opensuse/open-build-service EOF mkdir -p %{buildroot}%{_localstatedir}/log mv %{buildroot}%{_datadir}/obs-api/log %{buildroot}%{_localstatedir}/log/obs-api ln -s %{_localstatedir}/log/obs-api %{buildroot}%{_datadir}/obs-api/log mkdir -p %{buildroot}%{_sharedstatedir}/obs mkdir -p %{buildroot}%{_localstatedir}/log/obs %if %{with selinux} %{__mkdir_p} %{buildroot}%{_datadir}/selinux/packages/obs-api %{__install} -m644 selinux/obs-api.pp \ %{buildroot}%{_datadir}/selinux/packages/obs-api/obs-api.pp %endif %if 0%{?suse_version} # adapt to SUSE style ruby parallel installation find %{buildroot} -executable -a -type f | while read file; do sed -i -s 's,^#!/usr/bin/env ruby$,#!/usr/bin/env ruby.ruby2.1,' "$file" done %endif %check export TZ=GMT export LANG=en_US.UTF-8 #cleanup function cleanup() { /usr/bin/mysqladmin -u root --socket=/tmp/obs.test.mysql.socket shutdown || true rm -rf /tmp/obs.mysql.db /tmp/obs.test.mysql.socket memcached_pid=%{_builddir}/%{buildsubdir}/src/api/memcached.pid test -f "$memcached_pid" && kill $(cat "$memcached_pid") || true } # check installed backend pushd $RPM_BUILD_ROOT/usr/lib/obs/server/ file build rm build ln -sf /usr/lib/build build # just for %%check, it is a %%ghost for i in bs_*; do perl -wc "$i" done bash %{_builddir}/%{buildsubdir}/src/backend/testdata/test_dispatcher || exit 1 popd # run in build environment pushd src/backend/ rm -rf build ln -sf /usr/lib/build build popd # setup mysqld mysqld= for d in /usr/sbin /usr/libexec; do if [ -x "$d/mysqld" ]; then mysqld="$d/mysqld" break fi done test -n "$mysqld" rm -rf /tmp/obs.mysql.db /tmp/obs.test.mysql.socket trap cleanup EXIT mysql_install_db --user="$USER" --datadir="/tmp/obs.mysql.db" "$mysqld" --datadir=/tmp/obs.mysql.db --skip-networking --socket=/tmp/obs.test.mysql.socket --pid-file=/tmp/obs.test.mysql.pid & sleep 2 ##################### api pushd src/api/ # setup files cp config/options.yml{.example,} cp config/thinking_sphinx.yml{.example,} touch config/test.sphinx.conf cat > config/database.yml <<EOF migrate: adapter: mysql2 host: localhost database: api_25 username: root encoding: utf8 socket: /tmp/obs.test.mysql.socket test: adapter: mysql2 host: localhost database: api_test username: root encoding: utf8 socket: /tmp/obs.test.mysql.socket # disable timeout, required on SLES 11 SP3 at least connect_timeout: EOF memcached= for d in /usr/bin /usr/sbin /usr/libexec; do if [ -x "$d/memcached" ]; then memcached="$d/memcached" break fi done test -n "$memcached" "$memcached" -l 127.0.0.1 -d -P $PWD/memcached.pid # migration test export RAILS_ENV=migrate bundle exec rake --trace db:create || exit 1 xzcat test/dump_2.5.sql.xz | mysql -u root --socket=/tmp/obs.test.mysql.socket bundle exec rake --trace db:migrate db:drop || exit 1 # entire test suite export RAILS_ENV=test bundle exec "rake --trace db:create db:setup" || exit 1 mv log/test.log{,.old} if ! bundle exec "rake --trace test:api test:webui"; then cat log/test.log exit 1 fi popd %pre 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 %pre -n obs-worker 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 %preun -n obs-worker %stop_on_removal obsworker %post %enable_services obssrcserver obsrepserver obsdispatcher obsscheduler obspublisher obswarden obssigner %{fillup_and_insserv -n obs-server} %restart_on_update obssrcserver obsrepserver obsdispatcher obsscheduler obspublisher obswarden obssigner %preun -n obs-source_service %stop_on_removal obsservice %post -n obs-source_service %enable_services obsservice %restart_on_update obsservice %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 %verifyscript -n obs-server %verify_permissions # cleanup empty directory just in case rmdir %{_sharedstatedir}/obs 2> /dev/null || : %post -n obs-worker %enable_services obsworker obsstoragesetup %{fillup_and_insserv -n obs-server} # 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 %{wwwgroup} obsapidelayed %post -n obs-api %enable_services obsapisetup obsapidelayed %{fillup_and_insserv -n obs-server} if [ -e /srv/www/obs/frontend/config/database.yml ] && [ ! -e %{_datadir}/obs-api/config/database.yml ]; then cp /srv/www/obs/frontend/config/database.yml %{_datadir}/obs-api/config/database.yml fi for i in production.rb ; do if [ -e /srv/www/obs/frontend/config/environments/$i ] && [ ! -e %{_datadir}/obs-api/config/environments/$i ]; then cp /srv/www/obs/frontend/config/environments/$i %{_datadir}/obs-api/config/environments/$i fi done SECRET_KEY="%{_datadir}/obs-api/config/secret.key" if [ ! -e "$SECRET_KEY" ]; then ( umask 0077; dd if=/dev/urandom bs=256 count=1 2>/dev/null |sha256sum| cut -d\ -f 1 >$SECRET_KEY ) fi chmod 0640 $SECRET_KEY chown root.%{wwwgroup} $SECRET_KEY # update config sed -i -e 's,[ ]*adapter: mysql$, adapter: mysql2,' %{_datadir}/obs-api/config/database.yml touch %{_localstatedir}/log/obs-api/production.log chown %{wwwuser}:%{wwwgroup} %{_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 %if 0%{?suse_version:1} %restart_on_update apache2 %else %restart_on_update httpd %endif %restart_on_update memcached %restart_on_update obsapisetup %restart_on_update obsapidelayed %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 /etc/logrotate.d/obs-server %{_initddir}/obsdispatcher %{_initddir}/obspublisher %{_initddir}/obsrepserver %{_initddir}/obsscheduler %{_initddir}/obssrcserver %{_initddir}/obswarden %{_initddir}/obssigner %if !0%{?suse_version:1} %{_datadir}/obs/rc.compat %endif %{_sbindir}/obs_admin %{_sbindir}/obs_serverstatus %{_sbindir}/rcobsdispatcher %{_sbindir}/rcobspublisher %{_sbindir}/rcobsrepserver %{_sbindir}/rcobsscheduler %{_sbindir}/rcobssrcserver %{_sbindir}/rcobswarden %{_sbindir}/rcobssigner %dir /usr/lib/obs/server/plugins /usr/lib/obs/server/BSAccess.pm /usr/lib/obs/server/BSBuild.pm /usr/lib/obs/server/BSCando.pm /usr/lib/obs/server/BSConfiguration.pm /usr/lib/obs/server/BSConfig.pm.template /usr/lib/obs/server/BSEvents.pm /usr/lib/obs/server/BSFileDB.pm /usr/lib/obs/server/BSHTTP.pm /usr/lib/obs/server/BSHandoff.pm /usr/lib/obs/server/BSNotify.pm /usr/lib/obs/server/BSRPC.pm /usr/lib/obs/server/BSServer.pm /usr/lib/obs/server/BSServerEvents.pm /usr/lib/obs/server/BSSrcdiff.pm /usr/lib/obs/server/BSSSL.pm /usr/lib/obs/server/BSStdServer.pm /usr/lib/obs/server/BSUtil.pm /usr/lib/obs/server/BSVerify.pm /usr/lib/obs/server/BSDB.pm /usr/lib/obs/server/BSDBIndex.pm /usr/lib/obs/server/BSXPathKeys.pm /usr/lib/obs/server/BSWatcher.pm /usr/lib/obs/server/BSXML.pm /usr/lib/obs/server/BSXPath.pm /usr/lib/obs/server/BSProductXML.pm /usr/lib/obs/server/BSKiwiXML.pm %dir /usr/lib/obs/server/Meta /usr/lib/obs/server/Meta.pm /usr/lib/obs/server/Meta/Debmd.pm /usr/lib/obs/server/Meta/Rpmmd.pm /usr/lib/obs/server/Meta/Susetagsmd.pm /usr/lib/obs/server/DESIGN /usr/lib/obs/server/License /usr/lib/obs/server/README /usr/lib/obs/server/XML /usr/lib/obs/server/bs_admin /usr/lib/obs/server/bs_archivereq /usr/lib/obs/server/bs_check_consistency /usr/lib/obs/server/bs_getbinariesproxy /usr/lib/obs/server/bs_mergechanges /usr/lib/obs/server/bs_mkarchrepo /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_sshgit /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 # created via %%post, since rpm fails otherwise while switching from # directory to symlink %ghost /usr/lib/obs/server/build %files -n obs-source_service %defattr(-,root,root) %{_initddir}/obsservice %if !0%{?suse_version:1} %{_datadir}/obs/rc.compat %endif %{_sbindir}/rcobsservice /usr/lib/obs/server/bs_service /usr/lib/obs/server/call-service-in-lxc.sh %files -n obs-worker %defattr(-,root,root) %if 0%{?suse_version:1} /var/adm/fillup-templates/sysconfig.obs-server %else %config(noreplace) %{_sysconfdir}/sysconfig/obs-server %endif %{_initddir}/obsworker %{_initddir}/obsstoragesetup %if !0%{?suse_version:1} %{_datadir}/obs/rc.compat %endif %{_sbindir}/rcobsworker %{_sbindir}/rcobsstoragesetup %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-api/config/thinking_sphinx.yml.example %config(noreplace) %{_datadir}/obs-api/config/thinking_sphinx.yml %attr(-,%{wwwuser},%{wwwgroup}) %config(noreplace) %{_datadir}/obs-api/config/production.sphinx.conf %dir %{_datadir}/obs-api %dir %{_datadir}/obs-api/config %{_datadir}/obs-api/config/initializers %dir %{_datadir}/obs-api/config/environments %dir %{_datadir}/obs-api/files %{_datadir}/obs-api/.simplecov %{_datadir}/obs-api/Gemfile.in %{_datadir}/obs-api/config.ru %{_datadir}/obs-api/config/application.rb %{_datadir}/obs-api/config/clock.rb /etc/logrotate.d/obs-api %{_initddir}/obsapidelayed %{_initddir}/obsapisetup %if !0%{?suse_version:1} %{_datadir}/obs/rc.compat %endif %{_sbindir}/rcobsapisetup %{_sbindir}/rcobsapidelayed %{_datadir}/obs-api/app %{_datadir}/obs-api/db %{_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/config/locales %dir %{_datadir}/obs-api/vendor %{_datadir}/obs-api/vendor/diststats # # 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,%{wwwgroup}) %config(noreplace) %{_datadir}/obs-api/config/database.yml* %attr(0644,root,root) %config(noreplace) %{_datadir}/obs-api/config/options.yml* %dir %attr(0755,%{wwwuser},%{wwwgroup}) %{_datadir}/obs-api/db/sphinx %dir %attr(0755,%{wwwuser},%{wwwgroup}) %{_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(-,%{wwwuser},%{wwwgroup}) %{_localstatedir}/log/obs-api %attr(-,%{wwwuser},%{wwwgroup}) %{_datadir}/obs-api/tmp # these dirs primarily belong to apache2: %if 0%{?suse_version:1} %dir /etc/apache2 %dir /etc/apache2/vhosts.d %config(noreplace) /etc/apache2/vhosts.d/obs.conf %else %{_httpd_confdir}/obs.conf.dist %endif %if %{with selinux} %{_datadir}/selinux/packages/obs-api/obs-api.pp %endif %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 %files -n obs-api-doc %{_datadir}/obs-api-doc %files -n obs-utils %defattr(-,root,root) %{_sbindir}/obs_project_update %files -n obs-productconverter %defattr(-,root,root) %{_bindir}/obs_productconvert /usr/lib/obs/server/bs_productconvert %files -n obs-devel %defattr(-,root,root) %_docdir/README.devel %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
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