diff options
20 files changed, 2984 insertions, 120 deletions
diff --git a/etc/spack/defaults/concretizer.yaml b/etc/spack/defaults/concretizer.yaml index 598bb8c349..edefa552ce 100644 --- a/etc/spack/defaults/concretizer.yaml +++ b/etc/spack/defaults/concretizer.yaml @@ -41,4 +41,4 @@ concretizer: # "none": allows a single node for any package in the DAG. # "minimal": allows the duplication of 'build-tools' nodes only (e.g. py-setuptools, cmake etc.) # "full" (experimental): allows separation of the entire build-tool stack (e.g. the entire "cmake" subDAG) - strategy: none
\ No newline at end of file + strategy: minimal diff --git a/lib/spack/docs/build_settings.rst b/lib/spack/docs/build_settings.rst index 0bbd27e8c3..402b33f6a2 100644 --- a/lib/spack/docs/build_settings.rst +++ b/lib/spack/docs/build_settings.rst @@ -3,6 +3,103 @@ SPDX-License-Identifier: (Apache-2.0 OR MIT) + +.. _concretizer-options: + +========================================== +Concretization Settings (concretizer.yaml) +========================================== + +The ``concretizer.yaml`` configuration file allows to customize aspects of the +algorithm used to select the dependencies you install. The default configuration +is the following: + +.. literalinclude:: _spack_root/etc/spack/defaults/concretizer.yaml + :language: yaml + +-------------------------------- +Reuse already installed packages +-------------------------------- + +The ``reuse`` attribute controls whether Spack will prefer to use installed packages (``true``), or +whether it will do a "fresh" installation and prefer the latest settings from +``package.py`` files and ``packages.yaml`` (``false``). +You can use: + +.. code-block:: console + + % spack install --reuse <spec> + +to enable reuse for a single installation, and you can use: + +.. code-block:: console + + spack install --fresh <spec> + +to do a fresh install if ``reuse`` is enabled by default. +``reuse: true`` is the default. + +------------------------------------------ +Selection of the target microarchitectures +------------------------------------------ + +The options under the ``targets`` attribute control which targets are considered during a solve. +Currently the options in this section are only configurable from the ``concretizer.yaml`` file +and there are no corresponding command line arguments to enable them for a single solve. + +The ``granularity`` option can take two possible values: ``microarchitectures`` and ``generic``. +If set to: + +.. code-block:: yaml + + concretizer: + targets: + granularity: microarchitectures + +Spack will consider all the microarchitectures known to ``archspec`` to label nodes for +compatibility. If instead the option is set to: + +.. code-block:: yaml + + concretizer: + targets: + granularity: generic + +Spack will consider only generic microarchitectures. For instance, when running on an +Haswell node, Spack will consider ``haswell`` as the best target in the former case and +``x86_64_v3`` as the best target in the latter case. + +The ``host_compatible`` option is a Boolean option that determines whether or not the +microarchitectures considered during the solve are constrained to be compatible with the +host Spack is currently running on. For instance, if this option is set to ``true``, a +user cannot concretize for ``target=icelake`` while running on an Haswell node. + +--------------- +Duplicate nodes +--------------- + +The ``duplicates`` attribute controls whether the DAG can contain multiple configurations of +the same package. This is mainly relevant for build dependencies, which may have their version +pinned by some nodes, and thus be required at different versions by different nodes in the same +DAG. + +The ``strategy`` option controls how the solver deals with duplicates. If the value is ``none``, +then a single configuration per package is allowed in the DAG. This means, for instance, that only +a single ``cmake`` or a single ``py-setuptools`` version is allowed. The result would be a slightly +faster concretization, at the expense of making a few specs unsolvable. + +If the value is ``minimal`` Spack will allow packages tagged as ``build-tools`` to have duplicates. +This allows, for instance, to concretize specs whose nodes require different, and incompatible, ranges +of some build tool. For instance, in the figure below the latest `py-shapely` requires a newer `py-setuptools`, +while `py-numpy` still needs an older version: + +.. figure:: images/shapely_duplicates.svg + :scale: 70 % + :align: center + +Up to Spack v0.20 ``duplicates:strategy:none`` was the default (and only) behavior. From Spack v0.21 the +default behavior is ``duplicates:strategy:minimal``. + .. _build-settings: ================================ @@ -232,76 +329,6 @@ Specific limitations include: then Spack will not add a new external entry (``spack config blame packages`` can help locate all external entries). -.. _concretizer-options: - ----------------------- -Concretizer options ----------------------- - -``packages.yaml`` gives the concretizer preferences for specific packages, -but you can also use ``concretizer.yaml`` to customize aspects of the -algorithm it uses to select the dependencies you install: - -.. literalinclude:: _spack_root/etc/spack/defaults/concretizer.yaml - :language: yaml - -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -Reuse already installed packages -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -The ``reuse`` attribute controls whether Spack will prefer to use installed packages (``true``), or -whether it will do a "fresh" installation and prefer the latest settings from -``package.py`` files and ``packages.yaml`` (``false``). -You can use: - -.. code-block:: console - - % spack install --reuse <spec> - -to enable reuse for a single installation, and you can use: - -.. code-block:: console - - spack install --fresh <spec> - -to do a fresh install if ``reuse`` is enabled by default. -``reuse: true`` is the default. - -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -Selection of the target microarchitectures -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -The options under the ``targets`` attribute control which targets are considered during a solve. -Currently the options in this section are only configurable from the ``concretizer.yaml`` file -and there are no corresponding command line arguments to enable them for a single solve. - -The ``granularity`` option can take two possible values: ``microarchitectures`` and ``generic``. -If set to: - -.. code-block:: yaml - - concretizer: - targets: - granularity: microarchitectures - -Spack will consider all the microarchitectures known to ``archspec`` to label nodes for -compatibility. If instead the option is set to: - -.. code-block:: yaml - - concretizer: - targets: - granularity: generic - -Spack will consider only generic microarchitectures. For instance, when running on an -Haswell node, Spack will consider ``haswell`` as the best target in the former case and -``x86_64_v3`` as the best target in the latter case. - -The ``host_compatible`` option is a Boolean option that determines whether or not the -microarchitectures considered during the solve are constrained to be compatible with the -host Spack is currently running on. For instance, if this option is set to ``true``, a -user cannot concretize for ``target=icelake`` while running on an Haswell node. - .. _package-requirements: -------------------- diff --git a/lib/spack/docs/images/shapely_duplicates.svg b/lib/spack/docs/images/shapely_duplicates.svg new file mode 100644 index 0000000000..912f03b2e5 --- /dev/null +++ b/lib/spack/docs/images/shapely_duplicates.svg @@ -0,0 +1,2784 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Generated by graphviz version 2.49.0 (0) + --> + +<!-- Title: G Pages: 1 --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="5580pt" + height="1842pt" + viewBox="0.00 0.00 5580.04 1841.60" + version="1.1" + id="svg996" + sodipodi:docname="shapely_duplicates.svg" + inkscape:version="0.92.5 (2060ec1f9f, 2020-04-08)"> + <metadata + id="metadata1002"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + </cc:Work> + </rdf:RDF> + </metadata> + <defs + id="defs1000" /> + <sodipodi:namedview + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1" + objecttolerance="10" + gridtolerance="10" + guidetolerance="10" + inkscape:pageopacity="0" + inkscape:pageshadow="2" + inkscape:window-width="3840" + inkscape:window-height="2096" + id="namedview998" + showgrid="false" + inkscape:zoom="0.37311828" + inkscape:cx="4881.4641" + inkscape:cy="1383.4263" + inkscape:window-x="0" + inkscape:window-y="27" + inkscape:window-maximized="1" + inkscape:current-layer="graph0" /> + <g + id="graph0" + class="graph" + transform="scale(1 1) rotate(0) translate(4 1837.6)"> + <title + id="title2">G</title> + <polygon + fill="white" + stroke="transparent" + points="-4,4 -4,-1837.6 5576.04,-1837.6 5576.04,4 -4,4" + id="polygon4" /> + <!-- bqm4trdmbbqhrthe6flwnxp57cfbbser --> + <g + id="node1" + class="node"> + <title + id="title6">bqm4trdmbbqhrthe6flwnxp57cfbbser</title> + <path + fill="coral" + stroke="black" + stroke-width="4" + d="M426.56,-245.5C426.56,-245.5 11.81,-245.5 11.81,-245.5 5.81,-245.5 -0.19,-239.5 -0.19,-233.5 -0.19,-233.5 -0.19,-170.9 -0.19,-170.9 -0.19,-164.9 5.81,-158.9 11.81,-158.9 11.81,-158.9 426.56,-158.9 426.56,-158.9 432.56,-158.9 438.56,-164.9 438.56,-170.9 438.56,-170.9 438.56,-233.5 438.56,-233.5 438.56,-239.5 432.56,-245.5 426.56,-245.5" + id="path8" /> + <text + x="219.19" + y="-195" + font-size="24.00" + id="text10" + style="font-size:24px;font-family:Monaco;text-anchor:middle">nghttp2@1.52.0/bqm4trd</text> + </g> + <!-- hsp7usvecwby6o6kszujxywbux5f5qc4 --> + <g + id="node32" + class="node"> + <title + id="title13">hsp7usvecwby6o6kszujxywbux5f5qc4</title> + <path + fill="coral" + stroke="black" + stroke-width="4" + d="M668.7,-86.7C668.7,-86.7 263.67,-86.7 263.67,-86.7 257.67,-86.7 251.67,-80.7 251.67,-74.7 251.67,-74.7 251.67,-12.1 251.67,-12.1 251.67,-6.1 257.67,-0.1 263.67,-0.1 263.67,-0.1 668.7,-0.1 668.7,-0.1 674.7,-0.1 680.7,-6.1 680.7,-12.1 680.7,-12.1 680.7,-74.7 680.7,-74.7 680.7,-80.7 674.7,-86.7 668.7,-86.7" + id="path15" /> + <text + x="466.19" + y="-36.200001" + font-size="24.00" + id="text17" + style="font-size:24px;font-family:Monaco;text-anchor:middle">pkgconf@1.9.5/hsp7usv</text> + </g> + <!-- bqm4trdmbbqhrthe6flwnxp57cfbbser->hsp7usvecwby6o6kszujxywbux5f5qc4 --> + <g + id="edge43" + class="edge"> + <title + id="title20">bqm4trdmbbqhrthe6flwnxp57cfbbser->hsp7usvecwby6o6kszujxywbux5f5qc4</title> + <path + fill="none" + stroke="dodgerblue" + stroke-width="2" + d="M286.03,-158.77C318.29,-138.29 357.14,-113.62 390.49,-92.45" + id="path22" /> + <polygon + fill="dodgerblue" + stroke="dodgerblue" + stroke-width="2" + points="392.72,-95.18 399.29,-86.87 388.97,-89.27 392.72,-95.18" + id="polygon24" /> + </g> + <!-- s3mykqnlex5ygursynhv4cfu4p4jcp5c --> + <g + id="node2" + class="node"> + <title + id="title27">s3mykqnlex5ygursynhv4cfu4p4jcp5c</title> + <path + fill="coral" + stroke="black" + stroke-width="4" + d="M1829.88,-404.3C1829.88,-404.3 1436.49,-404.3 1436.49,-404.3 1430.49,-404.3 1424.49,-398.3 1424.49,-392.3 1424.49,-392.3 1424.49,-329.7 1424.49,-329.7 1424.49,-323.7 1430.49,-317.7 1436.49,-317.7 1436.49,-317.7 1829.88,-317.7 1829.88,-317.7 1835.88,-317.7 1841.88,-323.7 1841.88,-329.7 1841.88,-329.7 1841.88,-392.3 1841.88,-392.3 1841.88,-398.3 1835.88,-404.3 1829.88,-404.3" + id="path29" /> + <text + x="1633.1899" + y="-353.79999" + font-size="24.00" + id="text31" + style="font-size:24px;font-family:Monaco;text-anchor:middle">diffutils@3.9/s3mykqn</text> + </g> + <!-- gpd7yevon44acblslmgorfsxufgk3nhz --> + <g + id="node14" + class="node"> + <title + id="title34">gpd7yevon44acblslmgorfsxufgk3nhz</title> + <path + fill="lightblue" + stroke="black" + stroke-width="4" + d="M3429.7,-245.5C3429.7,-245.5 3026.67,-245.5 3026.67,-245.5 3020.67,-245.5 3014.67,-239.5 3014.67,-233.5 3014.67,-233.5 3014.67,-170.9 3014.67,-170.9 3014.67,-164.9 3020.67,-158.9 3026.67,-158.9 3026.67,-158.9 3429.7,-158.9 3429.7,-158.9 3435.7,-158.9 3441.7,-164.9 3441.7,-170.9 3441.7,-170.9 3441.7,-233.5 3441.7,-233.5 3441.7,-239.5 3435.7,-245.5 3429.7,-245.5" + id="path36" /> + <text + x="3228.1899" + y="-195" + font-size="24.00" + id="text38" + style="font-size:24px;font-family:Monaco;text-anchor:middle">libiconv@1.17/gpd7yev</text> + </g> + <!-- s3mykqnlex5ygursynhv4cfu4p4jcp5c->gpd7yevon44acblslmgorfsxufgk3nhz --> + <g + id="edge23" + class="edge"> + <title + id="title41">s3mykqnlex5ygursynhv4cfu4p4jcp5c->gpd7yevon44acblslmgorfsxufgk3nhz</title> + <path + fill="none" + stroke="dodgerblue" + stroke-width="2" + d="M1841.9,-323.65C1859.52,-321.1 1877.08,-318.71 1894.06,-316.61 2283.29,-268.37 2738.86,-234.03 3004.32,-216.21" + id="path43" /> + <path + fill="none" + stroke="crimson" + stroke-width="2" + d="M1842.19,-325.63C1859.79,-323.08 1877.35,-320.69 1894.31,-318.59 2283.44,-270.37 2739.02,-236.02 3004.45,-218.21" + id="path45" /> + <polygon + fill="dodgerblue" + stroke="dodgerblue" + stroke-width="2" + points="3004.79,-220.69 3014.53,-216.53 3004.32,-213.71 3004.79,-220.69" + id="polygon47" /> + </g> + <!-- al63766ivhemwb3bxsklvqmhdptf34fn --> + <g + id="node3" + class="node"> + <title + id="title50">al63766ivhemwb3bxsklvqmhdptf34fn</title> + <path + fill="lightblue" + stroke="black" + stroke-width="4" + d="M3438.7,-1674.7C3438.7,-1674.7 3057.67,-1674.7 3057.67,-1674.7 3051.67,-1674.7 3045.67,-1668.7 3045.67,-1662.7 3045.67,-1662.7 3045.67,-1600.1 3045.67,-1600.1 3045.67,-1594.1 3051.67,-1588.1 3057.67,-1588.1 3057.67,-1588.1 3438.7,-1588.1 3438.7,-1588.1 3444.7,-1588.1 3450.7,-1594.1 3450.7,-1600.1 3450.7,-1600.1 3450.7,-1662.7 3450.7,-1662.7 3450.7,-1668.7 3444.7,-1674.7 3438.7,-1674.7" + id="path52" /> + <text + x="3248.1899" + y="-1624.2" + font-size="24.00" + id="text54" + style="font-size:24px;font-family:Monaco;text-anchor:middle">geos@3.12.0/al63766</text> + </g> + <!-- ma6zn6mykr7xe226v2hvu4ye7jltnddb --> + <g + id="node23" + class="node"> + <title + id="title57">ma6zn6mykr7xe226v2hvu4ye7jltnddb</title> + <path + fill="coral" + stroke="black" + stroke-width="4" + d="M521.67,-1198.3C521.67,-1198.3 104.71,-1198.3 104.71,-1198.3 98.71,-1198.3 92.71,-1192.3 92.71,-1186.3 92.71,-1186.3 92.71,-1123.7 92.71,-1123.7 92.71,-1117.7 98.71,-1111.7 104.71,-1111.7 104.71,-1111.7 521.67,-1111.7 521.67,-1111.7 527.67,-1111.7 533.67,-1117.7 533.67,-1123.7 533.67,-1123.7 533.67,-1186.3 533.67,-1186.3 533.67,-1192.3 527.67,-1198.3 521.67,-1198.3" + id="path59" /> + <text + x="313.19" + y="-1147.8" + font-size="24.00" + id="text61" + style="font-size:24px;font-family:Monaco;text-anchor:middle">cmake@3.27.4/ma6zn6m</text> + </g> + <!-- al63766ivhemwb3bxsklvqmhdptf34fn->ma6zn6mykr7xe226v2hvu4ye7jltnddb --> + <g + id="edge35" + class="edge"> + <title + id="title64">al63766ivhemwb3bxsklvqmhdptf34fn->ma6zn6mykr7xe226v2hvu4ye7jltnddb</title> + <path + fill="none" + stroke="dodgerblue" + stroke-width="2" + d="M3045.61,-1629.73C2579.68,-1626.57 1443.62,-1609.24 1074.19,-1516 807.17,-1448.61 520.96,-1285.4 388.46,-1203.93" + id="path66" /> + <polygon + fill="dodgerblue" + stroke="dodgerblue" + stroke-width="2" + points="389.92,-1200.72 379.57,-1198.44 386.24,-1206.67 389.92,-1200.72" + id="polygon68" /> + </g> + <!-- revhbmcsddofjb7jt3fql7fawtxjihvc --> + <g + id="node30" + class="node"> + <title + id="title71">revhbmcsddofjb7jt3fql7fawtxjihvc</title> + <path + fill="coral" + stroke="black" + stroke-width="4" + d="M1486.85,-1515.9C1486.85,-1515.9 1095.52,-1515.9 1095.52,-1515.9 1089.52,-1515.9 1083.52,-1509.9 1083.52,-1503.9 1083.52,-1503.9 1083.52,-1441.3 1083.52,-1441.3 1083.52,-1435.3 1089.52,-1429.3 1095.52,-1429.3 1095.52,-1429.3 1486.85,-1429.3 1486.85,-1429.3 1492.85,-1429.3 1498.85,-1435.3 1498.85,-1441.3 1498.85,-1441.3 1498.85,-1503.9 1498.85,-1503.9 1498.85,-1509.9 1492.85,-1515.9 1486.85,-1515.9" + id="path73" /> + <text + x="1291.1899" + y="-1465.4" + font-size="24.00" + id="text75" + style="font-size:24px;font-family:Monaco;text-anchor:middle">ninja@1.11.1/revhbmc</text> + </g> + <!-- al63766ivhemwb3bxsklvqmhdptf34fn->revhbmcsddofjb7jt3fql7fawtxjihvc --> + <g + id="edge59" + class="edge"> + <title + id="title78">al63766ivhemwb3bxsklvqmhdptf34fn->revhbmcsddofjb7jt3fql7fawtxjihvc</title> + <path + fill="none" + stroke="dodgerblue" + stroke-width="2" + d="M3045.67,-1614.17C2675.06,-1584.48 1890.81,-1521.64 1509.08,-1491.06" + id="path80" /> + <polygon + fill="dodgerblue" + stroke="dodgerblue" + stroke-width="2" + points="1509.27,-1487.56 1499.02,-1490.25 1508.71,-1494.54 1509.27,-1487.56" + id="polygon82" /> + </g> + <!-- 7vxac6cvfyqggxsvd7votisi72rdfvoh --> + <g + id="node4" + class="node"> + <title + id="title85">7vxac6cvfyqggxsvd7votisi72rdfvoh</title> + <path + fill="coral" + stroke="black" + stroke-width="4" + d="M1226.36,-721.9C1226.36,-721.9 620.01,-721.9 620.01,-721.9 614.01,-721.9 608.01,-715.9 608.01,-709.9 608.01,-709.9 608.01,-647.3 608.01,-647.3 608.01,-641.3 614.01,-635.3 620.01,-635.3 620.01,-635.3 1226.36,-635.3 1226.36,-635.3 1232.36,-635.3 1238.36,-641.3 1238.36,-647.3 1238.36,-647.3 1238.36,-709.9 1238.36,-709.9 1238.36,-715.9 1232.36,-721.9 1226.36,-721.9" + id="path87" /> + <text + x="923.19" + y="-671.40002" + font-size="24.00" + id="text89" + style="font-size:24px;font-family:Monaco;text-anchor:middle">ca-certificates-mozilla@2023-05-30/7vxac6c</text> + </g> + <!-- wuse2zg2p4ujfbsks4znlwyqumsa476w --> + <g + id="node5" + class="node"> + <title + id="title92">wuse2zg2p4ujfbsks4znlwyqumsa476w</title> + <path + fill="coral" + stroke="black" + stroke-width="4" + d="M4274.67,-1515.9C4274.67,-1515.9 3821.7,-1515.9 3821.7,-1515.9 3815.7,-1515.9 3809.7,-1509.9 3809.7,-1503.9 3809.7,-1503.9 3809.7,-1441.3 3809.7,-1441.3 3809.7,-1435.3 3815.7,-1429.3 3821.7,-1429.3 3821.7,-1429.3 4274.67,-1429.3 4274.67,-1429.3 4280.67,-1429.3 4286.67,-1435.3 4286.67,-1441.3 4286.67,-1441.3 4286.67,-1503.9 4286.67,-1503.9 4286.67,-1509.9 4280.67,-1515.9 4274.67,-1515.9" + id="path94" /> + <text + x="4048.1899" + y="-1465.4" + font-size="24.00" + id="text96" + style="font-size:24px;font-family:Monaco;text-anchor:middle">py-cython@0.29.36/wuse2zg</text> + </g> + <!-- 7ftqkn35sy5bmqv3wui3ap3gubqyu4f4 --> + <g + id="node10" + class="node"> + <title + id="title99">7ftqkn35sy5bmqv3wui3ap3gubqyu4f4</title> + <path + fill="lightblue" + stroke="black" + stroke-width="4" + d="M3900.72,-1039.5C3900.72,-1039.5 3499.65,-1039.5 3499.65,-1039.5 3493.65,-1039.5 3487.65,-1033.5 3487.65,-1027.5 3487.65,-1027.5 3487.65,-964.9 3487.65,-964.9 3487.65,-958.9 3493.65,-952.9 3499.65,-952.9 3499.65,-952.9 3900.72,-952.9 3900.72,-952.9 3906.72,-952.9 3912.72,-958.9 3912.72,-964.9 3912.72,-964.9 3912.72,-1027.5 3912.72,-1027.5 3912.72,-1033.5 3906.72,-1039.5 3900.72,-1039.5" + id="path101" /> + <text + x="3700.1899" + y="-989" + font-size="24.00" + id="text103" + style="font-size:24px;font-family:Monaco;text-anchor:middle">python@3.11.4/7ftqkn3</text> + </g> + <!-- wuse2zg2p4ujfbsks4znlwyqumsa476w->7ftqkn35sy5bmqv3wui3ap3gubqyu4f4 --> + <g + id="edge84" + class="edge"> + <title + id="title106">wuse2zg2p4ujfbsks4znlwyqumsa476w->7ftqkn35sy5bmqv3wui3ap3gubqyu4f4</title> + <path + fill="none" + stroke="dodgerblue" + stroke-width="2" + d="M4031.64,-1429.51C4015.15,-1387.39 3986.76,-1321.85 3952.36,-1270.96 3894.42,-1185.15 3809.75,-1099.62 3754.66,-1047.77" + id="path108" /> + <path + fill="none" + stroke="goldenrod" + stroke-width="2" + d="M4033.5,-1428.79C4016.98,-1386.6 3988.59,-1321.06 3954.01,-1269.84 3895.84,-1183.74 3811.17,-1098.21 3756.03,-1046.31" + id="path110" /> + <polygon + fill="dodgerblue" + stroke="dodgerblue" + stroke-width="2" + points="3757.46,-1044.23 3747.77,-1039.95 3752.68,-1049.34 3757.46,-1044.23" + id="polygon112" /> + </g> + <!-- 33tg442mk3uy52ocdgd7uxbusdtkozlq --> + <g + id="node15" + class="node"> + <title + id="title115">33tg442mk3uy52ocdgd7uxbusdtkozlq</title> + <path + fill="coral" + stroke="black" + stroke-width="4" + d="M4496.72,-1198.3C4496.72,-1198.3 4095.65,-1198.3 4095.65,-1198.3 4089.65,-1198.3 4083.65,-1192.3 4083.65,-1186.3 4083.65,-1186.3 4083.65,-1123.7 4083.65,-1123.7 4083.65,-1117.7 4089.65,-1111.7 4095.65,-1111.7 4095.65,-1111.7 4496.72,-1111.7 4496.72,-1111.7 4502.72,-1111.7 4508.72,-1117.7 4508.72,-1123.7 4508.72,-1123.7 4508.72,-1186.3 4508.72,-1186.3 4508.72,-1192.3 4502.72,-1198.3 4496.72,-1198.3" + id="path117" /> + <text + x="4296.1899" + y="-1147.8" + font-size="24.00" + id="text119" + style="font-size:24px;font-family:Monaco;text-anchor:middle">py-pip@23.1.2/33tg442</text> + </g> + <!-- wuse2zg2p4ujfbsks4znlwyqumsa476w->33tg442mk3uy52ocdgd7uxbusdtkozlq --> + <g + id="edge61" + class="edge"> + <title + id="title122">wuse2zg2p4ujfbsks4znlwyqumsa476w->33tg442mk3uy52ocdgd7uxbusdtkozlq</title> + <path + fill="none" + stroke="dodgerblue" + stroke-width="2" + d="M4040.99,-1429.1C4035.98,-1385.4 4035.05,-1317.28 4067.19,-1270.4 4086.97,-1241.54 4116.24,-1219.61 4147.29,-1203.08" + id="path124" /> + <polygon + fill="dodgerblue" + stroke="dodgerblue" + stroke-width="2" + points="4149.23,-1206.02 4156.53,-1198.34 4146.04,-1199.79 4149.23,-1206.02" + id="polygon126" /> + </g> + <!-- isprdjk4hdva3owdr6bgzavgaqzyjwyj --> + <g + id="node19" + class="node"> + <title + id="title129">isprdjk4hdva3owdr6bgzavgaqzyjwyj</title> + <path + fill="coral" + stroke="black" + stroke-width="4" + d="M4503.84,-1357.1C4503.84,-1357.1 4088.53,-1357.1 4088.53,-1357.1 4082.53,-1357.1 4076.53,-1351.1 4076.53,-1345.1 4076.53,-1345.1 4076.53,-1282.5 4076.53,-1282.5 4076.53,-1276.5 4082.53,-1270.5 4088.53,-1270.5 4088.53,-1270.5 4503.84,-1270.5 4503.84,-1270.5 4509.84,-1270.5 4515.84,-1276.5 4515.84,-1282.5 4515.84,-1282.5 4515.84,-1345.1 4515.84,-1345.1 4515.84,-1351.1 4509.84,-1357.1 4503.84,-1357.1" + id="path131" /> + <text + x="4296.1899" + y="-1306.6" + font-size="24.00" + id="text133" + style="font-size:24px;font-family:Monaco;text-anchor:middle">py-wheel@0.37.1/isprdjk</text> + </g> + <!-- wuse2zg2p4ujfbsks4znlwyqumsa476w->isprdjk4hdva3owdr6bgzavgaqzyjwyj --> + <g + id="edge70" + class="edge"> + <title + id="title136">wuse2zg2p4ujfbsks4znlwyqumsa476w->isprdjk4hdva3owdr6bgzavgaqzyjwyj</title> + <path + fill="none" + stroke="dodgerblue" + stroke-width="2" + d="M4115.3,-1429.17C4147.69,-1408.69 4186.7,-1384.02 4220.18,-1362.85" + id="path138" /> + <polygon + fill="dodgerblue" + stroke="dodgerblue" + stroke-width="2" + points="4222.44,-1365.57 4229.02,-1357.27 4218.7,-1359.65 4222.44,-1365.57" + id="polygon140" /> + </g> + <!-- esl2253adih4qsbluhmzdtsxfrws4fnt --> + <g + id="node26" + class="node"> + <title + id="title143">esl2253adih4qsbluhmzdtsxfrws4fnt</title> + <path + fill="lightblue" + stroke="black" + stroke-width="4" + d="M3931.86,-1357.1C3931.86,-1357.1 3468.51,-1357.1 3468.51,-1357.1 3462.51,-1357.1 3456.51,-1351.1 3456.51,-1345.1 3456.51,-1345.1 3456.51,-1282.5 3456.51,-1282.5 3456.51,-1276.5 3462.51,-1270.5 3468.51,-1270.5 3468.51,-1270.5 3931.86,-1270.5 3931.86,-1270.5 3937.86,-1270.5 3943.86,-1276.5 3943.86,-1282.5 3943.86,-1282.5 3943.86,-1345.1 3943.86,-1345.1 3943.86,-1351.1 3937.86,-1357.1 3931.86,-1357.1" + id="path145" /> + <text + x="3700.1899" + y="-1306.6" + font-size="24.00" + id="text147" + style="font-size:24px;font-family:Monaco;text-anchor:middle">py-setuptools@59.4.0/esl2253</text> + </g> + <!-- wuse2zg2p4ujfbsks4znlwyqumsa476w->esl2253adih4qsbluhmzdtsxfrws4fnt --> + <g + id="edge50" + class="edge"> + <title + id="title150">wuse2zg2p4ujfbsks4znlwyqumsa476w->esl2253adih4qsbluhmzdtsxfrws4fnt</title> + <path + fill="none" + stroke="dodgerblue" + stroke-width="2" + d="M3953.6,-1430.08C3906.99,-1409.08 3850.61,-1383.68 3802.85,-1362.15" + id="path152" /> + <path + fill="none" + stroke="goldenrod" + stroke-width="2" + d="M3954.42,-1428.26C3907.81,-1407.25 3851.44,-1381.85 3803.67,-1360.33" + id="path154" /> + <polygon + fill="dodgerblue" + stroke="dodgerblue" + stroke-width="2" + points="3804.69,-1358.05 3794.13,-1357.13 3801.81,-1364.43 3804.69,-1358.05" + id="polygon156" /> + </g> + <!-- e3xjka5zk6vtoen2oexuzxyorp6um5rv --> + <g + id="node6" + class="node"> + <title + id="title159">e3xjka5zk6vtoen2oexuzxyorp6um5rv</title> + <path + fill="lightblue" + stroke="black" + stroke-width="4" + d="M1463.86,-880.7C1463.86,-880.7 1068.52,-880.7 1068.52,-880.7 1062.52,-880.7 1056.52,-874.7 1056.52,-868.7 1056.52,-868.7 1056.52,-806.1 1056.52,-806.1 1056.52,-800.1 1062.52,-794.1 1068.52,-794.1 1068.52,-794.1 1463.86,-794.1 1463.86,-794.1 1469.86,-794.1 1475.86,-800.1 1475.86,-806.1 1475.86,-806.1 1475.86,-868.7 1475.86,-868.7 1475.86,-874.7 1469.86,-880.7 1463.86,-880.7" + id="path161" /> + <text + x="1266.1899" + y="-830.20001" + font-size="24.00" + id="text163" + style="font-size:24px;font-family:Monaco;text-anchor:middle">openssl@3.1.3/e3xjka5</text> + </g> + <!-- e3xjka5zk6vtoen2oexuzxyorp6um5rv->7vxac6cvfyqggxsvd7votisi72rdfvoh --> + <g + id="edge8" + class="edge"> + <title + id="title166">e3xjka5zk6vtoen2oexuzxyorp6um5rv->7vxac6cvfyqggxsvd7votisi72rdfvoh</title> + <path + fill="none" + stroke="dodgerblue" + stroke-width="2" + d="M1173.36,-793.97C1127.52,-773.01 1072.09,-747.67 1025.07,-726.18" + id="path168" /> + <polygon + fill="dodgerblue" + stroke="dodgerblue" + stroke-width="2" + points="1026.33,-722.9 1015.78,-721.93 1023.42,-729.27 1026.33,-722.9" + id="polygon170" /> + </g> + <!-- ez3cm4rogbx7at45wfi6gquti6fbo3zz --> + <g + id="node35" + class="node"> + <title + id="title173">ez3cm4rogbx7at45wfi6gquti6fbo3zz</title> + <path + fill="lightblue" + stroke="black" + stroke-width="4" + d="M2346.49,-404.3C2346.49,-404.3 1947.88,-404.3 1947.88,-404.3 1941.88,-404.3 1935.88,-398.3 1935.88,-392.3 1935.88,-392.3 1935.88,-329.7 1935.88,-329.7 1935.88,-323.7 1941.88,-317.7 1947.88,-317.7 1947.88,-317.7 2346.49,-317.7 2346.49,-317.7 2352.49,-317.7 2358.49,-323.7 2358.49,-329.7 2358.49,-329.7 2358.49,-392.3 2358.49,-392.3 2358.49,-398.3 2352.49,-404.3 2346.49,-404.3" + id="path175" /> + <text + x="2147.1899" + y="-353.79999" + font-size="24.00" + id="text177" + style="font-size:24px;font-family:Monaco;text-anchor:middle">zlib-ng@2.1.3/ez3cm4r</text> + </g> + <!-- e3xjka5zk6vtoen2oexuzxyorp6um5rv->ez3cm4rogbx7at45wfi6gquti6fbo3zz --> + <g + id="edge12" + class="edge"> + <title + id="title180">e3xjka5zk6vtoen2oexuzxyorp6um5rv->ez3cm4rogbx7at45wfi6gquti6fbo3zz</title> + <path + fill="none" + stroke="dodgerblue" + stroke-width="2" + d="M1263.09,-793.94C1259.85,-708.48 1257.95,-520.34 1301.47,-475.7 1399.6,-376.55 1785.18,-424.26 1922.04,-403.41 1923.16,-403.24 1924.3,-403.07 1925.43,-402.89" + id="path182" /> + <path + fill="none" + stroke="crimson" + stroke-width="2" + d="M1265.09,-793.86C1261.85,-708.46 1259.95,-520.32 1302.9,-477.1 1399.36,-378.54 1784.94,-426.25 1922.34,-405.39 1923.47,-405.22 1924.6,-405.04 1925.74,-404.87" + id="path184" /> + <polygon + fill="dodgerblue" + stroke="dodgerblue" + stroke-width="2" + points="1926.54,-407.27 1935.87,-402.27 1925.45,-400.36 1926.54,-407.27" + id="polygon186" /> + </g> + <!-- 7bvgd7zcvk3hglqgbqczma5h4urvrdjb --> + <g + id="node39" + class="node"> + <title + id="title189">7bvgd7zcvk3hglqgbqczma5h4urvrdjb</title> + <path + fill="coral" + stroke="black" + stroke-width="4" + d="M1763.86,-721.9C1763.86,-721.9 1384.52,-721.9 1384.52,-721.9 1378.52,-721.9 1372.52,-715.9 1372.52,-709.9 1372.52,-709.9 1372.52,-647.3 1372.52,-647.3 1372.52,-641.3 1378.52,-635.3 1384.52,-635.3 1384.52,-635.3 1763.86,-635.3 1763.86,-635.3 1769.86,-635.3 1775.86,-641.3 1775.86,-647.3 1775.86,-647.3 1775.86,-709.9 1775.86,-709.9 1775.86,-715.9 1769.86,-721.9 1763.86,-721.9" + id="path191" /> + <text + x="1574.1899" + y="-671.40002" + font-size="24.00" + id="text193" + style="font-size:24px;font-family:Monaco;text-anchor:middle">perl@5.38.0/7bvgd7z</text> + </g> + <!-- e3xjka5zk6vtoen2oexuzxyorp6um5rv->7bvgd7zcvk3hglqgbqczma5h4urvrdjb --> + <g + id="edge26" + class="edge"> + <title + id="title196">e3xjka5zk6vtoen2oexuzxyorp6um5rv->7bvgd7zcvk3hglqgbqczma5h4urvrdjb</title> + <path + fill="none" + stroke="dodgerblue" + stroke-width="2" + d="M1349.53,-793.97C1390.45,-773.14 1439.86,-747.99 1481.91,-726.58" + id="path198" /> + <polygon + fill="dodgerblue" + stroke="dodgerblue" + stroke-width="2" + points="1483.71,-729.59 1491.04,-721.93 1480.54,-723.35 1483.71,-729.59" + id="polygon200" /> + </g> + <!-- ys6bcgmvdayitnod74ppxvzbn75e7227 --> + <g + id="node7" + class="node"> + <title + id="title203">ys6bcgmvdayitnod74ppxvzbn75e7227</title> + <path + fill="lightblue" + stroke="black" + stroke-width="4" + d="M3919.85,-1833.5C3919.85,-1833.5 3480.53,-1833.5 3480.53,-1833.5 3474.53,-1833.5 3468.53,-1827.5 3468.53,-1821.5 3468.53,-1821.5 3468.53,-1758.9 3468.53,-1758.9 3468.53,-1752.9 3474.53,-1746.9 3480.53,-1746.9 3480.53,-1746.9 3919.85,-1746.9 3919.85,-1746.9 3925.85,-1746.9 3931.85,-1752.9 3931.85,-1758.9 3931.85,-1758.9 3931.85,-1821.5 3931.85,-1821.5 3931.85,-1827.5 3925.85,-1833.5 3919.85,-1833.5" + id="path205" /> + <text + x="3700.1899" + y="-1783" + font-size="24.00" + id="text207" + style="font-size:24px;font-family:Monaco;text-anchor:middle">py-shapely@2.0.1/ys6bcgm</text> + </g> + <!-- ys6bcgmvdayitnod74ppxvzbn75e7227->al63766ivhemwb3bxsklvqmhdptf34fn --> + <g + id="edge44" + class="edge"> + <title + id="title210">ys6bcgmvdayitnod74ppxvzbn75e7227->al63766ivhemwb3bxsklvqmhdptf34fn</title> + <path + fill="none" + stroke="dodgerblue" + stroke-width="2" + d="M3577.84,-1747.82C3516.53,-1726.55 3442.18,-1700.76 3379.58,-1679.04" + id="path212" /> + <path + fill="none" + stroke="crimson" + stroke-width="2" + d="M3578.49,-1745.93C3517.19,-1724.66 3442.83,-1698.87 3380.24,-1677.15" + id="path214" /> + <polygon + fill="dodgerblue" + stroke="dodgerblue" + stroke-width="2" + points="3380.96,-1674.75 3370.36,-1674.78 3378.66,-1681.37 3380.96,-1674.75" + id="polygon216" /> + </g> + <!-- ys6bcgmvdayitnod74ppxvzbn75e7227->wuse2zg2p4ujfbsks4znlwyqumsa476w --> + <g + id="edge6" + class="edge"> + <title + id="title219">ys6bcgmvdayitnod74ppxvzbn75e7227->wuse2zg2p4ujfbsks4znlwyqumsa476w</title> + <path + fill="none" + stroke="dodgerblue" + stroke-width="2" + d="M3827.57,-1746.85C3867.33,-1729.16 3909.12,-1705.44 3941.19,-1674.8 3984.76,-1633.17 4014.36,-1569.85 4031.19,-1525.39" + id="path221" /> + <polygon + fill="dodgerblue" + stroke="dodgerblue" + stroke-width="2" + points="4034.51,-1526.51 4034.69,-1515.92 4027.94,-1524.09 4034.51,-1526.51" + id="polygon223" /> + </g> + <!-- ys6bcgmvdayitnod74ppxvzbn75e7227->7ftqkn35sy5bmqv3wui3ap3gubqyu4f4 --> + <g + id="edge78" + class="edge"> + <title + id="title226">ys6bcgmvdayitnod74ppxvzbn75e7227->7ftqkn35sy5bmqv3wui3ap3gubqyu4f4</title> + <path + fill="none" + stroke="dodgerblue" + stroke-width="2" + d="M3932.02,-1782.87C4327.46,-1767.43 5090.11,-1707.23 5089.19,-1473.6 5089.19,-1473.6 5089.19,-1473.6 5089.19,-1312.8 5090.11,-1077.34 4315.52,-1018.04 3922.84,-1003.18" + id="path228" /> + <path + fill="none" + stroke="goldenrod" + stroke-width="2" + d="M3932.1,-1784.87C4327.61,-1769.42 5090.26,-1709.22 5091.19,-1473.6 5091.19,-1473.6 5091.19,-1473.6 5091.19,-1312.8 5090.26,-1075.35 4315.68,-1016.05 3922.92,-1001.18" + id="path230" /> + <polygon + fill="dodgerblue" + stroke="dodgerblue" + stroke-width="2" + points="3922.93,-998.68 3912.81,-1001.8 3922.67,-1005.67 3922.93,-998.68" + id="polygon232" /> + </g> + <!-- ys6bcgmvdayitnod74ppxvzbn75e7227->33tg442mk3uy52ocdgd7uxbusdtkozlq --> + <g + id="edge39" + class="edge"> + <title + id="title235">ys6bcgmvdayitnod74ppxvzbn75e7227->33tg442mk3uy52ocdgd7uxbusdtkozlq</title> + <path + fill="none" + stroke="dodgerblue" + stroke-width="2" + d="M3932.02,-1766.98C4024.76,-1750.83 4129.83,-1722.95 4216.19,-1674.8 4388.19,-1578.89 4451.07,-1539.66 4525.19,-1357.2 4539.7,-1321.46 4545.47,-1303.21 4525.19,-1270.4 4507.26,-1241.41 4479.53,-1219.53 4449.48,-1203.09" + id="path237" /> + <polygon + fill="dodgerblue" + stroke="dodgerblue" + stroke-width="2" + points="4451,-1199.94 4440.52,-1198.38 4447.74,-1206.13 4451,-1199.94" + id="polygon239" /> + </g> + <!-- ca3noh6upxuh3hdx2lnrsdvw7blgcj5p --> + <g + id="node17" + class="node"> + <title + id="title242">ca3noh6upxuh3hdx2lnrsdvw7blgcj5p</title> + <path + fill="lightblue" + stroke="black" + stroke-width="4" + d="M3919.86,-1674.7C3919.86,-1674.7 3480.52,-1674.7 3480.52,-1674.7 3474.52,-1674.7 3468.52,-1668.7 3468.52,-1662.7 3468.52,-1662.7 3468.52,-1600.1 3468.52,-1600.1 3468.52,-1594.1 3474.52,-1588.1 3480.52,-1588.1 3480.52,-1588.1 3919.86,-1588.1 3919.86,-1588.1 3925.86,-1588.1 3931.86,-1594.1 3931.86,-1600.1 3931.86,-1600.1 3931.86,-1662.7 3931.86,-1662.7 3931.86,-1668.7 3925.86,-1674.7 3919.86,-1674.7" + id="path244" /> + <text + x="3700.1899" + y="-1624.2" + font-size="24.00" + id="text246" + style="font-size:24px;font-family:Monaco;text-anchor:middle">py-numpy@1.25.2/ca3noh6</text> + </g> + <!-- ys6bcgmvdayitnod74ppxvzbn75e7227->ca3noh6upxuh3hdx2lnrsdvw7blgcj5p --> + <g + id="edge45" + class="edge"> + <title + id="title249">ys6bcgmvdayitnod74ppxvzbn75e7227->ca3noh6upxuh3hdx2lnrsdvw7blgcj5p</title> + <path + fill="none" + stroke="dodgerblue" + stroke-width="2" + d="M3698.19,-1746.77C3698.19,-1727.77 3698.19,-1705.17 3698.19,-1685.1" + id="path251" /> + <path + fill="none" + stroke="crimson" + stroke-width="2" + d="M3700.19,-1746.77C3700.19,-1727.77 3700.19,-1705.17 3700.19,-1685.1" + id="path253" /> + <path + fill="none" + stroke="goldenrod" + stroke-width="2" + d="M3702.19,-1746.77C3702.19,-1727.77 3702.19,-1705.17 3702.19,-1685.1" + id="path255" /> + <polygon + fill="dodgerblue" + stroke="dodgerblue" + stroke-width="2" + points="3703.69,-1684.87 3700.19,-1674.87 3696.69,-1684.87 3703.69,-1684.87" + id="polygon257" /> + </g> + <!-- ys6bcgmvdayitnod74ppxvzbn75e7227->isprdjk4hdva3owdr6bgzavgaqzyjwyj --> + <g + id="edge66" + class="edge"> + <title + id="title260">ys6bcgmvdayitnod74ppxvzbn75e7227->isprdjk4hdva3owdr6bgzavgaqzyjwyj</title> + <path + fill="none" + stroke="dodgerblue" + stroke-width="2" + d="M3932.1,-1752.84C4071.16,-1717.68 4236.88,-1649.08 4321.19,-1516 4349.47,-1471.35 4335.97,-1409.87 4319.98,-1366.65" + id="path262" /> + <polygon + fill="dodgerblue" + stroke="dodgerblue" + stroke-width="2" + points="4323.19,-1365.25 4316.33,-1357.18 4316.66,-1367.77 4323.19,-1365.25" + id="polygon264" /> + </g> + <!-- 2ok2ozl5i2qphhfsbxkdtq3iezemvpsv --> + <g + id="node21" + class="node"> + <title + id="title267">2ok2ozl5i2qphhfsbxkdtq3iezemvpsv</title> + <path + fill="coral" + stroke="black" + stroke-width="4" + d="M5050.53,-1357.1C5050.53,-1357.1 4583.84,-1357.1 4583.84,-1357.1 4577.84,-1357.1 4571.84,-1351.1 4571.84,-1345.1 4571.84,-1345.1 4571.84,-1282.5 4571.84,-1282.5 4571.84,-1276.5 4577.84,-1270.5 4583.84,-1270.5 4583.84,-1270.5 5050.53,-1270.5 5050.53,-1270.5 5056.53,-1270.5 5062.53,-1276.5 5062.53,-1282.5 5062.53,-1282.5 5062.53,-1345.1 5062.53,-1345.1 5062.53,-1351.1 5056.53,-1357.1 5050.53,-1357.1" + id="path269" /> + <text + x="4817.1899" + y="-1306.6" + font-size="24.00" + id="text271" + style="font-size:24px;font-family:Monaco;text-anchor:middle">py-setuptools@68.0.0/2ok2ozl</text> + </g> + <!-- ys6bcgmvdayitnod74ppxvzbn75e7227->2ok2ozl5i2qphhfsbxkdtq3iezemvpsv --> + <g + id="edge27" + class="edge"> + <title + id="title274">ys6bcgmvdayitnod74ppxvzbn75e7227->2ok2ozl5i2qphhfsbxkdtq3iezemvpsv</title> + <path + fill="none" + stroke="dodgerblue" + stroke-width="2" + d="M3931.99,-1778.84C4149.3,-1765.49 4455.67,-1736.23 4558.19,-1674.8 4679.88,-1601.88 4760.57,-1447.43 4796.24,-1366.59" + id="path276" /> + <polygon + fill="dodgerblue" + stroke="dodgerblue" + stroke-width="2" + points="4799.58,-1367.67 4800.36,-1357.11 4793.16,-1364.88 4799.58,-1367.67" + id="polygon278" /> + </g> + <!-- aoucvoqqeft4hsw3poydbf4mvong4nry --> + <g + id="node8" + class="node"> + <title + id="title281">aoucvoqqeft4hsw3poydbf4mvong4nry</title> + <path + fill="lightblue" + stroke="black" + stroke-width="4" + d="M4530.66,-245.5C4530.66,-245.5 4147.71,-245.5 4147.71,-245.5 4141.71,-245.5 4135.71,-239.5 4135.71,-233.5 4135.71,-233.5 4135.71,-170.9 4135.71,-170.9 4135.71,-164.9 4141.71,-158.9 4147.71,-158.9 4147.71,-158.9 4530.66,-158.9 4530.66,-158.9 4536.66,-158.9 4542.66,-164.9 4542.66,-170.9 4542.66,-170.9 4542.66,-233.5 4542.66,-233.5 4542.66,-239.5 4536.66,-245.5 4530.66,-245.5" + id="path283" /> + <text + x="4339.1899" + y="-195" + font-size="24.00" + id="text285" + style="font-size:24px;font-family:Monaco;text-anchor:middle">ncurses@6.4/aoucvoq</text> + </g> + <!-- aoucvoqqeft4hsw3poydbf4mvong4nry->hsp7usvecwby6o6kszujxywbux5f5qc4 --> + <g + id="edge25" + class="edge"> + <title + id="title288">aoucvoqqeft4hsw3poydbf4mvong4nry->hsp7usvecwby6o6kszujxywbux5f5qc4</title> + <path + fill="none" + stroke="dodgerblue" + stroke-width="2" + d="M4135.53,-190.93C3955.56,-181.99 3685.95,-168.9 3451.19,-158.8 2420.4,-114.44 1189.01,-69.94 691.31,-52.3" + id="path290" /> + <polygon + fill="dodgerblue" + stroke="dodgerblue" + stroke-width="2" + points="691.26,-48.8 681.14,-51.94 691.01,-55.8 691.26,-48.8" + id="polygon292" /> + </g> + <!-- 7aawlyt3hu24znvpgwedu2s3jmz46dkn --> + <g + id="node9" + class="node"> + <title + id="title295">7aawlyt3hu24znvpgwedu2s3jmz46dkn</title> + <path + fill="lightblue" + stroke="black" + stroke-width="4" + d="M3614.51,-563.1C3614.51,-563.1 3267.86,-563.1 3267.86,-563.1 3261.86,-563.1 3255.86,-557.1 3255.86,-551.1 3255.86,-551.1 3255.86,-488.5 3255.86,-488.5 3255.86,-482.5 3261.86,-476.5 3267.86,-476.5 3267.86,-476.5 3614.51,-476.5 3614.51,-476.5 3620.51,-476.5 3626.51,-482.5 3626.51,-488.5 3626.51,-488.5 3626.51,-551.1 3626.51,-551.1 3626.51,-557.1 3620.51,-563.1 3614.51,-563.1" + id="path297" /> + <text + x="3441.1899" + y="-512.59998" + font-size="24.00" + id="text299" + style="font-size:24px;font-family:Monaco;text-anchor:middle">xz@5.4.1/7aawlyt</text> + </g> + <!-- 7ftqkn35sy5bmqv3wui3ap3gubqyu4f4->e3xjka5zk6vtoen2oexuzxyorp6um5rv --> + <g + id="edge15" + class="edge"> + <title + id="title302">7ftqkn35sy5bmqv3wui3ap3gubqyu4f4->e3xjka5zk6vtoen2oexuzxyorp6um5rv</title> + <path + fill="none" + stroke="dodgerblue" + stroke-width="2" + d="M3487.47,-992.85C3097.14,-984.97 2240.65,-959.59 1523.08,-881.79 1510.92,-880.48 1498.47,-878.96 1485.91,-877.31" + id="path304" /> + <path + fill="none" + stroke="crimson" + stroke-width="2" + d="M3487.51,-990.85C3097.2,-982.97 2240.71,-957.6 1523.29,-879.81 1511.16,-878.49 1498.71,-876.98 1486.17,-875.33" + id="path306" /> + <polygon + fill="dodgerblue" + stroke="dodgerblue" + stroke-width="2" + points="1486.33,-872.83 1475.96,-874.97 1485.4,-879.77 1486.33,-872.83" + id="polygon308" /> + </g> + <!-- 7ftqkn35sy5bmqv3wui3ap3gubqyu4f4->aoucvoqqeft4hsw3poydbf4mvong4nry --> + <g + id="edge80" + class="edge"> + <title + id="title311">7ftqkn35sy5bmqv3wui3ap3gubqyu4f4->aoucvoqqeft4hsw3poydbf4mvong4nry</title> + <path + fill="none" + stroke="dodgerblue" + stroke-width="2" + d="M3912.55,-962.9C4178.03,-917.67 4597.97,-823.27 4597.19,-679.6 4597.19,-679.6 4597.19,-679.6 4597.19,-518.8 4597.19,-426.22 4600.94,-390.51 4544.4,-318.21 4522.89,-290.48 4492.35,-268.37 4461.52,-251.4" + id="path313" /> + <path + fill="none" + stroke="crimson" + stroke-width="2" + d="M3912.88,-964.87C4178.47,-919.62 4598.4,-825.22 4599.19,-679.6 4599.19,-679.6 4599.19,-679.6 4599.19,-518.8 4599.18,-426.43 4602.93,-390.72 4545.98,-316.99 4524.07,-288.86 4493.52,-266.75 4462.48,-249.64" + id="path315" /> + <polygon + fill="dodgerblue" + stroke="dodgerblue" + stroke-width="2" + points="4463.3,-247.25 4452.84,-245.62 4460.01,-253.42 4463.3,-247.25" + id="polygon317" /> + </g> + <!-- 7ftqkn35sy5bmqv3wui3ap3gubqyu4f4->7aawlyt3hu24znvpgwedu2s3jmz46dkn --> + <g + id="edge10" + class="edge"> + <title + id="title320">7ftqkn35sy5bmqv3wui3ap3gubqyu4f4->7aawlyt3hu24znvpgwedu2s3jmz46dkn</title> + <path + fill="none" + stroke="dodgerblue" + stroke-width="2" + d="M3582.19,-953.78C3548.95,-936.27 3516.11,-912.7 3494.36,-881.37 3460.37,-832.01 3447.1,-660.68 3442.43,-573.14" + id="path322" /> + <path + fill="none" + stroke="crimson" + stroke-width="2" + d="M3583.12,-952.01C3550.11,-934.65 3517.28,-911.07 3496.01,-880.23 3462.37,-831.86 3449.09,-660.52 3444.43,-573.04" + id="path324" /> + <polygon + fill="dodgerblue" + stroke="dodgerblue" + stroke-width="2" + points="3446.93,-572.91 3442.92,-563.1 3439.94,-573.27 3446.93,-572.91" + id="polygon326" /> + </g> + <!-- ygkrrpeszr4j377qqtqqecmwt27pm2ho --> + <g + id="node11" + class="node"> + <title + id="title329">ygkrrpeszr4j377qqtqqecmwt27pm2ho</title> + <path + fill="lightblue" + stroke="black" + stroke-width="4" + d="M5050.5,-880.7C5050.5,-880.7 4675.87,-880.7 4675.87,-880.7 4669.87,-880.7 4663.87,-874.7 4663.87,-868.7 4663.87,-868.7 4663.87,-806.1 4663.87,-806.1 4663.87,-800.1 4669.87,-794.1 4675.87,-794.1 4675.87,-794.1 5050.5,-794.1 5050.5,-794.1 5056.5,-794.1 5062.5,-800.1 5062.5,-806.1 5062.5,-806.1 5062.5,-868.7 5062.5,-868.7 5062.5,-874.7 5056.5,-880.7 5050.5,-880.7" + id="path331" /> + <text + x="4863.1899" + y="-830.20001" + font-size="24.00" + id="text333" + style="font-size:24px;font-family:Monaco;text-anchor:middle">expat@2.5.0/ygkrrpe</text> + </g> + <!-- 7ftqkn35sy5bmqv3wui3ap3gubqyu4f4->ygkrrpeszr4j377qqtqqecmwt27pm2ho --> + <g + id="edge18" + class="edge"> + <title + id="title336">7ftqkn35sy5bmqv3wui3ap3gubqyu4f4->ygkrrpeszr4j377qqtqqecmwt27pm2ho</title> + <path + fill="none" + stroke="dodgerblue" + stroke-width="2" + d="M3912.97,-973.29C4105.92,-953.21 4397.85,-920.04 4650.03,-879.81 4651.31,-879.61 4652.6,-879.4 4653.89,-879.19" + id="path338" /> + <path + fill="none" + stroke="crimson" + stroke-width="2" + d="M3913.17,-975.28C4106.15,-955.19 4398.07,-922.02 4650.34,-881.79 4651.63,-881.58 4652.91,-881.38 4654.21,-881.17" + id="path340" /> + <polygon + fill="dodgerblue" + stroke="dodgerblue" + stroke-width="2" + points="4654.71,-883.62 4664.01,-878.54 4653.57,-876.71 4654.71,-883.62" + id="polygon342" /> + </g> + <!-- qlqyzklm3yyv6tkqgnj4tzoy7g72ejyu --> + <g + id="node13" + class="node"> + <title + id="title345">qlqyzklm3yyv6tkqgnj4tzoy7g72ejyu</title> + <path + fill="lightblue" + stroke="black" + stroke-width="4" + d="M4115.88,-563.1C4115.88,-563.1 3732.49,-563.1 3732.49,-563.1 3726.49,-563.1 3720.49,-557.1 3720.49,-551.1 3720.49,-551.1 3720.49,-488.5 3720.49,-488.5 3720.49,-482.5 3726.49,-476.5 3732.49,-476.5 3732.49,-476.5 4115.88,-476.5 4115.88,-476.5 4121.88,-476.5 4127.88,-482.5 4127.88,-488.5 4127.88,-488.5 4127.88,-551.1 4127.88,-551.1 4127.88,-557.1 4121.88,-563.1 4115.88,-563.1" + id="path347" /> + <text + x="3924.1899" + y="-512.59998" + font-size="24.00" + id="text349" + style="font-size:24px;font-family:Monaco;text-anchor:middle">sqlite@3.42.0/qlqyzkl</text> + </g> + <!-- 7ftqkn35sy5bmqv3wui3ap3gubqyu4f4->qlqyzklm3yyv6tkqgnj4tzoy7g72ejyu --> + <g + id="edge64" + class="edge"> + <title + id="title352">7ftqkn35sy5bmqv3wui3ap3gubqyu4f4->qlqyzklm3yyv6tkqgnj4tzoy7g72ejyu</title> + <path + fill="none" + stroke="dodgerblue" + stroke-width="2" + d="M3821.51,-951.95C3853.74,-934.77 3885.08,-911.3 3904.34,-880.27 3963.39,-785.91 3949.15,-647.95 3935.2,-573.49" + id="path354" /> + <path + fill="none" + stroke="crimson" + stroke-width="2" + d="M3822.45,-953.72C3854.94,-936.37 3886.28,-912.9 3906.03,-881.33 3965.38,-785.7 3951.14,-647.74 3937.16,-573.13" + id="path356" /> + <polygon + fill="dodgerblue" + stroke="dodgerblue" + stroke-width="2" + points="3939.56,-572.37 3934.22,-563.23 3932.69,-573.71 3939.56,-572.37" + id="polygon358" /> + </g> + <!-- ihtvssgtl7yz2wj7wdla4hsi7nqfny42 --> + <g + id="node16" + class="node"> + <title + id="title361">ihtvssgtl7yz2wj7wdla4hsi7nqfny42</title> + <path + fill="lightblue" + stroke="black" + stroke-width="4" + d="M5559.89,-880.7C5559.89,-880.7 5092.48,-880.7 5092.48,-880.7 5086.48,-880.7 5080.48,-874.7 5080.48,-868.7 5080.48,-868.7 5080.48,-806.1 5080.48,-806.1 5080.48,-800.1 5086.48,-794.1 5092.48,-794.1 5092.48,-794.1 5559.89,-794.1 5559.89,-794.1 5565.89,-794.1 5571.89,-800.1 5571.89,-806.1 5571.89,-806.1 5571.89,-868.7 5571.89,-868.7 5571.89,-874.7 5565.89,-880.7 5559.89,-880.7" + id="path363" /> + <text + x="5326.1899" + y="-830.20001" + font-size="24.00" + id="text365" + style="font-size:24px;font-family:Monaco;text-anchor:middle">util-linux-uuid@2.38.1/ihtvssg</text> + </g> + <!-- 7ftqkn35sy5bmqv3wui3ap3gubqyu4f4->ihtvssgtl7yz2wj7wdla4hsi7nqfny42 --> + <g + id="edge14" + class="edge"> + <title + id="title368">7ftqkn35sy5bmqv3wui3ap3gubqyu4f4->ihtvssgtl7yz2wj7wdla4hsi7nqfny42</title> + <path + fill="none" + stroke="dodgerblue" + stroke-width="2" + d="M3912.64,-981.86C4180.43,-965.08 4654.84,-931.28 5070.03,-879.91" + id="path370" /> + <path + fill="none" + stroke="crimson" + stroke-width="2" + d="M3912.77,-983.85C4180.57,-967.07 4654.98,-933.27 5070.27,-881.9" + id="path372" /> + <polygon + fill="dodgerblue" + stroke="dodgerblue" + stroke-width="2" + points="5070.76,-884.35 5080.26,-879.65 5069.9,-877.41 5070.76,-884.35" + id="polygon374" /> + </g> + <!-- bvcsrijbs7lp5jvlyooahoxc3zfapwfp --> + <g + id="node18" + class="node"> + <title + id="title377">bvcsrijbs7lp5jvlyooahoxc3zfapwfp</title> + <path + fill="lightblue" + stroke="black" + stroke-width="4" + d="M4519.87,-563.1C4519.87,-563.1 4158.5,-563.1 4158.5,-563.1 4152.5,-563.1 4146.5,-557.1 4146.5,-551.1 4146.5,-551.1 4146.5,-488.5 4146.5,-488.5 4146.5,-482.5 4152.5,-476.5 4158.5,-476.5 4158.5,-476.5 4519.87,-476.5 4519.87,-476.5 4525.87,-476.5 4531.87,-482.5 4531.87,-488.5 4531.87,-488.5 4531.87,-551.1 4531.87,-551.1 4531.87,-557.1 4525.87,-563.1 4519.87,-563.1" + id="path379" /> + <text + x="4339.1899" + y="-512.59998" + font-size="24.00" + id="text381" + style="font-size:24px;font-family:Monaco;text-anchor:middle">gdbm@1.23/bvcsrij</text> + </g> + <!-- 7ftqkn35sy5bmqv3wui3ap3gubqyu4f4->bvcsrijbs7lp5jvlyooahoxc3zfapwfp --> + <g + id="edge34" + class="edge"> + <title + id="title384">7ftqkn35sy5bmqv3wui3ap3gubqyu4f4->bvcsrijbs7lp5jvlyooahoxc3zfapwfp</title> + <path + fill="none" + stroke="dodgerblue" + stroke-width="2" + d="M3802.02,-951.95C3844.5,-932.5 3893.46,-907.57 3934.63,-879.97 4075.95,-785.27 4219.64,-644.23 4291.46,-569.98" + id="path386" /> + <path + fill="none" + stroke="crimson" + stroke-width="2" + d="M3802.85,-953.77C3845.4,-934.28 3894.37,-909.35 3935.74,-881.63 4077.35,-786.7 4221.04,-645.66 4292.89,-571.37" + id="path388" /> + <polygon + fill="dodgerblue" + stroke="dodgerblue" + stroke-width="2" + points="4294.9,-572.9 4299.32,-563.27 4289.86,-568.04 4294.9,-572.9" + id="polygon390" /> + </g> + <!-- 3o2rmrxpwkmmetxmzvba6sizei5womzv --> + <g + id="node20" + class="node"> + <title + id="title393">3o2rmrxpwkmmetxmzvba6sizei5womzv</title> + <path + fill="lightblue" + stroke="black" + stroke-width="4" + d="M3435.85,-880.7C3435.85,-880.7 3028.52,-880.7 3028.52,-880.7 3022.52,-880.7 3016.52,-874.7 3016.52,-868.7 3016.52,-868.7 3016.52,-806.1 3016.52,-806.1 3016.52,-800.1 3022.52,-794.1 3028.52,-794.1 3028.52,-794.1 3435.85,-794.1 3435.85,-794.1 3441.85,-794.1 3447.85,-800.1 3447.85,-806.1 3447.85,-806.1 3447.85,-868.7 3447.85,-868.7 3447.85,-874.7 3441.85,-880.7 3435.85,-880.7" + id="path395" /> + <text + x="3232.1899" + y="-830.20001" + font-size="24.00" + id="text397" + style="font-size:24px;font-family:Monaco;text-anchor:middle">gettext@0.21.1/3o2rmrx</text> + </g> + <!-- 7ftqkn35sy5bmqv3wui3ap3gubqyu4f4->3o2rmrxpwkmmetxmzvba6sizei5womzv --> + <g + id="edge52" + class="edge"> + <title + id="title400">7ftqkn35sy5bmqv3wui3ap3gubqyu4f4->3o2rmrxpwkmmetxmzvba6sizei5womzv</title> + <path + fill="none" + stroke="dodgerblue" + stroke-width="2" + d="M3573.53,-953.82C3509.92,-932.51 3432.75,-906.65 3367.85,-884.91" + id="path402" /> + <path + fill="none" + stroke="crimson" + stroke-width="2" + d="M3574.16,-951.92C3510.56,-930.61 3433.39,-904.76 3368.49,-883.01" + id="path404" /> + <polygon + fill="dodgerblue" + stroke="dodgerblue" + stroke-width="2" + points="3369.28,-880.64 3358.69,-880.78 3367.06,-887.28 3369.28,-880.64" + id="polygon406" /> + </g> + <!-- bcjm3vxlgrjgewpdakhpfea3y2kzcspe --> + <g + id="node24" + class="node"> + <title + id="title409">bcjm3vxlgrjgewpdakhpfea3y2kzcspe</title> + <path + fill="lightblue" + stroke="black" + stroke-width="4" + d="M2269.7,-563.1C2269.7,-563.1 1884.67,-563.1 1884.67,-563.1 1878.67,-563.1 1872.67,-557.1 1872.67,-551.1 1872.67,-551.1 1872.67,-488.5 1872.67,-488.5 1872.67,-482.5 1878.67,-476.5 1884.67,-476.5 1884.67,-476.5 2269.7,-476.5 2269.7,-476.5 2275.7,-476.5 2281.7,-482.5 2281.7,-488.5 2281.7,-488.5 2281.7,-551.1 2281.7,-551.1 2281.7,-557.1 2275.7,-563.1 2269.7,-563.1" + id="path411" /> + <text + x="2077.1899" + y="-512.59998" + font-size="24.00" + id="text413" + style="font-size:24px;font-family:Monaco;text-anchor:middle">bzip2@1.0.8/bcjm3vx</text> + </g> + <!-- 7ftqkn35sy5bmqv3wui3ap3gubqyu4f4->bcjm3vxlgrjgewpdakhpfea3y2kzcspe --> + <g + id="edge83" + class="edge"> + <title + id="title416">7ftqkn35sy5bmqv3wui3ap3gubqyu4f4->bcjm3vxlgrjgewpdakhpfea3y2kzcspe</title> + <path + fill="none" + stroke="dodgerblue" + stroke-width="2" + d="M3487.55,-990.75C3095.86,-975.96 2283.41,-921.52 2097.45,-722.68 2060.54,-682.74 2060.18,-618.58 2065.84,-573.16" + id="path418" /> + <path + fill="none" + stroke="crimson" + stroke-width="2" + d="M3487.62,-988.76C3096,-973.97 2283.54,-919.53 2098.92,-721.32 2062.54,-682.73 2062.18,-618.57 2067.83,-573.41" + id="path420" /> + <polygon + fill="dodgerblue" + stroke="dodgerblue" + stroke-width="2" + points="2070.31,-573.73 2068.21,-563.35 2063.37,-572.78 2070.31,-573.73" + id="polygon422" /> + </g> + <!-- 7pjirtey2xqww2bbkil3yj3mtmasruaw --> + <g + id="node25" + class="node"> + <title + id="title425">7pjirtey2xqww2bbkil3yj3mtmasruaw</title> + <path + fill="lightblue" + stroke="black" + stroke-width="4" + d="M4523.83,-404.3C4523.83,-404.3 4154.54,-404.3 4154.54,-404.3 4148.54,-404.3 4142.54,-398.3 4142.54,-392.3 4142.54,-392.3 4142.54,-329.7 4142.54,-329.7 4142.54,-323.7 4148.54,-317.7 4154.54,-317.7 4154.54,-317.7 4523.83,-317.7 4523.83,-317.7 4529.83,-317.7 4535.83,-323.7 4535.83,-329.7 4535.83,-329.7 4535.83,-392.3 4535.83,-392.3 4535.83,-398.3 4529.83,-404.3 4523.83,-404.3" + id="path427" /> + <text + x="4339.1899" + y="-353.79999" + font-size="24.00" + id="text429" + style="font-size:24px;font-family:Monaco;text-anchor:middle">readline@8.2/7pjirte</text> + </g> + <!-- 7ftqkn35sy5bmqv3wui3ap3gubqyu4f4->7pjirtey2xqww2bbkil3yj3mtmasruaw --> + <g + id="edge13" + class="edge"> + <title + id="title432">7ftqkn35sy5bmqv3wui3ap3gubqyu4f4->7pjirtey2xqww2bbkil3yj3mtmasruaw</title> + <path + fill="none" + stroke="dodgerblue" + stroke-width="2" + d="M3912.58,-953.42C4116.11,-901.59 4411.02,-789.86 4540.32,-562.7 4559.3,-529.67 4559.61,-509.71 4540.32,-476.9 4523.99,-448.77 4497.48,-426.86 4469.17,-410.27" + id="path434" /> + <path + fill="none" + stroke="crimson" + stroke-width="2" + d="M3913.07,-955.36C4116.82,-903.46 4411.73,-791.73 4542.05,-563.7 4561.3,-529.71 4561.61,-509.74 4542.05,-475.9 4525.27,-447.23 4498.76,-425.31 4470.19,-408.54" + id="path436" /> + <polygon + fill="dodgerblue" + stroke="dodgerblue" + stroke-width="2" + points="4471.23,-406.26 4460.8,-404.39 4467.79,-412.36 4471.23,-406.26" + id="polygon438" /> + </g> + <!-- d24pqmu7ayswej2jfwwcgnw26t4gatgv --> + <g + id="node31" + class="node"> + <title + id="title441">d24pqmu7ayswej2jfwwcgnw26t4gatgv</title> + <path + fill="lightblue" + stroke="black" + stroke-width="4" + d="M1981.71,-880.7C1981.71,-880.7 1544.66,-880.7 1544.66,-880.7 1538.66,-880.7 1532.66,-874.7 1532.66,-868.7 1532.66,-868.7 1532.66,-806.1 1532.66,-806.1 1532.66,-800.1 1538.66,-794.1 1544.66,-794.1 1544.66,-794.1 1981.71,-794.1 1981.71,-794.1 1987.71,-794.1 1993.71,-800.1 1993.71,-806.1 1993.71,-806.1 1993.71,-868.7 1993.71,-868.7 1993.71,-874.7 1987.71,-880.7 1981.71,-880.7" + id="path443" /> + <text + x="1763.1899" + y="-830.20001" + font-size="24.00" + id="text445" + style="font-size:24px;font-family:Monaco;text-anchor:middle">libxcrypt@4.4.35/d24pqmu</text> + </g> + <!-- 7ftqkn35sy5bmqv3wui3ap3gubqyu4f4->d24pqmu7ayswej2jfwwcgnw26t4gatgv --> + <g + id="edge75" + class="edge"> + <title + id="title448">7ftqkn35sy5bmqv3wui3ap3gubqyu4f4->d24pqmu7ayswej2jfwwcgnw26t4gatgv</title> + <path + fill="none" + stroke="dodgerblue" + stroke-width="2" + d="M3487.47,-988.91C3166.14,-976.3 2538.15,-945.41 2008.07,-881.79 2006.74,-881.63 2005.41,-881.47 2004.07,-881.31" + id="path450" /> + <path + fill="none" + stroke="crimson" + stroke-width="2" + d="M3487.55,-986.91C3166.24,-974.3 2538.25,-943.41 2008.3,-879.81 2006.98,-879.65 2005.65,-879.49 2004.32,-879.32" + id="path452" /> + <polygon + fill="dodgerblue" + stroke="dodgerblue" + stroke-width="2" + points="2004.27,-876.8 1993.91,-879.02 2003.4,-883.74 2004.27,-876.8" + id="polygon454" /> + </g> + <!-- 7ftqkn35sy5bmqv3wui3ap3gubqyu4f4->hsp7usvecwby6o6kszujxywbux5f5qc4 --> + <g + id="edge46" + class="edge"> + <title + id="title457">7ftqkn35sy5bmqv3wui3ap3gubqyu4f4->hsp7usvecwby6o6kszujxywbux5f5qc4</title> + <path + fill="none" + stroke="dodgerblue" + stroke-width="2" + d="M3912.92,-989.61C4058.66,-979.03 4253.38,-951.32 4411.19,-880.8 4533.66,-826.07 4636.19,-813.75 4636.19,-679.6 4636.19,-679.6 4636.19,-679.6 4636.19,-360 4636.19,-262.93 4631.33,-213.58 4551.19,-158.8 4391.07,-49.37 1523.66,-43.42 691.08,-44.01" + id="path459" /> + <polygon + fill="dodgerblue" + stroke="dodgerblue" + stroke-width="2" + points="690.78,-40.51 680.78,-44.02 690.78,-47.51 690.78,-40.51" + id="polygon461" /> + </g> + <!-- rei73bcylffduxjtuwt5sbibc2cbvuyt --> + <g + id="node34" + class="node"> + <title + id="title464">rei73bcylffduxjtuwt5sbibc2cbvuyt</title> + <path + fill="lightblue" + stroke="black" + stroke-width="4" + d="M3883.84,-880.7C3883.84,-880.7 3516.53,-880.7 3516.53,-880.7 3510.53,-880.7 3504.53,-874.7 3504.53,-868.7 3504.53,-868.7 3504.53,-806.1 3504.53,-806.1 3504.53,-800.1 3510.53,-794.1 3516.53,-794.1 3516.53,-794.1 3883.84,-794.1 3883.84,-794.1 3889.84,-794.1 3895.84,-800.1 3895.84,-806.1 3895.84,-806.1 3895.84,-868.7 3895.84,-868.7 3895.84,-874.7 3889.84,-880.7 3883.84,-880.7" + id="path466" /> + <text + x="3700.1899" + y="-830.20001" + font-size="24.00" + id="text468" + style="font-size:24px;font-family:Monaco;text-anchor:middle">libffi@3.4.4/rei73bc</text> + </g> + <!-- 7ftqkn35sy5bmqv3wui3ap3gubqyu4f4->rei73bcylffduxjtuwt5sbibc2cbvuyt --> + <g + id="edge49" + class="edge"> + <title + id="title471">7ftqkn35sy5bmqv3wui3ap3gubqyu4f4->rei73bcylffduxjtuwt5sbibc2cbvuyt</title> + <path + fill="none" + stroke="dodgerblue" + stroke-width="2" + d="M3699.19,-952.77C3699.19,-933.77 3699.19,-911.17 3699.19,-891.1" + id="path473" /> + <path + fill="none" + stroke="crimson" + stroke-width="2" + d="M3701.19,-952.77C3701.19,-933.77 3701.19,-911.17 3701.19,-891.1" + id="path475" /> + <polygon + fill="dodgerblue" + stroke="dodgerblue" + stroke-width="2" + points="3703.69,-890.87 3700.19,-880.87 3696.69,-890.87 3703.69,-890.87" + id="polygon477" /> + </g> + <!-- 7ftqkn35sy5bmqv3wui3ap3gubqyu4f4->ez3cm4rogbx7at45wfi6gquti6fbo3zz --> + <g + id="edge40" + class="edge"> + <title + id="title480">7ftqkn35sy5bmqv3wui3ap3gubqyu4f4->ez3cm4rogbx7at45wfi6gquti6fbo3zz</title> + <path + fill="none" + stroke="dodgerblue" + stroke-width="2" + d="M3487.49,-996.42C3133.63,-994.03 2440.89,-976.87 2217.79,-881.72 2022.99,-798.56 1949.11,-757.34 1862.27,-563.61 1846.48,-528.27 1840.64,-508.66 1862.36,-475.84 1882.5,-446.11 1911.43,-424.22 1943.43,-407.87" + id="path482" /> + <path + fill="none" + stroke="crimson" + stroke-width="2" + d="M3487.51,-994.42C3133.68,-992.03 2440.94,-974.87 2218.58,-879.88 2023.97,-796.81 1950.09,-755.59 1864.1,-562.79 1848.4,-527.7 1842.55,-508.09 1864.01,-476.96 1883.71,-447.7 1912.63,-425.81 1944.34,-409.65" + id="path484" /> + <polygon + fill="dodgerblue" + stroke="dodgerblue" + stroke-width="2" + points="1945.5,-411.87 1952.95,-404.33 1942.43,-405.58 1945.5,-411.87" + id="polygon486" /> + </g> + <!-- mof23fyk5qdmzll42yrtvvjeafzn45rl --> + <g + id="node40" + class="node"> + <title + id="title489">mof23fyk5qdmzll42yrtvvjeafzn45rl</title> + <path + fill="lightblue" + stroke="black" + stroke-width="4" + d="M5077.71,-721.9C5077.71,-721.9 4676.66,-721.9 4676.66,-721.9 4670.66,-721.9 4664.66,-715.9 4664.66,-709.9 4664.66,-709.9 4664.66,-647.3 4664.66,-647.3 4664.66,-641.3 4670.66,-635.3 4676.66,-635.3 4676.66,-635.3 5077.71,-635.3 5077.71,-635.3 5083.71,-635.3 5089.71,-641.3 5089.71,-647.3 5089.71,-647.3 5089.71,-709.9 5089.71,-709.9 5089.71,-715.9 5083.71,-721.9 5077.71,-721.9" + id="path491" /> + <text + x="4877.1899" + y="-671.40002" + font-size="24.00" + id="text493" + style="font-size:24px;font-family:Monaco;text-anchor:middle">libbsd@0.11.7/mof23fy</text> + </g> + <!-- ygkrrpeszr4j377qqtqqecmwt27pm2ho->mof23fyk5qdmzll42yrtvvjeafzn45rl --> + <g + id="edge48" + class="edge"> + <title + id="title496">ygkrrpeszr4j377qqtqqecmwt27pm2ho->mof23fyk5qdmzll42yrtvvjeafzn45rl</title> + <path + fill="none" + stroke="dodgerblue" + stroke-width="2" + d="M4865.98,-793.88C4867.67,-774.88 4869.69,-752.28 4871.48,-732.21" + id="path498" /> + <path + fill="none" + stroke="crimson" + stroke-width="2" + d="M4867.97,-794.06C4869.67,-775.06 4871.68,-752.46 4873.48,-732.39" + id="path500" /> + <polygon + fill="dodgerblue" + stroke="dodgerblue" + stroke-width="2" + points="4875.99,-732.34 4873.39,-722.07 4869.02,-731.72 4875.99,-732.34" + id="polygon502" /> + </g> + <!-- pbpdelsw4pyldezsnide5zcc4ym5rrzg --> + <g + id="node12" + class="node"> + <title + id="title505">pbpdelsw4pyldezsnide5zcc4ym5rrzg</title> + <path + fill="coral" + stroke="black" + stroke-width="4" + d="M1463.84,-1357.1C1463.84,-1357.1 1118.53,-1357.1 1118.53,-1357.1 1112.53,-1357.1 1106.53,-1351.1 1106.53,-1345.1 1106.53,-1345.1 1106.53,-1282.5 1106.53,-1282.5 1106.53,-1276.5 1112.53,-1270.5 1118.53,-1270.5 1118.53,-1270.5 1463.84,-1270.5 1463.84,-1270.5 1469.84,-1270.5 1475.84,-1276.5 1475.84,-1282.5 1475.84,-1282.5 1475.84,-1345.1 1475.84,-1345.1 1475.84,-1351.1 1469.84,-1357.1 1463.84,-1357.1" + id="path507" /> + <text + x="1291.1899" + y="-1306.6" + font-size="24.00" + id="text509" + style="font-size:24px;font-family:Monaco;text-anchor:middle">re2c@2.2/pbpdels</text> + </g> + <!-- qlqyzklm3yyv6tkqgnj4tzoy7g72ejyu->7pjirtey2xqww2bbkil3yj3mtmasruaw --> + <g + id="edge28" + class="edge"> + <title + id="title512">qlqyzklm3yyv6tkqgnj4tzoy7g72ejyu->7pjirtey2xqww2bbkil3yj3mtmasruaw</title> + <path + fill="none" + stroke="dodgerblue" + stroke-width="2" + d="M4035.86,-475.54C4091.92,-454.36 4159.86,-428.69 4217.18,-407.03" + id="path514" /> + <path + fill="none" + stroke="crimson" + stroke-width="2" + d="M4036.57,-477.41C4092.62,-456.23 4160.56,-430.56 4217.89,-408.9" + id="path516" /> + <polygon + fill="dodgerblue" + stroke="dodgerblue" + stroke-width="2" + points="4218.89,-411.19 4227.01,-404.38 4216.42,-404.64 4218.89,-411.19" + id="polygon518" /> + </g> + <!-- qlqyzklm3yyv6tkqgnj4tzoy7g72ejyu->ez3cm4rogbx7at45wfi6gquti6fbo3zz --> + <g + id="edge51" + class="edge"> + <title + id="title521">qlqyzklm3yyv6tkqgnj4tzoy7g72ejyu->ez3cm4rogbx7at45wfi6gquti6fbo3zz</title> + <path + fill="none" + stroke="dodgerblue" + stroke-width="2" + d="M3720.21,-488.09C3691.66,-484.18 3662.65,-480.47 3635.07,-477.39 3186.76,-427.33 2659.93,-392.45 2368.81,-375.26" + id="path523" /> + <path + fill="none" + stroke="crimson" + stroke-width="2" + d="M3720.48,-486.11C3691.91,-482.19 3662.9,-478.49 3635.3,-475.41 3186.89,-425.34 2660.06,-390.45 2368.92,-373.26" + id="path525" /> + <polygon + fill="dodgerblue" + stroke="dodgerblue" + stroke-width="2" + points="2368.8,-370.75 2358.61,-373.65 2368.39,-377.74 2368.8,-370.75" + id="polygon527" /> + </g> + <!-- 33tg442mk3uy52ocdgd7uxbusdtkozlq->7ftqkn35sy5bmqv3wui3ap3gubqyu4f4 --> + <g + id="edge17" + class="edge"> + <title + id="title530">33tg442mk3uy52ocdgd7uxbusdtkozlq->7ftqkn35sy5bmqv3wui3ap3gubqyu4f4</title> + <path + fill="none" + stroke="dodgerblue" + stroke-width="2" + d="M4135.04,-1112.64C4053.21,-1091.11 3953.74,-1064.94 3870.57,-1043.06" + id="path532" /> + <path + fill="none" + stroke="goldenrod" + stroke-width="2" + d="M4135.55,-1110.7C4053.72,-1089.18 3954.25,-1063.01 3871.08,-1041.13" + id="path534" /> + <polygon + fill="dodgerblue" + stroke="dodgerblue" + stroke-width="2" + points="3871.59,-1038.68 3861.03,-1039.52 3869.81,-1045.44 3871.59,-1038.68" + id="polygon536" /> + </g> + <!-- ihtvssgtl7yz2wj7wdla4hsi7nqfny42->hsp7usvecwby6o6kszujxywbux5f5qc4 --> + <g + id="edge85" + class="edge"> + <title + id="title539">ihtvssgtl7yz2wj7wdla4hsi7nqfny42->hsp7usvecwby6o6kszujxywbux5f5qc4</title> + <path + fill="none" + stroke="dodgerblue" + stroke-width="2" + d="M5302.59,-793.96C5271.9,-734.69 5222.19,-622.91 5222.19,-520.8 5222.19,-520.8 5222.19,-520.8 5222.19,-360 5222.19,-90.51 4915.19,-207.78 4650.19,-158.8 4260.98,-86.86 1503.72,-54.51 691.06,-46.47" + id="path541" /> + <polygon + fill="dodgerblue" + stroke="dodgerblue" + stroke-width="2" + points="691.03,-42.97 681,-46.37 690.96,-49.97 691.03,-42.97" + id="polygon543" /> + </g> + <!-- ca3noh6upxuh3hdx2lnrsdvw7blgcj5p->wuse2zg2p4ujfbsks4znlwyqumsa476w --> + <g + id="edge65" + class="edge"> + <title + id="title546">ca3noh6upxuh3hdx2lnrsdvw7blgcj5p->wuse2zg2p4ujfbsks4znlwyqumsa476w</title> + <path + fill="none" + stroke="dodgerblue" + stroke-width="2" + d="M3794.36,-1587.97C3840.97,-1566.96 3897.35,-1541.56 3945.11,-1520.04" + id="path548" /> + <polygon + fill="dodgerblue" + stroke="dodgerblue" + stroke-width="2" + points="3946.56,-1523.23 3954.24,-1515.93 3943.68,-1516.85 3946.56,-1523.23" + id="polygon550" /> + </g> + <!-- ca3noh6upxuh3hdx2lnrsdvw7blgcj5p->7ftqkn35sy5bmqv3wui3ap3gubqyu4f4 --> + <g + id="edge2" + class="edge"> + <title + id="title553">ca3noh6upxuh3hdx2lnrsdvw7blgcj5p->7ftqkn35sy5bmqv3wui3ap3gubqyu4f4</title> + <path + fill="none" + stroke="dodgerblue" + stroke-width="2" + d="M3639.13,-1589.51C3577.19,-1541.49 3484.47,-1457.24 3445.32,-1357.93 3397.19,-1231.57 3532.51,-1109.35 3623.71,-1044.01" + id="path555" /> + <path + fill="none" + stroke="crimson" + stroke-width="2" + d="M3640.35,-1587.93C3578.54,-1540.01 3485.81,-1455.76 3447.19,-1357.2 3398.53,-1233.05 3533.85,-1110.84 3624.88,-1045.64" + id="path557" /> + <path + fill="none" + stroke="goldenrod" + stroke-width="2" + d="M3641.58,-1586.35C3579.88,-1538.53 3487.16,-1454.28 3449.05,-1356.47 3399.87,-1234.54 3535.19,-1112.32 3626.04,-1047.26" + id="path559" /> + <polygon + fill="dodgerblue" + stroke="dodgerblue" + stroke-width="2" + points="3627.12,-1048.33 3633.26,-1039.7 3623.08,-1042.62 3627.12,-1048.33" + id="polygon561" /> + </g> + <!-- ca3noh6upxuh3hdx2lnrsdvw7blgcj5p->33tg442mk3uy52ocdgd7uxbusdtkozlq --> + <g + id="edge33" + class="edge"> + <title + id="title564">ca3noh6upxuh3hdx2lnrsdvw7blgcj5p->33tg442mk3uy52ocdgd7uxbusdtkozlq</title> + <path + fill="none" + stroke="dodgerblue" + stroke-width="2" + d="M3712.32,-1588.07C3726.96,-1543.55 3755.49,-1473.87 3801.19,-1429.2 3854.64,-1376.95 3892.7,-1401.12 3953.19,-1357.2 3996.13,-1326.02 3991.79,-1300.95 4035.19,-1270.4 4074,-1243.07 4120.39,-1220.15 4163.22,-1202.18" + id="path566" /> + <polygon + fill="dodgerblue" + stroke="dodgerblue" + stroke-width="2" + points="4164.69,-1205.37 4172.59,-1198.31 4162.01,-1198.9 4164.69,-1205.37" + id="polygon568" /> + </g> + <!-- ca3noh6upxuh3hdx2lnrsdvw7blgcj5p->isprdjk4hdva3owdr6bgzavgaqzyjwyj --> + <g + id="edge55" + class="edge"> + <title + id="title571">ca3noh6upxuh3hdx2lnrsdvw7blgcj5p->isprdjk4hdva3owdr6bgzavgaqzyjwyj</title> + <path + fill="none" + stroke="dodgerblue" + stroke-width="2" + d="M3932.15,-1615.6C4078.62,-1600.88 4248.7,-1572 4295.19,-1516 4329.1,-1475.15 4323.09,-1411.87 4312.62,-1367.21" + id="path573" /> + <polygon + fill="dodgerblue" + stroke="dodgerblue" + stroke-width="2" + points="4315.99,-1366.27 4310.18,-1357.41 4309.2,-1367.96 4315.99,-1366.27" + id="polygon575" /> + </g> + <!-- ca3noh6upxuh3hdx2lnrsdvw7blgcj5p->esl2253adih4qsbluhmzdtsxfrws4fnt --> + <g + id="edge19" + class="edge"> + <title + id="title578">ca3noh6upxuh3hdx2lnrsdvw7blgcj5p->esl2253adih4qsbluhmzdtsxfrws4fnt</title> + <path + fill="none" + stroke="dodgerblue" + stroke-width="2" + d="M3699.19,-1587.84C3699.19,-1530.74 3699.19,-1429.38 3699.19,-1367.52" + id="path580" /> + <path + fill="none" + stroke="goldenrod" + stroke-width="2" + d="M3701.19,-1587.84C3701.19,-1530.74 3701.19,-1429.38 3701.19,-1367.52" + id="path582" /> + <polygon + fill="dodgerblue" + stroke="dodgerblue" + stroke-width="2" + points="3703.69,-1367.19 3700.19,-1357.19 3696.69,-1367.19 3703.69,-1367.19" + id="polygon584" /> + </g> + <!-- buscwcl7gy7xqmrsmtewcustpjoa3jy6 --> + <g + id="node36" + class="node"> + <title + id="title587">buscwcl7gy7xqmrsmtewcustpjoa3jy6</title> + <path + fill="lightblue" + stroke="black" + stroke-width="4" + d="M3387.84,-1515.9C3387.84,-1515.9 2964.54,-1515.9 2964.54,-1515.9 2958.54,-1515.9 2952.54,-1509.9 2952.54,-1503.9 2952.54,-1503.9 2952.54,-1441.3 2952.54,-1441.3 2952.54,-1435.3 2958.54,-1429.3 2964.54,-1429.3 2964.54,-1429.3 3387.84,-1429.3 3387.84,-1429.3 3393.84,-1429.3 3399.84,-1435.3 3399.84,-1441.3 3399.84,-1441.3 3399.84,-1503.9 3399.84,-1503.9 3399.84,-1509.9 3393.84,-1515.9 3387.84,-1515.9" + id="path589" /> + <text + x="3176.1899" + y="-1465.4" + font-size="24.00" + id="text591" + style="font-size:24px;font-family:Monaco;text-anchor:middle">openblas@0.3.24/buscwcl</text> + </g> + <!-- ca3noh6upxuh3hdx2lnrsdvw7blgcj5p->buscwcl7gy7xqmrsmtewcustpjoa3jy6 --> + <g + id="edge36" + class="edge"> + <title + id="title594">ca3noh6upxuh3hdx2lnrsdvw7blgcj5p->buscwcl7gy7xqmrsmtewcustpjoa3jy6</title> + <path + fill="none" + stroke="dodgerblue" + stroke-width="2" + d="M3558.44,-1589.03C3486.94,-1567.63 3400.11,-1541.65 3327.26,-1519.85" + id="path596" /> + <path + fill="none" + stroke="crimson" + stroke-width="2" + d="M3559.02,-1587.11C3487.51,-1565.72 3400.68,-1539.73 3327.84,-1517.94" + id="path598" /> + <polygon + fill="dodgerblue" + stroke="dodgerblue" + stroke-width="2" + points="3328.41,-1515.5 3317.83,-1515.98 3326.4,-1522.2 3328.41,-1515.5" + id="polygon600" /> + </g> + <!-- bvcsrijbs7lp5jvlyooahoxc3zfapwfp->7pjirtey2xqww2bbkil3yj3mtmasruaw --> + <g + id="edge42" + class="edge"> + <title + id="title603">bvcsrijbs7lp5jvlyooahoxc3zfapwfp->7pjirtey2xqww2bbkil3yj3mtmasruaw</title> + <path + fill="none" + stroke="dodgerblue" + stroke-width="2" + d="M4338.19,-476.37C4338.19,-457.37 4338.19,-434.77 4338.19,-414.7" + id="path605" /> + <path + fill="none" + stroke="crimson" + stroke-width="2" + d="M4340.19,-476.37C4340.19,-457.37 4340.19,-434.77 4340.19,-414.7" + id="path607" /> + <polygon + fill="dodgerblue" + stroke="dodgerblue" + stroke-width="2" + points="4342.69,-414.47 4339.19,-404.47 4335.69,-414.47 4342.69,-414.47" + id="polygon609" /> + </g> + <!-- isprdjk4hdva3owdr6bgzavgaqzyjwyj->7ftqkn35sy5bmqv3wui3ap3gubqyu4f4 --> + <g + id="edge1" + class="edge"> + <title + id="title612">isprdjk4hdva3owdr6bgzavgaqzyjwyj->7ftqkn35sy5bmqv3wui3ap3gubqyu4f4</title> + <path + fill="none" + stroke="dodgerblue" + stroke-width="2" + d="M4434.01,-1269.54C4466.94,-1252.66 4498.23,-1229.34 4517.33,-1197.88 4537.29,-1165.25 4542.53,-1140.5 4517.43,-1112.26 4479.31,-1068.02 4151.46,-1033.43 3922.82,-1014.44" + id="path614" /> + <path + fill="none" + stroke="goldenrod" + stroke-width="2" + d="M4434.93,-1271.32C4468.13,-1254.26 4499.43,-1230.95 4519.04,-1198.92 4539.25,-1165.67 4544.48,-1140.91 4518.94,-1110.94 4479.52,-1066.03 4151.67,-1031.44 3922.98,-1012.44" + id="path616" /> + <polygon + fill="dodgerblue" + stroke="dodgerblue" + stroke-width="2" + points="3923.02,-1009.94 3912.77,-1012.6 3922.45,-1016.92 3923.02,-1009.94" + id="polygon618" /> + </g> + <!-- isprdjk4hdva3owdr6bgzavgaqzyjwyj->33tg442mk3uy52ocdgd7uxbusdtkozlq --> + <g + id="edge69" + class="edge"> + <title + id="title621">isprdjk4hdva3owdr6bgzavgaqzyjwyj->33tg442mk3uy52ocdgd7uxbusdtkozlq</title> + <path + fill="none" + stroke="dodgerblue" + stroke-width="2" + d="M4296.19,-1270.37C4296.19,-1251.37 4296.19,-1228.77 4296.19,-1208.7" + id="path623" /> + <polygon + fill="dodgerblue" + stroke="dodgerblue" + stroke-width="2" + points="4299.69,-1208.47 4296.19,-1198.47 4292.69,-1208.47 4299.69,-1208.47" + id="polygon625" /> + </g> + <!-- 3o2rmrxpwkmmetxmzvba6sizei5womzv->aoucvoqqeft4hsw3poydbf4mvong4nry --> + <g + id="edge60" + class="edge"> + <title + id="title628">3o2rmrxpwkmmetxmzvba6sizei5womzv->aoucvoqqeft4hsw3poydbf4mvong4nry</title> + <path + fill="none" + stroke="dodgerblue" + stroke-width="2" + d="M3436.08,-793.02C3483.72,-776.29 3531.92,-753.09 3570.55,-721.23 3618.71,-681.79 3663.47,-518.1 3710.52,-475.66 3838.37,-360.97 4021.42,-288.79 4157.09,-247.55" + id="path630" /> + <path + fill="none" + stroke="crimson" + stroke-width="2" + d="M3436.74,-794.9C3484.59,-778.09 3532.79,-754.89 3571.82,-722.77 3620.64,-682.32 3665.4,-518.63 3711.85,-477.14 3839.11,-362.83 4022.16,-290.65 4157.67,-249.46" + id="path632" /> + <polygon + fill="dodgerblue" + stroke="dodgerblue" + stroke-width="2" + points="4158.49,-251.83 4167.06,-245.59 4156.48,-245.12 4158.49,-251.83" + id="polygon634" /> + </g> + <!-- 3o2rmrxpwkmmetxmzvba6sizei5womzv->7aawlyt3hu24znvpgwedu2s3jmz46dkn --> + <g + id="edge11" + class="edge"> + <title + id="title637">3o2rmrxpwkmmetxmzvba6sizei5womzv->7aawlyt3hu24znvpgwedu2s3jmz46dkn</title> + <path + fill="none" + stroke="dodgerblue" + stroke-width="2" + d="M3258.7,-792.73C3296.91,-735.04 3365.03,-632.17 3405.87,-570.51" + id="path639" /> + <path + fill="none" + stroke="crimson" + stroke-width="2" + d="M3260.37,-793.84C3298.58,-736.15 3366.7,-633.28 3407.54,-571.61" + id="path641" /> + <path + fill="none" + stroke="goldenrod" + stroke-width="2" + d="M3262.04,-794.94C3300.24,-737.25 3368.37,-634.38 3409.2,-572.71" + id="path643" /> + <polygon + fill="dodgerblue" + stroke="dodgerblue" + stroke-width="2" + points="3410.51,-573.46 3413.11,-563.19 3404.67,-569.6 3410.51,-573.46" + id="polygon645" /> + </g> + <!-- 3o2rmrxpwkmmetxmzvba6sizei5womzv->gpd7yevon44acblslmgorfsxufgk3nhz --> + <g + id="edge77" + class="edge"> + <title + id="title648">3o2rmrxpwkmmetxmzvba6sizei5womzv->gpd7yevon44acblslmgorfsxufgk3nhz</title> + <path + fill="none" + stroke="dodgerblue" + stroke-width="2" + d="M3351.76,-793.17C3496.51,-734.77 3711.73,-619.98 3634.3,-476.87 3575.82,-366.86 3450.35,-293.17 3354.28,-250.48" + id="path650" /> + <path + fill="none" + stroke="crimson" + stroke-width="2" + d="M3352.51,-795.02C3497.45,-736.53 3712.67,-621.74 3636.07,-475.93 3576.83,-365.14 3451.36,-291.44 3355.09,-248.65" + id="path652" /> + <polygon + fill="dodgerblue" + stroke="dodgerblue" + stroke-width="2" + points="3356.03,-246.33 3345.47,-245.52 3353.22,-252.74 3356.03,-246.33" + id="polygon654" /> + </g> + <!-- 3o2rmrxpwkmmetxmzvba6sizei5womzv->bcjm3vxlgrjgewpdakhpfea3y2kzcspe --> + <g + id="edge82" + class="edge"> + <title + id="title657">3o2rmrxpwkmmetxmzvba6sizei5womzv->bcjm3vxlgrjgewpdakhpfea3y2kzcspe</title> + <path + fill="none" + stroke="dodgerblue" + stroke-width="2" + d="M3016.41,-826.06C2723.35,-808.9 2228.07,-772.94 2160.59,-722.8 2113.02,-687.09 2092.17,-620.36 2083.05,-573.32" + id="path659" /> + <path + fill="none" + stroke="crimson" + stroke-width="2" + d="M3016.52,-824.07C2723.49,-806.9 2228.22,-770.95 2161.78,-721.2 2114.93,-686.49 2094.08,-619.76 2085.01,-572.94" + id="path661" /> + <polygon + fill="dodgerblue" + stroke="dodgerblue" + stroke-width="2" + points="2087.45,-572.35 2082.21,-563.14 2080.56,-573.61 2087.45,-572.35" + id="polygon663" /> + </g> + <!-- jofugpdt2lki4tvw3xa56pxz4kzmjb33 --> + <g + id="node33" + class="node"> + <title + id="title666">jofugpdt2lki4tvw3xa56pxz4kzmjb33</title> + <path + fill="lightblue" + stroke="black" + stroke-width="4" + d="M3233.86,-721.9C3233.86,-721.9 2892.51,-721.9 2892.51,-721.9 2886.51,-721.9 2880.51,-715.9 2880.51,-709.9 2880.51,-709.9 2880.51,-647.3 2880.51,-647.3 2880.51,-641.3 2886.51,-635.3 2892.51,-635.3 2892.51,-635.3 3233.86,-635.3 3233.86,-635.3 3239.86,-635.3 3245.86,-641.3 3245.86,-647.3 3245.86,-647.3 3245.86,-709.9 3245.86,-709.9 3245.86,-715.9 3239.86,-721.9 3233.86,-721.9" + id="path668" /> + <text + x="3063.1899" + y="-671.40002" + font-size="24.00" + id="text670" + style="font-size:24px;font-family:Monaco;text-anchor:middle">tar@1.34/jofugpd</text> + </g> + <!-- 3o2rmrxpwkmmetxmzvba6sizei5womzv->jofugpdt2lki4tvw3xa56pxz4kzmjb33 --> + <g + id="edge41" + class="edge"> + <title + id="title673">3o2rmrxpwkmmetxmzvba6sizei5womzv->jofugpdt2lki4tvw3xa56pxz4kzmjb33</title> + <path + fill="none" + stroke="dodgerblue" + stroke-width="2" + d="M3185.77,-794.7C3164.17,-774.66 3138.24,-750.6 3115.76,-729.74" + id="path675" /> + <path + fill="none" + stroke="crimson" + stroke-width="2" + d="M3187.13,-793.23C3165.53,-773.19 3139.6,-749.14 3117.12,-728.28" + id="path677" /> + <polygon + fill="dodgerblue" + stroke="dodgerblue" + stroke-width="2" + points="3118.67,-726.3 3108.96,-722.07 3113.91,-731.43 3118.67,-726.3" + id="polygon679" /> + </g> + <!-- yry2pcjkl2hcfeexfi2yvnar2lyplbyg --> + <g + id="node37" + class="node"> + <title + id="title682">yry2pcjkl2hcfeexfi2yvnar2lyplbyg</title> + <path + fill="lightblue" + stroke="black" + stroke-width="4" + d="M2589.88,-721.9C2589.88,-721.9 2182.49,-721.9 2182.49,-721.9 2176.49,-721.9 2170.49,-715.9 2170.49,-709.9 2170.49,-709.9 2170.49,-647.3 2170.49,-647.3 2170.49,-641.3 2176.49,-635.3 2182.49,-635.3 2182.49,-635.3 2589.88,-635.3 2589.88,-635.3 2595.88,-635.3 2601.88,-641.3 2601.88,-647.3 2601.88,-647.3 2601.88,-709.9 2601.88,-709.9 2601.88,-715.9 2595.88,-721.9 2589.88,-721.9" + id="path684" /> + <text + x="2386.1899" + y="-671.40002" + font-size="24.00" + id="text686" + style="font-size:24px;font-family:Monaco;text-anchor:middle">libxml2@2.10.3/yry2pcj</text> + </g> + <!-- 3o2rmrxpwkmmetxmzvba6sizei5womzv->yry2pcjkl2hcfeexfi2yvnar2lyplbyg --> + <g + id="edge30" + class="edge"> + <title + id="title689">3o2rmrxpwkmmetxmzvba6sizei5womzv->yry2pcjkl2hcfeexfi2yvnar2lyplbyg</title> + <path + fill="none" + stroke="dodgerblue" + stroke-width="2" + d="M3016.33,-797.41C2892.64,-774.49 2737.54,-745.74 2612.14,-722.5" + id="path691" /> + <path + fill="none" + stroke="crimson" + stroke-width="2" + d="M3016.7,-795.44C2893.01,-772.52 2737.9,-743.77 2612.5,-720.53" + id="path693" /> + <polygon + fill="dodgerblue" + stroke="dodgerblue" + stroke-width="2" + points="2612.67,-718.02 2602.2,-719.64 2611.39,-724.9 2612.67,-718.02" + id="polygon695" /> + </g> + <!-- 2ok2ozl5i2qphhfsbxkdtq3iezemvpsv->7ftqkn35sy5bmqv3wui3ap3gubqyu4f4 --> + <g + id="edge16" + class="edge"> + <title + id="title698">2ok2ozl5i2qphhfsbxkdtq3iezemvpsv->7ftqkn35sy5bmqv3wui3ap3gubqyu4f4</title> + <path + fill="none" + stroke="dodgerblue" + stroke-width="2" + d="M4772.75,-1270.9C4721.47,-1223.71 4631.66,-1149.35 4539.81,-1112.53 4431.39,-1068.96 4133.21,-1035.37 3923.16,-1016.19" + id="path700" /> + <path + fill="none" + stroke="goldenrod" + stroke-width="2" + d="M4774.1,-1269.43C4722.75,-1222.16 4632.94,-1147.81 4540.56,-1110.67 4431.62,-1066.97 4133.44,-1033.38 3923.34,-1014.2" + id="path702" /> + <polygon + fill="dodgerblue" + stroke="dodgerblue" + stroke-width="2" + points="3923.28,-1011.69 3913,-1014.27 3922.65,-1018.66 3923.28,-1011.69" + id="polygon704" /> + </g> + <!-- 2ok2ozl5i2qphhfsbxkdtq3iezemvpsv->33tg442mk3uy52ocdgd7uxbusdtkozlq --> + <g + id="edge20" + class="edge"> + <title + id="title707">2ok2ozl5i2qphhfsbxkdtq3iezemvpsv->33tg442mk3uy52ocdgd7uxbusdtkozlq</title> + <path + fill="none" + stroke="dodgerblue" + stroke-width="2" + d="M4676.54,-1270.47C4605.44,-1249.07 4519.11,-1223.09 4446.68,-1201.29" + id="path709" /> + <polygon + fill="dodgerblue" + stroke="dodgerblue" + stroke-width="2" + points="4447.6,-1197.91 4437.01,-1198.38 4445.58,-1204.62 4447.6,-1197.91" + id="polygon711" /> + </g> + <!-- ma7u5unvr5auweq7clkgz75hca33j6eb --> + <g + id="node22" + class="node"> + <title + id="title714">ma7u5unvr5auweq7clkgz75hca33j6eb</title> + <path + fill="lightblue" + stroke="black" + stroke-width="4" + d="M3188.54,-563.1C3188.54,-563.1 2827.84,-563.1 2827.84,-563.1 2821.84,-563.1 2815.84,-557.1 2815.84,-551.1 2815.84,-551.1 2815.84,-488.5 2815.84,-488.5 2815.84,-482.5 2821.84,-476.5 2827.84,-476.5 2827.84,-476.5 3188.54,-476.5 3188.54,-476.5 3194.54,-476.5 3200.54,-482.5 3200.54,-488.5 3200.54,-488.5 3200.54,-551.1 3200.54,-551.1 3200.54,-557.1 3194.54,-563.1 3188.54,-563.1" + id="path716" /> + <text + x="3008.1899" + y="-512.59998" + font-size="24.00" + id="text718" + style="font-size:24px;font-family:Monaco;text-anchor:middle">pigz@2.7/ma7u5un</text> + </g> + <!-- ma7u5unvr5auweq7clkgz75hca33j6eb->ez3cm4rogbx7at45wfi6gquti6fbo3zz --> + <g + id="edge58" + class="edge"> + <title + id="title721">ma7u5unvr5auweq7clkgz75hca33j6eb->ez3cm4rogbx7at45wfi6gquti6fbo3zz</title> + <path + fill="none" + stroke="dodgerblue" + stroke-width="2" + d="M2815.73,-479.07C2812.8,-478.5 2809.89,-477.94 2807,-477.38 2661.21,-449.38 2496.67,-420.85 2368.37,-399.29" + id="path723" /> + <path + fill="none" + stroke="crimson" + stroke-width="2" + d="M2816.11,-477.11C2813.18,-476.54 2810.26,-475.97 2807.37,-475.42 2661.55,-447.41 2497.02,-418.88 2368.7,-397.32" + id="path725" /> + <polygon + fill="dodgerblue" + stroke="dodgerblue" + stroke-width="2" + points="2369.02,-394.84 2358.58,-396.64 2367.86,-401.74 2369.02,-394.84" + id="polygon727" /> + </g> + <!-- ma6zn6mykr7xe226v2hvu4ye7jltnddb->aoucvoqqeft4hsw3poydbf4mvong4nry --> + <g + id="edge22" + class="edge"> + <title + id="title730">ma6zn6mykr7xe226v2hvu4ye7jltnddb->aoucvoqqeft4hsw3poydbf4mvong4nry</title> + <path + fill="none" + stroke="dodgerblue" + stroke-width="2" + d="M436.88,-1110.68C469.78,-1093.51 501.97,-1070.07 522.35,-1039.05 571.87,-965.26 541.42,-928.86 541.19,-838.4 541.19,-838.4 541.19,-838.4 541.19,-677.6 541.61,-580.2 670.7,-489.07 698.75,-475.5 930.36,-363.84 1621.23,-516.61 1850.74,-403.5 1896.27,-382.13 1880.07,-340.24 1926.75,-316.7 2079.88,-242.95 3281.86,-252.64 3451.14,-244.6 3681.5,-233.66 3945.48,-221.05 4125.35,-212.44" + id="path732" /> + <path + fill="none" + stroke="crimson" + stroke-width="2" + d="M437.81,-1112.45C470.96,-1095.13 503.14,-1071.69 524.02,-1040.15 573.41,-963.98 542.95,-927.58 543.19,-838.4 543.19,-838.4 543.19,-838.4 543.19,-677.6 542.76,-581.84 671.85,-490.7 699.62,-477.3 929.93,-365.79 1620.8,-518.57 1851.63,-405.3 1898.13,-381.41 1881.93,-339.52 1927.62,-318.5 2079.87,-244.95 3281.85,-254.64 3451.23,-246.6 3681.6,-235.66 3945.58,-223.04 4125.45,-214.44" + id="path734" /> + <polygon + fill="dodgerblue" + stroke="dodgerblue" + stroke-width="2" + points="4125.69,-216.93 4135.51,-212.95 4125.35,-209.94 4125.69,-216.93" + id="polygon736" /> + </g> + <!-- omxtm4xh3xbta4le4ehihd26gi3qn2hc --> + <g + id="node29" + class="node"> + <title + id="title739">omxtm4xh3xbta4le4ehihd26gi3qn2hc</title> + <path + fill="coral" + stroke="black" + stroke-width="4" + d="M501.71,-1039.5C501.71,-1039.5 124.66,-1039.5 124.66,-1039.5 118.66,-1039.5 112.66,-1033.5 112.66,-1027.5 112.66,-1027.5 112.66,-964.9 112.66,-964.9 112.66,-958.9 118.66,-952.9 124.66,-952.9 124.66,-952.9 501.71,-952.9 501.71,-952.9 507.71,-952.9 513.71,-958.9 513.71,-964.9 513.71,-964.9 513.71,-1027.5 513.71,-1027.5 513.71,-1033.5 507.71,-1039.5 501.71,-1039.5" + id="path741" /> + <text + x="313.19" + y="-989" + font-size="24.00" + id="text743" + style="font-size:24px;font-family:Monaco;text-anchor:middle">curl@8.1.2/omxtm4x</text> + </g> + <!-- ma6zn6mykr7xe226v2hvu4ye7jltnddb->omxtm4xh3xbta4le4ehihd26gi3qn2hc --> + <g + id="edge32" + class="edge"> + <title + id="title746">ma6zn6mykr7xe226v2hvu4ye7jltnddb->omxtm4xh3xbta4le4ehihd26gi3qn2hc</title> + <path + fill="none" + stroke="dodgerblue" + stroke-width="2" + d="M312.19,-1111.57C312.19,-1092.57 312.19,-1069.97 312.19,-1049.9" + id="path748" /> + <path + fill="none" + stroke="crimson" + stroke-width="2" + d="M314.19,-1111.57C314.19,-1092.57 314.19,-1069.97 314.19,-1049.9" + id="path750" /> + <polygon + fill="dodgerblue" + stroke="dodgerblue" + stroke-width="2" + points="316.69,-1049.67 313.19,-1039.67 309.69,-1049.67 316.69,-1049.67" + id="polygon752" /> + </g> + <!-- ma6zn6mykr7xe226v2hvu4ye7jltnddb->ez3cm4rogbx7at45wfi6gquti6fbo3zz --> + <g + id="edge68" + class="edge"> + <title + id="title755">ma6zn6mykr7xe226v2hvu4ye7jltnddb->ez3cm4rogbx7at45wfi6gquti6fbo3zz</title> + <path + fill="none" + stroke="dodgerblue" + stroke-width="2" + d="M463.69,-1110.79C498.95,-1093.98 532.91,-1070.69 555.37,-1039.02 660.41,-893.15 479.18,-771.68 598.44,-634.54 796.47,-410.23 1627.05,-447.42 1922.04,-403.41 1923.17,-403.24 1924.3,-403.07 1925.44,-402.9" + id="path757" /> + <path + fill="none" + stroke="crimson" + stroke-width="2" + d="M464.55,-1112.59C500.08,-1095.63 534.05,-1072.34 557,-1040.18 661.52,-891.49 480.29,-770.02 599.94,-635.86 796.38,-412.22 1626.96,-449.42 1922.33,-405.39 1923.46,-405.22 1924.6,-405.05 1925.73,-404.88" + id="path759" /> + <polygon + fill="dodgerblue" + stroke="dodgerblue" + stroke-width="2" + points="1926.53,-407.29 1935.88,-402.31 1925.46,-400.37 1926.53,-407.29" + id="polygon761" /> + </g> + <!-- bcjm3vxlgrjgewpdakhpfea3y2kzcspe->s3mykqnlex5ygursynhv4cfu4p4jcp5c --> + <g + id="edge21" + class="edge"> + <title + id="title764">bcjm3vxlgrjgewpdakhpfea3y2kzcspe->s3mykqnlex5ygursynhv4cfu4p4jcp5c</title> + <path + fill="none" + stroke="dodgerblue" + stroke-width="2" + d="M1957.33,-476.47C1897.23,-455.25 1824.37,-429.52 1762.96,-407.83" + id="path766" /> + <polygon + fill="dodgerblue" + stroke="dodgerblue" + stroke-width="2" + points="1763.8,-404.41 1753.2,-404.38 1761.46,-411.01 1763.8,-404.41" + id="polygon768" /> + </g> + <!-- 7pjirtey2xqww2bbkil3yj3mtmasruaw->aoucvoqqeft4hsw3poydbf4mvong4nry --> + <g + id="edge7" + class="edge"> + <title + id="title771">7pjirtey2xqww2bbkil3yj3mtmasruaw->aoucvoqqeft4hsw3poydbf4mvong4nry</title> + <path + fill="none" + stroke="dodgerblue" + stroke-width="2" + d="M4338.19,-317.57C4338.19,-298.57 4338.19,-275.97 4338.19,-255.9" + id="path773" /> + <path + fill="none" + stroke="crimson" + stroke-width="2" + d="M4340.19,-317.57C4340.19,-298.57 4340.19,-275.97 4340.19,-255.9" + id="path775" /> + <polygon + fill="dodgerblue" + stroke="dodgerblue" + stroke-width="2" + points="4342.69,-255.67 4339.19,-245.67 4335.69,-255.67 4342.69,-255.67" + id="polygon777" /> + </g> + <!-- esl2253adih4qsbluhmzdtsxfrws4fnt->7ftqkn35sy5bmqv3wui3ap3gubqyu4f4 --> + <g + id="edge53" + class="edge"> + <title + id="title780">esl2253adih4qsbluhmzdtsxfrws4fnt->7ftqkn35sy5bmqv3wui3ap3gubqyu4f4</title> + <path + fill="none" + stroke="dodgerblue" + stroke-width="2" + d="M3699.19,-1270.24C3699.19,-1213.14 3699.19,-1111.78 3699.19,-1049.92" + id="path782" /> + <path + fill="none" + stroke="goldenrod" + stroke-width="2" + d="M3701.19,-1270.24C3701.19,-1213.14 3701.19,-1111.78 3701.19,-1049.92" + id="path784" /> + <polygon + fill="dodgerblue" + stroke="dodgerblue" + stroke-width="2" + points="3703.69,-1049.59 3700.19,-1039.59 3696.69,-1049.59 3703.69,-1049.59" + id="polygon786" /> + </g> + <!-- esl2253adih4qsbluhmzdtsxfrws4fnt->33tg442mk3uy52ocdgd7uxbusdtkozlq --> + <g + id="edge57" + class="edge"> + <title + id="title789">esl2253adih4qsbluhmzdtsxfrws4fnt->33tg442mk3uy52ocdgd7uxbusdtkozlq</title> + <path + fill="none" + stroke="dodgerblue" + stroke-width="2" + d="M3861.08,-1270.47C3942.91,-1248.94 4042.38,-1222.77 4125.54,-1200.89" + id="path791" /> + <polygon + fill="dodgerblue" + stroke="dodgerblue" + stroke-width="2" + points="4126.56,-1204.24 4135.34,-1198.32 4124.78,-1197.48 4126.56,-1204.24" + id="polygon793" /> + </g> + <!-- r3mipc2ezzxleb6g3yjy2rgio44tpsnr --> + <g + id="node27" + class="node"> + <title + id="title796">r3mipc2ezzxleb6g3yjy2rgio44tpsnr</title> + <path + fill="lightblue" + stroke="black" + stroke-width="4" + d="M5068.88,-563.1C5068.88,-563.1 4685.49,-563.1 4685.49,-563.1 4679.49,-563.1 4673.49,-557.1 4673.49,-551.1 4673.49,-551.1 4673.49,-488.5 4673.49,-488.5 4673.49,-482.5 4679.49,-476.5 4685.49,-476.5 4685.49,-476.5 5068.88,-476.5 5068.88,-476.5 5074.88,-476.5 5080.88,-482.5 5080.88,-488.5 5080.88,-488.5 5080.88,-551.1 5080.88,-551.1 5080.88,-557.1 5074.88,-563.1 5068.88,-563.1" + id="path798" /> + <text + x="4877.1899" + y="-512.59998" + font-size="24.00" + id="text800" + style="font-size:24px;font-family:Monaco;text-anchor:middle">libmd@1.0.4/r3mipc2</text> + </g> + <!-- tolbgopadusf5fpqzmhm7qfsnhpluyvv --> + <g + id="node28" + class="node"> + <title + id="title803">tolbgopadusf5fpqzmhm7qfsnhpluyvv</title> + <path + fill="lightblue" + stroke="black" + stroke-width="4" + d="M2785.88,-563.1C2785.88,-563.1 2426.49,-563.1 2426.49,-563.1 2420.49,-563.1 2414.49,-557.1 2414.49,-551.1 2414.49,-551.1 2414.49,-488.5 2414.49,-488.5 2414.49,-482.5 2420.49,-476.5 2426.49,-476.5 2426.49,-476.5 2785.88,-476.5 2785.88,-476.5 2791.88,-476.5 2797.88,-482.5 2797.88,-488.5 2797.88,-488.5 2797.88,-551.1 2797.88,-551.1 2797.88,-557.1 2791.88,-563.1 2785.88,-563.1" + id="path805" /> + <text + x="2606.1899" + y="-512.59998" + font-size="24.00" + id="text807" + style="font-size:24px;font-family:Monaco;text-anchor:middle">zstd@1.5.5/tolbgop</text> + </g> + <!-- omxtm4xh3xbta4le4ehihd26gi3qn2hc->bqm4trdmbbqhrthe6flwnxp57cfbbser --> + <g + id="edge47" + class="edge"> + <title + id="title810">omxtm4xh3xbta4le4ehihd26gi3qn2hc->bqm4trdmbbqhrthe6flwnxp57cfbbser</title> + <path + fill="none" + stroke="dodgerblue" + stroke-width="2" + d="M301.84,-953.1C287.99,-892.78 265.2,-778.54 265.19,-679.6 265.19,-679.6 265.19,-679.6 265.19,-518.8 265.2,-425.45 244.76,-318.01 230.84,-255.72" + id="path812" /> + <path + fill="none" + stroke="crimson" + stroke-width="2" + d="M303.79,-952.65C289.95,-892.39 267.17,-778.15 267.19,-679.6 267.19,-679.6 267.19,-679.6 267.19,-518.8 267.17,-425.08 246.72,-317.63 232.79,-255.29" + id="path814" /> + <polygon + fill="dodgerblue" + stroke="dodgerblue" + stroke-width="2" + points="235.18,-254.51 229.56,-245.53 228.35,-256.05 235.18,-254.51" + id="polygon816" /> + </g> + <!-- omxtm4xh3xbta4le4ehihd26gi3qn2hc->e3xjka5zk6vtoen2oexuzxyorp6um5rv --> + <g + id="edge81" + class="edge"> + <title + id="title819">omxtm4xh3xbta4le4ehihd26gi3qn2hc->e3xjka5zk6vtoen2oexuzxyorp6um5rv</title> + <path + fill="none" + stroke="dodgerblue" + stroke-width="2" + d="M513.67,-961.2C669.58,-935.55 885.57,-900.01 1046.14,-873.59" + id="path821" /> + <path + fill="none" + stroke="crimson" + stroke-width="2" + d="M514,-963.17C669.9,-937.52 885.89,-901.98 1046.47,-875.56" + id="path823" /> + <polygon + fill="dodgerblue" + stroke="dodgerblue" + stroke-width="2" + points="1047.02,-878.01 1056.32,-872.93 1045.88,-871.1 1047.02,-878.01" + id="polygon825" /> + </g> + <!-- omxtm4xh3xbta4le4ehihd26gi3qn2hc->hsp7usvecwby6o6kszujxywbux5f5qc4 --> + <g + id="edge4" + class="edge"> + <title + id="title828">omxtm4xh3xbta4le4ehihd26gi3qn2hc->hsp7usvecwby6o6kszujxywbux5f5qc4</title> + <path + fill="none" + stroke="dodgerblue" + stroke-width="2" + d="M349.44,-952.41C394.69,-894.51 466.19,-786.16 466.19,-679.6 466.19,-679.6 466.19,-679.6 466.19,-360 466.19,-267.35 466.19,-159.41 466.19,-96.79" + id="path830" /> + <polygon + fill="dodgerblue" + stroke="dodgerblue" + stroke-width="2" + points="469.69,-96.77 466.19,-86.77 462.69,-96.77 469.69,-96.77" + id="polygon832" /> + </g> + <!-- omxtm4xh3xbta4le4ehihd26gi3qn2hc->ez3cm4rogbx7at45wfi6gquti6fbo3zz --> + <g + id="edge54" + class="edge"> + <title + id="title835">omxtm4xh3xbta4le4ehihd26gi3qn2hc->ez3cm4rogbx7at45wfi6gquti6fbo3zz</title> + <path + fill="none" + stroke="dodgerblue" + stroke-width="2" + d="M397.33,-951.86C426.91,-933.39 458.13,-909.18 479.38,-880.21 590.81,-730.03 455.59,-593.18 603.57,-475.61 713.39,-389.71 1713.12,-417.25 1851.09,-403.4 1875.24,-400.98 1900.46,-398.03 1925.53,-394.82" + id="path837" /> + <path + fill="none" + stroke="crimson" + stroke-width="2" + d="M398.39,-953.56C428.14,-934.97 459.36,-910.76 480.99,-881.39 592.24,-728.62 457.02,-591.77 604.8,-477.19 713.33,-391.71 1713.06,-419.25 1851.29,-405.4 1875.47,-402.97 1900.69,-400.01 1925.79,-396.8" + id="path839" /> + <polygon + fill="dodgerblue" + stroke="dodgerblue" + stroke-width="2" + points="1926.17,-399.27 1935.64,-394.52 1925.27,-392.33 1926.17,-399.27" + id="polygon841" /> + </g> + <!-- revhbmcsddofjb7jt3fql7fawtxjihvc->7ftqkn35sy5bmqv3wui3ap3gubqyu4f4 --> + <g + id="edge63" + class="edge"> + <title + id="title844">revhbmcsddofjb7jt3fql7fawtxjihvc->7ftqkn35sy5bmqv3wui3ap3gubqyu4f4</title> + <path + fill="none" + stroke="dodgerblue" + stroke-width="2" + d="M1498.92,-1430.69C1949.54,-1341.95 3013.5,-1132.43 3477.42,-1041.07" + id="path846" /> + <polygon + fill="dodgerblue" + stroke="dodgerblue" + stroke-width="2" + points="3478.11,-1044.5 3487.25,-1039.13 3476.76,-1037.63 3478.11,-1044.5" + id="polygon848" /> + </g> + <!-- revhbmcsddofjb7jt3fql7fawtxjihvc->pbpdelsw4pyldezsnide5zcc4ym5rrzg --> + <g + id="edge73" + class="edge"> + <title + id="title851">revhbmcsddofjb7jt3fql7fawtxjihvc->pbpdelsw4pyldezsnide5zcc4ym5rrzg</title> + <path + fill="none" + stroke="dodgerblue" + stroke-width="2" + d="M1291.19,-1429.17C1291.19,-1410.17 1291.19,-1387.57 1291.19,-1367.5" + id="path853" /> + <polygon + fill="dodgerblue" + stroke="dodgerblue" + stroke-width="2" + points="1294.69,-1367.27 1291.19,-1357.27 1287.69,-1367.27 1294.69,-1367.27" + id="polygon855" /> + </g> + <!-- d24pqmu7ayswej2jfwwcgnw26t4gatgv->7bvgd7zcvk3hglqgbqczma5h4urvrdjb --> + <g + id="edge72" + class="edge"> + <title + id="title858">d24pqmu7ayswej2jfwwcgnw26t4gatgv->7bvgd7zcvk3hglqgbqczma5h4urvrdjb</title> + <path + fill="none" + stroke="dodgerblue" + stroke-width="2" + d="M1712.04,-793.97C1687.67,-773.75 1658.38,-749.45 1633.09,-728.47" + id="path860" /> + <polygon + fill="dodgerblue" + stroke="dodgerblue" + stroke-width="2" + points="1635.3,-725.76 1625.37,-722.07 1630.83,-731.14 1635.3,-725.76" + id="polygon862" /> + </g> + <!-- jofugpdt2lki4tvw3xa56pxz4kzmjb33->7aawlyt3hu24znvpgwedu2s3jmz46dkn --> + <g + id="edge5" + class="edge"> + <title + id="title865">jofugpdt2lki4tvw3xa56pxz4kzmjb33->7aawlyt3hu24znvpgwedu2s3jmz46dkn</title> + <path + fill="none" + stroke="goldenrod" + stroke-width="2" + d="M3165.48,-635.17C3216.32,-614.08 3277.85,-588.55 3329.88,-566.97" + id="path867" /> + <polygon + fill="goldenrod" + stroke="goldenrod" + stroke-width="2" + points="3331.24,-570.19 3339.14,-563.13 3328.56,-563.73 3331.24,-570.19" + id="polygon869" /> + </g> + <!-- jofugpdt2lki4tvw3xa56pxz4kzmjb33->gpd7yevon44acblslmgorfsxufgk3nhz --> + <g + id="edge38" + class="edge"> + <title + id="title872">jofugpdt2lki4tvw3xa56pxz4kzmjb33->gpd7yevon44acblslmgorfsxufgk3nhz</title> + <path + fill="none" + stroke="dodgerblue" + stroke-width="2" + d="M3140.71,-634.3C3166.85,-615.92 3193.29,-591.75 3208.3,-562.74 3259.54,-464.5 3248.7,-329.18 3237.32,-255.87" + id="path874" /> + <path + fill="none" + stroke="crimson" + stroke-width="2" + d="M3141.86,-635.94C3168.2,-617.4 3194.63,-593.22 3210.07,-563.66 3261.54,-464.34 3250.7,-329.02 3239.29,-255.56" + id="path876" /> + <polygon + fill="dodgerblue" + stroke="dodgerblue" + stroke-width="2" + points="3241.75,-255.09 3236.7,-245.78 3234.84,-256.21 3241.75,-255.09" + id="polygon878" /> + </g> + <!-- jofugpdt2lki4tvw3xa56pxz4kzmjb33->ma7u5unvr5auweq7clkgz75hca33j6eb --> + <g + id="edge29" + class="edge"> + <title + id="title881">jofugpdt2lki4tvw3xa56pxz4kzmjb33->ma7u5unvr5auweq7clkgz75hca33j6eb</title> + <path + fill="none" + stroke="goldenrod" + stroke-width="2" + d="M3048.3,-635.17C3041.58,-615.99 3033.57,-593.16 3026.48,-572.95" + id="path883" /> + <polygon + fill="goldenrod" + stroke="goldenrod" + stroke-width="2" + points="3029.69,-571.54 3023.08,-563.27 3023.09,-573.86 3029.69,-571.54" + id="polygon885" /> + </g> + <!-- jofugpdt2lki4tvw3xa56pxz4kzmjb33->bcjm3vxlgrjgewpdakhpfea3y2kzcspe --> + <g + id="edge37" + class="edge"> + <title + id="title888">jofugpdt2lki4tvw3xa56pxz4kzmjb33->bcjm3vxlgrjgewpdakhpfea3y2kzcspe</title> + <path + fill="none" + stroke="goldenrod" + stroke-width="2" + d="M2880.33,-648.52C2713.79,-622.04 2467.75,-582.91 2291.92,-554.95" + id="path890" /> + <polygon + fill="goldenrod" + stroke="goldenrod" + stroke-width="2" + points="2292.45,-551.49 2282.03,-553.38 2291.35,-558.4 2292.45,-551.49" + id="polygon892" /> + </g> + <!-- jofugpdt2lki4tvw3xa56pxz4kzmjb33->tolbgopadusf5fpqzmhm7qfsnhpluyvv --> + <g + id="edge24" + class="edge"> + <title + id="title895">jofugpdt2lki4tvw3xa56pxz4kzmjb33->tolbgopadusf5fpqzmhm7qfsnhpluyvv</title> + <path + fill="none" + stroke="goldenrod" + stroke-width="2" + d="M2939.82,-635.27C2877.83,-614 2802.66,-588.21 2739.36,-566.49" + id="path897" /> + <polygon + fill="goldenrod" + stroke="goldenrod" + stroke-width="2" + points="2740.31,-563.12 2729.71,-563.18 2738.04,-569.74 2740.31,-563.12" + id="polygon899" /> + </g> + <!-- buscwcl7gy7xqmrsmtewcustpjoa3jy6->7bvgd7zcvk3hglqgbqczma5h4urvrdjb --> + <g + id="edge67" + class="edge"> + <title + id="title902">buscwcl7gy7xqmrsmtewcustpjoa3jy6->7bvgd7zcvk3hglqgbqczma5h4urvrdjb</title> + <path + fill="none" + stroke="dodgerblue" + stroke-width="2" + d="M2952.43,-1452.38C2496.82,-1410.23 1504.19,-1301.67 1504.19,-1156 1504.19,-1156 1504.19,-1156 1504.19,-995.2 1504.19,-905.38 1500.38,-880.88 1523.19,-794 1528.76,-772.76 1537.87,-750.48 1546.86,-731.28" + id="path904" /> + <polygon + fill="dodgerblue" + stroke="dodgerblue" + stroke-width="2" + points="1550.09,-732.65 1551.25,-722.12 1543.78,-729.63 1550.09,-732.65" + id="polygon906" /> + </g> + <!-- yry2pcjkl2hcfeexfi2yvnar2lyplbyg->7aawlyt3hu24znvpgwedu2s3jmz46dkn --> + <g + id="edge79" + class="edge"> + <title + id="title909">yry2pcjkl2hcfeexfi2yvnar2lyplbyg->7aawlyt3hu24znvpgwedu2s3jmz46dkn</title> + <path + fill="none" + stroke="dodgerblue" + stroke-width="2" + d="M2602.17,-649.13C2768.38,-627.38 3003.6,-595.25 3209.03,-562.21 3220.98,-560.29 3233.28,-558.24 3245.67,-556.13" + id="path911" /> + <path + fill="none" + stroke="crimson" + stroke-width="2" + d="M2602.43,-651.11C2768.65,-629.36 3003.87,-597.23 3209.34,-564.19 3221.31,-562.26 3233.61,-560.22 3246.01,-558.1" + id="path913" /> + <polygon + fill="dodgerblue" + stroke="dodgerblue" + stroke-width="2" + points="3246.53,-560.55 3255.79,-555.41 3245.34,-553.65 3246.53,-560.55" + id="polygon915" /> + </g> + <!-- yry2pcjkl2hcfeexfi2yvnar2lyplbyg->gpd7yevon44acblslmgorfsxufgk3nhz --> + <g + id="edge56" + class="edge"> + <title + id="title918">yry2pcjkl2hcfeexfi2yvnar2lyplbyg->gpd7yevon44acblslmgorfsxufgk3nhz</title> + <path + fill="none" + stroke="dodgerblue" + stroke-width="2" + d="M2376.8,-635.09C2370.61,-590.51 2368.57,-521.18 2404.4,-475.78 2548.18,-295.47 2813.54,-233.01 3004.39,-211.87" + id="path920" /> + <path + fill="none" + stroke="crimson" + stroke-width="2" + d="M2378.78,-634.81C2372.61,-590.45 2370.57,-521.12 2405.97,-477.02 2548.63,-297.42 2814,-234.95 3004.61,-213.85" + id="path922" /> + <polygon + fill="dodgerblue" + stroke="dodgerblue" + stroke-width="2" + points="3005.09,-216.32 3014.66,-211.77 3004.34,-209.36 3005.09,-216.32" + id="polygon924" /> + </g> + <!-- yry2pcjkl2hcfeexfi2yvnar2lyplbyg->hsp7usvecwby6o6kszujxywbux5f5qc4 --> + <g + id="edge71" + class="edge"> + <title + id="title927">yry2pcjkl2hcfeexfi2yvnar2lyplbyg->hsp7usvecwby6o6kszujxywbux5f5qc4</title> + <path + fill="none" + stroke="dodgerblue" + stroke-width="2" + d="M2361.4,-635.1C2349.46,-613.85 2335.34,-587.53 2324.19,-563.2 2306.98,-525.69 2322.72,-503.03 2291.19,-476.4 2165.2,-369.99 2070.02,-486.84 1927.19,-404.4 1882.78,-378.77 1895.6,-343.22 1851.19,-317.6 1656.6,-205.36 1030.5,-113.77 690.66,-70.82" + id="path929" /> + <polygon + fill="dodgerblue" + stroke="dodgerblue" + stroke-width="2" + points="691.05,-67.34 680.69,-69.56 690.18,-74.29 691.05,-67.34" + id="polygon931" /> + </g> + <!-- yry2pcjkl2hcfeexfi2yvnar2lyplbyg->ez3cm4rogbx7at45wfi6gquti6fbo3zz --> + <g + id="edge62" + class="edge"> + <title + id="title934">yry2pcjkl2hcfeexfi2yvnar2lyplbyg->ez3cm4rogbx7at45wfi6gquti6fbo3zz</title> + <path + fill="none" + stroke="dodgerblue" + stroke-width="2" + d="M2380.71,-635.38C2374.28,-591.86 2358.95,-523.83 2323.39,-477 2303.26,-450.35 2274.69,-428.03 2246.51,-410.51" + id="path936" /> + <path + fill="none" + stroke="crimson" + stroke-width="2" + d="M2382.69,-635.09C2376.23,-591.42 2360.9,-523.39 2324.98,-475.8 2304.49,-448.78 2275.92,-426.46 2247.57,-408.81" + id="path938" /> + <polygon + fill="dodgerblue" + stroke="dodgerblue" + stroke-width="2" + points="2248.65,-406.54 2238.28,-404.35 2245.02,-412.53 2248.65,-406.54" + id="polygon940" /> + </g> + <!-- lcvuenzomq3fdqabnz22ih3kpt4g2nyd --> + <g + id="node38" + class="node"> + <title + id="title943">lcvuenzomq3fdqabnz22ih3kpt4g2nyd</title> + <path + fill="coral" + stroke="black" + stroke-width="4" + d="M1804.63,-563.1C1804.63,-563.1 1343.74,-563.1 1343.74,-563.1 1337.74,-563.1 1331.74,-557.1 1331.74,-551.1 1331.74,-551.1 1331.74,-488.5 1331.74,-488.5 1331.74,-482.5 1337.74,-476.5 1343.74,-476.5 1343.74,-476.5 1804.63,-476.5 1804.63,-476.5 1810.63,-476.5 1816.63,-482.5 1816.63,-488.5 1816.63,-488.5 1816.63,-551.1 1816.63,-551.1 1816.63,-557.1 1810.63,-563.1 1804.63,-563.1" + id="path945" /> + <text + x="1574.1899" + y="-512.59998" + font-size="24.00" + id="text947" + style="font-size:24px;font-family:Monaco;text-anchor:middle">berkeley-db@18.1.40/lcvuenz</text> + </g> + <!-- 7bvgd7zcvk3hglqgbqczma5h4urvrdjb->bvcsrijbs7lp5jvlyooahoxc3zfapwfp --> + <g + id="edge3" + class="edge"> + <title + id="title950">7bvgd7zcvk3hglqgbqczma5h4urvrdjb->bvcsrijbs7lp5jvlyooahoxc3zfapwfp</title> + <path + fill="none" + stroke="dodgerblue" + stroke-width="2" + d="M1776.05,-660.23C1889.21,-651.5 2032.95,-641.16 2161.13,-634.2 3035.71,-586.77 3263.49,-668.29 4136.22,-562.25" + id="path952" /> + <path + fill="none" + stroke="crimson" + stroke-width="2" + d="M1776.2,-662.22C1889.36,-653.5 2033.09,-643.16 2161.24,-636.2 3035.04,-588.66 3262.82,-670.17 4136.46,-564.24" + id="path954" /> + <polygon + fill="dodgerblue" + stroke="dodgerblue" + stroke-width="2" + points="4136.81,-566.71 4146.32,-562.03 4135.97,-559.76 4136.81,-566.71" + id="polygon956" /> + </g> + <!-- 7bvgd7zcvk3hglqgbqczma5h4urvrdjb->bcjm3vxlgrjgewpdakhpfea3y2kzcspe --> + <g + id="edge76" + class="edge"> + <title + id="title959">7bvgd7zcvk3hglqgbqczma5h4urvrdjb->bcjm3vxlgrjgewpdakhpfea3y2kzcspe</title> + <path + fill="none" + stroke="dodgerblue" + stroke-width="2" + d="M1709.68,-634.32C1778.18,-612.96 1861.32,-587.04 1931.16,-565.27" + id="path961" /> + <path + fill="none" + stroke="crimson" + stroke-width="2" + d="M1710.27,-636.23C1778.77,-614.87 1861.92,-588.95 1931.76,-567.18" + id="path963" /> + <polygon + fill="dodgerblue" + stroke="dodgerblue" + stroke-width="2" + points="1932.72,-569.5 1941.22,-563.18 1930.63,-562.82 1932.72,-569.5" + id="polygon965" /> + </g> + <!-- 7bvgd7zcvk3hglqgbqczma5h4urvrdjb->ez3cm4rogbx7at45wfi6gquti6fbo3zz --> + <g + id="edge74" + class="edge"> + <title + id="title968">7bvgd7zcvk3hglqgbqczma5h4urvrdjb->ez3cm4rogbx7at45wfi6gquti6fbo3zz</title> + <path + fill="none" + stroke="dodgerblue" + stroke-width="2" + d="M1410.03,-636.17C1375.41,-619.34 1343.26,-596.13 1322.34,-563.74 1301.33,-530.94 1296.6,-505.44 1322.44,-475.74 1412.28,-375.11 1789.81,-423.83 1922.03,-403.41 1923.16,-403.24 1924.29,-403.06 1925.43,-402.89" + id="path970" /> + <path + fill="none" + stroke="crimson" + stroke-width="2" + d="M1410.9,-634.37C1376.58,-617.72 1344.43,-594.51 1324.03,-562.66 1303.3,-530.57 1298.57,-505.08 1323.93,-477.06 1412.02,-377.09 1789.55,-425.82 1922.34,-405.39 1923.47,-405.21 1924.6,-405.04 1925.74,-404.86" + id="path972" /> + <polygon + fill="dodgerblue" + stroke="dodgerblue" + stroke-width="2" + points="1926.54,-407.27 1935.87,-402.25 1925.45,-400.35 1926.54,-407.27" + id="polygon974" /> + </g> + <!-- 7bvgd7zcvk3hglqgbqczma5h4urvrdjb->lcvuenzomq3fdqabnz22ih3kpt4g2nyd --> + <g + id="edge31" + class="edge"> + <title + id="title977">7bvgd7zcvk3hglqgbqczma5h4urvrdjb->lcvuenzomq3fdqabnz22ih3kpt4g2nyd</title> + <path + fill="none" + stroke="dodgerblue" + stroke-width="2" + d="M1573.19,-635.17C1573.19,-616.17 1573.19,-593.57 1573.19,-573.5" + id="path979" /> + <path + fill="none" + stroke="crimson" + stroke-width="2" + d="M1575.19,-635.17C1575.19,-616.17 1575.19,-593.57 1575.19,-573.5" + id="path981" /> + <polygon + fill="dodgerblue" + stroke="dodgerblue" + stroke-width="2" + points="1577.69,-573.27 1574.19,-563.27 1570.69,-573.27 1577.69,-573.27" + id="polygon983" /> + </g> + <!-- mof23fyk5qdmzll42yrtvvjeafzn45rl->r3mipc2ezzxleb6g3yjy2rgio44tpsnr --> + <g + id="edge9" + class="edge"> + <title + id="title986">mof23fyk5qdmzll42yrtvvjeafzn45rl->r3mipc2ezzxleb6g3yjy2rgio44tpsnr</title> + <path + fill="none" + stroke="dodgerblue" + stroke-width="2" + d="M4876.19,-635.17C4876.19,-616.17 4876.19,-593.57 4876.19,-573.5" + id="path988" /> + <path + fill="none" + stroke="crimson" + stroke-width="2" + d="M4878.19,-635.17C4878.19,-616.17 4878.19,-593.57 4878.19,-573.5" + id="path990" /> + <polygon + fill="dodgerblue" + stroke="dodgerblue" + stroke-width="2" + points="4880.69,-573.27 4877.19,-563.27 4873.69,-573.27 4880.69,-573.27" + id="polygon992" /> + </g> + </g> +</svg> diff --git a/lib/spack/spack/solver/asp.py b/lib/spack/spack/solver/asp.py index 1afe31f162..ce0ae2ca7f 100644 --- a/lib/spack/spack/solver/asp.py +++ b/lib/spack/spack/solver/asp.py @@ -2595,6 +2595,7 @@ class SpecBuilder: r"^node_compiler$", r"^package_hash$", r"^root$", + r"^variant_default_value_from_cli$", r"^virtual_node$", r"^virtual_root$", ] diff --git a/lib/spack/spack/solver/concretize.lp b/lib/spack/spack/solver/concretize.lp index 7a41a9e834..fd3fb94f49 100644 --- a/lib/spack/spack/solver/concretize.lp +++ b/lib/spack/spack/solver/concretize.lp @@ -20,7 +20,7 @@ % Integrity constraints on DAG nodes :- attr("root", PackageNode), not attr("node", PackageNode). -:- attr("version", PackageNode), not attr("node", PackageNode). +:- attr("version", PackageNode, _), not attr("node", PackageNode), not attr("virtual_node", PackageNode). :- attr("node_version_satisfies", PackageNode), not attr("node", PackageNode). :- attr("hash", PackageNode, _), not attr("node", PackageNode). :- attr("node_platform", PackageNode, _), not attr("node", PackageNode). @@ -58,7 +58,6 @@ unification_set(SetID, ChildNode) :- attr("depends_on", ParentNode, ChildNode, T unification_set(("build", node(X, Child)), node(X, Child)) :- attr("depends_on", ParentNode, node(X, Child), Type), Type == "build", - SetID != "generic_build", multiple_unification_sets(Child), unification_set(SetID, ParentNode). @@ -68,18 +67,18 @@ unification_set("generic_build", node(X, Child)) not multiple_unification_sets(Child), unification_set(_, ParentNode). -% Any dependency of type "build" in a unification set that is in the leaf unification set, -% stays in that unification set -unification_set(SetID, ChildNode) - :- attr("depends_on", ParentNode, ChildNode, Type), - Type == "build", - SetID == "generic_build", - unification_set(SetID, ParentNode). - unification_set(SetID, VirtualNode) :- provider(PackageNode, VirtualNode), unification_set(SetID, PackageNode). +% Do not allow split dependencies, for now. This ensures that we don't construct graphs where e.g. +% a python extension depends on setuptools@63.4 as a run dependency, but uses e.g. setuptools@68 +% as a build dependency. +% +% We'll need to relax the rule before we get to actual cross-compilation +:- depends_on(ParentNode, node(X, Dependency)), depends_on(ParentNode, node(Y, Dependency)), X < Y. + + #defined multiple_unification_sets/1. %---- diff --git a/lib/spack/spack/solver/counter.py b/lib/spack/spack/solver/counter.py index b238f60d8c..28883817df 100644 --- a/lib/spack/spack/solver/counter.py +++ b/lib/spack/spack/solver/counter.py @@ -5,6 +5,8 @@ import collections from typing import List, Set +from llnl.util import lang + import spack.deptypes as dt import spack.package_base import spack.repo @@ -95,8 +97,17 @@ class MinimalDuplicatesCounter(NoDuplicatesCounter): ) self._link_run_virtuals.update(self._possible_virtuals) for x in self._link_run: - current = spack.repo.PATH.get_pkg_class(x).dependencies_of_type(dt.BUILD) - self._direct_build.update(current) + build_dependencies = spack.repo.PATH.get_pkg_class(x).dependencies_of_type(dt.BUILD) + virtuals, reals = lang.stable_partition( + build_dependencies, spack.repo.PATH.is_virtual_safe + ) + + self._possible_virtuals.update(virtuals) + for virtual_dep in virtuals: + providers = spack.repo.PATH.providers_for(virtual_dep) + self._direct_build.update(str(x) for x in providers) + + self._direct_build.update(reals) self._total_build = set( spack.package_base.possible_dependencies( diff --git a/lib/spack/spack/spec.py b/lib/spack/spack/spec.py index 85a638b602..8300e4d8a7 100644 --- a/lib/spack/spack/spec.py +++ b/lib/spack/spack/spec.py @@ -1604,13 +1604,20 @@ class Spec: try: dspec = next(dspec for dspec in orig if depflag == dspec.depflag) except StopIteration: - raise DuplicateDependencyError("Cannot depend on '%s' twice" % spec) + current_deps = ", ".join( + dt.flag_to_chars(x.depflag) + " " + x.spec.short_spec for x in orig + ) + raise DuplicateDependencyError( + f"{self.short_spec} cannot depend on '{spec.short_spec}' multiple times.\n" + f"\tRequired: {dt.flag_to_chars(depflag)}\n" + f"\tDependency: {current_deps}" + ) try: dspec.spec.constrain(spec) except spack.error.UnsatisfiableSpecError: raise DuplicateDependencyError( - "Cannot depend on incompatible specs '%s' and '%s'" % (dspec.spec, spec) + f"Cannot depend on incompatible specs '{dspec.spec}' and '{spec}'" ) def add_dependency_edge( diff --git a/lib/spack/spack/test/concretize.py b/lib/spack/spack/test/concretize.py index 63c6699de2..53f9c64d5e 100644 --- a/lib/spack/spack/test/concretize.py +++ b/lib/spack/spack/test/concretize.py @@ -2121,12 +2121,9 @@ def duplicates_test_repository(): @pytest.mark.usefixtures("mutable_config", "duplicates_test_repository") +@pytest.mark.only_clingo("Not supported by the original concretizer") class TestConcretizeSeparately: @pytest.mark.parametrize("strategy", ["minimal", "full"]) - @pytest.mark.skipif( - os.environ.get("SPACK_TEST_SOLVER") == "original", - reason="Not supported by the original concretizer", - ) def test_two_gmake(self, strategy): """Tests that we can concretize a spec with nodes using the same build dependency pinned at different versions. @@ -2151,10 +2148,6 @@ class TestConcretizeSeparately: assert len(pinned_gmake) == 1 and pinned_gmake[0].satisfies("@=3.0") @pytest.mark.parametrize("strategy", ["minimal", "full"]) - @pytest.mark.skipif( - os.environ.get("SPACK_TEST_SOLVER") == "original", - reason="Not supported by the original concretizer", - ) def test_two_setuptools(self, strategy): """Tests that we can concretize separate build dependencies, when we are dealing with extensions. @@ -2191,10 +2184,6 @@ class TestConcretizeSeparately: gmake = s["python"].dependencies(name="gmake", deptype="build") assert len(gmake) == 1 and gmake[0].satisfies("@=3.0") - @pytest.mark.skipif( - os.environ.get("SPACK_TEST_SOLVER") == "original", - reason="Not supported by the original concretizer", - ) def test_solution_without_cycles(self): """Tests that when we concretize a spec with cycles, a fallback kicks in to recompute a solution without cycles. @@ -2207,6 +2196,21 @@ class TestConcretizeSeparately: assert s["cycle-a"].satisfies("~cycle") assert s["cycle-b"].satisfies("+cycle") + @pytest.mark.parametrize("strategy", ["minimal", "full"]) + def test_pure_build_virtual_dependency(self, strategy): + """Tests that we can concretize a pure build virtual dependency, and ensures that + pure build virtual dependencies are accounted in the list of possible virtual + dependencies. + + virtual-build@1.0 + | [type=build, virtual=pkgconfig] + pkg-config@1.0 + """ + spack.config.CONFIG.set("concretizer:duplicates:strategy", strategy) + + s = Spec("virtual-build").concretized() + assert s["pkgconfig"].name == "pkg-config" + @pytest.mark.parametrize( "v_str,v_opts,checksummed", diff --git a/lib/spack/spack/test/data/config/concretizer.yaml b/lib/spack/spack/test/data/config/concretizer.yaml index ecf121a917..0dd810163d 100644 --- a/lib/spack/spack/test/data/config/concretizer.yaml +++ b/lib/spack/spack/test/data/config/concretizer.yaml @@ -4,4 +4,4 @@ concretizer: granularity: microarchitectures host_compatible: false duplicates: - strategy: none + strategy: minimal diff --git a/share/spack/gitlab/cloud_pipelines/stacks/data-vis-sdk/spack.yaml b/share/spack/gitlab/cloud_pipelines/stacks/data-vis-sdk/spack.yaml index b4534f0814..9963f4b777 100644 --- a/share/spack/gitlab/cloud_pipelines/stacks/data-vis-sdk/spack.yaml +++ b/share/spack/gitlab/cloud_pipelines/stacks/data-vis-sdk/spack.yaml @@ -4,22 +4,16 @@ spack: cmake: variants: ~ownlibs ecp-data-vis-sdk: - require: - - one_of: - - +ascent +adios2 +cinema +darshan +faodel +hdf5 +pnetcdf +sensei +sz +unifyfs - +veloc +vtkm +zfp - - one_of: - - +paraview ~visit - - ~paraview +visit + require: "+ascent +adios2 +cinema +darshan +faodel +hdf5 +pnetcdf +sensei +sz +unifyfs +veloc +vtkm +zfp" hdf5: require: - one_of: ['@1.14', '@1.12'] mesa: - require: +glx +osmesa +opengl ~opengles +llvm + require: "+glx +osmesa +opengl ~opengles +llvm" libosmesa: - require: mesa +osmesa + require: "mesa +osmesa" libglx: - require: mesa +glx + require: "mesa +glx" ospray: require: '@2.8.0 +denoiser +mpi' llvm: @@ -57,9 +51,11 @@ spack: # Test ParaView and VisIt builds with different GL backends - matrix: - [$sdk_base_spec] + - ["+paraview ~visit"] - [$^paraview_specs] - matrix: - [$sdk_base_spec] + - ["~paraview +visit"] - [$^visit_specs] mirrors: {mirror: s3://spack-binaries/develop/data-vis-sdk} diff --git a/var/spack/repos/builtin/packages/camp/package.py b/var/spack/repos/builtin/packages/camp/package.py index 8d7b4f62b1..a1bdc830d3 100644 --- a/var/spack/repos/builtin/packages/camp/package.py +++ b/var/spack/repos/builtin/packages/camp/package.py @@ -53,7 +53,7 @@ class Camp(CMakePackage, CudaPackage, ROCmPackage): depends_on("cub", when="+cuda") - depends_on("blt") + depends_on("blt", type="build") conflicts("^blt@:0.3.6", when="+rocm") diff --git a/var/spack/repos/builtin/packages/cmake/package.py b/var/spack/repos/builtin/packages/cmake/package.py index c4c61aee82..796eb4c397 100644 --- a/var/spack/repos/builtin/packages/cmake/package.py +++ b/var/spack/repos/builtin/packages/cmake/package.py @@ -239,7 +239,7 @@ class Cmake(Package): depends_on("libuv@1.10.0:1.10", when="@3.11.0:3.11") depends_on("libuv@1.10.0:", when="@3.12.0:") depends_on("rhash", when="@3.8.0:") - depends_on("jsoncpp", when="@3.2:") + depends_on("jsoncpp build_system=meson", when="@3.2:") depends_on("ncurses", when="+ncurses") diff --git a/var/spack/repos/builtin/packages/jsoncpp/package.py b/var/spack/repos/builtin/packages/jsoncpp/package.py index 55c2f22a02..bd20e2b22e 100644 --- a/var/spack/repos/builtin/packages/jsoncpp/package.py +++ b/var/spack/repos/builtin/packages/jsoncpp/package.py @@ -47,7 +47,7 @@ class Jsoncpp(CMakePackage, MesonPackage): with when("build_system=cmake"): depends_on("cmake@3.1:", type="build") - depends_on("cmake@1.9:", when="@1.9:", type="build") + depends_on("cmake@3.9:", when="@1.9:", type="build") with when("build_system=meson"): depends_on("meson@0.49.0:", type="build") diff --git a/var/spack/repos/builtin/packages/mgard/package.py b/var/spack/repos/builtin/packages/mgard/package.py index ca9f2f46e4..b58f4c0bba 100644 --- a/var/spack/repos/builtin/packages/mgard/package.py +++ b/var/spack/repos/builtin/packages/mgard/package.py @@ -50,7 +50,7 @@ class Mgard(CMakePackage, CudaPackage): depends_on("libarchive", when="@2021-11-12:") depends_on("tclap", when="@2021-11-12") depends_on("yaml-cpp", when="@2021-11-12:") - depends_on("cmake@3.19:") + depends_on("cmake@3.19:", type="build") depends_on("nvcomp@2.2.0:", when="@2022-11-18:+cuda") depends_on("nvcomp@2.0.2", when="@:2021-11-12+cuda") conflicts("cuda_arch=none", when="+cuda") diff --git a/var/spack/repos/builtin/packages/py-gevent/package.py b/var/spack/repos/builtin/packages/py-gevent/package.py index b684829f54..c41b815ef2 100644 --- a/var/spack/repos/builtin/packages/py-gevent/package.py +++ b/var/spack/repos/builtin/packages/py-gevent/package.py @@ -24,8 +24,7 @@ class PyGevent(PythonPackage): depends_on("py-setuptools@40.8:", when="@20.5.1:", type=("build", "run")) depends_on("py-setuptools@40.8:", when="@1.5:", type="build") depends_on("py-setuptools@24.2:", when="@:1.4", type="build") - # TODO: relax this until we support separate concretization of build deps by default - # depends_on("py-cython@3:", when="@20.5.1:", type="build") + depends_on("py-cython@3:", when="@20.5.1:", type="build") depends_on("py-cython@0.29.14:", when="@1.5:", type="build") depends_on("py-cffi@1.12.3:", type=("build", "run")) depends_on("py-greenlet@3:", when="@23.7: ^python@3.12:", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/py-statsmodels/package.py b/var/spack/repos/builtin/packages/py-statsmodels/package.py index c99901d9ae..36968986a3 100644 --- a/var/spack/repos/builtin/packages/py-statsmodels/package.py +++ b/var/spack/repos/builtin/packages/py-statsmodels/package.py @@ -14,6 +14,7 @@ class PyStatsmodels(PythonPackage): homepage = "https://www.statsmodels.org" pypi = "statsmodels/statsmodels-0.8.0.tar.gz" + version("0.13.5", sha256="593526acae1c0fda0ea6c48439f67c3943094c542fe769f8b90fe9e6c6cc4871") version("0.13.2", sha256="77dc292c9939c036a476f1770f9d08976b05437daa229928da73231147cde7d4") version("0.13.1", sha256="006ec8d896d238873af8178d5475203844f2c391194ed8d42ddac37f5ff77a69") version("0.13.0", sha256="f2efc02011b7240a9e851acd76ab81150a07d35c97021cb0517887539a328f8a") @@ -25,12 +26,15 @@ class PyStatsmodels(PythonPackage): depends_on("python@2.7:2.8,3.4:", when="@0.10.1:", type=("build", "link", "run")) depends_on("python@3.6:", when="@0.12.1:", type=("build", "link", "run")) - # according to https://www.statsmodels.org/dev/install.html earlier versions - # might work. - depends_on("py-setuptools@0.6c5:", type="build") - depends_on("py-cython@0.29:", type="build") + # according to https://www.statsmodels.org/dev/install.html earlier versions might work. + depends_on("py-setuptools", type="build") + depends_on("py-setuptools@59.2.0:", type="build", when="@0.13.5:") + + # https://github.com/statsmodels/statsmodels/blob/01b19d7d111b29c183f620ff0a949ef6391ff8ee/pyproject.toml + depends_on("py-cython@0", type="build") depends_on("py-cython@0.29.14:", type="build", when="@0.12.0:") depends_on("py-cython@0.29.22:", type="build", when="@0.13.0:") + depends_on("py-cython@0.29.32:", type="build", when="@0.13.5:") # patsy@0.5.1 works around a Python change # https://github.com/statsmodels/statsmodels/issues/5343 and diff --git a/var/spack/repos/builtin/packages/raja/package.py b/var/spack/repos/builtin/packages/raja/package.py index 88505b3a81..cc1ede76be 100644 --- a/var/spack/repos/builtin/packages/raja/package.py +++ b/var/spack/repos/builtin/packages/raja/package.py @@ -137,7 +137,7 @@ class Raja(CachedCMakePackage, CudaPackage, ROCmPackage): depends_on("cmake@:3.20", when="@:2022.03+rocm", type="build") depends_on("cmake@3.23:", when="@2022.10:+rocm", type="build") - depends_on("cmake@3.14:", when="@2022.03.0:") + depends_on("cmake@3.14:", when="@2022.03.0:", type="build") depends_on("llvm-openmp", when="+openmp %apple-clang") diff --git a/var/spack/repos/builtin/packages/umpire/package.py b/var/spack/repos/builtin/packages/umpire/package.py index 51f0c034b2..c64bfdf256 100644 --- a/var/spack/repos/builtin/packages/umpire/package.py +++ b/var/spack/repos/builtin/packages/umpire/package.py @@ -168,7 +168,7 @@ class Umpire(CachedCMakePackage, CudaPackage, ROCmPackage): depends_on("cmake@3.8:", type="build") depends_on("cmake@3.9:", when="+cuda", type="build") - depends_on("cmake@3.14:", when="@2022.03.0:") + depends_on("cmake@3.14:", when="@2022.03.0:", type="build") depends_on("blt@0.5.2:", type="build", when="@2022.10.0:") depends_on("blt@0.5.0:", type="build", when="@2022.03.0:") diff --git a/var/spack/repos/duplicates.test/packages/pkg-config/package.py b/var/spack/repos/duplicates.test/packages/pkg-config/package.py new file mode 100644 index 0000000000..eb7b84b88f --- /dev/null +++ b/var/spack/repos/duplicates.test/packages/pkg-config/package.py @@ -0,0 +1,16 @@ +# Copyright 2013-2023 Lawrence Livermore National Security, LLC and other +# Spack Project Developers. See the top-level COPYRIGHT file for details. +# +# SPDX-License-Identifier: (Apache-2.0 OR MIT) +from spack.package import * + + +class PkgConfig(Package): + """A package providing a virtual, which is frequently used as a pure build dependency.""" + + homepage = "http://www.example.com" + url = "http://www.example.com/tdep-1.0.tar.gz" + + version("1.0.0", md5="0123456789abcdef0123456789abcdef") + + provides("pkgconfig") diff --git a/var/spack/repos/duplicates.test/packages/virtual-build/package.py b/var/spack/repos/duplicates.test/packages/virtual-build/package.py new file mode 100644 index 0000000000..17fc60955d --- /dev/null +++ b/var/spack/repos/duplicates.test/packages/virtual-build/package.py @@ -0,0 +1,16 @@ +# Copyright 2013-2023 Lawrence Livermore National Security, LLC and other +# Spack Project Developers. See the top-level COPYRIGHT file for details. +# +# SPDX-License-Identifier: (Apache-2.0 OR MIT) +from spack.package import * + + +class VirtualBuild(Package): + """A package that has a pure build virtual dependency""" + + homepage = "http://www.example.com" + url = "http://www.example.com/tdep-1.0.tar.gz" + + version("1.0.0", md5="0123456789abcdef0123456789abcdef") + + depends_on("pkgconfig", type="build") |