Commit Graph
100 Commits
Author SHA1 Message Date
Ingo Weinhold 52100b0c0e Terminal: Support paths starting with '~' in hyperlink mode
Implements #12282.
2015-08-03 13:15:59 +02:00
Ingo Weinhold 0721444745 hvif2png: Fix closing of streams
* h2p_close_state():
  - Don't close stdin/stdout.
  - Set in/out to NULL to prevent accidental double closing.
* h2p_open_streams(): Simplify closing on error. No need for
  fclose_quietly().
2015-07-18 09:04:33 +02:00
Ingo Weinhold afdc8efb27 hvif2png: Coding style cleanup 2015-07-18 09:02:59 +02:00
Ingo Weinhold fb29004aaf disk device manager: Remove obsolete include path
virtualdrive hasn't been used for a long time. Should help with #12162.
2015-07-05 09:40:13 +02:00
Ingo Weinhold 96a321df07 bootstrap image: Add remote command execution script
In order to automate the complete bootstrap build process we need a
mechanism to control the second phase which builds the final packages
on the booted bootstrap Haiku. To avoid additional dependencies
(buildbot slave, ssh, rsh,...) we'd have to cross-build, there's now a
pair of simple python scripts that allows executing commands on a remote
machine. The server script (bootstrap_daemon.py) is added to the
bootstrap image and started automatically during the boot.
2014-10-30 16:43:54 +01:00
Ingo Weinhold dfb13a8716 Increase the size of the kernel FD table
With packagefs potentially opening quite a few packages the default of
256 slots is a bit tight. It's 4096 now, which should be safe for a
while, but we might want to consider resizing the table dynamically and
probably even switching to another algorithm for allocating the slots.

Should fix #11328.
2014-10-29 21:07:03 +01:00
Ingo Weinhold 6bbd25f071 Make vfs_resize_fd_table() accessible in the kernel
Also update some types from int to uint32.
2014-10-29 21:07:02 +01:00
Ingo Weinhold 53aae3db4d packagefs: Package::Open(): Also log error code 2014-10-29 16:06:01 +01:00
Ingo Weinhold 7ca277b9ca vm_soft_fault(): remove unused wiredRange parameter 2014-10-29 12:37:25 +01:00
Ingo Weinhold 078a965f65 vm_soft_fault(): Avoid deadlock waiting for wired ranges
* VMArea::AddWaiterIfWired(): Replace the ignoreRange argument by a
flags argument and introduce (currently only) flag
IGNORE_WRITE_WIRED_RANGES. If specified, ranges wired for writing
are ignored. Ignoring just a single specified range doesn't cut it
in vm_soft_fault(), and there aren't any other users of that feature.
* vm_soft_fault(): When having to unmap a page of a lower cache, this
page cannot be wired for writing. So we can safely ignore all
writed-wired ranges, instead of just our own. We even have to do that
in case there's another thread that concurrently tries to write-wire
the same page, since otherwise we'd deadlock waiting for each other.
2014-10-29 12:37:25 +01:00
Ingo Weinhold 8ef857d85c vm_soft_fault(): Avoid inconsistent state when seeing wired page
When we encounter a wired page that we'd have to unmap to map our newly
allocated one, we need to get rid of the latter before unlocking
everything and waiting for the wired page. Otherwise we'd leave things
in an inconsistent state (a page from an upper cache shadowing a mapped
page from a lower cache).
2014-10-29 02:36:09 +01:00
Ingo Weinhold 699b57307e VMAnonymousCache::_MergePagesSmallerConsumer(): Add ASSERT 2014-10-29 02:36:08 +01:00
Ingo Weinhold 9da590f73e Add vm_page_free_etc()
It additionally gets a vm_page_reservation* argument. If not NULL, the
page count of the reservation is incremented for the freed page.
2014-10-29 02:36:08 +01:00
Ingo Weinhold 70d3bd5592 vm_soft_fault(): Missing DEBUG_PAGE_ACCESS_END()
... in case we'd need to unmap a page that is wired.

Fixes the immediate issue of #10977. There's a problem remaining (as
discussed in comment 1): If two threads want to wire the same page at
the same time (which led to the assertion being triggered), they will
now deadlock, waiting for each other to remove the pre-registered
VMAreaWiredRange.
2014-10-29 02:36:08 +01:00
Ingo Weinhold fa80e7b28f x86 kernel args: Increase number of page tables 2014-10-27 10:57:28 +01:00
Ingo Weinhold 4ce1f197fa x86 boot loader: check gKernelArgs.arch_args.pgtables overflow 2014-10-26 22:34:52 +01:00
Ingo Weinhold 1714eaf29e pkgman resolve-dependencies: Add --debug option 2014-10-26 13:41:00 +01:00
Ingo Weinhold f76e8e9d92 Terminal: Fix pagewise scrolling in alternate screen buffer mode
It still used the old modifiers. Now it's shift as elsewhere.
2014-10-26 13:19:45 +01:00
Ingo Weinhold dd15db954b pkgman: Add --debug option for most commands
* Add CommonOptions class and add an instance to Command. It supports a
debug level.
* full-sync, install, search, uninstall, update: Add option --debug.
This allows getting some debug output from the solver in cases where
the result seems weird.
2014-10-26 00:19:35 +02:00
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