Commit Graph

46403 Commits

Author SHA1 Message Date
Ingo Weinhold 796343ed73 Allow specifying the compression level for package creation
* Introduce BPackageWriterParameters which comprises all parameters
  for package creation, currently flags and compression level. Such an
  object can be passed to BPackageWriter::Init() and is passed on to
  PackageWriterImpl and WriterImplBase.
* PackageFileHeapWriter: Add compressionLevel property and pass the
  value on to ZlibCompressor.
* package add/create: Add options -0 ... -9 to specify the compression
  level to be used.
2013-05-25 01:12:26 +02:00
Ingo Weinhold 18b19ba49d ZlibCompressor: Allow setting the compression level 2013-05-25 01:12:26 +02:00
Ingo Weinhold 1f633814fa 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.
2013-05-25 01:12:25 +02:00
Ingo Weinhold 16e5e5e4ec Some *DataReader improvements
* BFDDataReader: Add SetFD().
* BBufferDataReader: Derive from BAbstractBufferedDataReader.
2013-05-25 01:12:25 +02:00
Ingo Weinhold 21ee6d5cdc Some comment updates 2013-05-25 01:12:25 +02:00
Ingo Weinhold 0ee1651856 Rename BBlockBufferCache and friends to *Pool*
Also move BBlockBufferPoolNoLock into BHPKG namespace with the other
classes. Not sure why it wasn't there before.
2013-05-25 01:12:25 +02:00
Ingo Weinhold 7adfd76b17 Add "base package" package attribute 2013-05-25 01:12:24 +02:00
Ingo Weinhold df29539688 Remove resolvable provides type
* Remove BPackageResolvableType and respective property from
  BPackageResolvable.
* Remove package attribute B_HPKG_ATTRIBUTE_ID_PACKAGE_PROVIDES_TYPE.
2013-05-25 01:12:24 +02:00
Ingo Weinhold 9172ffdb06 package list/extract: Add support for hpkg format V1 2013-05-25 01:12:24 +02:00
Ingo Weinhold 11cecf980b 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.
2013-05-25 01:12:24 +02:00
Ingo Weinhold 2c32402da5 package kit: internalize BPackageDataReader
It is no longer public (or even private) API. BPackageDataReaderFactory
returns a BAbstractBufferedDataReader instead. The advantage is that
the latter doesn't have hpkg format specific dependencies.
2013-05-25 01:12:23 +02:00
Ingo Weinhold 175ff8ec77 package kit: Add BAbstractBufferedDataReader
It doesn't do much in terms of buffering, but defines an interface
buffered readers can implement, namely the additional
ReadDataToOutput() which currently BPackageDataReader specifies.
2013-05-25 01:12:23 +02:00
Ingo Weinhold b5786b0f68 BPackageDataReader: Remove unused Size(), BlockSize() 2013-05-25 01:12:23 +02:00
Ingo Weinhold dd0b33cb63 BPackageInfo: Support reading both HPKG format versions 2013-05-25 01:12:22 +02:00
Ingo Weinhold ab5755a84a packagefs: PackageLeafNode: remove superfluous declaration 2013-05-25 01:12:22 +02:00
Ingo Weinhold fc0cec5396 Bump HPKG format version 2013-05-25 01:12:22 +02:00
Ingo Weinhold 7575abbca2 Clone read support functionality for HPKG format version 1
It uses sub-namespace BPackage::BHPKG::V1. Unlike the one for the
current format version, the V1 version of BPackageInfoContentHandler
lives in BHPKG(::V1) sub-namespace and is private.
2013-05-25 01:12:22 +02:00
Ingo Weinhold 171fd58c4b 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.
2013-05-25 01:12:21 +02:00
Ingo Weinhold 7e7232aca8 Update cmake and libsolv packages 2013-05-20 18:21:41 +02:00
Oliver Tappe f7712caf68 Update package-infos to match current Haiku version
* additionally, unify packager (to "The Haiku build system")
2013-05-20 11:27:42 +02:00
Oliver Tappe 773318958f Add new package haiku_cross_devel.hpkg
* This package is meant for providing haikuporter with a development
  environment for building cross packages.
2013-05-19 23:30:23 +02:00
Oliver Tappe dff45dfced Updated version of compiler to match BuildtoolsPM 2013-05-19 21:35:39 +02:00
Ingo Weinhold bfc4df839f Merge remote-tracking branch 'haiku/master' into package-management 2013-05-12 23:30:52 +02:00
Axel Dörfler c895d331c9 app_server: added an ASSERT to Desktop::_Windows().
* So that something like #9595 should not happen again.
2013-05-12 21:05:05 +02:00
Jérôme Duval e431f22875 playground: fixes a 64 bit warning. 2013-05-12 18:46:43 +02:00
Jérôme Duval bb4537c841 JPEGTranslator: fixes a 64 bit warning 2013-05-12 18:45:12 +02:00
Ingo Weinhold 78a1163c7b Terminal: hyper link mode: Try more aggressively to detect a path
Consider ':' a potential path delimiter and try all combinations of
chopped off prefixes and suffixes. This makes detection in the output
of a multi-file grep work even if the found line starts with a path
character or is a path. A path in the typical colon delimited search
paths (e.g. PATH) is detected as well.
2013-05-12 17:18:47 +02:00
Ingo Weinhold a15966b3b0 Terminal: hyper link mode: handle relative paths better
* We were trying relative paths as is, which means checking them with
  Terminal's current working directory. Now we use the CWD of the active
  process.
* In case the path is relative, add a context menu item "Copy absolute
  path".
2013-05-12 17:18:18 +02:00
Ingo Weinhold 7daf375812 Terminal: HyperLink: Remove base address, add text property
* The base address is no longer used (it was in a an earlier, never
  committed version), so we can as remove it.
* Introduce a text property.
2013-05-12 17:18:18 +02:00
Rene Gollent 3f3ade6223 Fix incorrect return value problem in STEP_OUT.
A similar problem to that described in my previous commit afflicted the
step out case as well. We now store the current IP when issuing a step
out, and use that as the function address once execution returns.
2013-05-11 19:08:09 -04:00
Rene Gollent d9d42ec6bf Fix case of incorrect return value detection.
When using step over to step out of a function, we need to use the
address range of the step statement to determine the function which
returned said value, not the current IP, as that has already exited the
function and will consequently be that of the caller, leading to such
returns being attributed to the wrong function, and consequently also
the wrong type.
2013-05-11 18:48:29 -04:00
Ingo Weinhold c663ca2171 Merge branch 'master' into package-management
Conflicts:
	build/jam/HaikuImage
	src/system/kernel/arch/x86/64/arch.S
2013-05-12 00:18:19 +02:00
Ingo Weinhold 3c94ecf6b4 packagefs: Move NodeListener to nodes/ 2013-05-11 23:32:21 +02:00
Ingo Weinhold d07c930c1e 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.
2013-05-11 23:31:36 +02:00
Ingo Weinhold 1848fdc329 util/khash: Add hash_hash_string_part() 2013-05-11 23:17:55 +02:00
Rene Gollent 88cc420211 Improve basic profiler output a little.
If on gcc4, use the built-in demangling functions to present demangled
names in the output where possible.
2013-05-11 16:46:15 -04:00
Jérôme Duval c4f684f80f Style fix as suggested by Axel :) 2013-05-11 22:20:57 +02:00
Axel Dörfler 4b723e3fb8 boot loader: Almost removed use of kernel_cpp.h.
* For some reason that is beyond me, fat/CachedBlock.cpp needs this header,
  or else building the boot loader fails.
2013-05-11 19:34:22 +02:00
Ingo Weinhold 1e7416d9b3 packagefs: Organize sources into subdirectories 2013-05-11 15:13:35 +02:00
Jerome Duval c3e68d8d92 cdda, fat, iso9660: clear tv_nsecs fields in the stat struct
* devfs in fact doesn't provide a zeroed buffer.
2013-05-11 14:58:58 +02:00
Gediminas Jarulaitis a3fdd62c13 iso9960, exfat, fat: Corrected time conversion mistakes.
* Fixes #9524
* Some style cleanup

Signed-off-by: Jerome Duval <jerome.duval@gmail.com>
2013-05-11 14:58:57 +02:00
Ingo Weinhold 85bf48fea5 packagefs: Remove no longer working userland build support 2013-05-11 14:37:27 +02:00
Alex Smith 1152f6eca6 HaikuImage: Build more network drivers for x86_64. 2013-05-11 13:08:35 +01:00
Ingo Weinhold 0bfcf7312a Move deskbar menu directory to ~/config/settings/deskbar/menu
Also remove the "be" symlink in ~/config/settings.
2013-05-11 09:57:58 +02:00
Ingo Weinhold a085e81e62 Move ~/config/boot to ~/config/settings/ 2013-05-11 09:57:57 +02:00
Ingo Weinhold 8a916d8752 Don't create most empty installation dirs in home/config
Create them in home/config/non-packaged instead.
2013-05-11 09:57:57 +02:00
Murai Takashi 6235280425 libgnu.so: Fix GCC4.8 narrowing conversion warnings
Signed-off-by: Jerome Duval <jerome.duval@gmail.com>
2013-05-11 09:02:01 +02:00
Ingo Weinhold 9e1a0720cb Fix FFM focus loss on window close
kFocusList is an invalid index for _Windows(). fWorkspaces would be
accessed out of bounds.
2013-05-11 07:30:15 +02:00
Niels Sascha Reedijk ee7f4fab92 Update translations from Pootle 2013-05-11 06:16:58 +02:00
Rene Gollent 7de99f8341 Fix Terminal build. 2013-05-10 23:21:51 -04:00