From 6ba08480c2e7a9332c884d5e05c50b4a57711883 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Eray=20=C3=96zkural?= Date: Thu, 21 Jul 2005 10:38:00 +0000 Subject: [PATCH] * dependency: yeni ornek, conflicts/comardeps anlat. * todo'yu duzenle --- TODO | 61 ++++++++++++++++----------------- doc/dependency.pdf | Bin 67210 -> 68212 bytes doc/dependency.tex | 82 ++++++++++++++++++++++++++++++++++----------- 3 files changed, 94 insertions(+), 49 deletions(-) diff --git a/TODO b/TODO index 1c82be68..b71a9c0c 100644 --- a/TODO +++ b/TODO @@ -38,49 +38,31 @@ Legend: + Package/Files 2. Alpha - - fix xml indentation (meren) - + write specfile (eray) - + file locking for database access [not tested!] (eray) - incremental build - generate binary release number by comparing MD5s (MEREN) - keep track of successfully completed configure, make, install steps (necessary for large-scale builds?) (MEREN) - + command line interface: - / multi-package installation - + pisi remove - - pisi upgrade - + svn-like CLI - / configuration file - + define the format of the configuration file - + extend Config module (config.py) accordingly - - define configuration keys - + implement file uri - + extend the modules dealing with files accordingly / multi-package dependency analysis (eray) + design a package operation planner - install operation - upgrade operation - + ui module improvements - + methods for interaction (yes, no questions, etc.) - + implement source database (eray) + + command line interface: + / multi-package installation + + pisi remove + - pisi upgrade (baris) + + svn-like CLI - non-interactive use - / query - + list of installed packages (eray) - - comar OM information (Provides) (eray) - + easy package preparation - + convert ebuild to pisi - + COMAR interface - + what do we need to specify in a package. - + package install: register config script - + package remove: unregister config script - + internet installation - + support URI's whereever a filename is supported - + http server - + pisi updatedb over internet + / configuration file + + define the format of the configuration file + + extend Config module (config.py) accordingly + - define configuration keys / component/category + requirements - xml format - usage + / query + + list of installed packages (eray) + - comar OM information (Provides) (baris) - refactor actionsAPI - actionsAPI documentation - versioning information document @@ -93,9 +75,28 @@ Legend: + sourcedb - package - configuration file + + fix xml indentation (meren) + + write specfile (eray) + + file locking for database access [not tested!] (eray) + + implement file uri + + extend the modules dealing with files accordingly + + ui module improvements + + methods for interaction (yes, no questions, etc.) + + implement source database (eray) + + easy package preparation + + convert ebuild to pisi + + COMAR interface + + what do we need to specify in a package. + + package install: register config script + + package remove: unregister config script + + internet installation + + support URI's whereever a filename is supported + + http server + + pisi updatedb over internet 3. Beta + - system-wide upgrade (upgrade-all) komutu (eray) - multiple package repository / decide how to implement - make a package and sourcedb for each repo diff --git a/doc/dependency.pdf b/doc/dependency.pdf index 0519862e2f5f15c4e304e2dc8be074bd212a62c3..a75422ae923d9591396ef3c657be03c52afc3bc3 100644 GIT binary patch delta 39126 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 CI|Tax delta 38193 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 i|C$(+NlB5pxtqJXd%Id$lOf S$, arrive at a desired system state $S_f$. A system state $S_i$ is defined as the set of installed packages on the -system together with their versions, i.e. $S_i = \{ (x,v) : x is -installed, v=version(x)\} $. An atomic system transition $t_i$ chains one +system together with their versions, i.e. $S_i = \{ (x,v) : x \text{ is +installed}, v=version(x)\} $. An atomic system transition $t_i$ chains one system state into another, making one ACID change on the system. The -usual atomic transitions are the single package install, remove and -upgrade operations found in low-level package management code. +usual atomic transitions are the single package install and remove +operations found in low-level package management code of PISI. Note +that in PISI, an upgrade operation is identical to a remove operation +followed by an install operation (which sets it apart from some other +packaging systems). A package operation plan is thus naturally conceived of as a sequence of atomic system transitions. Given an initial state and a final @@ -98,7 +96,7 @@ state, the job of the package operation planner is to determine whether there is a plan, and if so find the "best" one. Where there are no versions involved (e.g. upgrade/downgrade), we will -replace the pair $(x,v)$ with $x$. +replace the pair $(x,v)$ with $x$ in the definitions for simplicity. \subsection{System consistency} @@ -109,12 +107,13 @@ composed of two conditions for the current set of installed packages. \begin{enumerate} \item All package dependencies are satisfied (we may call this a closed system) -\item No package conflicts are present. +\item No packag conflicts are present. \end{enumerate} Therefore, by atomic transition we also mean one that does not corrupt -system consistency. The system is thus never in an inconsistent state. - +system consistency. The system is thus never in an inconsistent +state. We will explain the conflicts later, for the present let us +look at the dependency condition. \subsection{Solving the simplest case with topological sorting} @@ -170,15 +169,41 @@ accesses to $G$ and construct a dependency graph in memory. If the $G_A$'s fringe has vertices with non 'i'-labels, then $A$ cannot be installed. Otherwise, we find a topological sort $L$ of $G_A$, and in the reverse order, install packages for vertices labelled with -'a' or 'd'. +'a' or 'd'. Observe that, by definition of a topological sort, +installing packages in the reverse order of a topological sort +guarantees that no package is installed before all of its dependencies +are installed. Thus, this yields a consistency-preserving plan. -\section{Complex cases} +\subsection{Conflicts and COMAR dependencies} -\subsection{A complex upgrade} +The tags \texttt{Conflicts} and \texttt{Provides} are inherited from +Debian distribution. A conflict between two packages ($a$ conflicts +with $b$) is a symmetric relation that prevents the packages ($a,b$) +from being installed simultaneously. (It is sufficient that only one +direction of the relation is declared, the other direction is +inferred) Provision in the form of $a$ provides $A$ denotes that $a$ +implements a virtual package abstraction $A$. + +In PISI, a package can provide an object of a COMAR Object Model (OM), +and is currently the only model of a ``virtual package''. In the +following example, let $a_1,a_2,\ldots,a_n$ provide the OM $A$. A package +can depend on another package's OM, for instance $b$ comar-depends on +$A$ (or in short form $bDA$). In this case, it is sufficient that only +one of the $a_i$ are installed. To resolve this, the user is asked to +choose from a list of alternatives immediately, since otherwise there +is unavoidable combinatorial explosion (in the form of having to +consider $\Pi_{bDA}num(A)$ graphs in the worst case where $num(A)$ is +the number of alternatives for comar OM $A$; the problem is that there +seems to be no simple solution to solve satisfiability with arbitrary +disjunctions in package dependency, short of a $SAT$ solver). + +\section{Examples} + +\subsection{A single package upgrade} plan: upgrade $(a,1)$ to $(a,2)$\\ \\ -rules: +rules:\\ $(a,1)$ depends on $(b,1), (c,1)$ \\ $(a,1)$ conflicts with $(d,1)$\\ $(a,2)$ depends on $(c,3), (d,2)$\\ @@ -189,9 +214,28 @@ initial state:\\ \\ plan:\\ remove $(b,1)$\\ - upgrade $(c,1) -> (c,3)$\\ + remove $(c,1)$\\ + remove $(a,1)$\\ + install $(c,3)$\\ install $(d,2)$\\ - upgrade $(a,1) -> (a,2)$\\ + install $(a,2)$\\ +\subsection{A multi package remove} +plan: remove $(a,2), (b,3), (c,2)$\\ +\\ +rules:\\ + $(c,2)$ depends $(a,2)$\\ + $(d,2)$ depends on $(b,3), (c,2)$\\ + $(e,1)$ depends on $(a,2)$\\ + $(f,2)$ depends on $(e,1)$\\ + $(g,2)$ depends on $(e,1)$\\\\ +plan:\\ + remove $(f,2)$\\ + remove $(g,2)$\\ + remove $(e,1)$\\ + remove $(d,2)$\\ + remove $(b,3)$\\ + remove $(c,2)$\\ + remove $(a,2)$\\ \end{document}