History log of /haiku/src/bin/package/command_create.cpp
Revision Date Author Comments
# fd276f19 26-Oct-2021 Augustin Cavalier <waddlesplash@gmail.com>

package command: -z now takes an argument to specify the compression method.

The upcoming change to use zstd by default will make the -z no-argument
variant obsolete, so instead we need to support passing "zstd" or "zlib"
to actually indicate the compression method we want to use.


# 82817fee 22-May-2020 Adrien Destugues <pulkomandy@pulkomandy.tk>

package: prevent creating a package that contains itself.

Fixes #10117.

Change-Id: I4be59189a47dd0ad400fe46786d7058be4ed6d3f
Reviewed-on: https://review.haiku-os.org/c/haiku/+/2778
Reviewed-by: waddlesplash <waddlesplash@gmail.com>


# 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>


# f9ecc54e 12-Jul-2014 Ingo Weinhold <ingo_weinhold@gmx.de>

package: Explicitly use B_HPKG_COMPRESSION_NONE


# 796343ed 18-May-2013 Ingo Weinhold <ingo_weinhold@gmx.de>

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.


# 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.


# 0816749e 01-Apr-2013 Ingo Weinhold <ingo_weinhold@gmx.de>

package_repo: Removes dependency to package

* Move StandardErrorOutput to libpackage and into proper namespace to
avoid "package_repo" having to reuse the "package" source file.
* package_repo: Fix incorrect includes of "package.h".


# 1fc3ceed 11-Jul-2011 Ingo Weinhold <ingo_weinhold@gmx.de>

Add options -b and -I to package command

* With -b building a build package can be requested. It will be empty
save for the .PackageInfo. No license check is performed.
* -I allows to specify an install path.


# 723336fe 02-Jul-2011 Ingo Weinhold <ingo_weinhold@gmx.de>

Move directory iteration helper to own file


# cba1e223 02-Jul-2011 Ingo Weinhold <ingo_weinhold@gmx.de>

Move PackageWriterListener to separate file


# 376bc55c 30-Jun-2011 Ingo Weinhold <ingo_weinhold@gmx.de>

Missing include


# 7395bf8a 30-Jun-2011 Ingo Weinhold <ingo_weinhold@gmx.de>

Add create -i option for specifying a package info


# c3093f6d 16-Jun-2011 Ingo Weinhold <ingo_weinhold@gmx.de>

Fixed printf() format related warnings.


# 6f0f81ef 11-Jul-2011 Ingo Weinhold <ingo_weinhold@gmx.de>

Add options -b and -I to package command

* With -b building a build package can be requested. It will be empty
save for the .PackageInfo. No license check is performed.
* -I allows to specify an install path.


# 35f8c67c 02-Jul-2011 Ingo Weinhold <ingo_weinhold@gmx.de>

Move directory iteration helper to own file


# 1bd38c43 02-Jul-2011 Ingo Weinhold <ingo_weinhold@gmx.de>

Move PackageWriterListener to separate file


# 5845e791 30-Jun-2011 Ingo Weinhold <ingo_weinhold@gmx.de>

Missing include


# 6707be54 30-Jun-2011 Ingo Weinhold <ingo_weinhold@gmx.de>

Add create -i option for specifying a package info


# 5eedc380 16-Jun-2011 Ingo Weinhold <ingo_weinhold@gmx.de>

Fixed printf() format related warnings.


# 33bc4425 12-Feb-2011 Oliver Tappe <zooey@hirschkaefer.de>

Largish adjustments to PackagerReaderImpl and package attribute
handling:
* package attributes are now compatible with the low level attribute
handling of other HPKG attributes (such that 'package dump' now shows
package attributes, too)
* dropped type names from hpkg format, the attributes were identified
by IDs already and this simplifies the code considerably. Type names
are now handled in BLowLevelPackageHandler only.
* instead of rolling their own mechanism, high-level package attributes
handling is now implemented via a corresonding set of
AttributeHandler-subclasses
* adjusted package writer to only write package attributes that are
needed (empty ones are left out)


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@40466 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 0d68f6af 09-Feb-2011 Oliver Tappe <zooey@hirschkaefer.de>

Implemented repository writing:
* fleshed out RepositoryWriterImpl
* renamed BRepositoryHeader to BRepositoryInfo (in accordance with
BPackageInfo)
* adjusted BRepositoryInfo to be able to parse itself from a
driver_settings file
* added package_repo binary (only 'create' works as of yet)


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@40405 a95241bf-73f2-0310-859d-f6bbb57e9c96


# d77c6cd2 08-Feb-2011 Oliver Tappe <zooey@hirschkaefer.de>

* implemented checking of licenses, such that it is no longer possible
to create a package that refers to a license that is not a system
license or contained in the package
* added package-info flags (currently only approve_license and
system_package)
* adjusted package-reader/writer and pkgman accordingly

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@40393 a95241bf-73f2-0310-859d-f6bbb57e9c96


# f2022173 07-Feb-2011 Oliver Tappe <zooey@hirschkaefer.de>

Refactoring step towards implementation of RepositoryWriter:
* pulled commonly useful parts out of PackageWriterImpl into
WriterImplBase
* moved CachedStringTable and related methods into a separate class,
StringCache, in order to support having more than one string cache
per package file
* made package attribute section use a string cache, too, as that's
going to be very useful for repositories
* instead of writing package attributes directly, we now collect
corresponding PackageAttributes and write those later
* adjusted package reader accordingly


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@40376 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 7fd711ef 31-Jan-2011 Oliver Tappe <zooey@hirschkaefer.de>

* refactored PackageWriter(Impl) to no longer print anything itself,
but publish that info through a BPackageWriterListener
* adjusted 'package create' to print a package summary by default and
more verbose info upon request.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@40332 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 15a5c3f7 31-Jan-2011 Oliver Tappe <zooey@hirschkaefer.de>

* follow hint by Axel: drop FDCloser and use shared class
FileDescriptorCloser instead


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@40330 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


# b29f1f44 12-Jan-2011 Oliver Tappe <zooey@hirschkaefer.de>

* support "." as parameter when creating a package, in order to
simplify creating a package for the contents of the current folder

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@40213 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 050aa61b 13-Nov-2009 Ingo Weinhold <ingo_weinhold@gmx.de>

Implemented a tool ("package") that implements creation and extraction of
packages of the newly invented Haiku Package format
(http://dev.haiku-os.org/wiki/PackageFormat). It basically works, but it's
still work in progress (e.g. compression is not implemented yet), as is the
format itself.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34018 a95241bf-73f2-0310-859d-f6bbb57e9c96


# f9ecc54e69fc65d83cd642faa5af5b21c0cb3ae7 12-Jul-2014 Ingo Weinhold <ingo_weinhold@gmx.de>

package: Explicitly use B_HPKG_COMPRESSION_NONE


# 796343ed73b1707ed97e91e22b72b8ca81bcdbad 18-May-2013 Ingo Weinhold <ingo_weinhold@gmx.de>

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.


# 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.


# 0816749e41c0757e4e3269e18ffc333b64deb1c8 01-Apr-2013 Ingo Weinhold <ingo_weinhold@gmx.de>

package_repo: Removes dependency to package

* Move StandardErrorOutput to libpackage and into proper namespace to
avoid "package_repo" having to reuse the "package" source file.
* package_repo: Fix incorrect includes of "package.h".


# 1fc3ceeda2c7ac2942fc92fe928f81e6899d47a0 11-Jul-2011 Ingo Weinhold <ingo_weinhold@gmx.de>

Add options -b and -I to package command

* With -b building a build package can be requested. It will be empty
save for the .PackageInfo. No license check is performed.
* -I allows to specify an install path.


# 723336fe52b3a4c2f865545d9df3f138ebadcb9d 02-Jul-2011 Ingo Weinhold <ingo_weinhold@gmx.de>

Move directory iteration helper to own file


# cba1e223768678f6fa6e070d74251b33801414c7 02-Jul-2011 Ingo Weinhold <ingo_weinhold@gmx.de>

Move PackageWriterListener to separate file


# 376bc55c27df522a0a0423835bfb27e6cafdcd13 30-Jun-2011 Ingo Weinhold <ingo_weinhold@gmx.de>

Missing include


# 7395bf8a768f1fb4467ddf88db03034bb97d7bb3 30-Jun-2011 Ingo Weinhold <ingo_weinhold@gmx.de>

Add create -i option for specifying a package info


# c3093f6d0f6ed5683bc6fabd4a94848a6aaf0090 16-Jun-2011 Ingo Weinhold <ingo_weinhold@gmx.de>

Fixed printf() format related warnings.


# 6f0f81ef9b73e662fb4cb70c3cc6dcff52fe2bf5 11-Jul-2011 Ingo Weinhold <ingo_weinhold@gmx.de>

Add options -b and -I to package command

* With -b building a build package can be requested. It will be empty
save for the .PackageInfo. No license check is performed.
* -I allows to specify an install path.


# 35f8c67c17d5a35756ef419d51c640fa9eea4cdc 02-Jul-2011 Ingo Weinhold <ingo_weinhold@gmx.de>

Move directory iteration helper to own file


# 1bd38c43184fef526026c8c9d93ded7d1c9ff635 02-Jul-2011 Ingo Weinhold <ingo_weinhold@gmx.de>

Move PackageWriterListener to separate file


# 5845e7916997e8c231a89daf5a5bacdc9f4211d9 30-Jun-2011 Ingo Weinhold <ingo_weinhold@gmx.de>

Missing include


# 6707be54030e82f4e1a3ad38cdce7d1522f61cb1 30-Jun-2011 Ingo Weinhold <ingo_weinhold@gmx.de>

Add create -i option for specifying a package info


# 5eedc38011960b59a07c8ef16a2c7f5ce1c3d72a 16-Jun-2011 Ingo Weinhold <ingo_weinhold@gmx.de>

Fixed printf() format related warnings.


# 33bc4425be0b545ed3d0b7e7a9a873d31e5a0330 12-Feb-2011 Oliver Tappe <zooey@hirschkaefer.de>

Largish adjustments to PackagerReaderImpl and package attribute
handling:
* package attributes are now compatible with the low level attribute
handling of other HPKG attributes (such that 'package dump' now shows
package attributes, too)
* dropped type names from hpkg format, the attributes were identified
by IDs already and this simplifies the code considerably. Type names
are now handled in BLowLevelPackageHandler only.
* instead of rolling their own mechanism, high-level package attributes
handling is now implemented via a corresonding set of
AttributeHandler-subclasses
* adjusted package writer to only write package attributes that are
needed (empty ones are left out)


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@40466 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 0d68f6afb34d8e01421123b216e34771d1c7fbfe 09-Feb-2011 Oliver Tappe <zooey@hirschkaefer.de>

Implemented repository writing:
* fleshed out RepositoryWriterImpl
* renamed BRepositoryHeader to BRepositoryInfo (in accordance with
BPackageInfo)
* adjusted BRepositoryInfo to be able to parse itself from a
driver_settings file
* added package_repo binary (only 'create' works as of yet)


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@40405 a95241bf-73f2-0310-859d-f6bbb57e9c96


# d77c6cd26a5cf3863ba4258a063d7d8645abf1e3 08-Feb-2011 Oliver Tappe <zooey@hirschkaefer.de>

* implemented checking of licenses, such that it is no longer possible
to create a package that refers to a license that is not a system
license or contained in the package
* added package-info flags (currently only approve_license and
system_package)
* adjusted package-reader/writer and pkgman accordingly

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@40393 a95241bf-73f2-0310-859d-f6bbb57e9c96


# f202217364f40d170b7bf07b60a75457b275b0c1 07-Feb-2011 Oliver Tappe <zooey@hirschkaefer.de>

Refactoring step towards implementation of RepositoryWriter:
* pulled commonly useful parts out of PackageWriterImpl into
WriterImplBase
* moved CachedStringTable and related methods into a separate class,
StringCache, in order to support having more than one string cache
per package file
* made package attribute section use a string cache, too, as that's
going to be very useful for repositories
* instead of writing package attributes directly, we now collect
corresponding PackageAttributes and write those later
* adjusted package reader accordingly


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@40376 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 7fd711ef9999af8ce8dc6c44509ee154230b8d90 31-Jan-2011 Oliver Tappe <zooey@hirschkaefer.de>

* refactored PackageWriter(Impl) to no longer print anything itself,
but publish that info through a BPackageWriterListener
* adjusted 'package create' to print a package summary by default and
more verbose info upon request.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@40332 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 15a5c3f7d91ab7657dc13deee1a18ef9e9c14567 31-Jan-2011 Oliver Tappe <zooey@hirschkaefer.de>

* follow hint by Axel: drop FDCloser and use shared class
FileDescriptorCloser instead


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@40330 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


# b29f1f4498692c5122136f00e4c2e40ca89202ab 12-Jan-2011 Oliver Tappe <zooey@hirschkaefer.de>

* support "." as parameter when creating a package, in order to
simplify creating a package for the contents of the current folder

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@40213 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 050aa61bd63287302e92e90154489a6d353ca743 13-Nov-2009 Ingo Weinhold <ingo_weinhold@gmx.de>

Implemented a tool ("package") that implements creation and extraction of
packages of the newly invented Haiku Package format
(http://dev.haiku-os.org/wiki/PackageFormat). It basically works, but it's
still work in progress (e.g. compression is not implemented yet), as is the
format itself.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34018 a95241bf-73f2-0310-859d-f6bbb57e9c96