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 <gl...@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 <gl...@debian.org> + Benoit Jacob <jacob.benoi...@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, <mon...@kde.org> ++# Copyright (c) 2008, 2009 Gael Guennebaud, <g.g...@free.fr> ++# Copyright (c) 2009 Benoit Jacob <jacob.benoi...@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