#
6d1f6cad |
| 05-Sep-2024 |
Augustin Cavalier <waddlesplash@gmail.com> |
Package Kit: Allocate attribute handlers with BumpAllocator.
On my development VM, there were over 300,000 calls to malloc() from EntryAttributeHandler::HandleAttribute() alone, which had the most o
Package Kit: Allocate attribute handlers with BumpAllocator.
On my development VM, there were over 300,000 calls to malloc() from EntryAttributeHandler::HandleAttribute() alone, which had the most out of any AttributeHandler, but the others were still significant (over another 10,000 at least.) On systems with more packages and more attributes, there would be of course more calls to malloc().
Since the Handlers are allocated and freed in a "stack"-like configuration, we can use a simple "bump" allocation strategy with the AttributeHandlerContext to avoid calling malloc() at all. In my testing, the most memory that was used appeared to be around 2 KB or so (and the smallest was 216 bytes), so a single slab should suffice for this.
AttributeHandlerContext seems to be created/destroyed around 530 times during the boot process on my test machine; allocating and freeing the allocator's slab page that many times should be negligible (allocations that large still go through the block allocator.)
Performance-wise, the total time we spend with AttributeHandlerContext objects "alive" goes from around ~172ms to ~156ms. So, not as much an improvement as one might hope, but that just goes to show that our kernel malloc() is pretty efficient. And this change will also keep short-lived objects off the heap during a period when we are allocating many long-lived objects, anyway.
Change-Id: I810888434aad788511f2af30143335009b34ee78 Reviewed-on: https://review.haiku-os.org/c/haiku/+/8230 Tested-by: Commit checker robot <no-reply+buildbot@haiku-os.org> Reviewed-by: waddlesplash <waddlesplash@gmail.com>
show more ...
|
#
268f99dd |
| 22-Dec-2021 |
Niels Sascha Reedijk <niels.reedijk@gmail.com> |
Merge branch 'master' into dev/netservices
|
#
0cf34918 |
| 26-Oct-2021 |
Augustin Cavalier <waddlesplash@gmail.com> |
Remove ZSTD_ENABLED checks from the Package Kit.
BZstdCompressionAlgorithm already has these #ifdefs and will return error codes appropriately if built without libzstd, so we do not need to check ag
Remove ZSTD_ENABLED checks from the Package Kit.
BZstdCompressionAlgorithm already has these #ifdefs and will return error codes appropriately if built without libzstd, so we do not need to check again inside the Package Kit.
This should not break the no-zstd build (well, it is broken somewhat right now anyway, but this will not break it further), and it simplifies logic somewhat.
show more ...
|
#
a22fa0c9 |
| 04-Jun-2019 |
Alexander G. M. Smith <agmsmith@ncf.ca> |
package kit: Add pre-uninstall scripts feature.
Just like post-install scripts which run shortly after a package is installed, pre-uninstall scripts are run just before a package is removed. Implem
package kit: Add pre-uninstall scripts feature.
Just like post-install scripts which run shortly after a package is installed, pre-uninstall scripts are run just before a package is removed. Implements enhancement #13427
* Fix script exit code handling vs script launch errors. * Bump package and repo file version numbers due to new attribute, unfortunately makes new .hpkg files not backwards compatible. * Add pre-uninstall functionality, mostly cloning the post-install except in a few places. * Discover that _RunQueuedScripts() is never called, a future TODO:? * Update package documentation for pre-uninstall scripts, and use of the boot/post-install directory.
Change-Id: I45596255ce74bc102f6e5b606cbf83e4e4347a17 Reviewed-on: https://review.haiku-os.org/c/haiku/+/1504 Reviewed-by: Alexander G. M. Smith <agmsmith@ncf.ca> Reviewed-by: Adrien Destugues <pulkomandy@gmail.com>
show more ...
|
#
31d70c10 |
| 13-Aug-2019 |
Alexander G. M. Smith <agmsmith@ncf.ca> |
package kit: Skip over future package attributes.
Ignore unknown fields (also called attributes) which are from a package file with a different minor version number. Previously it would halt with a
package kit: Skip over future package attributes.
Ignore unknown fields (also called attributes) which are from a package file with a different minor version number. Previously it would halt with an error when encountering such a field, even though it can safely be skipped over (if it was unsafe, we would have incremented the major version number).
The use case is a future package attribute for pre-uninstall scripts. If they're not run, that just leaves some debris after uninstalling (like symbolic link desktop icons).
* Use the B_NOT_SUPPORTED error code when reading unknown package attributes. Don't treat it as an error if the package is a different minor version, just skip it. * Print unknown package attribute index numbers rather than stopping, since they may be from future package file formats and can be safely skipped otherwise. Mention the relevant enum so you can find it in the source code. It's a pity that the previous abstraction layer isn't present, since it tells us what data type the attribute is (string, number, etc), so we could have printed its value too.
First step of two for enhancement #13427
See https://review.haiku-os.org/c/haiku/+/1504 to generate packages with a different minor version number (second step of the enhancement).
Change-Id: I6db1897824a1713b3d5fab6fdfb990ee5923cd52 Reviewed-on: https://review.haiku-os.org/c/haiku/+/1714 Reviewed-by: waddlesplash <waddlesplash@gmail.com>
show more ...
|
#
df4074fb |
| 25-Nov-2018 |
Augustin Cavalier <waddlesplash@gmail.com> |
Remove a lot of unused constants.
Spotted by Clang. No functional change intended.
|
#
81375d4f |
| 11-Jul-2018 |
Jérôme Duval <jerome.duval@gmail.com> |
Package Kit: add Zstd compression.
Change-Id: Idbdb7cf1bde659046a88ea69a76e3b5fc4cd7013 Reviewed-on: https://review.haiku-os.org/323 Reviewed-by: Adrien Destugues <pulkomandy@gmail.com>
|
#
8f5130ed |
| 12-Jul-2014 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
package kit: Actually add support for B_HPKG_COMPRESSION_NONE
Until now we always declared in the HPKG header that the package file is zlib compressed. For uncompressed files we would just store all
package kit: Actually add support for B_HPKG_COMPRESSION_NONE
Until now we always declared in the HPKG header that the package file is zlib compressed. For uncompressed files we would just store all individual chunks uncompressed. Now we handle completely uncompressed files slightly differently: We don't write the redundant chunk size table anymore. The size savings are minor, but it makes the uncompressed format read-streamable which may be handy.
show more ...
|
#
e527b796 |
| 12-Jul-2014 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
Switch package file accessor classes to use BPositionIO
* PackageFileHeap{Reader,Writer} as well as Package{Reader,Writer} and their implementation and super classes do now internally use a BPos
Switch package file accessor classes to use BPositionIO
* PackageFileHeap{Reader,Writer} as well as Package{Reader,Writer} and their implementation and super classes do now internally use a BPositionIO instead of a FD to access the package file. This provides more flexibility needed for features to come. * BPackageReader has already grown a new Init() version with a BPositionIO* parameter.
show more ...
|
#
b3263ad3 |
| 30-Jun-2014 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
Switch package kit to BZlibCompressionAlgorithm
... and remove the Zlib{Compressor,Decompressor} API.
|
#
6a89a36a |
| 24-Jun-2014 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
Move package kit Zlib* classes to support kit
Also move to B* namespace and no longer expose the zlib dependency in the headers.
|
#
0dab9e5c |
| 29-Jun-2014 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
package kit: ReaderImplBase: Remove superfluous scratch buffer
|
#
f1a12bcf |
| 24-Jun-2014 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
ReaderImplBase::ReadSection(): Small simplification
|
#
32832cbe |
| 23-Jun-2014 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
Remove BPackageKit::BDataOutput
Use BDataIO instead.
|
#
d2d1af83 |
| 18-Jun-2014 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
Revert "Move ZlibDecompressor to libshared"
This reverts commit 9af2105d36856be60528c361edf14a263f242338.
Conflicts: src/kits/package/Jamfile
|
#
9af2105d |
| 10-Feb-2014 |
Adrien Destugues <pulkomandy@pulkomandy.tk> |
Move ZlibDecompressor to libshared
* This will be used to implement compressed http streams * Remove the custom BDataOutput class, and use BDataIO instead, for easier integration with existing code.
|
#
9f81ca83 |
| 27-Sep-2013 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
Merge branch 'package-management'
Conflicts: src/preferences/network/Jamfile
|
#
0a345af7 |
| 18-Sep-2013 |
Oliver Tappe <zooey@hirschkaefer.de> |
Separate notification from deletion in repository-handlers.
* Add NotifyDone() to all repository-attribute handlers and invoke that to notify any listeners. * Unify deletion to a single implementa
Separate notification from deletion in repository-handlers.
* Add NotifyDone() to all repository-attribute handlers and invoke that to notify any listeners. * Unify deletion to a single implementation of Delete() in the base class. Before, the root handler for a repository didn't do that, but just triggered the notification.
show more ...
|
#
a266b57a |
| 05-Jun-2013 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
ReaderImplBase: Handle new ...IS_WRITABLE_DIRECTORY attribute
|
#
4489c88b |
| 05-Jun-2013 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
hpkg format: Generalize user/global settings file attributes
* For all identifiers: Rename global settings file to global writable file. We want to use the respective attribute also for other writ
hpkg format: Generalize user/global settings file attributes
* For all identifiers: Rename global settings file to global writable file. We want to use the respective attribute also for other writable files, not only settings files. * User settings file/global writable file info/attribute: Add isDirectory property/child attribute. This allows declaring global/ user settings directories associated with the package.
show more ...
|
#
c0ab1409 |
| 24-May-2013 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
hpkg format: Add attribute for declaring post install scripts
|
#
0f4e11e7 |
| 24-May-2013 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
hpkg format: Add attributes for declaring users and groups
|
#
bf88057b |
| 24-May-2013 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
ReaderImplBase: Fix copy and paste oversight
|
#
79d5ddb7 |
| 23-May-2013 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
ReaderImplBase: Verify that the attribute type matches
... the one expected for the respective attribute. Before it was possible that e.g. a uint was read and then interpreted as a const char*, if a
ReaderImplBase: Verify that the attribute type matches
... the one expected for the respective attribute. Before it was possible that e.g. a uint was read and then interpreted as a const char*, if a string was expected for that attribute.
show more ...
|
#
fe707a23 |
| 23-May-2013 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
hpkg format: Add attributes for declaring settings files
Global and user settings files can be declared. For global ones an update policy can be specified. If not specified, the settings file is not
hpkg format: Add attributes for declaring settings files
Global and user settings files can be declared. For global ones an update policy can be specified. If not specified, the settings file is not included in the package, but created by the program (or user) later. If an update type is specified, it defines what to do with the settings file when updating the package to a newer version.
User settings files are never included in the package; they are always created by the program or the user. If the package contains a template/ default settings file, it can be declared, but for informative purposes only.
show more ...
|