SHA256
1
0
forked from pool/protobuf

Accepting request 568223 from openSUSE:Factory:Staging:O:DVD

- Conditionalize python2 and python3 in order to be able to build
  without python2 present in distribution
  * Use singlespec macros to simplify the logic
- Run fdupes on python modules to avoid duplicates
- Remove shebangs from import-only code

OBS-URL: https://build.opensuse.org/request/show/568223
OBS-URL: https://build.opensuse.org/package/show/devel:tools:building/protobuf?expand=0&rev=58
This commit is contained in:
Martin Pluskal 2018-01-22 17:03:30 +00:00 committed by Git OBS Bridge
parent ebfb94fbcf
commit c782c2c29c
2 changed files with 50 additions and 117 deletions

View File

@ -1,3 +1,12 @@
-------------------------------------------------------------------
Mon Jan 22 16:50:28 UTC 2018 - tchvatal@suse.com
- Conditionalize python2 and python3 in order to be able to build
without python2 present in distribution
* Use singlespec macros to simplify the logic
- Run fdupes on python modules to avoid duplicates
- Remove shebangs from import-only code
------------------------------------------------------------------- -------------------------------------------------------------------
Mon Dec 11 23:42:45 UTC 2017 - jengelh@inai.de Mon Dec 11 23:42:45 UTC 2017 - jengelh@inai.de

View File

@ -1,7 +1,7 @@
# #
# spec file for package protobuf # spec file for package protobuf
# #
# Copyright (c) 2017 SUSE LINUX GmbH, Nuernberg, Germany. # Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany.
# #
# All modifications and additions to the file contributed by third parties # All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed # remain the property of their copyright owners, unless otherwise agreed
@ -16,23 +16,14 @@
# #
%{?!python_module:%define python_module() python-%{**} python3-%{**}}
%define sover 15 %define sover 15
%define tarname protobuf %define tarname protobuf
# requires gmock, which is not yet in the distribution # requires gmock, which is not yet in the distribution
%bcond_with check %bcond_with check
%bcond_without protobuf_java %bcond_without java
%bcond_without protobuf_python %bcond_without python2
%bcond_without python3
%if %{with protobuf_python}
%if 0%{?suse_version} > 1320
%define protobuf_python3 1
%define python2_prefix python2
%else
%define protobuf_python3 0
%define python2_prefix python
%endif
%endif
Name: protobuf Name: protobuf
Version: 3.5.0 Version: 3.5.0
Release: 0 Release: 0
@ -43,34 +34,25 @@ Url: https://github.com/google/protobuf/
Source0: https://github.com/google/protobuf/archive/v%{version}.tar.gz#/%{tarname}-%{version}.tar.gz Source0: https://github.com/google/protobuf/archive/v%{version}.tar.gz#/%{tarname}-%{version}.tar.gz
Source1: manifest.txt.in Source1: manifest.txt.in
Source2: baselibs.conf Source2: baselibs.conf
BuildRoot: %{_tmppath}/%{name}-%{version}-build BuildRequires: %{python_module devel}
BuildRequires: %{python_module python-dateutil}
BuildRequires: %{python_module python-gflags}
BuildRequires: %{python_module pytz}
BuildRequires: %{python_module setuptools}
BuildRequires: autoconf BuildRequires: autoconf
BuildRequires: automake BuildRequires: automake
BuildRequires: fdupes BuildRequires: fdupes
BuildRequires: gcc-c++ BuildRequires: gcc-c++
BuildRequires: libtool
BuildRequires: pkgconfig
BuildRequires: python-rpm-macros
BuildRequires: zlib-devel
%if %{with check} %if %{with check}
BuildRequires: libgmock-devel >= 1.7.0 BuildRequires: libgmock-devel >= 1.7.0
%endif %endif
BuildRequires: libtool %if %{with java}
BuildRequires: pkg-config
%if %{with protobuf_java}
BuildRequires: java-devel >= 1.6.0 BuildRequires: java-devel >= 1.6.0
%endif %endif
%if %{with protobuf_python}
BuildRequires: %{python2_prefix}-devel
BuildRequires: %{python2_prefix}-python-dateutil
BuildRequires: %{python2_prefix}-python-gflags
BuildRequires: %{python2_prefix}-pytz
BuildRequires: %{python2_prefix}-setuptools
%if %{protobuf_python3}
BuildRequires: python3-devel
BuildRequires: python3-python-dateutil
BuildRequires: python3-python-gflags
BuildRequires: python3-pytz
BuildRequires: python3-setuptools
%endif
BuildRequires: zlib-devel
%endif
%description %description
Protocol Buffers are a way of encoding structured data in an efficient yet Protocol Buffers are a way of encoding structured data in an efficient yet
@ -111,15 +93,14 @@ Requires: gcc-c++
Requires: libprotobuf%{sover} = %{version} Requires: libprotobuf%{sover} = %{version}
Requires: libprotobuf-lite%{sover} Requires: libprotobuf-lite%{sover}
Requires: zlib-devel Requires: zlib-devel
Provides: libprotobuf-devel = %{version}
Conflicts: protobuf2-devel Conflicts: protobuf2-devel
Provides: libprotobuf-devel = %{version}
%description devel %description devel
Protocol Buffers are a way of encoding structured data in an efficient yet Protocol Buffers are a way of encoding structured data in an efficient yet
extensible format. Google uses Protocol Buffers for almost all of its internal extensible format. Google uses Protocol Buffers for almost all of its internal
RPC protocols and file formats. RPC protocols and file formats.
%if %{with protobuf_java}
%package -n %{name}-java %package -n %{name}-java
Summary: Java Bindings for Google Protocol Buffers Summary: Java Bindings for Google Protocol Buffers
Group: Development/Libraries/Java Group: Development/Libraries/Java
@ -127,61 +108,45 @@ Requires: java >= 1.6.0
%description -n %{name}-java %description -n %{name}-java
This package contains the Java bindings for Google Protocol Buffers. This package contains the Java bindings for Google Protocol Buffers.
%endif
%if %{with protobuf_python} %package -n python2-%{name}
%package -n %{python2_prefix}-%{name}
Summary: Python2 Bindings for Google Protocol Buffers Summary: Python2 Bindings for Google Protocol Buffers
Group: Development/Libraries/Python Group: Development/Libraries/Python
%if 0%{?protobuf_python3}
Provides: python-%{name} = %{version} Provides: python-%{name} = %{version}
Obsoletes: python-%{name} < %{version} Obsoletes: python-%{name} < %{version}
%endif
%if 0%{?suse_version}
%py_requires
%else
Requires: python
%endif
%description -n %{python2_prefix}-%{name} %description -n python2-%{name}
This package contains the Python bindings for Google Protocol Buffers. This package contains the Python bindings for Google Protocol Buffers.
%if 0%{?protobuf_python3}
%package -n python3-%{name} %package -n python3-%{name}
Summary: Python3 Bindings for Google Protocol Buffers Summary: Python3 Bindings for Google Protocol Buffers
Group: Development/Libraries/Python Group: Development/Libraries/Python
Requires: python3
%description -n python3-%{name} %description -n python3-%{name}
This package contains the Python bindings for Google Protocol Buffers. This package contains the Python bindings for Google Protocol Buffers.
%endif
%endif
%prep %prep
%setup -q -n %{tarname}-%{version} %setup -q -n %{tarname}-%{version}
mkdir gmock mkdir gmock
%if %{with protobuf_python} %if %{with python2} || %{with python3}
# only needed for test suite which we don't call anyways. # only needed for test suite which we don't call anyways.
# googleapis is broken on sle12 # googleapis is broken on sle12
sed -i '/apputils/d' python/setup.py sed -i '/apputils/d' python/setup.py
sed -i '/google_test_dir/d' python/setup.py sed -i '/google_test_dir/d' python/setup.py
%endif %endif
# kill shebang that we do not really want
sed -i -e '/env python/d' python/google/protobuf/internal/*.py
%build %build
%if 0%{?mandriva_version} autoreconf -fvi
#XXX something wents wrong with detecting this
export PTHREAD_LIBS=-lpthread
%endif
autoreconf -fi
%configure \ %configure \
--disable-static --disable-static
make %{?_smp_mflags} make %{?_smp_mflags}
%if %{with protobuf_java} %if %{with java}
pushd java pushd java
../src/protoc --java_out=core/src/main/java -I../src ../src/google/protobuf/descriptor.proto ../src/protoc --java_out=core/src/main/java -I../src ../src/google/protobuf/descriptor.proto
mkdir classes mkdir classes
@ -191,36 +156,22 @@ jar cfm %{name}-java-%{version}.jar manifest.txt -C classes com
popd popd
%endif %endif
%if %{with protobuf_python} pushd python
cp -Ra python python2 %python_build
pushd python2
python2 setup.py build
# setup.py seems to be broken, some files are only installed on the second invocation
python2 setup.py build
popd popd
%if 0%{?protobuf_python3}
cp -Ra python python3
pushd python3
python3 setup.py build
# setup.py seems to be broken, some files are only installed on the second invocation
python3 setup.py build
popd
%endif
%endif
%if %{with check} %if %{with check}
%check %check
make %{?_smp_mflags} check make %{?_smp_mflags} check
%endif %endif
%install %install
make DESTDIR=%{buildroot} install %{?_smp_mflags} %make_install
install -Dm 0644 editors/proto.vim %{buildroot}%{_datadir}/vim/site/syntax/proto.vim install -Dm 0644 editors/proto.vim %{buildroot}%{_datadir}/vim/site/syntax/proto.vim
# no need for that # no need for that
find %{buildroot} -type f -name "*.la" -delete -print find %{buildroot} -type f -name "*.la" -delete -print
%if %{with protobuf_java} %if %{with java}
pushd java pushd java
install -D -m 0644 %{name}-java-%{version}.jar %{buildroot}%{_javadir}/%{name}-java-%{version}.jar install -D -m 0644 %{name}-java-%{version}.jar %{buildroot}%{_javadir}/%{name}-java-%{version}.jar
ln -s %{name}-java-%{version}.jar %{buildroot}%{_javadir}/%{name}-java.jar ln -s %{name}-java-%{version}.jar %{buildroot}%{_javadir}/%{name}-java.jar
@ -228,57 +179,29 @@ ln -s %{name}-java-%{version}.jar %{buildroot}%{_javadir}/%{name}.jar
popd popd
%endif %endif
%if %{with protobuf_python} pushd python
pushd python2 %python_install
python2 setup.py install --skip-build \
--prefix=%{_prefix} \
--root %{buildroot} \
--install-lib=%{python_sitearch} \
--install-data=%{_datadir} \
--record-rpm=INSTALLED_FILES
popd popd
%fdupes -s %{buildroot}%{python_sitearch} %python_expand %fdupes %{buildroot}%{$python_sitelib}
%if 0%{?protobuf_python3}
pushd python3
python3 setup.py install --skip-build \
--prefix=%{_prefix} \
--root %{buildroot} \
--install-lib=%{python3_sitearch} \
--install-data=%{_datadir} \
--record-rpm=INSTALLED_FILES
popd
%fdupes -s %{buildroot}%{python3_sitearch}
%endif
%endif
%post -n libprotobuf%{sover} -p /sbin/ldconfig %post -n libprotobuf%{sover} -p /sbin/ldconfig
%postun -n libprotobuf%{sover} -p /sbin/ldconfig %postun -n libprotobuf%{sover} -p /sbin/ldconfig
%post -n libprotoc%{sover} -p /sbin/ldconfig %post -n libprotoc%{sover} -p /sbin/ldconfig
%postun -n libprotoc%{sover} -p /sbin/ldconfig %postun -n libprotoc%{sover} -p /sbin/ldconfig
%post -n libprotobuf-lite%{sover} -p /sbin/ldconfig %post -n libprotobuf-lite%{sover} -p /sbin/ldconfig
%postun -n libprotobuf-lite%{sover} -p /sbin/ldconfig %postun -n libprotobuf-lite%{sover} -p /sbin/ldconfig
%files -n libprotobuf%{sover} %files -n libprotobuf%{sover}
%defattr(-, root, root) %license LICENSE
%doc LICENSE
%{_libdir}/libprotobuf.so.%{sover}* %{_libdir}/libprotobuf.so.%{sover}*
%files -n libprotoc%{sover} %files -n libprotoc%{sover}
%defattr(-, root, root)
%{_libdir}/libprotoc.so.%{sover}* %{_libdir}/libprotoc.so.%{sover}*
%files -n libprotobuf-lite%{sover} %files -n libprotobuf-lite%{sover}
%defattr(-, root, root)
%{_libdir}/libprotobuf-lite.so.%{sover}* %{_libdir}/libprotobuf-lite.so.%{sover}*
%files devel %files devel
%defattr(-,root,root)
%doc CHANGES.txt CONTRIBUTORS.txt README.md %doc CHANGES.txt CONTRIBUTORS.txt README.md
%{_bindir}/protoc %{_bindir}/protoc
%{_includedir}/google %{_includedir}/google
@ -286,20 +209,21 @@ popd
%{_libdir}/pkgconfig/* %{_libdir}/pkgconfig/*
%{_datadir}/vim %{_datadir}/vim
%if %{with protobuf_java} %if %{with java}
%files -n %{name}-java %files -n %{name}-java
%defattr(-,root,root)
%{_javadir}/protobuf* %{_javadir}/protobuf*
%endif %endif
%if %{with protobuf_python} %if %{with python2}
%files -n %{python2_prefix}-%{name} -f python2/INSTALLED_FILES %files -n python2-%{name}
%defattr(-,root,root) %license LICENSE
%{python2_sitelib}/*
%if 0%{?protobuf_python3}
%files -n python3-%{name} -f python3/INSTALLED_FILES
%defattr(-,root,root)
%endif %endif
%if %{with python3}
%files -n python3-%{name}
%license LICENSE
%{python3_sitelib}/*
%endif %endif
%changelog %changelog