X-Git-Url: http://git.osdn.net/view?a=blobdiff_plain;f=ChangeLog;h=c4810c1bac4e0af4dd368843319078f7d8efdea4;hb=6d9a6e549e992e6c0f36eabd0f6d515b4f1b83a3;hp=d2f1d65e9758ec0aae3732f3bafe754bceca5c5b;hpb=868ba679cd9b5a855d251ad0b4dd0d1064ce05d4;p=mingw%2Fmingw-get.git diff --git a/ChangeLog b/ChangeLog index d2f1d65..c4810c1 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,555 @@ +2010-09-10 Charles Wilson + + Fix "mingw-get deletes itself" bug in last rites handling. + + * README: Add new release notes. + + * configure.ac: Bump version to 0.1-alpha-4. + + * src/dmh.h: If __cplusplus, include and + declare dmh_exception class. + + * src/dmh.cpp (class dmh_exception): Implement. + (abort_if_fatal): If DMH_FATAL, throw dmh_exception rather + than calling exit(). + + * src/climain.cpp (climain): Wrap entry function body in try/ + catch block. If dmh_exception is caught, return EXIT_FAILURE. + + * src/clistub.c (main): Capture return value of climain(). If + non-zero, perform last rites and return EXIT_FAILURE. + +2010-08-30 Keith Marshall + + mingw-get-0.1-mingw32-alpha-3 released. + + * README: Add new release notes. + + * All files (r0-1-alpha-3): Tag assigned. + +2010-08-27 Keith Marshall + + Add runtime hooks to support self-upgrade for future releases. + + * src/rites.c: New file; compile it free-standing, to provide... + (lastrites.exe): ...this helper application for context clean-up; + alternatively, use it as an include file, with pre-definition of... + (IMPLEMENT_INITIATION_RITES): ...this, to implement... + (pkgInitRites, pkgLastRites): ...these inline functions. + + * src/clistub.c (main) [argc > 1]: Use them. + (progname): New local variable within `main'; set it once, then use it + instead of repeated references to `basename(*argv)' in diagnostics. + (MINGW_GET_DLL, MINGW_GET_GUI): Relocate to `src/rites.c'. + + * src/debug.h (DEBUG_INHIBIT_RITES_OF_PASSAGE): + (DEBUG_FAIL_FILE_RENAME_RITE, DEBUG_FAIL_FILE_UNLINK_RITE): New + defines; they facilitate debugging of the src/rites.c code. + + * Makefile.in (lastrites$EXEEXT): New target; build as prerequisite... + (all): ...of this primary target. + (install, install-strip): Install it. + (SRCDIST_FILES): Remove install-sh; it is now included in... + (build-aux): ...this directory; add it to... + (SRCDIST_SUBDIRS): ...this. + +2010-08-24 Keith Marshall + + Set default sysroots relative to mingw-get installation directory. + + * xml/profile.xml (system-map) [name == default]: For each of... + [subsystem == mingw32]: ...set sysroot path to value of %R macro... + [subsystem == msys]: ...and to its %R/msys/1.0 subdirectory. + +2010-08-19 Keith Marshall + + Some dependency resolver enhancements and bug fixes. + + * src/pkgbase.h (pkgXmlNode::GetContainerAttribute): New method; + declare it. + + * src/pkgdeps.cpp (pkgXmlNode::GetContainerAttribute): Implement it; + it is used to retrieve package name attributes from the containing + 'package' element, when given a pointer to a 'release' element by... + (assert_unmatched, assert_installed): ...these new static functions. + (pkgXmlDocument::Schedule): Use them to reconstruct and register + dependency reference data for previously installed packages which are + no longer included in the distribution manifest. + (pkgXmlDocument::ResolveDependencies): Fix a block nesting error; + catch and diagnose unresolved dependencies; don't look beyond the XML + document root node, (tinyxml error not caught?), when searching for + requirements specified on container nodes. + +2010-08-17 Keith Marshall + + Improve scheduling of package processing requests. + + * src/pkgexec.cpp (pkgXmlDocument::Schedule): Inspect entire `actions' + list, when checking for duplicate package processing requests; decline + to schedule any such duplicate, or any request which lacks a package + association. + +2010-08-15 Keith Marshall + + Lay foundation for selective compilation of debugging code. + + * src/debug.h: New file... + * src/sysroot.cpp: Include it. + (pkgXmlDocument::LoadSystemMap): Make debugging output conditional... + [DEBUGLEVEL & DEBUG_TRACE_INIT]: ...on this new debugging state. + +2010-08-15 Keith Marshall + + * src/pkgkeys.h: Typo in comment: file was previously identified as + pkgkeys.c; corrected. + +2010-08-13 Keith Marshall + + Improve diagnostics for invalid references to non-release XML nodes. + + * src/pkgkeys.h (value_unknown): New global string; declare it. + * src/pkgkeys.c (value_unknown): Implement it. + + * src/pkgname.cpp (pkgArchiveName): Identify XML element type when + diagnosing references to elements of types other than release; use... + (value_unknown): ...this, as appropriate. + +2010-08-12 Keith Marshall + + Guard against a potential buffer overrun. + + * src/pkgreqs.cpp (pkgSpecs::SetProperty): Allocate an additional + byte to accommodate an extra field separator, when inserting a new + data value into a previously empty field. + +2010-07-27 Cesar Strauss + + Handle the GNU long name tar header format. + + * src/pkgproc.h (TAR_ENTITY_TYPE_GNU_LONGNAME): New manifest constant; + define it. + (pkgTarArchiveProcessor::EntityDataAsString): New protected method; + declare and... + * src/tarproc.cpp: ...implement it. + (pkgTarArchiveProcessor::Process): Before building the entry pathname, + check for a GNU long name type header; when found, read pathname from + the entry data area, before fetching the following header, from which + to retrieve the associated entity data. + +2010-06-24 Keith Marshall + + Work around an autoconf bug (reported by Stefano Sabatini). + + * Makefile.in (VPATH): Use @top_srcdir@ instead of ${srcdir}; current + autoconf incorrectly elides references to @srcdir@ and ${srcdir} when + substituting within a VPATH specification for building `in-source'. + Also, prefer colons to blanks as path name separators, for improved + portability to non-GNU implementations of make; (recommendation by + Ralf Wildenhues). + +2010-06-24 Keith Marshall + + Include alias search, when matching component package name. + + * src/keyword.c (has_keyword): Rearrange argument declarations for + more natural order; update all callers accordingly. Simplify; compare + keyword to be matched with each successive candidate from match-list, + character-by-character and in-place, so avoiding memory allocation + for any local duplicate of the passed match-list; thus... + (safe_strdup): ...this static function no longer required; delete it. + (string.h): No references remain; do not include it. + + * src/pkgfind.cpp (pkgXmlNode::FindPackageByName): Augment component + package name matching to include potential matches of the look-up name + with trailing component name stripped off, when that matches the class + name of an identified component package, and the initial substring of + the look-up name, after stripping, matches any specified alias name + for the containing package. + +2010-06-10 Keith Marshall + + Address FIXME relating to identification of distributable files. + + * install-sh: Move to... + * build-aux: ...this new directory. + + * Makefile.in (PACKAGE_DISTVERSION): Modify `sed' edit sequence; make + it depend on, and ensure that it incorporates the expansion of... + (PACKAGE_SUBSYSTEM): ...this new macro; defined as substitution of... + (host_os): ...this autoconf variable, set by... + + * configure.ac (AC_CANONICAL_HOST): ...this; add it, requiring... + (AC_CONFIG_AUX_DIR): ...`build-aux' directory reference, providing... + + * build-aux/config.guess, build-aux/config.sub: ...these new standard + files; import them from the standard `build-aux' repository. + +2010-05-17 Keith Marshall + + Bump version for next release cycle. + + * configure.ac (AC_INIT): Bump version suffix to alpha-3. + +2010-05-17 Keith Marshall + + mingw-get-0.1-mingw32-alpha-2 released. + + * README: Add new release notes. + + * xml/profile.xml: Update to use default referencing for... + (package-list.xml.lzma): ...this repository master catalogue. + + * All files (r0-1-alpha-2): Tag assigned. + +2010-05-12 Keith Marshall + + Make provision to protect user's profile settings during upgrade. + + * Makefile.in (install): Remove `profile.xml'; replace it with... + (install-profile): ...this new prerequisite installation goal; it + renames the installed copy of `profile.xml' as `defaults.xml', within + the installed package image. + + * src/pkgkeys.h (defaults_key): New key; declare it. + * src/pkgkeys.c: Some cosmetic formatting (tabulation) adjustments. + (defaults_key): Implement it; it refers to the `defaults.xml' file. + + * src/climain.cpp (climain): Check `profile_key' for accessibility of + the `profile.xml' file; if [! R_OK] emit a diagnostic warning, fall + back on `defaults_key', and attempt to load configuration from the + distributed `defaults.xml' file. + +2010-05-11 Keith Marshall + + Add preliminary support for future `-reinstall' option. + + * src/pkgexec.cpp (pkgActionItem::Execute) [ACTION_INSTALL]: Force + installation if `-reinstall' option is selected, overriding state of + any prior installation; temporarily assume that this option is always + selected, to permit proper `upgrade' operation in the absence of any + functional `uninstall' capability, and pending implementation of a + mechanism for interpreting user specified options. + +2010-05-11 Keith Marshall + + Correct handling for "%R" macro in relative sysroot path specs. + + * src/tarproc.cpp (pkgTarArchiveProcessor): In constructor, expand the + sysroot path specification a second time, to capture the effect of any + embedded macros, before computing the recorded `sysroot_len' value. + +2010-05-05 Keith Marshall + + Handle "%" wildcard matches in package and subsystem version strings. + + * src/pkgbase.h (pkgSpecs): Forward declare it. + (pkgActionItem::~pkgActionItem): Declare explicit destructor. + (pkgActionItem::SetRequirements): Add extra `pkgSpecs*' argument; + update references, passing additional argument in... + + * src/pkgdeps.cpp (pkgXmlDocument::ResolveDependencies): ...this. + + * src/pkgexec.cpp (pkgActionItem::~pkgActionItem): Implement it. + (pkgActionItem::SetRequirements): Delete obsolete implementation. + + * src/pkginfo/pkginfo.h: Update copyright notice; add year 2010. + (pkgSpecs::GetTarName): New public method; declare it. + (pkgSpecs::SetProperty): New private method; declare it. + (pkgSpecs::SetPackageName): New inline method; implement it. + (pkgSpecs::SetPackageVersion, pkgSpecs::SetPackageBuild): Likewise. + (pkgSpecs::SetSubSystemName, pkgSpecs::SetSubSystemVersion): Likewise. + (pkgSpecs::SetSubSystemBuild, pkgSpecs::SetReleaseStatus): Likewise. + (pkgSpecs::SetReleaseIndex, pkgSpecs::SetComponentClass): Likewise. + (pkgSpecs::SetComponentVersion, pkgSpecs::SetPackageFormat): Likewise. + (pkgSpecs::SetCompressionType): Likewise. + + * src/pkginfo/pkginfo.l: Update copyright notice; add year 2010. + (TRANS): Interpret "%" as wildcard in version string matches. + + * src/pkgreqs.cpp: New file. + (pkgActionItem::SetRequirements): Reimplement per new declaration; + it now always allocates heap memory for requirements specifications. + (pkgSpecs::GetTarName, pkgSpecs::SetProperty): Implement them. + + * Makefile.in (CORE_DLL_OBJECTS): Add `pkgreqs.$(OBJEXT)'. + +2010-04-30 Keith Marshall + + Revert 2010-04-04 refactoring of tarproc.cpp and tarinst.cpp + + * src/tarinst.cpp: File removed; its content merged into... + * src/tarproc.cpp: ...this; it cannot be cleanly separated out. + + * Makefile.in (tarinst.$OBJEXT): Remove reference. + +2010-04-29 Keith Marshall + + Handle "*" wildcard matches in package and subsystem version strings. + + * src/vercmp.h (pkgVersionInfo::version_string): New private member + variable; it stores a pointer to a dynamically allocated local copy of + the invariant `version' argument, to facilitate correct parsing. + (pkgVersionInfo::build_string): Likewise; it provides similar handling + for the invariant `build' argument. + (pkgVersionInfo::Free): New private inline method; it provides a NULL + pointer safe wrapper, calling the C library `free()' function, (since + some implementations are believed to be unsafe); it is used by... + (pkgVersionInfo::~pkgVersionInfo): ...this new inline destructor, to + release the memory allocated by the constructor, for `version_string' + and `build_string'. + + * src/vercmp.cpp (pkgVersionInfo::pkgVersionInfo): Allocate memory for + `version_string' and `build_string', as required; populate it. + Explicitly handle "*" as a `match anything' wildcard... + (pkgVersionInfo::Compare): ...matching it as `equal' to everything. + +2010-04-18 Keith Marshall + + Correct omission from configure script prerequisite checks. + + * aclocal.m4 (MINGW_AC_OUTPUT): New macro; it wraps AC_OUTPUT itself, + adding a trap to force an abort if any preceding prerequisite check + was handled by MINGW_AC_ASSERT_MISSING. + + * configure.ac: Qualify package component types, in prerequisite + checks handled by MINGW_AC_ASSERT_MISSING; invoke MINGW_AC_OUTPUT + in place of AC_OUTPUT. + +2010-04-17 Keith Marshall + + Add configure script checks for prerequisite library headers. + (Thanks to Cesar Strauss for proposing a rudimentary implementation). + + * aclocal.m4: New file; it does no more than include... + * m4/missing.m4: ...this; new file incorporated from build-aux module. + + * configure.ac: Add AC_CHECK_HEADER assertions for... + (zlib.h, bzlib.h, lzma.h): ...these; invoke MINGW_AC_ASSERT_MISSING in + respect of each failing assertion. + +2010-04-17 Keith Marshall + + Case-insensitive subsystem name matching revisited. + + * src/pkgfind.cpp (pkgXmlDocument::FindPackageByName): Use... + (subsystem_strcmp): ...this to match subsystem names, instead of... + (match_if_explicit): ...this. + +2010-04-15 Keith Marshall + + Enable recursive processing of repository package lists. + + * src/pkgbase.h (pkgXmlDocument::SyncRepository): Make it public. + + * src/pkgbind.cpp (pkgRepository): New locally defined and implemented + class; it facilitates recursive loading and parsing of package lists, + replacing much of the original non-recursive functionality within... + (pkgXmlDocument::BindRepositories): ...this; use it. + +2010-04-04 Keith Marshall + + Implement installer function; use per-package file manifests. + + * src/pkgproc.h (pkgManifest): New class; declare it. + (pkgArchiveProcessor::origin): New protected member variable. + (pkgArchiveProcessor::sysroot_len): New protected member variable. + (pkgArchiveProcessor::installed): Type changed to `pkgManifest *'. + (pkgTarArchiveInstaller::Process): Declare specialisation hook. + (pkgTarArchiveInstaller::UpdateInstallationManifest): Disused member + function; remove redundant declaration from class definition. + (pkgInstall): New generalised installation function; declare it. + (pkgRegister): New function; declare it. + + * src/pkginst.cpp: New file. + (pkgManifest, pkgInstall, pkgRegister): Implement them. + + * src/pkgexec.cpp (pkgActionItem::Execute): Use `pkgInstall' in place + of stub formerly provided here. + + * src/pkgkeys.h (manifest_key, reference_key): New keys; declare them. + * src/pkgkeys.c (manifest_key, reference_key): Implement them. + + * src/tarproc.cpp: Code refactored. + (pkgTarArchiveProcessor::sysroot_len): Initialise it. + (pkgTarArchiveProcessor::origin): Initialise it. + (pkgTarArchiveProcessor::installed): Initialise; associate it with a + pkgManifest class entity, and populate this as appropriate. + (pkgTarArchiveProcessor::~pkgTarArchiveProcessor): Add explicit clean + up of linked `pkgManifest *' entity referenced by `installed'. + (pkgTarArchiveProcessor::Process) [TAR_ENTITY_TYPE_DIRECTORY]: Add + braces to demarcate localised inner scope of string scan for removal + of trailing directory name separators; (thanks to Cesar Strauss for + reporting invalid local pointer declaration error in GCC >= 4.4). + (pkgTarArchiveInstaller::UpdateInstallationManifest): Deleted. + (pkgTarArchiveInstaller::pkgTarArchiveInstaller): Factor out. + (pkgTarArchiveInstaller::ProcessDirectory): Likewise. + (pkgTarArchiveInstaller::ProcessDataStream): Likewise. + (commit_saved_entity): Likewise. + + * src/tarinst.cpp: New file; it implements... + (pkgTarArchiveInstaller::Process): ...this new specialisation + of the original pkgTarArchiveProcessor::Process method... + (pkgTarArchiveInstaller::pkgTarArchiveInstaller): ...and this + refactored code, abstracted from src/tarproc.cpp and modified to + use the pkgManifest class for installation tracking. + (pkgTarArchiveInstaller::ProcessDirectory): Likewise. + (pkgTarArchiveInstaller::ProcessDataStream): Likewise. + (commit_saved_entity): Relocated from src/tarproc.cpp. + + * Makefile.in (CORE_DLL_OBJECTS): Add... + (pkginst.OBJEXT, tarinst.OBJEXT): ...these new object files. + +2010-03-31 Keith Marshall + + Guard against NULL pointer dereferences in tinyxml code. + + * src/pkgbase.h (pkgXmlNode::GetName): Verify `this' pointer is + non-NULL, before invoking the underlying tinyxml method. + (pkgXmlNode::GetParent, pkgXmlNode::GetChildren): Likewise. + (pkgXmlNode::GetNext, pkgXmlNode::GetPropVal): Likewise. + (pkgXmlNode::AddChild, pkgXmlNode::DeleteChild): Likewise. + (pkgXmlNode::GetDocumentRoot): Likewise. + (pkgXmlNode::IsElementOfType): Likewise. + +2010-03-28 Cesar Strauss + + Avoid running InternetAttemptConnect in pkgInternetAgent + constructor, since it is called during DLL initialisation. + + * src/pkginet.cpp (pkgInternetAgent::pkgInternetAgent): Move the + InternetAttemptConnect call from constructor... + (pkgInternetAgent::OpenURL): ...to here. + +2010-03-23 Keith Marshall + + Automate object code dependency tracking. + + * Makefile.in (DEPFLAGS): New macro; define it. + (%.OBJEXT: %.c, %.OBJEXT: %.cpp): Add dependency generator commands... + (%.d): ...to create these dependency maps; `sinclude' them, and... + (clean): ...remove them. + + * .cvsignore (*.d): Add wild card template to match them. + +2010-03-22 Keith Marshall + + Support case insensitive matching for file and subsystem names. + + * src/pkgbase.h (safe_strcmp): New inline function; it provides NULL + argument safe comparison of strings, returning the boolean inverse of + the `strcmp' result, using either case-sensitive or case-insensitive + semantics; derive it from... + (match_if_explicit): ...this; redefine as macro; invoke `safe_strcmp' + using explicitly case-sensitive semantics. + (subsystem_strcmp): New macro; it invokes `safe_strcmp' with either + case-sensitive or case-insensitive semantics, depending on... + (CASE_INSENSITIVE_SUBSYSTEMS): ...this new context selection macro; it + fixes the choice between case-sensitive and case-insensitive matching + semantics for any given implementation, at compile time. + (pkg_strcmp): New macro; it invokes `safe_strcmp' with either + case-sensitive or case-insensitive semantics, depending on... + (CASE_INSENSITIVE_FILESYSTEM): ...this new context selection macro; it + fixes the choice between case-sensitive and case-insensitive matching + semantics for any given implementation, at compile time. + + * src/sysroot.cpp (pkgXmlNode::GetSysRoot): Use `subsystem_strcmp'. + +2010-03-02 Keith Marshall + + Add preliminary support for virtual packages. + + * src/pkgkeys.h (yes_value, no_value): Redefine as aliases... + (value_yes, value_no): ...for these new global strings; declare them. + (value_none, value_virtual): New global strings; declare them. + + * src/pkgkeys.c (yes_value, no_value): Rename... + (value_yes, value_no): ...to implement these, respectively. + (value_none, value_virtual): Implement them. + + * src/pkgname.cpp (pkgXmlNode::ArchiveName): Check containing package + node for `class' attribute set to `value_virtual'; if present, always + return the effective `tarname' property as `value_none'. + + * src/pkginet.cpp (pkgActionItem::DownloadArchiveFiles): For packages + with an effective `tarname' of `value_none', do not download anything. + + * src/pkgexec.cpp (pkgActionItem::Execute): For packages with an + effective `tarname' of `value_none', do not invoke any tar archive + processing function. + +2010-03-02 Keith Marshall + + Don't write installation records for unavailable packages. + + * src/tarproc.cpp (pkgTarArchiveInstaller): In constructor, ensure + archive is ready for processing, before initialising an installation + manifest record. + +2010-03-02 Keith Marshall + + Rationalise path identification for XML file locations. + + * src/sysroot.cpp (pkgXmlDocument::LoadSystemMap): Use `xmlfile()' + function to locate `sysroot' map file; free memory when done. + (pkgXmlDocument::UpdateSystemMap): Likewise. + (sigpath): Static global variable disused; delete it. + +2010-03-01 Keith Marshall + + Extend package name search to include component packages. + + * src/pkgfind.cpp (pkgHasMatchingName): Remove; fold it into... + (pkgXmlNode::FindPackageByName): ...this; augment to extend search + within package definition elements, seeking a potential match on an + included component package name or component class-implied name. + + * src/pkgkeys.h (class_key): New global string constant; declare it. + * src/pkgkeys.c (class_key): Implement it. + +2010-02-16 Keith Marshall + + Bump version for next release cycle. + + * configure.ac (AC_INIT): Bump version suffix to alpha-2. + +2010-02-16 Keith Marshall + + mingw-get-0.1-mingw32-alpha-1 released. + +2010-02-16 Keith Marshall + + Prepare initial package release. + + * README: New file; use it to source release notes. + + * Makefile.in (SRCDIST_FILES): Use ... + (LICENCE_FILES): ...this new macro; define it. + (licdist): New build goal; implement it. + (bindist): Require it; add alternative `zip' format package. + + * xml/profile.xml (repository): Set default `package-index' name. + (system-map): Normalise spelling for default `sysroot' path names. + +2010-02-10 Keith Marshall + + Add directory/file records in installation manifests. + + * src/pkgkeys.h (dirname_key, filename_key): New strings; declare... + * src/pkgkeys.c (dirname_key, filename_key): ...and implement them. + + * src/pkgproc.h (pkgArchiveProcessor::installed): New class member + variable; declare it. + (pkgTarArchiveInstaller::UpdateInstallationManifest): New method; + declare it. + + * src/tarproc.cpp: Miscellaneous comment updates. + (pkgTarArchiveInstaller): In constructor... + (pkgTarArchiveInstaller::installed): ...use new member variable... + (pkgArchiveProcessor::installed): ...inherited from this. + (pkgTarArchiveInstaller::UpdateInstallationManifest): Implement and... + (pkgTarArchiveInstaller::ProcessDataStream): ...use it. + (pkgTarArchiveInstaller::ProcessDirectory): Likewise. + 2010-02-06 Keith Marshall Work around a deficiency in Microsoft's stat() implementation.