Release Notes
=============

$Id: NEWS.in,v 4dd61fadf715 2013/10/04 11:03:38 keithmarshall $

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.6.2-mingw32-beta-20131004-1
---------------------------------------

Release date: 2013-10-04

This is a further bug fix release; it addresses the following issues:--

- MinGW-Feature #2036 partially implemented:  profile.xml  now  provides
  for  separate  assignment  of  preferences for each of the CLI and GUI
  clients.  Users are advised to review the changes which have been made
  in  the  distributed  copy  of  defaults.xml,  and to incorporate such
  adjustments  as  they  see  fit,  into  their  own  local  copies   of
  profile.xml;  (alternatively,  those  who don't care to maintain their
  own copy of  profile.xml  should  replace  any  pre-existing  copy  of
  profile.xml with a copy of the distributed defaults.xml).

- MinGW-Bug #2028   partially   resolved:   affiliation   of  individual
  component packages with any package group is now supported;  also  the
  issue  of  only the first affiliation for each package being honoured,
  when displaying the package list, has been corrected.

- MinGW-Bug #2051 fixed: successful  removal  of  meta-packages  is  now
  correctly recorded when updating the GUI's package list display.

- MinGW-Bug #2052  fixed:  the  LUA_PATH  environment  variable  is  now
  correctly specified, for both CLI and GUI clients.

- MinGW-Bug #2054 fixed: pre-remove scripts calling the unlink.js helper
  to  remove  program  shortcuts are now assured that the reference path
  specified with the '--if-linked' attribute will  be  normalized  to  a
  canonical  file  system  form,  before  comparison  with the similarly
  normalized path name stored in any possibly matching shortcut.

- MinGW-Bug #2057  fixed:  mingw-get's  embedded  Lua  interpreter   now
  provides  its own built-in wsh.execute method, which allows invocation
  of the Windows Scripting Host, to run any JScript or VBScript  helper,
  without any need to open a redundant Windows Console.

- The  "Apply Changes" dialogue now assigns default focus to the "Apply"
  button, rather than to the list of packages to be removed; this avoids
  an ugly highlighting issue, when the dialogue is displayed.


mingw-get-0.6.1-mingw32-beta-20130910-1
---------------------------------------

Release date: 2013-09-10

This  is a bug fix release; it corrects a potential buffer overrun issue
within the diagnostic message handler for the GUI client, as  identified
by MinGW-Bug #2026.

In  addition  to  fixing  the  fundamental  buffer  overrun  issue,  the
following changes have been included:--

- Improved diagnosis of possible file  collisions,  resulting  from  the
  installation of packages with conflicting content.

- No  entry  is  now recorded in the installation manifest, for any file
  which is not extracted from its providing package archive,  when  such
  extraction  would  result in file collision; (this fixes the secondary
  issue noted on the ticket for MinGW #2026).

- Carriage returns are now handled appropriately, when  emitted  to  the
  GUI client's diagnostic message handler pseudo-terminal windows.

All  users of mingw-get-0.6.0 are advised to upgrade to this release, as
soon as possible.


mingw-get-0.6.0-mingw32-beta-20130904-1
---------------------------------------

Release date: 2013-09-04

This is the first release to incorporate a  working  prototype  for  the
mingw-get  GUI  client, together with the integrated mingw-get-setup.exe
tool.  With the advent of these additional  capabilities,  the  existing
mingw-get-inst.exe  wrapper becomes redundant, and is now deprecated; it
will be withdrawn after the next mingw-get release.

With this release of mingw-get-setup.exe,  first  time  installation  of
mingw-get  has  become  considerably simpler than previously; please see
the "Installation Instructions" for further information.

In addition to the addition of the GUI client, and the simplified  first
time installation procedure, this release incorporates the following new
user visible features:--

- New "preferences" section in profile.xml; this allows users to  adjust
  the  default behaviour for command line options such as "--start-menu"
  and "--desktop", to allow the automatic creation  of  shortcuts,  (for
  packages which provide them), without requiring explicit specification
  of the option on every mingw-get invocation.  See the comments  within
  defaults.xml, for configuration instructions.

- The  output  from  "mingw-get  --help"  has been revised, to provide a
  better explanation of the use  of  the  "version  selection"  feature,
  which  allows  users to force installation of a particular non-current
  version of any package.

- The "gui.exe" subsidiary program has been renamed as "guistub.exe"; it
  remains  in  place, with this new name, to furnish diagnostics, in the
  event that the user attempts to invoke the GUI from the command  line,
  when  no  GUI  support  has  been  installed.  Such GUI support is now
  provided by  "guimain.exe";  this  may  be  installed  optionally,  by
  choosing to install the "mingw-get-gui" package.

- Internal  "globbing"  of  command  line  arguments  is  now explicitly
  disabled; (any benefit of ever having supported  this  seems  dubious;
  however,  external  "globbing"  by  shells,  such  as MSYS' sh.exe and
  bash.exe is not, and cannot be, affected by this change).

- For users wishing to follow development at the source code level,  the
  master  source  code  repository has been relocated from CVS, to a new
  git  repository  at  git://git.code.sourceforge.net/p/mingw/mingw-get;
  please  refer to the INSTALL file, in the current source distribution,
  for further information on accessing this repository.


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.


mingw-get-0.3-mingw32-alpha-2.1
-------------------------------

Release date: 2011-07-29

This interim release corrects a critical defect in the version  matching
code  within  mingw-get's dependency resolver, which resulted in failure
of wild card tokens in a requirements specification to match  an  actual
package  version,  where  that version was qualified by a release status
descriptor, (such as "alpha", "beta", "pre", etc.)

Users may also note that the default package  archive  format  has  been
changed  from  tar.gz to tar.xz; (the alternative zip format archive for
the binary package is retained, for the convenience of first time  users
who lack any tar archive extraction capability).

This  release  is a mandatory prerequisite upgrade for all users who may
wish to install  and  deploy  the  upcoming  MinGW  GCC-4.6  pre-release
packages using mingw-get.


mingw-get-0.3-mingw32-alpha-2
-----------------------------

Release date: 2011-06-17

This  is  primarily  a  bug  fix  release; it also provides some limited
additional functional capability.  All users are recommended to  upgrade
to this release.

- Fixes  MinGW-Bug #3309438; this release now supports dynamic selection
  of all internally defined debugging trace options at run time, without
  prejudice to normal operation.

- Fixes  MinGW-Bug  #3313806;  CMS_KEYWORDS are no longer matched within
  the package name field of a canonical package tarname.  Thus, packages
  such as "msys-cvs" are now correctly identified again, while resolving
  dependencies.

- The "mingw-get update" operation  now  emits  "Update  catalogue  ..."
  messages  for  each catalogue processed, irrespective of the verbosity
  option setting.  This removes the requirement  to  specify  the  "-vv"
  option  to  avoid  protracted silent operation, which may have given a
  false impression that the previous release had hung  while  performing
  this operation.

- The  "--reinstall" option is now formally supported; this release will
  no longer behave as if this option is unconditionally specified; thus,
  the command syntax:

      $ mingw-get upgrade --reinstall <package-name>

  is  now required to force reinstallation of any package which has been
  recorded as already installed.


mingw-get-0.3-mingw32-alpha-1
-----------------------------

Release date: 2011-05-30

- Augmented  support  for  package  development  status  identification;
  packages  may  now  be classified as alpha < beta < pre < rc < stable,
  with implied development progression in this ranking order within  any
  release group identified by a common version number.

- Added  support  for  identification of snapshot releases, using common
  Content Management System (CMS) labels, (e.g. cvs, svn, hg,  git),  in
  place  of an alpha..stable classification.  Releases identified by any
  CMS label are deemed to pre-date any alpha..stable  release  with  the
  same version number.

- Implemented  protocol for processing command line options, (beyond the
  limited scope of the "--help" and "--version" options, each  of  which
  causes immediate program termination after interpretation).

- Reduced  verbosity of progress reports; implemented "--verbose" ("-v")
  option, (with levels from 0..3), to restore it.

- Added debug level support for conditional feature  tracing.   Features
  to be traced may now be selected by the user, at run time, by means of
  a new "--trace" option; (however, the availability of this option, and
  the range features which may be traced is selected at compile time).

  It  is  anticipated that this "--trace" facility will be supported for
  all future "alpha" and "beta" releases, but  not  for  any  officially
  distributed "pre", "rc" or "stable" release.


mingw-get-0.2-mingw32-alpha-4
-----------------------------

Release date: 2011-05-14

- This is yet another bug-fix release; it addresses the issue identified
  in MinGW-Bug 3295526, so ensuring that mingw-get always removes  files
  it  has  installed,  regardless  of  any  read-only attribute setting,
  (provided the user is sufficiently privileged).

- It also  addresses  the  issue  identified  in  MinGW-Bug 3297660,  so
  ensuring  that  packages  are  not erroneously reported as "installed"
  following a failed download, and that  packages  previously  installed
  are  not  removed during upgrade, when the replacement version has not
  been successfully downloaded.

- This release also incorporates additional code to  aggressively  retry
  failed  internet  requests, when attempting to download packages.  The
  release has been compiled with internet  request  tracing  diagnostics
  enabled;  it  is  hoped  that  this  will permit users to provide more
  useful information when reporting download problems.


mingw-get-0.2-mingw32-alpha-3
-----------------------------

Release date: 2011-03-31

- Another bug fix release; this corrects a defect  whereby  attempts  to
  remove  files  or  directories  during  any "mingw-get remove ..."  or
  "mingw-get upgrade ..." operation  would  fail  (silently),  when  any
  macro  is  used in the sysroot specification, (such as the use of "%R"
  in the default specification).

- Also included in this release is a preliminary attempt to  accommodate
  users  who  wish to run mingw-get when behind an authenticating proxy;
  (ref: MinGW-Bug 3147803).  Based on MinGW-Patch 31584530, this invokes
  Microsoft's  standard  pop-up  dialogue to solicit entry of the user's
  credentials, when requested by a proxy server.


mingw-get-0.2-mingw32-alpha-2
-----------------------------

Release date: 2011-03-15

- Fixes MinGW-Bug 3212246; this was a serious bug which,  under  certain
  specific  conditions,  could  result  in  a  package  name alias being
  matched to the wrong package, (e.g. autoconf2.5 resolved to match  the
  mingw32-autoconf2.1 package, instead of mingw32-autoconf2.5).


mingw-get-0.2-mingw32-alpha-1
-----------------------------

Release date: 2011-03-12

- Added  provisional  support  for  removal  of packages which have been
  previously installed.   This  is  fully  functional,  but  naive  with
  respect  to  dependencies;  it  will  aggressively  remove any package
  scheduled for removal, even if  this  may  break  another  (dependant)
  package.

  A  future  release will address this naivety, performing more rigorous
  dependency checking prior to progressing removals.  Meanwhile,  should
  it  be discovered that removal of a package has broken any dependency,
  then reinstallation  of  the  dependant  package  should  correct  the
  situation.

- The  upgrade  operation  now  performs  a  removal  of  the  currently
  installed version of each package, prior to installing a  replacement;
  this  ensures  that  obsolete  artifacts  from  earlier versions do no
  accumulate within the file system.

  As with the remove operation, this implementation does not check  that
  an  upgrade  is  compatible  with  dependant  packages;  this  will be
  addressed in a future release.

- Added preliminary support for the "list" operation.  This  provides  a
  rudimentary  mechanism  for  interrogating  the package catalogue, and
  displaying a list of available packages.

- Added preliminary support for  the  "show"  operation.   As  currently
  implemented,  this  behaves  as a synonym for "list"; as functionality
  develops, the behaviours of these two operators may become distinct in
  future releases.


mingw-get-0.1-mingw32-alpha-5.2
-------------------------------

Release date: 2011-02-26

- This  is  a  further bug-fix release.  It provides a work-around for a
  defect in the console I/O handling of MSYS mintty and MSYS rxvt, which
  causes  the  stderr  stream  to  appear to be inappropriately buffered
  within  either  of  these  terminal  emulators.   As  such,  it  is  a
  recommended  upgrade for users of either of these emulators; it offers
  no tangible benefit to other users.


mingw-get-0.1-mingw32-alpha-5.1
-------------------------------

Release date: 2011-02-10

- This is a  bug-fix  release  to  correct  a  critical  defect  in  the
  resolution  of dependencies, when performing an upgrade operation.  It
  also provides more meaningful diagnostics when  mingw-get  is  invoked
  without  arguments,  and  corrects  some  omissions  from  the  source
  tarball.


mingw-get-0.1-mingw32-alpha-5
-----------------------------

Release date: 2010-10-29

- Improved self-upgrade support; it incorporates a work around to  avoid
  a   potential  race  condition  in  mingw-get-inst;  (c.f.  MinGW  bug
  3075616); mingw-get.exe and mingw-get-0.dll are renamed, (to move them
  out  of  the  way),  only  when  performing an explicit upgrade of the
  mingw-get-bin package itself.


mingw-get-0.1-mingw32-alpha-4
-----------------------------

Release date: 2010-09-10

- Fixes a bug in  the  earlier  self-upgrade  functionality,  where  any
  runtime error "deleted" mingw-get.  (mingw-get and its support file(s)
  were  actually  only  renamed,  but  recovery  was  difficult).   Now,
  "ordinary"   errors   such  as  bad  command  line  arguments,  failed
  downloads, missing manifests,  etc,  will  not  cause  this  behavior.
  However,  a  catastrophic  operating  system error may prevent the new
  auto-recovery code from executing, leaving mingw-get in its  "deleted"
  (e.g. renamed) state.  If this occurs, simply do the following:

      $ cd /mingw
      $ mv bin/mingw-get.exe~ bin/mingw-get.exe
      $ mv libexec/mingw-get/mingw-get-0.dll~ \
           libexec/mingw-get/mingw-get-0.dll

- Add --help|-h option


mingw-get-0.1-mingw32-alpha-3
-----------------------------

Release date: 2010-08-30

- There  is no profile.xml file shipped with this release; users who are
  installing for the  first  time  are  advised  to  copy  the  supplied
  var/lib/mingw-get/data/defaults.xml  configuration  file  prototype to
  var/lib/mingw-get/data/profile.xml, which may then  be  customised  as
  required;  (if  no  customisation  is  required, mingw-get can use the
  defaults.xml file directly, but will warn that  profile.xml  does  not
  exist).

- Within  defaults.xml,  the  %R  macro has been formally adopted as the
  mechanism for specifying the installation paths for both MinGW and for
  MSYS;  this  binds  the  default installation paths for both MinGW and
  MSYS to the installation directory  of  mingw-get  itself,  since  the
  absolute path to mingw-get.exe is identified as:

      %R\bin\mingw-get.exe

  with  default base directory paths being defined for each of MinGW and
  MSYS respectively as:

      %R\
      %R\msys\1.0\

  This arrangement makes it possible for users  to  choose  installation
  locations  for  both  MinGW  and  MSYS, simply by making the choice of
  where to install mingw-get, without any further need to create, or  to
  modify  profile.xml,  (although,  to  avoid  warnings  about a missing
  profile.xml, users may prefer to copy or rename defaults.xml).  As for
  previous  releases,  the  recommended  directory  for  installation is
  C:\MinGW\, and this should not be changed without pressing reason;  in
  any  event,  users  who insist on changing it should be aware that, if
  they choose any installation directory which includes white  space  in
  its absolute path name, their installation may not work correctly, and
  such installations will not be supported by the MinGW Project.

- This release of mingw-get  incorporates  necessary  infrastructure  to
  support  future  upgrades  to  itself,  using its own internal upgrade
  facility.  This is the  first  release  to  support  this  capability;
  however,  the  effect  will not become apparent until upgrading to the
  next release.


mingw-get-0.1-mingw32-alpha-2
-----------------------------

Release date: 2010-05-17

- The var/lib/mingw-get/data/profile.xml file is no longer  included  in
  the  distribution tarball, (or zipfile); instead, a prototype for this
  file is provided as var/lib/mingw-get/data/defaults.xml

- The repository section  of  profile.xml  may  now  omit  any  specific
  reference  to  a  named  package-list catalogue, allowing mingw-get to
  interrogate a default catalogue on the  repository  host.   Users  who
  have  previously  installed  a  modified  profile.xml  are  advised to
  incorporate changes to the  repository  definition  from  defaults.xml
  into their profile.xml

- Users  who do not wish to provide a customised profile.xml are advised
  to copy or rename the provided defaults.xml file to profile.xml;  this
  remains  the  preferred name for the configuration file, and mingw-get
  will look for it first.  If it cannot be found, mingw-get will issue a
  warning, before looking for defaults.xml as an alternative.

- The structure of the repository catalogue has changed, to more readily
  accommodate  dynamic   incremental   distribution   updates,   without
  requiring  a  corresponding  update  to  mingw-get itself.  While this
  affects package maintainers  more  than  end  users,  such  users  are
  advised to perform a regular `mingw-get update', at intervals of a few
  weeks, to capture catalogue updates.

- As a consequence of the preceding change, the list of  packages  known
  to mingw-get is no longer restricted, as it was previously; additional
  or more up-to-date packages may become available from time to time, as
  individual  package  maintainers  add the appropriate manifests to the
  online repository catalogue; use `mingw-get update'  to  capture  such
  new and updated packages.

At  the  time of this release, the packages recorded in the distribution
manifest remain as for the alpha-1 release.  With the improved  handling
of  manifests,  additional  (and more up-to-date) packages will be added
soon after this release, and will become immediately available to users,
on running `mingw-get update'.


mingw-get-0.1-mingw32-alpha-1
-----------------------------

Release date: 2010-02-16

This  is the first alpha release of the next generation MinGW installer,
mingw-get; it provides a more readily extensible, and more  configurable
alternative  to  the existing MinGW-5.1.x series of NSIS installers, for
installing MinGW packages.

$RCSfile: NEWS.in,v $: end of file
