Commit Graph
100 Commits
Author SHA1 Message Date
Ingo Weinhold d228f29f6e BPackageManager: Add SetDebugLevel()
Sets the debug level of the solver.
2014-10-26 00:19:35 +02:00
Ingo Weinhold 74b582a4e5 BSolver: Add SetDebugLevel()
In LibsolvSolver set the debug level of the pool.
2014-10-26 00:19:35 +02:00
Ingo Weinhold cd8a7df77d ImageRules: Fix issues where file names may contain parens
Parentheses in target names are considered by Jam to mean an archive
member. We have to explicitly use the M selector to keep that part.

Fixes #10378 (certain keymaps missing on image).
2014-08-10 10:17:26 +02:00
Ingo Weinhold fa50ee854d package: Add checksum command 2014-07-14 00:46:20 +02:00
Ingo Weinhold 03b36acbe6 package recompress: Small cleanup 2014-07-14 00:45:45 +02:00
Ingo Weinhold e1e6c12480 BPackageWriter::Recompress(): Change param to BPositionIO*
Besides that this is a nicer interface, it allows us to get a the HPKG
header as a side effect of initializing the reader, thus preventing
seeking backward in the file. This makes "package recompress - <file>"
work.
2014-07-13 17:57:57 +02:00
Ingo Weinhold 43a6b92c64 PackageReaderImpl: Delay reading sections until ParseContent() 2014-07-13 17:57:56 +02:00
Ingo Weinhold 3cc6297e22 package recompress: Add stdin/stdout support
stdin doesn't work quite yet. We'll need to convince the BPackageReader
to skip parsing the TOC and package attributes sections.
2014-07-13 17:57:56 +02:00
Ingo Weinhold 1606450b32 ReaderImplBase::Init(): Make file size check optional
If the file doesn't support GetSize(), skip the header total size file
size check.
2014-07-13 17:57:56 +02:00
Ingo Weinhold 05b565f4f2 Add private BDataPositionIOWrapper
Implements the BPositionIO interface on top of a BDataIO, requiring the
{Read,Write}At() accesses to be sequential.
2014-07-13 17:57:56 +02:00
Ingo Weinhold 44c4771163 BPackageWriter: Add BPositionIO support 2014-07-13 17:57:55 +02:00
Ingo Weinhold f9ecc54e69 package: Explicitly use B_HPKG_COMPRESSION_NONE 2014-07-12 23:13:11 +02:00
Ingo Weinhold 8f5130edfa 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.
2014-07-12 23:12:21 +02:00
Ingo Weinhold e8681d9409 Increase boot loader size for x86* boot floppy a bit 2014-07-12 18:41:09 +02:00
Ingo Weinhold e527b79631 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.
2014-07-12 15:40:22 +02:00
Ingo Weinhold 01e6d687c0 boot loader: Add pwrite(), lseek(), ftruncate()
ftruncate() is just a stub (needed for BFdIO).
2014-07-12 15:40:22 +02:00
Ingo Weinhold c55a06055f Add private class BFdIO
Simple BPositionIO implementation using the POSIX API on a FD. In effect
similar to BFile, but more easily ported to kernel and boot loader (and
the FD is reusable).
2014-07-12 15:40:21 +02:00
Ingo Weinhold 8546c4160e BPositionIO: Add {Read,Write}AtExactly()
Analoguous to {Read,Write}Exactly(), just for the *At() versions.
2014-07-12 15:40:21 +02:00
Ingo Weinhold 1b50eb7d91 Remove unnecessary zlib build feature dependency 2014-07-12 15:40:21 +02:00
Ingo Weinhold a629567a90 package: Add command recompress
The streaming feature for -0 is missing yet.
2014-07-08 22:00:36 +02:00
Ingo Weinhold cdfeba5a1e BPackageWriter: Add Recompress()
Allows rewriting an existing package file with a different compression.
2014-07-08 22:00:35 +02:00
Ingo Weinhold 2fc2aebcba PackageWriterImpl: Move _Finish() impl to match order in header 2014-07-08 22:00:35 +02:00
Ingo Weinhold f5a20d5ff1 package kit: PackageFileHeapReader::Init(): Sanity checks
Make sure the compressed/uncompressed heap size and the chunk size
table look plausible, so we can rely on the values later. Fixes
potential crashes for corrupt packages.
2014-07-08 22:00:35 +02:00
Ingo Weinhold b04949711d BUrl::IsValid(): Replace with a slightly better dummy impl 2014-07-03 17:39:59 +02:00
Ingo Weinhold c666db88ef BZlibCompressionAlgorithm: Missing NULL check 2014-07-03 17:39:59 +02:00
Ingo Weinhold a5330a8e41 Remove private support kit BUrl
Use the public BUrl from the network kit instead.
2014-07-03 17:39:59 +02:00
Ingo Weinhold 72f6b787cf BUrl: Add missing functionality from support kit BUrl 2014-07-03 17:39:59 +02:00
Ingo Weinhold 2573655b79 Revert "Revert "HttpRequest: support gzip and deflate compression.""
This reverts commit 256080b112.

With the following changes:
* Adjusted to the BZlibCompressionAlgorithm API.
* Add some error handling.
2014-07-03 17:39:58 +02:00
Ingo Weinhold c99f294eb0 BNetBuffer: Restore semantics after DynamicBuffer -> BDataIO 2014-07-03 17:39:58 +02:00
Ingo Weinhold 25d34313d0 DynamicBuffer::Read(): Small optimization (skip 0 case) 2014-07-03 17:39:58 +02:00
Ingo Weinhold 6926863e37 DynamicBuffer::Write(): Fix return type and semantics 2014-07-03 17:39:58 +02:00
Ingo Weinhold 7616c39db6 DynamicBuffer: dos2unix 2014-07-03 17:39:57 +02:00
Ingo Weinhold 739f15e144 Revert "Revert "DynamicBuffer: implement BDataIO""
This reverts commit 747b401e87.
2014-07-03 17:39:57 +02:00
Ingo Weinhold 5c8bfe24ea compression_test: Add option for gzip format 2014-07-01 21:54:58 +02:00
Ingo Weinhold 72cf56a0fd BZlibCompressionAlgorithm: Basic support for gzip format 2014-07-01 21:54:58 +02:00
Ingo Weinhold b3263ad3e1 Switch package kit to BZlibCompressionAlgorithm
... and remove the Zlib{Compressor,Decompressor} API.
2014-06-30 21:55:41 +02:00
Ingo Weinhold 377ecc1e55 Test program for the B[Zlib]CompressionAlgorithm functionality 2014-06-30 21:55:41 +02:00
Ingo Weinhold dcdc33b0af Add B[Zlib]CompressionAlgorithm
* BCompressionAlgorithm is a base class for classes that provide
  compression/decompression functionality. There are methods for
  compressing/decompressing a single buffer and factory methods for
  a compressing/decompressing input/output BDataIO.
* BZlibCompressionAlgorithm is a BCompressionAlgorithm implementation
  using zlib.
2014-06-30 21:55:41 +02:00
Ingo Weinhold 6a89a36aa0 Move package kit Zlib* classes to support kit
Also move to B* namespace and no longer expose the zlib dependency in
the headers.
2014-06-30 21:55:41 +02:00
Ingo Weinhold b773d89eba BDataIO: Add Flush() 2014-06-30 21:55:40 +02:00
Ingo Weinhold 60ccc119b0 packagefs: CachedDataReader: Don't implement ReadData()
It's already done the same way in the base class.
2014-06-30 21:51:17 +02:00
Ingo Weinhold 0dab9e5cb4 package kit: ReaderImplBase: Remove superfluous scratch buffer 2014-06-30 21:51:16 +02:00
Ingo Weinhold 0a62e01902 PackageWriterImpl: Remove superfluous method 2014-06-30 21:51:16 +02:00
Ingo Weinhold f1a12bcfc0 ReaderImplBase::ReadSection(): Small simplification 2014-06-30 21:51:16 +02:00
Ingo Weinhold 5ede33ed15 BDataIO: Hopefully fix native build 2014-06-23 23:18:00 +02:00
Ingo Weinhold 84297881bb Remove BPackageKit::[...]::AbstractDataWriter and friends
* FDDataWriter and ZlibDataWriter weren't used anymore.
* AbstractDataWriter was implemented only by PackageFileHeapWriter,
  which was only used by WriterImplBase.
* Add a PackageFileHeapWriter::AddDataThrows() which has semantics
  equivalent to the previously inherited WriteDataThrows().
2014-06-23 22:58:15 +02:00
Ingo Weinhold 32832cbe47 Remove BPackageKit::BDataOutput
Use BDataIO instead.
2014-06-23 22:58:15 +02:00
Ingo Weinhold 0d8b44e25b BDataIO: Add methods {Read,Write}Exactly() 2014-06-23 22:58:15 +02:00
Ingo Weinhold dec78bb27c Add new error codes B_PARTIAL_{READ,WRITE} 2014-06-23 22:58:15 +02:00
Ingo Weinhold 98759fe6e6 BDataIO: Provide default implementations for Read()/Write()
This makes the interface somewhat more suitable for unidirectional use,
since one doesn't have to implement the other, not needed method.
2014-06-23 22:58:14 +02:00
Ingo Weinhold d2d1af830b Revert "Move ZlibDecompressor to libshared"
This reverts commit 9af2105d36.

Conflicts:
	src/kits/package/Jamfile
2014-06-18 22:13:39 +02:00
Ingo Weinhold 5cd75b56a8 Revert "ZlibDecompressor: also accept gzip format"
This reverts commit 142d59ca90.
2014-06-18 22:13:39 +02:00
Ingo Weinhold 747b401e87 Revert "DynamicBuffer: implement BDataIO"
This reverts commit 36b1f55a18.
2014-06-18 22:13:39 +02:00
Ingo Weinhold 256080b112 Revert "HttpRequest: support gzip and deflate compression."
This reverts commit c3d0dd7a5e.

Conflicts:
	src/kits/network/libnetapi/HttpRequest.cpp
	src/kits/network/libnetapi/Jamfile
2014-06-18 22:13:39 +02:00
Ingo Weinhold 707f60f4e9 Revert "Fix build."
This reverts commit 00dfae0bce.
2014-06-18 22:13:39 +02:00
Ingo Weinhold a05da9f4b2 Revert "...and also fix a mismatched prototype"
This reverts commit 6555120f3b.
2014-06-18 22:13:38 +02:00
Ingo Weinhold 4c235c7497 Revert "Fix more issues detected by gcc4 compiler:"
This reverts commit 19f3bae071.
2014-06-18 22:13:38 +02:00
Ingo Weinhold d5660e67af Revert "build fix follow up on status_t/ssize_t changes."
This reverts commit 7202cfb455.
2014-06-18 22:13:38 +02:00
Ingo Weinhold 94a66563f5 Revert "shared kit: fixed headers dependency."
This reverts commit 675878fcfe.
2014-06-18 22:13:38 +02:00
Ingo Weinhold 3528fd2d66 Revert "Fix one more status_t/ssize_t mixup."
This reverts commit f6658d2c2c.
2014-06-18 22:13:37 +02:00
Ingo Weinhold cc66d3a051 Revert "Style fixes, no functional changes"
This reverts commit 916382a10f.
2014-06-18 22:13:37 +02:00
Ingo Weinhold a01adf34d6 Revert "boot packagefs: Fix zlib dependency declaration"
This reverts commit 0b565a6f51.
2014-06-18 22:13:37 +02:00
Ingo Weinhold f39d7f1096 Revert "boot packagefs: Fix header path in zlib dependency"
This reverts commit aafc3386ef.
2014-06-18 22:13:37 +02:00
Ingo Weinhold f648efd3d4 Revert "Fix zlib-dependencies of (boot & standard) packagefs."
This reverts commit 06ed405803.
2014-06-18 22:13:36 +02:00
Ingo Weinhold f256bccc66 Revert "Fix zlib-dependency in libnetapi."
This reverts commit 6b6ff33d60.
2014-06-18 22:13:36 +02:00
Ingo Weinhold a852846fc2 HaikuDepot: Update list on installation location package changes
Very dumb implementation (just does a full update). I leave it to the
HaikuDepot hackers to improve it.
2014-06-17 20:32:26 +02:00
Ingo Weinhold 5c9672edeb Add watching support for installation location package changes
Can be requested/stopped via BPackageRoster::{Start,Stop}Watching().
The notification message has the what code B_PACKAGE_UPDATE and contains
fields "event", "location", and "change count".
2014-06-17 20:32:26 +02:00
Ingo Weinhold 3f91ba29d9 package_daemon: Root: Add IsSystemRoot() 2014-06-17 20:32:25 +02:00
Ingo Weinhold b44215c079 BRoster::Private::SendTo(): Actually support NULL reply
Unlike documented passing a NULL reply would just fail instead of
sending the message without waiting for a reply.
2014-06-17 20:32:25 +02:00
Ingo Weinhold 820dbc01ce BTransactionIssue: String improvements 2014-06-17 20:32:25 +02:00
Ingo Weinhold eb718e31d2 Terminal: Handle SIGCHLD in a dedicated thread
Block SIGCHLD in all threads and spawn a dedicated thread that handles
the signal in a loop (via sigwait()). This avoids the issue that the
SIGCHLD could be handled in any of our threads and thus possibly
interrupt a syscall.

Fixes #10941.
2014-06-16 11:08:56 +02:00
Ingo Weinhold f9f8a8f56e pkgman: Update some user messages 2014-06-15 17:21:02 +02:00
Ingo Weinhold 0b57c6338b BTransactionIssue::ToString(): Fix some strings 2014-06-15 17:21:02 +02:00
Ingo Weinhold f2f19f110d BPackageManager: Support installing/updating local package files
* The Install() and Update() versions that take a const char* array
  now check whether a string looks like a path to a local package file.
  If so, they use that file instead of interpreting the string as a
  search string.
* Extend the repository hierarchy. There's now a LocalRepository base
  class from which InstalledRepository and the new MiscLocalRepository
  derive. The latter is instantiated once and collects all package files
  specified by path.
2014-06-15 17:21:01 +02:00
Ingo Weinhold ea761a10d4 pkgman: Print issues from committing the transaction 2014-06-15 17:21:01 +02:00
Ingo Weinhold eee422752c BPackageManager: Make BCommitTransactionResult available
* BFatalErrorException: Add commitTransactionResult property and
  respective constructor. In case committing the transaction failed,
  BPackageManager throws a BFatalErrorException with the result.
* BFatalErrorException::UserInteractionHandler: Pass
  BCommitTransactionResult to ProgressTransactionCommitted().
2014-06-15 17:21:01 +02:00
Ingo Weinhold 0de3219e33 package daemon: Rework error and issue propagation to client
* BDaemonClient: Move inner class BCommitTransactionResult to top level
  and make it public.
* BCommitTransactionResult:
  - Add a whole bunch of specific error code enum values. Such an error
    code is now the primary error, as opposed to before where we would
    mix status_t and enum value errors. There's a systemError property
    of type status_t which may provide additional information, though
    (depending on the primary error type).
  - Remove the errorMessage property. Due to mapping all errors to the
    specific error codes this is no longer necessary. Mixing such a
    message with another error description is also not very helpful when
    it comes to localization (still not supported, though).
  - Add several properties (paths, strings, error codes) that serve as
    arguments to the primary error and are used by FullErrorMessage().
  - Add issues property, a list of instances of new class
    BTransactionIssue. Those describe non-critical issues (e.g. failed
    update of a settings file) that occurred in the process of
    committing the transaction. Those issues should be presented to the
    user by the package management program.
* Exception: Adjust to transport the BCommitTransactionResult
  properties.
* CommitTransactionHandler, FsTransactions, Root, Volume: Adjust to
  BCommitTransactionResult/Exception changes.
* CommitTransactionHandler: Now requires a BCommitTransactionResult to
  which it adds the issues it encounters. The reply BMessage is no
  longer needed, though.
* Volume: Refactor common code from the three methods that use
  CommitTransactionHandler into new method _CommitTransaction.
2014-06-15 17:21:01 +02:00
Ingo Weinhold 6077cad882 BEntryOperationEngineBase::Entry: Add debug methods
Add GetPathOrName() and PathOrName() methods which try to get some kind
of usable path or at least a file name for the entry. Useful mainly for
debugging and error reporting cases.
2014-06-15 17:21:00 +02:00
Ingo Weinhold 9680cf0bce BEntryOperationEngineBase::Entry: Add node_ref+path c'tor 2014-06-15 17:21:00 +02:00
Ingo Weinhold f307a18588 package daemon: Volume: Fix destruction order
We must destroy the VolumeStates before destroying the
PackageFileManager that manages their packages.

Kudos to Rene for analyzing.
2014-05-12 11:30:42 +02:00
Ingo Weinhold e9eb4df71b BDaemonClient: Handle options message fields correctly 2014-05-05 21:29:25 +02:00
Ingo Weinhold c2f3b81d45 package daemon: Fix manual package [de/]activation
CommitTransactionHandler: Since the VolumeState is now always copied
(including the contained packages), we can't just use the passed in
packagesAlready{Added,Removed} sets, since they refer to the original
packages.
2014-05-05 21:29:25 +02:00
Ingo Weinhold c69ed143a6 package daemon: CommitTransactionHandler: Minor error case fixes 2014-05-04 20:59:01 +02:00
Ingo Weinhold 4284b6c93a BInstallationLocationInfo: Provide more info
* If the active state is not the latest state, also provide a package
set for it.
* If an old state has been booted, provide its name.
2014-05-04 20:59:01 +02:00
Ingo Weinhold 5a1c6a7089 InstallationLocation: Rename [in]activePackages properties
Add prefix "Latest".
2014-05-04 20:59:01 +02:00
Ingo Weinhold 870e93acf8 package daemon: Move volume change counter back to Volume 2014-05-04 20:59:01 +02:00
Ingo Weinhold fe28d36222 package daemon: Don't apply system package changes immediately
When a system package is going to be deactivated, activate/deactivate
the packages of the whole transaction only to the latest state.
Afterward latest state and active state will differ.
2014-05-01 18:18:37 +02:00
Ingo Weinhold 2dbf8167fe package daemon: Initial old packages state support
* VolumeState: Move locking to Volume.
* Package: Pull the file related functionality into new class
  PackageFile. A Package refers to a PackageFile. A PackageFile can be
  referenced by multiple Packages. PackageFiles are managed by the new
  PackageFileManager.
* CommitTransactionHandler: Clone the passed volume state.
* Volume now manages two VolumeStates: A state reflecting the currently
  active packages and the latest state (i.e. the one reflecting the
  situation of the packages directory). Usually the two are the same,
  unless an old state has been booted.
* The client interface hasn't been adjusted yet. Clients only see the
  latest state.
2014-05-01 18:18:37 +02:00
Ingo Weinhold 333d4efe4f packagefs: Extend PACKAGE_FS_OPERATION_GET_PACKAGE_INFOS ioctl
Also return the package file names.
2014-04-26 15:34:18 +02:00
Ingo Weinhold ba4c67b4b0 packagefs: Fix ioctl PACKAGE_FS_OPERATION_GET_VOLUME_INFO
... in case a larger buffer is provided.
2014-04-26 15:34:17 +02:00
Ingo Weinhold c8dd5bbd94 package daemon: Retrieve all package directories from packagefs 2014-04-26 15:34:17 +02:00
Ingo Weinhold 7a3253f07c package daemon: Pass volume state CommitTransactionHandler
... and remove the getter from Volume again.
2014-04-26 15:34:17 +02:00
Ingo Weinhold 7a35d803d0 package daemon: Move pending job accounting back to Volume 2014-04-26 15:34:17 +02:00
Ingo Weinhold fb53533e86 package daemon: CommitTransactionHandler: Use NotOwningEntryRef 2014-04-26 15:34:16 +02:00
Ingo Weinhold 8c6e1bf548 package daemon: Sever Volume-CommitTransactionHandler friendship
Move quite a bit of transaction related methods from Volume to
CommitTransactionHandler.
2014-04-20 11:54:10 +02:00
Ingo Weinhold 933e7b3280 Move Volume::CommitTransactionHandler to top level
Also move constant definitions to Constants.h/cpp.
2014-04-20 11:09:56 +02:00
Ingo Weinhold 273763d052 package daemon: Move Volume::State to top level
... and rename it to VolumeState.
2014-04-20 09:44:01 +02:00
Ingo Weinhold 6cf0a86499 findpaths: Add missing --list long option 2014-04-20 09:44:00 +02:00
Ingo Weinhold 2d91773d2e Adjust packagefs ioctl interface to support old states
* PackageFSVolumeInfo: Add the directories for all relevant states.
* PackageFSPackageInfo: Include the package file's parent directory node
  ref.

Package daemon and package kit still don't support old states yet.
2014-04-18 23:31:40 +02:00
Ingo Weinhold 5d55f327ed packagefs: Initial support for booting into old states
If an old state is specified via mount parameters we load the packages
as specified in its activated-packages file.

The interface for the package daemon, the package daemon itself, and
the package kit are still to be adjusted, so ATM some PM components
might be a bit confused when an old state was booted.
2014-04-18 23:31:40 +02:00