1 2010-08-27 Keith Marshall <keithmarshall@users.sourceforge.net>
3 Add runtime hooks to support self-upgrade for future releases.
5 * src/rites.c: New file; compile it free-standing, to provide...
6 (lastrites.exe): ...this helper application for context clean-up;
7 alternatively, use it as an include file, with pre-definition of...
8 (IMPLEMENT_INITIATION_RITES): ...this, to implement...
9 (pkgInitRites, pkgLastRites): ...these inline functions.
11 * src/clistub.c (main) [argc > 1]: Use them.
12 (progname): New local variable within `main'; set it once, then use it
13 instead of repeated references to `basename(*argv)' in diagnostics.
14 (MINGW_GET_DLL, MINGW_GET_GUI): Relocate to `src/rites.c'.
16 * src/debug.h (DEBUG_INHIBIT_RITES_OF_PASSAGE):
17 (DEBUG_FAIL_FILE_RENAME_RITE, DEBUG_FAIL_FILE_UNLINK_RITE): New
18 defines; they facilitate debugging of the src/rites.c code.
20 * Makefile.in (lastrites$EXEEXT): New target; build as prerequisite...
21 (all): ...of this primary target.
22 (install, install-strip): Install it.
23 (SRCDIST_FILES): Remove install-sh; it is now included in...
24 (build-aux): ...this directory; add it to...
25 (SRCDIST_SUBDIRS): ...this.
27 2010-08-24 Keith Marshall <keithmarshall@users.sourceforge.net>
29 Set default sysroots relative to mingw-get installation directory.
31 * xml/profile.xml (system-map) [name == default]: For each of...
32 [subsystem == mingw32]: ...set sysroot path to value of %R macro...
33 [subsystem == msys]: ...and to its %R/msys/1.0 subdirectory.
35 2010-08-19 Keith Marshall <keithmarshall@users.sourceforge.net>
37 Some dependency resolver enhancements and bug fixes.
39 * src/pkgbase.h (pkgXmlNode::GetContainerAttribute): New method;
42 * src/pkgdeps.cpp (pkgXmlNode::GetContainerAttribute): Implement it;
43 it is used to retrieve package name attributes from the containing
44 'package' element, when given a pointer to a 'release' element by...
45 (assert_unmatched, assert_installed): ...these new static functions.
46 (pkgXmlDocument::Schedule): Use them to reconstruct and register
47 dependency reference data for previously installed packages which are
48 no longer included in the distribution manifest.
49 (pkgXmlDocument::ResolveDependencies): Fix a block nesting error;
50 catch and diagnose unresolved dependencies; don't look beyond the XML
51 document root node, (tinyxml error not caught?), when searching for
52 requirements specified on container nodes.
54 2010-08-17 Keith Marshall <keithmarshall@users.sourceforge.net>
56 Improve scheduling of package processing requests.
58 * src/pkgexec.cpp (pkgXmlDocument::Schedule): Inspect entire `actions'
59 list, when checking for duplicate package processing requests; decline
60 to schedule any such duplicate, or any request which lacks a package
63 2010-08-15 Keith Marshall <keithmarshall@users.sourceforge.net>
65 Lay foundation for selective compilation of debugging code.
67 * src/debug.h: New file...
68 * src/sysroot.cpp: Include it.
69 (pkgXmlDocument::LoadSystemMap): Make debugging output conditional...
70 [DEBUGLEVEL & DEBUG_TRACE_INIT]: ...on this new debugging state.
72 2010-08-15 Keith Marshall <keithmarshall@users.sourceforge.net>
74 * src/pkgkeys.h: Typo in comment: file was previously identified as
77 2010-08-13 Keith Marshall <keithmarshall@users.sourceforge.net>
79 Improve diagnostics for invalid references to non-release XML nodes.
81 * src/pkgkeys.h (value_unknown): New global string; declare it.
82 * src/pkgkeys.c (value_unknown): Implement it.
84 * src/pkgname.cpp (pkgArchiveName): Identify XML element type when
85 diagnosing references to elements of types other than release; use...
86 (value_unknown): ...this, as appropriate.
88 2010-08-12 Keith Marshall <keithmarshall@users.sourceforge.net>
90 Guard against a potential buffer overrun.
92 * src/pkgreqs.cpp (pkgSpecs::SetProperty): Allocate an additional
93 byte to accommodate an extra field separator, when inserting a new
94 data value into a previously empty field.
96 2010-07-27 Cesar Strauss <cestrauss@gmail.com>
98 Handle the GNU long name tar header format.
100 * src/pkgproc.h (TAR_ENTITY_TYPE_GNU_LONGNAME): New manifest constant;
102 (pkgTarArchiveProcessor::EntityDataAsString): New protected method;
104 * src/tarproc.cpp: ...implement it.
105 (pkgTarArchiveProcessor::Process): Before building the entry pathname,
106 check for a GNU long name type header; when found, read pathname from
107 the entry data area, before fetching the following header, from which
108 to retrieve the associated entity data.
110 2010-06-24 Keith Marshall <keithmarshall@users.sourceforge.net>
112 Work around an autoconf bug (reported by Stefano Sabatini).
114 * Makefile.in (VPATH): Use @top_srcdir@ instead of ${srcdir}; current
115 autoconf incorrectly elides references to @srcdir@ and ${srcdir} when
116 substituting within a VPATH specification for building `in-source'.
117 Also, prefer colons to blanks as path name separators, for improved
118 portability to non-GNU implementations of make; (recommendation by
121 2010-06-24 Keith Marshall <keithmarshall@users.sourceforge.net>
123 Include alias search, when matching component package name.
125 * src/keyword.c (has_keyword): Rearrange argument declarations for
126 more natural order; update all callers accordingly. Simplify; compare
127 keyword to be matched with each successive candidate from match-list,
128 character-by-character and in-place, so avoiding memory allocation
129 for any local duplicate of the passed match-list; thus...
130 (safe_strdup): ...this static function no longer required; delete it.
131 (string.h): No references remain; do not include it.
133 * src/pkgfind.cpp (pkgXmlNode::FindPackageByName): Augment component
134 package name matching to include potential matches of the look-up name
135 with trailing component name stripped off, when that matches the class
136 name of an identified component package, and the initial substring of
137 the look-up name, after stripping, matches any specified alias name
138 for the containing package.
140 2010-06-10 Keith Marshall <keithmarshall@users.sourceforge.net>
142 Address FIXME relating to identification of distributable files.
144 * install-sh: Move to...
145 * build-aux: ...this new directory.
147 * Makefile.in (PACKAGE_DISTVERSION): Modify `sed' edit sequence; make
148 it depend on, and ensure that it incorporates the expansion of...
149 (PACKAGE_SUBSYSTEM): ...this new macro; defined as substitution of...
150 (host_os): ...this autoconf variable, set by...
152 * configure.ac (AC_CANONICAL_HOST): ...this; add it, requiring...
153 (AC_CONFIG_AUX_DIR): ...`build-aux' directory reference, providing...
155 * build-aux/config.guess, build-aux/config.sub: ...these new standard
156 files; import them from the standard `build-aux' repository.
158 2010-05-17 Keith Marshall <keithmarshall@users.sourceforge.net>
160 Bump version for next release cycle.
162 * configure.ac (AC_INIT): Bump version suffix to alpha-3.
164 2010-05-17 Keith Marshall <keithmarshall@users.sourceforge.net>
166 mingw-get-0.1-mingw32-alpha-2 released.
168 * README: Add new release notes.
170 * xml/profile.xml: Update to use default referencing for...
171 (package-list.xml.lzma): ...this repository master catalogue.
173 * All files (r0-1-alpha-2): Tag assigned.
175 2010-05-12 Keith Marshall <keithmarshall@users.sourceforge.net>
177 Make provision to protect user's profile settings during upgrade.
179 * Makefile.in (install): Remove `profile.xml'; replace it with...
180 (install-profile): ...this new prerequisite installation goal; it
181 renames the installed copy of `profile.xml' as `defaults.xml', within
182 the installed package image.
184 * src/pkgkeys.h (defaults_key): New key; declare it.
185 * src/pkgkeys.c: Some cosmetic formatting (tabulation) adjustments.
186 (defaults_key): Implement it; it refers to the `defaults.xml' file.
188 * src/climain.cpp (climain): Check `profile_key' for accessibility of
189 the `profile.xml' file; if [! R_OK] emit a diagnostic warning, fall
190 back on `defaults_key', and attempt to load configuration from the
191 distributed `defaults.xml' file.
193 2010-05-11 Keith Marshall <keithmarshall@users.sourceforge.net>
195 Add preliminary support for future `-reinstall' option.
197 * src/pkgexec.cpp (pkgActionItem::Execute) [ACTION_INSTALL]: Force
198 installation if `-reinstall' option is selected, overriding state of
199 any prior installation; temporarily assume that this option is always
200 selected, to permit proper `upgrade' operation in the absence of any
201 functional `uninstall' capability, and pending implementation of a
202 mechanism for interpreting user specified options.
204 2010-05-11 Keith Marshall <keithmarshall@users.sourceforge.net>
206 Correct handling for "%R" macro in relative sysroot path specs.
208 * src/tarproc.cpp (pkgTarArchiveProcessor): In constructor, expand the
209 sysroot path specification a second time, to capture the effect of any
210 embedded macros, before computing the recorded `sysroot_len' value.
212 2010-05-05 Keith Marshall <keithmarshall@users.sourceforge.net>
214 Handle "%" wildcard matches in package and subsystem version strings.
216 * src/pkgbase.h (pkgSpecs): Forward declare it.
217 (pkgActionItem::~pkgActionItem): Declare explicit destructor.
218 (pkgActionItem::SetRequirements): Add extra `pkgSpecs*' argument;
219 update references, passing additional argument in...
221 * src/pkgdeps.cpp (pkgXmlDocument::ResolveDependencies): ...this.
223 * src/pkgexec.cpp (pkgActionItem::~pkgActionItem): Implement it.
224 (pkgActionItem::SetRequirements): Delete obsolete implementation.
226 * src/pkginfo/pkginfo.h: Update copyright notice; add year 2010.
227 (pkgSpecs::GetTarName): New public method; declare it.
228 (pkgSpecs::SetProperty): New private method; declare it.
229 (pkgSpecs::SetPackageName): New inline method; implement it.
230 (pkgSpecs::SetPackageVersion, pkgSpecs::SetPackageBuild): Likewise.
231 (pkgSpecs::SetSubSystemName, pkgSpecs::SetSubSystemVersion): Likewise.
232 (pkgSpecs::SetSubSystemBuild, pkgSpecs::SetReleaseStatus): Likewise.
233 (pkgSpecs::SetReleaseIndex, pkgSpecs::SetComponentClass): Likewise.
234 (pkgSpecs::SetComponentVersion, pkgSpecs::SetPackageFormat): Likewise.
235 (pkgSpecs::SetCompressionType): Likewise.
237 * src/pkginfo/pkginfo.l: Update copyright notice; add year 2010.
238 (TRANS): Interpret "%" as wildcard in version string matches.
240 * src/pkgreqs.cpp: New file.
241 (pkgActionItem::SetRequirements): Reimplement per new declaration;
242 it now always allocates heap memory for requirements specifications.
243 (pkgSpecs::GetTarName, pkgSpecs::SetProperty): Implement them.
245 * Makefile.in (CORE_DLL_OBJECTS): Add `pkgreqs.$(OBJEXT)'.
247 2010-04-30 Keith Marshall <keithmarshall@users.sourceforge.net>
249 Revert 2010-04-04 refactoring of tarproc.cpp and tarinst.cpp
251 * src/tarinst.cpp: File removed; its content merged into...
252 * src/tarproc.cpp: ...this; it cannot be cleanly separated out.
254 * Makefile.in (tarinst.$OBJEXT): Remove reference.
256 2010-04-29 Keith Marshall <keithmarshall@users.sourceforge.net>
258 Handle "*" wildcard matches in package and subsystem version strings.
260 * src/vercmp.h (pkgVersionInfo::version_string): New private member
261 variable; it stores a pointer to a dynamically allocated local copy of
262 the invariant `version' argument, to facilitate correct parsing.
263 (pkgVersionInfo::build_string): Likewise; it provides similar handling
264 for the invariant `build' argument.
265 (pkgVersionInfo::Free): New private inline method; it provides a NULL
266 pointer safe wrapper, calling the C library `free()' function, (since
267 some implementations are believed to be unsafe); it is used by...
268 (pkgVersionInfo::~pkgVersionInfo): ...this new inline destructor, to
269 release the memory allocated by the constructor, for `version_string'
272 * src/vercmp.cpp (pkgVersionInfo::pkgVersionInfo): Allocate memory for
273 `version_string' and `build_string', as required; populate it.
274 Explicitly handle "*" as a `match anything' wildcard...
275 (pkgVersionInfo::Compare): ...matching it as `equal' to everything.
277 2010-04-18 Keith Marshall <keithmarshall@users.sourceforge.net>
279 Correct omission from configure script prerequisite checks.
281 * aclocal.m4 (MINGW_AC_OUTPUT): New macro; it wraps AC_OUTPUT itself,
282 adding a trap to force an abort if any preceding prerequisite check
283 was handled by MINGW_AC_ASSERT_MISSING.
285 * configure.ac: Qualify package component types, in prerequisite
286 checks handled by MINGW_AC_ASSERT_MISSING; invoke MINGW_AC_OUTPUT
287 in place of AC_OUTPUT.
289 2010-04-17 Keith Marshall <keithmarshall@users.sourceforge.net>
291 Add configure script checks for prerequisite library headers.
292 (Thanks to Cesar Strauss for proposing a rudimentary implementation).
294 * aclocal.m4: New file; it does no more than include...
295 * m4/missing.m4: ...this; new file incorporated from build-aux module.
297 * configure.ac: Add AC_CHECK_HEADER assertions for...
298 (zlib.h, bzlib.h, lzma.h): ...these; invoke MINGW_AC_ASSERT_MISSING in
299 respect of each failing assertion.
301 2010-04-17 Keith Marshall <keithmarshall@users.sourceforge.net>
303 Case-insensitive subsystem name matching revisited.
305 * src/pkgfind.cpp (pkgXmlDocument::FindPackageByName): Use...
306 (subsystem_strcmp): ...this to match subsystem names, instead of...
307 (match_if_explicit): ...this.
309 2010-04-15 Keith Marshall <keithmarshall@users.sourceforge.net>
311 Enable recursive processing of repository package lists.
313 * src/pkgbase.h (pkgXmlDocument::SyncRepository): Make it public.
315 * src/pkgbind.cpp (pkgRepository): New locally defined and implemented
316 class; it facilitates recursive loading and parsing of package lists,
317 replacing much of the original non-recursive functionality within...
318 (pkgXmlDocument::BindRepositories): ...this; use it.
320 2010-04-04 Keith Marshall <keithmarshall@users.sourceforge.net>
322 Implement installer function; use per-package file manifests.
324 * src/pkgproc.h (pkgManifest): New class; declare it.
325 (pkgArchiveProcessor::origin): New protected member variable.
326 (pkgArchiveProcessor::sysroot_len): New protected member variable.
327 (pkgArchiveProcessor::installed): Type changed to `pkgManifest *'.
328 (pkgTarArchiveInstaller::Process): Declare specialisation hook.
329 (pkgTarArchiveInstaller::UpdateInstallationManifest): Disused member
330 function; remove redundant declaration from class definition.
331 (pkgInstall): New generalised installation function; declare it.
332 (pkgRegister): New function; declare it.
334 * src/pkginst.cpp: New file.
335 (pkgManifest, pkgInstall, pkgRegister): Implement them.
337 * src/pkgexec.cpp (pkgActionItem::Execute): Use `pkgInstall' in place
338 of stub formerly provided here.
340 * src/pkgkeys.h (manifest_key, reference_key): New keys; declare them.
341 * src/pkgkeys.c (manifest_key, reference_key): Implement them.
343 * src/tarproc.cpp: Code refactored.
344 (pkgTarArchiveProcessor::sysroot_len): Initialise it.
345 (pkgTarArchiveProcessor::origin): Initialise it.
346 (pkgTarArchiveProcessor::installed): Initialise; associate it with a
347 pkgManifest class entity, and populate this as appropriate.
348 (pkgTarArchiveProcessor::~pkgTarArchiveProcessor): Add explicit clean
349 up of linked `pkgManifest *' entity referenced by `installed'.
350 (pkgTarArchiveProcessor::Process) [TAR_ENTITY_TYPE_DIRECTORY]: Add
351 braces to demarcate localised inner scope of string scan for removal
352 of trailing directory name separators; (thanks to Cesar Strauss for
353 reporting invalid local pointer declaration error in GCC >= 4.4).
354 (pkgTarArchiveInstaller::UpdateInstallationManifest): Deleted.
355 (pkgTarArchiveInstaller::pkgTarArchiveInstaller): Factor out.
356 (pkgTarArchiveInstaller::ProcessDirectory): Likewise.
357 (pkgTarArchiveInstaller::ProcessDataStream): Likewise.
358 (commit_saved_entity): Likewise.
360 * src/tarinst.cpp: New file; it implements...
361 (pkgTarArchiveInstaller::Process): ...this new specialisation
362 of the original pkgTarArchiveProcessor::Process method...
363 (pkgTarArchiveInstaller::pkgTarArchiveInstaller): ...and this
364 refactored code, abstracted from src/tarproc.cpp and modified to
365 use the pkgManifest class for installation tracking.
366 (pkgTarArchiveInstaller::ProcessDirectory): Likewise.
367 (pkgTarArchiveInstaller::ProcessDataStream): Likewise.
368 (commit_saved_entity): Relocated from src/tarproc.cpp.
370 * Makefile.in (CORE_DLL_OBJECTS): Add...
371 (pkginst.OBJEXT, tarinst.OBJEXT): ...these new object files.
373 2010-03-31 Keith Marshall <keithmarshall@users.sourceforge.net>
375 Guard against NULL pointer dereferences in tinyxml code.
377 * src/pkgbase.h (pkgXmlNode::GetName): Verify `this' pointer is
378 non-NULL, before invoking the underlying tinyxml method.
379 (pkgXmlNode::GetParent, pkgXmlNode::GetChildren): Likewise.
380 (pkgXmlNode::GetNext, pkgXmlNode::GetPropVal): Likewise.
381 (pkgXmlNode::AddChild, pkgXmlNode::DeleteChild): Likewise.
382 (pkgXmlNode::GetDocumentRoot): Likewise.
383 (pkgXmlNode::IsElementOfType): Likewise.
385 2010-03-28 Cesar Strauss <cestrauss@gmail.com>
387 Avoid running InternetAttemptConnect in pkgInternetAgent
388 constructor, since it is called during DLL initialisation.
390 * src/pkginet.cpp (pkgInternetAgent::pkgInternetAgent): Move the
391 InternetAttemptConnect call from constructor...
392 (pkgInternetAgent::OpenURL): ...to here.
394 2010-03-23 Keith Marshall <keithmarshall@users.sourceforge.net>
396 Automate object code dependency tracking.
398 * Makefile.in (DEPFLAGS): New macro; define it.
399 (%.OBJEXT: %.c, %.OBJEXT: %.cpp): Add dependency generator commands...
400 (%.d): ...to create these dependency maps; `sinclude' them, and...
401 (clean): ...remove them.
403 * .cvsignore (*.d): Add wild card template to match them.
405 2010-03-22 Keith Marshall <keithmarshall@users.sourceforge.net>
407 Support case insensitive matching for file and subsystem names.
409 * src/pkgbase.h (safe_strcmp): New inline function; it provides NULL
410 argument safe comparison of strings, returning the boolean inverse of
411 the `strcmp' result, using either case-sensitive or case-insensitive
412 semantics; derive it from...
413 (match_if_explicit): ...this; redefine as macro; invoke `safe_strcmp'
414 using explicitly case-sensitive semantics.
415 (subsystem_strcmp): New macro; it invokes `safe_strcmp' with either
416 case-sensitive or case-insensitive semantics, depending on...
417 (CASE_INSENSITIVE_SUBSYSTEMS): ...this new context selection macro; it
418 fixes the choice between case-sensitive and case-insensitive matching
419 semantics for any given implementation, at compile time.
420 (pkg_strcmp): New macro; it invokes `safe_strcmp' with either
421 case-sensitive or case-insensitive semantics, depending on...
422 (CASE_INSENSITIVE_FILESYSTEM): ...this new context selection macro; it
423 fixes the choice between case-sensitive and case-insensitive matching
424 semantics for any given implementation, at compile time.
426 * src/sysroot.cpp (pkgXmlNode::GetSysRoot): Use `subsystem_strcmp'.
428 2010-03-02 Keith Marshall <keithmarshall@users.sourceforge.net>
430 Add preliminary support for virtual packages.
432 * src/pkgkeys.h (yes_value, no_value): Redefine as aliases...
433 (value_yes, value_no): ...for these new global strings; declare them.
434 (value_none, value_virtual): New global strings; declare them.
436 * src/pkgkeys.c (yes_value, no_value): Rename...
437 (value_yes, value_no): ...to implement these, respectively.
438 (value_none, value_virtual): Implement them.
440 * src/pkgname.cpp (pkgXmlNode::ArchiveName): Check containing package
441 node for `class' attribute set to `value_virtual'; if present, always
442 return the effective `tarname' property as `value_none'.
444 * src/pkginet.cpp (pkgActionItem::DownloadArchiveFiles): For packages
445 with an effective `tarname' of `value_none', do not download anything.
447 * src/pkgexec.cpp (pkgActionItem::Execute): For packages with an
448 effective `tarname' of `value_none', do not invoke any tar archive
451 2010-03-02 Keith Marshall <keithmarshall@users.sourceforge.net>
453 Don't write installation records for unavailable packages.
455 * src/tarproc.cpp (pkgTarArchiveInstaller): In constructor, ensure
456 archive is ready for processing, before initialising an installation
459 2010-03-02 Keith Marshall <keithmarshall@users.sourceforge.net>
461 Rationalise path identification for XML file locations.
463 * src/sysroot.cpp (pkgXmlDocument::LoadSystemMap): Use `xmlfile()'
464 function to locate `sysroot' map file; free memory when done.
465 (pkgXmlDocument::UpdateSystemMap): Likewise.
466 (sigpath): Static global variable disused; delete it.
468 2010-03-01 Keith Marshall <keithmarshall@users.sourceforge.net>
470 Extend package name search to include component packages.
472 * src/pkgfind.cpp (pkgHasMatchingName): Remove; fold it into...
473 (pkgXmlNode::FindPackageByName): ...this; augment to extend search
474 within package definition elements, seeking a potential match on an
475 included component package name or component class-implied name.
477 * src/pkgkeys.h (class_key): New global string constant; declare it.
478 * src/pkgkeys.c (class_key): Implement it.
480 2010-02-16 Keith Marshall <keithmarshall@users.sourceforge.net>
482 Bump version for next release cycle.
484 * configure.ac (AC_INIT): Bump version suffix to alpha-2.
486 2010-02-16 Keith Marshall <keithmarshall@users.sourceforge.net>
488 mingw-get-0.1-mingw32-alpha-1 released.
490 2010-02-16 Keith Marshall <keithmarshall@users.sourceforge.net>
492 Prepare initial package release.
494 * README: New file; use it to source release notes.
496 * Makefile.in (SRCDIST_FILES): Use ...
497 (LICENCE_FILES): ...this new macro; define it.
498 (licdist): New build goal; implement it.
499 (bindist): Require it; add alternative `zip' format package.
501 * xml/profile.xml (repository): Set default `package-index' name.
502 (system-map): Normalise spelling for default `sysroot' path names.
504 2010-02-10 Keith Marshall <keithmarshall@users.sourceforge.net>
506 Add directory/file records in installation manifests.
508 * src/pkgkeys.h (dirname_key, filename_key): New strings; declare...
509 * src/pkgkeys.c (dirname_key, filename_key): ...and implement them.
511 * src/pkgproc.h (pkgArchiveProcessor::installed): New class member
512 variable; declare it.
513 (pkgTarArchiveInstaller::UpdateInstallationManifest): New method;
516 * src/tarproc.cpp: Miscellaneous comment updates.
517 (pkgTarArchiveInstaller): In constructor...
518 (pkgTarArchiveInstaller::installed): ...use new member variable...
519 (pkgArchiveProcessor::installed): ...inherited from this.
520 (pkgTarArchiveInstaller::UpdateInstallationManifest): Implement and...
521 (pkgTarArchiveInstaller::ProcessDataStream): ...use it.
522 (pkgTarArchiveInstaller::ProcessDirectory): Likewise.
524 2010-02-06 Keith Marshall <keithmarshall@users.sourceforge.net>
526 Work around a deficiency in Microsoft's stat() implementation.
528 * src/tarproc.cpp (pkgTarArchiveProcessor::ProcessDirectory): Don't
529 pass a `pathname' argument with trailing slashes; strip them off.
531 2010-02-06 Keith Marshall <keithmarshall@users.sourceforge.net>
533 Add machinery for installation and packaging for distribution.
535 * install-sh: New file; source it from autoconf distribution.
537 * configure.ac (AC_PREFIX_DEFAULT): Assign it as `C:/MinGW'.
538 (AC_PROG_MKDIR_P, AC_PROG_INSTALL, AC_PROG_LN_S): Invoke these.
539 (STRIP): New output variable; use AC_CHECK_TOOL to define it.
541 * Makefile.in (abs_top_srcdir): Define to AC_SUBST value.
542 (PACKAGE_TARNAME, PACKAGE_VERSION): Define to AC_SUBST values.
543 (prefix, exec_prefix, bindir, libexecdir, localstatedir): Likewise.
544 (INSTALL, INSTALL_PROGRAM, INSTALL_SCRIPT, INSTALL_DATA): Likewise.
545 (STRIP): New macro; define it using AC_CHECK_TOOL substitution.
546 (mkinstalldirs): New macro; define it as AC_PROG_MKDIR_P result.
547 (LN_S): New macro; define it as AC_PROG_LN_S result.
548 (dist, srcdist, bindist): New build objectives; implement them.
549 (install, installdirs, install-strip, maintainer-clean): Likewise.
550 (SRCDIST_FILES, SRCDIST_SUBDIRS): New macros; define them.
551 (PACKAGE_DISTNAME, PACKAGE_DISTVERSION): Likewise.
552 (PACKAGE_DISTROOT, PACKAGE_ROOTVERSION): Likewise.
553 (PACKAGE_CONFIG_DIR): Likewise.
555 2010-02-02 Keith Marshall <keithmarshall@users.sourceforge.net>
557 Implement package installer for tar archives.
559 * src/pkgexec.cpp (pkgXmlDocument::Execute): Replace existing
560 stub implementation of installer, using methods provided by...
561 * src/pkgproc.h, src/tarproc.cpp: ...these new files, with trap...
562 * src/pkgdeps.cpp (pkgXmlDocument::Schedule) [installed]: Add entry...
563 (pkgActionItem::Selection) [to_remove]: ...for this; use it to detect
564 `install' requests for packages which are aleady installed.
566 * Makefile.in (CORE_DLL_OBJECTS): Add tarproc.$(OBJEXT); specify
567 dependencies as appropriate.
569 * src/sysroot.cpp (pkgXmlDocument::LoadSystemMap): Don't commit
570 newly created `sysroot' mapping records to disk; defer to...
571 (pkgXmlDocument::UpdateSystemMap): ...this new method.
572 (sigpath): Make it a global variable, with file (static) scope.
574 * src/climain.cpp (pkgXmlDocument::UpdateSystemMap): Invoke it.
576 * src/pkgkeys.h (download_key, modified_key, source_key): New global
577 string variables; declare them, providing their implementations...
578 * src/pkgkeys.c (download_key, modified_key, source_key): ...here.
579 * src/pkgname.cpp (download_key, source_key): Use them.
581 * src/pkginet.cpp (pkgActionItem::ArchivePath): Delete; replace...
582 * src/mkpath.c (pkgArchivePath): ...with this free standing function.
583 * src/mkpath.h (pkgArchivePath): Declare its prototype.
585 * src/pkgbase.h (pkgActionItem::ArchivePath): Delete declaration.
586 (pkgXmlDocument): Add a default constructor; implement as `inline'.
587 (pkgXmlDocument::AddDeclaration): Use heap memory to allocate the new
588 declaration object, instead of `auto' variable, to avoid scope error.
589 (pkgXmlDocument::UpdateSystemMap): Declare it.
591 2010-01-26 Keith Marshall <keithmarshall@users.sourceforge.net>
593 Implement rudimentary dependency resolver.
595 * src/pkgdeps.cpp: New file.
597 * Makefile.in (CORE_DLL_OBJECTS): Add pkgdeps.$(OBJEXT) reference;
598 establish header file dependencies.
600 * src/pkgbase.h (to_remove, to_install, selection_types): New enum.
601 (pkgActionItem::selection): Extend it to store as enumerated pair...
602 (pkgActionItem::SelectPackage): New inline method; assign them.
603 (pkgActionItem::Selection): New inline method; retrieve them.
604 (pkgXmlNode::GetInstallationRecord): New method; declare it.
606 * src/pkgexec.cpp (pkgActionItem): In constructor...
607 (selection): ...initialise both references in enumerated pair.
608 (pkgActionItem::GetReference): Use `Selection()' method.
609 (pkgActionItem::SelectIfMostRecent): Ditto; also correct logic for
610 making selection, and assign to `to_install' element.
611 (pkgXmlDocument::Schedule): Don't update `request'.
612 (pkgActionItem::Execute): Implement as stub.
614 * src/pkginet.cpp (pkgActionItem::DownloadArchiveFiles): Use new
615 `Selection()' method.
617 * src/pkgkeys.h (yes_value, no_value): Declare new string constants.
618 * src/pkgkeys.c (yes_value, no_value): Implement them.
620 * src/vercmp.cpp: Update copyright notice.
621 (pkgVersionInfo::operator<=): Bug fix; must test for `<', but had `>'.
623 2010-01-23 Keith Marshall <keithmarshall@users.sourceforge.net>
625 Avoid segmentation faults when processing invalid data streams.
627 * src/pkgstrm.h: Update copyright notice.
628 (pkgArchiveStream::IsReady): New pure virtual method.
629 (pkgRawArchiveStream::IsReady): Provide inline implementation.
630 (pkgGzipArchiveStream::IsReady): Likewise.
631 (pkgBzipArchiveStream::IsReady): Likewise.
632 (pkgLzmaArchiveStream::IsReady): Likewise.
633 (pkgXzArchiveStream::IsReady): Likewise.
635 * src/pkgstrm.cpp: Update copyright notice.
636 (pkgLzmaArchiveStream, pkgXzArchiveStream) [fd == -1]: Decline to
637 perform any form of read or decode processing.
639 * src/pkginet.cpp (pkgInternetLzmaStreamingAgent): Use `fd = -2' as
640 pseudo-descriptor for the pkgLzmaArchiveStream derived component of
641 this internet data streaming class.
643 2010-01-23 Keith Marshall <keithmarshall@users.sourceforge.net>
645 Require liblzma >= liblzma-4.999.9beta_20091209-3-mingw32-dev
647 * src/pkgstrm.h (LZMA_API_STATIC): Remove definition and associated
648 comment; it was required to permit, (but not to enforce), linking to
649 the static liblzma.a library, with earlier beta releases, but this
650 anomaly has now been corrected.
652 2010-01-22 Keith Marshall <keithmarshall@users.sourceforge.net>
654 Remove zlib sources from trunk.
655 (Application builders should use free standing implementation of
656 zlib, from MinGW's package distribution page on SourceForge).
658 2010-01-22 Keith Marshall <keithmarshall@users.sourceforge.net>
660 Remove bzip2 sources from trunk.
661 (Application builders should use free standing implementation of
662 bzip2, from MinGW's package distribution page on SourceForge).
664 2010-01-22 Keith Marshall <keithmarshall@users.sourceforge.net>
666 Add subsystem specific sysroot mapping facility.
668 * src/pkghash.c: New file; required by...
669 * src/sysroot.cpp: New file; it implements...
670 (pkgXmlDocument::LoadSystemMap, pkgXmlNode::GetSysRoot): New methods.
672 * src/pkgbase.h: Update copyright notice.
673 (pkgXmlDocument::LoadSystemMap): Declare it.
674 (pkgXmlDocument::AddDeclaration): New inline method.
675 (pkgXmlDocument::SetRoot, pkgXmlDocument::Save): Likewise.
676 (pkgXmlNode::GetSysRoot): Declare it.
677 (pkgXmlNode::GetDocumentRoot): New inline method.
678 (pkgXmlNode::AddChild, pkgXmlNode::DeleteChild): Likewise.
680 * src/climain.cpp: Update copyright notice.
681 (climain): Invoke pkgXmlDocument::LoadSystemMap() as required.
683 * Makefile.in (CORE_DLL_OBJECTS): Add ...
684 (pkghash.$(OBJEXT), sysroot.$(OBJEXT)): ...these; upate dependencies.
685 (DEBUGLEVEL): New macro; define it.
688 2010-01-16 Keith Marshall <keithmarshall@users.sourceforge.net>
690 Assign standardised keys for XML database lookup.
692 * src/pkgkeys.h: New file; provide public key declarations.
693 * src/pkgkeys.c: New file; implement them.
695 * src/pkgbind.cpp: Use them; update copyright notice.
696 * src/pkgexec.cpp, src/pkgfind.cpp, src/pkginet.cpp: Likewise.
697 * src/pkgname.cpp, src/pkgspec.cpp: Likewise.
699 * Makfile.in (CORE_DLL_OBJECTS): Add pkgkeys.$(OBJEXT); update all
700 dependencies accordingly.
702 2010-01-08 Keith Marshall <keithmarshall@users.sourceforge.net>
704 Add CLI version reporting option.
706 * configure.ac: Update copyright notice for new year.
707 (COPYRIGHT_HOLDER): New AC_SUBST variable; define it.
708 (YEARS_OF_ISSUE): New AC_SUBST variable; define it.
709 (AC_CONFIG_FILES): Add `version.c'; source it from...
711 * version.c.in: ...this new file.
713 * Makefile.in: Update copyright notice for new year.
714 (mingw-get$(EXEEXT)): Add dependency on `version.$(OBJEXT)'.
715 (distclean): Add `version.c'.
717 * configure: Regenerated.
719 * src/clistub.c: Update copyright notice for new year.
720 (options): New array of `struct option'; define and use it as the
721 reference for `argv' parsing with `getopt_long_only()'.
723 2009-12-17 Keith Marshall <keithmarshall@users.sourceforge.net>
725 Add CLI support for "update" action.
727 * src/pkgtask.h (ACTION_UPDATE): Define it, derived from...
728 (action_update): ...this new entry in anonymous enumeration.
730 * src/pkgexec.cpp (action_name): Add "update" keyword identification.
732 * src/pkgbase.h: Typo in comment; s/xwXmlDocument/wxXmlDocument/.
733 (pkgXmlDocument::BindRepositories): Add `force_update' parameter...
734 * src/pkgbind.cpp (pkgXmlDocument::BindRepositories): Use it to...
735 (pkgXmlDocument::SyncRepository): ...invoke this method when passed as
736 a `true' flag, in addition to (as previously) first time reference.
738 * src/climain.cpp (climain): Interpret "update" keyword for...
739 [ACTION_UPDATE]: ...passing state as `force_update' parameter to...
740 (pkgXmlDocument::BindRepositories): ...this method, then...
741 [!ACTION_UPDATE]: Follow with normal action processing.
743 2009-12-16 Keith Marshall <keithmarshall@users.sourceforge.net>
745 Add status checking for Internet URL connections.
747 * src/pkginet.cpp (pkgInternetAgent::QueryStatus): New method.
748 (pkgInternetStreamingAgent::Get): Use it; set `dl_status' as return
749 value, deferring failure diagnostics to callers, i.e. to...
750 (pkgXmlDocument::SyncRepositories): ...this, and to...
751 (pkgActionItem::DownloadArchiveFiles): ...this.
753 2009-11-23 Keith Marshall <keithmarshall@users.sourceforge.net>
755 Add package download and repository synchronisation machinery.
757 * src/pkgstrm.h: New header file.
759 * src/pkgbind.cpp, src/pkginet.cpp, src/pkgstrm.cpp,
760 src/pkgfind.cpp, src/pkgname.cpp, src/keyword.c: New files.
761 * Makefile.in (CORE_DLL_OBJECTS): Add build goals for them.
763 * xml: New directory.
765 * src/climain.cpp (climain): Establish repository bindings from...
766 * xml/profile.xml: ...this new configuration file.
768 2009-11-16 Keith Marshall <keithmarshall@users.sourceforge.net>
770 Add XML database bindings and preliminary action executive for CLI.
772 * src/pkgbase.h, src/pkgtask.h,
773 src/mkpath.h, src/vercmp.h: New header files.
775 * src/climain.cpp, src/pkgexec.cpp, src/pkgspec.cpp,
776 src/mkpath.c, src/vercmp.cpp, src/xmlfile.c: New files.
778 * Makefile.in (CORE_DLL_OBJECTS): Define initial set of files...
779 (mingw-get-0.dll): ...build them into this new DLL target; add it...
780 (all): ...as prerequisite for this primary build goal.
782 2009-11-12 Keith Marshall <keithmarshall@users.sourceforge.net>
784 Avoid some potential GCC warnings.
786 * src/clistub.c: Include process.h for `execv' prototype...
787 (main): Cast `argv' to appropriately matched type when calling it.
789 * src/pkginfo/driver.c: Include stdlib.h for `free' prototype.
791 2009-11-11 Keith Marshall <keithmarshall@users.sourceforge.net>
793 Create diagnostic message handler for CLI usage.
795 * src/dmh.h: New header file; it defines the public interface.
796 * src/dmh.cpp: New file; it implements the message handler.
798 2009-11-05 Keith Marshall <keithmarshall@users.sourceforge.net>
800 Correct some identified TinyXML issues.
802 * tinyxml/tinyxml.h (IsWhiteSpace): Add FIXME annotation to flag
803 probable redundancy of checks for '\n' and '\r'.
804 * tinyxml/tinyxmlparser.cpp: Revert John E's 2008-08-09 change; remove
805 all such redundancies in IsWhiteSpace() calls throughout.
807 * tinyxml/tinyxml.cpp (TiXmlAttribute::SetDoubleValue): Correct format
808 specification in sprintf()/snprintf() calls; "%lf" is invalid; replace
811 2009-10-31 Keith Marshall <keithmarshall@users.sourceforge.net>
815 * src/clistub.c: New file.
816 * Makefile.in: Add build rule for it; build as...
817 (mingw-get.exe): ...this; also add to...
818 (clean): ...this goal.
820 2009-10-31 Keith Marshall <keithmarshall@users.sourceforge.net>
822 Set up build mechanism.
824 * configure.ac, Makefile.in: New files.
825 * .cvsignore (configure, autom4te.cache): Add to ignored files.
827 2009-10-30 Keith Marshall <keithmarshall@users.sourceforge.net>
829 Add GPL-v3 licensing terms.
831 * COPYING: New file, sourced from gnu.org.
833 2009-10-12 Keith Marshall <keithmarshall@users.sourceforge.net>
835 Add pkginfo implementation.
837 * src, src/pkginfo: New directories.
838 * src/pkginfo/pkginfo.h, src/pkginfo/pkginfo.l: New files.
839 * src/pkginfo/driver.c: New file.
841 2009-10-12 Keith Marshall <keithmarshall@users.sourceforge.net>
845 * All files (tdm-branch): Assign new branch tag.
846 * All top-level files: Remove from trunk.
847 * ChangeLog: New file.