#
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 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.
|
#
b934184a |
|
04-Apr-2019 |
Augustin Cavalier <waddlesplash@gmail.com> |
packagefs: Remove some more HPKGv1-related classes. These were now unreferenced following the removal of GlobalFactory and the other v1-related code, so this commit should not be any functional change.
|
#
d1a0bc4f |
|
01-Apr-2019 |
Augustin Cavalier <waddlesplash@gmail.com> |
packagefs: Remove support for HPKGv1. The current version is "v2", and it has been since the final PM branch was merged back in 2013, so it's unclear if anyone actually uses this file format. The "package" command can still of course read these files, it's just that packagefs will now not be able to. It's very unlikely anyone is impacted by this change.
|
#
c7919fc7 |
|
21-Aug-2018 |
Augustin Cavalier <waddlesplash@gmail.com> |
packagefs: Move DebugSupport up into the file_systems shared folder. ramfs will find it useful also.
|
#
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>
|
#
3ec77017 |
|
29-May-2017 |
Adrien Destugues <pulkomandy@pulkomandy.tk> |
NaturalCompare: implement using locale kit The non-locale aware version is kept in src/build/libshared for use on the host system and in packagefs (kernel add-on). In both cases, ICU is not available. Fixes #8192
|
#
220d0402 |
|
31-Jul-2014 |
Oliver Tappe <zooey@hirschkaefer.de> |
Use libstdc++, libsupc++ and libgcc from gcc_syslibs. * Instead of faking libstdc++.so from libstdc++.a, use libstdc++.so from the gcc_syslibs build feature for everything except x86_gcc2. * Use libgcc_s.so from the gcc_syslibs build feature for everything but x86_gcc2 (which still carries libgcc as part of libroot.so). * Drop filtering of libgcc objects for libroot, as that is no longer necessary since we're only using libgcc-as-single-object for libroot with x86_gcc2, where the filtered object file doesn't exist. Should the objects that used to be filtered cause any problems as part of libgcc_s.so, we can always filter them as part of the gcc build. * Use libsupc++.so from the gcc_syslibs build feature for everything but x86_gcc2. * Adjust all Jamfiles accordingly. * Deactivate building of faked libstdc++.so for non-x86-gcc2. For x86_gcc2, we still build libstdc++.so from the sources in the Haiku source tree as part of the Haiku build . * Put gcc_syslibs package onto the image, when needed.
|
#
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 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.
|
#
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.
|
#
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
|
#
f648efd3 |
|
18-Jun-2014 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
Revert "Fix zlib-dependencies of (boot & standard) packagefs." This reverts commit 06ed40580339e21f65c24b3d210c880dcf2ec739.
|
#
06ed4058 |
|
24-May-2014 |
Oliver Tappe <zooey@hirschkaefer.de> |
Fix zlib-dependencies of (boot & standard) packagefs. * Some files that depend on zlib.h weren't declared as such, which could cause multijob builds to fail.
|
#
aeb6fc9e |
|
10-Feb-2014 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
packagefs: Move Volume::PackagesDirectory to top level Also make it a BReferenceable and fix Volume::fPackagesDirectory leak.
|
#
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.
|
#
4c61288e |
|
20-Nov-2013 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
packagefs: Refactor UnpackingAttributeDirectoryCookie Pull out a reusable base class AutoPackageAttributeDirectoryCookie.
|
#
3a7e0b00 |
|
19-Nov-2013 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
packagefs: Support blacklisting entries in packages In each installation location, it is now possible to create a settings file "packages" that allows to blacklist entries contained in packages. The format is: Package <package name> { EntryBlacklist { <entry path> ... } } ... <package name> is the base name (no version) of the respective package (e.g. "haiku"), <entry path> is an installation location relative path (e.g. "add-ons/Translators/FooTranslator"). Blacklisted entries will be ignored by packagefs, i.e. they won't appear in the file system. This addresses the issue that it may be necessary to remove a problematic file (e.g. driver, add-on, or library), which would otherwise require editing the containing package file. The settings file is not not "live". Changes take effect only after reboot (respectively when remounting the concerned packagefs volume).
|
#
0cb3f709 |
|
01-Sep-2013 |
Oliver Tappe <zooey@hirschkaefer.de> |
Revert "Fix build problems of btrfs and packagefs for x86_64." This reverts commit f272e63f393449d3a816970ca632764895a78cd6.
|
#
c5c787ea |
|
29-Aug-2013 |
Oliver Tappe <zooey@hirschkaefer.de> |
Fix build problems of btrfs and packagefs for x86_64. * Both filesystems used to link to a static kernel-zlib, which was being built with -fno-pic. This doesn't work on x86_64 as the filesystem add-ons are meant to be relocatable, which requires their code to be compiled as position independent. Solve that by moving zlib into the kernel, so any add-on can just use it from there (packagefs is mandatory, so we can't really do without zlib anyway).
|
#
b0944c78 |
|
01-Aug-2013 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
More work towards hybrid support * All packaging architecture dependent variables do now have a respective suffix and are set up for each configured packaging architecture, save for the kernel and boot loader variables, which are still only set up for the primary architecture. For convenience TARGET_PACKAGING_ARCH, TARGET_ARCH, TARGET_LIBSUPC++, and TARGET_LIBSTDC++ are set to the respective values for the primary packaging architecture by default. * Introduce a set of MultiArch* rules to help with building targets for multiple packaging architectures. Generally the respective targets are (additionally) gristed with the packaging architecture. For libraries the additional grist is usually omitted for the primary architecture (e.g. libroot.so and <x86>libroot.so for x86_gcc2/x86 hybrid), so that Jamfiles for targets built only for the primary architecture don't need to be changed. * Add multi-arch build support for all targets needed for the stage 1 cross devel package as well as for libbe (untested).
|
#
46122852 |
|
21-May-2013 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
packagefs: Add caching for the package file heap reader * ReaderImplBase: - Add virtual CreateCachedHeapReader() which can create a cached reader based on the given heap reader. - Rename HeapReader() to RawHeapReader() and add HeapReader() for the cached heap reader. - Add DetachHeapReader() to allow a clients to remove the heap reader(s) after deleting the ReaderImplBase object. * packagefs: - Add CachedDataReader class, which wraps a given BAbstractBufferedDataReader and provides caching for it using a VMCache. The implementation is based on the IOCache implementation. - Use CachedDataReader to wrap the heap reader. For file data that means they are cached twice -- in the heap reader cache and in the file cache -- but due to the heap reader using a VMCache as well, the pages will be recycled automatically anyway. For attribute data the cache should be very helpful, since they weren't cached at all before.
|
#
1f633814 |
|
17-May-2013 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
hpkg format: compress the whole heap Instead of handling compression for individual file/attribute data we do now compress the whole heap where they are stored. This significantly improves compression ratios. We still divide the uncompressed data into 64 KiB chunks and use a chunk offset array for the compressed chunks to allow for quick random access without too much overhead. The tradeoff is a limited possible compression ratio -- i.e. we won't be as good as tar.gz (though surprisingly with my test archives we did better than zip). The other package file sections (package attributes and TOC) are no longer compressed individually. Their uncompressed data are simply pushed onto the heap where the usual compression strategy applies. To simplify things the repository format has been changed in the same manner although it doesn't otherwise use the heap, since it only stores meta data. Due to the data compression having been exposed in public and private API, this change touches a lot of package kit using code, including packagefs and the boot loader packagefs support. The latter two haven't been tested yet. Moreover packagefs needs a new kind of cache so we avoid re-reading the same heap chunk for two different data items it contains.
|
#
0ee16518 |
|
14-May-2013 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
Rename BBlockBufferCache and friends to *Pool* Also move BBlockBufferPoolNoLock into BHPKG namespace with the other classes. Not sure why it wasn't there before.
|
#
11cecf98 |
|
12-May-2013 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
packagefs: Add support for hpkg format V1 * Add union-like class PackageData which wraps the V1 and V2 BPackageData classes. * GlobalFactory: Create a data reader depending on the data format version. * Package: Add a loader for V1 format and try that, if the other one fails.
|
#
171fd58c |
|
12-May-2013 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
package kit: some fixes for multi-version support * Use enums/constants/functions instead of preprocessor macros. * Missing include in PackageInfoAttributeValue.h. * PackageReaderImpl::Init(): Check version before header size and return B_MISMATCHED_VALUES instead of B_BAD_DATA, if the version doesn't match. This allows callers to determine the condition and try a reader for a different version. A more flexible interface for that case would be nice, but since we want to support the old package version only temporarily, the current solution should be good enough.
|
#
d07c930c |
|
11-May-2013 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
packagefs: Share string instances globally Introduce a class String which refers to shared private data that is registered in a global hash table (in class StringPool) and use the class consequently. This eliminates duplicate allocations for the same string and also speeds up tests for equality. There's quite a bit overhead for the management structures (apparently even more than for the string data itself), but due to almost all strings being used multiple times this still almost halves the memory usage for string data.
|
#
1e7416d9 |
|
11-May-2013 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
packagefs: Organize sources into subdirectories
|
#
85bf48fe |
|
11-May-2013 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
packagefs: Remove no longer working userland build support
|
#
9abd3e6f |
|
06-May-2013 |
Oliver Tappe <zooey@hirschkaefer.de> |
Fix race condition during build of some file systems. * make sure the zlib package is available before trying to use zlib.h
|
#
7c6bff17 |
|
05-May-2013 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
Complete outsourcing of zlib * Add optional packages Zlib and Zlib-devel. * Simplify the build feature section for zlib and also extract the source package. * Replace all remaining references to the zlib instance in the tree and remove it.
|
#
6978941a |
|
06-Apr-2013 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
packagefs: Remove support for multiple package domains per volume That also get rid of the job stuff and the package loader thread.
|
#
0c6927b5 |
|
05-Apr-2013 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
packagefs: Add ioctl to get basic volume information Also rename the MountType enum and members, since they are no longer packagefs private.
|
#
c864ba1a |
|
16-Aug-2012 |
Alex Smith <alex@alex-smith.me.uk> |
Build a separate libsupc++ for the kernel with correct flags. Kernel mode code on x86_64 needs to be built with -mno-red-zone as interrupts would corrupt the red zone if it were in use. However, the kernel is linked with libsupc++, which was not compiled with -mno-red-zone. If an interrupt occurred in libsupc++ code the red zone would get corrupted. This was causing random panics, particularly under heavy system load. Therefore, on x86_64 a separate build of libsupc++ with -mno-red-zone is now done for the kernel to use. Note: this commit will require a rerun of configure and rebuild of cross tools.
|
#
03aed3a3 |
|
08-Jul-2011 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
Attribute index support for non-special attributes * Add AttributeIndex class. * Each attribute does now have an attribute index cookie. The new attribute index service methods Node::IndexAttribute() and IndexCookieForAttribute() create+set/retrieve the cookie. The cookie is actually the attribute index's tree node. * Add OldNodeAttribute::IndexCookieForAttribute() so the cookie is available when the node changes.
|
#
6cc3dcdb |
|
07-Jul-2011 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
Move helper function out of QueryParser.h They live in the new QueryParserUtils.{h,cpp} now.
|
#
ed81de86 |
|
07-Jul-2011 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
Add last modified index support * Add class LastModifiedIndex. * Create and add an instance of it in Volume::Mount().
|
#
3793289c |
|
07-Jul-2011 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
Add size index support * Add class SizeIndex. * Create and add an instance of it in Volume mount.
|
#
182e58f7 |
|
07-Jul-2011 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
NodeListener::NodeChanged(): Provide old value * Add interface OldNodeAttributes an instance of which is passed to NodeListener::NodeChanged() to provide the old attribute values (currently only modification time and file size). * Also extend PackageLinksListener::PackageLinkNodeChanged() with a OldNodeAttributes parameter. * Add OldNodeAttributes implementations for PackageLinkSymlink (inner class OldAttributes) and UnpackingNode (OldUnpackageNodeAttributes).
|
#
617ac41c |
|
05-Jul-2011 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
Add Query class and query management in Volume
|
#
331b89b3 |
|
05-Jul-2011 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
Add NameIndex class and create instance in Volume
|
#
4791f5eb |
|
05-Jul-2011 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
Add Index base class and index table in Volume
|
#
ec59ac75 |
|
05-Jul-2011 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
Add a global node listener mechanism
|
#
c4c9e06c |
|
25-Jun-2011 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
Support for auto-generated package node attributes * Add utility class AutoPackageAttributes and AttributeCookie subclass AutoPackageAttributeCookie. * UnpackingAttributeCookie::Open() does now try to create a AutoPackageAttributeCookie, when it doesn't find the attribute in the PackageNode. * Adjust UnpackingAttributeDirectoryCookie to also list auto-generated attributes. Currently the only supported attribute is "SYS:PACKAGE", which is the file name of the package containing the node.
|
#
c6dd2207 |
|
25-Jun-2011 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
Move PackageLinkDirectory::Link to own file And rename it to PackageLinkSymlink.
|
#
7d2fa6f0 |
|
25-Jun-2011 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
WIP towards dependency package links * Add ResolvableFamily and DependencyFamily classes for grouping equally named resolvables/dependencies. * Add hash tables to PackageFSRoot to track resolvables and dependencies. That is done in {Add,Remove}Package. * Resolvable does now have a list of Dependency objects, the ones it satisfies.
|
#
fe49869e |
|
23-Jun-2011 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
Add package link directories to system volume * Add PackageLinksListener interface. It is used by PackageLink[s]Directory to notify a listener about changes. * Volume does now implement PackageLinksListener and recursively adds/ removes package link directories. This makes the package link directories appear at least. They are still empty.
|
#
b5baaa84 |
|
23-Jun-2011 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
WIP: Create empty package links directories * Rename PackageFamily to PackageLinkDirectory and derive from Directory. * PackageLinksDirectory: Add the PackageLinkDirectory objects as children and remove the no longer needed hash table (we use the Directory's child hash table).
|
#
d1756818 |
|
23-Jun-2011 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
Move EmptyAttributeDirectoryCookie to own files
|
#
63875d17 |
|
23-Jun-2011 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
Add yet empty package-links directory * Add PackageLinksDirectory Directory subclass. Currently not doing anything. * PackageFSRoot: Create a PackageLinksDirectory. * Volume: Add/remove the package links directory for the system volume.
|
#
e16ce53b |
|
23-Jun-2011 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
Pull derived UnpackingDirectory out of Directory Move all package specifics from now abstract Directory to new derived class UnpackingDirectory and adjust the Volume implementation accordingly. This concludes the Node/Directory refactoring. Neither class is aware of packages anymore.
|
#
097e795f |
|
23-Jun-2011 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
Rename LeafNode to UnpackingLeafNode
|
#
20142717 |
|
23-Jun-2011 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
Remove package related dependencies from Node * Move package related methods from Node to new interface UnpackingNode. * LeafNode and Directory derive from UnpackingNode now. * Adjust Volume implementation accordingly.
|
#
5167a807 |
|
23-Jun-2011 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
Attribute dir access kernel interface abstraction * Introduce interface AttributeDirectoryCookie and currently only implementation UnpackingAttributeDirectoryCookie. This is an interface for reading/rewinding an attribute directory. * Add abstract virtual Node::OpenAttributeDirectory() method that returns an AttributeDirectoryCookie and implement it for derived classes. * In the kernel interface attribute directory hooks use AttributeDirectoryCookie now.
|
#
882b03ab |
|
23-Jun-2011 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
Kernel interface abstraction for attribute access * Introduce interface AttributeCookie and currently only implementation UnpackingAttributeCookie. This is an interface for reading/stat()ing an attribute. * Add abstract virtual Node::OpenAttribute() method that returns an AttributeCookie and implemented it for derived classes. * In the kernel interface attribute hooks use AttributeCookie now. The attribute directory hooks are unchanged.
|
#
991ba9fd |
|
23-Jun-2011 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
WIP towards packagefs package links support * Introduce Version class representing a version. * Introduce Dependency and Resolvable class and add lists of either to Package. * Parse package attributes and add dependencies and resolvables to Package. * Add a mount type to Volume and add a respective mount parameter "mount-type" (values "system", "common", "home", "custom"). Also implies the shine-through type, if that's not given. * Introduce class PackageFamily which groups equally named and versioned packages. * Add class PackageFSRoot. Each instance represents a possible file system root (separate roots for different chroot environments). Tracks Volumes belonging to the same root and their packages.
|
#
fab5eddc |
|
19-Jun-2011 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
Split package kit DataReader.cpp Pull AttributeDataReader and FDDataReader implementations out of DataReader.cpp into own source files. Thus we can avoid dependencies (e.g. to fs_attr code) we don't need/want.
|
#
55b969b1 |
|
08-Jul-2011 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
Attribute index support for non-special attributes * Add AttributeIndex class. * Each attribute does now have an attribute index cookie. The new attribute index service methods Node::IndexAttribute() and IndexCookieForAttribute() create+set/retrieve the cookie. The cookie is actually the attribute index's tree node. * Add OldNodeAttribute::IndexCookieForAttribute() so the cookie is available when the node changes.
|
#
01f7f92a |
|
07-Jul-2011 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
Move helper function out of QueryParser.h They live in the new QueryParserUtils.{h,cpp} now.
|
#
0c63c773 |
|
07-Jul-2011 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
Add last modified index support * Add class LastModifiedIndex. * Create and add an instance of it in Volume::Mount().
|
#
d35565be |
|
07-Jul-2011 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
Add size index support * Add class SizeIndex. * Create and add an instance of it in Volume mount.
|
#
77300529 |
|
07-Jul-2011 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
NodeListener::NodeChanged(): Provide old value * Add interface OldNodeAttributes an instance of which is passed to NodeListener::NodeChanged() to provide the old attribute values (currently only modification time and file size). * Also extend PackageLinksListener::PackageLinkNodeChanged() with a OldNodeAttributes parameter. * Add OldNodeAttributes implementations for PackageLinkSymlink (inner class OldAttributes) and UnpackingNode (OldUnpackageNodeAttributes).
|
#
a3f97676 |
|
05-Jul-2011 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
Add Query class and query management in Volume
|
#
3897e729 |
|
05-Jul-2011 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
Add NameIndex class and create instance in Volume
|
#
804a92da |
|
05-Jul-2011 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
Add Index base class and index table in Volume
|
#
67f11c47 |
|
05-Jul-2011 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
Add a global node listener mechanism
|
#
59e76dbe |
|
25-Jun-2011 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
Support for auto-generated package node attributes * Add utility class AutoPackageAttributes and AttributeCookie subclass AutoPackageAttributeCookie. * UnpackingAttributeCookie::Open() does now try to create a AutoPackageAttributeCookie, when it doesn't find the attribute in the PackageNode. * Adjust UnpackingAttributeDirectoryCookie to also list auto-generated attributes. Currently the only supported attribute is "SYS:PACKAGE", which is the file name of the package containing the node.
|
#
a39e95cd |
|
25-Jun-2011 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
Move PackageLinkDirectory::Link to own file And rename it to PackageLinkSymlink.
|
#
9320567e |
|
25-Jun-2011 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
WIP towards dependency package links * Add ResolvableFamily and DependencyFamily classes for grouping equally named resolvables/dependencies. * Add hash tables to PackageFSRoot to track resolvables and dependencies. That is done in {Add,Remove}Package. * Resolvable does now have a list of Dependency objects, the ones it satisfies.
|
#
3e7333b7 |
|
23-Jun-2011 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
Add package link directories to system volume * Add PackageLinksListener interface. It is used by PackageLink[s]Directory to notify a listener about changes. * Volume does now implement PackageLinksListener and recursively adds/ removes package link directories. This makes the package link directories appear at least. They are still empty.
|
#
4031a32a |
|
23-Jun-2011 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
WIP: Create empty package links directories * Rename PackageFamily to PackageLinkDirectory and derive from Directory. * PackageLinksDirectory: Add the PackageLinkDirectory objects as children and remove the no longer needed hash table (we use the Directory's child hash table).
|
#
a2fc40be |
|
23-Jun-2011 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
Move EmptyAttributeDirectoryCookie to own files
|
#
b8a96de9 |
|
23-Jun-2011 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
Add yet empty package-links directory * Add PackageLinksDirectory Directory subclass. Currently not doing anything. * PackageFSRoot: Create a PackageLinksDirectory. * Volume: Add/remove the package links directory for the system volume.
|
#
511b4fe8 |
|
23-Jun-2011 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
Pull derived UnpackingDirectory out of Directory Move all package specifics from now abstract Directory to new derived class UnpackingDirectory and adjust the Volume implementation accordingly. This concludes the Node/Directory refactoring. Neither class is aware of packages anymore.
|
#
876a16a2 |
|
23-Jun-2011 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
Rename LeafNode to UnpackingLeafNode
|
#
e85e0ae8 |
|
23-Jun-2011 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
Remove package related dependencies from Node * Move package related methods from Node to new interface UnpackingNode. * LeafNode and Directory derive from UnpackingNode now. * Adjust Volume implementation accordingly.
|
#
e807d808 |
|
23-Jun-2011 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
Attribute dir access kernel interface abstraction * Introduce interface AttributeDirectoryCookie and currently only implementation UnpackingAttributeDirectoryCookie. This is an interface for reading/rewinding an attribute directory. * Add abstract virtual Node::OpenAttributeDirectory() method that returns an AttributeDirectoryCookie and implement it for derived classes. * In the kernel interface attribute directory hooks use AttributeDirectoryCookie now.
|
#
8ae81ef9 |
|
23-Jun-2011 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
Kernel interface abstraction for attribute access * Introduce interface AttributeCookie and currently only implementation UnpackingAttributeCookie. This is an interface for reading/stat()ing an attribute. * Add abstract virtual Node::OpenAttribute() method that returns an AttributeCookie and implemented it for derived classes. * In the kernel interface attribute hooks use AttributeCookie now. The attribute directory hooks are unchanged.
|
#
01102ee5 |
|
23-Jun-2011 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
WIP towards packagefs package links support * Introduce Version class representing a version. * Introduce Dependency and Resolvable class and add lists of either to Package. * Parse package attributes and add dependencies and resolvables to Package. * Add a mount type to Volume and add a respective mount parameter "mount-type" (values "system", "common", "home", "custom"). Also implies the shine-through type, if that's not given. * Introduce class PackageFamily which groups equally named and versioned packages. * Add class PackageFSRoot. Each instance represents a possible file system root (separate roots for different chroot environments). Tracks Volumes belonging to the same root and their packages.
|
#
9a8c1339 |
|
19-Jun-2011 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
Split package kit DataReader.cpp Pull AttributeDataReader and FDDataReader implementations out of DataReader.cpp into own source files. Thus we can avoid dependencies (e.g. to fs_attr code) we don't need/want.
|
#
ad6a8dbe |
|
14-Feb-2011 |
Oliver Tappe <zooey@hirschkaefer.de> |
Pulled reusable stuff from PackageReaderImpl into new class ReaderImplBase. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@40485 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
5fb1c6ff |
|
30-Jan-2011 |
Oliver Tappe <zooey@hirschkaefer.de> |
Refactored hpkg implementation to provide some separation between public and private API (still far from ideal, but a start): * moved several HPKG-classes into the public namespace BPackageKit::HPKG * added fImpl-wrappers around PackageReader and PackageWriter to hide most of the gory details * adjusted 'package'-binary and packagefs accordingly git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@40320 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
0d6b3b20 |
|
27-Jan-2011 |
Oliver Tappe <zooey@hirschkaefer.de> |
More work on package kit: * added class BPackageInfo, which contains packaging attributes of a package (the values relevant for package management) * implemented parser (mostly) for reading a BPackageInfo from a config file (.PackageInfo) in order to pass them on to the PackageWriter when creating a package * pulled hpkg-related stuff from bin/package into the package kit * adjusted packagefs-Volume to skip .PackageInfo files when populating the mountpoint, as those files shouldn't appear as part of an activated package git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@40301 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
46776004 |
|
18-Nov-2009 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
* Extract the attributes from the package files and attach them as PackageNodeAttribute to the PackageNodes. * Implemented the attribute FS interface hooks. * Made Package and PackageNode BReferenceable. * Fixed the reference management for Node. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34119 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
4e2cd771 |
|
18-Nov-2009 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
* Added new interface BufferCache -- basically a memory allocator with the option to cache a freed buffer -- and implementations BlockBufferCache{NoLock,Kernel}. * ZlibPackageDataReader does now dynamically get its read and uncompress buffers from a provided BufferCache when needed. * Allocating the buffers once and keeping them over the whole life time was a bit too memory heavy, since we create a reader for every file for which a vnode is created. A FS module global factory provides a buffer cache. * Added a mutex to PackageFile::DataAccessor which guards the access to the data reader which isn't thread safe. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34115 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
694cb0b2 |
|
17-Nov-2009 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
* Implemented intermediate base class PackageLeafNode for PackageFile and PackageSymlink with a "fat" interface. * Replaced File and Symlink by fat class LeafNode. * Added Package* object management to Directory and LeafNode. * Implemented packagefs_read_symlink(), so symlinks work now. * Added some missing locking the kernel interface. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34096 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
cc32c484 |
|
17-Nov-2009 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
Work in progress: * The FS parses package files from "/boot/common/packages" and builds an node tree representation of the contained entries. Merging directories should work. Lots of other stuff is missing yet, though. * Implemented the hooks for directory entry lookup and iteration. So it's possible to see the contents of the FS at least. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34088 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
b932032a |
|
15-Nov-2009 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
Implemented the most basic functionality required to cleanly mount and unmount (at least in userlandfs). git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34069 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
eaf37e54 |
|
15-Nov-2009 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
Added Jamfile for building for the userlandfs. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34065 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
3791c3fc |
|
15-Nov-2009 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
The very beginning of a package FS: Empty stubs for a minimal read-only file system. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34064 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
220d04022750f40f8bac8f01fa551211e28d04f2 |
|
31-Jul-2014 |
Oliver Tappe <zooey@hirschkaefer.de> |
Use libstdc++, libsupc++ and libgcc from gcc_syslibs. * Instead of faking libstdc++.so from libstdc++.a, use libstdc++.so from the gcc_syslibs build feature for everything except x86_gcc2. * Use libgcc_s.so from the gcc_syslibs build feature for everything but x86_gcc2 (which still carries libgcc as part of libroot.so). * Drop filtering of libgcc objects for libroot, as that is no longer necessary since we're only using libgcc-as-single-object for libroot with x86_gcc2, where the filtered object file doesn't exist. Should the objects that used to be filtered cause any problems as part of libgcc_s.so, we can always filter them as part of the gcc build. * Use libsupc++.so from the gcc_syslibs build feature for everything but x86_gcc2. * Adjust all Jamfiles accordingly. * Deactivate building of faked libstdc++.so for non-x86-gcc2. For x86_gcc2, we still build libstdc++.so from the sources in the Haiku source tree as part of the Haiku build . * Put gcc_syslibs package onto the image, when needed.
|
#
e527b796319f21ca025f68e1964df140daa6de35 |
|
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 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.
|
#
b3263ad3e1662cc419849a2d2cf539f9636613dc |
|
30-Jun-2014 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
Switch package kit to BZlibCompressionAlgorithm ... and remove the Zlib{Compressor,Decompressor} API.
|
#
6a89a36aa0ce6a53f9758ba767863ac6b4c6156c |
|
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.
|
#
32832cbe47f991cc6d2b29824903181d8baaaa63 |
|
23-Jun-2014 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
Remove BPackageKit::BDataOutput Use BDataIO instead.
|
#
d2d1af830b3f144937ea5e4c3f0e5b74c4c3d737 |
|
18-Jun-2014 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
Revert "Move ZlibDecompressor to libshared" This reverts commit 9af2105d36856be60528c361edf14a263f242338. Conflicts: src/kits/package/Jamfile
|
#
f648efd3d411e5d5590b586091e5cb75da896cfd |
|
18-Jun-2014 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
Revert "Fix zlib-dependencies of (boot & standard) packagefs." This reverts commit 06ed40580339e21f65c24b3d210c880dcf2ec739.
|
#
06ed40580339e21f65c24b3d210c880dcf2ec739 |
|
24-May-2014 |
Oliver Tappe <zooey@hirschkaefer.de> |
Fix zlib-dependencies of (boot & standard) packagefs. * Some files that depend on zlib.h weren't declared as such, which could cause multijob builds to fail.
|
#
aeb6fc9eca1b3684f835b648e44ca877e29296ab |
|
10-Feb-2014 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
packagefs: Move Volume::PackagesDirectory to top level Also make it a BReferenceable and fix Volume::fPackagesDirectory leak.
|
#
9af2105d36856be60528c361edf14a263f242338 |
|
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.
|
#
4c61288e73ab85766ae2709a38809384cd7ed489 |
|
20-Nov-2013 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
packagefs: Refactor UnpackingAttributeDirectoryCookie Pull out a reusable base class AutoPackageAttributeDirectoryCookie.
|
#
3a7e0b00147f7a33bc52cb75a56bde8d9652d92a |
|
19-Nov-2013 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
packagefs: Support blacklisting entries in packages In each installation location, it is now possible to create a settings file "packages" that allows to blacklist entries contained in packages. The format is: Package <package name> { EntryBlacklist { <entry path> ... } } ... <package name> is the base name (no version) of the respective package (e.g. "haiku"), <entry path> is an installation location relative path (e.g. "add-ons/Translators/FooTranslator"). Blacklisted entries will be ignored by packagefs, i.e. they won't appear in the file system. This addresses the issue that it may be necessary to remove a problematic file (e.g. driver, add-on, or library), which would otherwise require editing the containing package file. The settings file is not not "live". Changes take effect only after reboot (respectively when remounting the concerned packagefs volume).
|
#
0cb3f7092620ff73abc6daadd866a4e07117bd37 |
|
01-Sep-2013 |
Oliver Tappe <zooey@hirschkaefer.de> |
Revert "Fix build problems of btrfs and packagefs for x86_64." This reverts commit f272e63f393449d3a816970ca632764895a78cd6.
|
#
c5c787ea417c1a1c9f0fdb7ef3a5b807521f0093 |
|
29-Aug-2013 |
Oliver Tappe <zooey@hirschkaefer.de> |
Fix build problems of btrfs and packagefs for x86_64. * Both filesystems used to link to a static kernel-zlib, which was being built with -fno-pic. This doesn't work on x86_64 as the filesystem add-ons are meant to be relocatable, which requires their code to be compiled as position independent. Solve that by moving zlib into the kernel, so any add-on can just use it from there (packagefs is mandatory, so we can't really do without zlib anyway).
|
#
b0944c78b074a8110bd98e060415d0e8f38a7f65 |
|
01-Aug-2013 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
More work towards hybrid support * All packaging architecture dependent variables do now have a respective suffix and are set up for each configured packaging architecture, save for the kernel and boot loader variables, which are still only set up for the primary architecture. For convenience TARGET_PACKAGING_ARCH, TARGET_ARCH, TARGET_LIBSUPC++, and TARGET_LIBSTDC++ are set to the respective values for the primary packaging architecture by default. * Introduce a set of MultiArch* rules to help with building targets for multiple packaging architectures. Generally the respective targets are (additionally) gristed with the packaging architecture. For libraries the additional grist is usually omitted for the primary architecture (e.g. libroot.so and <x86>libroot.so for x86_gcc2/x86 hybrid), so that Jamfiles for targets built only for the primary architecture don't need to be changed. * Add multi-arch build support for all targets needed for the stage 1 cross devel package as well as for libbe (untested).
|
#
46122852f1dfbbf4bac6f5a634452ff90c5635ce |
|
21-May-2013 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
packagefs: Add caching for the package file heap reader * ReaderImplBase: - Add virtual CreateCachedHeapReader() which can create a cached reader based on the given heap reader. - Rename HeapReader() to RawHeapReader() and add HeapReader() for the cached heap reader. - Add DetachHeapReader() to allow a clients to remove the heap reader(s) after deleting the ReaderImplBase object. * packagefs: - Add CachedDataReader class, which wraps a given BAbstractBufferedDataReader and provides caching for it using a VMCache. The implementation is based on the IOCache implementation. - Use CachedDataReader to wrap the heap reader. For file data that means they are cached twice -- in the heap reader cache and in the file cache -- but due to the heap reader using a VMCache as well, the pages will be recycled automatically anyway. For attribute data the cache should be very helpful, since they weren't cached at all before.
|
#
1f633814fa347b0bd822f683af731615df600347 |
|
17-May-2013 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
hpkg format: compress the whole heap Instead of handling compression for individual file/attribute data we do now compress the whole heap where they are stored. This significantly improves compression ratios. We still divide the uncompressed data into 64 KiB chunks and use a chunk offset array for the compressed chunks to allow for quick random access without too much overhead. The tradeoff is a limited possible compression ratio -- i.e. we won't be as good as tar.gz (though surprisingly with my test archives we did better than zip). The other package file sections (package attributes and TOC) are no longer compressed individually. Their uncompressed data are simply pushed onto the heap where the usual compression strategy applies. To simplify things the repository format has been changed in the same manner although it doesn't otherwise use the heap, since it only stores meta data. Due to the data compression having been exposed in public and private API, this change touches a lot of package kit using code, including packagefs and the boot loader packagefs support. The latter two haven't been tested yet. Moreover packagefs needs a new kind of cache so we avoid re-reading the same heap chunk for two different data items it contains.
|
#
0ee1651856a4364bfa7ffd10f796baf35fb524d3 |
|
14-May-2013 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
Rename BBlockBufferCache and friends to *Pool* Also move BBlockBufferPoolNoLock into BHPKG namespace with the other classes. Not sure why it wasn't there before.
|
#
11cecf980b5ee6a21563a7e78d4f2238a8b4d90f |
|
12-May-2013 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
packagefs: Add support for hpkg format V1 * Add union-like class PackageData which wraps the V1 and V2 BPackageData classes. * GlobalFactory: Create a data reader depending on the data format version. * Package: Add a loader for V1 format and try that, if the other one fails.
|
#
171fd58c4b47c2da9cf13b7e501d3661d4a98e42 |
|
12-May-2013 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
package kit: some fixes for multi-version support * Use enums/constants/functions instead of preprocessor macros. * Missing include in PackageInfoAttributeValue.h. * PackageReaderImpl::Init(): Check version before header size and return B_MISMATCHED_VALUES instead of B_BAD_DATA, if the version doesn't match. This allows callers to determine the condition and try a reader for a different version. A more flexible interface for that case would be nice, but since we want to support the old package version only temporarily, the current solution should be good enough.
|
#
d07c930c1eb710289922edd3abf5244c259a86c6 |
|
11-May-2013 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
packagefs: Share string instances globally Introduce a class String which refers to shared private data that is registered in a global hash table (in class StringPool) and use the class consequently. This eliminates duplicate allocations for the same string and also speeds up tests for equality. There's quite a bit overhead for the management structures (apparently even more than for the string data itself), but due to almost all strings being used multiple times this still almost halves the memory usage for string data.
|
#
1e7416d9b3846396e2f7d6552e37d72664cd6853 |
|
11-May-2013 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
packagefs: Organize sources into subdirectories
|
#
85bf48fea593e303019d6bb1265b230a4bd0542b |
|
11-May-2013 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
packagefs: Remove no longer working userland build support
|
#
9abd3e6f53602c5fc3ad5676992bc27d40640e1b |
|
06-May-2013 |
Oliver Tappe <zooey@hirschkaefer.de> |
Fix race condition during build of some file systems. * make sure the zlib package is available before trying to use zlib.h
|
#
7c6bff17340e2f6697a22f1ce56c18fa009d4d2e |
|
05-May-2013 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
Complete outsourcing of zlib * Add optional packages Zlib and Zlib-devel. * Simplify the build feature section for zlib and also extract the source package. * Replace all remaining references to the zlib instance in the tree and remove it.
|
#
6978941aac85ea329a8552253f384924dcccd1b3 |
|
06-Apr-2013 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
packagefs: Remove support for multiple package domains per volume That also get rid of the job stuff and the package loader thread.
|
#
0c6927b5d7c8f73abd7663168f5f437b39661c6c |
|
05-Apr-2013 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
packagefs: Add ioctl to get basic volume information Also rename the MountType enum and members, since they are no longer packagefs private.
|
#
c864ba1a2d8525aeabd6199c01675f70f5abd7bd |
|
16-Aug-2012 |
Alex Smith <alex@alex-smith.me.uk> |
Build a separate libsupc++ for the kernel with correct flags. Kernel mode code on x86_64 needs to be built with -mno-red-zone as interrupts would corrupt the red zone if it were in use. However, the kernel is linked with libsupc++, which was not compiled with -mno-red-zone. If an interrupt occurred in libsupc++ code the red zone would get corrupted. This was causing random panics, particularly under heavy system load. Therefore, on x86_64 a separate build of libsupc++ with -mno-red-zone is now done for the kernel to use. Note: this commit will require a rerun of configure and rebuild of cross tools.
|
#
03aed3a3146e5e989b327eba191e41a1d4bf3dfc |
|
08-Jul-2011 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
Attribute index support for non-special attributes * Add AttributeIndex class. * Each attribute does now have an attribute index cookie. The new attribute index service methods Node::IndexAttribute() and IndexCookieForAttribute() create+set/retrieve the cookie. The cookie is actually the attribute index's tree node. * Add OldNodeAttribute::IndexCookieForAttribute() so the cookie is available when the node changes.
|
#
6cc3dcdb9baedcc500d02055ff8927cc947f59bf |
|
07-Jul-2011 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
Move helper function out of QueryParser.h They live in the new QueryParserUtils.{h,cpp} now.
|
#
ed81de869e47eff53197b2a81a739a6da6e4b64c |
|
07-Jul-2011 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
Add last modified index support * Add class LastModifiedIndex. * Create and add an instance of it in Volume::Mount().
|
#
3793289c21d17d6e8f22c149879d4201871a4880 |
|
07-Jul-2011 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
Add size index support * Add class SizeIndex. * Create and add an instance of it in Volume mount.
|
#
182e58f709cc0d9e0ae0f905874c13dfe38ce516 |
|
07-Jul-2011 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
NodeListener::NodeChanged(): Provide old value * Add interface OldNodeAttributes an instance of which is passed to NodeListener::NodeChanged() to provide the old attribute values (currently only modification time and file size). * Also extend PackageLinksListener::PackageLinkNodeChanged() with a OldNodeAttributes parameter. * Add OldNodeAttributes implementations for PackageLinkSymlink (inner class OldAttributes) and UnpackingNode (OldUnpackageNodeAttributes).
|
#
617ac41c601a395ce3065e44cc8355d792c33765 |
|
05-Jul-2011 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
Add Query class and query management in Volume
|
#
331b89b3a5568ad9efcd8a10aa587366753bc6a4 |
|
05-Jul-2011 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
Add NameIndex class and create instance in Volume
|
#
4791f5ebb3bec07d9592b2bc5b461e269880ed3b |
|
05-Jul-2011 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
Add Index base class and index table in Volume
|
#
ec59ac751529851c81e8c3db96e06ba1b790dcbd |
|
05-Jul-2011 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
Add a global node listener mechanism
|
#
c4c9e06c88d03c20bcf84b4e627ce4a4fb15d22f |
|
25-Jun-2011 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
Support for auto-generated package node attributes * Add utility class AutoPackageAttributes and AttributeCookie subclass AutoPackageAttributeCookie. * UnpackingAttributeCookie::Open() does now try to create a AutoPackageAttributeCookie, when it doesn't find the attribute in the PackageNode. * Adjust UnpackingAttributeDirectoryCookie to also list auto-generated attributes. Currently the only supported attribute is "SYS:PACKAGE", which is the file name of the package containing the node.
|
#
c6dd220780584bd9debaad5bd82bab1dc953b881 |
|
25-Jun-2011 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
Move PackageLinkDirectory::Link to own file And rename it to PackageLinkSymlink.
|
#
7d2fa6f0f83c87b90df3d3f87f47873bf0f26b4d |
|
25-Jun-2011 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
WIP towards dependency package links * Add ResolvableFamily and DependencyFamily classes for grouping equally named resolvables/dependencies. * Add hash tables to PackageFSRoot to track resolvables and dependencies. That is done in {Add,Remove}Package. * Resolvable does now have a list of Dependency objects, the ones it satisfies.
|
#
fe49869e03e724de875ad54c91f9f66275cfcf32 |
|
23-Jun-2011 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
Add package link directories to system volume * Add PackageLinksListener interface. It is used by PackageLink[s]Directory to notify a listener about changes. * Volume does now implement PackageLinksListener and recursively adds/ removes package link directories. This makes the package link directories appear at least. They are still empty.
|
#
b5baaa8428dc8319bb8a040430cd44a9ae18b677 |
|
23-Jun-2011 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
WIP: Create empty package links directories * Rename PackageFamily to PackageLinkDirectory and derive from Directory. * PackageLinksDirectory: Add the PackageLinkDirectory objects as children and remove the no longer needed hash table (we use the Directory's child hash table).
|
#
d175681861f0d38517da21cba36c14c08381ba8d |
|
23-Jun-2011 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
Move EmptyAttributeDirectoryCookie to own files
|
#
63875d1702406f1bdc0e0f7adaa3492dd9fa3bdd |
|
23-Jun-2011 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
Add yet empty package-links directory * Add PackageLinksDirectory Directory subclass. Currently not doing anything. * PackageFSRoot: Create a PackageLinksDirectory. * Volume: Add/remove the package links directory for the system volume.
|
#
e16ce53bccea3c101dadc1c4f4cfb73913aacd39 |
|
23-Jun-2011 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
Pull derived UnpackingDirectory out of Directory Move all package specifics from now abstract Directory to new derived class UnpackingDirectory and adjust the Volume implementation accordingly. This concludes the Node/Directory refactoring. Neither class is aware of packages anymore.
|
#
097e795f8e34d908418b06ae63d81d2f7916eb54 |
|
23-Jun-2011 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
Rename LeafNode to UnpackingLeafNode
|
#
20142717e78e3d349d0da642a8a5ae66a6d0a415 |
|
23-Jun-2011 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
Remove package related dependencies from Node * Move package related methods from Node to new interface UnpackingNode. * LeafNode and Directory derive from UnpackingNode now. * Adjust Volume implementation accordingly.
|
#
5167a807038bd05fa521f7efd389815578cb1bc9 |
|
23-Jun-2011 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
Attribute dir access kernel interface abstraction * Introduce interface AttributeDirectoryCookie and currently only implementation UnpackingAttributeDirectoryCookie. This is an interface for reading/rewinding an attribute directory. * Add abstract virtual Node::OpenAttributeDirectory() method that returns an AttributeDirectoryCookie and implement it for derived classes. * In the kernel interface attribute directory hooks use AttributeDirectoryCookie now.
|
#
882b03aba9f028dc99fd79499f3e20b52a91a485 |
|
23-Jun-2011 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
Kernel interface abstraction for attribute access * Introduce interface AttributeCookie and currently only implementation UnpackingAttributeCookie. This is an interface for reading/stat()ing an attribute. * Add abstract virtual Node::OpenAttribute() method that returns an AttributeCookie and implemented it for derived classes. * In the kernel interface attribute hooks use AttributeCookie now. The attribute directory hooks are unchanged.
|
#
991ba9fddf31971e08b038b0f84ff165c8cb94b7 |
|
23-Jun-2011 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
WIP towards packagefs package links support * Introduce Version class representing a version. * Introduce Dependency and Resolvable class and add lists of either to Package. * Parse package attributes and add dependencies and resolvables to Package. * Add a mount type to Volume and add a respective mount parameter "mount-type" (values "system", "common", "home", "custom"). Also implies the shine-through type, if that's not given. * Introduce class PackageFamily which groups equally named and versioned packages. * Add class PackageFSRoot. Each instance represents a possible file system root (separate roots for different chroot environments). Tracks Volumes belonging to the same root and their packages.
|
#
fab5eddca9e54e7325fe452aed2c7a0bbd3dfe62 |
|
19-Jun-2011 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
Split package kit DataReader.cpp Pull AttributeDataReader and FDDataReader implementations out of DataReader.cpp into own source files. Thus we can avoid dependencies (e.g. to fs_attr code) we don't need/want.
|
#
55b969b13bfbfba814aea0c961cae29825083ee6 |
|
08-Jul-2011 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
Attribute index support for non-special attributes * Add AttributeIndex class. * Each attribute does now have an attribute index cookie. The new attribute index service methods Node::IndexAttribute() and IndexCookieForAttribute() create+set/retrieve the cookie. The cookie is actually the attribute index's tree node. * Add OldNodeAttribute::IndexCookieForAttribute() so the cookie is available when the node changes.
|
#
01f7f92aef0dada1afd9c57366e3358c309dd825 |
|
07-Jul-2011 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
Move helper function out of QueryParser.h They live in the new QueryParserUtils.{h,cpp} now.
|
#
0c63c7738a1b281eb4232cc7f7a323436b09b63b |
|
07-Jul-2011 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
Add last modified index support * Add class LastModifiedIndex. * Create and add an instance of it in Volume::Mount().
|
#
d35565bed0f5c64aa02e5e69b5ffa3ae7bd484e8 |
|
07-Jul-2011 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
Add size index support * Add class SizeIndex. * Create and add an instance of it in Volume mount.
|
#
773005292a36c2a1f7cd1eed4fe3a7ca8fc95559 |
|
07-Jul-2011 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
NodeListener::NodeChanged(): Provide old value * Add interface OldNodeAttributes an instance of which is passed to NodeListener::NodeChanged() to provide the old attribute values (currently only modification time and file size). * Also extend PackageLinksListener::PackageLinkNodeChanged() with a OldNodeAttributes parameter. * Add OldNodeAttributes implementations for PackageLinkSymlink (inner class OldAttributes) and UnpackingNode (OldUnpackageNodeAttributes).
|
#
a3f976768e5b4e7678827775c817fd1f38950304 |
|
05-Jul-2011 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
Add Query class and query management in Volume
|
#
3897e7298eabe1bfe7faf8f12c9f865863938938 |
|
05-Jul-2011 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
Add NameIndex class and create instance in Volume
|
#
804a92da7afe1a970f88ac11f0fc374635fc56f7 |
|
05-Jul-2011 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
Add Index base class and index table in Volume
|
#
67f11c47a76f21dab107649cf072ab919e0dd1ba |
|
05-Jul-2011 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
Add a global node listener mechanism
|
#
59e76dbe414f32cc65320b605442f97eb60296c0 |
|
25-Jun-2011 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
Support for auto-generated package node attributes * Add utility class AutoPackageAttributes and AttributeCookie subclass AutoPackageAttributeCookie. * UnpackingAttributeCookie::Open() does now try to create a AutoPackageAttributeCookie, when it doesn't find the attribute in the PackageNode. * Adjust UnpackingAttributeDirectoryCookie to also list auto-generated attributes. Currently the only supported attribute is "SYS:PACKAGE", which is the file name of the package containing the node.
|
#
a39e95cd73139d85c43cbece88fa5ffa22e73129 |
|
25-Jun-2011 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
Move PackageLinkDirectory::Link to own file And rename it to PackageLinkSymlink.
|
#
9320567ed2407276a14f86ec44fbe088b13e8e1f |
|
25-Jun-2011 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
WIP towards dependency package links * Add ResolvableFamily and DependencyFamily classes for grouping equally named resolvables/dependencies. * Add hash tables to PackageFSRoot to track resolvables and dependencies. That is done in {Add,Remove}Package. * Resolvable does now have a list of Dependency objects, the ones it satisfies.
|
#
3e7333b7c188f2193a1bc5109c101461f33197b9 |
|
23-Jun-2011 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
Add package link directories to system volume * Add PackageLinksListener interface. It is used by PackageLink[s]Directory to notify a listener about changes. * Volume does now implement PackageLinksListener and recursively adds/ removes package link directories. This makes the package link directories appear at least. They are still empty.
|
#
4031a32accd2bba7bca7c8e93494e95564ae3d60 |
|
23-Jun-2011 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
WIP: Create empty package links directories * Rename PackageFamily to PackageLinkDirectory and derive from Directory. * PackageLinksDirectory: Add the PackageLinkDirectory objects as children and remove the no longer needed hash table (we use the Directory's child hash table).
|
#
a2fc40be04897a8bd7be45e1e1a9296c5aab042f |
|
23-Jun-2011 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
Move EmptyAttributeDirectoryCookie to own files
|
#
b8a96de92993a211fef83f249dd815e7ffa0014d |
|
23-Jun-2011 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
Add yet empty package-links directory * Add PackageLinksDirectory Directory subclass. Currently not doing anything. * PackageFSRoot: Create a PackageLinksDirectory. * Volume: Add/remove the package links directory for the system volume.
|
#
511b4fe8b36aaefb5a8a709d1b36ab9728dced76 |
|
23-Jun-2011 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
Pull derived UnpackingDirectory out of Directory Move all package specifics from now abstract Directory to new derived class UnpackingDirectory and adjust the Volume implementation accordingly. This concludes the Node/Directory refactoring. Neither class is aware of packages anymore.
|
#
876a16a21e528ade35c5b4bfd3e10c0b835fe03a |
|
23-Jun-2011 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
Rename LeafNode to UnpackingLeafNode
|
#
e85e0ae85a25fe859f950b1218bf8cb8c7a56322 |
|
23-Jun-2011 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
Remove package related dependencies from Node * Move package related methods from Node to new interface UnpackingNode. * LeafNode and Directory derive from UnpackingNode now. * Adjust Volume implementation accordingly.
|
#
e807d80833d95840f9b2b529debd6f9de2558e2d |
|
23-Jun-2011 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
Attribute dir access kernel interface abstraction * Introduce interface AttributeDirectoryCookie and currently only implementation UnpackingAttributeDirectoryCookie. This is an interface for reading/rewinding an attribute directory. * Add abstract virtual Node::OpenAttributeDirectory() method that returns an AttributeDirectoryCookie and implement it for derived classes. * In the kernel interface attribute directory hooks use AttributeDirectoryCookie now.
|
#
8ae81ef94eb2a0941bdde3cfa8b0ef01cfe38d73 |
|
23-Jun-2011 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
Kernel interface abstraction for attribute access * Introduce interface AttributeCookie and currently only implementation UnpackingAttributeCookie. This is an interface for reading/stat()ing an attribute. * Add abstract virtual Node::OpenAttribute() method that returns an AttributeCookie and implemented it for derived classes. * In the kernel interface attribute hooks use AttributeCookie now. The attribute directory hooks are unchanged.
|
#
01102ee50e3e6ade8bdfe88b9a991ff42d01c364 |
|
23-Jun-2011 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
WIP towards packagefs package links support * Introduce Version class representing a version. * Introduce Dependency and Resolvable class and add lists of either to Package. * Parse package attributes and add dependencies and resolvables to Package. * Add a mount type to Volume and add a respective mount parameter "mount-type" (values "system", "common", "home", "custom"). Also implies the shine-through type, if that's not given. * Introduce class PackageFamily which groups equally named and versioned packages. * Add class PackageFSRoot. Each instance represents a possible file system root (separate roots for different chroot environments). Tracks Volumes belonging to the same root and their packages.
|
#
9a8c1339ce802a820347b72eb509039affa9e96c |
|
19-Jun-2011 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
Split package kit DataReader.cpp Pull AttributeDataReader and FDDataReader implementations out of DataReader.cpp into own source files. Thus we can avoid dependencies (e.g. to fs_attr code) we don't need/want.
|
#
ad6a8dbe2bffcac6a1df7a59ee6119f240a8edee |
|
14-Feb-2011 |
Oliver Tappe <zooey@hirschkaefer.de> |
Pulled reusable stuff from PackageReaderImpl into new class ReaderImplBase. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@40485 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
5fb1c6ff1f55fe4094a761b653041b3a0b9abf1d |
|
30-Jan-2011 |
Oliver Tappe <zooey@hirschkaefer.de> |
Refactored hpkg implementation to provide some separation between public and private API (still far from ideal, but a start): * moved several HPKG-classes into the public namespace BPackageKit::HPKG * added fImpl-wrappers around PackageReader and PackageWriter to hide most of the gory details * adjusted 'package'-binary and packagefs accordingly git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@40320 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
0d6b3b20e15fe2cbeb5e81749f888c26ca289338 |
|
27-Jan-2011 |
Oliver Tappe <zooey@hirschkaefer.de> |
More work on package kit: * added class BPackageInfo, which contains packaging attributes of a package (the values relevant for package management) * implemented parser (mostly) for reading a BPackageInfo from a config file (.PackageInfo) in order to pass them on to the PackageWriter when creating a package * pulled hpkg-related stuff from bin/package into the package kit * adjusted packagefs-Volume to skip .PackageInfo files when populating the mountpoint, as those files shouldn't appear as part of an activated package git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@40301 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
46776004f7f9bdf5af8c91372f050ee9f4e64076 |
|
18-Nov-2009 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
* Extract the attributes from the package files and attach them as PackageNodeAttribute to the PackageNodes. * Implemented the attribute FS interface hooks. * Made Package and PackageNode BReferenceable. * Fixed the reference management for Node. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34119 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
4e2cd77109c257aa0be1e475ddcd379f9e9286df |
|
18-Nov-2009 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
* Added new interface BufferCache -- basically a memory allocator with the option to cache a freed buffer -- and implementations BlockBufferCache{NoLock,Kernel}. * ZlibPackageDataReader does now dynamically get its read and uncompress buffers from a provided BufferCache when needed. * Allocating the buffers once and keeping them over the whole life time was a bit too memory heavy, since we create a reader for every file for which a vnode is created. A FS module global factory provides a buffer cache. * Added a mutex to PackageFile::DataAccessor which guards the access to the data reader which isn't thread safe. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34115 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
694cb0b270e4acba08d83b0a520217081011ba28 |
|
17-Nov-2009 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
* Implemented intermediate base class PackageLeafNode for PackageFile and PackageSymlink with a "fat" interface. * Replaced File and Symlink by fat class LeafNode. * Added Package* object management to Directory and LeafNode. * Implemented packagefs_read_symlink(), so symlinks work now. * Added some missing locking the kernel interface. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34096 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
cc32c48494415e116417542ddc25bf0d28e616c5 |
|
17-Nov-2009 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
Work in progress: * The FS parses package files from "/boot/common/packages" and builds an node tree representation of the contained entries. Merging directories should work. Lots of other stuff is missing yet, though. * Implemented the hooks for directory entry lookup and iteration. So it's possible to see the contents of the FS at least. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34088 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
b932032a35bf6775e1b37bc3b39a2c9afa8c3ac1 |
|
15-Nov-2009 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
Implemented the most basic functionality required to cleanly mount and unmount (at least in userlandfs). git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34069 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
eaf37e54bf6c781c10beadeddb2f3331d74f44f1 |
|
15-Nov-2009 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
Added Jamfile for building for the userlandfs. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34065 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
3791c3fc274dc21abaaa8619045e016489ce123b |
|
15-Nov-2009 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
The very beginning of a package FS: Empty stubs for a minimal read-only file system. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34064 a95241bf-73f2-0310-859d-f6bbb57e9c96
|