diff options
author | Bill Hoffman <bill.hoffman@kitware.com> | 2006-06-09 17:45:09 (GMT) |
---|---|---|
committer | Bill Hoffman <bill.hoffman@kitware.com> | 2006-06-09 17:45:09 (GMT) |
commit | bba61bc8a7a7f399a5c9d18172160d424bbc9f7d (patch) | |
tree | edccf84ef59b5910e029bc0cb66f319a065542c7 /Source/CPack/cmCPackCygwinBinaryGenerator.cxx | |
parent | 3eec8a91fc4980739a99d8ae17324960f94e96d2 (diff) | |
download | CMake-bba61bc8a7a7f399a5c9d18172160d424bbc9f7d.zip CMake-bba61bc8a7a7f399a5c9d18172160d424bbc9f7d.tar.gz CMake-bba61bc8a7a7f399a5c9d18172160d424bbc9f7d.tar.bz2 |
ENH: check in partial cygwin generator
Diffstat (limited to 'Source/CPack/cmCPackCygwinBinaryGenerator.cxx')
-rw-r--r-- | Source/CPack/cmCPackCygwinBinaryGenerator.cxx | 95 |
1 files changed, 95 insertions, 0 deletions
diff --git a/Source/CPack/cmCPackCygwinBinaryGenerator.cxx b/Source/CPack/cmCPackCygwinBinaryGenerator.cxx new file mode 100644 index 0000000..c31de15 --- /dev/null +++ b/Source/CPack/cmCPackCygwinBinaryGenerator.cxx @@ -0,0 +1,95 @@ +/*========================================================================= + + Program: CMake - Cross-Platform Makefile Generator + Module: $RCSfile$ + Language: C++ + Date: $Date$ + Version: $Revision$ + + Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. + See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. + + This software is distributed WITHOUT ANY WARRANTY; without even + the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR + PURPOSE. See the above copyright notices for more information. + +=========================================================================*/ + +#include "cmCPackCygwinBinaryGenerator.h" + +#include "cmake.h" +#include "cmGlobalGenerator.h" +#include "cmLocalGenerator.h" +#include "cmSystemTools.h" +#include "cmMakefile.h" +#include "cmGeneratedFileStream.h" +#include "cmCPackLog.h" + +#include <cmsys/SystemTools.hxx> + +//---------------------------------------------------------------------- +cmCPackCygwinBinaryGenerator::cmCPackCygwinBinaryGenerator() +{ + this->Compress = false; +} + +//---------------------------------------------------------------------- +cmCPackCygwinBinaryGenerator::~cmCPackCygwinBinaryGenerator() +{ +} + +//---------------------------------------------------------------------- +int cmCPackCygwinBinaryGenerator::InitializeInternal() +{ + this->SetOptionIfNotSet("CPACK_INCLUDE_TOPLEVEL_DIRECTORY", "1"); + std::vector<std::string> path; + std::string pkgPath = cmSystemTools::FindProgram("bzip2", path, false); + if ( pkgPath.empty() ) + { + cmCPackLogger(cmCPackLog::LOG_ERROR, "Cannot find BZip2" << std::endl); + return 0; + } + this->SetOptionIfNotSet("CPACK_INSTALLER_PROGRAM", pkgPath.c_str()); + cmCPackLogger(cmCPackLog::LOG_VERBOSE, "Found Compress program: " + << pkgPath.c_str() + << std::endl); + + return this->Superclass::InitializeInternal(); +} + +//---------------------------------------------------------------------- +int cmCPackCygwinBinaryGenerator::CompressFiles(const char* outFileName, + const char* toplevel, const std::vector<std::string>& files) +{ + std::string packageName = this->GetOption("CPACK_PACKAGE_NAME"); + packageName += this->GetOption("CPACK_PACKAGE_VERSION"); + packageName = cmsys::SystemTools::LowerCase(packageName); + std::string manifest = "/share/doc/"; + manifest += packageName; + manifest += "/MANIFEST"; + std::string manifestFile + = this->GetOption("CPACK_TEMPORARY_DIRECTORY"); + std::string tempdir = manifestFile; + manifestFile += manifest; + // create an extra scope to force the stream + // to create the file before the super class is called + { + cmGeneratedFileStream ofs(manifestFile.c_str()); + for(std::vector<std::string>::const_iterator i = files.begin(); + i != files.end(); ++i) + { +#undef cerr + // remove the temp dir and replace with /usr + ofs << "/usr" << (*i).substr(tempdir.size()) << "\n"; + std::cerr << "/usr" << (*i).substr(tempdir.size()) << "\n"; + + } + ofs << "/usr" << manifest << "\n"; + } + // Now compress up everything + std::vector<std::string> filesWithManifest = files; + filesWithManifest.push_back(manifestFile); + return this->Superclass::CompressFiles(outFileName, toplevel, + filesWithManifest); +} + |