Přeskočit na hlavní obsah

Artefakt Graphviz

Přenosná binární distribuce nástroje Graphviz, open-source sady pro vizualizaci grafů. Tento repozitář využívá Artifact Handler platformy Embedbits k vyhledání, stažení, ověření a konfiguraci Graphvizu v navazujících embedded projektech (např. pro grafy závislostí a volání řízené pomocí CMake/Doxygen).

Tento repozitář je podle rolí rozdělen na tři větve — větev main (master), kterou právě čtete, obsahuje pouze tuto dokumentaci; skutečné skripty handleru jsou ve větvi Core a verzované binárky jsou publikovány jako GitHub Releases ukotvené ve větvi Bin.


Obsah repozitáře​

main / master
└── README.md ← This document — no other content

Core
├── ArtifactConfig.cmake ← Artifact metadata (name, version constraints, asset naming)
└── CMakeGraphvizDefaults.cmake ← Graphviz integration logic (artifact init, version lookup)

Bin (anchor branch — no tracked binary files)
└── (empty commits only; each release tag points here)

Role v platformě​

Tento repozitář je jednou z několika distribucí artefaktů v rámci platformy Embedbits. Celkový tok vypadá takto:

GitLab (graphviz/graphviz) GitHub (Embedbits)
───────────────────────────── ──────────────────────────────────────────
Generic Package Registry Artifact-graphviz
graphviz-releases/<version>/*.zip ──► main / master → README only (this document)
Core → ArtifactConfig.cmake, CMakeGraphvizDefaults.cmake
Bin → Anchor branch (empty commits)
Releases → graphviz-<version>-<platform>.zip + .hash
tagged Bin/<version>-<platform>

GraphvizImporter.sh (v GithubArtifactsHandler) stahuje každou verzi Graphvizu z Generic Package Registry na GitLabu, přebaluje ji do standardizovaného .zip a publikuje ji jako GitHub Release v tomto repozitáři — označený tagem Bin/<version>-<platform> — a nikoli jako soubor commitnutý do větve Bin. Samotná větev Bin nese pouze prázdné kotvicí commity, na které tagy vydání ukazují.

Platform Artifact Handler v navazujících projektech odkazuje na větev Core jako na Git submodul. Při konfiguraci CMake přečte ArtifactConfig.cmake, aby zjistil, které vydání stáhnout, a poté stáhne a ověří odpovídající asset vydání pro aktuální platformu.


Struktura větví​

Větev / RefObsah
main / masterPouze tento README — žádný funkční obsah
CoreSkripty CMake handleru (ArtifactConfig.cmake, CMakeGraphvizDefaults.cmake) pro použití artefaktu
BinPouze kotvicí větev — nejsou zde commitovány žádné binárky
Release tag Bin/<version>-<platform>GitHub Release obsahující vlastní binární .zip a soubor s kontrolním součtem .hash jako assety vydání

Podporované platformy: Win (Windows), Unix (Linux), DarwinARM (macOS).

Poznámka: Samotný protokol Embedbits Artifact Handleru není na GitHub Releases vázán — takto jednoduše publikuje binárky GraphvizImporter.sh, protože cílem je GitHub. Na Git hostingu bez ekvivalentního Releases API handler podporuje také zabalené binárky commitnuté přímo jako sledované soubory ve větvi Bin, označené tagem podle verze/platformy (Bin/<version>-<platform>), místo nahrání jako assety vydání. CMake handler obě varianty zpracuje transparentně.


⚠️ Stažení vydání​

Binárky nejsou uloženy jako sledované soubory ve větvi Bin — naklonujte větev Core pro skripty handleru a binárky stahujte jako assety vydání pro konkrétní tag namísto klonování větve Bin.

# Core handler scripts
git clone --branch Core --single-branch --depth=1 <repository_url> graphviz-core

# Binary + checksum for one specific version/platform (GitHub Release asset)
gh release download Bin/12.2.1-Unix --repo Embedbits/Artifact-graphviz --pattern "graphviz-12.2.1-Unix.*"

Zahrnuté komponenty​

KomponentaPopis
dot, neato, fdp, sfdp, circo, twopiSpustitelné soubory layout enginů
gvprNástroj pro vyhledávání vzorů v grafech a jejich úpravy
Soubory pluginů/konfigurace (config6 atd.)Registrace pluginů výstupních formátů

Použití​

Artefakt se instaluje automaticky během fáze nastavení artefaktů pomocí:

cmake -P Artifacts/Graphviz/ArtifactConfig.cmake

Skript zajistí, že jsou binárky Graphvizu dostupné, v případě potřeby rozbalí asset vydání a přidá nástroj do systémové proměnné PATH pro následující kroky buildu.

Funkce handleru​

Graphviz_ArtifactInit(ARTIFACT_BIN_PATH)

Inicializuje artefakt: vyhledá (nebo stáhne) správný asset vydání pro platformu a zpřístupní jeho adresář bin/ v ARTIFACT_BIN_PATH.

Graphviz_GetArtifactVersion()

Vrací verzi aktuálně vyhodnocených binárek Graphvizu.


Verzování​

Verze artefaktů přímo odpovídají oficiálním verzím vydání Graphvizu tak, jak jsou publikovány na GitLabu:

12.1.0, 12.1.2, 12.2.1, ...

Nové verze publikuje GraphvizImporter.sh v repozitáři GithubArtifactsHandler, který načte seznam vydání z gitlab.com/graphviz/graphviz, pro každou platformu stáhne odpovídající asset z Generic Package Registry, přebalí jej jako .zip s kontrolním součtem SHA-256 a publikuje jej jako GitHub Release označený tagem Bin/<version>-<platform>.


Poznámky​

  • Není nutná instalace — binárky jsou přenosné a soběstačné.
  • Offline použití je podporováno, jakmile je artefakt lokálně v cache.
  • V pipelines Azure DevOps se doporučuje cachovat složku artefaktu, aby se zkrátila doba buildu.
  • Ne každá verze Graphvizu na GitLabu nutně obsahuje odpovídající asset pro všechny tři platformy — importér platformu, pro kterou nenajde asset vydání, přeskočí (a neskončí chybou).

Licence​

Graphviz je distribuován pod licencí Eclipse Public License 1.0 (EPL-1.0). Podrobnosti: https://gitlab.com/graphviz/graphviz/-/blob/main/LICENSE


Autoři​

Příspěvky jsou vítány! Otevřete prosím pull request.