|
| 1 | +\documentclass{standalone} |
| 2 | + |
| 3 | +\usepackage{tikz} |
| 4 | +\usetikzlibrary{arrows.meta} |
| 5 | + |
| 6 | +\begin{document} |
| 7 | + |
| 8 | +\noindent |
| 9 | +\begin{tikzpicture} |
| 10 | + |
| 11 | +\node[text width=5in] at (2.5, 2) { |
| 12 | +\noindent Arrows represent build dependencies. |
| 13 | +Columns are things that are linked together. |
| 14 | +Rows are things that can be used together to build a program. |
| 15 | +\\ |
| 16 | + |
| 17 | +\noindent \verb|./x.py build --stage N| builds programs in \emph{column} \verb|N| (except rustdoc - it builds rustdoc from column \verb|N + 1|).\\ |
| 18 | +\noindent \verb|./x.py test --stage N| builds and tests everything in \emph{row} \verb|N|.\\ |
| 19 | +\noindent \verb|./x.py doc --stage N| generates docs with rustdoc from \emph{row} \verb|N|.\\ |
| 20 | +}; |
| 21 | + |
| 22 | +\draw[draw=black,fill=white,fill opacity=0.5] (-3, -0.5) rectangle ++(12, 1); |
| 23 | +\draw[fill=teal,fill opacity=0.5] (-3, -1.5) rectangle ++(12, 1); |
| 24 | +\draw[fill=olive,fill opacity=0.5] (-3, -2.5) rectangle ++(12, 1); |
| 25 | +\draw[fill=pink,fill opacity=0.5] (-3, -3.5) rectangle ++(12, 1); |
| 26 | + |
| 27 | +\draw[draw=black,fill=white,fill opacity=0.5] (1, 0.5) rectangle ++(2, -5); |
| 28 | +\draw[fill=teal,fill opacity=0.5] (3, 0.5) rectangle ++(2, -5); |
| 29 | +\draw[fill=olive,fill opacity=0.5] (5, 0.5) rectangle ++(2, -5); |
| 30 | +\draw[fill=pink,fill opacity=0.5] (7, 0.5) rectangle ++(2, -5); |
| 31 | + |
| 32 | +\node[rotate=90] at (-3.5, -1.5) {run-stage}; |
| 33 | + |
| 34 | +\node[] at (-2, 0) {stage 0}; |
| 35 | +\node[] at (-2, -1) {stage 1}; |
| 36 | +\node[] at (-2, -2) {stage 2}; |
| 37 | +\node[] at (-2, -3) {stage 3}; |
| 38 | + |
| 39 | +\node[] at (5, -5) {build-stage}; |
| 40 | + |
| 41 | +\node[] at (2, -4) {stage 0}; |
| 42 | +\node[] at (4, -4) {stage 1}; |
| 43 | +\node[] at (6, -4) {stage 2}; |
| 44 | +\node[] at (8, -4) {stage 3}; |
| 45 | + |
| 46 | +\begin{scope}[every node/.style={thick,draw,fill=white}] |
| 47 | + \node (s0r) at (0,0) {beta rustc}; |
| 48 | + \node (s0s) at (2,0) {std}; |
| 49 | + \node (s1r) at (2,-1) {rustc}; |
| 50 | + \node (s1s) at (4,-1) {std}; |
| 51 | + \node (s2r) at (4,-2) {rustc}; |
| 52 | + \node (s2s) at (6,-2) {std}; |
| 53 | + \node (s3r) at (6,-3) {rustc}; |
| 54 | + \node (s3s) at (8,-3) {std}; |
| 55 | +\end{scope} |
| 56 | + |
| 57 | +\begin{scope}[>={Stealth[black]}, every edge/.style={draw=black,very thick}] |
| 58 | + \path [->] (s0r) edge node {} (s0s); |
| 59 | + \path [->] (s0r) edge node {} (s1r); |
| 60 | + \path [->] (s0s) edge node {} (s1r); |
| 61 | + \path [->] (s1r) edge node {} (s1s); |
| 62 | + \path [->] (s1r) edge node {} (s2r); |
| 63 | + \path [->] (s1s) edge node {} (s2r); |
| 64 | + \path [->] (s2r) edge node {} (s2s); |
| 65 | + \path [->] (s2r) edge node {} (s3r); |
| 66 | + \path [->] (s2s) edge node {} (s3r); |
| 67 | + \path [->] (s3r) edge node {} (s3s); |
| 68 | +\end{scope} |
| 69 | + |
| 70 | +\node[text width=5in] at (2.5, -6) { |
| 71 | +\noindent \verb|build| excludes \verb|rustc| by default. |
| 72 | + |
| 73 | +Use \verb|build --stage N src/rustc| to build the \verb|rustc| in \emph{column} |
| 74 | +\verb|N|. |
| 75 | +}; |
| 76 | + |
| 77 | +\end{tikzpicture} |
| 78 | + |
| 79 | +\end{document} |
0 commit comments