OSDN Git Service

d8cfc0c0ea294c6961c087522f514bd9e6e09e37
[mingw/mingw-get.git] / ChangeLog
1 2012-09-14  Keith Marshall  <keithmarshall@users.sourceforge.net>
2
3         Be case agnostic when matching shortcut targets.
4
5         * scripts/libexec/unlink.js [ref.TargetPath == chklink]: Apply
6         toLowerCase() on both sides of the comparison.
7
8 2012-09-12  Keith Marshall  <keithmarshall@users.sourceforge.net>
9
10         Note relocation of m4 when packaging source distribution.
11
12         * Makefile.in (SRCDIST_SUBDIRS): Refer to build-aux/m4, not m4.
13
14 2012-09-10  Keith Marshall  <keithmarshall@users.sourceforge.net>
15
16         Move guimain.cpp out of the way.
17
18         * src/guimain.cpp: Rename file as...
19         * src/guistub.cpp: ...this; we want to keep current features for now,
20         but to use the guimain.cpp name for main GUI application development.
21         * Makefile.in: Adjust references accordingly.
22
23 2012-09-09  Keith Marshall  <keithmarshall@users.sourceforge.net>
24
25         Fix typo, and update licensing terms for embedded getopt.c
26
27         * src/getopt.c: Incorporate MIT/X style licence; update copyright
28         notice, to reflect chronology of publication; correct degenerate RCS
29         keyword usage in EOF marker comment.
30
31 2012-09-03  Keith Marshall  <keithmarshall@users.sourceforge.net>
32
33         Correct omission from copyright notice.
34
35         * src/pkgkeys.c: Add year 2012, to reflect 2012-09-02 update.
36
37 2012-09-02  Keith Marshall  <keithmarshall@users.sourceforge.net>
38
39         Redefine paragraph_key with project global scope.
40
41         * src/pkgkeys.h (paragraph_key): Declare it.
42         * src/pkgkeys.c (paragraph_key): Define it.
43
44         * src/pkgshow.cpp (pkgDirectoryViewer::EmitDescription): Delete
45         function local definition; use global definition instead.
46
47 2012-09-02  Keith Marshall  <keithmarshall@users.sourceforge.net>
48
49         Correct defect introduced by 2012-08-03 commit.
50
51         * src/approot.c (AppPathNameW): Add omitted 'else', so that tail
52         pointer isn't moved after the APPROOT prefix is truncated.
53
54 2012-09-02  Keith Marshall  <keithmarshall@users.sourceforge.net>
55
56         Remap Mercurial subrepository reference via local hg-git clone.
57
58         * .hgsub (build-aux): Point to ../build-aux; this must be a locally
59         hosted hg clone of the git origin repository, and it must pre-exist as
60         a sibling of any created hg clone of the mingw-get repository.
61
62         * .hgsubstate: New file, automatically generated by Mercurial.
63
64 2012-08-31  Keith Marshall  <keithmarshall@users.sourceforge.net>
65
66         Add Mercurial subrepository reference for build-aux.
67
68         * .hgsub: New file.
69
70 2012-08-03  Keith Marshall  <keithmarshall@users.sourceforge.net>
71
72         More code refactoring, to facilitate GUI implementation.
73
74         * src/clistub.c (AppPathNameW): Factor out; relocate to...
75         * src/approot.c: ...this new file; it reproduces the original
76         implementation, modified to also consider any "libexec" directory in
77         the executable path as the first child of the APPROOT prefix.  Note
78         also, that no longer terminates APPROOT with a trailing backslash.
79
80         * src/approot.h: New file; it trivially declares the prototype for...
81         (AppPathNameW): ...this relocated extern "C" function.
82
83         * src/clistub.c (main): Adapt usage of AppPathNameW(), to reinstate
84         trailing backslash on assignment to APPROOT environment variable.
85
86         * Makefile.in (CLI_EXE_OBJECTS): New macro; define it as the original
87         set of prerequisites, with the addition of approot.OBJEXT, for...
88         (mingw-get.EXEEXT): ...this; use it.
89
90         * src/rites.c: Add comment regarding APPROOT usage.
91
92 2012-08-02  Earnie Boyd  <earnie@users.sourceforge.net>
93
94         Find missing.m4 in build-aux/m4 directory.
95
96         * aclocal.m4: Change path  m4/missing.m4 to build-aux/m4/missing.m4.
97
98 2012-07-31  Earnie Boyd  <earnie@users.sourceforge.net>
99
100         Add build-aux as a submodule.
101         Move .cvsignore to .gitignore.
102
103         * .gitmodules: New file.
104         * build-aux: New submodule directory.
105         * .cvsignore: Remove.
106         * .gitignore: New file.
107
108 2012-07-13  Keith Marshall  <keithmarshall@users.sourceforge.net>
109
110         Disable globbing of command line arguments.
111
112         * src/clistub.c (_CRT_glob): Define and initialise to zero; we don't
113         need globbing, and it may cause case transliteration of case-sensitive
114         action keywords, when a file system entity with a case-insensitively
115         matching name exists.
116
117 2012-06-02  Keith Marshall  <keithmarshall@users.sourceforge.net>
118
119         Refactor API to facilitate implementation of GUI ListView hooks.
120
121         * src/pkgkeys.h (title_key, description_key): Declare them.
122         * src/pkgkeys.c (title_key, description_key): Define them; relocate...
123         * src/pkgshow.cpp (pkgDirectoryViewer::EmitDescription): ...from here.
124         (pkgXmlDocument::CalalogueAllPackages): New public method; factor...
125         (pkgXmlDocument::DisplayPackageInfo): ...from here, whence use it.
126         (pkgDirectoryViewerEngine::EnumerateComponents): New private method;
127         implement as a concrete method of this abstract base class; factor...
128         (pkgDirectoryViewer::Dispatch): ...from original inline implementation
129         within this method of the concrete derived class, whence use it.
130         (pkgDirectoryViewerEngine, pkgDirectory): Factor class declarations...
131         * src/pkglist.h: ...into this new header file; include it.
132
133         * src/pkgbase.h (pkgDirectory): Add forward class declaration.
134         (pkgXmlDocument::CatalogueAllPackages): Declare it.
135
136 2012-05-02  Keith Marshall  <keithmarshall@users.sourceforge.net>
137
138         Update help text to document package version selection capability.
139
140         * src/clistub.c (help_text): Add description of command line syntax
141         which may be used to specify an alternative to the default package
142         version selection, for install and upgrade actions.
143
144 2012-05-01  Keith Marshall  <keithmarshall@users.sourceforge.net>
145
146         Support options set by preferences assigned within profile.xml
147
148         * xml/profile.xml (preferences): New element; add defaults.
149
150         * src/pkgopts.h (OPTION_ASSIGNED_FLAGS, OPTION_DESKTOP_ARGS):
151         (OPTION_START_MENU_ARGS): New enumerated constants; define them.
152         (OPTION_DESKTOP, OPTION_START_MENU): New manifest constants.
153         (OPTION_ASSIGNED, mark_option_as_set): New macros; define them.
154         (pkgOpts::GetValue, pkgOpts::GetString): Restrict look-up index to
155         least significant 12-bits of full-range index value.
156         (pkgOpts::IsSet): New inline method; implement it.
157
158         * src/clistub.c (main): Reimplement --desktop and --start-menu
159         options; each now becomes an OPTION_GENERIC optarg string store.
160         (set_script_hook): Function no longer used; delete it; delegate to...
161         * src/pkgbase.h (pkgXmlDocument::EstablishPreferences): ...this new
162         method; declare it, providing its implementation in...
163         * src/pkgopts.cpp: ...this new file; invoke it...
164         * src/climain.cpp (climain): ...here.
165
166         * Makefile.in (CORE_DLL_OBJECTS): Add pkgopts.$OBJEXT
167
168 2012-04-30  Keith Marshall  <keithmarshall@users.sourceforge.net>
169
170         Correct sequence of installation/removal progress reporting.
171
172         * src/pkgunst.cpp (pkgRemove): Delay output of "removing package ..."
173         message, until after pre-remove hooks have run; this ensures that any
174         output from the pre-remove hook scripts appears in correct sequence.
175
176         * src/pkginst.cpp (pkgInstall): Likewise, for "installing package ..."
177         message, in relation to pre-install hooks.
178
179 2012-04-26  Keith Marshall  <keithmarshall@users.sourceforge.net>
180
181         mingw-get-0.5-beta-20120426-1 released.
182
183         * configure.ac (AC_INIT): Version number updated.
184         * srcdist-doc/NEWS.in: Updated; bug-fix notifications added.
185         * All files (r0-5-beta-20120426-1): Tag assigned.
186
187 2012-04-25  Keith Marshall  <keithmarshall@users.sourceforge.net>
188
189         Interim work-around for MinGW-Bug #3520864.
190
191         * src/pkgdeps.cpp (pkgXmlDocument::ResolveDependencies):
192         [DEBUG_TRACE_DEPENDENCIES]: Add request flags to messages reporting
193         the scheduling of installation activities.
194
195         * src/pkgexec.cpp (pkgXmlDocument::Schedule): Add temporary diagnostic
196         hooks to confirm request flags; bracket them with #if 0 ... #endif.
197         [ACTION_PRIMARY && pre-scheduled request]: Don't trash request flags
198         when updating the pre-existing action item data.
199
200 2012-04-23  Keith Marshall  <keithmarshall@users.sourceforge.net>
201
202         Fix MinGW-Bug #3520488
203
204         * src/pkgexec.cpp (action_code): Check for, and reject NULL pointer
205         passed as action request string; also reject ambiguous abbreviations.
206
207         * src/climain.cpp (climain): Discriminate between NULL pointer and
208         other forms of invalid action keyword matching failures.
209
210 2012-04-16  Keith Marshall  <keithmarshall@users.sourceforge.net>
211
212         mingw-get-0.5-beta-20120416-1 released.
213
214         * configure.ac (AC_INIT): Version number updated.
215         (YEARS_OF_ISSUE): 2012 added.
216
217         * srcdist-doc/NEWS.in: Updated; release notes added.
218         * All files (r0-5-beta-20120416-1): Tag assigned.
219
220 2012-04-16  Keith Marshall  <keithmarshall@users.sourceforge.net>
221
222         Assign icon to temporary GUI executable file.
223
224         * icons/pkgicon.ico: New file, shamelessly copied from synaptic.
225
226         * configure.ac: Add identification for windres; propagate it to...
227         * Makefile.in: ...here; use it to compile object from icon files...
228         (srcdir/icons) [%.ico]: ...from this new vpath location.
229         (gui.exe): Link to compiled icon's object file.
230         (SRCDIST_SUBDIRS): Add icons directory.
231
232 2012-04-15  Keith Marshall  <keithmarshall@users.sourceforge.net>
233
234         Ensure that package removal requests are correctly scheduled.
235
236         * src/pkgdeps.cpp (pkgXmlDocument::Schedule) [ACTION_REMOVE]: Schedule
237         as a distinct case, when the installed version is not the most recent
238         available release; consideration of this distinct case was previously
239         erroneously overlooked.
240
241 2012-04-15  Keith Marshall  <keithmarshall@users.sourceforge.net>
242
243         Correct scheduling of new prerequisites when upgrading.
244
245         * src/pkgdeps.cpp (pkgXmlDocument::ResolveDependencies):
246         [ACTION_UPGRADE && ACTION_PRIMARY]: Don't exclude scheduling for this
247         case of a prerequisite with no previously installed version; it may be
248         a delegated primary requirement of a meta-package.
249
250 2012-04-15  Keith Marshall  <keithmarshall@users.sourceforge.net>
251
252         Don't require subsystem within user specified version bounds.
253
254         * src/pkgdeps.cpp (pkgActionItem::ApplyBounds): Automatically consider
255         "*" wild-card matches for subsystem, if user doesn't specify it.
256
257 2012-04-09  Charles Wilson  <mingw@cwilson.fastmail.fm>
258
259         Fix missing include.
260
261         * src/pkgdeps.cpp (pkgopts.h): Include unconditionally; do not rely...
262         (debug.h) [DEBUG_TRACE_DYNAMIC]: ...on this, for indirect inclusion.
263
264 2012-04-07  Keith Marshall  <keithmarshall@users.sourceforge.net>
265
266         Correct a srcdist package construction defect.
267
268         * Makefile.in (srcdist) [for SRCDIST_SUBDIRS]: Use...
269         (mkinstalldirs): ...this, to create package image directories.
270
271 2012-04-06  Keith Marshall  <keithmarshall@users.sourceforge.net>
272
273         Add scripting hooks to support creation of MS-Windows shortcuts.
274
275         * src/clistub.c (progname): New static variable with file scope; it
276         replaces former automatic variable, of same name, in main() function.
277         (set_script_hook): New static function; implement it, and call it...
278         (main) [--desktop, --start-menu]: ...from here, to interpret these new
279         command line options; they are propagated to scripts via...
280         (MINGW_GET_DESKTOP_HOOK, MINGW_GET_START_MENU_HOOK): ...these new
281         internally assigned environment variables.
282         (help_text): Document --desktop and --start-menu.
283
284         * scripts/libexec/setup.lua scripts/libexec/wsh.lua: New lua module
285         files; they implement a lua scripting API; they delegate requests to
286         the Windows Scripting Host, via either of this pair of...
287         * scripts/libexec/shlink.js: ...new script to create shortcuts, or...
288         * scripts/libexec/unlink.js: ...its complement, to remove them.
289         * Makefile.in (SRCDIST_SUBDIRS): Integrate them; enumerate them in...
290         (scripts_srcdir, LIBEXEC_SCRIPTS): ...these new macros; use to...
291         (install): ...install them.
292
293 2012-04-06  Keith Marshall  <keithmarshall@users.sourceforge.net>
294
295         Initialise $LUA_PATH to locate mingw-get specific scripts.
296
297         * src/pkgexec.cpp (lua_path_init): New static inline function.
298         (pkgXmlNode::DispatchScript): Call it on first time invocation, per...
299         [lua_path_setup == false]: ...this static function local variable.
300
301 2012-04-01  Keith Marshall  <keithmarshall@users.sourceforge.net>
302
303         Support installation of releases other than latest available.
304
305         * src/pkgbase.h (pkgActionItem::ApplyBounds): New method; declare it.
306
307         * src/pkgdeps.cpp (pkgActionItem::ApplyBounds): Implement it.
308         (pkgXmlDocument::Schedule): Use it to interpret user specified version
309         bounds, and apply them to scheduled action items.  Having used...
310         (get_version_bounds): ...this new static inline function...
311         ...to acquire any user specified version bounds, check that they can
312         be honoured, before scheduling any action; delegate diagnostics to...
313         (dmh_notify_no_match): ...this new local helper function, to report
314         when they can't, and to indicate viable alternatives.
315
316 2012-03-26  Keith Marshall  <keithmarshall@users.sourceforge.net>
317
318         Rework previously inadequate solution for MinGW-Bug #3424406
319
320         * src/pkgtask.h: Update copyright notice for current year.
321         (ACTION_MAY_SELECT): New manifest constant for use as flag; define it.
322         * src/pkgexec.cpp (pkgActionItem::SelectIfMostRecentFit): Assign it.
323
324         * src/pkgdeps.cpp (STATIC_INLINE): New macro; define it.
325         (ACTION_RECURSIVE_REINSTALL, ACTION_RECURSIVE_UPGRADE):
326         (ACTION_RECURSIVE_REPLACE): New action code constants; define them.
327         (with_flags): Original macro deleted; replace it with...
328         (with_request_flags): ...this new static inline function.
329         (if_noref, if_match, if_alias, with_download, promote): New static
330         inline functions; they replace original macros of the same names.
331         (is_recursive_action): Function no longer used; delete it.
332         (action_class): New static inline function; implement and use it...
333         (pkgXmlDocument::ResolveDependencies): ...here, to identify scheduling
334         requirements for packages which are already installed; depends on...
335         (request_mode): ...this new automatic variable; it augments and...
336         (recursive_mode): ...replaces this one; rename it accordingly.
337         (viable): Automatic variable no longer used; delete it.
338         [DEBUG_REQUEST & DEBUG_TRACE_DEPENDENCIES]: Emit notification for
339         scheduled installation.
340         (pkgXmlDocument::Schedule): Add an implied...
341         (ACTION_REMOVE): ...when scheduling a reinstallation.
342
343 2012-03-13  Keith Marshall  <keithmarshall@users.sourceforge.net>
344
345         Address reinstallation issues per MinGW-Bugs #3416013 and #3424406
346
347         * src/pkgexec.cpp (reinstall_action_scheduled): New inline function.
348         (pkgActionItem::Execute): Use it to identify cases where...
349         [--reinstall]: ...implicit package removal is required, and also to
350         facilitate improved progress reporting in such cases.
351
352         * src/pkgdeps.cpp (is_recursive_action): New inline function.
353         (pkgXmlDocument::ResolveDependencies): Use it in tandem with...
354         (recursive_mode): ...this new automatic variable, so as to handle...
355         [meta-package dependency]: ...implicit recursion, to extend the scope
356         of the current action to the first level of non-meta dependency.
357         [install --reinstall]: ...reinstall original version of nominated
358         package, ignoring any available upgrade; extend scope of operation...
359         [install --reinstall --recursive]: ...to all prerequisite packages.
360         [upgrade --reinstall]: ...upgrade nominated package if possible; if no
361         upgrade available, reinstall current version; extend scope...
362         [upgrade --reinstall --recursive]: ...to all prerequisites.
363         (pkgXmlDocument::Schedule): Partially revert 2012-03-05 change;
364         reimplement selectively; never promote...
365         [install, install --reinstall]: ...these operations to become...
366         [upgrade]: ...this, even if available; issue diagnostic instead.
367
368 2012-03-12  Keith Marshall  <keithmarshall@users.sourceforge.net>
369
370         Rationalise implementation and usage of --all-related option.
371
372         * src/pkgopts.h: Update copyright notice; add year 2012.
373         (OPTION_RECURSIVE, OPTION_ALL_RELATED): New constants; define them.
374         (pkgOpts::SetFlags): New method; declare and implement it inline.
375
376         * src/clistub.c: Update copyright notice; add year 2012.
377         (options) [recursive, all-related]: Redefine in terms of...
378         (OPTION_RECURSIVE, OPTION_ALL_RELATED): ...these.
379         (help_text): Update appropriately.
380
381         * src/climain.cpp: Update copyright notice; add year 2012.
382         (climain) [all-related]: Associate its use exclusively with...
383         (source, licence): ...these package processing operations; use...
384         (pkgOptions::SetFlags): ...this, to propagate its effect.
385
386 2012-03-12  Keith Marshall  <keithmarshall@users.sourceforge.net>
387
388         Don't report failed downloads in respect of virtual packages.
389
390         * src/pkginet.cpp (pkgActionItem::DownloadArchiveFiles): Clear...
391         [ACTION_DOWNLOAD]: ...this status flag for any package identified as
392         a meta-package; this corrects a further regression introduced with the
393         2011-11-09 update, whereby pending download requests for such virtual
394         packages were not cancelled, resulting in failure to install due to
395         failed downloads, when no download is actually required.
396
397 2012-03-05  Keith Marshall  <keithmarshall@users.sourceforge.net>
398
399         Don't suppress implied downloads for top-level actions.
400
401         * src/pkgdeps.cpp: Update copyright notice for new year.
402         (pkgXmlDocument::Schedule) [!OPTION_PRINT_URIS]: Ensure that...
403         [ACTION_DOWNLOAD]: ...this is enabled, when scheduling an install or
404         an upgrade action for a package specified as a command line argument;
405         this corrects a regression introduced on 2011-11-09, which resulted in
406         ACTION_DOWNLOAD being enabled only for second tier dependent actions.
407
408 2012-02-20  Keith Marshall  <keithmarshall@users.sourceforge.net>
409
410         Copyright notice updates.
411
412         * Makefile.in: Add 2012 as year of republication.
413         * src/pkgbase.h src/sysroot.cpp src/pkgexec.cpp: Likewise.
414         * src/rites.c src/pkginst.cpp src/pkgunst.cpp: Likewise.
415
416 2012-02-20  Keith Marshall  <keithmarshall@users.sourceforge.net>
417
418         Fix ill-advised optimisation in $APPROOT environment lookup.
419
420         * src/rites.c (approot_path): Don't save result of getenv() lookup
421         across calls; the environment may have been moved in the interim,
422         making the original result invalid on any subsequent call.  Also,
423         prefer MS-Windows style (with backslashes) for default.
424         (pkgLastRites): Report full path name for lastrites.exe, on execl()
425         failure, rather than only the path relative to $APPROOT.
426
427 2012-02-20  Keith Marshall  <keithmarshall@users.sourceforge.net>
428
429         Propagate sysroot path settings to scripts via the environment.
430
431         * src/pkgbase.h (PKG_PUTENV_FLAGS_MASK): New constant; it maps...
432         (PKG_PUTENV_DIRSEP_MSW, PKG_PUTENV_DIRSEP_POSIX): ...these flags...
433         (PKG_PUTENV_SCAN_VARNAME, PKG_PUTENV_NAME_TOUPPER): ...and these;
434         they are used to specify optional behavioural choices for...
435         (pkgPutEnv): ...this new function; declare it.
436
437         * src/sysroot.cpp (pkgPutEnv): Implement it.
438         (pkgXmlDocument::LoadSystemMap): Use it to add $SUBSYSTEM_SYSROOT path
439         specifications to the environment, for each named subsystem associated
440         with the active system map.
441
442         * src/pkgexec.cpp (pkgActionItem::Execute): Invoke pkgPutEnv() prior
443         to processing of each package install, upgrade, or remove action, so
444         as to update environment variable $SYSROOT to represent the sysroot
445         path for each package processed, during execution of script hooks.
446
447 2012-02-17  Keith Marshall  <keithmarshall@users.sourceforge.net>
448
449         Implement hooks to support lua scripting interface.
450
451         * Makefile.in (LIBS): Add -llua.
452
453         * src/pkgbase.h (pkgXmlNode::InvokeScript): New method; declare it
454         as private, and provide overloaded public inline API implementation.
455         (pkgXmlNode::DispatchScript): New private method; declare it.
456
457         * src/pkgexec.cpp (pkgXmlNode::InvokeScript): Implement it.
458         (pkgXmlNode::DispatchScript): Likewise; it directs InvokeScript to...
459         (pkgInvokeScript): ...this new static function; implement it.
460
461         * src/pkginst.cpp (pkgInstall): Call InvokeScript as appropriate.
462         * src/pkgunst.cpp (pkgRemove): Likewise.
463
464 2011-11-24  Keith Marshall  <keithmarshall@users.sourceforge.net>
465
466         Avoid implicit cast warnings; reported by Robert Hartmann.
467
468         * src/dmh.h (DMH_BEGIN_DIGEST): Explicitly cast to uint16_t.
469         (DMH_END_DIGEST): Likewise.
470
471 2011-11-09  Keith Marshall  <keithmarshall@users.sourceforge.net>
472
473         Avoid unnecessary downloads for already installed packages.
474
475         * src/pkginet.cpp (pkgActionItem::DownloadSingleArchive): Require
476         external scheduling of ACTION_DOWNLOAD; cancel the scheduled request
477         on completion, or when not required due to pre-existing local copy.
478
479         * src/climain.cpp (pkgActionItem::GetSourceArchive): Must always be
480         prepared to download the associated archive; enable ACTION_DOWNLOAD.
481
482         * src/pkgexec.cpp (pkgActionItem::Schedule) [OPTION_REINSTALL]:
483         May need to download the archive, even when the requested package was
484         previously installed; schedule ACTION_DOWNLOAD to enable this.
485
486         * src/pkgdeps.cpp (promote): Macro redefined in terms of...
487         (with_flags, with_download): ...these new macros; implement and...
488         (pkgXmlDocument::ResolveDependencies): ...use them to enable/schedule
489         ACTION_DOWNLOAD only when expected that it may be necessary.
490
491 2011-11-06  Keith Marshall  <keithmarshall@users.sourceforge.net>
492
493         Fix packaging anomalies for source and licence distributions.
494
495         * Makefile.in (licdist): Link README from ${CURDIR}, not from '..'.
496         (srcdist): Explicitly link pkginfo.c from ${CURDIR} to src/pkginfo,
497         rather than as implied prerequisite; this avoids a bogus attempt to
498         link srcdist-doc into src/pkginfo.
499
500 2011-11-06  Keith Marshall  <keithmarshall@users.sourceforge.net>
501
502         Bump version number for subsequent CVS snapshots.
503
504         * configure.ac (AC_INIT): Set version to 0.4-alpha-1.1cvs
505
506 2011-11-06  Keith Marshall  <keithmarshall@users.sourceforge.net>
507
508         mingw-get-0.4-mingw32-alpha-1 released.
509
510         * configure.ac (AC_INIT): Adjust version number.
511         * srcdist-doc/NEWS.in: Updated; document new features and bugs fixed.
512         * All files (r0-4-alpha-1): Tag assigned.
513
514 2011-11-04  Keith Marshall  <keithmarshall@users.sourceforge.net>
515
516         Don't upgrade installed DLL components to incompatible version.
517         Provide clearer diagnostics for failed requests on implied packages.
518
519         * src/pkgdeps.cpp (is_abi_compatible): New static inline function.
520         (pkgXmlDocument::ResolveDependencies) [is_installed]: Use it.
521         (pkgXmlDocument::ResolveDependencies) [DEBUG_TRACE_DEPENDENCIES]:
522         Clean up and improve diagnostic message content and formatting.
523         (pkgXmlDocument::Schedule) [(upgrade || remove) && ! installed]:
524         Downgrade diagnostic to WARNING, for implicitly specified component
525         packages; provide additional explanatory diagnostics.
526
527         * src/pkgspec.cpp (pkgSpecs::VersionComparator):
528         * src/pkgexec.cpp (pkgActionItem::SelectIfMostRecentFit):
529         [DEBUG_TRACE_DEPENDENCIES]: Eliminate diagnostic noise.
530
531 2011-10-11  Keith Marshall  <keithmarshall@users.sourceforge.net>
532
533         Fix --download-only vs. --reinstall conflict.
534
535         * src/pkgexec.cpp (pkgActionItem::Execute) [OPTION_DOWNLOAD_ONLY]:
536         Test for explicit inequality, rather than equality to zero; since the
537         2011-08-30 update, which made --download-only also imply --reinstall,
538         it will test as non-zero when --reinstall is specified, even though
539         --download-only is not.
540
541 2011-10-07  Keith Marshall  <keithmarshall@users.sourceforge.net>
542
543         Add support for non-specific upgrade of all installed packages.
544
545         * src/pkgbase.h (pkgXmlDocument::RescheduleInstalledPackages):
546         New public method; declare it.
547
548         * src/pkgdeps.cpp (pkgXmlDocument::RescheduleInstalledPackages):
549         Implement it.
550
551         * src/climain.cpp (climain) [ACTION_UPGRADE && argc < 2]: Invoke
552         pkgXmlDocument::RescheduleInstalledPackages() to schedule the upgrade
553         request for all packages currently registered as installed.
554
555 2011-10-06  Keith Marshall  <keithmarshall@users.sourceforge.net>
556
557         Implement "source" and "licence" operations.
558
559         * src/pkgopts.h (OPTION_ALL_DEPS): New option code; define it.
560         * src/clistub.c (main): Associate it with...
561         (all-related, recursive): ...these synonymous option names...
562         (options): ...defined within this local structured array.
563         (help_text): Document them; also document "source" and "licence" as
564         new operations which may be specified on the command line.
565
566         * src/pkgtask.h (action_source, action_licence): Enumerate them.
567         (ACTION_SOURCE, ACTION_LICENCE): Define their manifest values, and...
568         * src/pkgexec.cpp (action_name): ...associate with operation names.
569
570         * src/pkgbase.h (pkgActionItem::GetScheduledSourceArchives):
571         (pkgActionItem::GetSourceArchive, pkgXmlDocument::GetSourceArchive):
572         New public methods; declare them for external implementation.
573         (pkgXmlDocument::GetScheduledSourceArchives): New public method;
574         implement it as inline.
575
576         * src/climain.cpp (pkgProcessedArchives): New pointer to stack of...
577         (pkgArchiveNameList): ...this new locally defined class; implement it.
578         (pkgActionItem::GetSourceArchive, pkgXmlDocument::GetSourceArchive):
579         (pkgActionItem::GetScheduledSourceArchives): Implement them.
580         (climain): Add invocation hooks.
581
582 2011-10-04  Keith Marshall  <keithmarshall@users.sourceforge.net>
583
584         Establish mapping from release tarname to source tarname.
585
586         * src/pkgreqs.cpp (inherited_requirement): New inline function.
587         (requirement): Use it; adapt to propagate release archive format and
588         compression type fields, in addition to version fields, when resolving
589         "%" wildcard matches within the template for the resultant tarname.
590         (pkgAssociateName): New public function; implement it for use by...
591         * src/pkgname.cpp (pkgResolvedName): ...this new inline function.
592         (pkgXmlNode::SourceArchiveName): Use it; adapt to accept a category
593         selector, so it may resolve source or licence tarnames on demand.
594
595         * src/pkgbase.h (pkgXmlNode::SourceArchiveName): Modify declaration;
596         add category selector argument to support source/licence choice.
597
598 2011-10-02  Keith Marshall  <keithmarshall@users.sourceforge.net>
599
600         Facilitate downloads using diverse cache directories.
601
602         * src/pkgbase.h (pkgActionItem::DownloadSingleArchive): New private
603         method; declare it; it handles the download for a single named archive
604         file, and stores it in a specifed cache directory.
605
606         * src/pkginet.cpp (pkgActionItem::DownloadSingleArchive): Implement
607         it; factor its code from the original implementation within...
608         (pkgActionItem::DownloadArchiveFiles): ...this; adapt to use it.
609
610 2011-10-02  Keith Marshall  <keithmarshall@users.sourceforge.net>
611
612         Establish cache directory for source archive downloads.
613
614         * src/mkpath.h (pkgSourceArchivePath): New function; declare it.
615         * src/mkpath.c (pkgSourceArchivePath): Implement it.
616
617 2011-08-30  Keith Marshall  <keithmarshall@users.sourceforge.net>
618
619         Support archive extraction to arbitrary destination without install.
620
621         * src/pkgproc.h (pkgArchiveProcessor::ExtractFile): New virtual
622         helper method for use, as core helper, by derived classes; declare it.
623         (pkgArchiveProcessor::CreateExtractionDirectory): Likewise.
624         (pkgTarArchiveProcessor): Declare overloaded default constructor.
625         (pkgTarArchiveExtractor): New class definition; it is derived from
626         pkgTarArchiveProcessor.
627
628         * src/tarproc.cpp (pkgArchiveProcessor::ExtractFile): Implement it.
629         (pkgArchiveProcessor::CreateExtractionDirectory): Likewise.
630         (pkgTarArchiveExtractor): Implement constructor, together with...
631         (pkgTarArchiveExtractor::ProcessDirectory): ...this method, and also...
632         (pkgTarArchiveExtractor::ProcessDataStream): ...this one; these are
633         declared as abstract, in the pkgTarArchiveProcessor base class.
634         (pkgTarArchiveInstaller::ProcessDirectory): Simplify; it now delegates
635         directory creation to pkgArchiveProcessor::CreateExtractionDirectory.
636         (pkgTarArchiveInstaller::ProcessDataStream): Simplify; delegate file
637         handling to pkgArchiveProcessor::ExtractFile, as appropriate.
638
639 2011-08-30  Keith Marshall  <keithmarshall@users.sourceforge.net>
640
641         Make --download-only and --print-uris imply --reinstall.
642
643         * src/pkgopts.h (OPTION_PRINT_URIS): Adjust definition.
644         (OPTION_DNLOAD_ONLY, OPTION_DOWNLOAD_ONLY): Likewise.
645
646 2011-08-07  Keith Marshall  <keithmarshall@users.sourceforge.net>
647
648         Implement --download-only and --print-uris options.
649
650         * src/pkgopts.h (OPTION_DOWNLOAD_ONLY, OPTION_PRINT_URIS):
651         New manifest constants, identifying flag bits; define them.
652         (OPTION_DNLOAD_ONLY): Likewise; an alias for OPTION_DOWNLOAD_ONLY.
653
654         * src/pkgbase.h (pkgActionItem::PrintURI): New private method.
655         * src/pkginet.cpp: Implement it.
656
657         * src/clistub.c (options): Add "download-only" and "print-uris".
658         (help_text): Document them.
659         * src/pkgexec.cpp (pkgActionItem::Execute): Process them.
660
661 2011-07-29  Keith Marshall  <keithmarshall@users.sourceforge.net>
662
663         mingw-get-0.3-mingw32-alpha-2.1 released.
664
665         * configure.ac (AC_INIT): Adjust version number.
666         * srcdist-doc/NEWS.in: Updated; document bugs fixed.
667         * All files (r0-3-alpha-2-1): Tag assigned.
668
669 2011-07-29  Keith Marshall  <keithmarshall@users.sourceforge.net>
670
671         Adopt tar.xz as default package archive format.
672
673         * Makefile.in (TARZIP, TAREXT): New macros; define them.
674         (bindist, licdist, srcdist): Use them in place of hardcoded tar.gz
675         (maintainer-clean): Expunge tar files of any compression format.
676
677 2011-07-27  Keith Marshall  <keithmarshall@users.sourceforge.net>
678
679         Correct handling of release status in requirements specifications.
680
681         * src/debug.h (DEBUG_TRACE_DEPENDENCIES): New tracing hook; define it.
682         * src/pkgexec.cpp (pkgActionItem::SelectIfMostRecentFit): Use it; add
683         function entry/exit tracing report hooks.
684         * src/pkgdeps.cpp (pkgXmlDocument::ResolveDependencies): Likewise;
685         also add internal trace point reporting, which may also require...
686         (show_required): ...this new static inline DEBUG_INVOKED function.
687
688         * src/pkgreqs.cpp (requirement): Propagate release status and release
689         reference index fields from requirer, when package version requirement
690         is specified by a '%' token, and no explicit release status override
691         is included in the requirement specification.
692
693         * src/pkgspec.cpp (is_wildcard_spec): New static inline helper.
694         (pkgSpecs::VersionComparator): Use it to identify any package version
695         specification which may require the extension of a wildcard match, to
696         span the package version and release status fields; also add tracing
697         hooks, triggered on DEBUG_TRACE_DEPENDENCIES, to facilitate debugging.
698
699 2011-06-18  Keith Marshall  <keithmarshall@users.sourceforge.net>
700
701         Avoid accidental RCS keyword substitutions.
702
703         * Makefile.in (DOLLAR): New macro; define it.
704         (readme.txt, readme.txt.in): Use it, where unexpanded RCS Id keyword
705         matching is intended.
706
707 2011-06-18  Keith Marshall  <keithmarshall@users.sourceforge.net>
708
709         Mercurial support revisited.
710
711         * .cvsignore (.hgtags): Add to CVS untracked list.
712
713 2011-06-18  Keith Marshall  <keithmarshall@users.sourceforge.net>
714
715         Update readme.txt ID tag-line to track NEWS rather than README.
716
717         * Makefile.in (readme.txt.in): New rule; implement it.
718         (readme.txt.tag): Likewise; this implements the tag-line tracking.
719         (readme.txt): Rule redefined in terms of the preceding pair.
720
721 2011-06-17  Keith Marshall  <keithmarshall@users.sourceforge.net>
722
723         mingw-get-0.3-mingw32-alpha-2 released.
724
725         * configure.ac (AC_INIT): Adjust version number.
726         * srcdist-doc/NEWS.in: Updated; document new features and bugs fixed.
727         * All files (r0-3-alpha-2): Tag assigned.
728
729 2011-06-15  Keith Marshall  <keithmarshall@users.sourceforge.net>
730
731         Add internal documentation for --reinstall option.
732
733         * src/clistub.c (help_text): Add description for "--reinstall".
734
735 2011-06-14  Keith Marshall  <keithmarshall@users.sourceforge.net>
736
737         Support use of Mercurial within a CVS working copy.
738
739         * .cvsignore (.hg, .hgignore): Don't have CVS track these.
740
741 2011-06-13  Keith Marshall  <keithmarshall@users.sourceforge.net>
742
743         Implement --reinstall option.
744
745         * src/pkgopts.h (OPTION_REINSTALL): New macro; define it.
746         (OPTION_GENERIC, OPTION_SHIFT_MASK): Likewise.
747         (OPTION_EXTRA_FLAGS): New field; declare it.
748
749         * src/clistub.c (options): Add "reinstall".
750         (OPTION_GENERIC): Use it where appropriate; within its scope...
751         (OPTION_STORAGE_CLASS): Improve descriptive comments; add handling for
752         default case of flag type options requiring an alignment shift.
753
754         * src/pkgexec.cpp: Remove previous "always reinstall" kludge.
755         (pkgOptionSelected, PKG_OPTION_REINSTALL): Remove obsolete macros.
756         (pkgActionItem::Execute): Check for "upgrade" request on any package
757         which is already up to date; report this state, otherwise...
758         [OPTION_REINSTALL || ACTION_UPGRADE]: Mark package as "removed", to
759         avoid bail-out on "package already installed", when calling...
760         (pkgInstall): ...this.
761
762 2011-06-12  Keith Marshall  <keithmarshall@users.sourceforge.net>
763
764         Don't require -vv to report progress of update operation.
765
766         * src/pkgbind.cpp (pkgRepository::GetPackageList): Eliminate all
767         basename() calls; `dname' already tells us what it should return.
768         [update]: Report progress, irrespective of verbosity setting.
769
770 2011-06-11  Keith Marshall  <keithmarshall@users.sourceforge.net>
771
772         Fix MinGW-Bug #3313806.
773
774         * src/pkginfo/pkginfo.l (CMS_KEYWORDS): Do not match them within the
775         PACKAGE_NAME field; this avoids misinterpretation as a release status
776         qualifier when intended as part of the package name, as in msys-cvs.
777
778 2011-06-07  Keith Marshall  <keithmarshall@users.sourceforge.net>
779
780         Provisional correction for MinGW-Bug #3309438.
781
782         * src/debug.h [DEBUGLEVEL == 0]: Provide defaults for...
783         (DEBUG_ENABLED, DEBUG_REQUEST): ...these macros.
784
785         * src/tarproc.cpp (pkgTarArchiveInstaller::ProcessDirectory):
786         (pkgTarArchiveInstaller::ProcessDataStream): Use DEBUG_REQUEST to
787         enable runtime trace activation for previous compile time choices.
788
789 2011-05-30  Keith Marshall  <keithmarshall@users.sourceforge.net>
790
791         mingw-get-0.3-mingw32-alpha-1 released.
792
793         * configure.ac (AC_INIT): Adjust version number.
794         * srcdist-doc/NEWS.in: Updated; document new features.
795         * All files (r0-3-alpha-1): Tag assigned.
796
797 2011-05-30  Keith Marshall  <keithmarshall@users.sourceforge.net>
798
799         Support assignment of DEBUGLEVEL at configure time.
800
801         * configure.ac (DEBUGLEVEL): Declare as a precious variable, using
802         AC_ARG_VAR; also declare with AC_SUBST, to ensure it is initialised.
803
804         * Makefile.in (DEBUGLEVEL): Let AC_SUBST assign it.
805
806 2011-05-29  Keith Marshall  <keithmarshall@users.sourceforge.net>
807
808         Work around bugs in MinGW and GNU getopt_long_only() implementations.
809
810         * src/getopt.c: New file; this is a free-standing replacement for any
811         implementation provided by system libraries.  We will always use this
812         to ensure correct operation irrespective of system bugs; (different
813         bug manifestations have been identified in the stock MinGW and GNU
814         implementations).
815
816         * Makefile.in (mingw-get.EXEEXT): Use it.
817
818         * src/clistub.c (options): Remove redundant declaration of `-v' as a
819         long form option.
820
821 2011-05-29  Keith Marshall  <keithmarshall@users.sourceforge.net>
822
823         Implement user selection of traceable features at run-time.
824
825         * src.pkgopts.h (OPTION_VERBOSE_MAX): New macro; define it.
826
827         * src/debug.h (DEBUG_ENABLED): New macro; define it.
828         (DEBUG_REQUEST, DEBUG_REQUEST_FLAGS, DEBUG_TRACE_DYNAMIC): Likewise.
829
830         * src/clistub.c (main) [--trace]: Don't make it available unless...
831         [DEBUG_ENABLED(DEBUG_TRACE_DYNAMIC)]: ...this is set (at compile-time).
832         [--verbose]: Limit to OPTION_VERBOSE_MAX, using...
833         (atmost): ...this new macro; define it.
834         (options): Declare `-v' as both long and short form, pending bug fix
835         in MinGW's getopt_long_only() implementation.
836
837         * src/pkginet.cpp (pkgInternetAgent::OpenURL): Use DEBUG_REQUEST.
838         (pkgInternetLzmaStreamingAgent::TransferData): Likewise.
839         (pkgInternetStreamingAgent::TransferData): Likewise.
840         (pkgInternetStreamingAgent::Get): Likewise.
841
842         * src/pkgunst.cpp (pkgActionItem::SetAuthorities): Use DEBUG_REQUEST.
843         (pkg_rmdir, pkg_unlink): Likewise.
844
845         * src/sysroot.cpp (pkgXmlDocument::LoadSystemMap): Use DEBUG_REQUEST.
846
847 2011-05-21  Keith Marshall  <keithmarshall@users.sourceforge.net>
848
849         Implement protocol for processing global program options.
850
851         * src/pkgopts.h: New file.
852
853         * src/climain.cpp (cli_setopts): New function; implement it.
854         (pkgOptions): Likewise.
855
856         * src/clistub.c (xatoi): New function; implement it.
857         (cli_setargv): New inline helper function; implement it.
858         (main): Use it.  Also incorporate implementation of...
859         (parsed_options): New structure; it accommodates...
860         (verbose, trace): New options; interpret them, and...
861         (help_text): ...document them.
862
863         * src/pkgbind.cpp (pkgRepository::GetPackageList): Make catalogue
864         loading notifications and progress reports conditional on...
865         [OPTION_VERBOSE > 1]: ...this.
866
867 2011-05-18  Keith Marshall  <keithmarshall@users.sourceforge.net>
868
869         Augment known development status keywords and accept CMS labels.
870
871         * src/pkginfo/pkginfo.l (CMS_KEYWORDS): Define new provisional list;
872         add transitional state scanner rule and code to interpret them.
873         (STATUS_KEYWORDS): Add "pre" and "rc" to existing list; modify scanner
874         code to maintain consistency with CMS_KEYWORDS processing; also extend
875         this coding strategy to other rules.
876
877         * src/pkginfo/driver.c (spec): Strip initial '$' token from displayed
878         field values; (we expect it only for a CMS_KEYWORDS field value).
879
880         * src/pkgreqs.cpp (pkgSpecs::GetTarName): Remove any initial '$' token
881         from PACKAGE_RELEASE_STATUS field, when performing reverse of tarname
882         decomposition transformation.
883
884 2011-05-18  Keith Marshall  <keithmarshall@users.sourceforge.net>
885
886         Correct omission from 2011-02-18 commit.
887
888         * src/tarproc.cpp (Copyright Notice): Add 2011 as year of release.
889
890 2011-05-14  Keith Marshall  <keithmarshall@users.sourceforge.net>
891
892         mingw-get-0.2-mingw32-alpha-4 released.
893
894         * configure.ac (AC_INIT): Adjust version number.
895         * srcdist-doc/NEWS.in: Updated; add bug-fix/feature descriptions.
896         * All files (r0-2-alpha-4): Tag assigned.
897
898 2011-05-12  Keith Marshall  <keithmarshall@users.sourceforge.net>
899
900         Fix MinGW-Bug #3297660 (reported by Chris Sutcliffe).
901
902         * src/pkgbase.h (pkgActionItem::SetAuthorities): Return unsigned long.
903         (pkgActionItem::HasAttribute): New inline method; implement it.
904
905         * src/pkgtask.h (ACTION_DOWNLOAD, ACTION_DOWNLOAD_OK): New macros.
906
907         * src/pkginet.cpp (pkgActionItem::DownloadArchiveFiles):
908         [ACTION_DOWNLOAD]: Assert it at commencement of each package download;
909         clear it again, on successful download completion.
910
911         * src/pkginst.cpp (pkgtask.h): #include it.
912         (pkgInstall) [ACTION_DOWNLOAD]: Don't proceed with installation when
913         set; this indicates failed download; diagnose it.
914
915         * src/pkgunst.cpp (pkgRemove) [ACTION_DOWNLOAD && ACTION_UPGRADE]:
916         Don't proceed with pre-emptive removal when both set; this indicates
917         failed download of replacement package; diagnose it.
918
919 2011-05-12  Keith Marshall  <keithmarshall@users.sourceforge.net>
920
921         Fix MinGW-Bug #3295526 (reported by Charles Wilson).
922
923         * src/pkgunst.cpp (sys/stat.h): #include it; we need it for...
924         (pkg_unlink): ...chmod( file, S_IWRITE ), emulating `rm -f' semantics.
925
926 2011-05-12  Keith Marshall  <keithmarshall@users.sourceforge.net>
927
928         Diagnose and aggressively retry failed download connections.
929
930         * src/debug.h (DEBUG_TRACE_INTERNET_REQUESTS): New macro; define it.
931
932         * src/pkginet.cpp (debug.h): #include it.
933         (pkgDownloadMeter): New abstract class; declare it and implement its
934         default (non-abstract) data and methods; derive...
935         (pkgDownloadMeterTTY): ...this new class from it; implement it...
936         (pkgInternetStreamingAgent::Get): ...and instantiate it (naively for
937         now), as associated pkgDownloadMeter object; add tracing diagnostic.
938         (pkgInternetAgent::OpenURL): Don't inline it; move implementation out
939         of line; add retry loops to aggressively retry failed connections.
940         (pkgInternetAgent::QueryContentLength): New method; implement it.
941         (pkgInternetStreamingAgent::TransferData): Avoid Microsoft specific
942         data type `DWORD'; prefer equivalent standard `unsigned long'.  Add
943         tracing diagnostic.  Remove progress diagnostic; replace it with an
944         `Update' request to associated pkgDownloadMeter.
945         (pkgInternetLzmaStreamingAgent::GetRawData): Avoid `DWORD' data type.
946         (pkgInternetLzmaStreamingAgent::TransferData): Likewise; add tracing
947         diagnostic on failure.
948
949 2011-03-31  Keith Marshall  <keithmarshall@users.sourceforge.net>
950
951         mingw-get-0.2-mingw32-alpha-3 released.
952
953         * configure.ac (AC_INIT): Adjust version number.
954         * srcdist-doc/NEWS.in: Updated; add bug-fix description.
955         * All files (r0-2-alpha-3): Tag assigned.
956
957 2011-03-30  Keith Marshall  <keithmarshall@users.sourceforge.net>
958
959         Provisional handling for http proxy authentication.
960         (Adapted from patch by Scott Michel <pingbak@users.sourceforge.net>)
961         (ref: MinGW-Patch #3158453)
962
963         * src/pkginet.cpp: Several format/layout adjustments; add comments.
964         Eliminate several instances of Microsoft specific typedef nastiness.
965         (dmh_dialogue_context): New macro; kludge definition to support...
966         (pkgInternetAgent::OpenURL) [HTTP_STATUS_PROXY_AUTH_REQ]: Detect
967         and handle it.
968
969 2011-03-30  Keith Marshall  <keithmarshall@users.sourceforge.net>
970
971         Expand macros in path names for files and directories to be removed.
972
973         * src/pkgunst.cpp (pkgRemove): Format sysroot as a template, so...
974         (pkg_rmdir, pkg_unlink): ...are able to use mkpath() to construct the
975         full path name for each file or directory to be removed.
976
977 2011-03-29  Keith Marshall  <keithmarshall@users.sourceforge.net>
978
979         Correct defective activation logic for some debugging hooks.
980
981         * src/pkgunst.cpp (pkg_rmdir, pkg_unlink) [DEBUG_INVOKE_IF]:
982         (pkgActionItem::SetAuthorities) [DEBUG_INVOKE_IF]: Use bit-wise `&'
983         operator, not `&&', to evaluate DEBUGLEVEL state.
984
985 2011-03-22  Keith Marshall  <keithmarshall@users.sourceforge.net>
986
987         Avoid Unicode hyphens in generated ASCII document files.
988
989         * Makefile.in (NROFF): New macro; define it to invoke `nroff -Tascii'.
990         (%.dist, readme.txt): Use it to ensure that output is pure ASCII.
991
992 2011-03-15  Keith Marshall  <keithmarshall@users.sourceforge.net>
993
994         mingw-get-0.2-mingw32-alpha-2 released.
995
996         * configure.ac (AC_INIT): Adjust version number.
997         * srcdist-doc/NEWS.in: Updated; add bug-fix description.
998         * All files (r0-2-alpha-2): Tag assigned.
999
1000 2011-03-15  Keith Marshall  <keithmarshall@users.sourceforge.net>
1001
1002         Fix MinGW-Bug 3212246.
1003
1004         * src/keyword.c (has_keyword): Avoid incrementing the comparison
1005         pointers when a significant character in one string is not matched in
1006         the other; previously the pointers were left pointing one character to
1007         the right of the mismatch, and this was overlooked if the mismatch
1008         occurred at the rightmost character in both strings.
1009
1010 2011-03-12  Keith Marshall  <keithmarshall@users.sourceforge.net>
1011
1012         mingw-get-0.2-mingw32-alpha-1 released.
1013
1014         * configure.ac (AC_INIT): Set version number; correct capitalisation
1015         in URI reference to bug reporting instructions.
1016
1017         * srcdist-doc/NEWS.in: Confirm release date.
1018         [bug reporting]: Remove redundant paragraph; the information is
1019         provided, via reference to mingw.org. in the README and INSTALL files.
1020
1021         * All files (r0-2-alpha-1): Tag assigned.
1022
1023 2011-03-12  Keith Marshall  <keithmarshall@users.sourceforge.net>
1024
1025         * srcdist-doc/INSTALL.in [building]: Qualify liblzma.a requirement;
1026         add earliest acceptable snapshot release date.
1027
1028 2011-03-11  Keith Marshall  <keithmarshall@users.sourceforge.net>
1029
1030         Remove unused 7zip and boost source code from CVS trunk.
1031
1032         * 7z: Directory and all content removed.
1033         * boost: Likewise.
1034
1035 2011-03-11  Keith Marshall  <keithmarshall@users.sourceforge.net>
1036
1037         Refactor and update existing installation and usage instructions.
1038
1039         * src/clistub.c (help_text): Updated.
1040
1041         * srcdist-doc: New directory.
1042
1043         * README: Deleted; its content refactored into...
1044         * srcdist-doc/README.in srcdist-doc/INSTALL.in srcdist-doc/NEWS.in:
1045         ...these new template files, updated for current development state.
1046
1047         * srcdist-doc/gendoc.sed.in: New sed script; it directs formatting of
1048         generated text files derived from the srcdist-doc templates.
1049
1050         * Makefile.in (SRCDIST_SUBDIRS): Add srcdist-doc.
1051         (SRCDIST_FILES): Add NEWS and INSTALL.
1052         (srcdist-doc): New build rule to generate README, NEWS and INSTALL.
1053         (srcdist, licdist): Adjust path to locate them.
1054         (readme.txt): New build rule to generate on-line package description.
1055         (dist): Require it.
1056         (distclean): Don't remove Makefile...
1057         (maintainer-clean): ...but do it here instead.  Also remove generated
1058         README, NEWS and INSTALL, the autom4te cache, and all distributable
1059         zip files, in addition to tarballs, for the current version.
1060
1061 2011-02-27  Keith Marshall  <keithmarshall@users.sourceforge.net>
1062
1063         Initial implementation for "remove" feature.
1064
1065         * src/pkgbase.h: Update copyright notice; add current year.
1066         (pkgActionItem::SetPrimary): New inline public method; declare it.
1067         (pkgActionItem::SetAuthorities): New public method; declare it.
1068
1069         * src/pkgtask.h (ACTION_PREFLIGHT, ACTION_REMOVE_OK): New defines.
1070
1071         * src/pkgproc.h: Update copyright notice; add current year.
1072         (pkgManifest::GetSysRootReference): New public method; declare it.
1073         (pkgManifest::GetRoot): New inline method; declare and implement it.
1074         (pkgManifest::DetachSysRoot): Argument type changed to const char*.
1075         (pkgRemove): New extern "C" function; declare it.
1076
1077         * src/pkgexec.cpp (pkgActionItem::SetPrimary): Implement it, and...
1078         (pkgXmlDocument::Schedule): ...use it to promote actions on all user
1079         specified packages, as listed on the command line, to primary status.
1080         (pkgActionItem::Execute): Repeatedly invoke...
1081         (pkgActionItem::SetAuthorities): ...this; incorporate call of...
1082         (pkgActionItem::DownloadArchiveFiles): ...this, within the loop, so
1083         that we retry failed downloads at least a second time.
1084         [ACTION_REMOVE]: Delete stub; invoke pkgRemove().
1085
1086         * src/pkgunst.cpp: New file.
1087         (pkgActionItem::SetAuthorities): Implement it.
1088         (pkgManifest::GetSysRootReference): Implement it.
1089         (pkgManifest::DetachSysRoot): Implement it per new declaration.
1090         (pkgRemove): Implement it.
1091
1092         * Makefile.in (CORE_DLL_OBJECTS): Add pkgunst.OBJEXT
1093
1094 2011-02-26  Keith Marshall  <keithmarshall@users.sourceforge.net>
1095
1096         Work-around for improper stderr buffering in MSYS mintty and rxvt.
1097         (Merged from r0-1-alpha-5 branch).
1098
1099         * src/dmh.cpp (dmhTypeTTY::emit_and_flush): New private method.
1100         (dmhTypeTTY::printf, dmhTypeTTY::notify): Use it to force an fflush()
1101         after each output record is written to stderr.
1102
1103         * README: Update as appropriate.
1104
1105 2011-02-18  Keith Marshall  <keithmarshall@users.sourceforge.net>
1106
1107         Tidy up some debugging hooks.
1108
1109         * src/debug.h (DEBUG_INVOKED): New macro; define it.
1110         (DEBUG_INVOKE_IF): Likewise; this takes arguments providing for
1111         conditional invocation of code when DEBUGLEVEL is non-zero; make it
1112         expand to nothing, when DEBUGLEVEL is zero.
1113         (DEBUG_TRACE_INIT): Redefined macro; value changed to 0x0010.
1114         (DEBUG_TRACE_TRANSACTIONS, DEBUG_SUPPRESS_INSTALLATION):
1115         (DEBUG_UPDATE_INVENTORY): New macros; define them.
1116
1117         * src/tarproc.cpp (pkgTarArchiveInstaller::ProcessDirectory):
1118         (pkgTarArchiveInstaller::ProcessDataStream): Refactor debugging hooks;
1119         implement them in terms of DEBUGLEVEL, with reference to...
1120         (DEBUG_SUPPRESS_INSTALLATION, DEBUG_UPDATE_INVENTORY): ...these.
1121
1122 2011-02-15  Keith Marshall  <keithmarshall@users.sourceforge.net>
1123
1124         Make package version comparisons more robust.
1125
1126         Fixes an issue reported by Chris Sutcliffe: previously, version
1127         comparisons were evaluated solely on the basis of differences in the
1128         package version field itself.  Henceforth, if this field compares as
1129         equal, then the comparison is extended to also consider differences
1130         between development phase qualifiers, and, if these too compare as
1131         equal, to differences in the target subsystem version fields.
1132
1133         * src/pkginfo/pkginfo.h (pkgSpecs::VersionComparator): New private
1134         method; declare it.
1135
1136         * src/pkgspec.cpp (pkgSpecs::VersionComparator): Implement it.
1137         (pkgSpecs::operator<, pkgSpecs::operator<=, pkgSpecs::operator>=):
1138         (pkgSpecs::operator>): Use it, replacing...
1139         (version): ...this static function; now unreferenced; delete it.
1140
1141         * src/vercmp.h (pkgVersionInfo::pkgVersionInfo): Make it inline; it
1142         now delegates the entire class construction operation to...
1143         (pkgVersionInfo::Parse): ...this new private method; declare it.  This
1144         is also used to facilitate implementation of...
1145         (pkgVersionInfo::Reset): ...this new inline method, also requiring...
1146         (pkgVersionInfo::FreeAll): ...this new inline method; also now used by
1147         the class destructor, it encapsulates separate calls to...
1148         (pkgVersionInfo::Free): ...this original inline method, renamed...
1149         (pkgVersionInfo::FreeEntry): ...as this.
1150
1151         * src/vercmp.cpp (pkgVersionInfo::Parse): Implement it.
1152
1153 2011-02-13  Keith Marshall  <keithmarshall@users.sourceforge.net>
1154
1155         Merge from mingw-get-0.1-mingw32-alpha-5 bug-fix branch.
1156
1157         * src/pkgdeps.cpp (pkgXmlDocument::ResolveDependencies): Promote
1158         "install" action on new prerequisites, where a previously uninstalled
1159         package is required to satisfy any "upgrade" dependency.
1160
1161         * src/pkgexec.cpp (pkgActionList::Execute): Don't make misleading
1162         claims concerning package removal.
1163
1164         * src/pkgtask.h (STRICTLY_GT, STRICTLY_LT, ACTION_PRIMARY): Add one
1165         level of parentheses around defining expressions.
1166
1167 2011-02-10  Keith Marshall  <keithmarshall@users.sourceforge.net>
1168
1169         Publish mingw-get-0.0-mingw32-alpha-5.1 bug-fix release.
1170
1171         * README: Updated to reflect changes.
1172
1173 2011-02-08  Keith Marshall  <keithmarshall@users.sourceforge.net>
1174
1175         Improve diagnostics for failed GUI invocation.
1176
1177         * src/guimain.cpp: New file; currently delivers only a diagnostic
1178         stub, provided by Sze Howe Koh <axfangli@users.sourceforge.net>, to
1179         pop-up a message block explaining why GUI mode cannot be invoked.
1180
1181         * Makefile.in (GUI_LDFLAGS): New macro; it is required by...
1182         (gui$EXEEXT): ...this new build rule; add to prerequisites of...
1183         (all): ...this [default] build rule; redefine this in terms of...
1184         (BIN_PROGRAMS, LIBEXEC_PROGRAMS, LIBEXEC_DATA): ...these new macros;
1185         define them, and also use them as loop iterator objectives for...
1186         (install, install_strip): ...these; also schedule them...
1187         (clean): ...for removal by this.
1188
1189         * src/clistub.c (Copyright): Add new year.
1190         (main): Amend error message, if gui$EXEEXT doesn't start; make it
1191         more intelligible to normal users.
1192
1193 2011-02-07  Keith Marshall  <keithmarshall@users.sourceforge.net>
1194
1195         Correct omissions from packaged source tarball.
1196
1197         * Makefile.in (Copyright): Add new year.
1198         (SRCDIST_FILES): Add aclocal.m4
1199         (SRCDIST_SUBDIRS): Add m4
1200
1201 2011-01-05  Keith Marshall  <keithmarshall@users.sourceforge.net>
1202
1203         Reduce path names to base names, in some diagnostic message contexts.
1204
1205         * src/climain.cpp: Update copyright notice for new year.
1206         (climain): Extract base name from argv[0], to pass as program name tag
1207         in initialisation of diagnostic message handler.
1208
1209         * src/dmh.h, src/dmh.cpp: Update copyright notices; make some layout
1210         adjustments, for more consistent formatting style.
1211
1212         * src/pkgbind.cpp: Update copyright notice.
1213         (pkgRepository::GetPackageList): Reduce path names for catalogue files
1214         to their base names, when reporting them in diagnostic messages.
1215
1216 2011-01-05  Keith Marshall  <keithmarshall@users.sourceforge.net>
1217
1218         Avoid a potential out-of-range action name look-up.
1219
1220         * src/pkgdeps.cpp: Update copyright notice for new year.
1221         (pkgXmlDocument::Schedule): Mask action code with ACTION_MASK, to
1222         determine correct action name when diagnosing uninstalled package.
1223
1224 2011-01-03  Keith Marshall  <keithmarshall@users.sourceforge.net>
1225
1226         Make "install" and "remove" notifications symmetric.
1227
1228         * configure.ac (AC_INIT): Bump version to "0.1-alpha-6cvs".
1229         (YEARS_OF_ISSUE): Add new year.
1230         
1231         * src/pkginst.cpp: Update copyright notice for new year.
1232         (pkgInstall): Add notification for package being installed.
1233
1234 2010-12-30  Keith Marshall  <keithmarshall@users.sourceforge.net>
1235
1236         Add preliminary CLI support for "list" and "show" actions.
1237
1238         * src/pkgtask.h (ACTION_PRIMARY): New manifest constant; define it.
1239         (ACTION_LIST, ACTION_SHOW): Likewise; cast to enumerated values for...
1240         (action_list, action_show): ...these; define them.
1241
1242         * src/pkgexec.cpp (action_name): Add defining text for...
1243         (action_list, action_show): ...these.
1244
1245         * src/climain.cpp: Partially revert 2010-11-01 change...
1246         (climain) [! ACTION_UPDATE]: Reinstate original "if" block, moving
1247         the "switch" block within it, but without the ACTION_UPDATE case.
1248         [ACTION_LIST, ACTION_SHOW]: New "switch" cases; they invoke...
1249         (pkgXmlDocument::DisplayPackageInfo): ...this new method.
1250
1251         * src/pkgbase.h (pkgXmlDocument::DisplayPackageInfo): Declare it.
1252         (pkgActionItem::ConfirmInstallationStatus): New method; declare it.
1253         (pkgXmlNode::GetSysRoot): Make declaration style consistent with
1254         others in the class; do not name arguments in the declaration.
1255         (pkgXmlNode::FindFirstAssociate): Likewise.
1256         (pkgXmlNode::FindNextAssociate): Likewise.
1257
1258         * src/pkgshow.cpp: New file.
1259         (pkgXmlDocument::DisplayPackageInfo): Implement it.
1260
1261         * src/pkgdeps.cpp (pkgMsgUnknownPackage): New extern "C" function;
1262         implement it temporarily, pending a future i18n reimplementation.
1263         (assert_installed): Drop "inline" attribute; leave it as "static".
1264         Set "tarname" correctly, to match the installed package version; (it
1265         previously incorrectly returned the latest available version).
1266         (pkgActionItem::ConfirmInstallationStatus): Implement it.
1267         (pkgXmlDocument::Schedule) [ACTION_PRIMARY]: Set as appropriate.
1268         (pkgXmlDocument::Schedule) [ACTION_REMOVE || ACTION_UPGRADE]: Complain
1269         if requested package is not recorded as having been installed.
1270         (pkgXmlDocument::ResolveDependencies) [! ACTION_INSTALL]: Do not
1271         invoke it recursively.
1272
1273         * Makefile.in (pkgshow.$OBJEXT): Add reference.
1274
1275 2010-11-01  Keith Marshall  <keithmarshall@users.sourceforge.net>
1276
1277         Lay groundwork for implentation of additional actions.
1278
1279         * src/climain.cpp (climain): Adjust indentation; replace `if' block...
1280         [action != ACTION_UPDATE]: ...with this default `switch' case, and...
1281         [action == ACTION_UPDATE]: ...this as explicit "do nothing" case.
1282
1283 2010-10-29  Keith Marshall  <keithmarshall@users.sourceforge.net>
1284
1285         mingw-get-0.1-mingw32-alpha-5 released.
1286
1287         * configure.ac (AC_INIT): Bump version to 0.1-alpha-5.
1288         * README: Update release notes accordingly.
1289         * All files (r0-1-alpha-5): Tag assigned.
1290
1291 2010-10-22  Keith Marshall  <keithmarshall@users.sourceforge.net>
1292
1293         Make pkgInitRites/pkgLastRites processing more robust;
1294         avoid a potential race condition in mingw-get-inst.
1295
1296         * src/rites.c: Refactor conditional code to segregate execution of...
1297         [defined IMPLEMENT_INITIATION_RITES]: ...this into distinct phases.
1298         (PHASE_ONE_RITES, PHASE_TWO_RITES): Define constants to identify them.
1299         (do_init_rites): Renamed to...
1300         (invoke_rites): ...this; inline it.
1301         (pkgLastRites): Invoke it, to pre-empt rename action of...
1302         (lastrites.exe): ...this, subsequently exec()ed process.
1303         (perror): Issue more informative diagnostic on exec() failure.
1304
1305         * src/clistub.c (IMPLEMENT_INITIATION_RITES): Stipulate as...
1306         (PHASE_ONE_RITES): ...this phase of implementation only.
1307
1308         * src/pkgexec.cpp (IMPLEMENT_INITIATION_RITES): Define to provide...
1309         (PHASE_TWO_RITES): ...this phase of implementation, facilitated by...
1310         (self_upgrade_rites): ...this locally defined RITES_INLINE function.
1311         (pkgActionItem::Execute): Invoke it, in remove/install loop, while...
1312         [init_rites_pending]: ...new loop local variable remains true.
1313
1314 2010-09-10  Charles Wilson  <mingw@cwilson.fastmail.fm>
1315
1316         Fix packaging bug in -lic package.
1317
1318         * Makefile.in (licdist): Use directory named
1319         "share", not "shared".
1320
1321 2010-09-10  Charles Wilson  <mingw@cwilson.fastmail.fm>
1322
1323         mingw-get-0.1-mingw32-alpha-4 released.
1324
1325         * All files (r0-1-alpha-4): Tag assigned.
1326
1327 2010-09-10  Charles Wilson  <mingw@cwilson.fastmail.fm>
1328
1329         Add rudimentary help option.
1330
1331         * README: Update release notes.
1332
1333         * src/clistub.c: Add --help option.
1334
1335 2010-09-10  Charles Wilson  <mingw@cwilson.fastmail.fm>
1336
1337         Fix "mingw-get deletes itself" bug in last rites handling.
1338
1339         * README: Add new release notes.
1340
1341         * configure.ac: Bump version to 0.1-alpha-4.
1342
1343         * src/dmh.h: If __cplusplus, include <exception> and
1344         declare dmh_exception class.
1345
1346         * src/dmh.cpp (class dmh_exception): Implement.
1347         (abort_if_fatal): If DMH_FATAL, throw dmh_exception rather
1348         than calling exit().
1349
1350         * src/climain.cpp (climain): Wrap entire function body in try/
1351         catch block. If dmh_exception is caught, return EXIT_FAILURE.
1352
1353         * src/clistub.c (main): Capture return value of climain(). If
1354         non-zero, perform last rites and return EXIT_FAILURE.
1355
1356 2010-08-30  Keith Marshall  <keithmarshall@users.sourceforge.net>
1357
1358         mingw-get-0.1-mingw32-alpha-3 released.
1359
1360         * README: Add new release notes.
1361
1362         * All files (r0-1-alpha-3): Tag assigned.
1363
1364 2010-08-27  Keith Marshall  <keithmarshall@users.sourceforge.net>
1365
1366         Add runtime hooks to support self-upgrade for future releases.
1367
1368         * src/rites.c: New file; compile it free-standing, to provide...
1369         (lastrites.exe): ...this helper application for context clean-up;
1370         alternatively, use it as an include file, with pre-definition of...
1371         (IMPLEMENT_INITIATION_RITES): ...this, to implement...
1372         (pkgInitRites, pkgLastRites): ...these inline functions.
1373
1374         * src/clistub.c (main) [argc > 1]: Use them.
1375         (progname): New local variable within `main'; set it once, then use it
1376         instead of repeated references to `basename(*argv)' in diagnostics.
1377         (MINGW_GET_DLL, MINGW_GET_GUI): Relocate to `src/rites.c'.
1378
1379         * src/debug.h (DEBUG_INHIBIT_RITES_OF_PASSAGE):
1380         (DEBUG_FAIL_FILE_RENAME_RITE, DEBUG_FAIL_FILE_UNLINK_RITE): New
1381         defines; they facilitate debugging of the src/rites.c code.
1382
1383         * Makefile.in (lastrites$EXEEXT): New target; build as prerequisite...
1384         (all): ...of this primary target.
1385         (install, install-strip): Install it.
1386         (SRCDIST_FILES): Remove install-sh; it is now included in...
1387         (build-aux): ...this directory; add it to...
1388         (SRCDIST_SUBDIRS): ...this.
1389
1390 2010-08-24  Keith Marshall  <keithmarshall@users.sourceforge.net>
1391
1392         Set default sysroots relative to mingw-get installation directory.
1393
1394         * xml/profile.xml (system-map) [name == default]: For each of...
1395         [subsystem == mingw32]: ...set sysroot path to value of %R macro...
1396         [subsystem == msys]: ...and to its %R/msys/1.0 subdirectory.
1397
1398 2010-08-19  Keith Marshall  <keithmarshall@users.sourceforge.net>
1399
1400         Some dependency resolver enhancements and bug fixes.
1401
1402         * src/pkgbase.h (pkgXmlNode::GetContainerAttribute): New method;
1403         declare it.
1404
1405         * src/pkgdeps.cpp (pkgXmlNode::GetContainerAttribute): Implement it;
1406         it is used to retrieve package name attributes from the containing
1407         'package' element, when given a pointer to a 'release' element by...
1408         (assert_unmatched, assert_installed): ...these new static functions.
1409         (pkgXmlDocument::Schedule): Use them to reconstruct and register
1410         dependency reference data for previously installed packages which are
1411         no longer included in the distribution manifest.
1412         (pkgXmlDocument::ResolveDependencies): Fix a block nesting error;
1413         catch and diagnose unresolved dependencies; don't look beyond the XML
1414         document root node, (tinyxml error not caught?), when searching for
1415         requirements specified on container nodes.
1416
1417 2010-08-17  Keith Marshall  <keithmarshall@users.sourceforge.net>
1418
1419         Improve scheduling of package processing requests.
1420
1421         * src/pkgexec.cpp (pkgXmlDocument::Schedule): Inspect entire `actions'
1422         list, when checking for duplicate package processing requests; decline
1423         to schedule any such duplicate, or any request which lacks a package
1424         association.
1425
1426 2010-08-15  Keith Marshall  <keithmarshall@users.sourceforge.net>
1427
1428         Lay foundation for selective compilation of debugging code.
1429
1430         * src/debug.h: New file...
1431         * src/sysroot.cpp: Include it.
1432         (pkgXmlDocument::LoadSystemMap): Make debugging output conditional...
1433         [DEBUGLEVEL & DEBUG_TRACE_INIT]: ...on this new debugging state.
1434
1435 2010-08-15  Keith Marshall  <keithmarshall@users.sourceforge.net>
1436
1437         * src/pkgkeys.h: Typo in comment: file was previously identified as
1438         pkgkeys.c; corrected.
1439
1440 2010-08-13  Keith Marshall  <keithmarshall@users.sourceforge.net>
1441
1442         Improve diagnostics for invalid references to non-release XML nodes.
1443
1444         * src/pkgkeys.h (value_unknown): New global string; declare it.
1445         * src/pkgkeys.c (value_unknown): Implement it.
1446
1447         * src/pkgname.cpp (pkgArchiveName): Identify XML element type when
1448         diagnosing references to elements of types other than release; use...
1449         (value_unknown): ...this, as appropriate.
1450
1451 2010-08-12  Keith Marshall  <keithmarshall@users.sourceforge.net>
1452
1453         Guard against a potential buffer overrun.
1454
1455         * src/pkgreqs.cpp (pkgSpecs::SetProperty): Allocate an additional
1456         byte to accommodate an extra field separator, when inserting a new
1457         data value into a previously empty field.
1458
1459 2010-07-27  Cesar Strauss  <cestrauss@gmail.com>
1460
1461         Handle the GNU long name tar header format.
1462
1463         * src/pkgproc.h (TAR_ENTITY_TYPE_GNU_LONGNAME): New manifest constant;
1464         define it.
1465         (pkgTarArchiveProcessor::EntityDataAsString): New protected method;
1466         declare and...
1467         * src/tarproc.cpp: ...implement it.
1468         (pkgTarArchiveProcessor::Process): Before building the entry pathname,
1469         check for a GNU long name type header; when found, read pathname from
1470         the entry data area, before fetching the following header, from which
1471         to retrieve the associated entity data.
1472
1473 2010-06-24  Keith Marshall  <keithmarshall@users.sourceforge.net>
1474
1475         Work around an autoconf bug (reported by Stefano Sabatini).
1476
1477         * Makefile.in (VPATH): Use @top_srcdir@ instead of ${srcdir}; current
1478         autoconf incorrectly elides references to @srcdir@ and ${srcdir} when
1479         substituting within a VPATH specification for building `in-source'.
1480         Also, prefer colons to blanks as path name separators, for improved
1481         portability to non-GNU implementations of make; (recommendation by
1482         Ralf Wildenhues).
1483
1484 2010-06-24  Keith Marshall  <keithmarshall@users.sourceforge.net>
1485
1486         Include alias search, when matching component package name.
1487
1488         * src/keyword.c (has_keyword): Rearrange argument declarations for
1489         more natural order; update all callers accordingly.  Simplify; compare
1490         keyword to be matched with each successive candidate from match-list,
1491         character-by-character and in-place, so avoiding memory allocation
1492         for any local duplicate of the passed match-list; thus...
1493         (safe_strdup): ...this static function no longer required; delete it.
1494         (string.h): No references remain; do not include it.
1495
1496         * src/pkgfind.cpp (pkgXmlNode::FindPackageByName): Augment component
1497         package name matching to include potential matches of the look-up name
1498         with trailing component name stripped off, when that matches the class
1499         name of an identified component package, and the initial substring of
1500         the look-up name, after stripping, matches any specified alias name
1501         for the containing package.
1502
1503 2010-06-10  Keith Marshall  <keithmarshall@users.sourceforge.net>
1504
1505         Address FIXME relating to identification of distributable files.
1506
1507         * install-sh: Move to...
1508         * build-aux: ...this new directory.
1509
1510         * Makefile.in (PACKAGE_DISTVERSION): Modify `sed' edit sequence; make
1511         it depend on, and ensure that it incorporates the expansion of...
1512         (PACKAGE_SUBSYSTEM): ...this new macro; defined as substitution of...
1513         (host_os): ...this autoconf variable, set by...
1514
1515         * configure.ac (AC_CANONICAL_HOST): ...this; add it, requiring...
1516         (AC_CONFIG_AUX_DIR): ...`build-aux' directory reference, providing...
1517
1518         * build-aux/config.guess, build-aux/config.sub: ...these new standard
1519         files; import them from the standard `build-aux' repository.
1520
1521 2010-05-17  Keith Marshall  <keithmarshall@users.sourceforge.net>
1522
1523         Bump version for next release cycle.
1524
1525         * configure.ac (AC_INIT): Bump version suffix to alpha-3.
1526
1527 2010-05-17  Keith Marshall  <keithmarshall@users.sourceforge.net>
1528
1529         mingw-get-0.1-mingw32-alpha-2 released.
1530
1531         * README: Add new release notes.
1532
1533         * xml/profile.xml: Update to use default referencing for...
1534         (package-list.xml.lzma): ...this repository master catalogue.
1535
1536         * All files (r0-1-alpha-2): Tag assigned.
1537
1538 2010-05-12  Keith Marshall  <keithmarshall@users.sourceforge.net>
1539
1540         Make provision to protect user's profile settings during upgrade.
1541
1542         * Makefile.in (install): Remove `profile.xml'; replace it with...
1543         (install-profile): ...this new prerequisite installation goal; it
1544         renames the installed copy of `profile.xml' as `defaults.xml', within
1545         the installed package image.
1546
1547         * src/pkgkeys.h (defaults_key): New key; declare it.
1548         * src/pkgkeys.c: Some cosmetic formatting (tabulation) adjustments.
1549         (defaults_key): Implement it; it refers to the `defaults.xml' file.
1550
1551         * src/climain.cpp (climain): Check `profile_key' for accessibility of
1552         the `profile.xml' file; if [! R_OK] emit a diagnostic warning, fall
1553         back on `defaults_key', and attempt to load configuration from the
1554         distributed `defaults.xml' file.
1555
1556 2010-05-11  Keith Marshall  <keithmarshall@users.sourceforge.net>
1557
1558         Add preliminary support for future `-reinstall' option.
1559
1560         * src/pkgexec.cpp (pkgActionItem::Execute) [ACTION_INSTALL]: Force
1561         installation if `-reinstall' option is selected, overriding state of
1562         any prior installation; temporarily assume that this option is always
1563         selected, to permit proper `upgrade' operation in the absence of any
1564         functional `uninstall' capability, and pending implementation of a
1565         mechanism for interpreting user specified options.
1566
1567 2010-05-11  Keith Marshall  <keithmarshall@users.sourceforge.net>
1568
1569         Correct handling for "%R" macro in relative sysroot path specs.
1570
1571         * src/tarproc.cpp (pkgTarArchiveProcessor): In constructor, expand the
1572         sysroot path specification a second time, to capture the effect of any
1573         embedded macros, before computing the recorded `sysroot_len' value.
1574
1575 2010-05-05  Keith Marshall  <keithmarshall@users.sourceforge.net>
1576
1577         Handle "%" wildcard matches in package and subsystem version strings.
1578
1579         * src/pkgbase.h (pkgSpecs): Forward declare it.
1580         (pkgActionItem::~pkgActionItem): Declare explicit destructor.
1581         (pkgActionItem::SetRequirements): Add extra `pkgSpecs*' argument;
1582         update references, passing additional argument in...
1583
1584         * src/pkgdeps.cpp (pkgXmlDocument::ResolveDependencies): ...this.
1585
1586         * src/pkgexec.cpp (pkgActionItem::~pkgActionItem): Implement it.
1587         (pkgActionItem::SetRequirements): Delete obsolete implementation.
1588
1589         * src/pkginfo/pkginfo.h: Update copyright notice; add year 2010.
1590         (pkgSpecs::GetTarName): New public method; declare it.
1591         (pkgSpecs::SetProperty): New private method; declare it.
1592         (pkgSpecs::SetPackageName): New inline method; implement it.
1593         (pkgSpecs::SetPackageVersion, pkgSpecs::SetPackageBuild): Likewise.
1594         (pkgSpecs::SetSubSystemName, pkgSpecs::SetSubSystemVersion): Likewise.
1595         (pkgSpecs::SetSubSystemBuild, pkgSpecs::SetReleaseStatus): Likewise.
1596         (pkgSpecs::SetReleaseIndex, pkgSpecs::SetComponentClass): Likewise.
1597         (pkgSpecs::SetComponentVersion, pkgSpecs::SetPackageFormat): Likewise.
1598         (pkgSpecs::SetCompressionType): Likewise.
1599
1600         * src/pkginfo/pkginfo.l: Update copyright notice; add year 2010.
1601         (TRANS): Interpret "%" as wildcard in version string matches.
1602
1603         * src/pkgreqs.cpp: New file.
1604         (pkgActionItem::SetRequirements): Reimplement per new declaration;
1605         it now always allocates heap memory for requirements specifications.
1606         (pkgSpecs::GetTarName, pkgSpecs::SetProperty): Implement them.
1607
1608         * Makefile.in (CORE_DLL_OBJECTS): Add `pkgreqs.$(OBJEXT)'.
1609
1610 2010-04-30  Keith Marshall  <keithmarshall@users.sourceforge.net>
1611
1612         Revert 2010-04-04 refactoring of tarproc.cpp and tarinst.cpp
1613
1614         * src/tarinst.cpp: File removed; its content merged into...
1615         * src/tarproc.cpp: ...this; it cannot be cleanly separated out.
1616
1617         * Makefile.in (tarinst.$OBJEXT): Remove reference.
1618
1619 2010-04-29  Keith Marshall  <keithmarshall@users.sourceforge.net>
1620
1621         Handle "*" wildcard matches in package and subsystem version strings.
1622
1623         * src/vercmp.h (pkgVersionInfo::version_string): New private member
1624         variable; it stores a pointer to a dynamically allocated local copy of
1625         the invariant `version' argument, to facilitate correct parsing.
1626         (pkgVersionInfo::build_string): Likewise; it provides similar handling
1627         for the invariant `build' argument.
1628         (pkgVersionInfo::Free): New private inline method; it provides a NULL
1629         pointer safe wrapper, calling the C library `free()' function, (since
1630         some implementations are believed to be unsafe); it is used by...
1631         (pkgVersionInfo::~pkgVersionInfo): ...this new inline destructor, to
1632         release the memory allocated by the constructor, for `version_string'
1633         and `build_string'.
1634
1635         * src/vercmp.cpp (pkgVersionInfo::pkgVersionInfo): Allocate memory for
1636         `version_string' and `build_string', as required; populate it.
1637         Explicitly handle "*" as a `match anything' wildcard...
1638         (pkgVersionInfo::Compare): ...matching it as `equal' to everything.
1639
1640 2010-04-18  Keith Marshall  <keithmarshall@users.sourceforge.net>
1641
1642         Correct omission from configure script prerequisite checks.
1643
1644         * aclocal.m4 (MINGW_AC_OUTPUT): New macro; it wraps AC_OUTPUT itself,
1645         adding a trap to force an abort if any preceding prerequisite check
1646         was handled by MINGW_AC_ASSERT_MISSING.
1647
1648         * configure.ac: Qualify package component types, in prerequisite
1649         checks handled by MINGW_AC_ASSERT_MISSING; invoke MINGW_AC_OUTPUT
1650         in place of AC_OUTPUT.
1651
1652 2010-04-17  Keith Marshall  <keithmarshall@users.sourceforge.net>
1653
1654         Add configure script checks for prerequisite library headers.
1655         (Thanks to Cesar Strauss for proposing a rudimentary implementation).
1656
1657         * aclocal.m4: New file; it does no more than include...
1658         * m4/missing.m4: ...this; new file incorporated from build-aux module.
1659
1660         * configure.ac: Add AC_CHECK_HEADER assertions for...
1661         (zlib.h, bzlib.h, lzma.h): ...these; invoke MINGW_AC_ASSERT_MISSING in
1662         respect of each failing assertion.
1663
1664 2010-04-17  Keith Marshall  <keithmarshall@users.sourceforge.net>
1665
1666         Case-insensitive subsystem name matching revisited.
1667
1668         * src/pkgfind.cpp (pkgXmlDocument::FindPackageByName): Use...
1669         (subsystem_strcmp): ...this to match subsystem names, instead of...
1670         (match_if_explicit): ...this.
1671
1672 2010-04-15  Keith Marshall  <keithmarshall@users.sourceforge.net>
1673
1674         Enable recursive processing of repository package lists.
1675
1676         * src/pkgbase.h (pkgXmlDocument::SyncRepository): Make it public.
1677
1678         * src/pkgbind.cpp (pkgRepository): New locally defined and implemented
1679         class; it facilitates recursive loading and parsing of package lists,
1680         replacing much of the original non-recursive functionality within...
1681         (pkgXmlDocument::BindRepositories): ...this; use it.
1682
1683 2010-04-04  Keith Marshall  <keithmarshall@users.sourceforge.net>
1684
1685         Implement installer function; use per-package file manifests.
1686
1687         * src/pkgproc.h (pkgManifest): New class; declare it.
1688         (pkgArchiveProcessor::origin): New protected member variable.
1689         (pkgArchiveProcessor::sysroot_len): New protected member variable.
1690         (pkgArchiveProcessor::installed): Type changed to `pkgManifest *'.
1691         (pkgTarArchiveInstaller::Process): Declare specialisation hook.
1692         (pkgTarArchiveInstaller::UpdateInstallationManifest): Disused member
1693         function; remove redundant declaration from class definition.
1694         (pkgInstall): New generalised installation function; declare it.
1695         (pkgRegister): New function; declare it.
1696
1697         * src/pkginst.cpp: New file.
1698         (pkgManifest, pkgInstall, pkgRegister): Implement them.
1699
1700         * src/pkgexec.cpp (pkgActionItem::Execute): Use `pkgInstall' in place
1701         of stub formerly provided here.
1702
1703         * src/pkgkeys.h (manifest_key, reference_key): New keys; declare them.
1704         * src/pkgkeys.c (manifest_key, reference_key): Implement them.
1705
1706         * src/tarproc.cpp: Code refactored.
1707         (pkgTarArchiveProcessor::sysroot_len): Initialise it.
1708         (pkgTarArchiveProcessor::origin): Initialise it.
1709         (pkgTarArchiveProcessor::installed): Initialise; associate it with a
1710         pkgManifest class entity, and populate this as appropriate.
1711         (pkgTarArchiveProcessor::~pkgTarArchiveProcessor): Add explicit clean
1712         up of linked `pkgManifest *' entity referenced by `installed'.
1713         (pkgTarArchiveProcessor::Process) [TAR_ENTITY_TYPE_DIRECTORY]: Add
1714         braces to demarcate localised inner scope of string scan for removal
1715         of trailing directory name separators; (thanks to Cesar Strauss for
1716         reporting invalid local pointer declaration error in GCC >= 4.4).
1717         (pkgTarArchiveInstaller::UpdateInstallationManifest): Deleted.
1718         (pkgTarArchiveInstaller::pkgTarArchiveInstaller): Factor out.
1719         (pkgTarArchiveInstaller::ProcessDirectory): Likewise.
1720         (pkgTarArchiveInstaller::ProcessDataStream): Likewise.
1721         (commit_saved_entity): Likewise.
1722
1723         * src/tarinst.cpp: New file; it implements...
1724         (pkgTarArchiveInstaller::Process): ...this new specialisation
1725         of the original pkgTarArchiveProcessor::Process method...
1726         (pkgTarArchiveInstaller::pkgTarArchiveInstaller): ...and this
1727         refactored code, abstracted from src/tarproc.cpp and modified to
1728         use the pkgManifest class for installation tracking.
1729         (pkgTarArchiveInstaller::ProcessDirectory): Likewise.
1730         (pkgTarArchiveInstaller::ProcessDataStream): Likewise.
1731         (commit_saved_entity): Relocated from src/tarproc.cpp.
1732
1733         * Makefile.in (CORE_DLL_OBJECTS): Add...
1734         (pkginst.OBJEXT, tarinst.OBJEXT): ...these new object files.
1735
1736 2010-03-31  Keith Marshall  <keithmarshall@users.sourceforge.net>
1737
1738         Guard against NULL pointer dereferences in tinyxml code.
1739
1740         * src/pkgbase.h (pkgXmlNode::GetName): Verify `this' pointer is
1741         non-NULL, before invoking the underlying tinyxml method.
1742         (pkgXmlNode::GetParent, pkgXmlNode::GetChildren): Likewise.
1743         (pkgXmlNode::GetNext, pkgXmlNode::GetPropVal): Likewise.
1744         (pkgXmlNode::AddChild, pkgXmlNode::DeleteChild): Likewise.
1745         (pkgXmlNode::GetDocumentRoot): Likewise.
1746         (pkgXmlNode::IsElementOfType): Likewise.
1747
1748 2010-03-28  Cesar Strauss  <cestrauss@gmail.com>
1749
1750         Avoid running InternetAttemptConnect in pkgInternetAgent
1751         constructor, since it is called during DLL initialisation.
1752
1753         * src/pkginet.cpp (pkgInternetAgent::pkgInternetAgent): Move the
1754         InternetAttemptConnect call from constructor...
1755         (pkgInternetAgent::OpenURL): ...to here.
1756
1757 2010-03-23  Keith Marshall  <keithmarshall@users.sourceforge.net>
1758
1759         Automate object code dependency tracking.
1760
1761         * Makefile.in (DEPFLAGS): New macro; define it.
1762         (%.OBJEXT: %.c, %.OBJEXT: %.cpp): Add dependency generator commands...
1763         (%.d): ...to create these dependency maps; `sinclude' them, and...
1764         (clean): ...remove them.
1765         
1766         * .cvsignore (*.d): Add wild card template to match them.
1767
1768 2010-03-22  Keith Marshall  <keithmarshall@users.sourceforge.net>
1769
1770         Support case insensitive matching for file and subsystem names.
1771
1772         * src/pkgbase.h (safe_strcmp): New inline function; it provides NULL
1773         argument safe comparison of strings, returning the boolean inverse of
1774         the `strcmp' result, using either case-sensitive or case-insensitive
1775         semantics; derive it from...
1776         (match_if_explicit): ...this; redefine as macro; invoke `safe_strcmp'
1777         using explicitly case-sensitive semantics.
1778         (subsystem_strcmp): New macro; it invokes `safe_strcmp' with either
1779         case-sensitive or case-insensitive semantics, depending on...
1780         (CASE_INSENSITIVE_SUBSYSTEMS): ...this new context selection macro; it
1781         fixes the choice between case-sensitive and case-insensitive matching
1782         semantics for any given implementation, at compile time.
1783         (pkg_strcmp): New macro; it invokes `safe_strcmp' with either
1784         case-sensitive or case-insensitive semantics, depending on...
1785         (CASE_INSENSITIVE_FILESYSTEM): ...this new context selection macro; it
1786         fixes the choice between case-sensitive and case-insensitive matching
1787         semantics for any given implementation, at compile time.
1788
1789         * src/sysroot.cpp (pkgXmlNode::GetSysRoot): Use `subsystem_strcmp'.
1790
1791 2010-03-02  Keith Marshall  <keithmarshall@users.sourceforge.net>
1792
1793         Add preliminary support for virtual packages.
1794
1795         * src/pkgkeys.h (yes_value, no_value): Redefine as aliases...
1796         (value_yes, value_no): ...for these new global strings; declare them.
1797         (value_none, value_virtual): New global strings; declare them.
1798
1799         * src/pkgkeys.c (yes_value, no_value): Rename...
1800         (value_yes, value_no): ...to implement these, respectively.
1801         (value_none, value_virtual): Implement them.
1802
1803         * src/pkgname.cpp (pkgXmlNode::ArchiveName): Check containing package
1804         node for `class' attribute set to `value_virtual'; if present, always
1805         return the effective `tarname' property as `value_none'.
1806
1807         * src/pkginet.cpp (pkgActionItem::DownloadArchiveFiles): For packages
1808         with an effective `tarname' of `value_none', do not download anything.
1809
1810         * src/pkgexec.cpp (pkgActionItem::Execute): For packages with an
1811         effective `tarname' of `value_none', do not invoke any tar archive
1812         processing function.
1813
1814 2010-03-02  Keith Marshall  <keithmarshall@users.sourceforge.net>
1815
1816         Don't write installation records for unavailable packages.
1817
1818         * src/tarproc.cpp (pkgTarArchiveInstaller): In constructor, ensure
1819         archive is ready for processing, before initialising an installation
1820         manifest record.
1821
1822 2010-03-02  Keith Marshall  <keithmarshall@users.sourceforge.net>
1823
1824         Rationalise path identification for XML file locations.
1825
1826         * src/sysroot.cpp (pkgXmlDocument::LoadSystemMap): Use `xmlfile()'
1827         function to locate `sysroot' map file; free memory when done.
1828         (pkgXmlDocument::UpdateSystemMap): Likewise.
1829         (sigpath): Static global variable disused; delete it.
1830
1831 2010-03-01  Keith Marshall  <keithmarshall@users.sourceforge.net>
1832
1833         Extend package name search to include component packages.
1834
1835         * src/pkgfind.cpp (pkgHasMatchingName): Remove; fold it into...
1836         (pkgXmlNode::FindPackageByName): ...this; augment to extend search
1837         within package definition elements, seeking a potential match on an
1838         included component package name or component class-implied name.
1839
1840         * src/pkgkeys.h (class_key): New global string constant; declare it.
1841         * src/pkgkeys.c (class_key): Implement it.
1842
1843 2010-02-16  Keith Marshall  <keithmarshall@users.sourceforge.net>
1844
1845         Bump version for next release cycle.
1846
1847         * configure.ac (AC_INIT): Bump version suffix to alpha-2.
1848
1849 2010-02-16  Keith Marshall  <keithmarshall@users.sourceforge.net>
1850
1851         mingw-get-0.1-mingw32-alpha-1 released.
1852
1853 2010-02-16  Keith Marshall  <keithmarshall@users.sourceforge.net>
1854
1855         Prepare initial package release.
1856
1857         * README: New file; use it to source release notes.
1858
1859         * Makefile.in (SRCDIST_FILES): Use ...
1860         (LICENCE_FILES): ...this new macro; define it.
1861         (licdist): New build goal; implement it.
1862         (bindist): Require it; add alternative `zip' format package.
1863
1864         * xml/profile.xml (repository): Set default `package-index' name.
1865         (system-map): Normalise spelling for default `sysroot' path names.
1866
1867 2010-02-10  Keith Marshall  <keithmarshall@users.sourceforge.net>
1868
1869         Add directory/file records in installation manifests.
1870
1871         * src/pkgkeys.h (dirname_key, filename_key): New strings; declare...
1872         * src/pkgkeys.c (dirname_key, filename_key): ...and implement them.
1873
1874         * src/pkgproc.h (pkgArchiveProcessor::installed): New class member
1875         variable; declare it.
1876         (pkgTarArchiveInstaller::UpdateInstallationManifest): New method;
1877         declare it.
1878
1879         * src/tarproc.cpp: Miscellaneous comment updates.
1880         (pkgTarArchiveInstaller): In constructor...
1881         (pkgTarArchiveInstaller::installed): ...use new member variable...
1882         (pkgArchiveProcessor::installed): ...inherited from this.
1883         (pkgTarArchiveInstaller::UpdateInstallationManifest): Implement and...
1884         (pkgTarArchiveInstaller::ProcessDataStream): ...use it.
1885         (pkgTarArchiveInstaller::ProcessDirectory): Likewise.
1886
1887 2010-02-06  Keith Marshall  <keithmarshall@users.sourceforge.net>
1888
1889         Work around a deficiency in Microsoft's stat() implementation.
1890
1891         * src/tarproc.cpp (pkgTarArchiveProcessor::ProcessDirectory): Don't
1892         pass a `pathname' argument with trailing slashes; strip them off.
1893
1894 2010-02-06  Keith Marshall  <keithmarshall@users.sourceforge.net>
1895
1896         Add machinery for installation and packaging for distribution.
1897
1898         * install-sh: New file; source it from autoconf distribution.
1899
1900         * configure.ac (AC_PREFIX_DEFAULT): Assign it as `C:/MinGW'.
1901         (AC_PROG_MKDIR_P, AC_PROG_INSTALL, AC_PROG_LN_S): Invoke these.
1902         (STRIP): New output variable; use AC_CHECK_TOOL to define it.
1903
1904         * Makefile.in (abs_top_srcdir): Define to AC_SUBST value.
1905         (PACKAGE_TARNAME, PACKAGE_VERSION): Define to AC_SUBST values.
1906         (prefix, exec_prefix, bindir, libexecdir, localstatedir): Likewise.
1907         (INSTALL, INSTALL_PROGRAM, INSTALL_SCRIPT, INSTALL_DATA): Likewise.
1908         (STRIP): New macro; define it using AC_CHECK_TOOL substitution.
1909         (mkinstalldirs): New macro; define it as AC_PROG_MKDIR_P result.
1910         (LN_S): New macro; define it as AC_PROG_LN_S result.
1911         (dist, srcdist, bindist): New build objectives; implement them.
1912         (install, installdirs, install-strip, maintainer-clean): Likewise.
1913         (SRCDIST_FILES, SRCDIST_SUBDIRS): New macros; define them.
1914         (PACKAGE_DISTNAME, PACKAGE_DISTVERSION): Likewise.
1915         (PACKAGE_DISTROOT, PACKAGE_ROOTVERSION): Likewise.
1916         (PACKAGE_CONFIG_DIR): Likewise.
1917
1918 2010-02-02  Keith Marshall  <keithmarshall@users.sourceforge.net>
1919
1920         Implement package installer for tar archives.
1921
1922         * src/pkgexec.cpp (pkgXmlDocument::Execute): Replace existing
1923         stub implementation of installer, using methods provided by...
1924         * src/pkgproc.h, src/tarproc.cpp: ...these new files, with trap...
1925         * src/pkgdeps.cpp (pkgXmlDocument::Schedule) [installed]: Add entry...
1926         (pkgActionItem::Selection) [to_remove]: ...for this; use it to detect
1927         `install' requests for packages which are aleady installed.
1928
1929         * Makefile.in (CORE_DLL_OBJECTS): Add tarproc.$(OBJEXT); specify
1930         dependencies as appropriate.
1931
1932         * src/sysroot.cpp (pkgXmlDocument::LoadSystemMap): Don't commit
1933         newly created `sysroot' mapping records to disk; defer to...
1934         (pkgXmlDocument::UpdateSystemMap): ...this new method.
1935         (sigpath): Make it a global variable, with file (static) scope.
1936
1937         * src/climain.cpp (pkgXmlDocument::UpdateSystemMap): Invoke it.
1938
1939         * src/pkgkeys.h (download_key, modified_key, source_key): New global
1940         string variables; declare them, providing their implementations...
1941         * src/pkgkeys.c (download_key, modified_key, source_key): ...here.
1942         * src/pkgname.cpp (download_key, source_key): Use them.
1943
1944         * src/pkginet.cpp (pkgActionItem::ArchivePath): Delete; replace...
1945         * src/mkpath.c (pkgArchivePath): ...with this free standing function.
1946         * src/mkpath.h (pkgArchivePath): Declare its prototype.
1947
1948         * src/pkgbase.h (pkgActionItem::ArchivePath): Delete declaration.
1949         (pkgXmlDocument): Add a default constructor; implement as `inline'.
1950         (pkgXmlDocument::AddDeclaration): Use heap memory to allocate the new
1951         declaration object, instead of `auto' variable, to avoid scope error.
1952         (pkgXmlDocument::UpdateSystemMap): Declare it.
1953
1954 2010-01-26  Keith Marshall  <keithmarshall@users.sourceforge.net>
1955
1956         Implement rudimentary dependency resolver.
1957
1958         * src/pkgdeps.cpp: New file.
1959
1960         * Makefile.in (CORE_DLL_OBJECTS): Add pkgdeps.$(OBJEXT) reference;
1961         establish header file dependencies.
1962
1963         * src/pkgbase.h (to_remove, to_install, selection_types): New enum.
1964         (pkgActionItem::selection): Extend it to store as enumerated pair...
1965         (pkgActionItem::SelectPackage): New inline method; assign them.
1966         (pkgActionItem::Selection): New inline method; retrieve them.
1967         (pkgXmlNode::GetInstallationRecord): New method; declare it.
1968
1969         * src/pkgexec.cpp (pkgActionItem): In constructor...
1970         (selection): ...initialise both references in enumerated pair.
1971         (pkgActionItem::GetReference): Use `Selection()' method.
1972         (pkgActionItem::SelectIfMostRecent): Ditto; also correct logic for
1973         making selection, and assign to `to_install' element.
1974         (pkgXmlDocument::Schedule): Don't update `request'.
1975         (pkgActionItem::Execute): Implement as stub.
1976
1977         * src/pkginet.cpp (pkgActionItem::DownloadArchiveFiles): Use new
1978         `Selection()' method.
1979
1980         * src/pkgkeys.h (yes_value, no_value): Declare new string constants.
1981         * src/pkgkeys.c (yes_value, no_value): Implement them.
1982
1983         * src/vercmp.cpp: Update copyright notice.
1984         (pkgVersionInfo::operator<=): Bug fix; must test for `<', but had `>'.
1985
1986 2010-01-23  Keith Marshall  <keithmarshall@users.sourceforge.net>
1987
1988         Avoid segmentation faults when processing invalid data streams.
1989
1990         * src/pkgstrm.h: Update copyright notice.
1991         (pkgArchiveStream::IsReady): New pure virtual method.
1992         (pkgRawArchiveStream::IsReady): Provide inline implementation.
1993         (pkgGzipArchiveStream::IsReady): Likewise.
1994         (pkgBzipArchiveStream::IsReady): Likewise.
1995         (pkgLzmaArchiveStream::IsReady): Likewise.
1996         (pkgXzArchiveStream::IsReady): Likewise.
1997
1998         * src/pkgstrm.cpp: Update copyright notice.
1999         (pkgLzmaArchiveStream, pkgXzArchiveStream) [fd == -1]: Decline to
2000         perform any form of read or decode processing.
2001
2002         * src/pkginet.cpp (pkgInternetLzmaStreamingAgent): Use `fd = -2' as
2003         pseudo-descriptor for the pkgLzmaArchiveStream derived component of
2004         this internet data streaming class.
2005
2006 2010-01-23  Keith Marshall  <keithmarshall@users.sourceforge.net>
2007
2008         Require liblzma >= liblzma-4.999.9beta_20091209-3-mingw32-dev
2009
2010         * src/pkgstrm.h (LZMA_API_STATIC): Remove definition and associated
2011         comment; it was required to permit, (but not to enforce), linking to
2012         the static liblzma.a library, with earlier beta releases, but this
2013         anomaly has now been corrected.
2014
2015 2010-01-22  Keith Marshall  <keithmarshall@users.sourceforge.net>
2016
2017         Remove zlib sources from trunk.
2018         (Application builders should use free standing implementation of
2019          zlib, from MinGW's package distribution page on SourceForge).
2020
2021 2010-01-22  Keith Marshall  <keithmarshall@users.sourceforge.net>
2022
2023         Remove bzip2 sources from trunk.
2024         (Application builders should use free standing implementation of
2025          bzip2, from MinGW's package distribution page on SourceForge).
2026
2027 2010-01-22  Keith Marshall  <keithmarshall@users.sourceforge.net>
2028
2029         Add subsystem specific sysroot mapping facility.
2030
2031         * src/pkghash.c: New file; required by...
2032         * src/sysroot.cpp: New file; it implements...
2033         (pkgXmlDocument::LoadSystemMap, pkgXmlNode::GetSysRoot): New methods.
2034
2035         * src/pkgbase.h: Update copyright notice.
2036         (pkgXmlDocument::LoadSystemMap): Declare it.
2037         (pkgXmlDocument::AddDeclaration): New inline method.
2038         (pkgXmlDocument::SetRoot, pkgXmlDocument::Save): Likewise.
2039         (pkgXmlNode::GetSysRoot): Declare it.
2040         (pkgXmlNode::GetDocumentRoot): New inline method.
2041         (pkgXmlNode::AddChild, pkgXmlNode::DeleteChild): Likewise.
2042
2043         * src/climain.cpp: Update copyright notice.
2044         (climain): Invoke pkgXmlDocument::LoadSystemMap() as required.
2045
2046         * Makefile.in (CORE_DLL_OBJECTS): Add ...
2047         (pkghash.$(OBJEXT), sysroot.$(OBJEXT)): ...these; upate dependencies.
2048         (DEBUGLEVEL): New macro; define it.
2049         (CPPFLAGS): Use it.
2050
2051 2010-01-16  Keith Marshall  <keithmarshall@users.sourceforge.net>
2052
2053         Assign standardised keys for XML database lookup.
2054
2055         * src/pkgkeys.h: New file; provide public key declarations.
2056         * src/pkgkeys.c: New file; implement them.
2057
2058         * src/pkgbind.cpp: Use them; update copyright notice.
2059         * src/pkgexec.cpp, src/pkgfind.cpp, src/pkginet.cpp: Likewise.
2060         * src/pkgname.cpp, src/pkgspec.cpp: Likewise.
2061
2062         * Makfile.in (CORE_DLL_OBJECTS): Add pkgkeys.$(OBJEXT); update all
2063         dependencies accordingly.
2064
2065 2010-01-08  Keith Marshall  <keithmarshall@users.sourceforge.net>
2066
2067         Add CLI version reporting option.
2068
2069         * configure.ac: Update copyright notice for new year.
2070         (COPYRIGHT_HOLDER): New AC_SUBST variable; define it.
2071         (YEARS_OF_ISSUE): New AC_SUBST variable; define it.
2072         (AC_CONFIG_FILES): Add `version.c'; source it from...
2073
2074         * version.c.in: ...this new file.
2075
2076         * Makefile.in: Update copyright notice for new year.
2077         (mingw-get$(EXEEXT)): Add dependency on `version.$(OBJEXT)'.
2078         (distclean): Add `version.c'.
2079
2080         * configure: Regenerated.
2081
2082         * src/clistub.c: Update copyright notice for new year.
2083         (options): New array of `struct option'; define and use it as the
2084         reference for `argv' parsing with `getopt_long_only()'.
2085
2086 2009-12-17  Keith Marshall  <keithmarshall@users.sourceforge.net>
2087
2088         Add CLI support for "update" action.
2089
2090         * src/pkgtask.h (ACTION_UPDATE): Define it, derived from...
2091         (action_update): ...this new entry in anonymous enumeration.
2092         
2093         * src/pkgexec.cpp (action_name): Add "update" keyword identification.
2094
2095         * src/pkgbase.h: Typo in comment; s/xwXmlDocument/wxXmlDocument/.
2096         (pkgXmlDocument::BindRepositories): Add `force_update' parameter...
2097         * src/pkgbind.cpp (pkgXmlDocument::BindRepositories): Use it to...
2098         (pkgXmlDocument::SyncRepository): ...invoke this method when passed as
2099         a `true' flag, in addition to (as previously) first time reference.
2100
2101         * src/climain.cpp (climain): Interpret "update" keyword for...
2102         [ACTION_UPDATE]: ...passing state as `force_update' parameter to...
2103         (pkgXmlDocument::BindRepositories): ...this method, then...
2104         [!ACTION_UPDATE]: Follow with normal action processing.
2105
2106 2009-12-16  Keith Marshall  <keithmarshall@users.sourceforge.net>
2107
2108         Add status checking for Internet URL connections.
2109
2110         * src/pkginet.cpp (pkgInternetAgent::QueryStatus): New method.
2111         (pkgInternetStreamingAgent::Get): Use it; set `dl_status' as return
2112         value, deferring failure diagnostics to callers, i.e. to...
2113         (pkgXmlDocument::SyncRepositories): ...this, and to...
2114         (pkgActionItem::DownloadArchiveFiles): ...this.
2115
2116 2009-11-23  Keith Marshall  <keithmarshall@users.sourceforge.net>
2117
2118         Add package download and repository synchronisation machinery.
2119
2120         * src/pkgstrm.h: New header file.
2121
2122         * src/pkgbind.cpp, src/pkginet.cpp, src/pkgstrm.cpp,
2123         src/pkgfind.cpp, src/pkgname.cpp, src/keyword.c: New files.
2124         * Makefile.in (CORE_DLL_OBJECTS): Add build goals for them.
2125
2126         * xml: New directory.
2127
2128         * src/climain.cpp (climain): Establish repository bindings from...
2129         * xml/profile.xml: ...this new configuration file.
2130
2131 2009-11-16  Keith Marshall  <keithmarshall@users.sourceforge.net>
2132
2133         Add XML database bindings and preliminary action executive for CLI.
2134
2135         * src/pkgbase.h, src/pkgtask.h,
2136         src/mkpath.h, src/vercmp.h: New header files.
2137
2138         * src/climain.cpp, src/pkgexec.cpp, src/pkgspec.cpp,
2139         src/mkpath.c, src/vercmp.cpp, src/xmlfile.c: New files.
2140
2141         * Makefile.in (CORE_DLL_OBJECTS): Define initial set of files...
2142         (mingw-get-0.dll): ...build them into this new DLL target; add it...
2143         (all): ...as prerequisite for this primary build goal.
2144
2145 2009-11-12  Keith Marshall  <keithmarshall@users.sourceforge.net>
2146
2147         Avoid some potential GCC warnings.
2148
2149         * src/clistub.c: Include process.h for `execv' prototype...
2150         (main): Cast `argv' to appropriately matched type when calling it.
2151
2152         * src/pkginfo/driver.c: Include stdlib.h for `free' prototype.
2153
2154 2009-11-11  Keith Marshall  <keithmarshall@users.sourceforge.net>
2155
2156         Create diagnostic message handler for CLI usage.
2157
2158         * src/dmh.h: New header file; it defines the public interface.
2159         * src/dmh.cpp: New file; it implements the message handler.
2160
2161 2009-11-05  Keith Marshall  <keithmarshall@users.sourceforge.net>
2162
2163         Correct some identified TinyXML issues.
2164
2165         * tinyxml/tinyxml.h (IsWhiteSpace): Add FIXME annotation to flag
2166         probable redundancy of checks for '\n' and '\r'.
2167         * tinyxml/tinyxmlparser.cpp: Revert John E's 2008-08-09 change; remove
2168         all such redundancies in IsWhiteSpace() calls throughout.
2169
2170         * tinyxml/tinyxml.cpp (TiXmlAttribute::SetDoubleValue): Correct format
2171         specification in sprintf()/snprintf() calls; "%lf" is invalid; replace
2172         with "%f".
2173
2174 2009-10-31  Keith Marshall  <keithmarshall@users.sourceforge.net>
2175
2176         Add CLI loader stub.
2177
2178         * src/clistub.c: New file.
2179         * Makefile.in: Add build rule for it; build as...
2180         (mingw-get.exe): ...this; also add to...
2181         (clean): ...this goal.
2182
2183 2009-10-31  Keith Marshall  <keithmarshall@users.sourceforge.net>
2184
2185         Set up build mechanism.
2186
2187         * configure.ac, Makefile.in: New files.
2188         * .cvsignore (configure, autom4te.cache): Add to ignored files.
2189
2190 2009-10-30  Keith Marshall  <keithmarshall@users.sourceforge.net>
2191
2192         Add GPL-v3 licensing terms.
2193
2194         * COPYING: New file, sourced from gnu.org.
2195
2196 2009-10-12  Keith Marshall  <keithmarshall@users.sourceforge.net>
2197
2198         Add pkginfo implementation.
2199
2200         * src, src/pkginfo: New directories.
2201         * src/pkginfo/pkginfo.h, src/pkginfo/pkginfo.l: New files.
2202         * src/pkginfo/driver.c: New file.
2203
2204 2009-10-12  Keith Marshall  <keithmarshall@users.sourceforge.net>
2205
2206         Create tdm-branch.
2207
2208         * All files (tdm-branch): Assign new branch tag.
2209         * All top-level files: Remove from trunk.
2210         * ChangeLog: New file.