summary refs log tree commit diff
path: root/pkgs/development/ruby-modules/gem
AgeCommit message (Collapse)AuthorFilesLines
2023-02-22treewide: env.NIX_CFLAGS_COMPILE use toString on result of optionalsArtturin1-2/+2
env values must be strings
2023-02-22treewide: move NIX_CFLAGS_COMPILE to the env attrsetArtturin1-1/+1
with structuredAttrs lists will be bash arrays which cannot be exported which will be a issue with some patches and some wrappers like cc-wrapper this makes it clearer that NIX_CFLAGS_COMPILE must be a string as lists in env cause a eval failure
2023-01-21buildRubyGem: don't use the bash 'type' variable name (#211899)Yureka1-3/+3
https://github.com/NixOS/nixpkgs/issues/211671 There is also a fix with an stdenv rebuild in staging, but we don't want to wait so long...
2022-08-08rubyPackages: set meta.mainProgramilkecan1-0/+1
2022-07-01buildRubyGem: inherit libobjc from darwinArtturin1-2/+2
2022-07-01buildRubyGem: fix bundix crossArtturin1-2/+7
allows building bundix but most ruby gems still fail with ``` ++ gem install --local --force --http-proxy http://nodtd.invalid --ignore-dependencies --install-dir /nix/store/...-ruby-aarch64-unknown-linux-gnu2.7.6-nio4r-2.5.8-aarch64-unknown-linux-gnu/lib/ruby/gems/2.7.0 --build-root / --backtrace --no-env-shebang -N /nix/store/...-nio4r-2.5.8.gem -- /nix/store/...-ruby-aarch64-unknown-linux-gnu-2.7.6/bin/gem: line 8: require: command not found /nix/store/...-ruby-aarch64-unknown-linux-gnu-2.7.6/bin/gem: line 9: require: command not found /nix/store/...-ruby-aarch64-unknown-linux-gnu-2.7.6/bin/gem: line 10: require: command not found /nix/store/...-ruby-aarch64-unknown-linux-gnu-2.7.6/bin/gem: line 12: required_version: command not found /nix/store/...-ruby-aarch64-unknown-linux-gnu-2.7.6/bin/gem: line 14: unless: command not found /nix/store/...-ruby-aarch64-unknown-linux-gnu-2.7.6/bin/gem: line 15: abort: command not found /nix/store/...-ruby-aarch64-unknown-linux-gnu-2.7.6/bin/gem: line 16: end: command not found /nix/store/...-ruby-aarch64-unknown-linux-gnu-2.7.6/bin/gem: line 18: args: command not found /nix/store/...-ruby-aarch64-unknown-linux-gnu-2.7.6/bin/gem: line 20: begin: command not found /nix/store/...-ruby-aarch64-unknown-linux-gnu-2.7.6/bin/gem: line 21: Gem::GemRunner.new.run: command not found /nix/store/...-ruby-aarch64-unknown-linux-gnu-2.7.6/bin/gem: line 22: rescue: command not found /nix/store/...-ruby-aarch64-unknown-linux-gnu-2.7.6/bin/gem: line 23: exit: e.exit_code: numeric argument required ```
2022-01-28bundler: 2.2.24 -> 2.3.6FliegendeWurst1-3/+1
2021-07-16buildRubyGem: by default use Ruby's platformsMario Rodas1-1/+4
2021-04-05ruby: reproducibleThomas Bereknyei1-2/+2
Generated Makefile's were nested deeper than the existing rm would be able to remove.
2021-03-26Use minimal git for fetching gemsMichael Francis1-2/+2
2021-02-22buildRubyGem: update CFLAGS for ruby 3.0 on ClangMario Rodas1-0/+6
2020-11-30buildRubyGem: fix to support bundler cmds (#104977)Farid Zakaria1-1/+6
The way in which Nixpks builds Ruby gems means that certain operations by bundler *will not work*, namely `bundle install --redownload`. According to the source the _cache/_ directory should have been kept, however it seems through revisions to the file it has been purged. Here was the comment from the original commit that introduced buildRubyGem: ``` # Note: # We really do need to keep the $out/${ruby.gemPath}/cache. # This is very important in order for many parts of RubyGems/Bundler to not blow up. # See https://github.com/bundler/bundler/issues/3327 ``` Why is the _cache_ directory needed? Bundler and RubyGems uses the cache as a source of truth. When bundler executes `bundler install --redownload`, any gems it discovers in the _GEM_PATH_ it assums must have their _.gem_ file present in the cache (unaware it was installed from Nix). Rather than downloading the gem from RubyGems the bundler code forcibly re-installs the gem from the cache directory instead and **fails** if it does not exist. I've opened https://github.com/rubygems/rubygems/issues/4088 to see if this failure should be soft and not so explicit; or fallback to fetching the gem from scratch. Without this change the following is the error: ```bash > [nix-shell:~/code/nix/playground/jruby-bundler-rake]$ bundle install --force [DEPRECATED] The `--force` option has been renamed to `--redownload` WARNING: An illegal reflective access operation has occurred WARNING: Illegal reflective access by org.jruby.ext.openssl.SecurityHelper (file:/nix/store/fis6nzrpw9pmcivr84qh5byfgm07qn10-jruby-9.2.13.0/lib/ruby/stdlib/jopenssl.jar) to field java.security.MessageDigest.provider WARNING: Please consider reporting this to the maintainers of org.jruby.ext.openssl.SecurityHelper WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations WARNING: All illegal access operations will be denied in a future release Fetching gem metadata from https://rubygems.org/. Using bundler 2.1.4 Installing hello-world 1.2.0 Bundler::GemNotFound: Could not find hello-world-1.2.0.gem for installation An error occurred while installing hello-world (1.2.0), and Bundler cannot continue. Make sure that `gem install hello-world -v '1.2.0' --source 'https://rubygems.org/'` succeeds before bundling. ``` Wth the fix the following no woccurs: ```bash [nix-shell:~/code/nix/playground/jruby-bundler-rake]$ bundle install --redownload WARNING: An illegal reflective access operation has occurred WARNING: Illegal reflective access by org.jruby.ext.openssl.SecurityHelper (file:/nix/store/69wjlj4yirp48rv1q03zxgd4xvf0150d-jruby-9.2.13.0/lib/ruby/stdlib/jopenssl.jar) to field java.security.MessageDigest.provider WARNING: Please consider reporting this to the maintainers of org.jruby.ext.openssl.SecurityHelper WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations WARNING: All illegal access operations will be denied in a future release Fetching gem metadata from https://rubygems.org/. Using bundler 2.1.4 Installing hello-world 1.2.0 Bundle complete! 1 Gemfile dependency, 2 gems now installed. Use `bundle info [gemname]` to see where a bundled gem is installed. ``` ``` [nix-shell:~/code/nix/playground/jruby-bundler-rake]$ ls -l /nix/store/cwl9n5073hqgpfhnw4wic13nrrgg9dn8-gem-env/lib/jruby/gems/2.5.0/cache/ total 8 lrwxrwxrwx 1 fmzakari primarygroup 102 Dec 31 1969 bundler-2.1.4.gem -> /nix/store/ifc8a0gsfkrhkv953rd4rz8bcspahi8y-bundler-2.1.4/lib/jruby/gems/2.5.0/cache/bundler-2.1.4.gem lrwxrwxrwx 1 fmzakari primarygroup 110 Dec 31 1969 hello-world-1.2.0.gem -> /nix/store/xi9ln6n1mz2is5ppykjxqhhkpjq9zm6i-hello-world-1.2.0/lib/jruby/gems/2.5.0/cache/hello-world-1.2.0.gem ``` I have a minimal project that demonstrates this issue at https://github.com/fzakaria/jruby-bundler-nix-failure
2020-10-27buildRubyGem: remove Makefileszimbatm1-1/+1
The generated Makefile is not reproducible. The HDRS section is inode dependent. "sitearchdir" and "sitelibdir" contains a timestamp and random postfix. See https://r13y.com/diff/8350ec80865096f84705f3e000d97f151760e768bf626e52c84570413c5e1093-f9dea788fe62d683e90e12e166f29b778c39c699a5be39f9262e5cffb77d3e45.html Instead of trying to make it reproducible, remove it entirely. It was only useful for generating the .so file and it no longer needed. See also https://bugs.ruby-lang.org/issues/15304 Fixes the rubyPackages.nokogiry reproducibility for example.
2020-01-09buildRubyGem: remove more bloat filesAlyssa Ross1-2/+5
2020-01-09buildRubyGem: strip by defaultAlyssa Ross1-1/+1
I'm not sure why this was disabled, but it looks like a pretty harmless way to bring down closure size and remove references to compilers and stuff.
2019-12-17ruby-modules: parse build_flags correctly:Burke Libbey1-2/+3
In building a gem whose native extension is a Rakefile, the previous version of this code will call essentially `rake ""`, when it means to call `rake`. This change converts `""` into `[]` rather than `[""]`.
2019-11-01treewide: Make still dont* Variables are optional in most casesJohn Ericson1-1/+1
Go beyond the obvious setup hooks now, with a bit of sed, with a skipped case: - cc-wrapper's `dontlink`, because it already is handled. Also, in nix files escaping was manually added. EMP
2019-09-03ruby.withPackages: initMichael Fellinger1-1/+1
Co-authored-by: Alyssa Ross <hi@alyssa.is>
2019-04-03ruby-modules/gem: fix path to git checkoutJustin Humm1-1/+1
In case of the gem type 'git', nix-bundle-install.rb was called with wrong path to the git checkout. ${src} does contain the sources, but not the newly generated .git dir, which is created in the buildPhase of pkgs/development/ruby-modules/gem/default.nix In some rare cases, this .git dir is needed at installPhase.
2019-03-29(ruby-modules/gem): (refactor) (#53525)Judson Lester1-1/+7
* Changing leaveDotGit to git chacha on build * Removing debugging cruft * Simpler git handling * Can't clobber index after `add` * Update pkgs/development/ruby-modules/gem/default.nix Useful comments Co-Authored-By: nyarly <nyarly@users.noreply.github.com> * Update pkgs/development/ruby-modules/gem/default.nix Comments are useful Co-Authored-By: nyarly <nyarly@users.noreply.github.com>
2018-10-29buildRubyGem: Provide manpages for Ruby gems (#49334)Michael Fellinger1-0/+9
2018-03-03buildRubyGem: Make testing easierAneesh Agrawal1-4/+0
Don't default `doCheck` to false, and use the default set of phases so the phases list does not need to be overriden in order to add checkPhase or installCheckPhase.
2018-01-04ruby-modules: Add new url `source` typeAneesh Agrawal2-40/+76
This just defers to `fetchurl` for fetching. Additionally, update the `nix-bundle-install.rb` script to handle gems installed from a path, i.e. those with a `url` source. Some parts of that script have been disabled in the `path` case that likely shouldn't be, but cause errors and aren't necessary to get `vagrant` to work.
2018-01-04ruby treewide: don't merge source into top-levelAneesh Agrawal1-7/+8
Keep the `source` attrset distinct to prevent its entries from merging with the top level attrs. Since each type of source has a different set of entries for `source`, this is the easiest way to keep them together. This will pave the way for a new `url` type of source. This is a mass-rebuild of many ruby packages, notably those using `git` type sources.
2017-05-10Current round of tests pass, but filter function is failing to include when ↵Judson1-2/+0
platform match in use.
2017-05-09Current round of tests pass, but filter function is failing to include when ↵Judson1-0/+3
groups match in use.
2016-10-02ruby: fixes rubygems user installszimbatm1-0/+1
* Manage patches in git * Fixes the hook invocation to be more safe. Thanks @Mic92 * Install gems as user by default * Install gem binaries with the /usr/bin/env shebang * Fixes a bug where the passthru.libPath and passthru.gemPath would point to the wrong directory * Overhaul ruby version heuristics
2016-09-06buildRubyGem: fixes gemspec UTF-8 loading issuezimbatm1-0/+5
If a gemspec has UTF-8 characters in it, ruby will fail loading it with invalid multibyte char (US-ASCII) This change forces the encoding to be correct, we assume everyone now uses UTF-8.
2016-08-29buildRubyGem: handle build-time ruby dependencieszimbatm1-0/+1
For some reason `gem install` unsets the GEM_PATH environment variable internally unless the install dir is provided. This in turn means that if it invokes extconf.rb and extconf.rb depends on a gem available on the GEM_PATH (like pkg-config for nokogiri) then it's not available in that context. Proof: https://github.com/rubygems/rubygems/blob/d8293c472966cb1de08784dfdd90560e56ceed84/lib/rubygems/commands/install_command.rb#L151 Blame: https://github.com/rubygems/rubygems/commit/9ea600c9c2b77d1459526fe1e2bcdf2ac778c24a This is a hack that sets the :install_dir to where we would install anyways (the GEM_HOME is the default installation destination).
2016-08-23buildRubyGem: don't set the GEM_HOMEzimbatm1-4/+9
bundler for example needs to have the GEM_HOME being passed trough to function properly. For gems that are loading content dynamically, or can use plugins, use buildRubyGem. For executables that are wrapped in their own sealed thing use bundlerEnv.
2016-07-21buildRubyGem: fix buildFlags default attributezimbatm1-1/+1
lib.escapeShellArgs doesn't work well when a null value is provided. [] is also the correct value since it's really just an empty list of arguments that we have.
2016-06-12Escape all shell arguments uniformlyzimbatm1-4/+3
2016-03-19move all ruby modules to development/ruby-moduleszimbatm3-0/+437