From 7531f3c2df8989d3564afacbdcc6d6e6efc79fc2 Mon Sep 17 00:00:00 2001 From: pcpa Date: Sat, 4 Apr 2015 13:43:41 -0300 Subject: [PATCH] Rework build to remove buildroot references --- sagemath-sagenb.patch | 4 +-- sagemath.spec | 62 +++++++++++++++++++++++++++++++------------ 2 files changed, 47 insertions(+), 19 deletions(-) diff --git a/sagemath-sagenb.patch b/sagemath-sagenb.patch index 0158b7d..d4d87ad 100644 --- a/sagemath-sagenb.patch +++ b/sagemath-sagenb.patch @@ -45,8 +45,8 @@ diff -up build/pkgs/sagenb/src/sagenb-0.11.4/sagenb/misc/misc.py.orig build/pkgs SAGENB_ROOT = os.path.split(resource_filename(__name__, ''))[0] -DATA = os.path.join(SAGENB_ROOT, 'data') -+from sage.misc.misc import SAGE_SRC -+DATA = os.path.join(SAGE_SRC, 'sagenb', 'data') ++import sage.env ++DATA = os.path.join(sage.env.SAGE_SRC, 'sagenb', 'data') if os.environ.has_key('DOT_SAGENB'): DOT_SAGENB = os.environ['DOT_SAGENB'] diff --git a/sagemath.spec b/sagemath.spec index 680b61c..51a7379 100644 --- a/sagemath.spec +++ b/sagemath.spec @@ -1,19 +1,22 @@ %global __provides_exclude_from .*/site-packages/.*\\.so +# for faster full rpm test builds +%bcond_without docs + # not functional due to missing jar dependencies -%global with_sage3d 0 +%bcond_with sage3d # use an workaround to match upstream sagemath patched sphinx -%global with_sphinx_hack 1 +%bcond_without sphinx_hack %ifarch x86_64 -%global have_fes 1 +%bcond_without fes %else -%global have_fes 0 +%bcond_with fes %endif # set to run sage -testall in %%install -%global with_check 0 +%bcond_with check %global SAGE_TIMEOUT 60 %global SAGE_TIMEOUT_LONG 180 @@ -158,7 +161,7 @@ BuildRequires: dvipng BuildRequires: ecl BuildRequires: eclib-devel BuildRequires: factory-devel -%if %{have_fes} +%if %{with fes} BuildRequires: fes-devel %endif BuildRequires: flint-devel >= 2.3 @@ -393,6 +396,7 @@ Requires: %{name}%{?_isa} = %{version}-%{release} This package contains the header files and development documentation for %{name}. +%if %{with docs} #------------------------------------------------------------------------ %package doc Summary: Documentation infrastructure files for %{name} @@ -491,6 +495,8 @@ BuildArch: noarch %description doc-tr This package contains the Turkish %{name} documentation. +# with docs +%endif #------------------------------------------------------------------------ %package notebook @@ -627,7 +633,7 @@ popd %patch18 %patch19 -%if %{have_fes} +%if %{with fes} %patch20 %endif @@ -725,6 +731,14 @@ pushd build/pkgs/rubiks/src make %{?_smp_mflags} CC="gcc -fPIC" CXX="g++ -fPIC" CFLAGS="%{optflags}" CXXFLAGS="%{optflags}" popd +# Remove buildroot reference from cython comments +perl -pi -e 's|%{buildroot}||g;' `find src/build/cythonized -type f` +# Try hard to remove buildroot from binaries +rm -f `grep -lr "%{buildroot}" src/build/lib.linux-*/` +pushd src + python ./setup.py build +popd + # last build command rm -fr $DOT_SAGE @@ -762,9 +776,11 @@ pushd src python setup.py install --root=%{buildroot} cp -fa c_lib/libcsage.so.0 %{buildroot}%{_libdir} ln -sf libcsage.so.0 %{buildroot}%{_libdir}/libcsage.so +%if %{with docs} # install documentation sources rm -fr $SAGE_DOC/{common,en,fr} cp -far doc/{common,ca,de,en,fr,hu,it,pt,ru,tr} $SAGE_DOC +%endif popd #------------------------------------------------------------------------ @@ -775,7 +791,7 @@ pushd build/pkgs/sagenb/src/%{sagenb_pkg} ln -sf %{_jsdir}/jsmol $SAGE_SHARE/jsmol # sage3d rm -f %{buildroot}%{_bindir}/sage3d -%if %{with_sage3d} +%if %{with sage3d} ln -sf %{SAGE_LOCAL}/bin/sage3d %{buildroot}%{python_sitearch}/sagenb/data/sage3d/sage3d %endif ln -sf %{python_sitearch}/sagenb %{buildroot}%{SAGE_SRC}/sagenb @@ -956,7 +972,7 @@ EOF chmod +x %{buildroot}%{_bindir}/sage #------------------------------------------------------------------------ -%if %{with_sage3d} +%if %{with sage3d} cat > %{buildroot}%{SAGE_LOCAL}/bin/sage3d << EOF #!/bin/sh @@ -981,6 +997,7 @@ pushd src touch %{buildroot}%{python_sitearch}/sage/libs/gmp/__init__.py popd +%if %{with docs} #------------------------------------------------------------------------ cp -f $SAGE_PYTHONPATH/{ANSI,FSM,pexpect,pxssh,screen}.py %{buildroot}%{python_sitearch} @@ -993,7 +1010,7 @@ pushd src/doc export LD_LIBRARY_PATH=%{buildroot}%{_libdir}:%{_libdir}/atlas:$LD_LIBRARY_PATH export PYTHONPATH=%{buildroot}%{python_sitearch}:$SAGE_PYTHONPATH:$SAGE_DOC -%if %{with_sphinx_hack} +%if %{with sphinx_hack} cp -far %{python_sitelib}/sphinx %{buildroot}%{python_sitearch} sed -i "s|\(source.startswith('>>>')\)|\1 or source.startswith('sage: ')|" \ %{buildroot}%{python_sitearch}/sphinx/highlighting.py @@ -1009,7 +1026,7 @@ pushd src/doc rm -fr $SAGE_DOC/output/doctrees popd -%if %{with_check} +%if %{with check} export SAGE_TIMEOUT=%{SAGE_TIMEOUT} export SAGE_TIMEOUT_LONG=%{SAGE_TIMEOUT_LONG} sage -testall --verbose || : @@ -1020,17 +1037,19 @@ sed -i 's|%{buildroot}||g' $SAGE_DOC/test.log rm -f %{buildroot}%{python_sitearch}/{ANSI,FSM,pexpect,pxssh,screen}.py{,c} -%if %{with_sphinx_hack} +%if %{with sphinx_hack} rm -fr %{buildroot}%{python_sitearch}/sphinx %endif -# Script was used to build documentation -perl -pi -e 's|%{buildroot}||g;s|^##||g;' %{buildroot}%{_bindir}/sage - # More wrong buildroot references perl -pi -e 's|%{buildroot}||g;' \ -e "s|$PWD/src/doc|%{SAGE_DOC}|g;" \ %{buildroot}%{SAGE_DOC}/output/html/en/reference/todolist.html +# with docs +%endif + +# Script was used to build documentation +perl -pi -e 's|%{buildroot}||g;s|^##||g;' %{buildroot}%{_bindir}/sage #------------------------------------------------------------------------ # Fix links @@ -1072,12 +1091,15 @@ for file in `find %{buildroot} -name \*.py`; do chmod +x $file fi done + +%if %{with doc} chmod -x %{buildroot}%{SAGE_DOC}/en/prep/media/Rplot001.png # Documentation is not rebuilt (also corrects rpmlint warning of hidden file) find %{buildroot}%{SAGE_DOC} -name .buildinfo -exec rm {} \; rm -fr %{buildroot}%{SAGE_DOC}/output/inventory find %{buildroot}%{SAGE_DOC} -type d -name _sources | xargs rm -fr +%endif # remove bundles fonts rm -r %{buildroot}%{python_sitearch}/sagenb/data/mathjax/fonts @@ -1085,7 +1107,7 @@ rm -r %{buildroot}%{python_sitearch}/sagenb/data/mathjax/fonts # remove .po files rm %{buildroot}%{python_sitearch}/sagenb/translations/*/LC_MESSAGES/*.po -%if !%{with_sage3d} +%if %{without sage3d} rm -r %{buildroot}%{python_sitearch}/sagenb/data/sage3d %endif @@ -1193,6 +1215,7 @@ exit 0 %{_includedir}/csage %{_libdir}/libcsage.so +%if %{with docs} #------------------------------------------------------------------------ %files doc # GPLv2+ @@ -1254,6 +1277,8 @@ exit 0 # GPLv2+ %{SAGE_DOC}/tr %{SAGE_DOC}/output/html/tr +# with docs +%endif #------------------------------------------------------------------------ %files notebook @@ -1285,7 +1310,7 @@ exit 0 %{python_sitearch}/sagenb/data/openid-realselector # GPLv2+ %{python_sitearch}/sagenb/data/sage -%if %{with_sage3d} +%if %{with sage3d} # GPLv2+ %{python_sitearch}/sagenb/data/sage3d %endif @@ -1346,6 +1371,9 @@ exit 0 - Update to sagemath 6.5 - Add new Catalan and Hungarian doc subpackages - Add customizations to not need a patched pari +- Add "with docs" test build option +- Convert build conditionals to use bcond +- Correct deprecated warning when loading sagenb * Sat Feb 7 2015 pcpa - 6.4.1-4 - Rebuild with a functional jsmol interface (#1190356)