Files
tqma6-yocto-mirror/docs/softwarefreigabe.tex

263 lines
8.2 KiB
TeX
Raw Normal View History

\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~<rezept>} 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}