1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071 |
- /* Distributed under the OSI-approved BSD 3-Clause License. See accompanying
- file Copyright.txt or https://cmake.org/licensing for details. */
- #ifndef cmCPackDebGenerator_h
- #define cmCPackDebGenerator_h
- #include "cmConfigure.h" // IWYU pragma: keep
- #include "cmCPackGenerator.h"
- #include <string>
- #include <vector>
- /** \class cmCPackDebGenerator
- * \brief A generator for Debian packages
- *
- */
- class cmCPackDebGenerator : public cmCPackGenerator
- {
- public:
- cmCPackTypeMacro(cmCPackDebGenerator, cmCPackGenerator);
- /**
- * Construct generator
- */
- cmCPackDebGenerator();
- ~cmCPackDebGenerator() override;
- static bool CanGenerate()
- {
- #ifdef __APPLE__
- // on MacOS enable CPackDeb iff dpkg is found
- std::vector<std::string> locations;
- locations.push_back("/sw/bin"); // Fink
- locations.push_back("/opt/local/bin"); // MacPorts
- return cmSystemTools::FindProgram("dpkg", locations) != "" ? true : false;
- #else
- // legacy behavior on other systems
- return true;
- #endif
- }
- protected:
- int InitializeInternal() override;
- /**
- * This method factors out the work done in component packaging case.
- */
- int PackageOnePack(std::string const& initialToplevel,
- std::string const& packageName);
- /**
- * The method used to package files when component
- * install is used. This will create one
- * archive for each component group.
- */
- int PackageComponents(bool ignoreGroup);
- /**
- * Special case of component install where all
- * components will be put in a single installer.
- */
- int PackageComponentsAllInOne(const std::string& compInstDirName);
- int PackageFiles() override;
- const char* GetOutputExtension() override { return ".deb"; }
- bool SupportsComponentInstallation() const override;
- std::string GetComponentInstallDirNameSuffix(
- const std::string& componentName) override;
- private:
- int createDeb();
- std::vector<std::string> packageFiles;
- };
- #endif
|