summaryrefslogtreecommitdiffstats
path: root/Source/CPack/bills-comments.txt
blob: 1aaf9af51963d68940cceead21465a35d566efb6 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
cpack.cxx

cmCPackGenerators  -- creates cmCPackGenericGenerator's via NewGenerator
  - a cmCPackGenericGenerator factory


cmCPackGenericGenerator::Initialize
   this->InitializeInternal
     CPACK_INCLUDE_TOPLEVEL_DIRECTORY = 0 turns off


// binary package run
cmCPackGenericGenerator::ProcessGenerator   // DoPackage
  cmCPackGenericGenerator::PrepareNames  -- sets a bunch of CPACK_vars
  cmCPackGenericGenerator::InstallProject
     run preinstall  (make preinstall/fast)
     call ReadListFile(cmake_install.cmake)
  glob recurse in install directory to get list of files
     this->CompressFiles with the list of files


// source package run
cmCPackGenericGenerator::ProcessGenerator   // DoPackage
  cmCPackGenericGenerator::PrepareNames  -- sets a bunch of CPACK_vars
  cmCPackGenericGenerator::InstallProject  -->
     if set CPACK_INSTALLED_DIRECTORIES
        glob the files in that directory
        copy those files to the tmp install directory _CPack something
  glob recurse in install directory to get list of files
     this->CompressFiles with the list of files


cmCPackGenericGenerator::InstallProject is used for both source and binary
packages.  It is controlled based on values set in CPACK_ variables.


InstallProject
   1. CPACK_INSTALL_COMMANDS       - a list of commands used to install the package

   2. CPACK_INSTALLED_DIRECTORIES  - copy this directory to CPACK_TEMPORARY_DIRECTORY

   3. CPACK_INSTALL_CMAKE_PROJECTS - a cmake install script
         - run make preinstall
         - run cmake_install.cmake
             - set CMAKE_INSTALL_PREFIX to the temp directory
             - CPACK_BUILD_CONFIG check this and set the BUILD_TYPE to it
              - ReadListFile on the install script  cmake_install.cmake
         - run strip on the executables and libraries if CPACK_STRIP_FILES is TRUE

Recommendations:

rename cmCPackGenerators  to cmCPackGeneratorFactory

rename cmCPackGenericGenerator  -->  cmCPackGenerator

rename cmCPackGenericGenerator::ProcessGenerator  -> cmCPackGenerator::DoPackage


break up cmCPackGenerator::InstallProject so it calls the following:

// run user provided install commands
  cmCPackGenerator::RunInstallCommands();
// copy entire directories that need no processing like source trees
  cmCPackGenerator::CopyPreInstalledDirectories();
// run the cmake install scripts if provided
  cmCPackGenerator::RunCMakeInstallScripts()

-