blob: acddf55df742d6a0987bdda18af2e19234b23aa2 [file] [log] [blame]
\documentclass[a4paper,twoside,12pt]{article}
\usepackage{zed-cm}
\usepackage{graphicx}
\markboth{Draft version 0.1}{Draft version 0.1}
\pagestyle{myheadings}
\begin{document}
\parskip 2 pt
\parindent 10 pt
\title{Install Pipeline}
\author{Glyn Normington and Andy Wilkinson}
\maketitle
% The following three commands ensure the title page is stamped as
% confidential without a page number. Page numbering is started at the
% table of contents.
\thispagestyle{myheadings}
\pagenumbering{roman}
\setcounter{page}{0}
%=============================================================================
This short specification defines the general contract for install pipelines.
This work relates to the JIRA issue \texttt{DMS-598}.
%\clearpage
%\pagenumbering{roman}
%\tableofcontents
% Type checking hacks
\newcommand{\true}{true}
\newcommand{\false}{false}
%\renewcommand{\empty}{\emptyset}
%=============================================================================
%\clearpage
%\tableofcontents
\clearpage
\pagenumbering{arabic}
%=============================================================================
\section{Basic types}
OSGi State instances and installable artefact trees need to be manipulated by pipeline stages.
\begin{zed}
[State, IATree]
\end{zed}
Install pipelines perform logging by creating log entries.
\begin{zed}
[LogEntry]
\end{zed}
Repositories are collections of artefacts indexed by type, name, and version.
\begin{zed}
[Artefact, AT, AN, AV]
\end{zed}
%=============================================================================
\clearpage
\section{Install environment}
The install pipeline runs in an environment known as an \textit{install environment} which includes
an OSGi State, a tree of installed artefacts, an install log, and a repository.
\begin{schema}{InstallEnv}
state : State \\
iaTree : IATree \\
ilog : \seq LogEntry \\
repo: AT \cross AN \cross AV \pinj Artefact
\end{schema}
%=============================================================================
\clearpage
\section{Pipeline stages}
Pipeline stages have state and operate on installable artefacts.
\begin{zed}
[PipelineStageState, InstallableArtefact]
\end{zed}
\begin{schema}{PipelineStage}
ps : PipelineStageState \\
\end{schema}
Running a pipeline stage may update the stage's state and the install environment although it may
only append to the install log and may not update the repository.
\begin{schema}{Run}
\Delta PipelineStage \\
\Delta InstallEnv \\
ia?, ia! : InstallableArtefact \\
\where
ilog \subseteq ilog' \\
repo' = repo \\
\end{schema}
\end{document}