diff --git a/docs/softwarefreigabe.pdf b/docs/softwarefreigabe.pdf new file mode 100644 index 00000000..6827d8e7 Binary files /dev/null and b/docs/softwarefreigabe.pdf differ diff --git a/docs/softwarefreigabe.tex b/docs/softwarefreigabe.tex new file mode 100644 index 00000000..961f18a7 --- /dev/null +++ b/docs/softwarefreigabe.tex @@ -0,0 +1,262 @@ +\documentclass[a4paper,11pt]{article} + +% Encoding & Fonts (serif, classic typesetting) +\usepackage[T1]{fontenc} +\usepackage[utf8]{inputenc} +\usepackage{lmodern} + +% Layout +\usepackage[margin=2cm,top=2.5cm,bottom=2.5cm]{geometry} +\usepackage{fancyhdr} +\usepackage{lastpage} + +% Tables +\usepackage{longtable} +\usepackage{booktabs} +\usepackage{array} +\usepackage{tabularx} +\usepackage{pdflscape} + +% Colors (grayscale/neutral) +\usepackage[table]{xcolor} +\definecolor{headerblue}{gray}{0.85} +\definecolor{lightgray}{gray}{0.95} + +% Links +\usepackage[colorlinks=true,linkcolor=black,urlcolor=black!60,citecolor=black]{hyperref} + +% CSV handling +\usepackage{csvsimple} + +% Misc +\usepackage{parskip} +\usepackage{amssymb} +\usepackage{enumitem} + +% Header/Footer +\pagestyle{fancy} +\fancyhf{} +\fancyhead[L]{\small\textsc{Softwarefreigabeantrag}} +\fancyhead[R]{\small TQMA6-YOCTO-2038} +\fancyfoot[C]{\small Seite \thepage{} von \pageref{LastPage}} +\fancyfoot[R]{\small 2026-03-01} +\renewcommand{\headrulewidth}{0.4pt} +\renewcommand{\footrulewidth}{0.4pt} + +\begin{document} + +% ============================================================ +% TITLE PAGE +% ============================================================ +\begin{titlepage} +\centering +\vspace*{3cm} + +{\Huge\textsc{Softwarefreigabeantrag}}\\[0.5cm] +{\Large\textsc{Quell- und Lizenznachweis}}\\[2cm] + +{\Large TQMa6UL Yocto BSP -- Scarthgap 5.0.11}\\[0.5cm] +{\large Unterwasserkommunikationssystem (UT)}\\[3cm] + +\begin{tabular}{ll} +\textbf{Projekt-ID:} & TQMA6-YOCTO-2038 \\ +\textbf{Hardware:} & TQMa6UL-AB (i.MX6 UltraLite) auf MBa6ULx \\ +\textbf{Yocto Release:} & Scarthgap 5.0.11 LTS \\ +\textbf{Distro:} & spaetzle (musl) \\ +\textbf{Machine:} & tqma6ul-multi-mba6ulx \\ +\textbf{Datum:} & 2026-03-01 \\ +\textbf{Autor:} & Christian Gie\ss en / Siggi (OpenClaw) \\ +\textbf{Klassifikation:} & Intern \\ +\end{tabular} + +\vfill +{\small Erstellt mit \LaTeX{} aus BitBake-Metadaten (264 Rezepte)} +\end{titlepage} + +% ============================================================ +% TABLE OF CONTENTS +% ============================================================ +\tableofcontents +\newpage + +% ============================================================ +% 1. INTRODUCTION +% ============================================================ +\section{Einleitung} + +Dieses Dokument dient als Quell- und Lizenznachweis f\"ur den Software\-freigabeantrag +des TQMa6UL Yocto BSP. Es enth\"alt eine vollst\"andige Aufstellung aller +264 Quellpakete, die f\"ur den Build des Images \texttt{tq-image-small-debug} +ben\"otigt werden, einschlie\ss lich: + +\begin{itemize}[nosep] + \item Paketname und Version + \item SPDX-Lizenzbezeichnung + \item Prim\"are Download-URL (HTTP, FTP oder Git) + \item Pfad zum BitBake-Rezept +\end{itemize} + +\subsection{2038-Konformit\"at} + +Das Year-2038-Problem betrifft 32-Bit-Systeme mit signiertem 32-Bit \texttt{time\_t}. +Yocto Scarthgap (5.0 LTS) l\"ost dieses Problem: + +\begin{itemize}[nosep] + \item \textbf{musl 1.2+}: 64-Bit \texttt{time\_t} seit 2020 (verwendet in \texttt{spaetzle}) + \item \textbf{glibc 2.39}: 64-Bit \texttt{time\_t} auf 32-Bit ARM (verf\"ugbar in \texttt{dumpling-wayland}) +\end{itemize} + +\subsection{Extraktionsmethodik} + +Die Lizenztabelle wurde automatisiert \"uber \texttt{bitbake~-e~} f\"ur +jedes der 264 Rezepte im Build-Graphen extrahiert. Dabei werden alle Yocto-Variablen +(z.\,B.\ \texttt{\$\{GNU\_MIRROR\}}, \texttt{\$\{PV\}}) vollst\"andig aufgel\"ost. + +% ============================================================ +% 2. SUMMARY +% ============================================================ +\section{Zusammenfassung} + +\begin{table}[h] +\centering +\begin{tabular}{lr} +\toprule +\textbf{Metrik} & \textbf{Wert} \\ +\midrule +Pakete gesamt & 264 \\ +Download-URLs aufgel\"ost & 224 (85\%) \\ +Ohne URL (Meta-Pakete) & 40 \\ +\midrule +Lizenz: MIT & 41 \\ +Lizenz: GPL-2.0-only & 32 \\ +Lizenz: GPL-2.0-or-later & 22 \\ +Lizenz: BSD-3-Clause & 19 \\ +Lizenz: GPL-3.0-or-later & 13 \\ +Lizenz: GPL-3.0-only & 11 \\ +Lizenz: Sonstige & 126 \\ +\midrule +Propriet\"ar & 2 (firmware-imx, firmware-nxp-wifi) \\ +\bottomrule +\end{tabular} +\caption{\"Ubersicht der Lizenztabelle} +\end{table} + +\subsection{Bewertung f\"ur milit\"arische Nutzung} + +\begin{description}[style=nextline] + \item[\textbf{Freigegeben}] MIT, BSD-2, BSD-3, Apache-2.0, ISC, GPL-2.0, LGPL-2.1 + \item[\textbf{Pr\"ufung erforderlich}] GPL-3.0 (Anti-Tivoization-Klausel), propriet\"are Firmware-Blobs + \item[\textbf{Nicht im Endprodukt}] Native/Cross-Build-Tools (GCC, CMake, etc.) +\end{description} + +% ============================================================ +% 3. BUILD CONFIGURATION +% ============================================================ +\section{Build-Konfiguration} + +\begin{table}[h] +\centering +\begin{tabular}{ll} +\toprule +\textbf{Parameter} & \textbf{Wert} \\ +\midrule +MACHINE & \texttt{tqma6ul-multi-mba6ulx} \\ +DISTRO & \texttt{spaetzle} \\ +TARGET\_SYS & \texttt{arm-tq-linux-musleabi} \\ +C-Library & musl 1.2.4 (64-Bit \texttt{time\_t}) \\ +Kernel & Linux 6.6.102 (TQ fork) \\ +U-Boot & 2023.04 (TQ fork) \\ +GCC & 13.4.0 \\ +BitBake & 2.8.0 \\ +Image & \texttt{tq-image-small-debug} \\ +BSP Repository & \texttt{github.com/tq-systems/ci-meta-tq} \\ +\bottomrule +\end{tabular} +\caption{Build-Konfiguration} +\end{table} + +% ============================================================ +% 4. COMPLETE LICENSE TABLE +% ============================================================ +\newpage +\section{Vollst\"andige Quell- und Lizenztabelle} + +Die folgende Tabelle enth\"alt alle 264 Pakete im Build-Graphen. +Pakete ohne URL sind Meta-Pakete, virtuelle Provider oder lokale Rezepte +ohne externen Source-Download. + +\begin{landscape} +\footnotesize +\rowcolors{2}{lightgray}{white} + +\csvreader[ + longtable=l|l|l|l|l, + table head=\toprule + \textbf{Paket} & \textbf{Version} & \textbf{Lizenz (SPDX)} & \textbf{Download-URL} & \textbf{Rezept} \\ + \midrule\endhead + \bottomrule\endfoot, + late after line=\\, + separator=comma +]{/tmp/license-table-clean.csv} +{Package=\pkg, Version=\ver, License=\lic, SRC_URI=\url, Recipe=\recipe} +{\pkg & \ver & \lic & {\tiny \url} & {\tiny \recipe}} + +\end{landscape} + +% ============================================================ +% 5. PROPRIETARY COMPONENTS +% ============================================================ +\newpage +\section{Propriet\"are Komponenten} + +\begin{table}[h] +\centering +\begin{tabular}{llll} +\toprule +\textbf{Paket} & \textbf{Version} & \textbf{Lizenz} & \textbf{Bewertung} \\ +\midrule +firmware-imx & 8.27 & Propriet\"ar (NXP SLA) & Pr\"ufung erforderlich \\ +firmware-nxp-wifi & 1.1 & Propriet\"ar (NXP) & Pr\"ufung erforderlich \\ +linux-firmware & 20240909 & Gemischt & Pr\"ufung pro Firmware \\ +\bottomrule +\end{tabular} +\caption{Propriet\"are Komponenten -- Einzelfreigabe erforderlich} +\end{table} + +\subsection{Open-Source-Alternativen} + +\begin{tabular}{lll} +\toprule +\textbf{Propriet\"ar} & \textbf{Alternative} & \textbf{Lizenz} \\ +\midrule +imx-gpu-viv (Vivante) & etnaviv (DRM) & MIT/GPL \\ +\bottomrule +\end{tabular} + +% ============================================================ +% 6. COMPLIANCE +% ============================================================ +\section{Compliance-Checkliste} + +\begin{enumerate}[nosep] + \item[\checkmark] Alle GPL-Pakete: Quellcode im Mirror archiviert + \item[\checkmark] Alle LGPL-Pakete: Bibliotheks-Quellcode verf\"ugbar + \item[\checkmark] Alle Download-URLs verifiziert (224/264) + \item[$\square$] Propriet\"are Komponenten: NXP-Lizenz pr\"ufen + \item[$\square$] GPL-3.0-Pakete: Anti-Tivoization-Klausel bewerten + \item[$\square$] Kryptographie-Export: OpenSSL/GnuTLS klassifizieren +\end{enumerate} + +% ============================================================ +% 7. REFERENCES +% ============================================================ +\section{Referenzen} + +\begin{itemize}[nosep] + \item Repository: \url{https://code.gegen.autos/openclaw/tqma6-yocto-mirror} + \item TQ-Systems ci-meta-tq: \url{https://github.com/tq-systems/ci-meta-tq} + \item Yocto Scarthgap Docs: \url{https://docs.yoctoproject.org/5.0/} + \item SPDX License List: \url{https://spdx.org/licenses/} +\end{itemize} + +\end{document}