[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#728725: Patch



Patch is attached.

Anton
diff -Nru kdeplasma-addons-4.10.5/debian/changelog kdeplasma-addons-4.10.5/debian/changelog
--- kdeplasma-addons-4.10.5/debian/changelog	2013-07-19 21:10:35.000000000 +0200
+++ kdeplasma-addons-4.10.5/debian/changelog	2013-11-04 22:17:49.000000000 +0100
@@ -1,3 +1,10 @@
+kdeplasma-addons (4:4.10.5-2.1) unstable; urgency=low
+
+  * Non-maintainer upload.
+  * Migrate from eigen2 to eigen3. (Closes: #728725)
+
+ -- Anton Gladky <gladk@debian.org>  Mon, 04 Nov 2013 22:17:17 +0100
+
 kdeplasma-addons (4:4.10.5-2) unstable; urgency=low
 
   [ Pino Toscano ]
diff -Nru kdeplasma-addons-4.10.5/debian/control kdeplasma-addons-4.10.5/debian/control
--- kdeplasma-addons-4.10.5/debian/control	2013-07-19 21:10:35.000000000 +0200
+++ kdeplasma-addons-4.10.5/debian/control	2013-11-04 22:37:29.000000000 +0100
@@ -14,7 +14,7 @@
  kdepimlibs5-dev (>= 4:4.10.2), kde-workspace-dev (>= 4:4.10.2),
  nepomuk-core-dev (>= 4:4.10.2),
  libkexiv2-dev (>= 4:4.9), libmarble-dev (>= 4:4.9),
- libqt4-opengl-dev, libboost-dev, libqimageblitz-dev, libeigen2-dev, libxrender-dev,
+ libqt4-opengl-dev, libboost-dev, libqimageblitz-dev, libeigen3-dev, libxrender-dev,
  shared-desktop-ontologies, libattica-dev, libscim-dev, libxtst-dev, libqalculate-dev,
  libqca2-dev, libqtwebkit-dev, libdbusmenu-qt-dev, libibus-1.0-dev (>= 1.4.2), libqjson-dev,
  libqoauth-dev
diff -Nru kdeplasma-addons-4.10.5/debian/patches/eigen3.patch kdeplasma-addons-4.10.5/debian/patches/eigen3.patch
--- kdeplasma-addons-4.10.5/debian/patches/eigen3.patch	1970-01-01 01:00:00.000000000 +0100
+++ kdeplasma-addons-4.10.5/debian/patches/eigen3.patch	2013-11-04 22:16:56.000000000 +0100
@@ -0,0 +1,208 @@
+Description: eigen2 to eigen3 migration
+Author: Anton Gladky <gladk@debian.org>
+        Benoit Jacob <jacob.benoit.1@gmail.com>
+Bug-Debian: http://bugs.debian.org/728725
+Last-Update: 2013-11-04
+
+--- /dev/null
++++ b/cmake/FindEigen3.cmake
+@@ -0,0 +1,81 @@
++# - Try to find Eigen3 lib
++#
++# This module supports requiring a minimum version, e.g. you can do
++#   find_package(Eigen3 3.1.2)
++# to require version 3.1.2 or newer of Eigen3.
++#
++# Once done this will define
++#
++#  EIGEN3_FOUND - system has eigen lib with correct version
++#  EIGEN3_INCLUDE_DIR - the eigen include directory
++#  EIGEN3_VERSION - eigen version
++
++# Copyright (c) 2006, 2007 Montel Laurent, <montel@kde.org>
++# Copyright (c) 2008, 2009 Gael Guennebaud, <g.gael@free.fr>
++# Copyright (c) 2009 Benoit Jacob <jacob.benoit.1@gmail.com>
++# Redistribution and use is allowed according to the terms of the 2-clause BSD license.
++
++if(NOT Eigen3_FIND_VERSION)
++  if(NOT Eigen3_FIND_VERSION_MAJOR)
++    set(Eigen3_FIND_VERSION_MAJOR 2)
++  endif(NOT Eigen3_FIND_VERSION_MAJOR)
++  if(NOT Eigen3_FIND_VERSION_MINOR)
++    set(Eigen3_FIND_VERSION_MINOR 91)
++  endif(NOT Eigen3_FIND_VERSION_MINOR)
++  if(NOT Eigen3_FIND_VERSION_PATCH)
++    set(Eigen3_FIND_VERSION_PATCH 0)
++  endif(NOT Eigen3_FIND_VERSION_PATCH)
++
++  set(Eigen3_FIND_VERSION "${Eigen3_FIND_VERSION_MAJOR}.${Eigen3_FIND_VERSION_MINOR}.${Eigen3_FIND_VERSION_PATCH}")
++endif(NOT Eigen3_FIND_VERSION)
++
++macro(_eigen3_check_version)
++  file(READ "${EIGEN3_INCLUDE_DIR}/Eigen/src/Core/util/Macros.h" _eigen3_version_header)
++
++  string(REGEX MATCH "define[ \t]+EIGEN_WORLD_VERSION[ \t]+([0-9]+)" _eigen3_world_version_match "${_eigen3_version_header}")
++  set(EIGEN3_WORLD_VERSION "${CMAKE_MATCH_1}")
++  string(REGEX MATCH "define[ \t]+EIGEN_MAJOR_VERSION[ \t]+([0-9]+)" _eigen3_major_version_match "${_eigen3_version_header}")
++  set(EIGEN3_MAJOR_VERSION "${CMAKE_MATCH_1}")
++  string(REGEX MATCH "define[ \t]+EIGEN_MINOR_VERSION[ \t]+([0-9]+)" _eigen3_minor_version_match "${_eigen3_version_header}")
++  set(EIGEN3_MINOR_VERSION "${CMAKE_MATCH_1}")
++
++  set(EIGEN3_VERSION ${EIGEN3_WORLD_VERSION}.${EIGEN3_MAJOR_VERSION}.${EIGEN3_MINOR_VERSION})
++  if(${EIGEN3_VERSION} VERSION_LESS ${Eigen3_FIND_VERSION})
++    set(EIGEN3_VERSION_OK FALSE)
++  else(${EIGEN3_VERSION} VERSION_LESS ${Eigen3_FIND_VERSION})
++    set(EIGEN3_VERSION_OK TRUE)
++  endif(${EIGEN3_VERSION} VERSION_LESS ${Eigen3_FIND_VERSION})
++
++  if(NOT EIGEN3_VERSION_OK)
++
++    message(STATUS "Eigen3 version ${EIGEN3_VERSION} found in ${EIGEN3_INCLUDE_DIR}, "
++                   "but at least version ${Eigen3_FIND_VERSION} is required")
++  endif(NOT EIGEN3_VERSION_OK)
++endmacro(_eigen3_check_version)
++
++if (EIGEN3_INCLUDE_DIR)
++
++  # in cache already
++  _eigen3_check_version()
++  set(EIGEN3_FOUND ${EIGEN3_VERSION_OK})
++
++else (EIGEN3_INCLUDE_DIR)
++
++  find_path(EIGEN3_INCLUDE_DIR NAMES signature_of_eigen3_matrix_library
++      PATHS
++      ${CMAKE_INSTALL_PREFIX}/include
++      ${KDE4_INCLUDE_DIR}
++      PATH_SUFFIXES eigen3 eigen
++    )
++
++  if(EIGEN3_INCLUDE_DIR)
++    _eigen3_check_version()
++  endif(EIGEN3_INCLUDE_DIR)
++
++  include(FindPackageHandleStandardArgs)
++  find_package_handle_standard_args(Eigen3 DEFAULT_MSG EIGEN3_INCLUDE_DIR EIGEN3_VERSION_OK)
++
++  mark_as_advanced(EIGEN3_INCLUDE_DIR)
++
++endif(EIGEN3_INCLUDE_DIR)
++
+--- a/wallpapers/mandelbrot/CMakeLists.txt
++++ b/wallpapers/mandelbrot/CMakeLists.txt
+@@ -1,12 +1,13 @@
+-find_package(Eigen2 2.0.3)
+-macro_log_feature(EIGEN2_FOUND "Eigen2" "Eigen2 enables the Mandelbrot wallpaper plugin." "http://eigen.tuxfamily.org"; FALSE "2.0.3")
++find_package(Eigen3 2.0.3)
++macro_log_feature(EIGEN3_FOUND "Eigen3" "Eigen3 enables the Mandelbrot wallpaper plugin." "http://eigen.tuxfamily.org"; FALSE "2.0.3")
+ 
+-if(EIGEN2_FOUND)
++if(EIGEN3_FOUND)
+ 
++add_definitions(-DEIGEN2_SUPPORT)
+ 
+ project(plasma-wallpaper-mandelbrot)
+ 
+-include_directories(${EIGEN2_INCLUDE_DIR})
++include_directories(${EIGEN3_INCLUDE_DIR})
+ 
+ set(mandelbrot_SRCS
+     mandelbrot.cpp
+@@ -87,4 +88,4 @@
+ install(TARGETS plasma_wallpaper_mandelbrot DESTINATION ${PLUGIN_INSTALL_DIR})
+ install(FILES plasma-wallpaper-mandelbrot.desktop DESTINATION ${SERVICES_INSTALL_DIR})
+ 
+-endif(EIGEN2_FOUND)
++endif(EIGEN3_FOUND)
+--- a/wallpapers/mandelbrot/render_impl.cpp
++++ b/wallpapers/mandelbrot/render_impl.cpp
+@@ -43,17 +43,12 @@
+   // Examples:
+   //  * no vectorization: then packet_size == 1 always
+   //  * SSE or AltiVec: then packet_size is 4 if Real==float and is 2 if Real==double
+-  enum { packet_size = Eigen::ei_packet_traits<Real>::size };
++  enum { packet_size = Eigen::internal::packet_traits<Real>::size };
+ 
+   // with Eigen, if we use vectors of the right size, operations on them will be compiled
+   // as operations on SIMD packets
+-  typedef Eigen::Matrix<Real, packet_size, 1> Packet;
+-  typedef Eigen::Matrix<int, packet_size, 1> Packeti;
+-
+-  // normally we wouldn't need to do that, but since some compilers can miss optimizations,
+-  // in the most critical code, let's play directly with SIMD registers. It's completely equivalent
+-  // to Eigen vectors of the right size, just less subtle for the compiler to get right.
+-  typedef typename Eigen::ei_packet_traits<Real>::type LowlevelPacket;
++  typedef Eigen::Array<Real, packet_size, 1> Packet;
++  typedef Eigen::Array<int, packet_size, 1> Packeti;
+ 
+   // how many iterations we do before testing for divergence. See comment above for struct iter_before_test.
+   // must be a multiple of 4 as we'll peel the inner loop by 4
+@@ -154,35 +149,17 @@
+     /* perform iter_before_test iterations */
+     for(int i = 0; i < iter_before_test/4; i++) // we peel the inner loop by 4
+     {
+-      LowlevelPacket lpzr, lpzi;
+       for(int repeat = 0; repeat < 4; repeat++)
+       {
+-        lpzr = Eigen::ei_pload(pzr.data());
+-        lpzi = Eigen::ei_pload(pzi.data());
+-        Eigen::ei_pstore(pzr.data(),
+-                          Eigen::ei_padd(
+-                            Eigen::ei_psub(
+-                              Eigen::ei_pmul(lpzr,lpzr),
+-                              Eigen::ei_pmul(lpzi,lpzi)
+-                            ),
+-                            Eigen::ei_pload(pcr.data())
+-                          )
+-                        );
+-        Eigen::ei_pstore(pzi.data(),
+-                          Eigen::ei_padd(
+-                            Eigen::ei_pmul(
+-                              Eigen::ei_padd(lpzr,lpzr),
+-                              lpzi
+-                            ),
+-                            Eigen::ei_pload(pci.data())
+-                          )
+-                        );
++        Packet pzrt = pzr*pzr - pzi*pzi + pcr;
++        pzi = 2*pzr*pzi + pci;
++        pzr = pzrt;
+       }
+     }
+ 
+     /* test for divergence */
+-    pzabs2 = pzr.cwise().square();
+-    pzabs2 += pzi.cwise().square();
++    pzabs2 = pzr.array()*pzr.array();
++    pzabs2 += pzi.array()*pzi.array();
+     for(int i = 0; i < packet_size; i++) {
+       if(!(pixel_diverge[i])) {
+         if(pzabs2[i] > square_bailout_radius) {
+@@ -213,13 +190,13 @@
+   do
+   {
+     pzr_buf = pzr;
+-    pzr = pzr.cwise().square();
+-    pzr -= pzi.cwise().square();
++    pzr = pzr.array()*pzr.array();
++    pzr -= pzi.array()*pzi.array();
+     pzr += pcr;
+-    pzi = (2*pzr_buf).cwise()*pzi;
++    pzi = (2*pzr_buf).array()*pzi;
+     pzi += pci;
+-    pzabs2 = pzr.cwise().square();
+-    pzabs2 += pzi.cwise().square();
++    pzabs2 = pzr.array()*pzr.array();
++    pzabs2 += pzi.array()*pzi.array();
+     for(int i = 0; i < packet_size; i++) {
+       if(!(pixel_diverge[i])) {
+         if(pzabs2[i] > square_bailout_radius) {
+@@ -298,7 +275,7 @@
+ 
+ #if defined(HAVE_PATH_WITH_SSE2_EXPLICTLY_ENABLED) || !defined(THIS_PATH_WITH_SSE2_EXPLICTLY_ENABLED)
+ 
+-  enum { packet_size = Eigen::ei_packet_traits<Real>::size };
++  enum { packet_size = Eigen::internal::packet_traits<Real>::size };
+   Color3 dummy_buffer[packet_size];
+   
+   mandelbrot_render_tile_impl<Real> renderer(mandelbrot, tile);
diff -Nru kdeplasma-addons-4.10.5/debian/patches/series kdeplasma-addons-4.10.5/debian/patches/series
--- kdeplasma-addons-4.10.5/debian/patches/series	1970-01-01 01:00:00.000000000 +0100
+++ kdeplasma-addons-4.10.5/debian/patches/series	2013-11-04 18:27:42.000000000 +0100
@@ -0,0 +1 @@
+eigen3.patch

Reply to: