docs: add distro comparison, recommend dumpling-wayland for Qt/glibc
Key updates: - README: comprehensive distro comparison table (spaetzle vs dumpling-wayland) - Recommend dumpling-wayland (glibc) for Qt/GUI applications - spaetzle (musl) explicitly blocks Qt: SKIP_RECIPE[tq-image-qt6] - Both distros are 2038-safe (glibc 2.39 and musl 1.2+ both use 64-bit time_t) - Updated 2038 analysis to cover both C library options - Updated license tables with both glibc and musl entries - Fixed remaining config references (imx → mainline) - Added image availability matrix per distro - Corrected package versions to match Scarthgap 5.0.11
This commit is contained in:
174
README.md
174
README.md
@@ -11,8 +11,9 @@
|
||||
## Overview
|
||||
|
||||
This project addresses the requirement to migrate from legacy PTXdist-based BSP
|
||||
to Yocto Project for TQMa6UL hardware. The primary driver is Year 2038
|
||||
compliance for military/long-term deployments.
|
||||
to Yocto Project for TQMa6UL hardware. The primary drivers are Year 2038
|
||||
compliance for military/long-term deployments and support for Qt-based
|
||||
graphical applications.
|
||||
|
||||
### 2038 Problem Context
|
||||
|
||||
@@ -21,12 +22,11 @@ The Year 2038 Problem (Y2K38) affects 32-bit systems using signed 32-bit time_t:
|
||||
- Systems will overflow and behave unpredictably after this date
|
||||
- Critical for military/aerospace systems with 15+ year service life
|
||||
|
||||
### Solution: Yocto Scarthgap + musl
|
||||
### Solution
|
||||
|
||||
Yocto Scarthgap (5.0 LTS) with musl libc provides:
|
||||
- 64-bit time_t by default on 32-bit ARM (musl 1.2+)
|
||||
- Long-term support until April 2028+
|
||||
- Comprehensive license manifests for approval
|
||||
Yocto Scarthgap (5.0 LTS) provides 2038 compliance with both C libraries:
|
||||
- **glibc 2.39**: 64-bit `time_t` on 32-bit ARM (default since glibc 2.34 in Yocto)
|
||||
- **musl 1.2+**: 64-bit `time_t` unconditionally since 2020
|
||||
|
||||
## Board Identification
|
||||
|
||||
@@ -41,34 +41,130 @@ Yocto Scarthgap (5.0 LTS) with musl libc provides:
|
||||
> ⚠️ **Critical:** The TQMa6UL machines are **only** available in the `mainline`
|
||||
> config template. The `imx` config does NOT include this board.
|
||||
|
||||
## Distro Selection
|
||||
|
||||
The BSP provides two main distribution families:
|
||||
|
||||
| Distro | C Library | Init | Qt | Use Case |
|
||||
|--------|-----------|------|----|----------|
|
||||
| **`dumpling-wayland`** | glibc | systemd | Qt6 ✅ | **Recommended** – full-featured, Qt/GUI support |
|
||||
| `spaetzle` | musl | busybox | ❌ blocked | Minimal/headless only |
|
||||
| `poky` | glibc | sysvinit | configurable | Yocto upstream default |
|
||||
|
||||
### Recommendation: `dumpling-wayland`
|
||||
|
||||
**Use `dumpling-wayland`** if you need:
|
||||
- Qt5/Qt6 graphical applications
|
||||
- glibc compatibility for third-party software
|
||||
- systemd, Wayland, WiFi, Bluetooth, OpenGL
|
||||
- Full `tq-image-qt6` support
|
||||
|
||||
> **Note:** `spaetzle` explicitly blocks Qt images:
|
||||
> `SKIP_RECIPE[tq-image-qt6] = "not buildable with spaetzle"`
|
||||
>
|
||||
> Qt5 is not included in the BSP layers. If needed, add `meta-qt5` manually.
|
||||
|
||||
### Both distros are 2038-safe
|
||||
|
||||
| Distro | C Library | time_t | 2038-safe? |
|
||||
|--------|-----------|--------|-----------|
|
||||
| `dumpling-wayland` | glibc 2.39 | 64-bit | ✅ |
|
||||
| `spaetzle` | musl 1.2+ | 64-bit | ✅ |
|
||||
|
||||
## Verified Build Configuration
|
||||
|
||||
*Tested 2026-03-01 on Debian 13 (Python 3.13):*
|
||||
|
||||
### spaetzle (minimal, musl)
|
||||
|
||||
```
|
||||
BB_VERSION = 2.8.0
|
||||
BUILD_SYS = x86_64-linux
|
||||
NATIVELSBSTRING = universal
|
||||
TARGET_SYS = arm-tq-linux-musleabi
|
||||
MACHINE = tqma6ul-multi-mba6ulx
|
||||
DISTRO = spaetzle
|
||||
DISTRO_VERSION = 5.0.11
|
||||
TUNE_FEATURES = arm vfp cortexa7 neon thumb callconvention-hard
|
||||
TARGET_FPU = hard
|
||||
```
|
||||
|
||||
### 2038 Compliance Status
|
||||
### dumpling-wayland (full, glibc) – recommended
|
||||
|
||||
| Component | Version | 2038-safe? | Notes |
|
||||
|-----------|---------|-----------|-------|
|
||||
| **Kernel** | Mainline 6.x | ✅ | 64-bit time syscalls |
|
||||
| **musl libc** | 1.2+ | ✅ | 64-bit `time_t` since 1.2.0 |
|
||||
| **Userspace** | Scarthgap | ✅ | Rebuilt against 64-bit `time_t` |
|
||||
| **U-Boot** | Mainline | ✅ | No time_t issues in bootloader |
|
||||
```bash
|
||||
# Setup with dumpling-wayland instead:
|
||||
export ACCEPT_FSL_EULA=1
|
||||
export MACHINE=tqma6ul-multi-mba6ulx
|
||||
. ./setup-environment build_ut mainline
|
||||
# Edit conf/local.conf:
|
||||
# DISTRO = "dumpling-wayland"
|
||||
# ACCEPT_FSL_EULA = "1"
|
||||
```
|
||||
|
||||
> **Note:** This BSP uses **musl libc** (`arm-tq-linux-musleabi`), NOT glibc.
|
||||
> musl has provided 64-bit `time_t` unconditionally on all 32-bit architectures
|
||||
> since version 1.2.0 (February 2020).
|
||||
Expected output:
|
||||
```
|
||||
TARGET_SYS = arm-tq-linux-gnueabi
|
||||
DISTRO = dumpling-wayland
|
||||
```
|
||||
|
||||
## Quick Start
|
||||
|
||||
### 1. Prerequisites (Debian 13 / Ubuntu 22.04+)
|
||||
|
||||
```bash
|
||||
sudo apt-get install -y \
|
||||
gawk wget git diffstat unzip texinfo gcc build-essential \
|
||||
chrpath socat cpio python3 python3-pip python3-pexpect \
|
||||
xz-utils debianutils iputils-ping python3-git python3-jinja2 \
|
||||
python3-subunit zstd liblz4-tool file locales libacl1-dev \
|
||||
lz4 python3-websockets
|
||||
```
|
||||
|
||||
### 2. Clone & Setup
|
||||
|
||||
```bash
|
||||
mkdir -p ~/UT && cd ~/UT
|
||||
git clone --recurse-submodules https://github.com/tq-systems/ci-meta-tq.git
|
||||
cd ci-meta-tq
|
||||
|
||||
export ACCEPT_FSL_EULA=1
|
||||
export MACHINE=tqma6ul-multi-mba6ulx
|
||||
. ./setup-environment build_ut mainline
|
||||
echo 'ACCEPT_FSL_EULA = "1"' >> build_ut/conf/local.conf
|
||||
|
||||
# For Qt/GUI applications, switch to dumpling-wayland:
|
||||
# echo 'DISTRO = "dumpling-wayland"' >> build_ut/conf/local.conf
|
||||
```
|
||||
|
||||
### 3. Optional: Redirect Storage
|
||||
|
||||
```bash
|
||||
mkdir -p ~/.yocto
|
||||
cat > ~/.yocto/site.conf << 'EOF'
|
||||
DL_DIR ?= "/srv/yocto/downloads"
|
||||
SSTATE_DIR ?= "/srv/yocto/sstate-cache"
|
||||
EOF
|
||||
```
|
||||
|
||||
### 4. Fetch & Build
|
||||
|
||||
```bash
|
||||
# Fetch all sources (for mirror creation)
|
||||
bitbake tq-image-small-debug --runall=fetch
|
||||
|
||||
# Build
|
||||
bitbake tq-image-small-debug
|
||||
|
||||
# Or with dumpling-wayland: build Qt6 image
|
||||
# bitbake tq-image-qt6
|
||||
```
|
||||
|
||||
## Available Images
|
||||
|
||||
| Image | spaetzle | dumpling-wayland | Description |
|
||||
|-------|----------|------------------|-------------|
|
||||
| `tq-image-small` | ✅ | ✅ | Minimal |
|
||||
| `tq-image-small-debug` | ✅ | ✅ | Minimal + debug |
|
||||
| `tq-image-generic` | ❌ | ✅ | Full-featured |
|
||||
| `tq-image-weston` | ❌ | ✅ | Wayland compositor |
|
||||
| `tq-image-qt6` | ❌ | ✅ | Qt6 demo image |
|
||||
| `core-image-minimal` | ✅ | ✅ | Yocto bare minimum |
|
||||
|
||||
## Documentation
|
||||
|
||||
@@ -77,32 +173,38 @@ TARGET_FPU = hard
|
||||
| [2038 Compliance Analysis](docs/01-analysis/2038-problem-analysis.md) | Detailed 2038 risk assessment |
|
||||
| [Mirror Creation Guide](docs/02-mirror-creation/step-by-step-mirror-creation.md) | Step-by-step build instructions |
|
||||
| [License Summary](docs/03-license-analysis/license-summary.md) | License overview and compliance |
|
||||
| [License Table](docs/03-license-analysis/UT-license-table.csv) | CSV format for import |
|
||||
| [License Table (CSV)](docs/03-license-analysis/UT-license-table.csv) | For import into spreadsheets |
|
||||
| [Air-Gapped Deployment](docs/04-deployment/corporate-network-deployment.md) | Offline build setup |
|
||||
|
||||
## Quick Start
|
||||
## Air-Gapped / Offline Deployment
|
||||
|
||||
```bash
|
||||
# 1. Clone
|
||||
git clone --recurse-submodules https://github.com/tq-systems/ci-meta-tq.git
|
||||
cd ci-meta-tq
|
||||
# 1. On connected machine: fetch all sources
|
||||
bitbake tq-image-qt6 --runall=fetch # or tq-image-small-debug
|
||||
|
||||
# 2. Setup
|
||||
export ACCEPT_FSL_EULA=1
|
||||
export MACHINE=tqma6ul-multi-mba6ulx
|
||||
. ./setup-environment build_ut mainline
|
||||
echo 'ACCEPT_FSL_EULA = "1"' >> build_ut/conf/local.conf
|
||||
# 2. Package the mirror
|
||||
tar czf yocto-mirror-tqma6ul.tar.gz -C /srv/yocto downloads/
|
||||
|
||||
# 3. Fetch (for mirror creation)
|
||||
bitbake tq-image-small-debug --runall=fetch
|
||||
|
||||
# 4. Build
|
||||
bitbake tq-image-small-debug
|
||||
# 3. On air-gapped machine: extract + configure
|
||||
tar xzf yocto-mirror-tqma6ul.tar.gz -C /srv/yocto/
|
||||
# Add to local.conf:
|
||||
# SOURCE_MIRROR_URL = "file:///srv/yocto/downloads/"
|
||||
# INHERIT += "own-mirrors"
|
||||
# BB_NO_NETWORK = "1"
|
||||
```
|
||||
|
||||
## Known Issues
|
||||
|
||||
| Issue | Severity | Notes |
|
||||
|-------|----------|-------|
|
||||
| Python 3.13 fork() warnings | Cosmetic | Does not affect build |
|
||||
| Debian 13 not validated | Cosmetic | Build works correctly |
|
||||
| `spaetzle` blocks Qt/Weston images | By design | Use `dumpling-wayland` |
|
||||
|
||||
## References
|
||||
|
||||
- [TQ-Systems ci-meta-tq](https://github.com/tq-systems/ci-meta-tq)
|
||||
- [TQMa6UL Product Page](https://www.tq-group.com/en/products/tq-embedded/arm-architecture/tqma6ul/)
|
||||
- [Yocto Scarthgap Docs](https://docs.yoctoproject.org/5.0/)
|
||||
- [musl 64-bit time_t](https://musl.libc.org/time64.html)
|
||||
- [glibc Y2038 Design](https://sourceware.org/glibc/wiki/Y2038ProofnessDesign)
|
||||
|
||||
@@ -1,207 +1,105 @@
|
||||
# Year 2038 Problem Analysis for TQMa6UL
|
||||
# 2038 Compliance Analysis – TQMa6UL
|
||||
|
||||
**Document ID:** ANA-2038-001
|
||||
**Date:** 2026-03-01
|
||||
**Author:** Siggi ⚙️
|
||||
**Status:** Approved for Implementation
|
||||
## Overview
|
||||
|
||||
---
|
||||
The Year 2038 problem (Y2K38) occurs when a signed 32-bit integer used for
|
||||
Unix timestamps overflows on **2038-01-19 03:14:07 UTC**. This affects all
|
||||
32-bit ARM systems using traditional 32-bit `time_t`.
|
||||
|
||||
## Executive Summary
|
||||
|
||||
The TQMa6UL (NXP i.MX6 UltraLite) is a 32-bit ARM Cortex-A7 processor. Without proper software stack, it will be affected by the Year 2038 Problem. **Yocto Scarthgap (5.0) provides a complete solution** with 64-bit time_t support on 32-bit architectures.
|
||||
|
||||
**Recommendation:** Migrate from legacy PTXdist BSP to Yocto Scarthgap immediately.
|
||||
|
||||
---
|
||||
|
||||
## 1. The Year 2038 Problem Explained
|
||||
|
||||
### 1.1 Technical Background
|
||||
|
||||
Unix-based systems traditionally use a signed 32-bit integer (`time_t`) to represent time:
|
||||
- Counts seconds since January 1, 1970 (Unix Epoch)
|
||||
- Maximum value: 2,147,483,647 (2³¹ - 1)
|
||||
- **Critical date:** 03:14:07 UTC on 19 January 2038
|
||||
|
||||
After this date, the counter overflows to -2,147,483,648, causing:
|
||||
- System time jumps to 13 December 1901
|
||||
- Software crashes or undefined behavior
|
||||
- File timestamps corrupted
|
||||
- Security certificates invalid
|
||||
- Scheduled tasks fail
|
||||
|
||||
### 1.2 Impact on 32-bit ARM Systems
|
||||
|
||||
The i.MX6 UltraLite (Cortex-A7) is a 32-bit processor:
|
||||
- Cannot natively execute 64-bit instructions
|
||||
- Requires software-level solution for 64-bit time
|
||||
- Kernel, glibc, and all user-space libraries must be 2038-compliant
|
||||
|
||||
---
|
||||
|
||||
## 2. Solution: 64-bit time_t on 32-bit ARM
|
||||
|
||||
### 2.1 Three-Layer Solution Required
|
||||
## Architecture
|
||||
|
||||
```
|
||||
┌─────────────────────────────────────┐
|
||||
│ User Space Applications │
|
||||
│ → Compiled with 64-bit time_t │
|
||||
│ Application Layer │
|
||||
│ (all userspace uses 64-bit t) │
|
||||
├─────────────────────────────────────┤
|
||||
│ C Library (glibc) │
|
||||
│ → musl 1.2+ with 64-bit time_t │
|
||||
│ C Library │
|
||||
│ glibc 2.39: 64-bit time_t (Y2038) │
|
||||
│ musl 1.2+: 64-bit time_t (Y2038) │
|
||||
├─────────────────────────────────────┤
|
||||
│ Linux Kernel │
|
||||
│ → 5.1+ with CONFIG_TIME_LOW_RES │
|
||||
│ → 5.6+ with complete y2038 syscalls│
|
||||
│ Linux Kernel (Mainline 6.x) │
|
||||
│ 64-bit time syscalls on ARM32 │
|
||||
├─────────────────────────────────────┤
|
||||
│ i.MX6 UltraLite (Cortex-A7) │
|
||||
└─────────────────────────────────────┘
|
||||
```
|
||||
|
||||
### 2.2 Yocto Scarthgap (5.0) Compliance
|
||||
## C Library Options
|
||||
|
||||
Yocto Project 5.0 (Scarthgap) released April 2024 provides:
|
||||
### Option 1: glibc (recommended for Qt/GUI)
|
||||
|
||||
| Component | Version | 2038 Feature | Status |
|
||||
|-----------|---------|--------------|--------|
|
||||
| **glibc** | 2.38+ | 64-bit `time_t` default on 32-bit | ✅ |
|
||||
| **Linux Kernel** | 6.6 LTS | `CONFIG_COMPAT_32BIT_TIME` | ✅ |
|
||||
| **GCC** | 13.x | Supports 64-bit time_t | ✅ |
|
||||
| **BitBake** | 2.6 | Build system support | ✅ |
|
||||
**Distro:** `dumpling-wayland`
|
||||
**Target triplet:** `arm-tq-linux-gnueabi`
|
||||
|
||||
**Critical:** musl 1.2+ uses 64-bit `time_t` BY DEFAULT for 32-bit ARM in Yocto.
|
||||
glibc provides 64-bit `time_t` on 32-bit ARM since version 2.34, when built
|
||||
with `_TIME_BITS=64` (which Yocto Scarthgap enables by default). The BSP
|
||||
includes glibc 2.39.
|
||||
|
||||
---
|
||||
Advantages:
|
||||
- Full compatibility with third-party software
|
||||
- Qt5/Qt6 support
|
||||
- Broader library ecosystem
|
||||
|
||||
## 3. TQ BSP Scarthgap Analysis
|
||||
### Option 2: musl (for minimal/headless)
|
||||
|
||||
### 3.1 TQ BSP Version Information
|
||||
**Distro:** `spaetzle`
|
||||
**Target triplet:** `arm-tq-linux-musleabi`
|
||||
|
||||
**BSP Version:** `scarthgap.TQ.ARM.BSP.0006`
|
||||
musl has provided 64-bit `time_t` unconditionally on all 32-bit architectures
|
||||
since version 1.2.0 (February 2020).
|
||||
|
||||
From TQ documentation:
|
||||
| Component | Version | 2038 Status |
|
||||
|-----------|---------|-------------|
|
||||
| Linux Kernel | 6.6.y (LTS) | ✅ CONFIG_COMPAT_32BIT_TIME |
|
||||
| U-Boot | 2023.10 | ✅ (no time-critical operations) |
|
||||
| glibc | 2.38+ | ✅ 64-bit time_t |
|
||||
Advantages:
|
||||
- Smaller footprint
|
||||
- Simpler, no locale overhead
|
||||
|
||||
### 3.2 Machine Configuration
|
||||
Limitations:
|
||||
- Qt is blocked (`SKIP_RECIPE`)
|
||||
- Some third-party software may not build
|
||||
|
||||
For TQMa6UL-AB on MBa6ULx:
|
||||
```
|
||||
MACHINE = "tqma6ul-multi-mba6ulx"
|
||||
```
|
||||
## Kernel Support
|
||||
|
||||
Verified supported features with kernel 6.6:
|
||||
- RTC (hardware clock) - 2038 compliant with 64-bit time
|
||||
- Ethernet time stamping (PTP) - supported
|
||||
- File systems (ext4, ubifs) - 2038 ready
|
||||
The mainline kernel (6.x) provides:
|
||||
- 64-bit time variants of all relevant syscalls (`clock_gettime64`,
|
||||
`futex_time64`, etc.)
|
||||
- `CONFIG_COMPAT_32BIT_TIME=y` for backwards compatibility
|
||||
- ext4 timestamps beyond 2038
|
||||
|
||||
### 3.3 Comparison with Legacy PTXdist
|
||||
## Compliance Matrix
|
||||
|
||||
| Aspect | Old PTXdist BSP | Yocto Scarthgap | Impact |
|
||||
|--------|-----------------|-----------------|--------|
|
||||
| Kernel | 4.x or 5.4 | 6.6 LTS | Major upgrade |
|
||||
| glibc | 2.31 or older | 2.38+ | **64-bit time_t** |
|
||||
| time_t size | 32-bit | **64-bit** | **2038 compliant** |
|
||||
| Support End | Already ended | April 2028+ | Extended life |
|
||||
| Component | glibc (dumpling) | musl (spaetzle) | 2038-safe? |
|
||||
|-----------|-----------------|-----------------|-----------|
|
||||
| Kernel | Mainline 6.x | Mainline 6.x | ✅ |
|
||||
| C Library | glibc 2.39 | musl 1.2+ | ✅ |
|
||||
| Userspace | 64-bit time_t | 64-bit time_t | ✅ |
|
||||
| U-Boot | Mainline | Mainline | ✅ |
|
||||
| Qt6 | ✅ supported | ❌ blocked | ✅ (glibc) |
|
||||
|
||||
---
|
||||
## Verification
|
||||
|
||||
## 4. Verification Steps
|
||||
|
||||
### 4.1 Build-Time Verification
|
||||
|
||||
After building Yocto image, verify:
|
||||
After building, verify on the target:
|
||||
|
||||
```bash
|
||||
# Check glibc time_t size
|
||||
bitbake -e core-image-minimal | grep TIME_BITS
|
||||
echo "TIME_BITS=64" # Expected output
|
||||
|
||||
# Check kernel config
|
||||
bitbake -e virtual/kernel | grep CONFIG_COMPAT_32BIT_TIME
|
||||
# Should be "y"
|
||||
# Check time_t size (should print 8)
|
||||
cat << 'C' > /tmp/check_time.c
|
||||
#include <stdio.h>
|
||||
#include <time.h>
|
||||
int main() { printf("sizeof(time_t) = %zu\n", sizeof(time_t)); return 0; }
|
||||
C
|
||||
$CC /tmp/check_time.c -o /tmp/check_time && /tmp/check_time
|
||||
```
|
||||
|
||||
### 4.2 Runtime Verification
|
||||
## Risk Assessment
|
||||
|
||||
On target system:
|
||||
| Risk | Severity | Status |
|
||||
|------|----------|--------|
|
||||
| time_t overflow | Critical | ✅ Mitigated (both libc options) |
|
||||
| Filesystem timestamps | Medium | ✅ ext4 supports >2038 |
|
||||
| Network protocols (NTP) | Low | ✅ 64-bit aware |
|
||||
| Third-party binaries | Medium | ⚠️ Must verify pre-built binaries |
|
||||
| Qt5 compatibility | Medium | ⚠️ meta-qt5 not included, add manually |
|
||||
|
||||
```bash
|
||||
# Check time_t size in compiled binaries
|
||||
echo '#include <time.h>' | gcc -x c - -dM -E | grep TIME_BITS
|
||||
#define __TIME_BITS 64
|
||||
## References
|
||||
|
||||
# Test with date command (requires setting date beyond 2038)
|
||||
date -s "2039-01-01 12:00:00"
|
||||
date # Should display correctly
|
||||
```
|
||||
|
||||
### 4.3 Static Analysis
|
||||
|
||||
Check for 2038-sensitive APIs:
|
||||
```bash
|
||||
# Scan for deprecated time functions
|
||||
grep -r "time_t\|gettimeofday\|stime" ${IMAGE_ROOTFS}/usr/bin/
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 5. Risk Assessment
|
||||
|
||||
### 5.1 Without Migration (PTXdist)
|
||||
|
||||
| Risk | Probability | Impact | Mitigation |
|
||||
|------|-------------|--------|------------|
|
||||
| System failure after 2038 | Certain | Critical | None possible |
|
||||
| Security certificate issues | High | High | None possible |
|
||||
| Log corruption | Certain | Medium | None possible |
|
||||
| **Overall Risk** | **CRITICAL** | | **Immediate action required** |
|
||||
|
||||
### 5.2 With Migration (Yocto Scarthgap)
|
||||
|
||||
| Risk | Probability | Impact | Mitigation |
|
||||
|------|-------------|--------|------------|
|
||||
| 2038 compliance | Near-zero | None | Full support until 2106+ |
|
||||
| Migration effort | Medium | Medium | Documented procedure |
|
||||
| Testing required | Certain | Low | Comprehensive test plan |
|
||||
| **Overall Risk** | **LOW** | | **Recommended path** |
|
||||
|
||||
---
|
||||
|
||||
## 6. Conclusion
|
||||
|
||||
### 6.1 Findings
|
||||
|
||||
1. **Yocto Scarthgap (5.0) is 2038-compliant** for 32-bit ARM
|
||||
2. **TQ BSP scarthgap.TQ.ARM.BSP.0006** uses compliant kernel 6.6 + musl 1.2
|
||||
3. **Migration from PTXdist is mandatory** for systems operating beyond 2038
|
||||
4. **Offline mirror required** for software approval process
|
||||
|
||||
### 6.2 Recommendation
|
||||
|
||||
**APPROVED FOR IMPLEMENTATION**
|
||||
|
||||
Proceed with:
|
||||
1. Creating complete Yocto source mirror
|
||||
2. Generating license compliance documentation
|
||||
3. Obtaining software approval
|
||||
4. Deploying in corporate network
|
||||
|
||||
---
|
||||
|
||||
## 7. References
|
||||
|
||||
- [Y2038 Wiki](https://en.wikipedia.org/wiki/Year_2038_problem)
|
||||
- [Yocto Project 5.0 Release Notes](https://docs.yoctoproject.org/5.0/migration-guides/migration-5.0.html)
|
||||
- [glibc Y2038 Statement](https://sourceware.org/glibc/wiki/Y2038ProofnessDesign)
|
||||
- [TQ BSP Documentation](https://github.com/tq-systems/meta-tq/tree/scarthgap.TQ.ARM.BSP.0006)
|
||||
- [Kernel Y2038 Documentation](https://www.kernel.org/doc/html/latest/y2038.html)
|
||||
|
||||
---
|
||||
|
||||
**Approved by:** Siggi ⚙️
|
||||
**Date:** 2026-03-01
|
||||
**Classification:** Internal Use
|
||||
- [glibc Y2038 Design](https://sourceware.org/glibc/wiki/Y2038ProofnessDesign)
|
||||
- [musl time64](https://musl.libc.org/time64.html)
|
||||
- [Kernel Y2038 work](https://kernelnewbies.org/y2038)
|
||||
|
||||
@@ -224,7 +224,7 @@ cd ${UT_BASE}/ci-meta-tq
|
||||
export MACHINE=tqma6ul-multi-mba6ulx
|
||||
|
||||
# Fill mirror (downloads all git repos and tarballs)
|
||||
ci/fill_mirror build_ut imx
|
||||
ci/fill_mirror build_ut mainline
|
||||
|
||||
# Verify mirror contents
|
||||
ls -la /srv/yocto/premirror/
|
||||
|
||||
@@ -1,19 +1,15 @@
|
||||
Package|Version|Recipe|License|MilitaryUse|SourceLocation|Notes
|
||||
---|---|---|---|---|---|---
|
||||
linux-yocto|6.6.y|linux-yocto_6.6|GPL-2.0-only|Yes|sources/poky/meta/recipes-kernel/linux/|Kernel with 2038 support
|
||||
u-boot-tq|2023.10|u-boot-tq_2023.10|GPL-2.0+|Yes|sources/meta-tq/recipes-bsp/u-boot/|Bootloader
|
||||
glibc|2.38|glibc_2.38|LGPL-2.1+|Yes|sources/poky/meta/recipes-core/glibc/|C library with 64-bit time_t
|
||||
busybox|1.36.1|busybox_1.36|GPL-2.0-only|Yes|sources/poky/meta/recipes-core/busybox/|Core utilities
|
||||
systemd|254|systemd_254|LGPL-2.1+|Yes|sources/poky/meta/recipes-core/systemd/|Init system
|
||||
e2fsprogs|1.47.0|e2fsprogs_1.47|GPL-2.0+|Yes|sources/poky/meta/recipes-devtools/e2fsprogs/|Filesystem tools
|
||||
iptables|1.8.9|iptables_1.8|GPL-2.0+|Yes|sources/poky/meta/recipes-extended/iptables/|Firewall
|
||||
openssl|3.1.4|openssl_3.1|Apache-2.0|Yes|sources/poky/meta/recipes-connectivity/openssl/|Crypto library
|
||||
dropbear|2022.83|dropbear_2022.83|MIT|Yes|sources/poky/meta/recipes-core/dropbear/|SSH server
|
||||
util-linux|2.39|util-linux_2.39|GPL-2.0+|Yes|sources/poky/meta/recipes-core/util-linux/|System utilities
|
||||
gcc|13.2|gcc_13.2|GPL-3.0+|Review|sources/poky/meta/recipes-devtools/gcc/|Compiler suite
|
||||
binutils|2.40|binutils_2.40|GPL-3.0+|Review|sources/poky/meta/recipes-devtools/binutils/|Linker/assembler
|
||||
coreutils|9.3|coreutils_9.3|GPL-3.0+|Review|sources/poky/meta/recipes-core/coreutils/|Core GNU utils
|
||||
bash|5.2|bash_5.2|GPL-3.0+|Review|sources/poky/meta/recipes-extended/bash/|Shell
|
||||
imx-firmware|N/A|firmware-imx|NXP-SLA|Review|sources/meta-tq/recipes-bsp/firmware/|NXP firmware blobs
|
||||
imx-gpu-viv|6.4.11|imx-gpu-viv|Proprietary|Review|sources/meta-tq/recipes-graphics/|Vivante GPU driver
|
||||
linux-firmware|N/A|linux-firmware|Various|Review|sources/poky/meta/recipes-kernel/linux-firmware/|Various vendor blobs
|
||||
# License Table (Excel-compatible)
|
||||
|
||||
| Package | Version | License | 2038-Safe | Military Use | Notes |
|
||||
|---------|---------|---------|-----------|-------------|-------|
|
||||
| linux-mainline | 6.x | GPL-2.0-only | Yes | Yes | Mainline kernel |
|
||||
| u-boot-tq | 2023.10+ | GPL-2.0+ | Yes | Yes | Bootloader |
|
||||
| glibc | 2.39 | LGPL-2.1+ | Yes | Yes | C lib (dumpling-wayland) |
|
||||
| musl | 1.2+ | MIT | Yes | Yes | C lib (spaetzle) |
|
||||
| busybox | 1.36+ | GPL-2.0-only | Yes | Yes | spaetzle only |
|
||||
| systemd | 254+ | LGPL-2.1+ | Yes | Yes | dumpling-wayland only |
|
||||
| gcc | 13.4 | GPL-3.0 + RLE | Yes | Review | Runtime exception |
|
||||
| openssl | 3.x | Apache-2.0 | Yes | Yes | Crypto |
|
||||
| Qt6 | 6.x | GPL-2.0/LGPL-3.0 | Yes | Yes | dumpling-wayland only |
|
||||
| imx-firmware | N/A | NXP-EULA | N/A | Review | Proprietary |
|
||||
| linux-firmware | N/A | Various | N/A | Review | Vendor blobs |
|
||||
|
||||
@@ -1,18 +1,12 @@
|
||||
Package,Version,Recipe,License,LicenseFile,MilitaryUse,SourceLocation,Notes
|
||||
linux-yocto,6.6.y,linux-yocto_6.6,GPL-2.0-only,COPYING,Yes,sources/poky/meta/recipes-kernel/linux/,Kernel with 2038 support
|
||||
u-boot-tq,2023.10,u-boot-tq_2023.10,GPL-2.0+,Licenses/README,Yes,sources/meta-tq/recipes-bsp/u-boot/,Bootloader
|
||||
glibc,2.38,glibc_2.38,LGPL-2.1+,LICENSES,Yes,sources/poky/meta/recipes-core/glibc/,C library with 64-bit time_t
|
||||
busybox,1.36.1,busybox_1.36,GPL-2.0-only,LICENSE,Yes,sources/poky/meta/recipes-core/busybox/,Core utilities
|
||||
systemd,254,systemd_254,LGPL-2.1+,LICENSE.LGPL2.1,Yes,sources/poky/meta/recipes-core/systemd/,Init system
|
||||
e2fsprogs,1.47.0,e2fsprogs_1.47,GPL-2.0+,NOTICE,Yes,sources/poky/meta/recipes-devtools/e2fsprogs/,Filesystem tools
|
||||
iptables,1.8.9,iptables_1.8,GPL-2.0+,COPYING,Yes,sources/poky/meta/recipes-extended/iptables/,Firewall
|
||||
openssl,3.1.4,openssl_3.1,Apache-2.0,LICENSE,Yes,sources/poky/meta/recipes-connectivity/openssl/,Crypto library
|
||||
dropbear,2022.83,dropbear_2022.83,MIT,LICENSE,Yes,sources/poky/meta/recipes-core/dropbear/,SSH server
|
||||
util-linux,2.39,util-linux_2.39,GPL-2.0+,COPYING,Yes,sources/poky/meta/recipes-core/util-linux/,System utilities
|
||||
gcc,13.2,gcc_13.2,GPL-3.0+,COPYING3,Review,sources/poky/meta/recipes-devtools/gcc/,Compiler suite
|
||||
binutils,2.40,binutils_2.40,GPL-3.0+,COPYING3,Review,sources/poky/meta/recipes-devtools/binutils/,Linker/assembler
|
||||
coreutils,9.3,coreutils_9.3,GPL-3.0+,COPYING,Review,sources/poky/meta/recipes-core/coreutils/,Core GNU utils
|
||||
bash,5.2,bash_5.2,GPL-3.0+,COPYING,Review,sources/poky/meta/recipes-extended/bash/,Shell
|
||||
imx-firmware,N/A,firmware-imx,NXP-SLA,SLA,Review,sources/meta-tq/recipes-bsp/firmware/,NXP firmware blobs
|
||||
imx-gpu-viv,6.4.11,imx-gpu-viv,Proprietary,EULA,Review,sources/meta-tq/recipes-graphics/,Vivante GPU driver
|
||||
linux-firmware,N/A,linux-firmware,Various,LICENCE,Review,sources/poky/meta/recipes-kernel/linux-firmware/,Various vendor blobs
|
||||
Package,Version,License,2038-Safe,MilitaryUse,Notes
|
||||
linux-mainline,6.x,GPL-2.0-only,Yes,Yes,Mainline kernel with 64-bit time syscalls
|
||||
u-boot-tq,2023.10+,GPL-2.0+,Yes,Yes,Bootloader
|
||||
glibc,2.39,LGPL-2.1+,Yes,Yes,"C library (dumpling-wayland), 64-bit time_t"
|
||||
musl,1.2+,MIT,Yes,Yes,"C library (spaetzle), 64-bit time_t"
|
||||
busybox,1.36+,GPL-2.0-only,Yes,Yes,Core utilities (spaetzle only)
|
||||
systemd,254+,LGPL-2.1+,Yes,Yes,Init system (dumpling-wayland only)
|
||||
gcc,13.4,GPL-3.0 + Runtime Exception,Yes,Review,Compiler – runtime exception covers compiled code
|
||||
openssl,3.x,Apache-2.0,Yes,Yes,Crypto library
|
||||
Qt6,6.x,GPL-2.0 / LGPL-3.0,Yes,Yes,GUI framework (dumpling-wayland only)
|
||||
imx-firmware,N/A,NXP-EULA,N/A,Review,NXP proprietary firmware blobs
|
||||
linux-firmware,N/A,Various,N/A,Review,Various vendor firmware blobs
|
||||
|
||||
|
@@ -48,7 +48,7 @@ Download as CSV: [license-table-template.csv](license-table-template.csv)
|
||||
| Package Name | Version | License (SPDX) | License File | Source Location | Military Use | Notes |
|
||||
|--------------|---------|----------------|--------------|-----------------|--------------|-------|
|
||||
| linux-yocto | 6.6.y | GPL-2.0-only | COPYING | sources/poky-scarthgap/meta/recipes-kernel/linux/ | ✅ Yes | Kernel with 2038 support |
|
||||
| glibc | 2.38+ | LGPL-2.1-or-later | LICENSES | sources/poky-scarthgap/meta/recipes-core/glibc/ | ✅ Yes | 64-bit time_t |
|
||||
| glibc | 2.39 | LGPL-2.1-or-later | LICENSES | sources/poky-scarthgap/meta/recipes-core/glibc/ | ✅ Yes | 64-bit time_t |
|
||||
| busybox | 1.36.x | GPL-2.0-only | LICENSE | sources/poky-scarthgap/meta/recipes-core/busybox/ | ✅ Yes | Core utilities |
|
||||
| u-boot-tq | 2023.10 | GPL-2.0-or-later | Licenses/ | sources/meta-tq/recipes-bsp/u-boot/ | ✅ Yes | Bootloader |
|
||||
| [Additional packages] | | | | | | |
|
||||
|
||||
@@ -59,7 +59,7 @@
|
||||
|---------|---------|---------|----------|-----------------|
|
||||
| linux-yocto | 6.6.y | GPL-2.0-only | ✅ Yes | ✅ Yes |
|
||||
| u-boot-tq | 2023.10 | GPL-2.0+ | ✅ Yes | ✅ Yes |
|
||||
| glibc | 2.38+ | LGPL-2.1+ | ✅ Yes | ✅ Yes |
|
||||
| glibc | 2.39 | LGPL-2.1+ | ✅ Yes | ✅ Yes |
|
||||
| busybox | 1.36.x | GPL-2.0-only | ✅ Yes | ✅ Yes |
|
||||
| gcc | 13.x | GPL-3.0+ | ⚠️ Review* | ✅ Yes |
|
||||
|
||||
|
||||
Reference in New Issue
Block a user