diff --git a/2.2.8.tar.gz b/2.2.8.tar.gz
deleted file mode 100644
index c8f1721..0000000
--- a/2.2.8.tar.gz
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:72786423b2ff847e8e0035326a8f1b2cdcf76a68c77f95588276bbccfaa74d7e
-size 24075709
diff --git a/Fix-linking-of-cadabra-module.patch b/Fix-linking-of-cadabra-module.patch
index 96218a8..88b47dd 100644
--- a/Fix-linking-of-cadabra-module.patch
+++ b/Fix-linking-of-cadabra-module.patch
@@ -8,24 +8,16 @@ Subject: [PATCH] Fix linking of cadabra module.
core/CMakeLists.txt | 7 +++++--
2 files changed, 6 insertions(+), 3 deletions(-)
-diff --git a/core/CMakeLists.txt b/core/CMakeLists.txt
-index d9356682ba..8141820ab8 100644
---- a/core/CMakeLists.txt
-+++ b/core/CMakeLists.txt
-@@ -216,6 +218,7 @@ set(LOCAL_SRC_FILES
- SympyCdb.cc
- YoungTab.cc
- modules/xperm_new.cc
-+ ${CADABRA_LIBS_DIR}/whereami/whereami.c
- ${ALGORITHM_SRC_FILES}
- ${PROPERTY_SRC_FILES}
- )
-@@ -278,6 +279,8 @@ target_link_libraries(cadabra2 PRIVATE
+Index: cadabra2-2.3.0/core/CMakeLists.txt
+===================================================================
+--- cadabra2-2.3.0.orig/core/CMakeLists.txt
++++ cadabra2-2.3.0/core/CMakeLists.txt
+@@ -294,7 +294,7 @@ target_link_libraries(cadabra2 PRIVATE
${GMPXX_LIBRARIES}
${GMP_LIBRARIES}
${Boost_LIBRARIES}
+-# ${PYTHON_LIBRARIES}
+ ${PYTHON_LIBRARIES}
-+ ${GLIBMM3_LIBRARIES}
+ # ${GLIBMM3_LIBRARIES}
)
- if(ENABLE_SYSTEM_JSONCPP)
- target_link_libraries(cadabra2 PRIVATE
+
diff --git a/cadabra2-2.3.0.tar.gz b/cadabra2-2.3.0.tar.gz
new file mode 100644
index 0000000..f2bdfeb
--- /dev/null
+++ b/cadabra2-2.3.0.tar.gz
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:1ba2dd2c91e6678a49a136c181da4ec424f1cec9a7172cf95fd1b0c04c253217
+size 24169861
diff --git a/cadabra2-add-pthread-to-cxxflags.patch b/cadabra2-add-pthread-to-cxxflags.patch
deleted file mode 100644
index 50afb5c..0000000
--- a/cadabra2-add-pthread-to-cxxflags.patch
+++ /dev/null
@@ -1,13 +0,0 @@
-Index: cadabra2-2.2.7/CMakeLists.txt
-===================================================================
---- cadabra2-2.2.7.orig/CMakeLists.txt
-+++ cadabra2-2.2.7/CMakeLists.txt
-@@ -120,7 +120,7 @@ if(CMAKE_COMPILER_IS_GNUCC OR CMAKE_COMP
- message(FATAL_ERROR "GCC version must be at least 4.9 for regex support! See http://askubuntu.com/questions/428198/getting-installing-gcc-g-4-9-on-ubuntu and then set the environment variables CXX to g++-4.9 and CC to gcc-4.9. You may have to erase the build directory before re-running cmake.")
- endif()
- endif()
-- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g -O2 -Wall -fvisibility=hidden -Wno-unused-but-set-variable")
-+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g -O2 -Wall -fvisibility=hidden -Wno-unused-but-set-variable -pthread")
- endif()
-
- # Clang
diff --git a/cadabra2-python-modules-location.patch b/cadabra2-python-modules-location.patch
new file mode 100644
index 0000000..79a41ae
--- /dev/null
+++ b/cadabra2-python-modules-location.patch
@@ -0,0 +1,103 @@
+Index: cadabra2-2.3.0/CMakeLists.txt
+===================================================================
+--- cadabra2-2.3.0.orig/CMakeLists.txt
++++ cadabra2-2.3.0/CMakeLists.txt
+@@ -231,6 +231,9 @@ endif()
+
+ print_header("Configuring Python")
+
++# NEEDED TO USE CMAKE_INSTALL_FULL
++include(GNUInstallDirs)
++
+ if(USE_PYTHON_3)
+ set(PYTHON_POSTFIX "3")
+ message(STATUS "Building for use with Python 3 (good!)")
+@@ -243,9 +246,17 @@ add_subdirectory(libs/pybind11)
+
+ message(STATUS "Found python ${PYTHON_LIBRARIES}")
+
+-# We install the python module in our 'share' path, not in
+-# the site-wide path as we used to.
+-set(PYTHON_SITE_PATH share/cadabra2/python)
++if(${CMAKE_VERSION} VERSION_LESS 3.12.0)
++ find_package(PythonInterp)
++ set(PYTHON_SITE_PATH ${CMAKE_INSTALL_FULL_LIBDIR}/python${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR}/site-packages)
++else()
++ find_package (Python COMPONENTS Interpreter)
++ set(PYTHON_SITE_PATH ${CMAKE_INSTALL_FULL_LIBDIR}/python${Python_VERSION_MAJOR}.${Python_VERSION_MINOR}/site-packages)
++endif()
++
++string(REGEX REPLACE "^${CMAKE_INSTALL_PREFIX}" "" PYTHON_SITE_PATH_REL ${PYTHON_SITE_PATH})
++set(PYTHON_SITE_PATH_REL ${PYTHON_SITE_PATH_REL})
++
+ if(NOT WIN32)
+ execute_process(
+ COMMAND ${PYTHON_EXECUTABLE} -c "import site; print (site.getsitepackages()[0]);"
+Index: cadabra2-2.3.0/core/cadabra2.in
+===================================================================
+--- cadabra2-2.3.0.orig/core/cadabra2.in
++++ cadabra2-2.3.0/core/cadabra2.in
+@@ -19,10 +19,9 @@ import rlcompleter
+ import os
+
+ # Make sure we can find the cadabra2 python module; is always
+-# installed in ../share/cadabra2/python relative to the location
+-# of the 'cadabra2' script.
++# installed in PYTHON_SITE_PATH
+ install_prefix=os.path.realpath(sys.argv[0])
+-install_prefix=install_prefix.replace(os.sep+'bin'+os.sep+'cadabra2', os.sep+'share'+os.sep+'cadabra2'+os.sep+'python')
++install_prefix=install_prefix.replace(os.sep+'bin'+os.sep+'cadabra2', '${PYTHON_SITE_PATH_REL}')
+ # print("Module path ", install_prefix)
+ sys.path.append(install_prefix)
+
+@@ -256,5 +255,5 @@ if __name__ == '__main__':
+ # pulling in the right locals/globals
+ # sh.interact(banner='Info at http://cadabra.phi-sci.com/\nAvailable under the terms of the GNU General Public License v3\n', locals(), globals())
+ else:
+- sh.runsource("import os; import sys; install_prefix=os.path.realpath(sys.argv[0]); install_prefix=install_prefix.replace('/bin/cadabra2','/share/cadabra2/python'); sys.path.append(install_prefix); print('Cadabra @CADABRA_VERSION_MAJOR@.@CADABRA_VERSION_MINOR@.@CADABRA_VERSION_PATCH@ (build @CADABRA_VERSION_BUILD@ dated @CADABRA_VERSION_DATE@)'); print ('Copyright (C) @COPYRIGHT_YEARS@ Kasper Peeters '); f=open('${CMAKE_INSTALL_PREFIX}/${PYTHON_SITE_PATH}/cadabra2_defaults.py'); code=compile(f.read(), 'cadabra2_defaults.py', 'exec'); exec(code); f.close(); print('Using SymPy version '+sympy.__version__);")
++ sh.runsource("import os; import sys; install_prefix=os.path.realpath(sys.argv[0]); install_prefix=install_prefix.replace('/bin/cadabra2','${PYTHON_SITE_PATH_REL}'); sys.path.append(install_prefix); print('Cadabra @CADABRA_VERSION_MAJOR@.@CADABRA_VERSION_MINOR@.@CADABRA_VERSION_PATCH@ (build @CADABRA_VERSION_BUILD@ dated @CADABRA_VERSION_DATE@)'); print ('Copyright (C) @COPYRIGHT_YEARS@ Kasper Peeters '); f=open('${PYTHON_SITE_PATH}/cadabra2_defaults.py'); code=compile(f.read(), 'cadabra2_defaults.py', 'exec'); exec(code); f.close(); print('Using SymPy version '+sympy.__version__);")
+ sh.interact(banner='Info at http://cadabra.science/\nAvailable under the terms of the GNU General Public License v3\n')
+Index: cadabra2-2.3.0/core/cadabra2-cli.cc
+===================================================================
+--- cadabra2-2.3.0.orig/core/cadabra2-cli.cc
++++ cadabra2-2.3.0/core/cadabra2-cli.cc
+@@ -113,7 +113,7 @@ void Shell::restart()
+ }
+
+ sys = PyImport_ImportModule("sys");
+- std::string module_path = cadabra::install_prefix() + "/share/cadabra2/python";
++ std::string module_path = PYTHON_SITE_PATH;
+ PyObject* module_path_str = PyUnicode_FromString(module_path.c_str());
+ PyList_Append(PyObject_GetAttrString(sys, "path"), module_path_str);
+ Py_XDECREF(module_path_str);
+@@ -122,7 +122,7 @@ void Shell::restart()
+ void Shell::interact()
+ {
+ // Run cadabra2_defaults.py
+- if (!execute_file(cadabra::install_prefix() + "/share/cadabra2/python/cadabra2_defaults.py", false)) {
++ if (!execute_file(std::string(PYTHON_SITE_PATH) + "/cadabra2_defaults.py", false)) {
+ handle_error();
+ throw ExitRequest("Error encountered while initializing the interpreter");
+ }
+Index: cadabra2-2.3.0/core/Config.hh.in
+===================================================================
+--- cadabra2-2.3.0.orig/core/Config.hh.in
++++ cadabra2-2.3.0/core/Config.hh.in
+@@ -21,3 +21,4 @@
+ #define Mathematica_KERNEL_EXECUTABLE "@Mathematica_KERNEL_EXECUTABLE@"
+
+ #define PYTHON_SITE_PATH "@PYTHON_SITE_PATH@"
++#define PYTHON_SITE_PATH_REL "@PYTHON_SITE_PATH_REL@"
+Index: cadabra2-2.3.0/client_server/Server.cc
+===================================================================
+--- cadabra2-2.3.0.orig/client_server/Server.cc
++++ cadabra2-2.3.0/client_server/Server.cc
+@@ -106,7 +106,7 @@ void Server::init()
+
+ // Make the C++ CatchOutput class visible on the Python side.
+
+- auto python_path = cadabra::install_prefix()+"/share/cadabra2/python";
++ auto python_path = std::string(PYTHON_SITE_PATH);
+
+ std::string stdOutErr =
+ "import sys\n"
diff --git a/cadabra2.changes b/cadabra2.changes
index c5247f8..1bbc4c5 100644
--- a/cadabra2.changes
+++ b/cadabra2.changes
@@ -1,3 +1,30 @@
+-------------------------------------------------------------------
+Thu Jul 9 22:19:27 UTC 2020 - Atri Bhattacharya
+
+- Update to version 2.3.0:
+ * Fix bug which would collect powers of objects with indices and
+ then report an error.
+ * Functionality to read Cadabra Cloud notebooks into the desktop
+ Cadabra.
+ * Use a better hash function for expression trees (avoiding a
+ bug in factor_in).
+ * Expose index symmetries through traces, so that canonicalise
+ and related algorithms work correctly. Introduced a new
+ property TableauInherit.
+ * More flexible LaTeXForm property, to enable more flexible
+ object display in the notebook.
+ * Various fixes for behaviour of unwrap with anti- or
+ non-commuting arguments.
+ * New meld algorithm for canonicalisation.
+- Drop cadabra2-add-pthread-to-cxxflags.patch: No longer required
+ for building.
+- Add cadabra2-python-modules-location.patch to fix location of
+ python libs and modules (gh#kpeeters/cadabra2#203).
+- Rebase Fix-linking-of-cadabra-module.patch for update; only
+ partially fixed by upstream (gh#kpeeters/cadabra2#202).
+- Remove a hashbang from a non-executable script.
+- Use %{name}-%{version} naming format for source.
+
-------------------------------------------------------------------
Sat Jan 4 01:21:06 UTC 2020 - Stefan BrĂ¼ns
diff --git a/cadabra2.spec b/cadabra2.spec
index fc9cac4..c5c93ac 100644
--- a/cadabra2.spec
+++ b/cadabra2.spec
@@ -17,18 +17,18 @@
Name: cadabra2
-Version: 2.2.8
+Version: 2.3.0
Release: 0
Summary: A computer algebra system for solving problems in field theory
License: GPL-3.0-or-later
Group: Productivity/Scientific/Math
URL: https://cadabra.science/
-Source0: https://github.com/kpeeters/cadabra2/archive/%{version}.tar.gz
+Source0: https://github.com/kpeeters/cadabra2/archive/%{version}.tar.gz#/%{name}-%{version}.tar.gz
Source1: %{name}-gtk.appdata.xml
-# PATCH-FIX-OPENSUSE add -pthread to CMAKE_CXX_FLAGS (as adivised in https://github.com/potree/PotreeConverter/issues/136) kkaempf@suse.de
-Patch1: cadabra2-add-pthread-to-cxxflags.patch
-# PATCH-FIX-UPSTREAM -- https://github.com/kpeeters/cadabra2/commit/71a406f32a654d2037b1d011f44af3fce4d9b50d.patch
+# PATCH-FIX-UPSTREAM -- https://github.com/kpeeters/cadabra2/commit/71a406f32a654d2037b1d011f44af3fce4d9b50d.patch (gh#kpeeters/cadabra2#202)
Patch2: Fix-linking-of-cadabra-module.patch
+# PATCH-FIX-UPSTREAM cadabra2-python-modules-location.patch gh#kpeeters/cadabra2#203 badshah400@gmail.com -- Move python modules to standard python modules path
+Patch3: cadabra2-python-modules-location.patch
BuildRequires: appstream-glib
BuildRequires: cmake
BuildRequires: doxygen
@@ -117,21 +117,22 @@ This package provides html documentation for %{name}.
%prep
%setup -q
-%patch1 -p1
%patch2 -p1
+%patch3 -p1
rm examples/.gitignore
# Remove timestamps from Doxygen HTML files
echo "HTML_TIMESTAMP = NO" >> config/Doxyfile
+# REMOVE HASHBANG FROM NON-EXEC SCRIPT
+sed -i "1{/#!\/usr\/bin\/env python/d}" libs/appdirs/cdb_appdirs.py
%build
%cmake \
- -DCMAKE_MANDIR=%{_mandir} \
- -DPACKAGING_MODE=ON \
- -DINSTALL_LATEX_DIR=%{_datadir}/texmf \
- -DENABLE_FRONTEND=ON \
- -DENABLE_SYSTEM_JSONPP=ON \
- -DENABLE_MATHEMATICA=OFF \
- ..
+ -DCMAKE_MANDIR:PATH=%{_mandir} \
+ -DINSTALL_LATEX_DIR:PATH=%{_datadir}/texmf \
+ -DENABLE_FRONTEND:BOOL=ON \
+ -DENABLE_SYSTEM_JSONPP:BOOL=ON \
+ -DENABLE_MATHEMATICA:BOOL=OFF \
+ -DBUILD_TESTS:BOOL=ON
%cmake_build
cd ..
@@ -162,10 +163,12 @@ ln %{buildroot}%{_datadir}/cadabra2/latex/* %{buildroot}%{_datadir}/texmf/tex/la
%{_bindir}/cadabra2latex
%{_bindir}/cadabra-server
%{_bindir}/%{name}
+%{_bindir}/%{name}-cli
%{_bindir}/%{name}python
%{_bindir}/%{name}html
%{_datadir}/%{name}/
%{_datadir}/texmf
+%{python3_sitearch}/*
%{_mandir}/man1/cadabra*.1%{?ext_man}
%files gui