diff --git a/cmake-usrmove.patch b/cmake-usrmove.patch new file mode 100644 index 0000000..a9125ab --- /dev/null +++ b/cmake-usrmove.patch @@ -0,0 +1,60 @@ +diff -up cmake-2.8.10.2/Source/cmExportInstallFileGenerator.cxx.usrmove cmake-2.8.10.2/Source/cmExportInstallFileGenerator.cxx +--- cmake-2.8.10.2/Source/cmExportInstallFileGenerator.cxx.usrmove 2012-11-27 06:26:33.000000000 -0700 ++++ cmake-2.8.10.2/Source/cmExportInstallFileGenerator.cxx 2013-03-13 14:13:56.554281710 -0600 +@@ -149,17 +149,35 @@ cmExportInstallFileGenerator + const char* installDest = this->IEGen->GetDestination(); + if(!cmSystemTools::FileIsFullPath(installDest)) + { +- std::string dest = installDest; +- os << "# Compute the installation prefix relative to this file.\n" +- << "GET_FILENAME_COMPONENT(_IMPORT_PREFIX " +- << "\"${CMAKE_CURRENT_LIST_FILE}\" PATH)\n"; +- while(!dest.empty()) ++ std::string installPrefix = ++ this->IEGen->GetMakefile()->GetSafeDefinition("CMAKE_INSTALL_PREFIX"); ++ std::string absDest = installPrefix + "/" + installDest + "/"; ++ if(strncmp(absDest.c_str(), "/lib/", 5) == 0 || ++ strncmp(absDest.c_str(), "/lib64/", 7) == 0 || ++ strncmp(absDest.c_str(), "/usr/lib/", 9) == 0 || ++ strncmp(absDest.c_str(), "/usr/lib64/", 11) == 0) + { +- os << +- "GET_FILENAME_COMPONENT(_IMPORT_PREFIX \"${_IMPORT_PREFIX}\" PATH)\n"; +- dest = cmSystemTools::GetFilenamePath(dest); ++ // Assume this is a build for system package installation rather than a ++ // relocatable distribution. Use an absolute prefix because some Linux ++ // distros symlink /lib to /usr/lib which confuses the relative path ++ // computation below if we generate for /lib under one prefix and but the ++ // file is loaded from another. ++ os << "set(_IMPORT_PREFIX \"" << installPrefix << "\")\n"; ++ } ++ else ++ { ++ std::string dest = installDest; ++ os << "# Compute the installation prefix relative to this file.\n" ++ << "get_filename_component(_IMPORT_PREFIX " ++ << "\"${CMAKE_CURRENT_LIST_FILE}\" PATH)\n"; ++ while(!dest.empty()) ++ { ++ os << ++ "get_filename_component(_IMPORT_PREFIX \"${_IMPORT_PREFIX}\" PATH)\n"; ++ dest = cmSystemTools::GetFilenamePath(dest); ++ } ++ os << "\n"; + } +- os << "\n"; + + // Import location properties may reference this variable. + this->ImportPrefix = "${_IMPORT_PREFIX}/"; +diff -up cmake-2.8.10.2/Source/cmInstallExportGenerator.h.usrmove cmake-2.8.10.2/Source/cmInstallExportGenerator.h +--- cmake-2.8.10.2/Source/cmInstallExportGenerator.h.usrmove 2012-11-27 06:26:33.000000000 -0700 ++++ cmake-2.8.10.2/Source/cmInstallExportGenerator.h 2013-03-13 14:11:17.972077264 -0600 +@@ -36,6 +36,8 @@ public: + + cmExportSet* GetExportSet() {return this->ExportSet;} + ++ cmMakefile* GetMakefile() const { return this->Makefile; } ++ + const std::string& GetNamespace() const { return this->Namespace; } + + protected: diff --git a/cmake.spec b/cmake.spec index 3bf4211..f84ca87 100644 --- a/cmake.spec +++ b/cmake.spec @@ -8,7 +8,7 @@ Name: cmake Version: 2.8.10.2 -Release: 4%{?dist} +Release: 5%{?dist} Summary: Cross-platform make system Group: Development/Tools @@ -37,6 +37,9 @@ Patch3: cmake-FindPostgreSQL.patch # https://bugzilla.redhat.com/show_bug.cgi?id=869769 # http://public.kitware.com/Bug/view.php?id=13604 Patch4: cmake-ccmake-del-in-first-column.patch +# Upstream patch to use absolute paths to fix UsrMove handling +# https://bugzilla.redhat.com/show_bug.cgi?id=917407 +Patch5: cmake-usrmove.patch BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) BuildRequires: gcc-gfortran @@ -90,6 +93,7 @@ The %{name}-gui package contains the Qt based GUI for CMake. %patch2 -p1 -b .findruby %patch3 -p1 -b .findpostgresql %patch4 -p1 -b .ccmake-del +%patch5 -p1 -b .usrmove %build @@ -186,6 +190,8 @@ update-mime-database %{_datadir}/mime &> /dev/null || : %changelog +* Wed Mar 13 2013 Orion Poplawski - 2.8.10.2-5 +- Add patch from upstream to fix UsrMove handling (bug #917407) - Drop %%config from rpm macros - Define FCFLAGS in cmake macro