Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

rapidcheck: refactor postInstall to install all extras #106376

Merged

Conversation

tsmanner
Copy link
Contributor

@tsmanner tsmanner commented Dec 8, 2020

RapidCheck's extras were not accessible through the package, with the exception of boost_test, which was being copied directly into the core include directory. RapidTest's documentation for that module says to add the extras/boost_test/include directory to your include path, but the nixpkgs derivation for it puts the file in $out/include/rapidtest.

This support is available through the extras/boost_test module. You can either directly add the extras/boost_test/include directory to your include path or link against the rapidcheck_boost_test target in your CMakeLists.txt. You can then simply #include <rapidcheck/boost_test.h>. Note that rapidcheck/boost_test.h needs to be included after any Boost Test headers.

This commit replaces the copy of that one header with an rsync of all files, except CMakeLists.txts, from $src/extras into $out/extras so that the output path matches what the rapidtest documentation expects. Accessing all extras is now possible by adding "${pkgs.rapidtest}/extras/<extra>/include" to your list of include paths.

Things done
  • Tested using sandboxing (nix.useSandbox on NixOS, or option sandbox in nix.conf on non-NixOS linux)
  • Built on platform(s)
    • NixOS
    • macOS
    • other Linux distributions
  • Tested via one or more NixOS test(s) if existing and applicable for the change (look inside nixos/tests)
  • Tested compilation of all pkgs that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review wip"
  • Tested execution of all binary files (usually in ./result/bin/)
  • Determined the impact on package closure size (by running nix path-info -S before and after)
  • Ensured that relevant documentation is up to date
  • Fits CONTRIBUTING.md.

RapidCheck's extras were not accessible through the package, with the exception of boost_test, which was being copied directly into the core include directory.  RapidTest's documentation for that module says to add the `extras/boost_test/include` directory to your include path, but the nixpkgs derivation for it puts the file in `$out/include/rapidtest`.

> This support is available through the `extras/boost_test` module. You can either directly add the `extras/boost_test/include` directory to your include path or link against the `rapidcheck_boost_test` target in your `CMakeLists.txt`. You can then simply `#include <rapidcheck/boost_test.h>`. Note that `rapidcheck/boost_test.h` needs to be included after any Boost Test headers.

This commit repaces the copy of that one header with an `rsync` of all files, except `CMakeLists.txt`s, from `$src/extras` into `$out/extras` so that the output path matches what the rapidtest documentation expects.  Accessing all extras is now possible by adding `"${pkgs.rapidtest}/extras/<extra>/include"` to your list of include paths.
@tsmanner
Copy link
Contributor Author

tsmanner commented Dec 8, 2020

I haven't done any cross platform testing of this, only confirmed that it works in WSL Debian with gcc 9.3.0.

One thing that isn't clear to me yet is whether or not the boost and gmock cpp files are compiled as part of the normal build, or if they'll need to get their own derivations to get them optionally included in the rapidtest.a that is built by default.

postInstall = ''
cp ../extras/boost_test/include/rapidcheck/boost_test.h $out/include/rapidcheck
cd $src
rsync --filter="- **CMakeLists.txt" -acRv extras $out
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can you please use mv or cp?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I originally had tried using cp, but you can't filter the files being copied. Considering that it already depends on cmake I was thinking that a dependency on rsync at build time would be preferable to having installed the extras includes with the CMakeLists.txt files still lying around in there. The thing I had tried was a recursive cp followed by an rm **/CMakeLists.txt, but the destination files were read only, so I switched. If that approach would work by changing the file permissions in $out before doing the rm, then I'm happy to do that.

I played around with builtins.filterSource as well, but it isn't allowed to refer to store paths, so I was left wondering if there was a way to use a nix function to filter that directory, but wasn't sure what to try.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I tried with the chmod +w and rm for the CMakeLists.txt files and it is producing the same result as the rsync, just in a more roundabout way.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It is preferable to only use rsync if there is no other way. 4 Lines bash instead is fine for me.

Removed the dependency on rsync in favor of cp/chmod/rm to do the filtering.
@SuperSandro2000
Copy link
Member

Result of nixpkgs-review pr 106376 run on x86_64-darwin 1

1 package built:
  • rapidcheck

@SuperSandro2000
Copy link
Member

Result of nixpkgs-review pr 106376 run on x86_64-linux 1

1 package built:
  • rapidcheck

@SuperSandro2000 SuperSandro2000 merged commit 872cb2f into NixOS:master Dec 9, 2020
github-actions bot added a commit to andir/nixos.cloud that referenced this pull request Dec 17, 2020
## Changelog for nixpkgs:
Commits: [NixOS/nixpkgs@29679363...e9158eca](NixOS/nixpkgs@2967936...e9158ec)

* [`ba6b3cb7`](NixOS/nixpkgs@ba6b3cb) ortp: unstable-2020-03-17 -> 4.4.9
* [`c17a8f27`](NixOS/nixpkgs@c17a8f2) mediastreamer: unstable-2020-03-20 -> 4.4.13
* [`64f42418`](NixOS/nixpkgs@64f4241) belle-sip: unstable-2020-02-18 -> 4.4.13
* [`64c7999f`](NixOS/nixpkgs@64c7999) liblinphone: unstable-2020-03-20 -> 4.4.15
* [`c7447bc8`](NixOS/nixpkgs@c7447bc) minizip2: init at 2.10.4
* [`a3031041`](NixOS/nixpkgs@a303104) linphone: unstable-2020-03-06 -> 4.2.4
* [`18a5777c`](NixOS/nixpkgs@18a5777) fedora-backgrounds: use stdenvNoCC (NixOS/nixpkgs#106149)
* [`ba549afe`](NixOS/nixpkgs@ba549af) goxel: 0.10.6 -> 0.10.7
* [`1b14ecd3`](NixOS/nixpkgs@1b14ecd) gnomeExtensions.caffeine: 2020-03-13 -> 37
* [`2f91bade`](NixOS/nixpkgs@2f91bad) ceph: 15.2.6 -> 15.2.7
* [`eb5b6614`](NixOS/nixpkgs@eb5b661) gping: 1.1.0 -> 1.2.0-post
* [`3ef8d3e6`](NixOS/nixpkgs@3ef8d3e) pythonPackages.ledgerwallet: init at 0.1.2 (NixOS/nixpkgs#104506)
* [`42cfd521`](NixOS/nixpkgs@42cfd52) pythonPackages.llfuse: downgrade pytest version
* [`07aee751`](NixOS/nixpkgs@07aee75) openrgb: 0.4 -> 0.5
* [`6ba3e0ea`](NixOS/nixpkgs@6ba3e0e) openrgb: add udev rules
* [`68d1006c`](NixOS/nixpkgs@68d1006) openrgb: update installCheck
* [`90f6e8bd`](NixOS/nixpkgs@90f6e8b) linux_latest-libre: 17768 -> 17788
* [`f76184d6`](NixOS/nixpkgs@f76184d) linux/hardened/patches/4.14: 4.14.208.a -> 4.14.210.a
* [`8a15d28a`](NixOS/nixpkgs@8a15d28) linux/hardened/patches/4.19: 4.19.159.a -> 4.19.161.a
* [`78066098`](NixOS/nixpkgs@7806609) linux/hardened/patches/5.4: 5.4.79.a -> 5.4.81.a
* [`893f6368`](NixOS/nixpkgs@893f636) linux/hardened/patches/5.9: 5.9.10.a -> 5.9.12.a
* [`94ba22c1`](NixOS/nixpkgs@94ba22c) gnome-podcasts: add dependency gst-plugins-good
* [`2313a290`](NixOS/nixpkgs@2313a29) htop: 3.0.2 -> 3.0.3
* [`d0207e31`](NixOS/nixpkgs@d0207e3) maintainers: add wildsebastian
* [`c281128a`](NixOS/nixpkgs@c281128) iosevka-bin: 4.0.0 -> 4.0.2
* [`60651e35`](NixOS/nixpkgs@60651e3) pythonPackages.patiencediff: init at 0.2.1
* [`598af09d`](NixOS/nixpkgs@598af09) python3Packages.breezy: fix build
* [`06fe1afa`](NixOS/nixpkgs@06fe1af) jackett: 0.16.2291 -> 0.16.2347
* [`0ed4d34f`](NixOS/nixpkgs@0ed4d34) nixos-shell: 0.1.1 -> 0.2
* [`717beb92`](NixOS/nixpkgs@717beb9) opentracker: use makeFlags instead of patching (refactoring)
* [`e4c3cda1`](NixOS/nixpkgs@e4c3cda) doc: rename gnome to section
* [`16dfe8d7`](NixOS/nixpkgs@16dfe8d) pandoc: Add patches for nixpkgs docs
* [`64b8489d`](NixOS/nixpkgs@64b8489) doc: clean up makefile
* [`be8a3b8d`](NixOS/nixpkgs@be8a3b8) doc: convert GNOME platform docs to markdown
* [`62248877`](NixOS/nixpkgs@6224887) doc/stdenv: Fix xref to gdk-pixbuf setup hook
* [`920c4399`](NixOS/nixpkgs@920c439) thermald: Fix systemd service definition.
* [`4437752e`](NixOS/nixpkgs@4437752) netbeans: 12.1 -> 12.2
* [`ba70e46e`](NixOS/nixpkgs@ba70e46) nim: 1.4.0 -> 1.4.2
* [`60d8c843`](NixOS/nixpkgs@60d8c84) python3Packages.hjson: fix wrapper
* [`94ede7a6`](NixOS/nixpkgs@94ede7a) pythonPackages.pygame: switch to SDL2, fix build
* [`d4d86340`](NixOS/nixpkgs@d4d8634) mg: 6.7 -> 6.8.1
* [`a9616e52`](NixOS/nixpkgs@a9616e5) netbeans: remove windows binaries before copying package to output
* [`61d95bbd`](NixOS/nixpkgs@61d95bb) python39Packages.rtmidi-python: fix build
* [`55324b51`](NixOS/nixpkgs@55324b5) pythonPackages.traitlets: disable for Python 2
* [`76bedb5b`](NixOS/nixpkgs@76bedb5) linux-rt_5_9: init at 5.9.1-rt20
* [`a85e96dd`](NixOS/nixpkgs@a85e96d) musikcube: 0.95.0 -> 0.96.1
* [`5101b357`](NixOS/nixpkgs@5101b35) flashplayer: 32.0.0.445 -> 32.0.0.453 (NixOS/nixpkgs#103441)
* [`537b1abc`](NixOS/nixpkgs@537b1ab) mympd: 6.8.1 -> 6.8.3
* [`47134948`](NixOS/nixpkgs@4713494) Apply suggestions from code review
* [`c18ffac4`](NixOS/nixpkgs@c18ffac) pbgopy: 0.1.1 -> 0.2.0
* [`01ca7ead`](NixOS/nixpkgs@01ca7ea) pgmetrics: 1.10.2 -> 1.10.3
* [`24f37c85`](NixOS/nixpkgs@24f37c8) postsrsd: 1.8 -> 1.9
* [`7c20dfa5`](NixOS/nixpkgs@7c20dfa) ngt: 1.8.4 -> 1.12.3-alpha (NixOS/nixpkgs#101790)
* [`497afae7`](NixOS/nixpkgs@497afae) sauerbraten: 5492 -> 2020-12-04
* [`298d45b0`](NixOS/nixpkgs@298d45b) pugixml: 1.11 -> 1.11.1
* [`908896c2`](NixOS/nixpkgs@908896c) pythonPackages.poetry: Apply patch to fix failing tests
* [`1ecb8e72`](NixOS/nixpkgs@1ecb8e7) rednotebook: 2.20 -> 2.21
* [`d83c4461`](NixOS/nixpkgs@d83c446) resvg: 0.11.0 -> 0.12.0
* [`c5c3edff`](NixOS/nixpkgs@c5c3edf) seaweedfs: 2.13 -> 2.14
* [`342421b4`](NixOS/nixpkgs@342421b) sickgear: 0.23.4 -> 0.23.5
* [`3cd1a670`](NixOS/nixpkgs@3cd1a67) unbound: Add AF_NETLINK to allowed address families.
* [`3c50d74f`](NixOS/nixpkgs@3c50d74) svls: 0.1.17 -> 0.1.18
* [`ccca330f`](NixOS/nixpkgs@ccca330) ugrep: 3.0.5 -> 3.0.6
* [`9659da62`](NixOS/nixpkgs@9659da6) vale: 2.6.4 -> 2.6.5
* [`5e81263c`](NixOS/nixpkgs@5e81263) visidata: 2.0.1 -> 2.1
* [`8ad76db4`](NixOS/nixpkgs@8ad76db) gnome3.mutter: 3.38.1 -> 3.38.2
* [`34318b7c`](NixOS/nixpkgs@34318b7) webhook: 2.7.0 -> 2.8.0
* [`147fae2b`](NixOS/nixpkgs@147fae2) zktree:: init at 0.0.1
* [`609fd365`](NixOS/nixpkgs@609fd36) maintainers: add alirezameskin.
* [`9231ea93`](NixOS/nixpkgs@9231ea9) abcm2ps: 8.14.10 -> 8.14.11
* [`af3dc15a`](NixOS/nixpkgs@af3dc15) alpine-make-vm-image: 0.6.0 -> 0.7.0
* [`d35b6356`](NixOS/nixpkgs@d35b635) chromedriver.src: Update the hash
* [`374c3ff5`](NixOS/nixpkgs@374c3ff) linux_zen: 5.9.12 -> 5.9.13
* [`ba44cf1c`](NixOS/nixpkgs@ba44cf1) ckbcomp: 1.198 -> 1.199
* [`7e8e71f7`](NixOS/nixpkgs@7e8e71f) nice-dcv-client: init at 2020.2.1737-1
* [`833c76d1`](NixOS/nixpkgs@833c76d) maintainers: add rmcgibbo
* [`8ee53823`](NixOS/nixpkgs@8ee5382) ocamlPackages.tls: 0.12.7 -> 0.12.8
* [`72d2cb86`](NixOS/nixpkgs@72d2cb8) cppcheck: 2.2 -> 2.3
* [`827bb3b9`](NixOS/nixpkgs@827bb3b) coin3d: 4.0.0 -> 2020-12-07-unstable
* [`2e64b946`](NixOS/nixpkgs@2e64b94) soqt: 1.6.0 -> 2020-12-05-unstable
* [`ee545c66`](NixOS/nixpkgs@ee545c6) freecad: 2020-10-17 -> 2020-12-08
* [`e4a7c426`](NixOS/nixpkgs@e4a7c42) ocaml-ng.ocamlPackages_4_12.ocaml: 4.12.0~α1 → 4.12.0~α2
* [`02698c96`](NixOS/nixpkgs@02698c9) hsphfpd: 2020-11-27 -> 2020-12-05
* [`e56e8d4f`](NixOS/nixpkgs@e56e8d4) ocamlPackages.mirage-time: use Dune 2
* [`46281741`](NixOS/nixpkgs@4628174) ocamlPackages.graphql: use Dune 2
* [`73182c14`](NixOS/nixpkgs@73182c1) ocamlPackages.gmap: use Dune 2
* [`bee0a512`](NixOS/nixpkgs@bee0a51) ocamlPackages.domain-name: use Dune 2
* [`30487789`](NixOS/nixpkgs@3048778) ocamlPackages.duration: use Dune 2
* [`567e02e2`](NixOS/nixpkgs@567e02e) ocamlPackages.alcotest: 1.0.1 → 1.2.3
* [`24b4e109`](NixOS/nixpkgs@24b4e10) ocamlPackages.ocplib-json-typed: use Dune 2
* [`57f22850`](NixOS/nixpkgs@57f2285) stog: fix compatibility with uri ≥ 4.0.0
* [`d702e6e6`](NixOS/nixpkgs@d702e6e) ocamlPackages.uri: 3.1.0 → 4.0.0
* [`a9ba7578`](NixOS/nixpkgs@a9ba757) musescore: build in release configuration
* [`1c6b12de`](NixOS/nixpkgs@1c6b12d) pythonPackages.nix-prefetch-github: 4.0.2 -> 4.0.3
* [`6d369f81`](NixOS/nixpkgs@6d369f8) python3Packages.botocore: 1.19.25 -> 1.19.31
* [`27dd3291`](NixOS/nixpkgs@27dd329) python3Packages.boto3: 1.16.25 -> 1.16.31
* [`12beaac9`](NixOS/nixpkgs@12beaac) awscli: 1.18.185 -> 1.18.191
* [`46f2b86d`](NixOS/nixpkgs@46f2b86) krew: init at 0.4.0
* [`5e665171`](NixOS/nixpkgs@5e66517) vimPlugins.lens-vim: init at 2020-04-24
* [`50812a34`](NixOS/nixpkgs@50812a3) dnscontrol: 3.4.2 -> 3.5.0
* [`7f50f982`](NixOS/nixpkgs@7f50f98) scala: Make overridable
* [`c6549522`](NixOS/nixpkgs@c654952) berry: fix missing libXext
* [`163bd93f`](NixOS/nixpkgs@163bd93) feh: 3.6 -> 3.6.1
* [`90113564`](NixOS/nixpkgs@9011356) less: 551 -> 563 (NixOS/nixpkgs#101407)
* [`cfbc1af1`](NixOS/nixpkgs@cfbc1af) podman: 2.2.0 -> 2.2.1
* [`4a7bcab1`](NixOS/nixpkgs@4a7bcab) flask-appbuilder: fix flask-babel dep
* [`0bb69986`](NixOS/nixpkgs@0bb6998) pythonPackages.llfuse: 1.3.6 -> 1.3.8
* [`b445bc62`](NixOS/nixpkgs@b445bc6) pythonPackages.llfuse: fix tests with pytest 6
* [`799e3308`](NixOS/nixpkgs@799e330) Revert "pythonPackages.llfuse: downgrade pytest version"
* [`925b70cd`](NixOS/nixpkgs@925b70c) pythonPackages.pyfuse3: init at 3.1.1
* [`2f109e7a`](NixOS/nixpkgs@2f109e7) fluent-bit: 1.6.7 -> 1.6.8
* [`8d041d04`](NixOS/nixpkgs@8d041d0) fedora-coreos-config-transpiler: 0.7.0 -> 0.8.0
* [`d9415d11`](NixOS/nixpkgs@d9415d1) vimPlugins: update
* [`098c0152`](NixOS/nixpkgs@098c015) vimPlugins.vim-nong-theme: init at 2020-12-03
* [`35bab12e`](NixOS/nixpkgs@35bab12) inchi: init at 1.05
* [`f4679d33`](NixOS/nixpkgs@f4679d3) lc3tools: fix errors due to incorrect hardcoded paths
* [`d84bd749`](NixOS/nixpkgs@d84bd74) fd: 8.2.0 -> 8.2.1
* [`b43c42d0`](NixOS/nixpkgs@b43c42d) material-icon-theme: init at 4.4.0
* [`4c842c97`](NixOS/nixpkgs@4c842c9) standardnotes: 3.3.3 -> 3.5.11
* [`3dd31672`](NixOS/nixpkgs@3dd3167) mirrors: fix lua mirrors
* [`7d15a05b`](NixOS/nixpkgs@7d15a05) even-better-toml: init at 0.9.3
* [`3c9e1eb9`](NixOS/nixpkgs@3c9e1eb) python3Packages.markdown-it-py: init at 0.5.6
* [`b2d64e2c`](NixOS/nixpkgs@b2d64e2) python3Packages.jupytext: fix build by adding missing markdown-it-py dep; python3 only
* [`fe94a574`](NixOS/nixpkgs@fe94a57) vscode-extensions.serayuzgur.crates: init at 0.5.3
* [`0f144cb8`](NixOS/nixpkgs@0f144cb) one-dark-theme: init at 1.7.2
* [`a8d7d5de`](NixOS/nixpkgs@a8d7d5d) vscode-ron: init at 0.9.0
* [`547376fe`](NixOS/nixpkgs@547376f) python3Packages.pandas: 1.1.4 -> 1.1.5
* [`e6bf8328`](NixOS/nixpkgs@e6bf832) steamPackages.steam-runtime: add update script, fix pname
* [`f3103fe2`](NixOS/nixpkgs@f3103fe) steamPackages.steam-runtime: 0.20200720.0 → 0.20201203.1
* [`b675bbbc`](NixOS/nixpkgs@b675bbb) apk-tools: Mark broken on darwin
* [`3139f425`](NixOS/nixpkgs@3139f42) imagemagick7: 7.0.10-35 -> 7.0.10-46
* [`9060c9af`](NixOS/nixpkgs@9060c9a) gnome3.gnome-shell: 3.38.1 -> 3.38.2
* [`9a31966f`](NixOS/nixpkgs@9a31966) pandoc-lua-filters: init at 2020-11-30
* [`ba11a966`](NixOS/nixpkgs@ba11a96) doc: Add staging workflow diagram
* [`d028eb3c`](NixOS/nixpkgs@d028eb3) gnome3.gnome-chess: 3.38.0 -> 3.38.1
* [`872cb2fc`](NixOS/nixpkgs@872cb2f) rapidcheck: refactor `postInstall` to install all extras (NixOS/nixpkgs#106376)
* [`40a7c98c`](NixOS/nixpkgs@40a7c98) mycli: fix build with sqlparse 0.4.x (NixOS/nixpkgs#106334)
* [`289ef7f5`](NixOS/nixpkgs@289ef7f) python37Packages.azure-mgmt-cdn: 5.1.0 -> 5.2.0
* [`c13d8fda`](NixOS/nixpkgs@c13d8fd) python37Packages.azure-batch: 9.0.0 -> 10.0.0
* [`337c3d77`](NixOS/nixpkgs@337c3d7) python37Packages.dependency-injector: 4.5.1 -> 4.5.3
* [`33e23118`](NixOS/nixpkgs@33e2311) python37Packages.aniso8601: 8.0.0 -> 8.1.0
* [`d3419c98`](NixOS/nixpkgs@d3419c9) python37Packages.cocotb: 1.3.2 -> 1.4.0
* [`e9ade83e`](NixOS/nixpkgs@e9ade83) python37Packages.alerta: 8.0.0 -> 8.2.0
* [`23290bd1`](NixOS/nixpkgs@23290bd) python37Packages.azure-mgmt-network: 16.0.0 -> 17.0.0
* [`a35e7daa`](NixOS/nixpkgs@a35e7da) compcert: 3.7 → 3.8
* [`563ff4ad`](NixOS/nixpkgs@563ff4a) kubernetes: misc fixes
* [`d183736d`](NixOS/nixpkgs@d183736) kubectl: use installShellFiles
* [`5bdcc316`](NixOS/nixpkgs@5bdcc31) amsn: remove application
* [`ace04464`](NixOS/nixpkgs@ace0446) knot-resolver: 5.2.0 -> 5.2.1
* [`02b7ec6a`](NixOS/nixpkgs@02b7ec6) routinator: 0.8.1 -> 0.8.2
* [`e9158eca`](NixOS/nixpkgs@e9158ec) fetchfirefoxaddon: support for SRI hashes
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

3 participants