• Joerg Bruehe's avatar
    Fix bug#42969 Please add a MANIFEST to each build · bb956c1e
    Joerg Bruehe authored
    With this change, there will be new files "INFO_SRC"
    and "INFO_BIN", which describe the source and the
    binaries.
    They will be contained in all packages:
    - in "tar.gz" and derived packages, in "docs/",
    - in RPMs, in "/usr/share/doc/packages/MySQL-server".
    
    "INFO_SRC" is also part of a source tarball.
    It gives the version as exact as possible, preferably
    by calling "bzr version-info" on the source tree.
    If that is not possible, it just contains the three
    level version number.
    
    "INFO_BIN" contains some info when and where the
    binaries were built, the options given to the compiler,
    and the flags controlling the included features.
    
    The tests (test "mysql" in the main suite) are extended
    to verify the existence of both "INFO_SRC" and "INFO_BIN",
    as well as some of the expected contents.
    
    
    CMakeLists.txt:
      For the new files describing the source and the build
      ("INFO_SRC" and "INFO_BIN"), we need a new file
      "cmake/info_macros.cmake.in" with the build rules.
      
      1) This file must be configured with the current variables.
      
      2) "INFO_SRC" can be created during the cmake phase,
         but this should be repeated with each "make" to
      protect against a developer doing only "make" after
      a "bzr pull" (or "bzr commit").
      So have it both as a cmake rule and as a custom target.
      
      3) "INFO_BIN" must be created during the make phase
         only, because it contains information from files
      which will be written at the end of the cmake phase only.
      Therefore, it must be a custom target which is included
      in all "make" targets.
      
      4) The resulting "INFO_*" files must be included in packages.
    cmake/info_bin.cmake:
      This is the file to create "INFO_BIN",
      by calling the "CREATE_INFO_BIN()" macro.
      
      It must be a separate file, so that the macro
      definitions can be included in other cmake scripts
      without that file inclusion causing a side effect,
      the macro call.
      That call would modify the source tree which should
      be trated read-only.
    cmake/info_macros.cmake.in:
      This new file contains the macros to create the
      "INFO_*" files during various steps of the build,
      the calls will be at other places.
      
      1) For source: If running from a BZR tree, always create
         (update) "INFO_SRC" by running "bzr version-info".
         Outside a BZR tree, try to take it from exported
         sources, and create it only if missing, in that
         case put the three level version number into it.
      
      2) "INFO_BIN" contains
         - date/time and host name of the build host,
         - information about the platform,
         - information about the C and CXX compiler
           and the options given to them (Unix only),
         - the feature flags as reported by "cmake -L".
    cmake/info_src.cmake:
      This is the file to create "INFO_SRC",
      by calling the "CREATE_INFO_SRC()" macro.
      
      It must be a separate file, so that the macro
      definitions can be included in other cmake scripts
      without that file inclusion causing a side effect,
      the macro call.
      That call would modify the source tree which should
      be trated read-only.
    cmake/make_dist.cmake.in:
      Create a "VERSION_src" file during "make dist".
      
      In case it already exists from a preceding "cmake" run
      or tree export (which is quite likely), a new
      "make dist" must not modify it.
    mysql-test/r/file_contents.result:
      Result of test for bug#42969.
    mysql-test/t/file_contents.test:
      Perl test scriptlet for bug#42969.
    support-files/mysql.spec.sh:
      Add "INFO_SRC" and "INFO_BIN" to the RPM contents.
    bb956c1e
CMakeLists.txt 12.7 KB