Gentoo Archives: gentoo-pms

From: Ciaran McCreesh <ciaran.mccreesh@××××××××××.com>
To: gentoo-pms@l.g.o
Cc: Ciaran McCreesh <ciaran.mccreesh@××××××××××.com>
Subject: [gentoo-pms] [PATCH] Ding dong, old-style virtuals are dead
Date: Sat, 11 Jun 2011 21:05:12
Message-Id: 1307826162-16430-1-git-send-email-ciaran.mccreesh@googlemail.com
In Reply to: Re: [gentoo-pms] [PATCH] Ding dong, old-style virtuals are dead by Ciaran McCreesh
1 ---
2 appendices.tex | 9 +++++++++
3 dependencies.tex | 4 +---
4 ebuild-vars.tex | 3 ---
5 glossary.tex | 8 +++-----
6 metadata-cache.tex | 2 +-
7 pms.tex | 2 --
8 profiles.tex | 13 -------------
9 virtuals.tex | 45 ---------------------------------------------
10 8 files changed, 14 insertions(+), 72 deletions(-)
11 delete mode 100644 virtuals.tex
12
13 diff --git a/appendices.tex b/appendices.tex
14 index 9e91ede..46503bc 100644
15 --- a/appendices.tex
16 +++ b/appendices.tex
17 @@ -56,6 +56,15 @@ The \t{use.defaults} file in the profile directory was used to implement `autous
18 flags on or off depending upon which packages are installed. It was deprecated long ago and finally
19 removed in 2009.
20
21 +\section{Old-style Virtuals}
22 +
23 +Historically, virtuals were special packages rather than regular ebuilds. An ebuild could specify in
24 +the \t{PROVIDE} metadata that it supplied certain virtuals, and the package manager had to bear this
25 +in mind when handling dependencies.
26 +
27 +Old-style virtuals were supported by EAPIs \t{0}, \t{1}, \t{2}, \t{3} and \t{4}, and were phased out
28 +via GLEP 37.
29 +
30 % vim: set filetype=tex fileencoding=utf8 et tw=100 spell spelllang=en :
31
32 %%% Local Variables:
33 diff --git a/dependencies.tex b/dependencies.tex
34 index f6318d8..45081fe 100644
35 --- a/dependencies.tex
36 +++ b/dependencies.tex
37 @@ -13,7 +13,7 @@ There are three classes of dependencies supported by ebuilds:
38 \item Post dependencies (\t{PDEPEND}). These must be installed at some point.
39 \end{compactitem}
40
41 -In addition, \t{SRC\_URI}, \t{HOMEPAGE}, \t{PROVIDE}, \t{RESTRICT}, \t{PROPERTIES}, \t{LICENSE} and
42 +In addition, \t{SRC\_URI}, \t{HOMEPAGE}, \t{RESTRICT}, \t{PROPERTIES}, \t{LICENSE} and
43 \t{REQUIRED\_USE} use dependency-style specifications to specify their values.
44
45 \section{Dependency Specification Format}
46 @@ -23,8 +23,6 @@ be surrounded on both sides by whitespace, except at the start and end of the st
47
48 \begin{compactitem}
49 \item A package dependency specification. Permitted in \t{DEPEND}, \t{RDEPEND}, \t{PDEPEND}.
50 -\item A simple qualified package name. Permitted in \t{PROVIDE} (and inside \t{DEPEND} etc
51 - via the previous item).
52 \item A URI, in the form \t{proto://host/path}. Permitted in \t{SRC\_URI} and \t{HOMEPAGE}. In EAPIs
53 listed in table~\ref{tab:uri-arrows-table} as supporting \t{SRC\_URI} arrows, may optionally be
54 followed by whitespace, then \t{->}, then whitespace, then a simple filename when in
55 diff --git a/ebuild-vars.tex b/ebuild-vars.tex
56 index 8df94e9..d183305 100644
57 --- a/ebuild-vars.tex
58 +++ b/ebuild-vars.tex
59 @@ -77,9 +77,6 @@ Ebuilds may define any of the following variables:
60 \item[DEPEND] See section~\ref{sec:dependencies}.
61 \item[EAPI] The EAPI. See below for defaults.
62 \item[PDEPEND] See section~\ref{sec:dependencies}.
63 -\item[PROVIDE] Zero or more qualified package names of any \i{old style}
64 - virtuals provided by this package. See section~\ref{sec:dependencies} for full syntax.
65 - \label{ebuild-var-provide}
66 \item[RDEPEND] See section~\ref{sec:dependencies}. For some EAPIs, \t{RDEPEND} has special behaviour
67 for its value if unset and when used with an eclass. See section~\ref{sec:rdepend-depend} for
68 details.
69 diff --git a/glossary.tex b/glossary.tex
70 index 2acbeb1..03ecace 100644
71 --- a/glossary.tex
72 +++ b/glossary.tex
73 @@ -7,12 +7,10 @@ be immediately obvious.
74 \begin{description}
75 \item[qualified package name] A package name along with its associated category. For example,
76 \t{app-editors/vim} is a qualified package name.
77 -\item[old-style virtual] An old-style virtual is a pseudo-package which exists if it is listed in an
78 - ebuild's \t{PROVIDE} variable. See chapter~\ref{sec:old-virtuals}.
79 \item[new-style virtual] A new-style virtual is a normal package in the \t{virtual} category which
80 - installs no files and uses its dependency requirements to pull in a `provider'. This is more
81 - flexible than the old-style virtuals described above, and requires no special package manager
82 - code.
83 + installs no files and uses its dependency requirements to pull in a `provider'. Historically,
84 + old-style virtuals required special handling from the package manager; new-style virtuals do
85 + not.
86 \item[stand-alone repository] An (ebuild) repository which is intended to function on its own as the
87 only, or primary, repository on a system. Contrast with \i{slave repository} below.
88 \item[slave repository, non-stand-alone repository] An (ebuild) repository which is not complete
89 diff --git a/metadata-cache.tex b/metadata-cache.tex
90 index 8e7a09d..52c0aee 100644
91 --- a/metadata-cache.tex
92 +++ b/metadata-cache.tex
93 @@ -29,7 +29,7 @@ order. Other lines may be present following these; their meanings are not define
94 \item Use flags that this package requires (\t{REQUIRED\_USE}).
95 Blank in some EAPIs; see table~\ref{tab:optional-vars-table}.
96 \item Post dependencies (\t{PDEPEND})
97 -\item Old-style virtuals provided by this package (\t{PROVIDE})
98 +\item Unused; previously used for old-style virtual \t{PROVIDE}.
99 \item The ebuild API version to which this package conforms (\t{EAPI})
100 \item Properties (\t{PROPERTIES}). In some EAPIs, may optionally be blank, regardless of ebuild
101 metadata; see table~\ref{tab:optional-vars-table}.
102 diff --git a/pms.tex b/pms.tex
103 index efa50de..4ada8ec 100644
104 --- a/pms.tex
105 +++ b/pms.tex
106 @@ -20,8 +20,6 @@
107
108 \include{profiles}
109
110 -\include{virtuals}
111 -
112 \include{ebuild-format}
113
114 \include{ebuild-vars}
115 diff --git a/profiles.tex b/profiles.tex
116 index 2dba163..8246431 100644
117 --- a/profiles.tex
118 +++ b/profiles.tex
119 @@ -63,19 +63,6 @@ bash syntax, is allowed as follows:
120 \item Backslashes, except for line continuations, are not allowed.
121 \end{compactitem}
122
123 -\subsection{virtuals}
124 -\label{sec:profiles-virtuals}
125 -The \t{virtuals} file defines default providers for ``old-style'' virtual packages. It is a simple
126 -line-based file, with each line containing two whitespace-delimited tokens. The first is a virtual
127 -package name (for example, \t{virtual/alsa}) and the second is a qualified package name. Blank lines
128 -and those beginning with a \# character are ignored. When attempting to resolve a virtual name to a
129 -concrete package, the specification defined in the active profile's \t{virtuals} list should be used if no
130 -provider is already installed.
131 -
132 -The \t{virtuals} file is inherited in the simplest manner: all entries from the parent profile are
133 -loaded, then entries from the current profile. If a virtual package name appears in both, the entry
134 -in the parent profile is discarded.
135 -
136 \subsection{Simple line-based files}
137 \label{sec:line-stacking}
138 These files are a simple one-item-per-line list, which is inherited in the following manner: the
139 diff --git a/virtuals.tex b/virtuals.tex
140 deleted file mode 100644
141 index 8ac05aa..0000000
142 --- a/virtuals.tex
143 +++ /dev/null
144 @@ -1,45 +0,0 @@
145 -\chapter{Old-Style Virtual Packages}
146 -\label{sec:old-virtuals}
147 -
148 -Old-style virtuals are pseudo-packages---they can be depended upon or
149 -installed, but do not exist in the ebuild repository. An old-style
150 -virtual requires several things in the repository: at least one ebuild
151 -must list the virtual in its \t{PROVIDE} variable, and there must be
152 -at least one entry in a profiles \t{virtuals} file listing the default
153 -provider for each profile---see sections~\ref{ebuild-var-provide} and
154 -\ref{sec:profiles-virtuals} for specifics on these two. Old-style virtuals
155 -require special handling as regards dependencies; this is described
156 -below.
157 -
158 -All old-style virtuals must use the category \t{virtual}. Not all packages using the \t{virtual}
159 -category may be assumed to be old style virtuals.
160 -
161 -\note A \i{new-style} virtual is simply an ebuild which install no files and use its dependency
162 -strings to select providers. By convention, and to ease migration, these are also placed in the
163 -\t{virtual} category.
164 -
165 -\section{Dependencies on virtual packages}
166 -
167 -When a dependency on a virtual package is encountered, it must be
168 -resolved into a real package before it can be satisfied. There are two
169 -factors that affect this process: whether a package providing the
170 -virtual is installed, and the \t{virtuals} file in the active profile
171 -(section~\ref{sec:profiles-virtuals}). If a package is already installed
172 -which satisfies the virtual requirement (via \t{PROVIDE}), then it
173 -should be used to satisfy the dependency. Otherwise, the profiles
174 -\t{virtuals} file (section~\ref{sec:profiles-virtuals}) should be
175 -consulted to choose an appropriate provider.
176 -
177 -Dependencies on old style virtuals must not use any kind of version restriction.
178 -
179 -Blocks on provided virtuals have special behaviour documented in section~\ref{provided-blocks}.
180 -
181 -% vim: set filetype=tex fileencoding=utf8 et tw=100 spell spelllang=en :
182 -
183 -%%% Local Variables:
184 -%%% mode: latex
185 -%%% TeX-master: "pms"
186 -%%% LaTeX-indent-level: 4
187 -%%% LaTeX-item-indent: 0
188 -%%% TeX-brace-indent-level: 4
189 -%%% End:
190 --
191 1.7.5.1