This is a step towards fixing #10042.
When DEBUG is set BReferenceable::~BReferenceable() performs some checks
ensuring that the object is destroyed correctly. These checks require
information on thread stack, which is obtained by get_thread_info().
_get_thread_info() stub is added (actually, readded) which always returns
B_ERROR. Moreover, the check in BReferenceable destructor is modified
so that it does not fail when get_thread_info() fails.
- PackageManager: Adjust progress listener interface to also supply
the package name to the hook. Adjust implementors.
- PackageActions now get a pointer to the model. InstallPackageAction
uses that to resolve the package name given in the download progress hook
to the package currently being downloaded, and updates progress accordingly.
Consequently, if one requests installation of a package that has dependencies,
Depot now correctly updates the download progress status of those
accordingly, rather than updating the original package repeatedly.
Looks like I was too quick on previous commit.
It seems -pthread is actually not that much needed on Linux though...
although the manpage says "compile and link with -pthread". Go figure.
Now dlopen() uses RTLD_LAZY | RTLD_LOCAL for Linux, which seems
to work here.
Declare a HOST_PTHREAD_LINKFLAGS variable to hold the flags
required to link with pthreads, and use it for the solver addon.
Works on GNU/Linux, please test and fix for other platforms.
Previous implementation used weak symbols on all platforms except Haiku. Mac OS X also does not support this use of weak symbols. In the discussion of #10028 it was decided that probably more platforms will have problems with this approach, so instead use the approach that always works.
Latest gcc converts the old ones to the new ones anyway...
including when passing to gas, which of course is not new enough,
so we have to also force gcc to pass the old one around in one case.
* The new class is called DriverSettingsMessageAdapter which can translate
between a driver_settings file, and a BMessage.
* The net_server Settings class is now just using this class.
jam fails in execve() trying to run the command due to
a too large arguments list because of the many objects in libgcc.
We split them into two intermediate objects,
then we link them to libroot.
- 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.
* This has positive and negitive effects. Using the
first monitor's EDID vs the VESA EDID means DisplayPort
monitors and adaptors function. I think the benefits
outweigh the risks at this point.
* Haiku will use the native display mode of the first
monitor and set it across all attached displays.
* Please open bug reports if you notice and regressions.