@@ -, +, @@ --- eapi-differences.tex | 4 +++ merge.tex | 60 ++++++++++++++++++++++++++++++++++++++++++++++++- 2 files changed, 62 insertions(+), 2 deletions(-) --- a/eapi-differences.tex +++ a/eapi-differences.tex @@ -261,6 +261,9 @@ Controllable compression & \compactfeatureref{controllable-compress} & No & No & \t{default} function & \compactfeatureref{default-func} & No & No & \IFANYKDEBUILDELSE{\IFKDEBUILDCOLOUR{No} &}{} Yes & Yes & Yes \\ +File mtimes preserved & \compactfeatureref{mtime-preserve} & Undefined & Undefined & + \IFANYKDEBUILDELSE{\IFKDEBUILDCOLOUR{Undefined} &}{} Undefined & Yes & Yes \\ + \end{longtable} \end{landscape} @@ -327,6 +330,7 @@ EAPI 2 is EAPI 1 with the following changes: EAPI 3 is EAPI 2 with the following changes: \begin{compactitem} +\item File modification times are preserved, \featureref{mtime-preserve}. \item (to be completed) \end{compactitem} --- a/merge.tex +++ a/merge.tex @@ -60,8 +60,64 @@ as follows: set*id bit set. \end{compactitem} -On SELinux systems, the SELinux context must also be preserved. Other file attributes, including -modification time, may be discarded. +On SELinux systems, the SELinux context must also be preserved. Other +file attributes may be discarded. + +\subsection{File modification times} + +\featurelabel{mtime-preserve} +In EAPIs listed in table~\ref{tab:mtime-preserve}, the package manager +must preserve modification times of regular files. This includes files +being compressed before merging. Exceptions to this are files newly +created by the package manager and binary object files being stripped +of symbols. + +When preserving, the seconds part of every regular file's mtime must +be preserved exactly. The sub-second part must either be set to zero, +or set to the greatest value supported by the operating system and +filesystem that is not greater than the sub-second part of the +original time. + +For any given destination filesystem, the package manager must ensure +that for any two preserved files $a$, $b$ in that filesystem the +relation $\mbox{mtime}(a) \leq \mbox{mtime}(b)$ still holds, if it +held under the original image directory. + +In other EAPIs, the behaviour with respect to file modification times +is undefined. + +\begin{centertable}{Preservation of file modification times (mtimes)} + \label{tab:mtime-preserve} +\IFKDEBUILDELSE +{ + \begin{tabular}{ l l } + \toprule + \multicolumn{1}{c}{\textbf{EAPI}} & + \multicolumn{1}{c}{\textbf{mtimes preserved?}} \\ + \midrule + \t{0} & Undefined \\ + \t{1} & Undefined \\ + \t{kdebuild-1} & Undefined \\ + \t{2} & Undefined \\ + \t{3} & Yes \\ + \t{4} & Yes \\ + \bottomrule + \end{tabular} +}{ + \begin{tabular}{ l l } + \toprule + \multicolumn{1}{c}{\textbf{EAPI}} & + \multicolumn{1}{c}{\textbf{mtimes preserved?}} \\ + \midrule + \t{0} & Undefined \\ + \t{1} & Undefined \\ + \t{2} & Undefined \\ + \t{3} & Yes \\ + \t{4} & Yes \\ + \bottomrule + \end{tabular} +} +\end{centertable} \subsection{Configuration File Protection} \label{sec:config-protect} --