OSDN Git Service

Don't attempt to resolve dependencies for unidentified packages.
[mingw/mingw-get.git] / ChangeLog
index 7ef57ea..0aa8045 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,412 @@
+2013-10-18  Keith Marshall  <keithmarshall@users.sourceforge.net>
+
+       Don't attempt to resolve dependencies for unidentified packages.
+
+       * src/pkgdeps.cpp (pkgXmlDocument::ResolveDependencies):
+       [selected == NULL]: Current dependency is unresolved; do not make any
+       recursive call for this unidentified requirement.  This avoids posting
+       misleading "can't get 'tarname' for non-release element <<<unknown>>>"
+       diagnostic messages, where the subsequent "unresolved dependency"
+       message is sufficient; include dmhmsgs.h, and add...
+       (PKGMSG_SPECIFICATION_ERROR): ...this preamble instead.
+
+2013-10-18  Keith Marshall  <keithmarshall@users.sourceforge.net>
+
+       Implement foundation for future NLS enabled diagnostics.
+
+       * src/dmhmsgs.h: New file; it declares the NLS capable DMH interface.
+       * src/dmhmsgs.c: New file; it implements rudimentary NLS hooks, (but
+       currently does not direct them to any NLS provider), together with an
+       initial subset of a default (compiled in) message catalogue.
+
+       * Makefile.in (CORE_DLL_OBJECTS): Add dmhmsgs.$OBJEXT
+
+       * src/pkgname.cpp (pkgArchiveName): Modify diagnostics, to use...
+       (PKGMSG_SPECIFICATION_ERROR): ...this dmhmsgs.h declared message.
+
+2013-10-15  Keith Marshall  <keithmarshall@users.sourceforge.net>
+
+       Add automated build time configuration management.
+
+       * Makefile.in (Makefile): Add regeneration rules, depending on...
+       (VERSION.m4, configure.ac, aclocal.m4, missing.m4, makeopts.m4):
+       ...these, if modified by the package maintainer, directed via...
+       (config.status, configure): ...these, regenerated as required.
+
+2013-10-04  Keith Marshall  <keithmarshall@users.sourceforge.net>
+
+       mingw-get-0.6.2-mingw32-beta-20131004-1 released.
+
+       * VERSION.m4 (VERSION_PATCH): Increment it.
+       * srcdist-doc/NEWS.in: Release notes updated.
+       * All files (r0-6-4-beta-20131004-1): Tag assigned.
+
+2013-10-03  Keith Marshall  <keithmarshall@users.sourceforge.net>
+
+       Propagate RELEASE_CLASS setting from mingw-get-setup.
+
+       * configure.ac (CLI_RELEASE_CLASS, GUI_RELEASE_CLASS): Adopt...
+       (RELEASE_CLASS) [defined]: ...this as default value.
+
+2013-10-02  Keith Marshall  <keithmarshall@users.sourceforge.net>
+
+       Support group affiliation with component package granularity.
+
+       * src/pkglist.cpp (pkgXmlNode::IsVisibleClass): Make it synonymous
+       with IsVisibleGroupMember(); this is a temporary adjustment, pending
+       the planned implementation of component class visibility filtering.
+       (pkgListViewMaker::Dispatch): Defer consideration of visibility until
+       traversal of component package directories, except in the particular
+       case of packages which lack defined components.
+
+2013-10-01  Keith Marshall  <keithmarshall@users.sourceforge.net>
+
+       Correct processing of package group associations.
+
+       * src/pkgtree.cpp (AppWindowMaker::IsPackageGroupAffiliate): Iterate
+       over "affiliate_key" elements in FindNextAssociate() calls; original
+       implementation was incorrectly iterating over "group_key" elements.
+
+2013-09-21  Keith Marshall  <keithmarshall@users.sourceforge.net>
+
+       Reorder controls within "Apply Changes" dialogue.
+
+       * src/guimain.rc (IDD_APPLY_APPROVE): Move definition of the "Okay to
+       proceed?" GROUPBOX, and its contained PUSHBUTTONs, to the top; we want
+       it to get the default focus.
+
+2013-09-21  Keith Marshall  <keithmarshall@users.sourceforge.net>
+
+       Reimplement wsh.lua in C/C++; (cf. MinGW-Bug #2057).
+
+       * src/pkgexec.cpp (LUA_INLINE): New function attribute definition.
+       (init_lua_path): Use it, reproducing the original function attributes.
+       (lua_isstringarg): New LUA_INLINE helper function; implement it.
+       (lua_wsh_libexec_path): New function; it implements wsh.libexec_path
+       (lua_wsh_execute): New function; it implements wsh.execute
+       (luaload_wsh): New function; it wraps references to lua_wsh_execute()
+       and lua_wsh_libexec_path() to provide the wsh module implementation.
+       (pkgXmlNode::DispatchScript): Preload it into the Lua interpreter.
+
+       * scripts/libexec/setup.lua (M.argwrap): New method; implement it.
+       (M.shlink, M.unlink): Use it to collect their arguments into a single
+       string, to be passed as the command to be invoked by wsh.execute
+
+       * scripts/libexec/wsh.lua: File is no longer required; delete it.
+       * Makefile.in (LIBEXEC_SCRIPTS): Remove reference to it.
+
+2013-09-20  Keith Marshall  <keithmarshall@users.sourceforge.net>
+
+       Establish default preferences for GUI; (cf. MinGW-Feature #2036)
+
+       * src/pkgbase.h (pkgXmlDocument::EstablishPreferences): Adjust its
+       prototype; add argument identifying prospective client classification.
+
+       * src/pkgopts.cpp (client_key): New XML property keyword; define it.
+       (pkgXmlDocument::EstablishPreferences): Implement filter, based on new
+       client classification argument, to restrict preference selection to a
+       matching client class specification.
+
+       * src/climain.cpp (dbase.EstablishPreferences): Filter on class "cli".
+       * src/guiexec.cpp (pkgData->EstablishPreferences): Likewise, on "gui".
+
+       * xml/profile.xml (preferences): Add client="cli" attribute for the
+       existing specification; add another for client="gui".
+
+2013-09-20  Keith Marshall  <keithmarshall@users.sourceforge.net>
+
+       Force canonical comparison of shell links; (cf. MinGW-Bug #2054)
+
+       * scripts/libexec/unlink.js [FileExists(filename) && (chklink != "")]:
+       The value of 'chklink' may not be canonical; instantiate an (unsaved)
+       link reference from it, then compare the canonicalized reference from
+       within it, to the reference within 'filename', thus avoiding possible
+       lexical mismatch between canonical and non-canonical forms.
+
+2013-09-19  Keith Marshall  <keithmarshall@users.sourceforge.net>
+
+       Correct LUA_PATH assignment for GUI; (cf. MinGW-Bug #2052)
+
+       * src/pkgexec.cpp (LUA_LIBEXEC_PATH): New manifest string; define it.
+       (init_lua_path) <LUA_PATH>: Use it; add guimain.exe app directory.
+
+2013-09-19  Keith Marshall  <keithmarshall@users.sourceforge.net>
+
+       Handle meta-package removal correctly; (cf. MinGW-Bug #2051)
+
+       * src/pkgunst.cpp (pkgRemove) [archive == none]: Ensure the pending
+       action flag is cleared; previously this was done during manifest clean
+       up, and since a meta-package has no manifest, it was overlooked.
+
+2013-09-10  Keith Marshall  <keithmarshall@users.sourceforge.net>
+
+       mingw-get-0.6.1-mingw32-beta-20130910-1 released.
+
+       * srcdist-doc/NEWS.in: Release notes updated.
+       * All files (r0-6-1-beta-20130910-1): Tag assigned.
+
+2013-09-10  Keith Marshall  <keithmarshall@users.sourceforge.net>
+
+       Fix MinGW-Bug #2026.
+
+       * src/dmhguix.cpp (DMH_PTY_GUARDBYTES): New manifest constant.
+       (dmhTypePTY::printf) [buffer full]: Use it; it defines a reserved byte
+       count, at end of buffer, where expansion or scroll out is triggered;
+       use memcpy() for scroll out, but avoid overlapping regions.
+       (dmhTypePTY::printf) [output == '\r']: Handle it.
+
+       * src/tarproc.cpp (create_output_stream): Improve diagnostic messages;
+       discriminate between file collision and other privilege violations.
+       (pkgArchiveProcessor::ExtractFile): Don't return a zero status code,
+       when the output stream could not be successfully opened, so that...
+       (pkgTarArchiveInstaller::ProcessDataStream): ...we may avoid writing a
+       spurious manifest entry here.
+
+2013-09-06  Keith Marshall  <keithmarshall@users.sourceforge.net>
+
+       Update version, pre-empting subsequent release.
+
+       * VERSION.m4 (VERSION_PATCH): Bump from zero to 1.
+
+2013-09-04  Keith Marshall  <keithmarshall@users.sourceforge.net>
+
+       mingw-get-0.6.0-mingw32-beta-20130904-1 released.
+
+       * srcdist-doc/NEWS.in srcdist-doc/README.in: Release notes updated.
+       * srcdist-doc/INSTALL.in: Installation instructions updated.
+       * All files (r0-6-0-beta-20130904-1): Tag assigned.
+
+2013-08-26  Keith Marshall  <keithmarshall@users.sourceforge.net>
+
+       Implement retry throttling for failed internet connections.
+
+       * src/pkginet.h (INTERNET_RETRY_ATTEMPTS): New macro; define it.
+       (INTERNET_RETRY_INTERVAL, INTERNET_DELAY_FACTOR): Likewise.
+
+       * src/pkginet.cpp (INTERNET_RETRY_REQUESTER): New typedef.
+       (pkgInternetAgent::connection_delay, pkgInternetAgent::delay_factor):
+       (pkgInternetAgent::retries, pkgInternetAgent::retry_interval): New
+       private member variables; declare them.
+       (pkgInternetAgent::OpenURL): Use them; they must be initialised by...
+       (pkgInternetAgent::SetRetryOptions): ...this new method; implement it.
+       (pkgActionItem::DownloadSingleArchive): Invoke it.
+       (pkgXmlDocument::SyncRepository): Likewise.
+
+2013-08-24  Keith Marshall  <keithmarshall@users.sourceforge.net>
+
+       Reassign default URL for download of setup tool components.
+
+       * aclocal.m4 (PACKAGE_DIST_DOMAIN, PACKAGE_DIST_DIR): New precious
+       variables; declare them as such, and assign default values by using...
+       (MINGW_AC_PACKAGE_DIST_URL): ...this new macro; implement it.
+
+       * configure.ac (MINGW_AC_PACKAGE_DIST_URL): Use it.
+       * Makefile.in (TAG_SCRIPT): Capture assigned URL; substitute it...
+       (PACKAGE_DIST_URL): ...for this replacement text marker...
+       * src/setup.rc (ID_DOWNLOAD_HOST_URI): ...here.
+
+2013-08-21  Keith Marshall  <keithmarshall@users.sourceforge.net>
+
+       Simplify guimain.exe duplicate instance prevention.
+
+       * src/guimain.cpp (WinMain): Delegate requisite checking to...
+       (WTK::RaiseAppWindow): ...this external toolkit function.
+
+2013-08-13  Keith Marshall  <keithmarshall@users.sourceforge.net>
+
+       Install licence as standard setup component.
+
+       * src/guimain.h src/setup.rc (ID_PACKAGE_GUI_DISTNAME): Macro
+       no longer required; delete definition.
+
+       * src/setup.cpp (pkgSetup::DoFirstTimeInstallation):
+       <pkgSetupAction> [ID_PACKAGE_GUI_DISTNAME]: Delete reference.
+       <pkgSetupAction> [ID_PACKAGE_BASE_DISTNAME]: Update reference; repeat
+       to explicitly address each of "bin", "gui", and "lic" components.
+
+       * Makefile.in (TAG_SCRIPT) [PACKAGE_GUI_DISTNAME]: Delete reference.
+       (TAG_SCRIPT) [PACKAGE_BASE_DISTNAME]: Redefine as template.
+
+2013-08-13  Keith Marshall  <keithmarshall@users.sourceforge.net>
+
+       More dialogue box adjustments.
+
+       * src/guimain.rc: Generally clean up white-space distribution.
+       (All dialogue templates): Use WS_TABSTOP consistently.
+
+2013-08-13  Keith Marshall  <keithmarshall@users.sourceforge.net>
+
+       Circumvent Windows-7 "Program Compatibility Assistant" misbehaviour.
+
+       * src/manifest.rc (assembly) <compatibility>: Add <supportedOS>
+       declarations for each of Vista, Win7, and (tentatively) Win8.
+
+2013-07-30  Keith Marshall  <keithmarshall@users.sourceforge.net>
+
+       Minor modification to "about" dialogue dismissal button.
+
+       * src/guimain.rc (IDD_HELP_ABOUT) <DEFPUSHBUTTON>: Change label text
+       to "Dismiss"; add WS_TABSTOP style.
+
+2013-07-30  Keith Marshall  <keithmarshall@users.sourceforge.net>
+
+       Match "about" dialogue caption to main window.
+
+       * src/guimain.rc (IDM_HELP_ABOUT) <MENUITEM>: Match it to...
+       (IDD_HELP_ABOUT) <CAPTION>: ...this; make it representative of...
+       (ID_MAIN_WINDOW_CAPTION): ...this.
+
+2013-07-30  Keith Marshall  <keithmarshall@users.sourceforge.net>
+
+       Implement "icon legend" display as "help" menu item.
+
+       * src/guimain.rc (IDM_HELP_LEGEND): Make menu item active; define
+       template for the dialogue box which it is to call out.
+
+       * src/guiexec.cpp (AppWindowMaker::OnCommand) [IDM_HELP_LEGEND]: New
+       case handler; implement dialogue box call out, as a variation on...
+       [IDM_HELP_ABOUT]: ...this; modify it accordingly.
+
+2013-07-30  Keith Marshall  <keithmarshall@users.sourceforge.net>
+
+       Avoid discarding pending changes when catalogue is updated.
+
+       * src/guimain.h (IDD_CONFIRMATION): New manifest constant; define it.
+       (AppWindowMaker::ConfirmActionDialogue): New static method; declare it.
+       (AppWindowMaker::ConfirmActionRequest): New method; declare it.
+
+       * src/guimain.rc (IDD_CONFIRMATION): Implement new dialogue template.
+
+       * src/guiexec.cpp (pkgConfirmAction, pkgConfirmActionClient): New
+       static variables; they are used as pseudo-arguments, together with...
+       (DIALOGUE_DISPATCH, DIALOGUE_RESPONSE, DIALOGUE_CHKSTATE): ...these
+       new macros; define them; they facilitate the implementation of...
+       (AppWindowMaker::ConfirmActionDialogue): ...this; implement it.
+       (AppWindowMaker::ConfirmActionRequest): Implement it; use it...
+       (AppWindowMaker::OnCommand) [IDM_REPO_UPDATE]: ...here, and...
+
+       * src/pkgdata.cpp (AppWindowMaker::OnClose): ...here.
+
+2013-07-26  Keith Marshall  <keithmarshall@users.sourceforge.net>
+
+       Make a minor GUI layout adjustment.
+
+       * src/pkgview.cpp (VSASH_INIT_POS): Increment from 0.30 to 0.35; this
+       sets the initial height of the package list pane to be 35% of the main
+       window height, which, at the default initial window size, neatly fits
+       the entire "Basic Setup" package group, without scrolling, on my
+       1366x768 pixel Win7-VM display.
+
+2013-07-25  Keith Marshall  <keithmarshall@users.sourceforge.net>
+
+       Implement setup tool installer "plugin".
+
+       * src/setup.h (SETUP_HOOK_RUN_INSTALLER): Define request code.
+
+       * src/dllhook.cpp (run_basic_system_installer): Implement handler...
+       (setup_hook) [SETUP_HOOK_RUN_INSTALLER]: ...and invoke it.
+       (setup_hook) [default]: Collect diagnostics in common message digest.
+       (AppWindowMaker::SetupHookInvoked): Define and initialise it; in this
+       context, which does not conflict with prior definition in guimain.exe,
+       it must always remain true.
+
+       * src/setup.cpp (SetupTool) [constructor]: Invoke...
+       (SetupTool::DispatchSetupHookRequest): ...this, on user's request...
+       (SETUP_HOOK_RUN_INSTALLER): ...with this action code; this replaces...
+       (SetupTool::RunInstalledProgram): ...one reference instance for this
+       external program fork, leaving only one such reference remaining;
+       declare it to be "inline".
+
+       * Makefile.in (GUIMAIN_LIB_OBJECTS): New macro; define it.  It
+       abstracts a subset of the object modules originally enumerated...
+       (GUIMAIN_OBJECTS): ...here, whence use it; also incorporate into...
+       (SETUP_DLL_OBJECTS): ...this.
+       (SETUP_DLL_LIBS): Make it equivalent to...
+       (GUIMAIN_LIBS): ...this.
+       (mingw-get-setup-0.dll): Use...
+       (GUI_LDFLAGS): ...this, to specify linking options, rather than...
+       (LDFLAGS): ...this.
+
+2013-07-25  Keith Marshall  <keithmarshall@users.sourceforge.net>
+
+       Add "Basic Setup" as a built-in standard package group.
+
+       * src/guimain.h (AppWindowMaker::SetupToolInvoked): New private
+       static member variable; declare it.
+
+       * src/guimain.cpp (AppWindowMaker::SetupToolInvoked): Define and
+       initialise it; this instance is specific to guimain.exe, where it
+       must always remain false.
+
+       * src/pkgtree.cpp (PKG_AFFILIATE_ALL): New constant; define it.
+       (load_package_group_hierarchy): Use it to specify those groups which
+       have all packages as affiliates, rather than just first root group.
+       (group_attributes): New static inline function; implement it, then...
+       (is_affiliated) [PKG_AFFILIATE_ALL]: ...use it to identify groups
+       which are specified as having all packages as affiliates.
+       (AppWindowMaker::InitPackageTreeView): Construct a temporary XML
+       specification for the "Basic Setup" package group, thence add it to
+       the package tree view; mark it as default group selection when...
+       [AppWindowMaker::SetupToolInvoked]: ...this is true.
+
+2013-07-14  Keith Marshall  <keithmarshall@users.sourceforge.net>
+
+       Implement GUI filtering of package list by group selection.
+
+       * src/pkgbase.h (pkgXmlNode::IsVisibleGroupMember):
+       (pkgXmlNode::IsVisibleClass): New inline methods; declare them.
+       (pkgXmlNode::MapPackageGroupHierarchy): New inline method; declare it.
+       (pkgXmlNode::SetPackageGroupHierarchyMapper): Likewise; it sets up...
+       (pkgXmlNode::PackageGroupHierarchyMapper): ...this new private static
+       function pointer; declare it as a function reference, in terms of...
+       (pkgXmlNode::GroupHierarchyMapper): ...this new typedef; define it.
+
+       * src/guimain.h (AppWindowMaker::PackageTreeView): Make it static.
+       (AppWindowMaker::IsPackageGroupAffiliate): Declare new static method.
+
+       * src/pkgbind.cpp (pkgRepository::GetPackageList): Make it invoke...
+       (pkgXmlNode::MapPackageGroupHierarchy): ...this; implement it.
+
+       * src/pkglist.cpp (pkgXmlNode::IsVisibleGroupMember): Implement it.
+       (pkgXmlNode::IsVisibleClass): Likewise; just provide a stub, for now.
+       (pkgListViewMaker::Dispatch): Use them to filter package list content.
+       (AppWindowMaker::UpdatePackageList): Redraw main window when done.
+
+       * src/pkgtree.cpp [_WIN32_IE >= 0x0400]: Require this.
+       (AppWindowMaker::PackageTreeView): Define and initialise it.
+       (AppWindowMaker::InitPackageTreeView): Extend implementation; use...
+       (map_package_group_hierarchy_recursive, load package_group_hierarchy):
+       (is_existing_group, map_package_group_hierarchy): ...these; implement
+       them locally, as file scoped static helper functions.
+       (select_key): New static local string constant; define it.
+       (pkgInitCategoryTreeGraft): Use it; also have it invoke...
+       (pkgXmlNode::SetPackageGroupHierarchyMapper): ...this; implement it.
+       (AppWindowMaker::IsPackageGroupAffiliate): Implement it; it uses...
+       (is_affiliated, is_child_affiliate): ...these helpers; provide them as
+       locally implemented, file scoped static functions.
+
+       * src/pkgdata.cpp (AppWindowMaker::OnNotify): Add handler for...
+       [ID_PACKAGE_TREEVIEW && TVN_SELCHANGED]: ...this notification.
+
+2013-07-12  Keith Marshall  <keithmarshall@users.sourceforge.net>
+
+       Correct a static string buffer aliasing issue.
+
+       * src/setup.cpp (SetupTool::setup_dll): New inline method; it ensures
+       that the buffer within approot_path() refers to the setup helper DLL.
+       (SetupTool::InitialiseSetupHookAPI): Use it, when loading the DLL.
+       (SetupTool::SetupTool): Use it again, when subsequently calling...
+       (_wunlink): ...this; it is now the preferred API, replacing...
+       (DeleteFileW): ...this; do not blindly assume that...
+       (SetupTool::dll_name): ...this remains unchanged between references;
+       it is an alias for the static buffer within approot_path().
+
+2013-07-12  Keith Marshall  <keithmarshall@users.sourceforge.net>
+
+       Add a custom profile for use by the setup tool.
+
+       * xml/setup.xml: New file.
+
 2013-07-03  Keith Marshall  <keithmarshall@users.sourceforge.net>
 
        Improve handling of workspace clean-up requests.