MinGW Package Download and Installation Tool
============================================
$Id: readme.txt,v 1.12 2012/04/25 23:28:14 keithmarshall Exp $
Description
-----------
mingw-get is a tool to assist users in the management of MinGW and MSYS
software installations. Configured via an online XML database, which is
managed by the project maintainers, it offers a command line driven user
interface facilitating selective download and installation of packages
provided by the project.
The XML database provides maintainers with a mechanism for the
specification of inter-package dependencies; this permits configuration
of any package, such that the end user may elect to install just that
specific package, leaving mingw-get to ensure that all dependencies will
be automatically satisfied at installation time.
A graphical user interface is planned as a future enhancement.
Licensing Terms
---------------
mingw-get is free software. Permission is granted to copy, modify and
redistribute this software, under the provisions of the GNU General
Public License, Version 3, (or, at your option, any later version), as
published by the Free Software Foundation; see the file COPYING, which
is distributed with the mingw-get-lic package, and with the source code,
for licensing details.
Note, in particular, that mingw-get is provided "as is", in the hope
that it may prove useful, but WITHOUT WARRANTY OF ANY KIND; not even an
implied WARRANTY OF MERCHANTABILITY, nor of FITNESS FOR ANY PARTICULAR
PURPOSE. Under no circumstances will the author, or the MinGW Project,
accept liability for any damages, however caused, arising from the use
of this software.
Release Notes
=============
The information presented below describes the user visible changes
introduced with each release of mingw-get. The online version of this
historical record is restricted to recent releases; the full history is
recorded in the NEWS file, which is included in the source code package.
mingw-get-0.5-mingw32-beta-20120426-1
-------------------------------------
Release date: 2012-04-26
This is an emergency bug-fix release; it provides an immediate interim
work-around for bug #3520864, circumventing a critical regression which
was introduced in mingw-get-0.5-mingw32-beta-20120416-1, and is thus a
mandatory upgrade for users who had previously upgraded to that version.
It also incorporates the correction for bug #3520488.
mingw-get-0.5-mingw32-beta-20120416-1
-------------------------------------
Release date: 2012-04-16
This milestone release marks the point at which the code base, for the
CLI implementation, is deemed to have progressed from alpha to beta (or
better) quality. It corrects several packaging deficiencies within the
source code distribution, in addition to fixing two reported bugs; it
also adds several new features.
The following bugs are fixed by this release:--
- #3416013: --reinstall and dependent packages
Specifically, in the case of application of the --reinstall option to
meta-packages, previous releases would have no effect. This is now
corrected, such that the --reinstall action is applied recursively to
each declared requirement of any meta-package, to the depth of the
first non-meta package in each requirement chain.
- #3424406: install --reinstall performs an upgrade
When performing the "install" action, with the --reinstall option,
previous releases would consider the availability of upgrades for the
package in question, promoting the "install" action to "upgrade" when
possible. This anomaly has now been corrected; when specified with
the "install" action, the --reinstall option will cause reinstallation
of the originally installed version, ignoring available upgrades; (the
former behaviour remains available, by specifying the --reinstall
option together with the "upgrade" action).
The following new features have been implemented:--
- Forced installation of a specified (non-current) release.
The package name specified as the predicate of any "install" or
"upgrade" action may now be qualified by a version specification,
allowing the user to select any known version, (not necessarily the
most recently released), for installation. In the case of any package
which has not been previously installed, the format is any of:
mingw-get install "package-name=version-spec"
mingw-get install "package-name<version-spec"
mingw-get install "package-name<=version-spec"
mingw-get install "package-name>=version-spec"
mingw-get install "package-name>version-spec"
while for any package which has been previously installed, and is to
be "rolled back" to an earlier release, the same forms are supported,
using the "upgrade" action in place of "install".
In each of the above command forms, "package-name" represents the
unqualified package name, as it would be specified in any regular
invocation of mingw-get, and "version-spec" is the selector for the
desired version; (in the case of an "=" qualifier, this must be an
exact match for the desired version, unless it ends with the "*" wild
card). For example, if GCC has already been installed at version
4.6.2-1, (the most recent release at this time of writing), it may be
rolled back to the last version 4.5 release by:
mingw-get upgrade "gcc=4.5.*"
or by using an inequality specifier, to exclude gcc-4.6 and later:
mingw-get upgrade "gcc<4.6"
Note that, particularly in the case of the inequality qualifiers, the
argument must be quoted, to avoid interpretation of the inequality
operator as the shell's redirection operator.
Also note that any explicit *inclusive* version range, such as:
mingw-get upgrade "gcc>4.5<4.6"
is permitted; however no white space is permitted, anywhere within the
qualified package specification.
- Support for package maintainer scripted installation hooks.
An embedded script interpreter, based on Lua version 5.2, has been
incorporated; this provides support for "pre-install", "post-install",
"pre-remove", and "post-remove" action hooks, which may be specified
by package maintainers, in the form of Lua scripts embedded within
"action" elements in any package's XML catalogue entry.
This capability is further supported by the provision of Lua modules,
providing a standardised mechanism for creation of MS-Windows shell
links, (a.k.a. shortcuts).
- New option: "--desktop"
Grants permission, to package maintainer specified scripts, to create
shortcuts on the user's desktop; alternatively, it may be specified as
--desktop=all-users, to make such shortcuts available to all users.
- New option: "--start-menu"
Grants permission, to package maintainer specified scripts, to create
shortcuts in the user's start menu; alternatively, it may be specified
as --start-menu=all-users, to make such shortcuts available in the
start menus of all users.
mingw-get-0.4-mingw32-alpha-1
-----------------------------
Release date: 2011-11-06
This release fixes a critical bug in the upgrade code, whereby an
existing DLL could be replaced by an alternative with an incompatible
ABI version, where the correct action is to install both concurrently.
As a critical bug-fix release, this is a strongly recommended upgrade
for all users.
In addition to this critical bug-fix, the following new features have
been implemented:--
- Modified action: "upgrade"
The "upgrade" request now supports anonymous upgrade of all currently
installed packages; in other words, the command:
$ mingw-get upgrade
issued without any additional package-name arguments, will cause
mingw-get to invoke the upgrade action in respect of each and every
package which is currently recorded as "installed", and for which an
upgrade is available.
- New action: "source"
Invoked by a command of the form:
$ mingw-get source package-name ...
requests mingw-get to download the source code archive for each named
package, and unpack it in the current working directory.
- New action: "licence"
Similar to "source", and invoked by a command of the form:
$ mingw-get licence package-name ...
requests mingw-get to download the licence packs for each named
package, once again unpacking them in the current working directory.
- New option: "--print-uris"
Used in conjunction with an "install", "source", or "licence" request,
causes mingw-get to print, on stdout, the URIs from whence the
packages needed to satisfy the request may be downloaded, without
otherwise completing the request; (nothing is actually downloaded,
unpacked, or installed). This option causes the URIs to be printed
irrespective of the installation status of the named packages.
- New option: "--download-only"
Used with an "install", "upgrade", or "licence" request, causes mingw-
get to download any package archives which are necessary to complete
the specified action, provided they are not already present within the
package cache, but without unpacking or installing the package
content. After completing the request, the requisite package archives
may be found in the mingw-get package cache
var/cache/mingw-get/packages
relative to mingw-get's own sysroot path.
Similarly, when used with the "source" request, the "--download-only"
option causes mingw-get to download any source package archives needed
to complete the request, (once again, provided they are not already
present in the download cache), but without unpacking them. In this
case, after completing the request, the requisite source archives may
be found in the directory
var/cache/mingw-get/source
relative to the sysroot path.
- New option: "--all-related"
Used with the "source" or "licence" requests, this option extends the
scope of the request, causing mingw-get to also process the source or
licence packages associated with all runtime dependencies identified
for the packages named in the command.
Installation Instructions
=========================
The information which follows describes the procedure for installing and
configuring mingw-get, and for keeping the installation current. The
online version of this document is an abridged form, focussing on the
installation of binary releases; users who prefer to build and install
from source are advised to consult the unabridged form of this document,
which may be found in the file "INSTALL", within the source code
distribution tarball.
Please report bugs as directed at http://mingw.org/Reporting_Bugs
First Time Installation of a Binary Release
-------------------------------------------
To install mingw-get, visit the MinGW files repository at:
http://sourceforge.net/projects/mingw/files
and, from the "Automated MinGW Installer/mingw-get" folder, download
your choice of either:
mingw-get-0.5-mingw32-beta-20120426-1-bin.zip
or (preferred, if you know how to unpack it):
mingw-get-0.5-mingw32-beta-20120426-1-bin.tar.gz
Whichever of these you choose to download, you should unpack it into the
directory in which you intend to host your MinGW installation; (we
*strongly* recommend that you adopt our standard of C:\MinGW [*], unless
you have an exceptional reason to make an alternative choice), then use
your preferred method for assignment of environment variables to add the
appropriate directory (default C:\MinGW\bin) to your PATH; (this should
be added as a permanent PATH assignment).
Having completed this phase of installation, you may then wish to review
the following section on configuration; if nothing else, you may wish to
copy the supplied defaults.xml file to profile.xml, even if you choose
not to introduce any customisations. Finally, to initialise the
installation recording database, you should run the command [**]:
C:\> mingw-get install mingw-get
[*] If you insist on adopting a different directory from the recommended
default, you are *strongly* advised to avoid any directory which has
white space in its absolute path name; in particular, those who choose
to ignore this advice, and install MinGW into some subdirectory of (for
example) C:\Program Files", usually discover to their cost that certain
tools may not work correctly.
This document will refer to files as though installed in the recommended
default location, with a path prefix of C:\MinGW. If, having read the
above warning, you do decide to adopt an alternative installation path,
then please substitute your alternative prefix, as appropriate, where
this document refers to C:\MinGW.
[**] If you have chosen mingw-get-0.5-mingw32-beta-20120426-1-bin.tar.gz
as your installation source, rather than mingw-
get-0.5-mingw32-beta-20120426-1-bin.zip, you may like to create the
directory:
C:\MinGW\var\cache\mingw-get\packages
(together with any requisite parents, and adjusting the C:\MinGW prefix
to suit your installation choice, if necessary). You may then move the
mingw-get-0.5-mingw32-beta-20120426-1-bin.tar.gz file to it, *before*
you run the above command; this will relieve mingw-get of the overhead
which would be incurred by downloading the file a second time.
Specifying the Configuration
----------------------------
When you invoke mingw-get, it will attempt to read configuration data
from the file:
C:\MinGW\var\lib\mingw-get\data\profile.xml
(with any necessary adjustment of the C:\MinGW installation prefix, as
noted previously); if, and only if, this file cannot be read, then a
fallback attempt will be made, to read the configuration from:
C:\MinGW\var\lib\mingw-get\data\defaults.xml
instead. Of this pair of files, profile.xml is *not* included within
the mingw-get distribution, but defaults.xml *is*. It is a liberally
commented XML file, which you are advised to copy to create profile.xml;
you may then modify this, as you see fit, to suit your own installation
requirements. [*]
At the present time, the only entries you should consider changing are
the path names specified by the "path" attribute associated with each of
the "sysroot" elements within the first (only) "system-map" element;
(these specify the prefix directory path names for your installation).
You probably want to make the path for the "mingw32" subsystem match
your choice for your mingw-get installation; (the "%R" notation, used in
defaults.xml, sets it up thus, regardless of whether you choose to
install in C:\MinGW, or an alternative location).
[*] The recommendation to copy defaults.xml to profile.xml may seem to
be an unnecessary inconvenience; it is implemented this way in order to
safeguard any configuration changes you wish to make; during an upgrade,
defaults.xml will be overwritten, but profile.xml will not, so your
configuration will be preserved.
Upgrading an Existing Installation to a Newer Binary Release
------------------------------------------------------------
Once you have completed a first-time installation of mingw-get, whether
from a binary release or by building and installing from source, you may
wish to upgrade it, as the project team publishes new releases. Unless
you insist on *always* installing from source, (in which case each
upgrade effectively becomes a fresh first-time installation from the new
source code), and provided:
- you have previously installed mingw-get-0.1-mingw32-alpha-3 or newer,
and
- you have completed the first-time installation process, by running
C:\> mingw-get install mingw-get
then you may upgrade to a newer binary release by running
C:\> mingw-get update
C:\> mingw-get upgrade mingw-get
Otherwise, if you have a previously unfinalised installation, i.e. you
did not previously run
C:\> mingw-get install mingw-get
and that previous installation is of mingw-get-0.1-mingw32-alpha-3 or
newer, then you may upgrade and finalise by running
C:\> mingw-get update
C:\> mingw-get install mingw-get
Alternatively, any previous installation of mingw-get may be upgraded by
simply performing a new first-time installation, overwriting the
previously installed version; (this is the only option available, if the
original installation predates mingw-get-0.1-mingw32-alpha-3).
$Document: readme.txt $: end of file
Source: readme.txt, updated 2012-04-25