Commit Graph

1320 Commits

Author SHA1 Message Date
Ingo Weinhold
c0ab140961 hpkg format: Add attribute for declaring post install scripts 2013-05-25 01:12:37 +02:00
Ingo Weinhold
0f4e11e75c hpkg format: Add attributes for declaring users and groups 2013-05-25 01:12:37 +02:00
Ingo Weinhold
fe707a23fc hpkg format: Add attributes for declaring settings files
Global and user settings files can be declared. For global ones an
update policy can be specified. If not specified, the settings file is
not included in the package, but created by the program (or user) later.
If an update type is specified, it defines what to do with the settings
file when updating the package to a newer version.

User settings files are never included in the package; they are always
created by the program or the user. If the package contains a template/
default settings file, it can be declared, but for informative purposes
only.
2013-05-25 01:12:34 +02:00
Ingo Weinhold
d59e0feb59 package: Suppress version mismatch errors where V1 is supported
* Add flags parameter to Init() of BPackageReader and friends.
* Introduce flag B_HPKG_READER_DONT_PRINT_VERSION_MISMATCH_MESSAGE and
  don't print a version mismatch error when given.
* package extract/list: Use the new flag.
2013-05-25 01:12:31 +02:00
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
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
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
9172ffdb06 package list/extract: Add support for hpkg format V1 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
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
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
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
Rene Gollent
74ec65d843 Fix profile to recognize commpage image. 2013-05-10 18:21:33 -04:00
Jérôme Duval
bc8c7d615d translate: fixes 64 bit warnings 2013-05-10 19:49:36 +02:00
Jérôme Duval
0059a07ade roster: fixes 64 bit warnings 2013-05-10 19:46:29 +02:00
Jérôme Duval
7074a7c7ec reindex: fixes 64 bit warnings 2013-05-10 19:44:51 +02:00
Jérôme Duval
aff59d31a3 hey: fixes 64 bit warnings 2013-05-10 19:42:24 +02:00
Jérôme Duval
2a8d81c291 bfsinfo: fixes 64 bit warnings 2013-05-10 19:31:22 +02:00
Ingo Weinhold
204dee708a Use libbe_build also on Haiku
This means the build tools will no longer be built against the host
platform's libbe, which avoids compatibility problems -- e.g. an
older Haiku host libbe may not have certain features the build tools
require -- and also makes the build behave more similiar on Haiku and
other platforms. The host libroot dependency still remains and is not
easy to get rid of.

Also remove some bits of BeOS/Dano/Zeta build support.
2013-05-09 18:08:55 +02:00
Ingo Weinhold
0c61965f2b mimeset: Complete custom mime DB support
* Don't require the first MIME DB directory to exist anymore. Database
  creates it anyway.
* Make use of MimeInfoUpdater to support updating MIME info with a
  custom MIME DB.
* Make use of MimeEntryProcessor::DoRecursively() to support recursive
  operation with a custom MIME DB.
2013-05-09 03:22:24 +02:00
Ingo Weinhold
9ea1940c48 mimeset: WIP to support custom MIME DB directories
Add option -m/--mimedb for specifying one or more directories to be
used as the MIME DB instead of the system MIME DB. Currently only works
with --apps and only non-recursive.

When fully implemented the new feature will be used in the build system
and on Haiku when building packages to generated the MIME DB entries for
applications, so those can be included in the same package. Furthermore
it will be possible to use the MIME DB the build system already
generates to identify files before packaging them.
2013-05-08 04:51:48 +02:00
Ingo Weinhold
a625f557c5 mimeset: Change options style
* Use "--" prefix for long options and switch to getopt parsing. There's
  still compatibility support for "-apps" and "-all", but they are
  considered obsolete, now.
* Add short options "-a" for "--apps", "-A" for "--all", and "-h" for
  "--help".
2013-05-07 16:27:06 +02:00
Ingo Weinhold
937b6e0f7f pkgman resolve-dependencies: Remove bogus option 2013-05-07 16:18:29 +02:00
Ingo Weinhold
f8d6e1f938 mimeset: Style update 2013-05-07 15:32:15 +02:00
Ingo Weinhold
415f42489f Fix bash's default value for PATH 2013-05-05 21:04:11 +02:00
Ingo Weinhold
25a7b01d15 Merge branch 'master' into package-management
Additional changes:
* Add src/system/kernel/lib/zlib, which builds a kernel version of zlib,
  needed by packagefs.
* BuildFeatures: Add a build feature "gcc2" to allow for easier checks.
* Referenceable.cpp: Include <OS.h> instead of <debugger.h>. The latter
  is not needed and prevents building for the build platform.
* zlib/zutil.h: Fix gcc 2 build. We really should use the external
  package instead.

Conflicts:
	.gitignore
	build/jam/BuildSetup
	build/jam/FileRules
	build/jam/FloppyBootImage
	build/jam/HaikuImage
	build/jam/ImageRules
	build/jam/KernelRules
	build/jam/NetBootArchive
	build/jam/OptionalBuildFeatures
	build/jam/OptionalLibPackages
	build/jam/OptionalPackageDependencies
	build/jam/OptionalPackages
	build/scripts/build_haiku_image
	configure
	data/bin/installoptionalpackage
	data/system/boot/Bootscript
	headers/os/app/Message.h
	headers/os/package/PackageInfo.h
	headers/os/package/PackageInfoAttributes.h
	headers/os/package/PackageInfoSet.h
	headers/os/package/PackageRoster.h
	headers/os/package/PackageVersion.h
	headers/os/package/hpkg/PackageInfoAttributeValue.h
	headers/os/storage/FindDirectory.h
	headers/os/storage/Node.h
	headers/os/support/StringList.h
	headers/private/system/directories.h
	src/add-ons/kernel/drivers/audio/ac97/es1370/Jamfile
	src/add-ons/kernel/file_systems/packagefs/AttributeIndex.cpp
	src/add-ons/kernel/file_systems/packagefs/Jamfile
	src/add-ons/kernel/file_systems/packagefs/Package.cpp
	src/add-ons/kernel/file_systems/packagefs/Package.h
	src/add-ons/kernel/file_systems/packagefs/PackageDomain.cpp
	src/add-ons/kernel/file_systems/packagefs/PackageDomain.h
	src/add-ons/kernel/file_systems/packagefs/PackageFSRoot.cpp
	src/add-ons/kernel/file_systems/packagefs/PackageLinkDirectory.cpp
	src/add-ons/kernel/file_systems/packagefs/PackageLinkDirectory.h
	src/add-ons/kernel/file_systems/packagefs/PackageLinkSymlink.cpp
	src/add-ons/kernel/file_systems/packagefs/PackageLinkSymlink.h
	src/add-ons/kernel/file_systems/packagefs/PackageLinksDirectory.cpp
	src/add-ons/kernel/file_systems/packagefs/PackageNode.h
	src/add-ons/kernel/file_systems/packagefs/ResolvableFamily.cpp
	src/add-ons/kernel/file_systems/packagefs/Version.cpp
	src/add-ons/kernel/file_systems/packagefs/Version.h
	src/add-ons/kernel/file_systems/packagefs/Volume.cpp
	src/add-ons/kernel/file_systems/packagefs/Volume.h
	src/add-ons/kernel/file_systems/packagefs/kernel_interface.cpp
	src/add-ons/kernel/file_systems/userlandfs/shared/driver_settings.c
	src/apps/deskbar/BarApp.cpp
	src/apps/deskbar/BarMenuBar.cpp
	src/apps/deskbar/BarMenuBar.h
	src/apps/deskbar/BarView.cpp
	src/apps/deskbar/BarView.h
	src/apps/deskbar/BarWindow.cpp
	src/apps/deskbar/BarWindow.h
	src/apps/deskbar/DeskbarMenu.cpp
	src/apps/deskbar/DeskbarMenu.h
	src/apps/deskbar/DeskbarUtils.cpp
	src/apps/deskbar/DeskbarUtils.h
	src/apps/deskbar/ExpandoMenuBar.cpp
	src/apps/deskbar/ExpandoMenuBar.h
	src/apps/deskbar/TeamMenu.cpp
	src/apps/processcontroller/ProcessController.cpp
	src/apps/remotedesktop/RemoteDesktop.cpp
	src/bin/bash/config-top.h
	src/bin/finddir.c
	src/bin/package/Jamfile
	src/bin/package/command_add.cpp
	src/bin/package/command_create.cpp
	src/bin/package/command_list.cpp
	src/bin/package_repo/command_list.cpp
	src/bin/pkgman/command_refresh.cpp
	src/build/libbe/support/Jamfile
	src/build/libpackage/Jamfile
	src/build/libroot/Jamfile
	src/build/libroot/fs.cpp
	src/build/libroot/remapped_functions.h
	src/kits/locale/MutableLocaleRoster.cpp
	src/kits/opengl/GLRendererRoster.cpp
	src/kits/package/PackageInfo.cpp
	src/kits/package/PackageInfoSet.cpp
	src/kits/package/PackageRoster.cpp
	src/kits/package/PackageVersion.cpp
	src/kits/package/RepositoryCache.cpp
	src/kits/package/hpkg/PackageWriterImpl.cpp
	src/kits/package/hpkg/ReaderImplBase.cpp
	src/kits/package/hpkg/WriterImplBase.cpp
	src/kits/print/PrintTransport.cpp
	src/kits/print/Printer.cpp
	src/kits/screensaver/ScreenSaverRunner.cpp
	src/kits/support/StringList.cpp
	src/kits/tracker/ContainerWindow.cpp
	src/kits/tracker/DeskWindow.cpp
	src/kits/tracker/PoseView.cpp
	src/libs/print/libprint/Transport.cpp
	src/preferences/printers/AddPrinterDialog.cpp
	src/preferences/screensaver/ScreenSaverWindow.cpp
	src/servers/debug/DebugServer.cpp
	src/servers/input/AddOnManager.cpp
	src/servers/media_addon/MediaAddonServer.cpp
	src/system/boot/Jamfile
	src/system/boot/loader/Jamfile
	src/system/boot/loader/loader.cpp
	src/system/boot/loader/vfs.cpp
	src/system/kernel/fs/vfs.cpp
	src/system/kernel/fs/vfs_boot.cpp
	src/system/libroot/os/find_directory.cpp
	src/system/runtime_loader/runtime_loader.cpp
	src/tools/package/Jamfile
2013-05-05 15:03:26 +02:00
Rene Gollent
196ab88d06 Extend debug_create_symbol_lookup_context().
- debug_create_symbol_lookup_context() now takes an image ID
  parameter that can optionally be used to restrict the symbols
  it gathers to only those of the targeted image rather than the
  entire team, allowing for significantly more lightweight usage
  when the desired image is known. The previous behavior can still
  be obtained if desired by passing -1 as said ID.

- Adjust callers.
2013-04-30 21:34:45 -04:00
Jérôme Duval
295cdbee6b keymap: use uchar instead of char to avoid narrowing conversion warnings. 2013-04-29 21:09:59 +02:00
Ingo Weinhold
330cb41ef5 package list: Add option "-p"
It prints just a list of paths for all entries.
2013-04-29 19:33:51 +02:00
Ingo Weinhold
f7d5bd46d7 finddir: Print more useful message in error case 2013-04-24 15:10:55 +02:00
Ingo Weinhold
3f85cfc132 Add a few missing directory_which constants 2013-04-24 14:55:03 +02:00
Oliver Tappe
78d1b920ed Adjust pkgman to consider symlinks to both package-infos and packages. 2013-04-23 13:31:02 +02:00
Oliver Tappe
86b3c7a416 Drop symlink common/develop/tools/current
* drop the symlink itself (system development tools are now symlinked
  from /boot/common/bin directly)
* remove that symlink from PATH
2013-04-22 00:56:02 +02:00
Ingo Weinhold
a5999f6ff7 pkgman: Add "update" command 2013-04-21 13:56:21 +02:00
Ingo Weinhold
458a86aacb pkgman: Organize commands by category 2013-04-21 13:11:53 +02:00
Ingo Weinhold
df2685d885 pkgman: Add "uninstall" command 2013-04-21 12:52:06 +02:00
Ingo Weinhold
8ba41d628c pkgman install: Fix typo in usage text 2013-04-21 12:50:31 +02:00
Ingo Weinhold
3ac0de3b1f pkgman: Refactoring -> PackageManager
Move common and reusable functionality from "search" and "install" to
new PackageManager class.
2013-04-21 12:31:29 +02:00
Ingo Weinhold
7466fa2d49 pkgman install: Simplify transaction creation 2013-04-21 10:36:19 +02:00
Ingo Weinhold
2f028e9a2d pkgman install: Add problem solution selection support 2013-04-21 02:48:52 +02:00
Ingo Weinhold
ec41ff587f pkgman install: Refresh repositories first 2013-04-21 02:48:52 +02:00
Ingo Weinhold
adc49c411a pkgman install: better out-of-memory error messages 2013-04-21 02:48:51 +02:00
Ingo Weinhold
eee120f987 pkgman install: Complete basic functionality
Download package files to install from the respective repositories and
use BDaemonClient to perform the package de-/activation. Still missing
is the interactive problem solution support.
2013-04-20 21:40:11 +02:00
Ingo Weinhold
e2678ec041 pkgman refresh: Include the repository name in error message 2013-04-20 21:40:07 +02:00
Rene Gollent
8c1b20b862 return ESRCH when team isn't found by name. 2013-04-20 09:23:00 -04:00
Ingo Weinhold
e0d4161d42 pkgman: Make use of BRequest::Process() 2013-04-20 13:28:36 +02:00
Rene Gollent
ad9496c20c Fix #9687.
- Fix operator prefix/suffix reversal that caused the first
  argument to be evaluated twice.
- Track if we managed to find a name match for the team at all.
  If not, print an error indicating such.
2013-04-19 17:27:26 -04:00
Ingo Weinhold
00b5554e11 pkgman: Print correct error when parsing package info failed 2013-04-19 16:06:11 +02:00
Ingo Weinhold
b50e5e3307 package[_repo]: Print version correctly
Use BPackageVersion::ToString() instead of assembling the version
string manually. This fixes the incorrect pre-release separator.
2013-04-19 01:31:47 +02:00