Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

cleanup of py2 packages; make sure to install their dependencies #4482

Merged
merged 6 commits into from
Nov 8, 2018
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
86 changes: 66 additions & 20 deletions build-with-pip.file
@@ -1,68 +1,114 @@
#File: with-with-pip
#pip_name: pip package name default is package name without starting py2
#PipDownloadSourceType: Only override the download source type e.g. none, all etc. Default is all
#PipDownloadOptions: override pip download sources options. Default is --no-deps%%20--no-binary%%3D:%%PipDownloadSourceType:
#PipBuildOptions: Override pip install options
#pkgsource: Override default source name e.g. source.tar.gz
#source0: Override default source
#doPython(2|3): To disable building package for python2 or python3
#Pip<Pre|Post><Section>: Extra macros to run extra commands for various sections e.g
#PipPostBuild to relocate hardcoded pyton paths
#define PipPostBuild perl -p -i -e "s|^#!.*python|#!/usr/bin/env python|" %{i}/bin/*

## INITENV +PATH PYTHON27PATH %{i}/${PYTHON_LIB_SITE_PACKAGES}
## INITENV +PATH PYTHON3PATH %{i}/${PYTHON3_LIB_SITE_PACKAGES}

%if "%{?pip_name:set}" != "set"
%define pip_name %(echo %n | cut -f2-5 -d-)
%define pip_name %(echo %n | cut -f2-10 -d-)
%endif
%if "%{?PipDownloadSourceType:set}" != "set"
%define PipDownloadSourceType all
%endif
%if "%{?PipDownloadOptions:set}" != "set"
%define PipDownloadOptions --no-deps%%20--no-binary%%3D:all:
%define PipDownloadOptions --no-deps%%20--no-binary%%3D:%{PipDownloadSourceType}:
%endif
%if "%{?PipBuildOptions:set}" != "set"
%define PipBuildOptions --no-deps
%endif
%if "%{?source0:set}" != "set"
%define source0 pip://%{pip_name}/%{realversion}?pip_options=%{PipDownloadOptions}&output=/source.tar.gz
%if "%{?pkgsource:set}" != "set"
%define pkgsource source.tar.gz
%endif

%if "%{?doPython2:set}" != "set"
Requires: python
%define doPython2 yes
%endif

%if "%{?doPython3:set}" != "set"
Requires: python3
%define doPython3 yes
%endif

%if "%{?source0:set}" != "set"
%define source0 pip://%{pip_name}/%{realversion}?pip_options=%{PipDownloadOptions}&pip=pip2&output=/%{pkgsource}
%else
%define source_file %(echo '%{source0}' | sed 's|.*/||')
%endif

Source: %source0

Requires: python
Requires: python3
Requires: py2-setuptools
BuildRequires: py2-pip

%prep

%build
mkdir -p %{i}

%{?PipPrePrep:%PipPrePrep}
%if "%{?source_file:set}" != "set"
tar xfz %{_sourcedir}/source.tar.gz
tar xfz %{_sourcedir}/%{pkgsource}
%else
cp %{_sourcedir}/source.tar.gz %{source_file}
echo %{source_file} > files.list
cp %{_sourcedir}/%{source_file} %{source_file}
echo %{source_file} > files.list
%endif

%{?PipPostPrep:%PipPostPrep}
%{?PipPreBuild:%PipPreBuild}


if [ `cat files.list | wc -l` == "1" ] ; then
if [ $(cat files.list | wc -l) -eq 1 ] ; then
export PIPFILE=`cat files.list`
echo ${PIPFILE}
export PYTHONUSERBASE=%i
export PYTHONUSERBASE=%{i}
%if "%{doPython3}" == "yes"
pip3 list
pip3 install --user -v %{PipBuildOptions} $PIPFILE
pip3 list --disable-pip-version-check
%{?PipPreBuildPy3:%PipPreBuildPy3}
pip3 install --disable-pip-version-check --user -v %{PipBuildOptions} %{?PipBuildOptionsPy3:%PipBuildOptionsPy3} $PIPFILE
PKG_NAME=$(pip3 show %{pip_name} --disable-pip-version-check | grep '^Name:' | sed 's|^Name: *||;s| ||g')
DEPS=$(pip3 check --disable-pip-version-check | grep "^${PKG_NAME} *%{realversion} *requires " | sed 's|,.*||;s|.* |py2-|' | tr '\n' ' ')
if [ "$DEPS" != "" ] ; then
echo "ERROR: Missing dependencies for %n (python3) found: $DEPS"
exit 1
fi
%{?PipPostBuildPy3:%PipPostBuildPy3}
%endif
%if "%{doPython2}" == "yes"
pip2 list
pip2 install --user -v %{PipBuildOptions} $PIPFILE
pip2 list --disable-pip-version-check
%{?PipPreBuildPy2:%PipPreBuildPy2}
pip2 install --disable-pip-version-check --user -v %{PipBuildOptions} %{?PipBuildOptionsPy2:%PipBuildOptionsPy2} $PIPFILE
PKG_NAME=$(pip2 show %{pip_name} --disable-pip-version-check | grep '^Name:' | sed 's|^Name: *||;s| ||g')
DEPS=$(pip2 check --disable-pip-version-check | grep "^${PKG_NAME} *%{realversion} *requires " | sed 's|,.*||;s|.* |py2-|' | tr '\n' ' ')
if [ "$DEPS" != "" ] ; then
echo "ERROR: Missing dependencies for %n (python2) found: $DEPS"
exit 1
fi
%{?PipPostBuildPy2:%PipPostBuildPy2}
%endif
else
echo "Sorry I don't know how to handle no/multiple install files yet"
cat %{_sourcedir}/files.txt
cat %{_builddir}/files.list
exit 1
fi

%install

%{?PipPostBuild:%PipPostBuild}

#Install Section
%install
%{?PipPreInstall:%PipPreInstall}
%{?PipPostInstall:%PipPostInstall}
echo "OK Install"

#post Section
%post
%{?PipPrePost:%PipPrePost}
%{?PipPostPost:%PipPostPost}

4 changes: 4 additions & 0 deletions py2-Bottleneck.spec
@@ -0,0 +1,4 @@
### RPM external py2-Bottleneck 1.2.1
## IMPORT build-with-pip

Requires: py2-numpy
2 changes: 2 additions & 0 deletions py2-Click.spec
@@ -0,0 +1,2 @@
### RPM external py2-Click 7.0
## IMPORT build-with-pip
4 changes: 4 additions & 0 deletions py2-GitPython.spec
@@ -0,0 +1,4 @@
### RPM external py2-GitPython 2.1.11
## IMPORT build-with-pip

Requires: py2-gitdb2 py2-smmap2
8 changes: 1 addition & 7 deletions py2-Jinja2.spec
@@ -1,10 +1,4 @@
### RPM external py2-Jinja2 2.10
## INITENV +PATH PYTHON27PATH %{i}/${PYTHON_LIB_SITE_PACKAGES}
## INITENV +PATH PYTHON3PATH %{i}/${PYTHON3_LIB_SITE_PACKAGES}


%define pip_name Jinja2
Requires: py2-MarkupSafe

## IMPORT build-with-pip

Requires: py2-MarkupSafe
7 changes: 1 addition & 6 deletions py2-Keras.spec
@@ -1,9 +1,4 @@
### RPM external py2-Keras 2.1.4
## INITENV +PATH PYTHON27PATH %{i}/${PYTHON_LIB_SITE_PACKAGES}
## INITENV +PATH PYTHON3PATH %{i}/${PYTHON3_LIB_SITE_PACKAGES}

%define pip_name Keras
Requires: py2-PyYAML py2-six py2-scipy py2-Theano py2-numpy
## IMPORT build-with-pip


Requires: py2-PyYAML py2-six py2-scipy py2-Theano
4 changes: 4 additions & 0 deletions py2-Markdown.spec
@@ -0,0 +1,4 @@
### RPM external py2-Markdown 3.0.1
## IMPORT build-with-pip

%define PipPostBuild perl -p -i -e "s|^#!.*python|#!/usr/bin/env python|" %{i}/bin/*
8 changes: 0 additions & 8 deletions py2-MarkupSafe.spec
@@ -1,10 +1,2 @@
### RPM external py2-MarkupSafe 1.0
## INITENV +PATH PYTHON27PATH %{i}/${PYTHON_LIB_SITE_PACKAGES}
## INITENV +PATH PYTHON3PATH %{i}/${PYTHON3_LIB_SITE_PACKAGES}


%define pip_name MarkupSafe


## IMPORT build-with-pip

19 changes: 2 additions & 17 deletions py2-PyYAML.spec
@@ -1,17 +1,2 @@
### RPM external py2-PyYAML 3.11
## INITENV +PATH PYTHON27PATH %{i}/${PYTHON_LIB_SITE_PACKAGES}
## INITENV +PATH PYTHON3PATH %{i}/${PYTHON3_LIB_SITE_PACKAGES}

%define my_name %(echo %n | cut -f2 -d-)
Source: http://pyyaml.org/download/pyyaml/%{my_name}-%{realversion}.tar.gz
Requires: python

%prep
%setup -n %{my_name}-%{realversion}

%build
python setup.py --without-libyaml build

%install
python setup.py install --skip-build --prefix=%{i}
find %{i}/${PYTHON_LIB_SITE_PACKAGES} -name '*.egg-info' -type d -print0 | xargs -0 rm -rf
### RPM external py2-PyYAML 3.13
## IMPORT build-with-pip
24 changes: 0 additions & 24 deletions py2-Pygments-toolfile.spec

This file was deleted.

7 changes: 0 additions & 7 deletions py2-Pygments.spec
@@ -1,11 +1,4 @@
### RPM external py2-Pygments 2.2.0
## INITENV +PATH PYTHON27PATH %{i}/${PYTHON_LIB_SITE_PACKAGES}
## INITENV +PATH PYTHON3PATH %{i}/${PYTHON3_LIB_SITE_PACKAGES}


%define pip_name Pygments


## IMPORT build-with-pip

%define PipPostBuild \
Expand Down
2 changes: 2 additions & 0 deletions py2-Send2Trash.spec
@@ -0,0 +1,2 @@
### RPM external py2-Send2Trash 1.5.0
## IMPORT build-with-pip
24 changes: 0 additions & 24 deletions py2-Theano-toolfile.spec

This file was deleted.

7 changes: 1 addition & 6 deletions py2-Theano.spec
@@ -1,11 +1,6 @@
### RPM external py2-Theano 1.0.2
## INITENV +PATH PYTHON27PATH %{i}/${PYTHON_LIB_SITE_PACKAGES}
## INITENV +PATH PYTHON3PATH %{i}/${PYTHON3_LIB_SITE_PACKAGES}


%define pip_name Theano
Requires: py2-scipy py2-numpy py2-six
## IMPORT build-with-pip

Requires: py2-scipy py2-six
%define PipPostBuild \
perl -p -i -e "s|^#!.*python|#!/usr/bin/env python|" %{i}/bin/theano-nose %{i}/bin/theano-cache %{i}/bin/theano-test
2 changes: 2 additions & 0 deletions py2-Werkzeug.spec
@@ -0,0 +1,2 @@
### RPM external py2-Werkzeug 0.14.1
## IMPORT build-with-pip
4 changes: 4 additions & 0 deletions py2-absl-py.spec
@@ -0,0 +1,4 @@
### RPM external py2-absl-py 0.6.1
## IMPORT build-with-pip

Requires: py2-enum34 py2-six
8 changes: 0 additions & 8 deletions py2-appdirs.spec
@@ -1,10 +1,2 @@
### RPM external py2-appdirs 1.4.3
## INITENV +PATH PYTHON27PATH %{i}/${PYTHON_LIB_SITE_PACKAGES}
## INITENV +PATH PYTHON3PATH %{i}/${PYTHON3_LIB_SITE_PACKAGES}


%define pip_name appdirs


## IMPORT build-with-pip

8 changes: 0 additions & 8 deletions py2-argparse.spec
@@ -1,10 +1,2 @@
### RPM external py2-argparse 1.4.0
## INITENV +PATH PYTHON27PATH %{i}/${PYTHON_LIB_SITE_PACKAGES}
## INITENV +PATH PYTHON3PATH %{i}/${PYTHON3_LIB_SITE_PACKAGES}


%define pip_name argparse


## IMPORT build-with-pip

2 changes: 2 additions & 0 deletions py2-asn1crypto.spec
@@ -0,0 +1,2 @@
### RPM external py2-asn1crypto 0.24.0
## IMPORT build-with-pip
7 changes: 0 additions & 7 deletions py2-atomicwrites.spec
@@ -1,9 +1,2 @@
### RPM external py2-atomicwrites 1.2.1
## INITENV +PATH PYTHON27PATH %{i}/${PYTHON_LIB_SITE_PACKAGES}
## INITENV +PATH PYTHON3PATH %{i}/${PYTHON3_LIB_SITE_PACKAGES}


## IMPORT build-with-pip



6 changes: 0 additions & 6 deletions py2-attrs.spec
@@ -1,8 +1,2 @@
### RPM external py2-attrs 18.2.0
## INITENV +PATH PYTHON27PATH %{i}/${PYTHON_LIB_SITE_PACKAGES}
## INITENV +PATH PYTHON3PATH %{i}/${PYTHON3_LIB_SITE_PACKAGES}

## IMPORT build-with-pip



24 changes: 0 additions & 24 deletions py2-autopep8-toolfile.spec

This file was deleted.

9 changes: 2 additions & 7 deletions py2-autopep8.spec
@@ -1,10 +1,5 @@
### RPM external py2-autopep8 1.4
## INITENV +PATH PYTHON27PATH %{i}/${PYTHON_LIB_SITE_PACKAGES}
## INITENV +PATH PYTHON3PATH %{i}/${PYTHON3_LIB_SITE_PACKAGES}


## IMPORT build-with-pip

%define PipPostBuild \
perl -p -i -e "s|^#!.*python|#!/usr/bin/env python|" %{i}/bin/*

Requires: py2-pycodestyle
%define PipPostBuild perl -p -i -e "s|^#!.*python|#!/usr/bin/env python|" %{i}/bin/*
24 changes: 0 additions & 24 deletions py2-avro-toolfile.spec

This file was deleted.