Changes:
* Fix use of prerelease gems.
* Gem.bin_path no longer escapes path with spaces. Bug #25935 and #26458.
* Bulk index update is no longer supported (the code currently
remains, but not the tests)
New features since 1.3.1:
* RubyGems now loads plugins from rubygems_plugin.rb in installed gems.
This can be used to add commands (See Gem::CommandManager) or add
install/uninstall hooks (See Gem::Installer and Gem::Uninstaller).
* Gem::Version now understands prerelease versions using letters. (eg.
'1.2.1.b') Thanks to Josh Susser, Alex Vollmer and Phil Hagelberg.
* RubyGems now includes a Rake task for creating gems which replaces rake's
Rake::GemPackageTask. See Gem::PackageTask.
* Gem::find_files now returns paths in $LOAD_PATH.
* Added Gem::promote_load_path for use with Gem::find_files
* Added Gem::bin_path to make finding executables easier. Patch #24114 by
James Tucker.
* Various improvements to build arguments for installing gems.
* `gem contents` added --all and --no-prefix.
* Gem::Specification
* #validate strips directories and errors on not-files.
* #description no longer removes newlines.
* #name must be a String.
* FIXME and TODO are no longer allowed in various fields.
* Added support for a license attribute. Feature #11041 (partial).
* Removed Gem::Specification::list, too much process growth. Bug #23668 by
Steve Purcell.
* `gem generate_index`
* Can now generate an RSS feed.
* Modern indicies can now be updated incrementally.
* Legacy indicies can be updated separately from modern.
* `gem server` allows port names (from /etc/services) with --port.
* `gem server` now has search that jumps to RDoc. Patch #22959 by Vladimir
Dobriakov.
* `gem spec` can retrieve single fields from a spec (like `gem spec rake
authors`).
* Gem::Specification#has_rdoc= is deprecated and ignored (defaults to true)
* RDoc is now generated regardless of Gem::Specification#has_rdoc?
New features since 1.2.0:
* RubyGems doesn't print LOCAL/REMOTE titles for `gem query` and friends if
stdout is not a TTY, except with --both.
* Added Gem.find_files, allows a gem to discover features provided by other
gems.
* Added pre/post (un)install hooks for packagers of RubyGems. (Not for gems
themselves).
* RubyGems now installs gems into ~/.gem if GEM_HOME is not writable. Use
--no-user-install command-line switch to disable this behavior.
* Fetching specs for update now uses If-Modified-Since requests.
* RubyGems now updates the ri cache when the rdoc gem is installed and
documentation is generated.
Release 1.2.0 adds new features and fixes some bugs.
New features:
* RubyGems no longer performs bulk updates and instead only fetches the gemspec
files it needs. Alternate sources will need to upgrade to RubyGems 1.2 to
allow RubyGems to take advantage of the new metadata updater. If a pre 1.2
remote source is in the sources list, RubyGems will revert to the bulk update
code for compatibility.
* RubyGems now has runtime and development dependency types. Use
#add_development_dependency and #add_runtime_dependency. All typeless
dependencies are considered to be runtime dependencies.
* RubyGems will now require rubygems/defaults/operating_system.rb and
rubygems/defaults/#{RBX_ENGINE}.rb if they exist. This allows packagers and
ruby implementers to add custom behavior to RubyGems via these files. (If
the RubyGems API is insufficient, please suggest improvements via the
RubyGems list.)
* /etc/gemrc (and windows equivalent) for global settings
* setup.rb now handles --vendor and --destdir for packagers
* `gem stale` command that lists gems by last access time
Bugs Fixed:
* File modes from gems are now honored, patch #19737
* Marshal Gem::Specification objects from the future can now be loaded.
* A trailing / is now added to remote sources when missing, bug #20134
* Gems with legacy platforms will now be correctly uninstalled, patch #19877
* `gem install --no-wrappers` followed by `gem install --wrappers` no longer
overwrites executables
* `gem pristine` now forces reinstallation of gems, bug #20387
* RubyGems gracefully handles ^C while loading .gemspec files from disk, bug
#20523
* Paths are expanded in more places, bug #19317, bug #19896
* Gem::DependencyInstaller resets installed gems every install, bug #19444
* Gem.default_path is now honored if GEM_PATH is not set, patch #19502
Other Changes Include:
* setup.rb
* stub files created by RubyGems 0.7.x and older are no longer removed. When
upgrading from these ancient versions, upgrade to 1.1.x first to clean up
stubs.
* RDoc is no longer required until necessary, patch #20414
* `gem server`
* Now completely matches the output of `gem generate_index` and
has correct content types
* Refreshes from source directories for every hit. The server will no longer
need to be restarted after installing gems.
* `gem query --details` and friends now display author, homepage, rubyforge url
and installed location
* `gem install` without -i no longer reinstalls dependencies if they are in
GEM_PATH but not in GEM_HOME
* Gem::RemoteFetcher now performs persistent connections for HEAD requests,
bug #7973
patches to add it). Drop pax from the default USE_TOOLS list.
Make bsdtar the default for those places that wanted gtar to extract
long links etc, as bsdtar can be built of the tree.
* Gem.prefix now returns non-nil only when RubyGems was installed outside
sitelibdir or libdir.
* The `gem server` gem list now correctly links to gem details.
* `gem update --system` now passes --no-format-executable to setup.rb.
* Gem::SourceIndex#refresh! now works with multiple gem repositories.
* Downloaded gems now go into --install-dir's cache directory.
* Various fixes to downloading gem metadata.
* `gem install --force` now ignores network errors too.
* `gem pristine` now rebuilds extensions.
* `gem update --system` now works on virgin Apple ruby.
* Gem::RemoteFetcher handles Errno::ECONNABORTED.
+ Port patches to allow gems to be installed into an "installion root"
from 1.0.1nb2.
+ Rename the --build-root option to --install-root, which more accurately
reflects the purpose of the option.
+ Update rubygem.mk to work with rubygems-1.1.0.
+ Require 1.1.0 as the minimum rubygems version for the build.
+ Remove GEM_FORMAT and special code to extract the gemspec file
from a gem archive -- `gem spec' can now do it correctly by itself.
+ Rename various *buildroot* targets to *install-root* to match the
name of the `gem' option.
* RubyGems now uses persistent connections on index updates and only
updates from a latest index by default, cutting candidate gems for
updates to roughly 1/4 (at present). Index updates are much faster
now.
* `gem list -r` may only show the latest version of a gem, add --all to
see all gems.
* `gem spec` now extracts specifications from .gem files.
* `gem query --installed` to aid automation of checking for gems.
This update has been tested with the 3 packages in pkgsrc that install
using the ``gem'' command:
devel/rubyforge
misc/ruby-gem_plugin
www/mongrel
This update has also been tested with the 129 packages in my local
tree that install using the ``gem'' command.
Manually check that the installation actually succeeds or exit with an
error so that the pkgsrc make process halts with the proper error code.
Suggestion for change by <seb> in private email.
+ Add a GEM_SPECFILE variable which points to the gemspec file
to use when building using the ``gemspec'' GEM_BUILD method.
It defaults to ${WRKDIR}/${DISTNAME}.gemspec.
+ Add a GEM_FORMAT variable that indicates the archive format of
the downloaded gem. Possible are "packed" and "tar" with a default
of "tar". "Packed" is the old gem-0.8.x format, while "tar" is the
current one.
+ Make gem-extract a dependency for post-extract, not do-extract.
This allows for the usual do-extract actions to take place in
the case where EXTRACT_SUFX is not ".gem".
Now, if any of the DISTFILES are gems, then gem-extract takes care
of all of the extraction, but otherwise, the usual do-extract actions
take place.
+ Use the gem script to unpack the downloaded gem. We still have to
manually extract the gemspec file, but at least we make fewer
assumptions about the format of the gem.
this file was awkward because PKG_DESTDIR_SUPPORT must be set before
the first inclusion of bsd.prefs.mk, which forced rubygem.mk to be
included before any other file. Instead, packages which install as
Ruby gems should define PKG_DESTDIR_SUPPORT on their own.
generated by mkmf.rb are actually not DESTDIR-safe because the $(DESTDIR)
value gets propagated to the rpath. Since we already pass --buildroot
to deal with staged installations, explicitly strip out DESTDIR from
the environment.
regardless of the #! line at the head of a script, so we can skip
the interpreter path check for gems.
As a side benefit, the resulting gems are more suitable for distribution
to other platforms.
+ Clean up additional unpacked bits (*.sig) files during extraction.
+ Fix the "cleanbuild" step:
+ In GEM_CLEANBUILD case, sanity check that the file doesn't exist
in the unpacked gem before removing it from the installed gem.
+ Actually removes unwanted directories.
that the Rakefile creates it in a non-standard place.
+ Create a new variable GEM_CLEANBUILD which is a list of globs for
files to remove from the gem installed in the buildroot in the
_gem-install-cleanbuild target. This allows for packages with a
non-standard gem directory structure (one that has the .c files
under ext/).
the same variables used in rubygem.mk.
+ Use a GENERATE_PLIST statement instead of manually generating a
PLIST_DYNAMIC file. This code is copied from RUBYGEM_GENERATE_PLIST
in rubygem.mk.
+ Use INSTALL_ENV, which is meant to contain the extra environment
bits for use during installation.
the local gem that is installed is built from the extracted sources.
The possible values are "gemspec" and "rake", with "rake" being the
default.
+ Change the do-gem-extract target so that it also extracts the gemspec
file from the source gem. This gemspec file is used when the
"gemspec" GEM_BUILD method is chosen.
+ Add do-gem-${GEM_BUILD}-targets that build the local gem using the
corresponding ${GEM_BUILD} method.