Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: NixOS/nixpkgs
base: ab1cbc85150c
Choose a base ref
...
head repository: NixOS/nixpkgs
compare: 7dff6d668138
Choose a head ref
  • 4 commits
  • 3 files changed
  • 1 contributor

Commits on Jul 16, 2020

  1. cmake.setupHook: define shareDocName

    The docdir flag needs to include `PROJECT_NAME` according to [GNU guidelines]. We are passing
    `-DCMAKE_INSTALL_DOCDIR=${!outputDoc}/share/doc/${shareDocName}` but `$shareDocName` was unset.
    
    The `multiple-outputs.sh` setup hook actually only defines `shareDocName` as a local variable
    so it was not available for cmake setup hook. Making it global would be of limited usability,
    since it primarily tries to extract the project name from configure script.
    Additionally, it would not be set because the setup hook defines `setOutputFlags=`,
    preventing the function defining `shareDocName` from running. And lastly, the function
    would not run for single-output derivations.
    
    Previously, we tried [not disabling `setOutputFlags`] and passing the directory flags
    only for multi-output derivations that do not disable `setOutputFlags` but that meant having
    two different branches of code, making it harder to check correctness. The multi-output
    one did in fact not work due to aforementioned undefined `shareDocName`. It also broke
    derivations that set `setOutputFlags=` like [`qtModule` function does] (probably
    because some Qt modules have configure scripts incompatible with `configureFlags` defined
    by `multiple-outputs.sh` setup hook). For that reason, it was [reverted], putting us back to start.
    
    Let’s try to extract the project name from CMake in the cmake setup hook.
    
    CMake has a `-L` flag for dumping variables but `PROJECT_NAME` did not seem to be among them
    when I tested, so I had to resort to parsing the `CMakeLists.txt` file.
    
    The extraction function is limited, it does not deal with
    
    * project name on different line from the `project(` command opening
        - that will just not get matched so we will fall back to
          using the derivation name
    * variable interpolation
        - we will just fall back to using derivation name when the extracted
          `project_name` contains a dollar character
    * multiple [`project`] commands
        - The command sets `PROJECT_NAME` variable anew with each call, so the
          last `project` call before `include(GNUInstallDirs)` command will be used
          when the included module would [cache the `CMAKE_INSTALL_DOCDIR` variable].
          We will just take the first discovered `project` command for simplicity.
          Hopefully, there are not many projects that use multiple `project` calls
          before including `GNUInstallDirs`.
    
    In either case, we will have some subdirectory so the conflicts will be minimized.
    
    [GNU guidelines]: https://www.gnu.org/prep/standards/html_node/Directory-Variables.html#index-docdir
    [not disabling `setOutputFlags`]: be1b225
    [`qtModule` function  does]: #12740
    [reverted]: #92298
    [`PROJECT_NAME`]: https://cmake.org/cmake/help/v3.18/variable/PROJECT_NAME.html
    [`project`]: https://cmake.org/cmake/help/v3.18/command/project.html
    [cache the `CMAKE_INSTALL_DOCDIR` variable]: https://github.com/Kitware/CMake/blob/92e30d576d66ac05254bba0f0ff7d655947beb0f/Modules/GNUInstallDirs.cmake#L298-L299
    jtojnar committed Jul 16, 2020
    Copy the full SHA
    75fdc1c View commit details
    Browse the repository at this point in the history
  2. Revert "transmission: Remove $out/share/doc"

    This reverts commit 25bc56f.
    jtojnar committed Jul 16, 2020
    Copy the full SHA
    2596c96 View commit details
    Browse the repository at this point in the history
  3. Revert "darktable: Remove $out/share/doc"

    This reverts commit 5d7cbc6.
    jtojnar committed Jul 16, 2020
    Copy the full SHA
    812d124 View commit details
    Browse the repository at this point in the history

Commits on Jul 18, 2020

  1. Copy the full SHA
    7dff6d6 View commit details
    Browse the repository at this point in the history