Commit Graph

41107 Commits

Author SHA1 Message Date
Ingo Weinhold f71be99bd9 BRequest: Add Process()
The method creates the initial jobs for the request and processes the
jobs from the job queue until empty or an error occurs.
2013-04-20 13:26:34 +02:00
Ingo Weinhold 85d2badf00 package daemon: Add support for activation change request
* daemon: Handle new request B_MESSAGE_COMMIT_TRANSACTION. It activates
  and deactivates given sets of packages. The new packages must be
  placed in a directory in the administrative directory. The daemon
  moves them to the packages directory and the deactivated packages to
  a subdirectory it creates. It also save the old activation state
  there.
* Add private BActivationTransaction, describing an activation change
  transaction.
* BDaemonClient: Add CommitTransaction(), which sends a given
  BActivationTransaction as a B_MESSAGE_COMMIT_TRANSACTION request to
  the daemon.

Completely untested yet.
2013-04-20 01:28:18 +02:00
Ingo Weinhold 7a27bcd113 BPackageInfo: Make use of BMessage::{Add,Find}Strings() 2013-04-20 00:33:13 +02:00
Ingo Weinhold cf0a957ff6 BMessage: Add {Add,Find}Strings()
They add a BStringList to/extract it from a B_STRING_TYPE field.
2013-04-20 00:29:24 +02:00
Ingo Weinhold 3c6784e95c BPackageInfo::Parser: Be a bit stricter wrt. names after all
Also disallow the operator characters in names.
2013-04-19 16:21:42 +02:00
Ingo Weinhold 00b5554e11 pkgman: Print correct error when parsing package info failed 2013-04-19 16:06:11 +02:00
Ingo Weinhold cba60307b8 BPackageInfo::Parser: Relax package/resolvable name rules
Now we allow any character but '-', '/', and whitespace.
2013-04-19 16:04:27 +02:00
Ingo Weinhold f16dbba442 Update libsolv package 2013-04-19 01:34:26 +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
Ingo Weinhold ea8b5c257d BPackageInfo parser: Allow '.' in micro version component
Otherwise we'd have to encode e.g. "cvs-1.12.13.1" differently.
2013-04-18 18:43:47 +02:00
Ingo Weinhold 06b4ebe51c package-infos in tree: use '~' as pre-release separator 2013-04-18 17:50:47 +02:00
Ingo Weinhold 9d81dc7655 BPackage{Info,Version}: Switch to '~' as pre-release separator
Also allow '.' in the pre-release string (as in "alpha4.1") and in
package and resolvable names.
2013-04-18 17:50:47 +02:00
Ingo Weinhold b7c89d42a6 packagefs: Use '~' as pre-release separator
"[...]" turns out to be not so good an idea after all. In the shell it
would require escaping.
2013-04-18 17:50:46 +02:00
Ingo Weinhold 7fa369956e BOpenHashTable::Clear(): Set fItemCount to 0
If not empty, the count would afterwards be out of sync with reality.
2013-04-18 15:53:34 +02:00
Ingo Weinhold 5e6adff989 BPackageVersion::ToString(): Return empty string, if invalid 2013-04-18 15:12:04 +02:00
Ingo Weinhold 7b2d062147 Enforce current package rules for packages built from tree
* Replace '-' in package name by '_'.
* Use new '[...]' notation for pre-release version component.
2013-04-18 14:44:44 +02:00
Ingo Weinhold defc1f774a BPackage{Version,Info}: Switch to new pre-release rule
Also add several checks in the package-info parser to enforce the
<alphanum_underscore> requirement of package/resolvable names and
version components.
2013-04-18 14:41:27 +02:00
Ingo Weinhold d0367de056 packagefs: Switch to new rule for pre-release version part 2013-04-18 14:38:24 +02:00
Ingo Weinhold ceb18a3777 packagefs: Fix typo in debug output 2013-04-18 14:35:59 +02:00
Ingo Weinhold a8b23e3ecf pkgman resolve-dependencies: Allow specifying multiple packages 2013-04-16 20:43:20 +02:00
Ingo Weinhold caba55ee61 Revert to previous libsolv package
In the latest one the version comparison is broken.
2013-04-16 20:34:52 +02:00
Ingo Weinhold 8d85f8e41e Update libsolv package
The Haiku repository support has been upstreamed and the maintainer,
Michael Schroeder, has fixed and improved a few things.
2013-04-16 17:08:45 +02:00
Ingo Weinhold 4210ed011a Fix BMessage::GetInfo() return value check
Since B_OK is 0, the change doesn't affect the semantics.
2013-04-16 17:08:45 +02:00
Ingo Weinhold 88f22c9768 InstallOptionalHaikuImagePackage: Remove first parameter
Instead deduce the file name from the URL. A long overdue change. Avoids
unnecessary name duplication, which only led to errors.
2013-04-16 14:39:31 +02:00
Ingo Weinhold 6185f6e7cc Fix libtool file name 2013-04-16 13:45:33 +02:00
Oliver Tappe e7563b87c7 Updated several base packages 2013-04-16 11:18:44 +02:00
Ingo Weinhold 202c1daaed BPackageVersion: Rename property release to revision
* ... to avoid confusion with the preRelease property. It's also called
  "revision" in the HaikuPorts recipes.
* Update libsolv package. Was necessary due to the BPackageVersion
  change, but also includes a few more changes.
2013-04-16 00:05:19 +02:00
Ingo Weinhold bd59e0d00d BPackageInfo: Fix Linux build
... including an actual bug (operator "|" instead of "||").
2013-04-16 00:01:02 +02:00
Ingo Weinhold e6216e372a Implement getting a BInstallationLocationInfo
* Rename PackageDaemonDefs.h to DaemonDefs.h.
* Replace the MESSAGE_GET_PACKAGES by the new
  B_MESSAGE_GET_INSTALLATION_LOCATION_INFO, which not only returns the
  packages, but also other information about the installation location.
* daemon: Volume: Implement a change count which is bumped whenever
  packages are activated/deactivated/added/removed. Cache the reply
  for a location info request, using the change count to check whether
  it is still up-to-date.
* Add private BDaemonClient for communication with the daemon.
* BRoster:
  - Add GetInstallationLocationInfo() using BDaemonClient.
  - Reimplement GetActivePackages(), using
    GetInstallationLocationInfo().
2013-04-14 17:06:26 +02:00
Ingo Weinhold d7d9497e31 Add BInstallationLocationInfo 2013-04-14 17:06:26 +02:00
Ingo Weinhold b2d96da589 BPackageInfoSet::Iterator: Fix NULL pointer dereference
Since the BPackageInfoSet's map is created lazily, it can be NULL when
an Iterator is constructed.
2013-04-14 17:06:25 +02:00
Ingo Weinhold 8a4ebe2c46 Make BPackageInfo archivable 2013-04-14 17:06:25 +02:00
Ingo Weinhold bbb2dc237a Add BReferenceable to libbe_build
Unbreaks the build on non-Haiku build platforms
2013-04-13 14:39:35 +02:00
Ingo Weinhold 711a2a6eea BPackageInfoSet: Add copy constructor, assignment operator
* Implement copy-on-write support.
* Add copy constructor and assignment operator.
* Remove Init(). Initialize lazily instead. Since AddInfo() can fail
  and we check initialization anyway, there's no point in having an
  explicit Init(). Given that there was only one invocation of Init()
  in the package kit and its users, it was very likely missing in some
  places.
* Fix a few places where we ignored that the PackageMap actually
  contains lists of PackageInfo objects.
2013-04-13 02:08:43 +02:00
Ingo Weinhold 82ce8682f2 Add missing build header Referenceable.h 2013-04-13 02:04:00 +02:00
Ingo Weinhold 0d50fa87ec pkgman: Add beginnings of the "install" command
So far it only solves the dependencies and prints the result. No
problem handling, no actual installation.
2013-04-12 15:29:50 +02:00
Ingo Weinhold 0d8ed3f2a8 BSolver::Install(): Add optional unmatched specifier return param 2013-04-12 14:21:54 +02:00
Ingo Weinhold 71293f8b03 BSolverPackageSpecifier: Fix string constructor 2013-04-12 14:21:08 +02:00
Ingo Weinhold 334a5a566c BSolverRepository: Change priority from uint8 to int32
This allows us to specifies priorities below and above the user
definable range.
2013-04-12 13:42:27 +02:00
Ingo Weinhold 115eae7371 LibsolvSolver::Install(): Fix broken B_PACKAGE case 2013-04-12 12:27:32 +02:00
Ingo Weinhold 38e528bbc1 pkgman: C++-ify the command handling
There's now a Command class that must be derived and registered with
a CommandManager, all simplified by a REGISTER_COMMAND macro. That gets
rid of the print_command_usage_and_exit() function copy for every
command, moves the short usage texts to the command implementations,
and avoids any repetition of the command name. When implementing a new
command only a new source file needs to be created, nothing else needs
to be touched.
2013-04-12 01:48:53 +02:00
Ingo Weinhold 01758ed332 Rework SolverPackageSpecifier
* It no longer consists of a BPackageResolvableExpression and a
  repository. Instead it can now either refer to a package directly or
  consist of a search string.
* SolverPackageSpecifierList: Add AppendSpecifier() convenience
  versions.
* Adjust LibsolvSolver and pkgman accordingly.
2013-04-12 00:21:49 +02:00
Ingo Weinhold 663e351cb4 BSolver/pkgman: Support for searching in provides
* BSolver/LibsolvSolver:
  * Add B_FIND_IN_NAME and make searching in the names explicit.
  * Add B_FIND_IN_PROVIDES to search the packages' provides list.
* pkgman: Also search in provides.
2013-04-11 23:36:12 +02:00
Ingo Weinhold eb13a353e3 Rename "packages" subdir "config" to "administrative"
... to avoid the impression that it contains something the user can
play with.
2013-04-11 17:44:58 +02:00
Ingo Weinhold dd46d98163 pkgman: Add "search" command 2013-04-11 17:33:23 +02:00
Ingo Weinhold 789867563a pkgman RepositoryBuilder: Add BRepositoryConfig constructor 2013-04-11 17:32:17 +02:00
Ingo Weinhold fc57db481f BSolver/LibsolvSolver: Add FindPackages()
Given a search string it finds all matching packages.
2013-04-11 17:30:08 +02:00
Ingo Weinhold a78a2540a8 LibsolvSolver: Fix the lazy re-/initialization
* _Init() was a bit too enthusiastic, throwing really everything away.
  So, after calling it at the beginning of _AddRepositories() there
  wouldn't be any repositories anymore.
* Rename _Init() to _InitPool() to make its purpose clearer.
* Pull a _CleanupPool() out of _Cleanup() that only deletes the pool
  and anything depending on it.
* RepositoryInfo::HasChanged(): Always consider changed when there's no
  libsolv repo yet.
2013-04-11 17:21:27 +02:00
Ingo Weinhold 62f7022a82 package kit: get active packages list from daemon
* daemon: Implement private message protocol to retrieve the active
  packages.
* BPackageRoster::GetActivePackages(): Get the active packages list
  from the daemon.
2013-04-11 02:03:25 +02:00
Ingo Weinhold b254217a09 package daemon: Properly qualify private package headers
... instead of adding the private package header directory to the
include paths.
2013-04-11 00:59:48 +02:00