Merge pull request #998 from jberry-suse/spec

dist/spec: initial specfile including relevant sub-packages.
This commit is contained in:
Jimmy Berry 2017-07-13 17:14:12 -05:00 committed by GitHub
commit feedef3476
5 changed files with 349 additions and 16 deletions

View File

@ -1,14 +1,24 @@
language: python
python:
- 2.7
install:
- pip install python-coveralls
# needed to install osc from git in requirements.txt
- pip install pycurl urlgrabber
- pip install -r requirements.txt
- sudo mkdir -p /var/cache/repo-checker
- sudo chown $USER /var/cache/repo-checker
script:
- nosetests --with-coverage --cover-package=osclib --cover-inclusive
after_success:
- coveralls
matrix:
include:
- env: TEST_SUITE=distribution
sudo: required
services:
- docker
language: bash
before_install:
- docker build -f dist/ci/Dockerfile -t spec .
script:
- docker run -it spec ./dist/ci/spec.sh
- env: TEST_SUITE=nosetests
sudo: false
language: python
python: 2.7
install:
# needed to install osc from git in requirements.txt
- pip install pycurl urlgrabber
- pip install -r requirements.txt
- pip install python-coveralls
script:
- nosetests --with-coverage --cover-package=osclib --cover-inclusive
after_success:
- coveralls

View File

@ -5,13 +5,12 @@ include Makefile.common
pkgdata_SCRIPTS=$(wildcard *.py *.pl *.sh)
pkgdata_SCRIPTS+=bs_mirrorfull findfileconflicts
pkgdata_DATA+=bs_copy osclib $(wildcard *.pm *.testcase)
repocheckerhome = /var/lib/opensuse-repo-checker
package_name = openSUSE-release-tools
all:
install:
install -d -m 755 $(DESTDIR)$(pkgdatadir) $(DESTDIR)$(unitdir) $(DESTDIR)$(oscplugindir)
install -d -m 755 $(DESTDIR)$(repocheckerhome)
for i in $(pkgdata_SCRIPTS); do install -m 755 $$i $(DESTDIR)$(pkgdatadir); done
chmod 644 $(DESTDIR)$(pkgdatadir)/osc-*.py
for i in $(pkgdata_DATA); do cp -a $$i $(DESTDIR)$(pkgdatadir); done
@ -25,4 +24,12 @@ test:
# to see more add -v -d -s --nologcapture
$(wildcard /usr/bin/nosetests-2.*)
package:
touch dist/package/$(package_name).changes
tar -cJf dist/package/$(package_name).tar.xz --exclude=.git* --exclude=dist/package/*.tar.xz --transform 's,^\.,$(package_name),' .
package-clean:
rm -f dist/package/$(package_name).changes
rm -f dist/package/$(package_name).tar.xz
.PHONY: all install test check

33
dist/ci/Dockerfile vendored Normal file
View File

@ -0,0 +1,33 @@
# https://docs.docker.com/engine/reference/builder/
FROM boombatower/opensuse:tumbleweed
MAINTAINER Jimmy Berry <jberry@suse.com>
# hard-code mirror until TW mirror issue is resolved
RUN zypper ar http://mirror.datto.com/opensuse/tumbleweed/repo/oss/ oss2 && \
zypper mr --disable oss && \
zypper lr -U
RUN zypper ref && zypper -n in --no-recommends \
obs-service-source_validator \
rpm-build \
apache-rpm-macros \
apache2-devel \
libxml2-tools \
make \
osc \
python-PyYAML \
python-cmdln \
python-colorama \
python-httpretty \
python-lxml \
python-mock \
python-nose \
python-python-dateutil \
python-pyxdg \
rsyslog
RUN mkdir -p /usr/src/app
WORKDIR /usr/src/app
COPY . /usr/src/app

32
dist/ci/spec.sh vendored Executable file
View File

@ -0,0 +1,32 @@
#!/bin/bash
# Adapted from: https://github.com/openSUSE/snapper/blob/master/.travis.tumbleweed.sh.
set -e -x
make
make package
# Validate package.
(cd dist/package && /usr/lib/obs/service/source_validator)
# Build package (--nocheck as test suite runs separately).
cp dist/package/* /usr/src/packages/SOURCES/
rpmbuild --nocheck -bb -D "jobs `nproc`" dist/package/*.spec
# Install to test scripts.
rpm -iv --force --nodeps /usr/src/packages/RPMS/*/*.rpm
# Ensure the staging plugin starts.
cat << eom > ~/.oscrc
[general]
[https://api.opensuse.org]
user = example
pass = example
eom
osc staging --version
# Upgrade and uninstall to test scripts.
rpm -Uv --force --nodeps /usr/src/packages/RPMS/*/*.rpm
# get the plain package names and remove all packages at once
rpm -ev --nodeps `rpm -q --qf '%{NAME} ' -p /usr/src/packages/RPMS/**/*.rpm`

251
dist/package/openSUSE-release-tools.spec vendored Normal file
View File

@ -0,0 +1,251 @@
#
# spec file for package openSUSE-release-tools
#
# Copyright (c) 2017 SUSE LINUX 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/
#
%global __provides_exclude ^perl.*
%define source_dir osc-plugin-factory
%define osc_plugin_dir %{_prefix}/lib/osc-plugins
%define announcer_filename factory-package-news
Name: openSUSE-release-tools
Version: 0
Release: 0
Summary: Tools to aid in staging and release work for openSUSE/SUSE
License: GPL-2.0+ and MIT
Group: Development/Tools/Other
Url: https://github.com/openSUSE/osc-plugin-factory
# _service:tar/filename does not seem to add version like docs indicate.
Source: %{name}.tar.xz
BuildArch: noarch
BuildRequires: osc
BuildRequires: python-PyYAML
BuildRequires: python-cmdln
BuildRequires: python-colorama
BuildRequires: python-lxml
BuildRequires: python-pycurl
BuildRequires: python-python-dateutil
BuildRequires: python-pyxdg
BuildRequires: python-urlgrabber
%if 0%{?is_opensuse}
# Testing only requirements installed for `make check`.
BuildRequires: libxml2-tools
BuildRequires: python-httpretty
BuildRequires: python-mock
BuildRequires: python-nose
%endif
# Spec related requirements.
%if 0%{?is_opensuse}
BuildRequires: apache-rpm-macros
%else
%define apache_sysconfdir %{_sysconfdir}/apache2
%endif
BuildRequires: apache2-devel
BuildRequires: rsyslog
BuildRequires: systemd-rpm-macros
Requires: python-PyYAML
Requires: python-cmdln
Requires: python-colorama
Requires: python-lxml
Requires: python-pycurl
Requires: python-python-dateutil
Requires: python-pyxdg
Requires: python-urlgrabber
# Spec related requirements.
Requires: osclib = %{version}
%description
Tools to aid in staging and release work for openSUSE/SUSE
The toolset consists of a variety of stand-alone scripts, review bots, osc
plugins, and automation aids.
%package devel
Summary: Development requirements for openSUSE-release-tools
Group: Development/Tools/Other
BuildArch: noarch
Requires: libxml2-tools
Requires: python-httpretty
Requires: python-mock
Requires: python-nose
%description devel
Development requirements for openSUSE-release-tools to be used in conjunction
with a git clone of the development repository available from %{url}.
%package abichecker
Summary: ABI review bot
Group: Development/Tools/Other
BuildArch: noarch
Requires: osclib = %{version}
%description abichecker
ABI review bot for checking OBS requests.
%package announcer
Summary: Release announcer
Group: Development/Tools/Other
BuildArch: noarch
# TODO Update requirements.
%description announcer
OBS product release announcer for generating email diffs summaries.
%package totest-manager
Summary: Manages \$product:ToTest repository
Group: Development/Tools/Other
BuildArch: noarch
# TODO Update requirements.
Requires: osclib = %{version}
%description totest-manager
Manages \$product:ToTest repository workflow and openQA interaction
%package -n osclib
Summary: Supplemental osc libraries
Group: Development/Tools/Other
BuildArch: noarch
# TODO Update requirements, but for now base deps.
Requires: %{name} = %{version}
%description -n osclib
Supplemental osc libraries utilized by release tools.
%package -n osc-plugin-check_dups
Summary: OSC plugin to check for duplicate requests
Group: Development/Tools/Other
BuildArch: noarch
Requires: osc
%description -n osc-plugin-check_dups
OSC plugin to check for duplicate requests, see `osc check_dups --help`.
%package -n osc-plugin-cycle
Summary: OSC plugin for cycle visualization
Group: Development/Tools/Other
BuildArch: noarch
Requires: osc
%description -n osc-plugin-cycle
OSC plugin for cycle visualization, see `osc cycle --help`.
%package -n osc-plugin-staging
Summary: OSC plugin for the staging workflow
Group: Development/Tools/Other
BuildArch: noarch
Requires: osclib = %{version}
%description -n osc-plugin-staging
OSC plugin for the staging workflow, see `osc staging --help`.
%prep
%setup -q -n "%{name}"
%build
make %{?_smp_mflags}
%check
%if 0%{?is_opensuse}
make check
%endif
%install
%make_install
# TODO Correct makefile to actually install source.
mkdir -p %{buildroot}%{_datadir}/%{source_dir}/%{announcer_filename}
%pre announcer
%service_add_pre %{announcer_filename}.service
%post announcer
%service_add_post %{announcer_filename}.service
%preun announcer
%service_del_preun %{announcer_filename}.service
%postun announcer
%service_del_postun %{announcer_filename}.service
%pre totest-manager
%service_add_pre opensuse-totest-manager.service
%post totest-manager
%service_add_post opensuse-totest-manager.service
%preun totest-manager
%service_del_preun opensuse-totest-manager.service
%postun totest-manager
%service_del_postun opensuse-totest-manager.service
%files
%defattr(-,root,root,-)
%doc README.asciidoc
%{_datadir}/%{source_dir}
%exclude %{_datadir}/%{source_dir}/abichecker
%exclude %{_datadir}/%{source_dir}/%{announcer_filename}
%exclude %{_datadir}/%{source_dir}/totest-manager.py
%exclude %{_datadir}/%{source_dir}/osclib
%exclude %{_datadir}/%{source_dir}/osc-check_dups.py
%exclude %{_datadir}/%{source_dir}/osc-cycle.py
%exclude %{_datadir}/%{source_dir}/osc-staging.py
# Should be in osc package, but ironically it is using its deprecated directory.
%dir %{osc_plugin_dir}
%files devel
%defattr(-,root,root,-)
# Non-empty for older products.
%doc README.asciidoc
%files abichecker
%{apache_sysconfdir}/vhosts.d/opensuse-abi-checker.conf.in
%{_datadir}/%{source_dir}/abichecker
%{_tmpfilesdir}/opensuse-abi-checker.conf
%{_unitdir}/opensuse-abi-checker.service
%files announcer
%defattr(-,root,root,-)
%doc %{announcer_filename}/README.asciidoc
%{apache_sysconfdir}/conf.d/%{announcer_filename}.conf.in
%{_datadir}/%{source_dir}/%{announcer_filename}
%config(noreplace) %{_sysconfdir}/rsyslog.d/%{announcer_filename}.conf
%{_unitdir}/%{announcer_filename}.service
%{_unitdir}/%{announcer_filename}.timer
%files totest-manager
%{_unitdir}/opensuse-totest-manager.service
%{_datadir}/%{source_dir}/totest-manager.py
%files -n osclib
%{_datadir}/%{source_dir}/osclib
%{osc_plugin_dir}/osclib
%files -n osc-plugin-check_dups
%{_datadir}/%{source_dir}/osc-check_dups.py
%{osc_plugin_dir}/osc-check_dups.py
%files -n osc-plugin-cycle
%{_datadir}/%{source_dir}/osc-cycle.py
%{osc_plugin_dir}/osc-cycle.py
%files -n osc-plugin-staging
%{_datadir}/%{source_dir}/osc-staging.py
%{osc_plugin_dir}/osc-staging.py
%changelog