- gcc2 lacks the -iquote option, and side effects of some of the other flags
we use with it during the build cause some of libcurl's includes to fail.
This temporarily works around the problem until gcc2 can be suitably fixed.
- PackageManager: Add simple progress listener class for other parts
of depot to use, which in turn is notified when the user interaction
handler's download progress hook is called.
- InstallAction: Implement progress listener interface and add self
as listener when initiating a package installation.
This gets basic download progress reporting working in Depot, but isn't
yet complete, as, with the current implementation it doesn't properly handle
any dependent packages that might get downloaded, since InstallAction currently
only knows about the package info that it's directly responsible for. Needs a
bit more work to handle that correctly.
- Add accessors for storing/retrieving current download progress.
- Adjust PackageListView to be able to create a progress state from
the download percentage.
- BJobStateListener: Add progress state and corresponding hook.
- FetchFileJob: Notify job progress hook on libcurl notifications.
- UserInteractionHandler: Add hooks for download progress and checksum
validation progress.
- PackageManager: inherit from JobStateListener and watch for job
notifications for internally generated jobs. Forward to corresponding
UserInteractionHandler hooks as needed.
- Adapt pkgman, HaikuDepot and package_daemon to above changes.
Neither HaikuDepot nor package_daemon's progress hooks are wired up to
do anything yet though.
- Pull functionality back into package manager itself since the extra
indirection doesn't really buy us anything in this case, as neither
request that it handles requires a decision provider.
- Adjust pkgman and HaikuDepot accordingly.
- A subset of jobs that require a BContext don't in fact make use of the
decision provider. As such, make the default implementation usable for
those cases so one doesn't need to always create a dummy derived class.
- PackageAction now stores/returns a type code indicating the embodied
action. Adjust PackageActionView accordingly in its comparison of
the old/new package action list.
- If available, show the package's copyright information for the
publisher rather than the vendor, as the latter simply indicates
the maintainer of the repository rather than the actual developers
of the software contained in the package.
- BPackageManager doesn't (currently) support being reused for multiple
differing actions, so instantiate it on the fly for each action to be
performed.
- As such, pull the package action worker out of PackageManager and into
MainWindow. Define abstract interface PackageActionHandler for other
parts of Depot to use to instruct it to queue actions.
- Adjust other parts of code to take the above into account.
- MainWindow now listens for package installation state changes so
it can keep Model's package location lists in sync.
- PackageListView now updates its status column on package state changes.
- PackageInfoView now updates the available action list when package
installation state changes.
- PackageManager populates the expected user-specified install/uninstall
package sets for ProblemWindow so that one can properly filter those out.
There still remain some issues with the installed locations for ResultWindow
not being entirely correct though, which causes issues for package
uninstallation.
- Fix passing the force parameter to the refresh worker. This makes the
refresh depots menu item actually work.
- Make failure messages regarding depot initialization/refresh visible to the
user.
- The previous solution was applying source path mappings too early, with
the consequence that the file manager would incorrectly adjust some
relocations due to not being aware of the presence of all the possible
parent paths yet, leading to the observed "Source not available" behavior
when restoring some combinations of mappings. We now lazily apply the
mappings at the point when the source code itself is actually requested
to be loaded, which doesn't occur until after all image loading, etc.
has completed, so the information map is complete.
- There seem to be cases where the file manager is incorrectly reapplying
stored mappings, resulting in no source being displayed. As such, the
functionality is being disabled until the cause can be found.
- Add package installation state to PackageInfo and update accordingly
in Model.
- Add package listener event for installation state change (not yet used).
- PackageListView now fetches installation state from package and displays
accordingly.
- Now actually checks if and where the package is installed, and
correspondingly returns back the appropriate install/uninstall
actions. Consequently, HaikuDepot now allows uninstallation of
(non-system) packages.
- Add background worker thread for asynchronous processing of
package actions.
- Implement InstallPackageAction. As such, installing packages now
actually works.
- Wrap requests in exception handlers, as the package manager uses those
for various error cases. Fixes several cases of HaikuDepot spontaneously
closing if a problem occurred. Still TODO: user error reporting, errors
are currently reported on the console.
- Factor out functions for refreshing the repositories and
retrieving the package lists.
- Add a background worker thread which handles those tasks and
then notifies the window when the model is ready.
- Check if we already have a repository cache, and if so, skip the
refresh step, unless forced. The latter will eventually be possible
via the UI.
- Also rework things a bit to fix passing the same reference into the
installed package list repeatedly, thus causing only the first package
to be marked as actually being installed.
- MainWindow now attempts to refresh all available repositories and
fetch their respective package lists on startup. Much still remains
to be done, such as factoring this out into a background process so
it doesn't prevent the window from showing, and making the refresh step
optional if we already have valid repository information, but this at
least gets us showing the available package list from HaikuPorts.
- DecisionProvider and JobStateListener will be needed in order to
interact with the package kit in various ways eventually, though
the implementations are currently all empty.
- Adjust HaikuDepot's PackageManager class to inherit from
BPackageManager, so as to be able to actually interface with
the package repositories.
- If a single thread attempted to establish multiple package kit
contexts, it would fail due to a collision between their respective
temporary directories. As such, use both the thread ID and
system_time() as a random elements in the directory name to ensure
this doesn't occur.
- The disassembly dump would consequently stop at the instruction
prior to the actual crash culprit, and also erroneously mark it
as such.
(cherry picked from commit 7de035619b)
- Since we actually draw a selection now, change the target address
highlight to clearly distinguish it. Rather than inverting it, it's
now drawn with a normal background and red text in the hex display.
The text mode subcomponent still shows it as an invert though, since
the latter doesn't currently indicate the selection.
- Always grab the address value from the actual register value column,
rather than the one that's in fact under the mouse. Fixes the "Inspect"
item sending you to inspect address 0 if you happened to right click over
the register name rather than the value.
- The offset calculation for mapping the current point wasn't taking
into account the number of bytes per hex block, causing it to be
proportionally further off if one switched to 16/32/64-bit hex mode.
Gets mouse selection working properly in said modes.
- B_PRIx8 unfortunately doesn't necessarily strictly stay within the bounds
of an 8-bit hex constant, so force the size passed to snprintf to make it
that way.
- The Inspector's memory view now supports selecting chunks of the hex display in
the manner one would in a TextView. The selection can also be copied to the clipboard,
or if it matches the size of a target address, can be used as input for an address to
inspect directly.
Still needs some fine tuning, but basically works.
- If it was necessary to help the debugger locate a particular source
file due to it not being found on disk at the location specified in
the debug information, the associated user-supplied path mappings
are now saved and restored in the team settings. The file manager still
needs a bit of extra work to apply these as files are added though.
- Since we actually draw a selection now, change the target address
highlight to clearly distinguish it. Rather than inverting it, it's
now drawn with a normal background and red text in the hex display.
The text mode subcomponent still shows it as an invert though, since
the latter doesn't currently indicate the selection.
- Always grab the address value from the actual register value column,
rather than the one that's in fact under the mouse. Fixes the "Inspect"
item sending you to inspect address 0 if you happened to right click over
the register name rather than the value.
- The offset calculation for mapping the current point wasn't taking
into account the number of bytes per hex block, causing it to be
proportionally further off if one switched to 16/32/64-bit hex mode.
Gets mouse selection working properly in said modes.
- B_PRIx8 unfortunately doesn't necessarily strictly stay within the bounds
of an 8-bit hex constant, so force the size passed to snprintf to make it
that way.
- The Inspector's memory view now supports selecting chunks of the hex display in
the manner one would in a TextView. The selection can also be copied to the clipboard,
or if it matches the size of a target address, can be used as input for an address to
inspect directly.
Still needs some fine tuning, but basically works.
- If it was necessary to help the debugger locate a particular source
file due to it not being found on disk at the location specified in
the debug information, the associated user-supplied path mappings
are now saved and restored in the team settings. The file manager still
needs a bit of extra work to apply these as files are added though.
The problem indicated by #8388 hid another issue with respect to
show/hiding the navigator on the fly, namely that it didn't correctly
respect the type of Tracker window, which would cause the navigator to
show up in cases where it shouldn't, such as query windows.
BNavigator shouldn't update its location until AllAttached(). Otherwise,
it might immediately trigger a redraw, and in such a case, the
navigation buttons wouldn't yet have had a chance to load their icon
resources, leading to a debug assert in BPictureButton due to said
images not being present, but required.
In the case of a modified type pointing to an unspecified base type,
i.e. const void*, gcc appears to omit the DW_AT_type attribute entirely.
This had the result that such variables wouldn't appear in the var list.
If we encounter such a case, simply assume that the base type is unspecified
rather than failing early.
Unlike the header or field members, the 'what' field is always a 32-bit
integer, rather than being arch-dependent. This would cause us to bail
out early without ever trying to process/resolve children.