2026-08-03 14:05 Version 0.2.2 Zertifikatserzeugung hinzugefügt.

This commit is contained in:
Dieter Lang 2026-08-03 14:06:28 +02:00
parent 140412ff78
commit b6d612411b
70 changed files with 18560 additions and 64 deletions

33
app/cert.pem Normal file
View file

@ -0,0 +1,33 @@
-----BEGIN CERTIFICATE-----
MIIFrTCCA5WgAwIBAgIUHsyQLF3lmVlsJSQ1m5siRIfpK40wDQYJKoZIhvcNAQEL
BQAwZjELMAkGA1UEBhMCREUxEDAOBgNVBAgMB0JhdmFyaWExEDAOBgNVBAcMB0tv
ZWRpdHoxHDAaBgNVBAoME2luZm9AbGFuZy1kaWV0ZXIuZGUxFTATBgNVBAMMDHJh
c3BpLUFGVVVTQjAeFw0yNjA4MDMxMjAxNTFaFw0yNzA4MDMxMjAxNTFaMGYxCzAJ
BgNVBAYTAkRFMRAwDgYDVQQIDAdCYXZhcmlhMRAwDgYDVQQHDAdLb2VkaXR6MRww
GgYDVQQKDBNpbmZvQGxhbmctZGlldGVyLmRlMRUwEwYDVQQDDAxyYXNwaS1BRlVV
U0IwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDFf9zqSYZdH+PWJJ2O
DUzrTYSZ8rnk8/CtGds4E//fxmOwQdycN5T/pf1XzqEdlDKC28bbCZxYfUdlIFm/
1bqUpArj5FiSCPUJiCayVBt20NkXfU9wXrqsgy4LzcUWBc2oIDfy937BJ5Bcid6M
8GeOzjzOVNlSGOkD+XrdrI8+Cf37aCRdA84sIpYScUz0mQYzWsrFipIW0osLhgZW
aBqJ1gWxWmAH7lT6iHXOirsou1ScUmPiKhcUfP8JRliQpRSv1fkLHTMnvHUqXNjJ
jVOgIJrtGSVPLOzNsb9fUjm336573iBhc0Y0UsYXX9GHiXueQVU9+OBSBVueoSIq
ZmaWsZlOyKR6NRfZgvdubX9+WeoLstjKOXRCPc4ePuevpt0ygPbVR+Dgc1Mr5JXr
EnfpPJholrenujlGhxA+uRIz169OLDJGat18O9mVfOA4OK9qTHbLE8Ymhvziwtjw
9MY2SMwKPMs2dTqsOe0WZIxUn5Y0A7CLYzBJDRDJpYvLRFYmXpVVHq1xbVYHxYbl
R1ot3eyO7oYF5wNooWa7d8o/w7pvMYR9a6lAubZN6ahcAFfsVti5KBIsGPlaQjQl
SdR3I5vQ+ODRv3QxID4nQNBYJuae6isNyA0q5j4hto5u3CzMv797eCwNWOj1SMye
tcIrw/JUyx+BKG6dIOb/Ailg2QIDAQABo1MwUTAdBgNVHQ4EFgQU12eIgmzTNg9E
PgYvVPdkmgRYJvEwHwYDVR0jBBgwFoAU12eIgmzTNg9EPgYvVPdkmgRYJvEwDwYD
VR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQsFAAOCAgEAdPRMgIVdS9uuk9WC+12K
eHtV4yCz7dN0+I+B3L2mbZdcgoUc5TeTkJJYdRUB/5jMLJwWQ7IALBqhkUEEKOpe
gi86/tGEsM9LPVlnw1mcTo9rFxiblwGMcMsSHImEgUaFeswg31olqsZSz3RLQ3XU
uCiijVqaL36xEJ0Qg/9kwqnslFCpmQa0yn3wk4Wb7ozKJS1LymSTfFRi/ifekbEM
QCpMeJjK7u5IJh77+OYdb1ldKuER6BKsqMhHpFQbHA/5Wj3nA20ohw32FuRCn4GY
Z8T/K9pPKpinFQGl62sw8iv+1o4HRQNRFgIxEkECTgRF7PpQMqz2J28BSQ6EMxxo
upheBd8Yl0CedJhtqkdcDW+s0yLBaWNndqwoIwwz/owQ9NqP/+/XNkK3N+fR8TEX
MRmQlqGgU7JSxA9dmMJh+lithJalzmAPEkQ6IvYCVL1TjOHJAvTV6Rx+Fvz0rtBv
v/JuxhBXCde+3UH6EGijFL8HmnJ1XaT3FOw0vNpvda2KOfwoEROQX7O5X3hIgdm5
zLMcrYgh0GFDvyMJyC4+UjlOyXCjoOeC2CCsoiGIce+sjRNOlY8yoMaW7Knz09nh
X9DOXbvvDyQznzoucQswna+vvzG3lzlKQa7MtC+yexikHzxhJ2DU1DDIf33di5YI
J0HYcdOoOhgy9L52nIAypBw=
-----END CERTIFICATE-----

29
app/config.json Normal file
View file

@ -0,0 +1,29 @@
{
"web_port": ":8080",
"ssl_cert": "cert.pem",
"ssl_key": "key.pem",
"i2c_bus": "1",
"ads1115_address_1": 72,
"ads1115_address_2": 73,
"name_adc1_ch0": "23cm",
"factor_adc1_ch0": 2.0,
"name_adc1_ch1": "13 cm",
"factor_adc1_ch1": 2.0,
"name_adc1_ch2": "9 cm",
"factor_adc1_ch2": 2.0,
"name_adc1_ch3": "6 cm",
"factor_adc1_ch3": 2.0,
"name_adc2_ch0": "3 cm",
"factor_adc2_ch0": 2.0,
"relais_pins": [
{"id": 1, "name": "Relais 1 (230V Hauptschalter)", "gpio": "GPIO12"},
{"id": 2, "name": "USB-Relais 1 (Reserve)", "gpio": "USB_CH1"},
{"id": 3, "name": "USB-Relais 2 23 cm", "gpio": "USB_CH2"},
{"id": 4, "name": "USB-Relais 3 13 cm", "gpio": "USB_CH3"},
{"id": 5, "name": "USB-Relais 4 9 cm", "gpio": "USB_CH4"},
{"id": 6, "name": "USB-Relais 5 6 cm", "gpio": "USB_CH5"},
{"id": 7, "name": "USB-Relais 6 3 cm", "gpio": "USB_CH6"},
{"id": 8, "name": "USB-Relais 7 (Reserve)", "gpio": "USB_CH7"},
{"id": 9, "name": "USB-Relais 8 (Reserve)", "gpio": "USB_CH8"}
]
}

36
app/install.sh Executable file
View file

@ -0,0 +1,36 @@
#!/bin/bash
set -e
echo "🚀 Starte automatische Einrichtung des Spannung-Monitors..."
# Pfade und Benutzer auf dem aktuellen Pi ermitteln
PI_DIR=$(pwd)
PI_USER=$(whoami)
# Architektur des Betriebssystems prüfen
ARCH=$(uname -m)
if [ "$ARCH" = "aarch64" ]; then
BINARY="spannung-arm64"
echo "🎯 64-Bit OS erkannt. Nutze: $BINARY"
else
BINARY="spannung-arm32_7"
echo "🎯 32-Bit OS erkannt. Nutze: $BINARY"
fi
# Platzhalter in der Service-Datei direkt auf dem Pi ersetzen
sed -i "s|{{TARGET_DIR}}|$PI_DIR|g" spannung.service
sed -i "s|{{TARGET_USER}}|$PI_USER|g" spannung.service
sed -i "s|{{BINARY}}|$BINARY|g" spannung.service
echo "📝 Service-Datei wurde erfolgreich für dieser Pi konfiguriert."
# Service in das Systemverzeichnis kopieren und aktivieren
echo "⚙️ Kopiere Service-Datei nach /etc/systemd/system/..."
sudo cp spannung.service /etc/systemd/system/spannung.service
sudo systemctl daemon-reload
sudo systemctl enable spannung.service
echo "▶️ Starte den Dienst..."
sudo systemctl restart spannung.service
echo "✅ Fertig! Der Spannung-Monitor läuft und der Autostart ist aktiv."

52
app/key.pem Normal file
View file

@ -0,0 +1,52 @@
-----BEGIN PRIVATE KEY-----
MIIJQgIBADANBgkqhkiG9w0BAQEFAASCCSwwggkoAgEAAoICAQDFf9zqSYZdH+PW
JJ2ODUzrTYSZ8rnk8/CtGds4E//fxmOwQdycN5T/pf1XzqEdlDKC28bbCZxYfUdl
IFm/1bqUpArj5FiSCPUJiCayVBt20NkXfU9wXrqsgy4LzcUWBc2oIDfy937BJ5Bc
id6M8GeOzjzOVNlSGOkD+XrdrI8+Cf37aCRdA84sIpYScUz0mQYzWsrFipIW0osL
hgZWaBqJ1gWxWmAH7lT6iHXOirsou1ScUmPiKhcUfP8JRliQpRSv1fkLHTMnvHUq
XNjJjVOgIJrtGSVPLOzNsb9fUjm336573iBhc0Y0UsYXX9GHiXueQVU9+OBSBVue
oSIqZmaWsZlOyKR6NRfZgvdubX9+WeoLstjKOXRCPc4ePuevpt0ygPbVR+Dgc1Mr
5JXrEnfpPJholrenujlGhxA+uRIz169OLDJGat18O9mVfOA4OK9qTHbLE8Ymhvzi
wtjw9MY2SMwKPMs2dTqsOe0WZIxUn5Y0A7CLYzBJDRDJpYvLRFYmXpVVHq1xbVYH
xYblR1ot3eyO7oYF5wNooWa7d8o/w7pvMYR9a6lAubZN6ahcAFfsVti5KBIsGPla
QjQlSdR3I5vQ+ODRv3QxID4nQNBYJuae6isNyA0q5j4hto5u3CzMv797eCwNWOj1
SMyetcIrw/JUyx+BKG6dIOb/Ailg2QIDAQABAoICAAfbm/8IWNu4qph5EXm25sIP
7gAwC5xj5kYE2teC2DHfk1TOcggXIAsB4DAPrRJftJjHRMSvP7S3m1EXNervhoJm
enZxveJlj9ZGv/9lYEhca97G4hO++R9nArx+feJv7axMR92XYkguGkzMQXoLEJu6
cenlr1XYXuEFGpHaTUKzJBNOI/A9eAUChUULk/vBYOFHMf0lE8Xrr5OQTA1BDBlC
1iwlw99c6K2lI0bJ90NaHLYxgv7bHNr4VC9ayKhMoSOT2FpMWZ4xndnHIur2AAdF
dNSNJRJe37cZZNtWiqxZrngIMPKfowHu7ym76rrBShVUVR9nmQk6ZFhN4e2c8GTp
m/re2U10Hv4+sFGDQk4s0HbmOwp2I1LUDEfXQy47edIKaP3Q7uTgpGEr/KAk6WWE
DqfDAbu4XAJOiUYSMxyHqvJ/7IavB9Rcy49xeO1dEMELm3+SIlAWRzOLRp89FYn9
iAZQJaotGriJ71mjCbx8n44Ke1/mR6hQvT4w81h1n1PW+S5abPBYnibzA2A0wsgO
yFKubY9tXo2pBokpceWWIo6WhClzywBGcdNrwGPdvq70ijgXtgoeVVcMXuH1bsYN
bFuodCVvcdY+8ZbPMSG9Hm182t+7vf2GhS6K84t3Tm8krIJq/BWNd/ng8z1ojBnc
/l2ureNLqusHsLNKANJnAoIBAQDkNfSixbZ5zC2RkqibTF5zqVKbXao5usKI+4I2
+CKOzbzxBf/p0liDB5Gi5TCzfBkxJYssvVDG3P7BAOTQPAlJwLeZ286GKDZcU8ol
C5YT7c7bYzORfHGzUDWTwu6jGHJa1NWb9bZFnIs/pcGvwRP28akmWGXUe5JjHHlj
hyQB2xXaF3Fc+N5ZmsS/pZsP44WjGYd78FsZ+T5s2NyJqvzFsVAcf+KgudKOutbG
NNXsztC3f+eWvreB4MhyhajHQakPWUVvqUboUieQKz2OXNFcRrzWJrp7d90i0iwm
UIytLHVyG7Z2ugaPUZc0fRL9Sc0c2zpiWRNFjLwqxLGp25jHAoIBAQDdjIo5GJxr
L/MOJ1eoS6BnMkUTKr9GlNUiVHYUsmL1ynzBd/QnWc2kR7GWSnZg/gdfbGcka0WD
zrDef5uLWlc/SxrUmwkLY5lcj3EEDFEMizSdDl7x+ikDEPuuA6X2S+xfQxBJEJKE
2LorbYPkUyECkevpCSyDT8bfmmOUe/9538yZAkzYmfEHNsN5HAcyT3Pk+qXI3BNF
A/oKg710CBapZE6kbpdcZBvNNkmTfcWVnfN+ou4k+SXpqwOg23gDEOqhNCdpn20I
yNLZk5mOU9JdPM+LOA6Diobm8SHHmxAYuYKjbr6GxXl0XqKqBWLNFjM/owoCUbKb
Cz3T2N3kfdlfAoIBAEX91l3lzaVlXcR7+oJG1eEbWV6VR5QVF3zzxmgdilvJ9dzm
Pir0fHkTZTNUn68srH1KSnkaRx/2v5tqLsM+5opcNPNXWuwCgUmn2SOrfgf2s67N
qg9A345jV0tOSepzoP8Cr9D5d0G6VWrb55+D1B+01nAQRIr6q1cCcKh51i1LiFQv
RHGDUo6gzR8KJ5ij62Sue8MjYI2CyAaSLHF8o7HuQ+e5wUQSOeXUn/KCWeobNCBT
di/hpl6LFm8pVy5lkPhIJOeuPzUZnVC2MlbrWLq4Z0o27pLXnFcFpszJf5vNOugY
X8niHAjwuTM7+Qr+C46CHlHzh9mY5E0prmOuGhkCggEAalZqgb0uVsRNBR4dFMo3
01BtlyWNaXNGWZPwmT6GATOPbc0Fg123NoKy2lAjQaqsH0EIwJI8a2dpvWHCZsCV
3+tMlX9UeAL2OVcgB7FhtYObXUboi3xm8vHT21Ik9nK6oX6u8mLh8KGVugJ2q8C6
t2ESumeM1foUmn6gDUT2+qhQq6BPAifhaHUAncC2M4+vMNideisnlJi0CxfwdyDq
v6NFm+b4/3+NWJIV/pT/oTCPDtllNJnheKZ8t1if4djcxUMjJ689xlmd2pDdw1K4
RchKVagyTzDOT0qtzADBWRyxd4BQMp/WC+TgbnrnUUi2kHTQ+Qv9ji13H5eX6XP+
QQKCAQEAv/nXQ8ObmbsD1ME4k0tIbVjDl1eo1VedXp0LPJZoPLZsNR+z6OK+vyJr
oylPcOkQDDF+aC9DfFUoiCWAXTQcOSq9FdlbB3c5pY5GdB28+WDcjgZtXkZnBEg7
sX1Vow/RMKUkF0y2aZcgpVEU4Zzty1SiawikWpAm8M+vCMEqrbI7JGd2mk+LWFkS
6luqb4CoHrZaAHd5jzymxV1nD02oUfKSWaBKDhG/U1NVCpMFFbjLLBHgI4pIbIRY
vbfGnFVr9ZCRxW0XjYo87RnjHDZ9jM6P9OYLYLHU8eFNUQREt8tQb5+01vnu+j7E
wMZJGy1YoqzobW46COzNkMTgm3Y2tQ==
-----END PRIVATE KEY-----

BIN
app/spannung-arm32_7 Executable file

Binary file not shown.

BIN
app/spannung-arm64 Executable file

Binary file not shown.

26
app/spannung.service Normal file
View file

@ -0,0 +1,26 @@
[Unit]
Description=Spannung Control Service
After=network-online.target i2c.service
Wants=network-online.target
StartLimitIntervalSec=60s
StartLimitBurst=3
[Service]
Type=simple
# Vorprüfung ALS ROOT ausführen
ExecStartPre=/bin/bash -c 'for i in {1..5}; do /usr/sbin/i2cdetect -y 1 | grep -q 48 && /usr/sbin/i2cdetect -y 1 | grep -q 49 && exit 0; sleep 2; done; exit 1'
ExecStart={{TARGET_DIR}}/{{BINARY}}
WorkingDirectory={{TARGET_DIR}}
User={{TARGET_USER}}
Restart=on-failure
RestartSec=5s
# KORREKTUR: Verhindert, dass STRG+C über SSH den Dienst beim Beenden des Logs killt
KillMode=process
StandardOutput=append:{{TARGET_DIR}}/spannung.log
StandardError=append:{{TARGET_DIR}}/spannung.log
[Install]
WantedBy=multi-user.target

10
app/version.json Normal file
View file

@ -0,0 +1,10 @@
{
"version": "0.2.2",
"build_date": "03.08.2026 um 14;01",
"description": "Messung von zwei Spannung und Steuerung von Relais",
"features": [
"ADS1115-Abfrage über go-i2c",
"Weboberfläche mit Steuerbuttons für Reilais",
"Definiton der GPIO in der config.json"
]
}

97
app/web/server.go Normal file
View file

@ -0,0 +1,97 @@
package web
import (
"encoding/json"
"html/template"
"net/http"
"strconv"
)
type RelaisData struct {
ID int `json:"id"`
Name string `json:"name"`
State bool `json:"state"`
}
type StatusResponse struct {
V1 float64 `json:"v1"`
V2 float64 `json:"v2"`
V3 float64 `json:"v3"`
V4 float64 `json:"v4"`
V5 float64 `json:"v5"`
Names []string `json:"names"` // Neu: Sendet die Namen als Array mit
Relais []RelaisData `json:"relais"`
Version string `json:"version"`
BuildDate string `json:"build_date"`
}
type Server struct {
port string
readVoltFunc func(channel int) float64
toggleFunc func(id int)
getRelais func() []RelaisData
versionFunc func() (string, string)
getNamesFunc func() []string // Neu hinzugefügt
}
func NewServer(port string, readVolt func(int) float64, toggle func(int), getRelais func() []RelaisData, getVersion func() (string, string), getNames func() []string) *Server {
return &Server{
port: port,
readVoltFunc: readVolt,
toggleFunc: toggle,
getRelais: getRelais,
versionFunc: getVersion,
getNamesFunc: getNames, // Neu hinzugefügt
}
}
func (s *Server) Start(certFile, keyFile string) error {
http.HandleFunc("/", s.handleIndex)
http.HandleFunc("/api/status", s.handleAPIStatus)
http.HandleFunc("/api/toggle", s.handleAPIToggle)
return http.ListenAndServeTLS(s.port, certFile, keyFile, nil)
}
func (s *Server) handleIndex(w http.ResponseWriter, r *http.Request) {
ver, date := s.versionFunc()
tmpl, err := template.ParseFiles("web/static/index.html")
if err != nil {
http.Error(w, "Template nicht gefunden: "+err.Error(), http.StatusInternalServerError)
return
}
data := StatusResponse{
Names: s.getNamesFunc(), // Namen für das erste Rendern bereitstellen
Relais: s.getRelais(),
Version: ver,
BuildDate: date,
}
tmpl.Execute(w, data)
}
func (s *Server) handleAPIStatus(w http.ResponseWriter, r *http.Request) {
w.Header().Set("Content-Type", "application/json")
ver, date := s.versionFunc()
resp := StatusResponse{
V1: s.readVoltFunc(0),
V2: s.readVoltFunc(1),
V3: s.readVoltFunc(2),
V4: s.readVoltFunc(3),
V5: s.readVoltFunc(4),
Names: s.getNamesFunc(),
Relais: s.getRelais(),
Version: ver,
BuildDate: date,
}
json.NewEncoder(w).Encode(resp)
}
func (s *Server) handleAPIToggle(w http.ResponseWriter, r *http.Request) {
idStr := r.URL.Query().Get("id")
id, err := strconv.Atoi(idStr)
if err == nil {
s.toggleFunc(id)
}
s.handleAPIStatus(w, r)
}

148
app/web/static/index.html Normal file
View file

@ -0,0 +1,148 @@
<!DOCTYPE html>
<html>
<head>
<title>Funkstation Steuerung</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<style>
body { font-family: 'Segoe UI', Arial, sans-serif; text-align: center; background: #0f172a; color: #f8fafc; padding: 20px; }
/* Maximale Breite erhöht, um Platz für das zweispaltige Layout zu bieten */
.container { max-width: 1000px; margin: 0 auto; }
/* Das neue Haupt-Layout: Links Relais, rechts Spannungen */
.main-layout {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 20px;
align-items: start;
text-align: left;
}
/* Spalten-Container für korrekte Ausrichtung */
.layout-col {
display: flex;
flex-direction: column;
}
.card { background: #1e293b; padding: 20px; margin: 15px 0; border-radius: 12px; box-shadow: 0 4px 6px -1px rgba(0,0,0,0.3); border: 1px solid #334155; text-align: center; }
.val { font-size: 2.5em; color: #38bdf8; font-weight: bold; font-family: monospace; }
.grid { display: grid; grid-template-columns: 1fr; gap: 12px; margin-top: 15px; }
.btn { width: 100%; padding: 14px; font-size: 1.1em; border: none; border-radius: 8px; cursor: pointer; font-weight: bold; transition: background 0.2s, transform 0.1s; color: white; }
.btn:active { transform: scale(0.98); }
.btn-on { background: #ef4444; }
.btn-on:hover { background: #dc2626; }
.btn-off { background: #10b981; }
.btn-off:hover { background: #059669; }
.footer-nav { margin-top: 25px; font-size: 0.9em; color: #64748b; clear: both; }
/* Responsive Anpassung: Schaltet auf Smartphones automatisch untereinander um */
@media (max-width: 768px) {
.main-layout { grid-template-columns: 1fr; gap: 0; }
}
</style>
</head>
<body>
<div class="container">
<h1>Funkstations-Monitor</h1>
<div class="main-layout">
<!-- LINKE SPALTE: Relaissteuerung -->
<div class="layout-col">
<div class="card">
<h3>Relaissteuerung</h3>
<div class="grid">
{{range .Relais}}
<button class="btn btn-off" id="relais-btn-{{.ID}}" onclick="toggleRelais({{.ID}})">
{{.Name}}: Laden...
</button>
{{end}}
</div>
</div>
</div>
<!-- RECHTE SPALTE: Spannungsanzeigen -->
<div class="layout-col">
<div class="card">
<h3>{{index .Names 0}}</h3>
<div class="val" id="v1">--.-- V</div>
</div>
<div class="card">
<h3>{{index .Names 1}}</h3>
<div class="val" id="v2">--.-- V</div>
</div>
<div class="card">
<h3>{{index .Names 2}}</h3>
<div class="val" id="v3">--.-- V</div>
</div>
<div class="card">
<h3>{{index .Names 3}}</h3>
<div class="val" id="v4">--.-- V</div>
</div>
<div class="card">
<h3>{{index .Names 4}}</h3>
<div class="val" id="v5">--.-- V</div>
</div>
</div>
</div>
<div class="footer-nav">
Live-Aktualisierung aktiv <br>
<span style="font-size: 0.8em; color: #475569; margin-top: 5px; display: block;">
Version {{.Version}} ({{.BuildDate}})
</span>
</div>
</div>
<script>
function updateUI(data) {
document.getElementById('v1').innerText = data.v1.toFixed(2) + ' V';
document.getElementById('v2').innerText = data.v2.toFixed(2) + ' V';
document.getElementById('v3').innerText = data.v3.toFixed(2) + ' V';
document.getElementById('v4').innerText = data.v4.toFixed(2) + ' V';
document.getElementById('v5').innerText = data.v5.toFixed(2) + ' V';
data.relais.forEach(r => {
const btn = document.getElementById(`relais-btn-${r.id}`);
if (btn) {
if (r.name && r.name.toLowerCase().includes('reserve')) {
btn.className = 'btn btn-off';
btn.innerText = `${r.name}: GESPERRT`;
btn.disabled = true;
btn.style.opacity = '0.3';
btn.style.cursor = 'not-allowed';
return;
}
if (r.state) {
btn.className = 'btn btn-on';
btn.innerText = `${r.name}: AKTIV (Ausschalten)`;
} else {
btn.className = 'btn btn-off';
btn.innerText = `${r.name}: INAKTIV (Einschalten)`;
}
}
});
}
function loadStatus() {
fetch('/api/status')
.then(response => response.json())
.then(data => updateUI(data))
.catch(err => console.error('Fehler beim Laden des Status:', err));
}
function toggleRelais(id) {
fetch(`/api/toggle?id=${id}`)
.then(response => response.json())
.then(data => updateUI(data))
.catch(err => console.error('Fehler beim Schalten:', err));
}
loadStatus();
setInterval(loadStatus, 2000);
</script>
</body>
</html>

100
build.sh
View file

@ -14,7 +14,7 @@ else
DATE=$(date +'%Y-%m-%d')
fi
echo "🔧 Baue Spannung-Monitor v$VERSION ($DATE) für Raspberry Pi 3 & 4"
echo "🔧 Baue Spannung-Monitor $VERSION ($DATE) für Raspberry Pi 3 & 4"
# KORREKTUR: Einfache Anführungszeichen fangen die Leerzeichen für den Go-Linker ab
LDFLAGS="-X 'main.Version=$VERSION' -X 'main.BuildDate=$DATE'"
@ -25,14 +25,22 @@ mkdir app
# --- BUILD-PROZESS MIT CGO ---
# Definiere die Pfade zu den lokalen sysroots
SYSROOT_64="$USER_HOME/spannung/sysroot-arm64"
SYSROOT_32="$USER_HOME/spannung/sysroot-arm32"
# 1. Für 64-Bit Raspberry Pi (Standard bei Pi 4 und neueren Pi 3 OS)
echo "📦 Kompiliere für ARM64 (64-Bit)..."
CGO_ENABLED=1 GOOS=linux GOARCH=arm64 CC=aarch64-linux-gnu-gcc go build -ldflags "$LDFLAGS" -o ./app/spannung-arm64 .
CGO_LDFLAGS="-L$SYSROOT_64/lib/aarch64-linux-gnu -L$SYSROOT_64/usr/lib/aarch64-linux-gnu -Wl,-rpath-link=$SYSROOT_64/lib/aarch64-linux-gnu -Wl,-rpath-link=$SYSROOT_64/usr/lib/aarch64-linux-gnu" \
CGO_ENABLED=1 GOOS=linux GOARCH=arm64 CC=aarch64-linux-gnu-gcc \
go build -ldflags "$LDFLAGS" -o ./app/spannung-arm64 .
echo "✅ Fertig gebaut: ./app/spannung-arm64"
# 2. Für 32-Bit Raspberry Pi (Klassisch für Pi 3 / ältere OS)
echo "📦 Kompiliere für ARM32 v7 (32-Bit)..."
CGO_ENABLED=1 GOOS=linux GOARCH=arm GOARM=7 CC=arm-linux-gnueabihf-gcc go build -ldflags "$LDFLAGS" -o ./app/spannung-arm32_7 .
CGO_LDFLAGS="-L$SYSROOT_32/lib/arm-linux-gnueabihf -L$SYSROOT_32/usr/lib/arm-linux-gnueabihf -Wl,-rpath-link=$SYSROOT_32/lib/arm-linux-gnueabihf -Wl,-rpath-link=$SYSROOT_32/usr/lib/arm-linux-gnueabihf" \
CGO_ENABLED=1 GOOS=linux GOARCH=arm GOARM=7 CC=arm-linux-gnueabihf-gcc \
go build -ldflags "$LDFLAGS" -o ./app/spannung-arm32_7 .
echo "✅ Fertig gebaut: ./app/spannung-arm32_7"
# Dateiberechtigungen im Zielordner setzen
@ -43,43 +51,79 @@ cp config.json ./app/
cp version.json ./app/
cp web ./app/ -r
# 3. Die Service-Datei generieren
# Ein kleiner Bash-Wrapper in ExecStart sorgt dafür, dass automatisch das richtige Binary gestartet wird!
# 3. Die Service-Datei mit Platzhaltern generieren
cat << 'EOF' > ./app/spannung.service
# ==============================================================================
# KURZANLEITUNG ZUR INSTALLATION UND VERWALTUNG
# ==============================================================================
# 1. Datei kopieren nach: /etc/systemd/system/spannung.service
# 2. Systemd neu laden: sudo systemctl daemon-reload
# 3. Autostart aktivieren: sudo systemctl enable spannung.service
# 4. Dienst starten: sudo systemctl start spannung.service
# ==============================================================================
[Unit]
Description=Spannung Control Service
After=network-online.target i2c.service
Wants=network-online.target
StartLimitIntervalSec=0
[Service]
Type=simple
ExecStartPre=/bin/bash -c 'for i in {1..10}; do i2cdetect -y 1 | grep -E "40:" | grep -q -E "\b48\b" && i2cdetect -y 1 | grep -E "40:" | grep -q -E "\b49\b" && exit 0; echo "warte auf ADS1115 Module..."; sleep 2; done; exit 1'
# Direkt der Pfad zur nativ gebauten Binärdatei ohne Bash-Weiche
ExecStart=TARGET_DIR/spannung-aktiv
WorkingDirectory=TARGET_DIR
User=TARGET_USER
Restart=on-failure
RestartSec=5s
StartLimitIntervalSec=60s
StartLimitBurst=3
StandardOutput=append:TARGET_DIR/spannung.log
StandardError=append:TARGET_DIR/spannung.log
[Service]
Type=simple
# Vorprüfung ALS ROOT ausführen
ExecStartPre=/bin/bash -c 'for i in {1..5}; do /usr/sbin/i2cdetect -y 1 | grep -q 48 && /usr/sbin/i2cdetect -y 1 | grep -q 49 && exit 0; sleep 2; done; exit 1'
ExecStart={{TARGET_DIR}}/{{BINARY}}
WorkingDirectory={{TARGET_DIR}}
User={{TARGET_USER}}
Restart=on-failure
RestartSec=5s
# KORREKTUR: Verhindert, dass STRG+C über SSH den Dienst beim Beenden des Logs killt
KillMode=process
StandardOutput=append:{{TARGET_DIR}}/spannung.log
StandardError=append:{{TARGET_DIR}}/spannung.log
[Install]
WantedBy=multi-user.target
EOF
echo "📝 Service-Datei mit automatischer Architektur-Erkennung generiert"
# 4. Ein automatisches Installations-Skript für den Pi im app-Ordner erstellen
cat << 'EOF' > ./app/install.sh
#!/bin/bash
set -e
echo "🚀 Starte automatische Einrichtung des Spannung-Monitors..."
# Pfade und Benutzer auf dem aktuellen Pi ermitteln
PI_DIR=$(pwd)
PI_USER=$(whoami)
# Architektur des Betriebssystems prüfen
ARCH=$(uname -m)
if [ "$ARCH" = "aarch64" ]; then
BINARY="spannung-arm64"
echo "🎯 64-Bit OS erkannt. Nutze: $BINARY"
else
BINARY="spannung-arm32_7"
echo "🎯 32-Bit OS erkannt. Nutze: $BINARY"
fi
# Platzhalter in der Service-Datei direkt auf dem Pi ersetzen
sed -i "s|{{TARGET_DIR}}|$PI_DIR|g" spannung.service
sed -i "s|{{TARGET_USER}}|$PI_USER|g" spannung.service
sed -i "s|{{BINARY}}|$BINARY|g" spannung.service
echo "📝 Service-Datei wurde erfolgreich für dieser Pi konfiguriert."
# Service in das Systemverzeichnis kopieren und aktivieren
echo "⚙️ Kopiere Service-Datei nach /etc/systemd/system/..."
sudo cp spannung.service /etc/systemd/system/spannung.service
sudo systemctl daemon-reload
sudo systemctl enable spannung.service
echo "▶️ Starte den Dienst..."
sudo systemctl restart spannung.service
echo "✅ Fertig! Der Spannung-Monitor läuft und der Autostart ist aktiv."
EOF
chmod +x ./app/install.sh
echo "📝 Service-Datei und install.sh generiert."
echo "📂 Inhalt des fertigen app-Verzeichnisses:"
ls -la app

View file

@ -1,5 +1,7 @@
{
"web_port": ":8080",
"ssl_cert": "cert.pem",
"ssl_key": "key.pem",
"i2c_bus": "1",
"ads1115_address_1": 72,
"ads1115_address_2": 73,

View file

@ -16,40 +16,37 @@ SERVICE_NAME="spannung.service"
echo "🚀 Starte Deployment auf $PI_USER@$PI_HOST..."
# 1. Zielverzeichnis auf dem Pi erstellen
ssh "$PI_USER@$PI_HOST" "mkdir -p \"\$HOME/$TARGET_DIR\""
# --- ZERTIFIKATE ERZEUGEN ---
# Prüfen, ob die Zertifikate bereits im lokalen app-Ordner existieren
if [ ! -f ./app/cert.pem ] || [ ! -f ./app/key.pem ]; then
echo "🔐 Generiere selbstsignierte SSL-Zertifikate für HTTPS..."
openssl req -x509 -newkey rsa:4096 -nodes \
-keyout ./app/key.pem \
-out ./app/cert.pem \
-days 365 \
-subj "/C=DE/ST=Bavaria/L=Koeditz/O=info@lang-dieter.de/CN=$PI_HOST" 2>/dev/null
echo "✅ SSL-Zertifikate lokal in ./app/ erstellt."
else
echo "🔒 Bestehende SSL-Zertifikate in ./app/ gefunden. Werden wiederverwendet."
fi
# 2. Quellcode, Webseiten und Service-Datei zum Pi kopieren
scp -r * "$PI_USER@$PI_HOST:$TARGET_DIR/"
# 1. Altes Zielverzeichnis auf dem Pi löschen und frisch erstellen
ssh "$PI_USER@$PI_HOST" "rm -rf \"\$HOME/$TARGET_DIR\" && mkdir -p \"\$HOME/$TARGET_DIR\""
# 3. Build und Systemd-Setup direkt auf dem Pi ausführen
# 2. Den INHALT des lokal fertig gebauten 'app'-Ordners (inkl. Zertifikate) zum Pi kopieren
echo "📦 Übertrage vorkompilierte Anwendung, Webseiten und Zertifikate..."
scp -r ./app/* "$PI_USER@$PI_HOST:$TARGET_DIR/"
# 3. Das Setup-Skript direkt auf dem Pi ausführen
ssh -t "$PI_USER@$PI_HOST" "
cd \${HOME}/${TARGET_DIR}
echo \"📦 Kompiliere Anwendung nativ auf dem Raspberry Pi...\"
# Korrigierter Go-Build für Modul-Projekte (.)
go build -o spannung-aktiv .
REAL_PATH=\$(pwd)
REAL_USER=\$(whoami)
echo \"🔧 Konfiguriere Systemd-Dienst...\"
# Windows-Zeilenumbrüche entfernen
# Windows-Zeilenumbrüche zur Sicherheit entfernen
sed -i 's/\r//' ./install.sh
sed -i 's/\r//' ./${SERVICE_NAME}
# Platzhalter durch reale Systemwerte ersetzen
sed -i \"s|TARGET_DIR|\$REAL_PATH|g\" ./${SERVICE_NAME}
sed -i \"s|TARGET_USER|\$REAL_USER|g\" ./${SERVICE_NAME}
# ExecStart auf die neu gebaute Binärdatei umbiegen (Anführungszeichen korrigiert)
sed -i \"s|exec .*|exec \$REAL_PATH/spannung-aktiv'|g\" ./${SERVICE_NAME}
# Service-Datei ins Systemverzeichnis kopieren und Dienst starten
sudo cp ./${SERVICE_NAME} /etc/systemd/system/
sudo systemctl daemon-reload
sudo systemctl enable ${SERVICE_NAME}
sudo systemctl restart ${SERVICE_NAME}
# Das Installationsskript auf dem Pi ausführen
./install.sh
"
echo "✅ Deployment erfolgreich abgeschlossen! Zeige Live-Logs (Beenden mit STRG+C)..."

73
install.sh Normal file
View file

@ -0,0 +1,73 @@
# 3. Die Service-Datei mit Platzhaltern generieren
cat << 'EOF' > ./app/spannung.service
[Unit]
Description=Spannung Control Service
After=network-online.target i2c.service
Wants=network-online.target
StartLimitIntervalSec=0
[Service]
Type=simple
ExecStartPre=/bin/bash -c 'for i in {1..10}; do i2cdetect -y 1 | grep -E "40:" | grep -q -E "\b48\b" && i2cdetect -y 1 | grep -E "40:" | grep -q -E "\b49\b" && exit 0; echo "warte auf ADS1115 Module..."; sleep 2; done; exit 1'
# Diese Platzhalter werden beim Installieren auf dem Pi automatisch ersetzt:
ExecStart={{TARGET_DIR}}/{{BINARY}}
WorkingDirectory={{TARGET_DIR}}
User={{TARGET_USER}}
Restart=on-failure
RestartSec=5s
StartLimitIntervalSec=60s
StartLimitBurst=3
StandardOutput=append:{{TARGET_DIR}}/spannung.log
StandardError=append:{{TARGET_DIR}}/spannung.log
[Install]
WantedBy=multi-user.target
EOF
# 4. Ein automatisches Installations-Skript für den Pi im app-Ordner erstellen
cat << 'EOF' > ./app/install.sh
#!/bin/bash
set -e
echo "🚀 Starte automatische Einrichtung des Spannung-Monitors..."
# Pfade und Benutzer auf dem aktuellen Pi ermitteln
PI_DIR=$(pwd)
PI_USER=$(whoami)
# Architektur des Betriebssystems prüfen
ARCH=$(uname -m)
if [ "$ARCH" = "aarch64" ]; then
BINARY="spannung-arm64"
echo "🎯 64-Bit OS erkannt. Nutze: $BINARY"
else
BINARY="spannung-arm32_7"
echo "🎯 32-Bit OS erkannt. Nutze: $BINARY"
fi
# Platzhalter in der Service-Datei direkt auf dem Pi ersetzen
sed -i "s|{{TARGET_DIR}}|$PI_DIR|g" spannung.service
sed -i "s|{{TARGET_USER}}|$PI_USER|g" spannung.service
sed -i "s|{{BINARY}}|$BINARY|g" spannung.service
echo "📝 Service-Datei wurde erfolgreich für diesen Pi konfiguriert."
# Service in das Systemverzeichnis kopieren und aktivieren
echo "⚙️ Kopiere Service-Datei nach /etc/systemd/system/..."
sudo cp spannung.service /etc/systemd/system/spannung.service
sudo systemctl daemon-reload
sudo systemctl enable spannung.service
echo "▶️ Starte den Dienst..."
sudo systemctl restart spannung.service
echo "✅ Fertig! Der Spannung-Monitor läuft und der Autostart ist aktiv."
EOF
chmod +x ./app/install.sh
echo "📝 Service-Datei und install.sh generiert."
echo "📂 Inhalt des fertigen app-Verzeichnisses:"
ls -la app

Binary file not shown.

12
main.go
View file

@ -23,6 +23,8 @@ import (
type Config struct {
WebPort string `json:"web_port"`
SSLCert string `json:"ssl_cert"`
SSLKey string `json:"ssl_key"`
I2CBus string `json:"i2c_bus"`
ADS1115Address1 uint16 `json:"ads1115_address_1"`
ADS1115Address2 uint16 `json:"ads1115_address_2"`
@ -136,10 +138,14 @@ func main() {
}()
// 9. Instanziierung des Webservers mit Übergabe der Callback-Funktionen
server := web.NewServer(config.WebPort, readVoltageCallback, toggleRelaisCallback, getRelaisStateCallback, callbackGetVersion, getVoltNamesCallback)
server := web.NewServer(config.WebPort, readVoltageCallback,
toggleRelaisCallback, getRelaisStateCallback, callbackGetVersion,
getVoltNamesCallback)
fmt.Printf("Webserver gestartet auf Port %s\n", config.WebPort)
log.Fatal(server.Start())
fmt.Printf("Verschlüsselter HTTPS-Webserver gestartet auf Port %s...\n", config.WebPort)
// ÜBERGABE DER ZERTIFIKATE AUS DER CONFIG AN DIE NEUE START-METHODE
log.Fatal(server.Start(config.SSLCert, config.SSLKey))
}
// Hilfsfunktion zum Laden der version.json

23
server.crt Normal file
View file

@ -0,0 +1,23 @@
-----BEGIN CERTIFICATE-----
MIID1TCCAr2gAwIBAgIUffKgdkPBvX0QynTQ84kpWQU05xUwDQYJKoZIhvcNAQEL
BQAwejELMAkGA1UEBhMCREUxEDAOBgNVBAgMB0JhdmFyaWExEjAQBgNVBAcMCUvD
g8K2ZGl0ejEhMB8GA1UECgwYSW50ZXJuZXQgV2lkZ2l0cyBQdHkgTHRkMSIwIAYJ
KoZIhvcNAQkBFhNpbmZvQGxhbmctZGlldGVyLmRlMB4XDTI2MDgwMzA4MDE1OVoX
DTI3MDgwMzA4MDE1OVowejELMAkGA1UEBhMCREUxEDAOBgNVBAgMB0JhdmFyaWEx
EjAQBgNVBAcMCUvDg8K2ZGl0ejEhMB8GA1UECgwYSW50ZXJuZXQgV2lkZ2l0cyBQ
dHkgTHRkMSIwIAYJKoZIhvcNAQkBFhNpbmZvQGxhbmctZGlldGVyLmRlMIIBIjAN
BgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAtf+D266GoYOYSJsQOal248PHrYey
3bfIun/Xx8MQPUw8aZJ4Zv8N3SZJh5/9Vx18TJfS8fQALxNushP7ofPmIqqjO4tk
13U9ITWGeOIreJ2HUAOAFVYk3TMCzsHK1Bb3f6WG0kx/q7Avp1jYVRUqIb0Et2+M
K8obYP+w05Vid32w3RrA+bF0sV233vfD/OkRuApg8ae2pHoVZtIm7PmrrndlynQU
s9Y2aCJR54kinR31HXUQVnJZFm2QEY0RpjQo9d+AF3Qzc6Kb9IcAMWw13t4yATBU
vDCnY6iXh7DhakOlPUBr3xm6ZZ3hW7Jq3E2+o65gfmu5IKv0ZK8TGvVzEQIDAQAB
o1MwUTAdBgNVHQ4EFgQUxxZZxiIHt7u9s7plRyOUUokpbgIwHwYDVR0jBBgwFoAU
xxZZxiIHt7u9s7plRyOUUokpbgIwDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0B
AQsFAAOCAQEAoujOIzroc1afSY9QO+Fv8uj1dbmZgciK+3yatV9cHD0gkhbUcb89
iNdLyGR9DARU3OwBSSxF71bnP/xJ1Hul6QQxivuFaLDy/fmJiV8U5GYzP8CB1aqZ
dGyx/oTrXIjGEgve2oDwo91EQhDoqGSGTFa2rRxZY7763Nx+tCS/2WVItvhKdfXw
Bqleyev6S8833ePpAO2jeRsQl4hulUrJQNeryEnkhX6wf/3sBUbZ5EQGjGDYjZ87
LxiXPUJ6sLslrwJIStE/kiSxaUkcIQQMmTsH/LuGr8ubCwOmlf2d3fqtjAKerhoG
A2vBEpaqN9zJ5tMws/VQgWDjOUWH44UpzA==
-----END CERTIFICATE-----

28
server.key Normal file
View file

@ -0,0 +1,28 @@
-----BEGIN PRIVATE KEY-----
MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQC9CUywq5QuxlDG
5hBJEI9Bpo3Te3+iT7EzAoqRXCKA856YzGYfA3gmk02NhdPpdp+TzTYiOF/4Coa6
E++PRnmwFn/BC0SmsYZ+3iwioDV9EeuSsp9eBrCF1Ve40A8v1qSClWjm3MiO2BMB
V2YMFtNrtY3v4grWBk1LI4qrkx6VJdWX09lSJJvsTYM8E18XCN+5T6aw8JjH/iFy
yyLKw/KJwPEtt4NqyIpEryH8QBT8UwVc7n8HbpaSlb93JWATnXz2T/dfeP/d4UrO
EsN/DzhH9UUZfqJH2h5wJx0q3m6blwRIgTzTIDuL24z4riH2CPN7VVAum1pvgNcf
NmkphwXVAgMBAAECggEABmOVEveJl5ceTcqizEViAh8F9hrbcnntDENOuaD6jY8u
Ug2+edfdLLiXy2u1gNOAizdJWBi9rZ11dj6MPzRrkncANF8UH+oqGImbxkPR6vs7
Egc1ebESMEPIpjdp+/zuLHeuRvc5VBKbedUhXtE6rg5B0NS79wXZgOufmTLsuq+w
p6ivRn5uHlODDvQzvricRkwl3FvGfe/H/N50K6q+vQfAB/d3B7x97kfxvHpXw/LJ
BXwgchxJXWo371k/ks1z5mbdyjpol/Lu9KEVe4w6p3pR+0bdkvA4H8Y3FY1yDZ3c
olDsJTPBnBpGwJqvK+zzdHxt2uRmpRlVuea2QqIn1QKBgQD82fZ2YUp3i4vARzkw
+aER6PSPtAmlvMxe8s+dzkP7r/4sp8LbeqlgaF3RBfyt786SxRKjhFXRCrQOCrjH
tf+A/pnS6qrmeXZQtHlpwE8LXWNm/kdNs0leRcpTuEb+2zX+DBr0f8kbCxc+AtVy
y6DL+lI0zcgTTOtdOm1c7RUFpwKBgQC/Y+hfrx+l2c6pXEMoWE7XEhHL67ky3/AB
h3GiGPDzSzMZnqGsTnyWS/pmwchm5lBTlnRs4PmgdyvaJ/t0pZ4iWwSYmU3UsvLK
EjKXRh+AgubDOUiRgugAxeNVUitNpkTLgMGIr8/s22QqkVxZzORap0fzWhei9b4t
0VFoiobAIwKBgQCd3Ca3eb5YLFMv1Eesf+1DlUE6hpiPVPPzQ3zDdQeUlygFESfi
hw5AFmicGzTKEzHRCCC+3dwGCrynF6KNbN771fiLad8QzTxE3qf+kgXHfqKUpqQ1
qn1f0gqjgiUw8AMhfMVHaJBRxfbYzEQey2q0bq/sL51+D0PSjKvCnHHHeQKBgFms
wy1KDacVBbre6uyVa+NjqQkGGtFWkcr1nm2YCBXGz1uasx/b6o41bU8GTxK/qTVx
En4Nb4kbLWXbQ/ukuhJY2S9y7T/S1OWPXzr39TyumNcyGOltD62FCv5oMLgCRsuf
OY8E6YSOS0GSuFWvJfO/23uPY/HL+N7Y667y8S5HAoGBAL62NT4KM4jYCp7Jys1+
8OeoQMbSG2C02SnJT32iYqC2Au0lTVjKwOfiICvy37SAZtWqixj6TjpXoqNbel/i
FdaNV4wihIvmtUdh5UbEuEoPDgxsHKbQm3HXYf7RA356RV19KKmV524XYJV9/I5K
na9lXbV/90Jbmpjbm/tV9r+F
-----END PRIVATE KEY-----

511
sysroot-arm32/index.html Normal file
View file

@ -0,0 +1,511 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en" dir="ltr">
<head>
<meta charset="UTF-8" />
<title>Launchpad</title>
<link rel="apple-touch-icon" sizes="180x180" href="/@@/apple-touch-icon.png?v=2022" />
<link rel="icon" type="image/png" sizes="32x32" href="/@@/favicon-32x32.png?v=2022" />
<link rel="icon" type="image/png" sizes="16x16" href="/@@/favicon-16x16.png?v=2022" />
<link rel="manifest" href="/@@/site.webmanifest?v=2022" />
<link rel="mask-icon" href="/@@/safari-pinned-tab.svg?v=2022" color="#e9531f" />
<link rel="shortcut icon" href="/@@/favicon.ico?v=2022" />
<meta name="msapplication-TileColor" content="#da532c" />
<meta name="msapplication-config" content="/@@/browserconfig.xml?v=2022" />
<meta name="theme-color" content="#ffffff" />
<link rel="alternate" type="application/atom+xml" href="http://feeds.launchpad.net/announcements.atom" title="All Announcements" />
<link type="text/css" rel="stylesheet" media="screen, print" href="/+icing/revb042f2deb3ecfaa583e2ab7763b0e6f8b706ff27/combo.css" />
<meta property="og:title" content="Launchpad" />
<meta property="og:type" content="website" />
<meta property="og:image" content="/@@/launchpad-og-image.png" />
<meta property="og:url" content="https://launchpad.net/index.html" />
<meta property="og:site_name" content="Launchpad" />
<script type="text/javascript">
var LP = {
cache: {},
links: {}
};
</script>
<script type="text/javascript">var cookie_scope = '; Path=/; Secure; Domain=.launchpad.net';</script>
<script type="text/javascript" src="/+combo/revb042f2deb3ecfaa583e2ab7763b0e6f8b706ff27/?yui/yui/yui-min.js&amp;lp/meta.js&amp;yui/loader/loader-min.js"></script>
<script type="text/javascript">
var raw = null;
if (LP.devmode) {
raw = 'raw';
}
YUI.GlobalConfig = {
combine: true,
comboBase: '/+combo/revb042f2deb3ecfaa583e2ab7763b0e6f8b706ff27/?',
root: 'yui/',
filter: raw,
debug: false,
fetchCSS: false,
maxURLLength: 2000,
groups: {
lp: {
combine: true,
base: '/+combo/revb042f2deb3ecfaa583e2ab7763b0e6f8b706ff27/?lp/',
comboBase: '/+combo/revb042f2deb3ecfaa583e2ab7763b0e6f8b706ff27/?',
root: 'lp/',
// comes from including lp/meta.js
modules: LP_MODULES,
fetchCSS: false
}
}
}</script>
<script type="text/javascript">
// we need this to create a single YUI instance all events and code
// talks across. All instances of YUI().use should be based off of
// LPJS instead.
var LPJS = new YUI();
</script>
<script id="base-layout-load-scripts" type="text/javascript">
//<![CDATA[
LPJS.use('base', 'node', 'console', 'event',
'oop', 'lp', 'lp.app.foldables','lp.app.sorttable',
'lp.app.inlinehelp', 'lp.app.links',
'lp.bugs.bugtask_index', 'lp.bugs.subscribers',
'lp.app.ellipsis', 'lp.code.branchmergeproposal.diff',
'lp.views.global',
function(Y) {
Y.on("domready", function () {
var global_view = new Y.lp.views.Global();
global_view.render();
Y.lp.app.sorttable.SortTable.init();
Y.lp.app.inlinehelp.init_help();
Y.lp.activate_collapsibles();
Y.lp.app.foldables.activate();
Y.lp.app.links.check_valid_lp_links();
});
Y.on('lp:context:web_link:changed', function(e) {
window.location = e.new_value;
});
});
//]]>
</script>
<script id="base-helper-functions" type="text/javascript">
//<![CDATA[
// This code is pulled from lp.js that needs to be available on every
// request. Pulling here to get it outside the scope of the YUI block.
function setFocusByName(name) {
// Focus the first element matching the given name which can be focused.
var nodes = document.getElementsByName(name);
var i, node;
for (i = 0; i < nodes.length; i++) {
node = nodes[i];
if (node.focus) {
try {
// Trying to focus a hidden element throws an error in IE8.
if (node.offsetHeight !== 0) {
node.focus();
}
} catch (e) {
LPJS.use('console', function(Y) {
Y.log('In setFocusByName(<' +
node.tagName + ' type=' + node.type + '>): ' + e);
});
}
break;
}
}
}
function selectWidget(widget_name, event) {
if (event && (event.keyCode === 9 || event.keyCode === 13)) {
// Avoid firing if user is tabbing through or simply pressing
// enter to submit the form.
return;
}
document.getElementById(widget_name).checked = true;
}
//]]>
</script>
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="/+icing/vanilla-framework-version-4.7.0.min.css" />
</head>
<body id="document" itemscope="" itemtype="http://schema.org/WebPage" class="tab-unknown
main_only
public
yui3-skin-sam">
<div class="yui-d0">
<div id="locationbar" class="login-logout">
<div id="logincontrol"><a href="https://launchpad.net/+login">Log in / Register</a></div>
</div><!--id="locationbar"-->
<div id="maincontent" class="yui-main">
<div class="yui-b" dir="ltr">
<div class="context-publication">
<div id="registration" class="registering">
</div>
</div>
<div id="request-notifications">
</div>
<div>
<!-- Is your project registered yet? -->
<div id="homepage" class="homepage">
<div class="top-portlet">
<img src="/@@/launchpad-logo-and-name.svg" class="homepage__logo" id="launchpad-logo-and-name" alt="Launchpad logo and name" />
</div>
<hr>
<section class="p-strip is-shallow">
<div class="u-fixed-width">
<form id="homepage-searchform" class="p-form p-form--inline" xml:lang="en" lang="en" dir="ltr" method="get" accept-charset="UTF-8" action="https://launchpad.net/+search">
<div class="p-form__group p-form--search">
<label for="search-input" class="u-off-screen">Search</label>
<div class="p-form__control u-clearfix">
<input id="search-input" type="search" name="field.text" value="" autofocus="">
</div>
</div>
<button id="search" class="p-button--positive" type="submit" value="Search Launchpad">Search</button>
</form>
<script type="text/javascript">
LPJS.use('lp', function () {
setFocusByName('field.text');
});
</script>
<div id="homepage-stats" class="u-text--muted">
<strong>49,106</strong>&nbsp;projects,
<strong>2,108,367</strong>&nbsp;bugs,
<strong>1,009,234</strong>&nbsp;branches,
<strong>119,025</strong>&nbsp;Git repositories,
<strong>3,185,634</strong>&nbsp;translations,
<strong>822,311</strong>&nbsp;answers,
<strong>76,426</strong>&nbsp;blueprints,
and&nbsp;counting...
</div>
</div>
</section>
<section class="p-strip is-shallow">
<div class="homepage-whatslaunchpad">
<div class="u-fixed-width u-clearfix">
<h2>Launchpad</h2>
<h4>A software collaboration platform that provides</h4>
</div>
<div class="u-fixed-width u-clearfix">
<div class="row p-divider">
<div class="col-3 p-divider__block">
<h4><a href="https://bugs.launchpad.net/">Bug tracking</a></h4>
<p>One place to track bugs across project boundaries and tools</p>
</div>
<div class="col-3 p-divider__block">
<h4><a href="https://code.launchpad.net/">Code hosting</a> using <a href="https://git-scm.com/">Git</a></h4>
<p>Easy for anyone to get your project's code using Git</p>
</div>
<div class="col-3 p-divider__block">
<h4><a href="https://documentation.ubuntu.com/launchpad/user/how-to/work-with-code-hosted-on-launchpad/create-and-manage-a-merge-proposal/">Code reviews</a></h4>
<p>Full control of who can land code in your project remains with you</p>
</div>
<div class="col-3 p-divider__block">
<h4><a href="https://launchpad.net/ubuntu">Ubuntu package building and hosting</a></h4>
<p>Publishing your software is simple with Personal Package Archives</p>
</div>
</div>
<div class="row p-divider">
<div class="col-3 p-divider__block">
<h4><a href="https://translations.launchpad.net/">Crowd source translations</a></h4>
<p>Build an open community to translate your software into almost any language</p>
</div>
<div class="col-3 p-divider__block">
<h4><a href="https://documentation.ubuntu.com/launchpad/user/Teams/MailingLists">Mailing lists</a></h4>
<p>Find and work with the right people by building a social network of individuals and teams around projects</p>
</div>
<div class="col-3 p-divider__block">
<h4><a href="https://answers.launchpad.net/">Answer tracking and FAQs</a></h4>
<p>Free software thrives on people helping each other when the unexpected happens</p>
</div>
<div class="col-3 p-divider__block">
<h4><a href="https://blueprints.launchpad.net/">Specification tracking</a></h4>
<p>Track ideas and chunks of work as “blueprints”</p>
</div>
</div>
</div>
</div>
</section>
<section class="p-strip is-shallow">
<div id="homepage-getstarted">
<div class="u-fixed-width u-clearfix">
<h2 class="u-float-left">Get started</h2>
</div>
<div class="u-fixed-width u-clearfix">
<span>
Learn more about Launchpad in the
<a href="https://documentation.ubuntu.com/launchpad/">user guide</a>.
</span>
If you're ready, you can:
<ul class="p-matrix">
<li class="p-matrix__item">
<img class="p-matrix__img" src="/@@/add-homepage.png" alt="add">
<div class="p-matrix__content">
<h4 class="p-matrix__title"><a class="p-matrix__link" href="/+login">Create an account</a></h4>
</div>
</li>
<li class="p-matrix__item">
<img class="p-matrix__img" src="/@@/tour-homepage.png" alt="tour">
<div class="p-matrix__content">
<h4 class="p-matrix__title"><a class="p-matrix__link" href="/+tour">Take the tour</a></h4>
</div>
</li>
<li class="p-matrix__item">
<img class="p-matrix__img" src="/@@/question-homepage.png" alt="question">
<div class="p-matrix__content">
<h4 class="p-matrix__title"><a class="p-matrix__link" href="https://answers.launchpad.net/">Find answers</a></h4>
</div>
</li>
</ul>
</div>
</div>
</section>
<section class="p-strip is-shallow">
<div id="homepage-featured">
<div class="u-fixed-width u-clearfix">
<h2 class="u-float-left">Featured projects</h2>
</div>
<div class="u-fixed-width u-clearfix">
<ul class="p-matrix featured-projects-list">
<li class="p-matrix__item">
<img class="p-matrix__img" alt="Beautiful Soup" src="/@@/product-logo">
<div class="p-matrix__content">
<h4 class="p-matrix__title"><a class="p-matrix__link" href="/beautifulsoup">Beautiful Soup</a></h4>
<div class="p-matrix__desc">
<p>A program designed for screen-scraping HTML. The discussion group is at: http://groups.google.com...</p>
</div>
</div>
</li>
<li class="p-matrix__item">
<img class="p-matrix__img" alt="Inkscape" src="https://launchpadlibrarian.net/66795469/ink-lp-logo.png">
<div class="p-matrix__content">
<h4 class="p-matrix__title"><a class="p-matrix__link" href="/inkscape">Inkscape</a></h4>
<div class="p-matrix__desc">
<p>Inkscape is an SVG-based graphics editor featuring alpha
blending, node editing, SVG to PNG exp...</p>
</div>
</div>
</li>
<li class="p-matrix__item">
<img class="p-matrix__img" alt="Launchpad itself" src="https://launchpadlibrarian.net/600817174/Canonical_Launchpad_icon_64px.png">
<div class="p-matrix__content">
<h4 class="p-matrix__title"><a class="p-matrix__link" href="/launchpad">Launchpad itself</a></h4>
<div class="p-matrix__desc">
<p>Launchpad is a set of Web services to help software developers collaborate.</p>
</div>
</div>
</li>
<li class="p-matrix__item">
<img class="p-matrix__img" alt="launchpadlib " src="/@@/product-logo">
<div class="p-matrix__content">
<h4 class="p-matrix__title"><a class="p-matrix__link" href="/launchpadlib">launchpadlib </a></h4>
<div class="p-matrix__desc">
<p>Python client library for Launchpad's web service</p>
</div>
</div>
</li>
<li class="p-matrix__item">
<img class="p-matrix__img" alt="OpenMW" src="/@@/product-logo">
<div class="p-matrix__content">
<h4 class="p-matrix__title"><a class="p-matrix__link" href="/openmw">OpenMW</a></h4>
<div class="p-matrix__desc">
<p>OpenMW is an attempt to reimplement the popular role playing game Morrowind. It aims to be a full...</p>
</div>
</div>
</li>
<li class="p-matrix__item">
<img class="p-matrix__img" alt="OpenShot Video Editor" src="https://launchpadlibrarian.net/250357498/OpenShot-2-Logo.png">
<div class="p-matrix__content">
<h4 class="p-matrix__title"><a class="p-matrix__link" href="/openshot">OpenShot Video Editor</a></h4>
<div class="p-matrix__desc">
<p>OpenShot Video Editor is a free, open-source, non-linear video editor. It can create and edit vid...</p>
</div>
</div>
</li>
<li class="p-matrix__item">
<img class="p-matrix__img" alt="OpenStack" src="https://launchpadlibrarian.net/52042558/os64.png">
<div class="p-matrix__content">
<h4 class="p-matrix__title"><a class="p-matrix__link" href="/openstack">OpenStack</a></h4>
<div class="p-matrix__desc">
<p>The OpenStack Open Source Cloud Mission: to produce the ubiquitous Open Source Cloud Computing pl...</p>
</div>
</div>
</li>
<li class="p-matrix__item">
<img class="p-matrix__img" alt="txpkgupload" src="/@@/product-logo">
<div class="p-matrix__content">
<h4 class="p-matrix__title"><a class="p-matrix__link" href="/txpkgupload">txpkgupload</a></h4>
<div class="p-matrix__desc">
<p>Package upload server used by Launchpad.</p>
</div>
</div>
</li>
<li class="p-matrix__item">
<img class="p-matrix__img" alt="Ubuntu" src="https://launchpadlibrarian.net/606381979/CoF%2064px.png">
<div class="p-matrix__content">
<h4 class="p-matrix__title"><a class="p-matrix__link" href="/ubuntu">Ubuntu</a></h4>
<div class="p-matrix__desc">
<p>Ubuntu is a complete Linux-based operating system, freely available with both community and profe...</p>
</div>
</div>
</li>
</ul>
<ul class="horizontal">
<li>
<strong><a href="/projects">Browse all
49106
projects</a>!</strong>
</li>
</ul>
</div>
</div>
</section>
</div><!-- homepage -->
</div>
</div><!-- yui-b -->
</div><!-- yui-main -->
<!-- yui-b side -->
<!-- yui-t4 -->
<div id="footer" class="footer">
<div class="colophon">
&copy; 2004
<a href="http://canonical.com/">Canonical&nbsp;Ltd.</a>
&nbsp;&bull;&nbsp;
<a href="https://ubuntu.com/legal/launchpad-terms-of-service">Terms of use</a>
&nbsp;&bull;&nbsp;
<a href="https://www.ubuntu.com/legal/dataprivacy">Data privacy</a>
&nbsp;&bull;&nbsp;
<a href="/feedback">Contact Launchpad Support</a>
&nbsp;&bull;&nbsp;
<a href="http://blog.launchpad.net/">Blog</a>
&nbsp;&bull;&nbsp;
<a href="https://canonical.com/careers">Careers</a>
&nbsp;&bull;&nbsp;
<a href="https://ubuntu.social/@launchpadstatus">System status</a>
<span id="lp-version">
&nbsp;&bull;&nbsp;
b042f2d
(<a href="https://documentation.ubuntu.com/launchpad/developer/how-to/get-source-code/">Get the code!</a>)
</span>
</div>
</div>
</div><!-- yui-d0-->
<script id="json-cache-script">LP.cache = {"related_features": {}};</script>
</body>
<!--
Facet name: unknown
Page type: main_only
Has global search: True
Has application tabs: True
Has side portlets: False
At least 22 queries/external actions issued in 0.12 seconds
Features: {'profiling.enabled': None, 'hard_timeout': '5000', 'js.yui_version': None, 'app.maintenance_message': None, 'app.mainsite_only.canonical_url': None, 'baselayout.careers_link.disabled': None, 'visible_render_time': None}
rb042f2d
-->
</html>

511
sysroot-arm32/index.html.1 Normal file
View file

@ -0,0 +1,511 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en" dir="ltr">
<head>
<meta charset="UTF-8" />
<title>Launchpad</title>
<link rel="apple-touch-icon" sizes="180x180" href="/@@/apple-touch-icon.png?v=2022" />
<link rel="icon" type="image/png" sizes="32x32" href="/@@/favicon-32x32.png?v=2022" />
<link rel="icon" type="image/png" sizes="16x16" href="/@@/favicon-16x16.png?v=2022" />
<link rel="manifest" href="/@@/site.webmanifest?v=2022" />
<link rel="mask-icon" href="/@@/safari-pinned-tab.svg?v=2022" color="#e9531f" />
<link rel="shortcut icon" href="/@@/favicon.ico?v=2022" />
<meta name="msapplication-TileColor" content="#da532c" />
<meta name="msapplication-config" content="/@@/browserconfig.xml?v=2022" />
<meta name="theme-color" content="#ffffff" />
<link rel="alternate" type="application/atom+xml" href="http://feeds.launchpad.net/announcements.atom" title="All Announcements" />
<link type="text/css" rel="stylesheet" media="screen, print" href="/+icing/revb042f2deb3ecfaa583e2ab7763b0e6f8b706ff27/combo.css" />
<meta property="og:title" content="Launchpad" />
<meta property="og:type" content="website" />
<meta property="og:image" content="/@@/launchpad-og-image.png" />
<meta property="og:url" content="https://launchpad.net/index.html" />
<meta property="og:site_name" content="Launchpad" />
<script type="text/javascript">
var LP = {
cache: {},
links: {}
};
</script>
<script type="text/javascript">var cookie_scope = '; Path=/; Secure; Domain=.launchpad.net';</script>
<script type="text/javascript" src="/+combo/revb042f2deb3ecfaa583e2ab7763b0e6f8b706ff27/?yui/yui/yui-min.js&amp;lp/meta.js&amp;yui/loader/loader-min.js"></script>
<script type="text/javascript">
var raw = null;
if (LP.devmode) {
raw = 'raw';
}
YUI.GlobalConfig = {
combine: true,
comboBase: '/+combo/revb042f2deb3ecfaa583e2ab7763b0e6f8b706ff27/?',
root: 'yui/',
filter: raw,
debug: false,
fetchCSS: false,
maxURLLength: 2000,
groups: {
lp: {
combine: true,
base: '/+combo/revb042f2deb3ecfaa583e2ab7763b0e6f8b706ff27/?lp/',
comboBase: '/+combo/revb042f2deb3ecfaa583e2ab7763b0e6f8b706ff27/?',
root: 'lp/',
// comes from including lp/meta.js
modules: LP_MODULES,
fetchCSS: false
}
}
}</script>
<script type="text/javascript">
// we need this to create a single YUI instance all events and code
// talks across. All instances of YUI().use should be based off of
// LPJS instead.
var LPJS = new YUI();
</script>
<script id="base-layout-load-scripts" type="text/javascript">
//<![CDATA[
LPJS.use('base', 'node', 'console', 'event',
'oop', 'lp', 'lp.app.foldables','lp.app.sorttable',
'lp.app.inlinehelp', 'lp.app.links',
'lp.bugs.bugtask_index', 'lp.bugs.subscribers',
'lp.app.ellipsis', 'lp.code.branchmergeproposal.diff',
'lp.views.global',
function(Y) {
Y.on("domready", function () {
var global_view = new Y.lp.views.Global();
global_view.render();
Y.lp.app.sorttable.SortTable.init();
Y.lp.app.inlinehelp.init_help();
Y.lp.activate_collapsibles();
Y.lp.app.foldables.activate();
Y.lp.app.links.check_valid_lp_links();
});
Y.on('lp:context:web_link:changed', function(e) {
window.location = e.new_value;
});
});
//]]>
</script>
<script id="base-helper-functions" type="text/javascript">
//<![CDATA[
// This code is pulled from lp.js that needs to be available on every
// request. Pulling here to get it outside the scope of the YUI block.
function setFocusByName(name) {
// Focus the first element matching the given name which can be focused.
var nodes = document.getElementsByName(name);
var i, node;
for (i = 0; i < nodes.length; i++) {
node = nodes[i];
if (node.focus) {
try {
// Trying to focus a hidden element throws an error in IE8.
if (node.offsetHeight !== 0) {
node.focus();
}
} catch (e) {
LPJS.use('console', function(Y) {
Y.log('In setFocusByName(<' +
node.tagName + ' type=' + node.type + '>): ' + e);
});
}
break;
}
}
}
function selectWidget(widget_name, event) {
if (event && (event.keyCode === 9 || event.keyCode === 13)) {
// Avoid firing if user is tabbing through or simply pressing
// enter to submit the form.
return;
}
document.getElementById(widget_name).checked = true;
}
//]]>
</script>
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="/+icing/vanilla-framework-version-4.7.0.min.css" />
</head>
<body id="document" itemscope="" itemtype="http://schema.org/WebPage" class="tab-unknown
main_only
public
yui3-skin-sam">
<div class="yui-d0">
<div id="locationbar" class="login-logout">
<div id="logincontrol"><a href="https://launchpad.net/+login">Log in / Register</a></div>
</div><!--id="locationbar"-->
<div id="maincontent" class="yui-main">
<div class="yui-b" dir="ltr">
<div class="context-publication">
<div id="registration" class="registering">
</div>
</div>
<div id="request-notifications">
</div>
<div>
<!-- Is your project registered yet? -->
<div id="homepage" class="homepage">
<div class="top-portlet">
<img src="/@@/launchpad-logo-and-name.svg" class="homepage__logo" id="launchpad-logo-and-name" alt="Launchpad logo and name" />
</div>
<hr>
<section class="p-strip is-shallow">
<div class="u-fixed-width">
<form id="homepage-searchform" class="p-form p-form--inline" xml:lang="en" lang="en" dir="ltr" method="get" accept-charset="UTF-8" action="https://launchpad.net/+search">
<div class="p-form__group p-form--search">
<label for="search-input" class="u-off-screen">Search</label>
<div class="p-form__control u-clearfix">
<input id="search-input" type="search" name="field.text" value="" autofocus="">
</div>
</div>
<button id="search" class="p-button--positive" type="submit" value="Search Launchpad">Search</button>
</form>
<script type="text/javascript">
LPJS.use('lp', function () {
setFocusByName('field.text');
});
</script>
<div id="homepage-stats" class="u-text--muted">
<strong>49,106</strong>&nbsp;projects,
<strong>2,108,367</strong>&nbsp;bugs,
<strong>1,009,234</strong>&nbsp;branches,
<strong>119,025</strong>&nbsp;Git repositories,
<strong>3,185,634</strong>&nbsp;translations,
<strong>822,311</strong>&nbsp;answers,
<strong>76,426</strong>&nbsp;blueprints,
and&nbsp;counting...
</div>
</div>
</section>
<section class="p-strip is-shallow">
<div class="homepage-whatslaunchpad">
<div class="u-fixed-width u-clearfix">
<h2>Launchpad</h2>
<h4>A software collaboration platform that provides</h4>
</div>
<div class="u-fixed-width u-clearfix">
<div class="row p-divider">
<div class="col-3 p-divider__block">
<h4><a href="https://bugs.launchpad.net/">Bug tracking</a></h4>
<p>One place to track bugs across project boundaries and tools</p>
</div>
<div class="col-3 p-divider__block">
<h4><a href="https://code.launchpad.net/">Code hosting</a> using <a href="https://git-scm.com/">Git</a></h4>
<p>Easy for anyone to get your project's code using Git</p>
</div>
<div class="col-3 p-divider__block">
<h4><a href="https://documentation.ubuntu.com/launchpad/user/how-to/work-with-code-hosted-on-launchpad/create-and-manage-a-merge-proposal/">Code reviews</a></h4>
<p>Full control of who can land code in your project remains with you</p>
</div>
<div class="col-3 p-divider__block">
<h4><a href="https://launchpad.net/ubuntu">Ubuntu package building and hosting</a></h4>
<p>Publishing your software is simple with Personal Package Archives</p>
</div>
</div>
<div class="row p-divider">
<div class="col-3 p-divider__block">
<h4><a href="https://translations.launchpad.net/">Crowd source translations</a></h4>
<p>Build an open community to translate your software into almost any language</p>
</div>
<div class="col-3 p-divider__block">
<h4><a href="https://documentation.ubuntu.com/launchpad/user/Teams/MailingLists">Mailing lists</a></h4>
<p>Find and work with the right people by building a social network of individuals and teams around projects</p>
</div>
<div class="col-3 p-divider__block">
<h4><a href="https://answers.launchpad.net/">Answer tracking and FAQs</a></h4>
<p>Free software thrives on people helping each other when the unexpected happens</p>
</div>
<div class="col-3 p-divider__block">
<h4><a href="https://blueprints.launchpad.net/">Specification tracking</a></h4>
<p>Track ideas and chunks of work as “blueprints”</p>
</div>
</div>
</div>
</div>
</section>
<section class="p-strip is-shallow">
<div id="homepage-getstarted">
<div class="u-fixed-width u-clearfix">
<h2 class="u-float-left">Get started</h2>
</div>
<div class="u-fixed-width u-clearfix">
<span>
Learn more about Launchpad in the
<a href="https://documentation.ubuntu.com/launchpad/">user guide</a>.
</span>
If you're ready, you can:
<ul class="p-matrix">
<li class="p-matrix__item">
<img class="p-matrix__img" src="/@@/add-homepage.png" alt="add">
<div class="p-matrix__content">
<h4 class="p-matrix__title"><a class="p-matrix__link" href="/+login">Create an account</a></h4>
</div>
</li>
<li class="p-matrix__item">
<img class="p-matrix__img" src="/@@/tour-homepage.png" alt="tour">
<div class="p-matrix__content">
<h4 class="p-matrix__title"><a class="p-matrix__link" href="/+tour">Take the tour</a></h4>
</div>
</li>
<li class="p-matrix__item">
<img class="p-matrix__img" src="/@@/question-homepage.png" alt="question">
<div class="p-matrix__content">
<h4 class="p-matrix__title"><a class="p-matrix__link" href="https://answers.launchpad.net/">Find answers</a></h4>
</div>
</li>
</ul>
</div>
</div>
</section>
<section class="p-strip is-shallow">
<div id="homepage-featured">
<div class="u-fixed-width u-clearfix">
<h2 class="u-float-left">Featured projects</h2>
</div>
<div class="u-fixed-width u-clearfix">
<ul class="p-matrix featured-projects-list">
<li class="p-matrix__item">
<img class="p-matrix__img" alt="Beautiful Soup" src="/@@/product-logo">
<div class="p-matrix__content">
<h4 class="p-matrix__title"><a class="p-matrix__link" href="/beautifulsoup">Beautiful Soup</a></h4>
<div class="p-matrix__desc">
<p>A program designed for screen-scraping HTML. The discussion group is at: http://groups.google.com...</p>
</div>
</div>
</li>
<li class="p-matrix__item">
<img class="p-matrix__img" alt="Inkscape" src="https://launchpadlibrarian.net/66795469/ink-lp-logo.png">
<div class="p-matrix__content">
<h4 class="p-matrix__title"><a class="p-matrix__link" href="/inkscape">Inkscape</a></h4>
<div class="p-matrix__desc">
<p>Inkscape is an SVG-based graphics editor featuring alpha
blending, node editing, SVG to PNG exp...</p>
</div>
</div>
</li>
<li class="p-matrix__item">
<img class="p-matrix__img" alt="Launchpad itself" src="https://launchpadlibrarian.net/600817174/Canonical_Launchpad_icon_64px.png">
<div class="p-matrix__content">
<h4 class="p-matrix__title"><a class="p-matrix__link" href="/launchpad">Launchpad itself</a></h4>
<div class="p-matrix__desc">
<p>Launchpad is a set of Web services to help software developers collaborate.</p>
</div>
</div>
</li>
<li class="p-matrix__item">
<img class="p-matrix__img" alt="launchpadlib " src="/@@/product-logo">
<div class="p-matrix__content">
<h4 class="p-matrix__title"><a class="p-matrix__link" href="/launchpadlib">launchpadlib </a></h4>
<div class="p-matrix__desc">
<p>Python client library for Launchpad's web service</p>
</div>
</div>
</li>
<li class="p-matrix__item">
<img class="p-matrix__img" alt="OpenMW" src="/@@/product-logo">
<div class="p-matrix__content">
<h4 class="p-matrix__title"><a class="p-matrix__link" href="/openmw">OpenMW</a></h4>
<div class="p-matrix__desc">
<p>OpenMW is an attempt to reimplement the popular role playing game Morrowind. It aims to be a full...</p>
</div>
</div>
</li>
<li class="p-matrix__item">
<img class="p-matrix__img" alt="OpenShot Video Editor" src="https://launchpadlibrarian.net/250357498/OpenShot-2-Logo.png">
<div class="p-matrix__content">
<h4 class="p-matrix__title"><a class="p-matrix__link" href="/openshot">OpenShot Video Editor</a></h4>
<div class="p-matrix__desc">
<p>OpenShot Video Editor is a free, open-source, non-linear video editor. It can create and edit vid...</p>
</div>
</div>
</li>
<li class="p-matrix__item">
<img class="p-matrix__img" alt="OpenStack" src="https://launchpadlibrarian.net/52042558/os64.png">
<div class="p-matrix__content">
<h4 class="p-matrix__title"><a class="p-matrix__link" href="/openstack">OpenStack</a></h4>
<div class="p-matrix__desc">
<p>The OpenStack Open Source Cloud Mission: to produce the ubiquitous Open Source Cloud Computing pl...</p>
</div>
</div>
</li>
<li class="p-matrix__item">
<img class="p-matrix__img" alt="txpkgupload" src="/@@/product-logo">
<div class="p-matrix__content">
<h4 class="p-matrix__title"><a class="p-matrix__link" href="/txpkgupload">txpkgupload</a></h4>
<div class="p-matrix__desc">
<p>Package upload server used by Launchpad.</p>
</div>
</div>
</li>
<li class="p-matrix__item">
<img class="p-matrix__img" alt="Ubuntu" src="https://launchpadlibrarian.net/606381979/CoF%2064px.png">
<div class="p-matrix__content">
<h4 class="p-matrix__title"><a class="p-matrix__link" href="/ubuntu">Ubuntu</a></h4>
<div class="p-matrix__desc">
<p>Ubuntu is a complete Linux-based operating system, freely available with both community and profe...</p>
</div>
</div>
</li>
</ul>
<ul class="horizontal">
<li>
<strong><a href="/projects">Browse all
49106
projects</a>!</strong>
</li>
</ul>
</div>
</div>
</section>
</div><!-- homepage -->
</div>
</div><!-- yui-b -->
</div><!-- yui-main -->
<!-- yui-b side -->
<!-- yui-t4 -->
<div id="footer" class="footer">
<div class="colophon">
&copy; 2004
<a href="http://canonical.com/">Canonical&nbsp;Ltd.</a>
&nbsp;&bull;&nbsp;
<a href="https://ubuntu.com/legal/launchpad-terms-of-service">Terms of use</a>
&nbsp;&bull;&nbsp;
<a href="https://www.ubuntu.com/legal/dataprivacy">Data privacy</a>
&nbsp;&bull;&nbsp;
<a href="/feedback">Contact Launchpad Support</a>
&nbsp;&bull;&nbsp;
<a href="http://blog.launchpad.net/">Blog</a>
&nbsp;&bull;&nbsp;
<a href="https://canonical.com/careers">Careers</a>
&nbsp;&bull;&nbsp;
<a href="https://ubuntu.social/@launchpadstatus">System status</a>
<span id="lp-version">
&nbsp;&bull;&nbsp;
b042f2d
(<a href="https://documentation.ubuntu.com/launchpad/developer/how-to/get-source-code/">Get the code!</a>)
</span>
</div>
</div>
</div><!-- yui-d0-->
<script id="json-cache-script">LP.cache = {"related_features": {}};</script>
</body>
<!--
Facet name: unknown
Page type: main_only
Has global search: True
Has application tabs: True
Has side portlets: False
At least 22 queries/external actions issued in 0.12 seconds
Features: {'profiling.enabled': None, 'hard_timeout': '5000', 'js.yui_version': None, 'app.maintenance_message': None, 'app.mainsite_only.canonical_url': None, 'baselayout.careers_link.disabled': None, 'visible_render_time': None}
rb042f2d
-->
</html>

511
sysroot-arm32/index.html.2 Normal file
View file

@ -0,0 +1,511 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en" dir="ltr">
<head>
<meta charset="UTF-8" />
<title>Launchpad</title>
<link rel="apple-touch-icon" sizes="180x180" href="/@@/apple-touch-icon.png?v=2022" />
<link rel="icon" type="image/png" sizes="32x32" href="/@@/favicon-32x32.png?v=2022" />
<link rel="icon" type="image/png" sizes="16x16" href="/@@/favicon-16x16.png?v=2022" />
<link rel="manifest" href="/@@/site.webmanifest?v=2022" />
<link rel="mask-icon" href="/@@/safari-pinned-tab.svg?v=2022" color="#e9531f" />
<link rel="shortcut icon" href="/@@/favicon.ico?v=2022" />
<meta name="msapplication-TileColor" content="#da532c" />
<meta name="msapplication-config" content="/@@/browserconfig.xml?v=2022" />
<meta name="theme-color" content="#ffffff" />
<link rel="alternate" type="application/atom+xml" href="http://feeds.launchpad.net/announcements.atom" title="All Announcements" />
<link type="text/css" rel="stylesheet" media="screen, print" href="/+icing/revb042f2deb3ecfaa583e2ab7763b0e6f8b706ff27/combo.css" />
<meta property="og:title" content="Launchpad" />
<meta property="og:type" content="website" />
<meta property="og:image" content="/@@/launchpad-og-image.png" />
<meta property="og:url" content="https://launchpad.net/index.html" />
<meta property="og:site_name" content="Launchpad" />
<script type="text/javascript">
var LP = {
cache: {},
links: {}
};
</script>
<script type="text/javascript">var cookie_scope = '; Path=/; Secure; Domain=.launchpad.net';</script>
<script type="text/javascript" src="/+combo/revb042f2deb3ecfaa583e2ab7763b0e6f8b706ff27/?yui/yui/yui-min.js&amp;lp/meta.js&amp;yui/loader/loader-min.js"></script>
<script type="text/javascript">
var raw = null;
if (LP.devmode) {
raw = 'raw';
}
YUI.GlobalConfig = {
combine: true,
comboBase: '/+combo/revb042f2deb3ecfaa583e2ab7763b0e6f8b706ff27/?',
root: 'yui/',
filter: raw,
debug: false,
fetchCSS: false,
maxURLLength: 2000,
groups: {
lp: {
combine: true,
base: '/+combo/revb042f2deb3ecfaa583e2ab7763b0e6f8b706ff27/?lp/',
comboBase: '/+combo/revb042f2deb3ecfaa583e2ab7763b0e6f8b706ff27/?',
root: 'lp/',
// comes from including lp/meta.js
modules: LP_MODULES,
fetchCSS: false
}
}
}</script>
<script type="text/javascript">
// we need this to create a single YUI instance all events and code
// talks across. All instances of YUI().use should be based off of
// LPJS instead.
var LPJS = new YUI();
</script>
<script id="base-layout-load-scripts" type="text/javascript">
//<![CDATA[
LPJS.use('base', 'node', 'console', 'event',
'oop', 'lp', 'lp.app.foldables','lp.app.sorttable',
'lp.app.inlinehelp', 'lp.app.links',
'lp.bugs.bugtask_index', 'lp.bugs.subscribers',
'lp.app.ellipsis', 'lp.code.branchmergeproposal.diff',
'lp.views.global',
function(Y) {
Y.on("domready", function () {
var global_view = new Y.lp.views.Global();
global_view.render();
Y.lp.app.sorttable.SortTable.init();
Y.lp.app.inlinehelp.init_help();
Y.lp.activate_collapsibles();
Y.lp.app.foldables.activate();
Y.lp.app.links.check_valid_lp_links();
});
Y.on('lp:context:web_link:changed', function(e) {
window.location = e.new_value;
});
});
//]]>
</script>
<script id="base-helper-functions" type="text/javascript">
//<![CDATA[
// This code is pulled from lp.js that needs to be available on every
// request. Pulling here to get it outside the scope of the YUI block.
function setFocusByName(name) {
// Focus the first element matching the given name which can be focused.
var nodes = document.getElementsByName(name);
var i, node;
for (i = 0; i < nodes.length; i++) {
node = nodes[i];
if (node.focus) {
try {
// Trying to focus a hidden element throws an error in IE8.
if (node.offsetHeight !== 0) {
node.focus();
}
} catch (e) {
LPJS.use('console', function(Y) {
Y.log('In setFocusByName(<' +
node.tagName + ' type=' + node.type + '>): ' + e);
});
}
break;
}
}
}
function selectWidget(widget_name, event) {
if (event && (event.keyCode === 9 || event.keyCode === 13)) {
// Avoid firing if user is tabbing through or simply pressing
// enter to submit the form.
return;
}
document.getElementById(widget_name).checked = true;
}
//]]>
</script>
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="/+icing/vanilla-framework-version-4.7.0.min.css" />
</head>
<body id="document" itemscope="" itemtype="http://schema.org/WebPage" class="tab-unknown
main_only
public
yui3-skin-sam">
<div class="yui-d0">
<div id="locationbar" class="login-logout">
<div id="logincontrol"><a href="https://launchpad.net/+login">Log in / Register</a></div>
</div><!--id="locationbar"-->
<div id="maincontent" class="yui-main">
<div class="yui-b" dir="ltr">
<div class="context-publication">
<div id="registration" class="registering">
</div>
</div>
<div id="request-notifications">
</div>
<div>
<!-- Is your project registered yet? -->
<div id="homepage" class="homepage">
<div class="top-portlet">
<img src="/@@/launchpad-logo-and-name.svg" class="homepage__logo" id="launchpad-logo-and-name" alt="Launchpad logo and name" />
</div>
<hr>
<section class="p-strip is-shallow">
<div class="u-fixed-width">
<form id="homepage-searchform" class="p-form p-form--inline" xml:lang="en" lang="en" dir="ltr" method="get" accept-charset="UTF-8" action="https://launchpad.net/+search">
<div class="p-form__group p-form--search">
<label for="search-input" class="u-off-screen">Search</label>
<div class="p-form__control u-clearfix">
<input id="search-input" type="search" name="field.text" value="" autofocus="">
</div>
</div>
<button id="search" class="p-button--positive" type="submit" value="Search Launchpad">Search</button>
</form>
<script type="text/javascript">
LPJS.use('lp', function () {
setFocusByName('field.text');
});
</script>
<div id="homepage-stats" class="u-text--muted">
<strong>49,106</strong>&nbsp;projects,
<strong>2,108,367</strong>&nbsp;bugs,
<strong>1,009,234</strong>&nbsp;branches,
<strong>119,025</strong>&nbsp;Git repositories,
<strong>3,185,634</strong>&nbsp;translations,
<strong>822,311</strong>&nbsp;answers,
<strong>76,426</strong>&nbsp;blueprints,
and&nbsp;counting...
</div>
</div>
</section>
<section class="p-strip is-shallow">
<div class="homepage-whatslaunchpad">
<div class="u-fixed-width u-clearfix">
<h2>Launchpad</h2>
<h4>A software collaboration platform that provides</h4>
</div>
<div class="u-fixed-width u-clearfix">
<div class="row p-divider">
<div class="col-3 p-divider__block">
<h4><a href="https://bugs.launchpad.net/">Bug tracking</a></h4>
<p>One place to track bugs across project boundaries and tools</p>
</div>
<div class="col-3 p-divider__block">
<h4><a href="https://code.launchpad.net/">Code hosting</a> using <a href="https://git-scm.com/">Git</a></h4>
<p>Easy for anyone to get your project's code using Git</p>
</div>
<div class="col-3 p-divider__block">
<h4><a href="https://documentation.ubuntu.com/launchpad/user/how-to/work-with-code-hosted-on-launchpad/create-and-manage-a-merge-proposal/">Code reviews</a></h4>
<p>Full control of who can land code in your project remains with you</p>
</div>
<div class="col-3 p-divider__block">
<h4><a href="https://launchpad.net/ubuntu">Ubuntu package building and hosting</a></h4>
<p>Publishing your software is simple with Personal Package Archives</p>
</div>
</div>
<div class="row p-divider">
<div class="col-3 p-divider__block">
<h4><a href="https://translations.launchpad.net/">Crowd source translations</a></h4>
<p>Build an open community to translate your software into almost any language</p>
</div>
<div class="col-3 p-divider__block">
<h4><a href="https://documentation.ubuntu.com/launchpad/user/Teams/MailingLists">Mailing lists</a></h4>
<p>Find and work with the right people by building a social network of individuals and teams around projects</p>
</div>
<div class="col-3 p-divider__block">
<h4><a href="https://answers.launchpad.net/">Answer tracking and FAQs</a></h4>
<p>Free software thrives on people helping each other when the unexpected happens</p>
</div>
<div class="col-3 p-divider__block">
<h4><a href="https://blueprints.launchpad.net/">Specification tracking</a></h4>
<p>Track ideas and chunks of work as “blueprints”</p>
</div>
</div>
</div>
</div>
</section>
<section class="p-strip is-shallow">
<div id="homepage-getstarted">
<div class="u-fixed-width u-clearfix">
<h2 class="u-float-left">Get started</h2>
</div>
<div class="u-fixed-width u-clearfix">
<span>
Learn more about Launchpad in the
<a href="https://documentation.ubuntu.com/launchpad/">user guide</a>.
</span>
If you're ready, you can:
<ul class="p-matrix">
<li class="p-matrix__item">
<img class="p-matrix__img" src="/@@/add-homepage.png" alt="add">
<div class="p-matrix__content">
<h4 class="p-matrix__title"><a class="p-matrix__link" href="/+login">Create an account</a></h4>
</div>
</li>
<li class="p-matrix__item">
<img class="p-matrix__img" src="/@@/tour-homepage.png" alt="tour">
<div class="p-matrix__content">
<h4 class="p-matrix__title"><a class="p-matrix__link" href="/+tour">Take the tour</a></h4>
</div>
</li>
<li class="p-matrix__item">
<img class="p-matrix__img" src="/@@/question-homepage.png" alt="question">
<div class="p-matrix__content">
<h4 class="p-matrix__title"><a class="p-matrix__link" href="https://answers.launchpad.net/">Find answers</a></h4>
</div>
</li>
</ul>
</div>
</div>
</section>
<section class="p-strip is-shallow">
<div id="homepage-featured">
<div class="u-fixed-width u-clearfix">
<h2 class="u-float-left">Featured projects</h2>
</div>
<div class="u-fixed-width u-clearfix">
<ul class="p-matrix featured-projects-list">
<li class="p-matrix__item">
<img class="p-matrix__img" alt="Beautiful Soup" src="/@@/product-logo">
<div class="p-matrix__content">
<h4 class="p-matrix__title"><a class="p-matrix__link" href="/beautifulsoup">Beautiful Soup</a></h4>
<div class="p-matrix__desc">
<p>A program designed for screen-scraping HTML. The discussion group is at: http://groups.google.com...</p>
</div>
</div>
</li>
<li class="p-matrix__item">
<img class="p-matrix__img" alt="Inkscape" src="https://launchpadlibrarian.net/66795469/ink-lp-logo.png">
<div class="p-matrix__content">
<h4 class="p-matrix__title"><a class="p-matrix__link" href="/inkscape">Inkscape</a></h4>
<div class="p-matrix__desc">
<p>Inkscape is an SVG-based graphics editor featuring alpha
blending, node editing, SVG to PNG exp...</p>
</div>
</div>
</li>
<li class="p-matrix__item">
<img class="p-matrix__img" alt="Launchpad itself" src="https://launchpadlibrarian.net/600817174/Canonical_Launchpad_icon_64px.png">
<div class="p-matrix__content">
<h4 class="p-matrix__title"><a class="p-matrix__link" href="/launchpad">Launchpad itself</a></h4>
<div class="p-matrix__desc">
<p>Launchpad is a set of Web services to help software developers collaborate.</p>
</div>
</div>
</li>
<li class="p-matrix__item">
<img class="p-matrix__img" alt="launchpadlib " src="/@@/product-logo">
<div class="p-matrix__content">
<h4 class="p-matrix__title"><a class="p-matrix__link" href="/launchpadlib">launchpadlib </a></h4>
<div class="p-matrix__desc">
<p>Python client library for Launchpad's web service</p>
</div>
</div>
</li>
<li class="p-matrix__item">
<img class="p-matrix__img" alt="OpenMW" src="/@@/product-logo">
<div class="p-matrix__content">
<h4 class="p-matrix__title"><a class="p-matrix__link" href="/openmw">OpenMW</a></h4>
<div class="p-matrix__desc">
<p>OpenMW is an attempt to reimplement the popular role playing game Morrowind. It aims to be a full...</p>
</div>
</div>
</li>
<li class="p-matrix__item">
<img class="p-matrix__img" alt="OpenShot Video Editor" src="https://launchpadlibrarian.net/250357498/OpenShot-2-Logo.png">
<div class="p-matrix__content">
<h4 class="p-matrix__title"><a class="p-matrix__link" href="/openshot">OpenShot Video Editor</a></h4>
<div class="p-matrix__desc">
<p>OpenShot Video Editor is a free, open-source, non-linear video editor. It can create and edit vid...</p>
</div>
</div>
</li>
<li class="p-matrix__item">
<img class="p-matrix__img" alt="OpenStack" src="https://launchpadlibrarian.net/52042558/os64.png">
<div class="p-matrix__content">
<h4 class="p-matrix__title"><a class="p-matrix__link" href="/openstack">OpenStack</a></h4>
<div class="p-matrix__desc">
<p>The OpenStack Open Source Cloud Mission: to produce the ubiquitous Open Source Cloud Computing pl...</p>
</div>
</div>
</li>
<li class="p-matrix__item">
<img class="p-matrix__img" alt="txpkgupload" src="/@@/product-logo">
<div class="p-matrix__content">
<h4 class="p-matrix__title"><a class="p-matrix__link" href="/txpkgupload">txpkgupload</a></h4>
<div class="p-matrix__desc">
<p>Package upload server used by Launchpad.</p>
</div>
</div>
</li>
<li class="p-matrix__item">
<img class="p-matrix__img" alt="Ubuntu" src="https://launchpadlibrarian.net/606381979/CoF%2064px.png">
<div class="p-matrix__content">
<h4 class="p-matrix__title"><a class="p-matrix__link" href="/ubuntu">Ubuntu</a></h4>
<div class="p-matrix__desc">
<p>Ubuntu is a complete Linux-based operating system, freely available with both community and profe...</p>
</div>
</div>
</li>
</ul>
<ul class="horizontal">
<li>
<strong><a href="/projects">Browse all
49106
projects</a>!</strong>
</li>
</ul>
</div>
</div>
</section>
</div><!-- homepage -->
</div>
</div><!-- yui-b -->
</div><!-- yui-main -->
<!-- yui-b side -->
<!-- yui-t4 -->
<div id="footer" class="footer">
<div class="colophon">
&copy; 2004
<a href="http://canonical.com/">Canonical&nbsp;Ltd.</a>
&nbsp;&bull;&nbsp;
<a href="https://ubuntu.com/legal/launchpad-terms-of-service">Terms of use</a>
&nbsp;&bull;&nbsp;
<a href="https://www.ubuntu.com/legal/dataprivacy">Data privacy</a>
&nbsp;&bull;&nbsp;
<a href="/feedback">Contact Launchpad Support</a>
&nbsp;&bull;&nbsp;
<a href="http://blog.launchpad.net/">Blog</a>
&nbsp;&bull;&nbsp;
<a href="https://canonical.com/careers">Careers</a>
&nbsp;&bull;&nbsp;
<a href="https://ubuntu.social/@launchpadstatus">System status</a>
<span id="lp-version">
&nbsp;&bull;&nbsp;
b042f2d
(<a href="https://documentation.ubuntu.com/launchpad/developer/how-to/get-source-code/">Get the code!</a>)
</span>
</div>
</div>
</div><!-- yui-d0-->
<script id="json-cache-script">LP.cache = {"related_features": {}};</script>
</body>
<!--
Facet name: unknown
Page type: main_only
Has global search: True
Has application tabs: True
Has side portlets: False
At least 22 queries/external actions issued in 0.38 seconds
Features: {'profiling.enabled': None, 'hard_timeout': '5000', 'js.yui_version': None, 'app.maintenance_message': None, 'app.mainsite_only.canonical_url': None, 'baselayout.careers_link.disabled': None, 'visible_render_time': None}
rb042f2d
-->
</html>

Binary file not shown.

Binary file not shown.

Binary file not shown.

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1 @@
../../../lib/arm-linux-gnueabihf/libudev.so.1

View file

@ -0,0 +1 @@
libudev.so.1.7.8

Binary file not shown.

View file

@ -0,0 +1 @@
libusb-1.0.so.0.4.0

View file

@ -0,0 +1 @@
libusb-1.0.so.0.4.0

View file

@ -0,0 +1,11 @@
prefix=/usr
exec_prefix=${prefix}
libdir=${prefix}/lib/arm-linux-gnueabihf
includedir=${prefix}/include
Name: libusb-1.0
Description: C API for USB device access from Linux, Mac OS X, Windows, OpenBSD/NetBSD and Solaris userspace
Version: 1.0.27
Libs: -L${libdir} -lusb-1.0
Libs.private: -ludev
Cflags: -I${includedir}/libusb-1.0

Binary file not shown.

View file

@ -0,0 +1,287 @@
Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
Upstream-Name: systemd
Upstream-Contact: systemd-devel@lists.freedesktop.org
Source: https://www.freedesktop.org/wiki/Software/systemd/
Files: *
Copyright: 2008-2015 Kay Sievers <kay@vrfy.org>
2010-2015 Lennart Poettering
2012-2015 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
2013-2015 Tom Gundersen <teg@jklm.no>
2013-2015 Daniel Mack
2010-2015 Harald Hoyer
2013-2015 David Herrmann
2013, 2014 Thomas H.P. Andersen
2013, 2014 Daniel Buch
2014 Susant Sahani
2009-2015 Intel Corporation
2000, 2005 Red Hat, Inc.
2009 Alan Jenkins <alan-jenkins@tuffmail.co.uk>
2010 ProFUSION embedded systems
2010 Maarten Lankhorst
1995-2004 Miquel van Smoorenburg
1999 Tom Tromey
2011 Michal Schmidt
2012 B. Poettering
2012 Holger Hans Peter Freyther
2012 Dan Walsh
2012 Roberto Sassu
2013 David Strauss
2013 Marius Vollmer
2013 Jan Janssen
2013 Simon Peeters
License: LGPL-2.1+
Files: src/basic/siphash24.h
src/basic/siphash24.c
Copyright: 2012 Jean-Philippe Aumasson <jeanphilippe.aumasson@gmail.com>
2012 Daniel J. Bernstein <djb@cr.yp.to>
License: CC0-1.0
Files: src/shared/linux/*
src/basic/linux/*
Copyright: 2004-2009 Red Hat, Inc.
2011-2014 PLUMgrid
2001-2003 Sistina Software (UK) Limited.
2008 Ian Kent <raven@themaw.net>
1998 David S. Miller >davem@redhat.com>
2001 Jeff Garzik <jgarzik@pobox.com>
2006-2010 Johannes Berg <johannes@sipsolutions.net
2008 Michael Wu <flamingice@sourmilk.net>
2008 Luis Carlos Cobo <luisca@cozybit.com>
2008 Michael Buesch <m@bues.ch>
2008, 2009 Luis R. Rodriguez <lrodriguez@atheros.com>
2008 Jouni Malinen <jouni.malinen@atheros.com>
2008 Colin McCabe <colin@cozybit.com>
2018-2019 Intel Corporation
2007 Oracle.
2009 Wolfgang Grandegger <wg@grandegger.com>
1999 Thomas Davis <tadavis@lbl.gov>
2015 Sabrina Dubroca <sd@queasysnail.net>
1999-2000 Maxim Krasnyansky <max_mk@yahoo.com>
2015-2019 Jason A. Donenfeld <Jason@zx2c4.com>
License: GPL-2 with Linux-syscall-note exception
Files: src/basic/sparse-endian.h
Copyright: 2012 Josh Triplett <josh@joshtriplett.org>
License: Expat
Files: src/basic/MurmurHash2.c
src/basic/MurmurHash2.h
src/libsystemd/sd-journal/lookup3.c
src/libsystemd/sd-journal/lookup3.h
Copyright: none
License: public-domain
You can use this free for any purpose. It's in the public domain. It has no
warranty.
Files: src/udev/ata_id/ata_id.c
src/udev/cdrom_id/cdrom_id.c
src/udev/dmi_memory_id/dmi_memory_id.c
src/udev/mtd_probe/mtd_probe.c
src/udev/mtd_probe/mtd_probe.h
src/udev/mtd_probe/probe_smartmedia.c
src/udev/scsi_id/scsi.h
src/udev/scsi_id/scsi_id.c
src/udev/scsi_id/scsi_id.h
src/udev/scsi_id/scsi_serial.c
src/udev/udevadm.c
src/udev/udevadm-control.c
src/udev/udevadm.h
src/udev/udevadm-info.c
src/udev/udevadm-monitor.c
src/udev/udevadm-settle.c
src/udev/udevadm-test-builtin.c
src/udev/udevadm-test.c
src/udev/udevadm-trigger.c
src/udev/udevadm-util.c
src/udev/udevadm-util.h
src/udev/udev-builtin-blkid.c
src/udev/udev-builtin.h
src/udev/udev-builtin-input_id.c
src/udev/udev-builtin-kmod.c
src/udev/udev-builtin-path_id.c
src/udev/udev-builtin-uaccess.c
src/udev/udev-builtin-usb_id.c
src/udev/udev-ctrl.h
src/udev/udevd.c
src/udev/udevd.h
src/udev/udev-event.c
src/udev/udev-event.h
src/udev/udev-node.c
src/udev/udev-node.h
src/udev/udev-rules.c
src/udev/udev-rules.h
src/udev/udev-watch.c
src/udev/udev-watch.h
src/udev/v4l_id/v4l_id.c
Copyright: 2003-2012 Kay Sievers <kay@vrfy.org>
2003-2004 Greg Kroah-Hartman <greg@kroah.com>
2004 Chris Friesen <chris_friesen@sympatico.ca>
2004, 2009, 2010 David Zeuthen <david@fubar.dk>
2005, 2006 SUSE Linux Products GmbH
2003 IBM Corp.
2007 Hannes Reinecke <hare@suse.de>
2009 Canonical Ltd.
2009 Scott James Remnant <scott@netsplit.com>
2009 Martin Pitt <martin.pitt@ubuntu.com>
2009 Piter Punk <piterpunk@slackware.com>
2009, 2010 Lennart Poettering
2009 Filippo Argiolas <filippo.argiolas@gmail.com>
2010 Maxim Levitsky
2011 ProFUSION embedded systems
2011 Karel Zak <kzak@redhat.com>
2014 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
2014 David Herrmann <dh.herrmann@gmail.com>
2014 Carlos Garnacho <carlosg@gnome.org>
License: GPL-2+
Files: debian/*
Copyright: 2010-2013 Tollef Fog Heen <tfheen@debian.org>
2011 Josh Triplett <josh@joshtriplett.org>
2013-2014 Michael Stapelberg <stapelberg@debian.org>
2013-2020 Martin Pitt <martin.pitt@ubuntu.com>
2013-2022 Michael Biebl <biebl@debian.org>
2013 Daniel Schaal <farbing@web.de>
2013 Guido Günther <agx@sigxcpu.org>
2014-2015 Didier Roche <didrocks@ubuntu.com>
2014-2015 Marco d'Itri <md@linux.it>
2014-2017 Sjoerd Simons <sjoerd.simons@collabora.co.uk>
2014 Ansgar Burchardt <ansgar@debian.org>
2014 Jon Severinsson <jon@severinsson.net>
2015-2019 Felipe Sateler <fsateler@debian.org>
2015 Adam Conrad <adconrad@debian.org>
2015 Andreas Henriksson <andreas@fatal.se>
2015 Christian Seiler <christian@iwakd.de>
2015 Julian Wollrath <jwollrath@web.de>
2016-2018 Evgeny Vereshchagin <evvers@ya.ru>
2016,2018 Laurent Bigonville <bigon@debian.org>
2016-2019 Dimitri John Ledkov <xnox@ubuntu.com>
2016,2019 Michael Prokop <mika@debian.org>
2016 Alexander Kurtz <alexander@kurtz.be>
2016 Antonio Ospite <ao2@ao2.it>
2016 Iain Lane <iain@orangesquash.org.uk>
2016 Simon McVittie <simon.mcvittie@collabora.co.uk>
2017-2018 Nicolas Braud-Santoni <nicolas@braud-santoni.eu>
2017-2019 Martin Pitt <mpitt@debian.org>
2017 Cyril Brulebois <kibi@debian.org>
2017 Ondřej Nový <onovy@debian.org>
2018-2019 Mert Dirik <mertdirik@gmail.com>
2018 Adam Borowski <kilobyte@angband.pl>
2018 Alf Gaida <agaida@siduction.org>
2018 Benjamin Drung <benjamin.drung@profitbricks.com>
2018 Gunnar Hjalmarsson <gunnarhj@ubuntu.com>
2018 Manuel A. Fernandez Montecelo <manuel.montezelo@gmail.com>
2019-2021 Balint Reczey <balint.reczey@canonical.com>
2019-2021 Dan Streetman <ddstreet@canonical.com>
2019 Daniel Kahn Gillmor <dkg@fifthhorseman.net>
2020-2021 Helmut Grohne <helmut@subdivi.de>
2020 Topi Miettinen <toiwoton@gmail.com>
2020 Youfu Zhang <zhangyoufu@gmail.com>
2020 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
2020 наб <nabijaczleweli@nabijaczleweli.xyz>
2021-2022 Luca Boccassi <bluca@debian.org>
2021-2022 Lukas Märdian <slyon@ubuntu.com>
2021 Frantisek Sumsal <frantisek@sumsal.cz>
2021 Ioanna Alifieraki <ioanna-maria.alifieraki@canonical.com>
2021 Jan Kiszka <jan.kiszka@web.de>
2021 Matthias Klumpp <matthias@tenstral.net>
2021 Salvatore Bonaccorso <carnil@debian.org>
License: LGPL-2.1+
License: Expat
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to
deal in the Software without restriction, including without limitation the
rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
sell copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
.
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
IN THE SOFTWARE.
License: GPL-2 with Linux-syscall-note exception
NOTE! This copyright does *not* cover user programs that use kernel services
by normal system calls - this is merely considered normal use of the kernel,
and does *not* fall under the heading of "derived work". Also note that the
GPL below is copyrighted by the Free Software Foundation, but the instance of
code that it refers to (the Linux kernel) is copyrighted by me and others who
actually wrote it.
.
Also note that the only valid version of the GPL as far as the kernel is
concerned is _this_ particular version of the license (ie v2, not v2.2 or v3.x
or whatever), unless explicitly otherwise stated.
.
Linus Torvalds
.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; version 2 of the License.
.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software Foundation, Inc.,
51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
.
On Debian and systems the full text of the GNU General Public
License version 2 can be found in the file
`/usr/share/common-licenses/GPL-2`
License: GPL-2+
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.
.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
.
You should have received a copy of the GNU General Public License along
with this program; if not, write to the Free Software Foundation,
Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
.
On Debian systems, the complete text of the GNU General Public License
version 2 can be found in /usr/share/common-licenses/GPL-2.
License: LGPL-2.1+
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as published by
the Free Software Foundation; either version 2.1, or (at your option)
any later version.
.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Lesser General Public License for more details.
.
You should have received a copy of the GNU Lesser General Public License along
with this program; if not, write to the Free Software Foundation,
Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
.
On Debian systems, the complete text of the GNU Lesser General Public
License version 2.1 can be found in /usr/share/common-licenses/LGPL-2.1.
License: CC0-1.0
To the extent possible under law, the author(s) have dedicated all copyright
and related and neighboring rights to this software to the public domain
worldwide. This software is distributed without any warranty.
.
You should have received a copy of the CC0 Public Domain Dedication along with
this software. If not, see <http://creativecommons.org/publicdomain/zero/1.0/>.
.
On Debian systems, the complete text of the CC0 1.0 Universal license can be
found in /usr/share/common-licenses/CC0-1.0.

View file

@ -0,0 +1 @@
../libusb-1.0-0/README

View file

@ -0,0 +1 @@
../libusb-1.0-0/changelog.Debian.gz

View file

@ -0,0 +1,121 @@
This package was debianized by Christopher L Cheney <ccheney@debian.org> on
Wed, 13 Jun 2001 12:21:44 -0500.
It was downloaded from http://www.libusb.info
Authors:
Alan Ott
Alan Stern
Alex Vatchenko
Andrew Fernandes
Anthony Clay
Artem Egorkine
Aurelien Jarno
Bastien Nocera
Bei Zhang
Benjamin Dobell
Chris Dickens
Colin Walters
Dave Camarillo
David Engraf
David Moore
Davidlohr Bueso
Federico Manzan
Felipe Balbi
Florian Albrechtskirchinger
Francesco Montorsi
Francisco Facioni
Graeme Gill
Gustavo Zacarias
Hans Ulrich Niedermann
Hector Martin
Hoi-Ho Chan
Ilya Konstantinov
James Hanko
Joshua Blake
Karsten Koenig
Konrad Rzepecki
Kuangye Guo
Lars Wirzenius
Luca Longinotti
Martin Koegler
Matthias Bolte
Mike Frysinger
Mikhail Gusarov
Moritz Fischer
Nicholas Corgan
Omri Iluz
Orin Eman
Paul Fertser
Pekka Nikander
Rob Walker
Sean McBride
Sebastian Pipping
Simon Haggett
Thomas Röfer
Tim Roberts
Toby Peterson
Trygve Laugstøl
Uri Lublin
Vasily Khoruzhick
Vegard Storheil Eriksen
Vitali Lovich
Xiaofan Chen
Zoltán Kovács
Роман Донченко
xantares
Copyright:
Copyright (C) 2001 Johannes Erdfelt <johannes@erdfelt.com>
Copyright (C) 2007-2009 Daniel Drake <dsd@gentoo.org>
Copyright (C) 2010-2012 Peter Stuge <peter@stuge.se>
Copyright (C) 2008-2013 Nathan Hjelm <hjelmn@users.sourceforge.net>
Copyright (C) 2009-2013 Pete Batard <pete@akeo.ie>
Copyright (C) 2009-2013 Ludovic Rousseau <ludovic.rousseau@gmail.com>
Copyright (C) 2010-2012 Michael Plante <michael.plante@gmail.com>
Copyright (C) 2011-2013 Hans de Goede <hdegoede@redhat.com>
Copyright (C) 2012-2013 Martin Pieuchot <mpi@openbsd.org>
License of the libusb library and most examples except ezusb and fxload:
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the
Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
MA 02110-1301 USA.
On Debian systems, the complete text of the LGPL license can be found
in the /usr/share/common-licenses/LGPL-2.1 file.
License of ezusb and fxload:
This source code is free software; you can redistribute it
and/or modify it in source code form under the terms of the GNU
General Public License as published by the Free Software
Foundation; either version 2 of the License, or (at your option)
any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301
USA.
On Debian systems, the complete text of the GPL license can be found
in the /usr/share/common-licenses/GPL-2 file.

View file

@ -0,0 +1,29 @@
# libusb
libusb is a library for USB device access from Linux, macOS,
Windows, OpenBSD/NetBSD, Haiku, Solaris userspace, and WebAssembly
via WebUSB.
It is written in C (Haiku backend in C++) and licensed under the GNU
Lesser General Public License version 2.1 or, at your option, any later
version (see COPYING).
libusb is abstracted internally in such a way that it can hopefully
be ported to other operating systems. Please see the PORTING
file for more information.
libusb homepage:
https://libusb.info/
Developers will wish to consult the API documentation:
http://api.libusb.info
Use the mailing list for questions, comments, etc:
http://mailing-list.libusb.info
- Hans de Goede <hdegoede@redhat.com>
- Xiaofan Chen <xiaofanc@gmail.com>
- Ludovic Rousseau <ludovic.rousseau@gmail.com>
- Nathan Hjelm <hjelmn@cs.unm.edu>
- Chris Dickens <christopher.a.dickens@gmail.com>
(Please use the mailing list rather than mailing developers directly)

View file

@ -0,0 +1,121 @@
This package was debianized by Christopher L Cheney <ccheney@debian.org> on
Wed, 13 Jun 2001 12:21:44 -0500.
It was downloaded from http://www.libusb.info
Authors:
Alan Ott
Alan Stern
Alex Vatchenko
Andrew Fernandes
Anthony Clay
Artem Egorkine
Aurelien Jarno
Bastien Nocera
Bei Zhang
Benjamin Dobell
Chris Dickens
Colin Walters
Dave Camarillo
David Engraf
David Moore
Davidlohr Bueso
Federico Manzan
Felipe Balbi
Florian Albrechtskirchinger
Francesco Montorsi
Francisco Facioni
Graeme Gill
Gustavo Zacarias
Hans Ulrich Niedermann
Hector Martin
Hoi-Ho Chan
Ilya Konstantinov
James Hanko
Joshua Blake
Karsten Koenig
Konrad Rzepecki
Kuangye Guo
Lars Wirzenius
Luca Longinotti
Martin Koegler
Matthias Bolte
Mike Frysinger
Mikhail Gusarov
Moritz Fischer
Nicholas Corgan
Omri Iluz
Orin Eman
Paul Fertser
Pekka Nikander
Rob Walker
Sean McBride
Sebastian Pipping
Simon Haggett
Thomas Röfer
Tim Roberts
Toby Peterson
Trygve Laugstøl
Uri Lublin
Vasily Khoruzhick
Vegard Storheil Eriksen
Vitali Lovich
Xiaofan Chen
Zoltán Kovács
Роман Донченко
xantares
Copyright:
Copyright (C) 2001 Johannes Erdfelt <johannes@erdfelt.com>
Copyright (C) 2007-2009 Daniel Drake <dsd@gentoo.org>
Copyright (C) 2010-2012 Peter Stuge <peter@stuge.se>
Copyright (C) 2008-2013 Nathan Hjelm <hjelmn@users.sourceforge.net>
Copyright (C) 2009-2013 Pete Batard <pete@akeo.ie>
Copyright (C) 2009-2013 Ludovic Rousseau <ludovic.rousseau@gmail.com>
Copyright (C) 2010-2012 Michael Plante <michael.plante@gmail.com>
Copyright (C) 2011-2013 Hans de Goede <hdegoede@redhat.com>
Copyright (C) 2012-2013 Martin Pieuchot <mpi@openbsd.org>
License of the libusb library and most examples except ezusb and fxload:
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the
Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
MA 02110-1301 USA.
On Debian systems, the complete text of the LGPL license can be found
in the /usr/share/common-licenses/LGPL-2.1 file.
License of ezusb and fxload:
This source code is free software; you can redistribute it
and/or modify it in source code form under the terms of the GNU
General Public License as published by the Free Software
Foundation; either version 2 of the License, or (at your option)
any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301
USA.
On Debian systems, the complete text of the GPL license can be found
in the /usr/share/common-licenses/GPL-2 file.

5038
sysroot-arm64/index.html Normal file

File diff suppressed because it is too large Load diff

5038
sysroot-arm64/index.html.1 Normal file

File diff suppressed because it is too large Load diff

511
sysroot-arm64/index.html.2 Normal file
View file

@ -0,0 +1,511 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en" dir="ltr">
<head>
<meta charset="UTF-8" />
<title>Launchpad</title>
<link rel="apple-touch-icon" sizes="180x180" href="/@@/apple-touch-icon.png?v=2022" />
<link rel="icon" type="image/png" sizes="32x32" href="/@@/favicon-32x32.png?v=2022" />
<link rel="icon" type="image/png" sizes="16x16" href="/@@/favicon-16x16.png?v=2022" />
<link rel="manifest" href="/@@/site.webmanifest?v=2022" />
<link rel="mask-icon" href="/@@/safari-pinned-tab.svg?v=2022" color="#e9531f" />
<link rel="shortcut icon" href="/@@/favicon.ico?v=2022" />
<meta name="msapplication-TileColor" content="#da532c" />
<meta name="msapplication-config" content="/@@/browserconfig.xml?v=2022" />
<meta name="theme-color" content="#ffffff" />
<link rel="alternate" type="application/atom+xml" href="http://feeds.launchpad.net/announcements.atom" title="All Announcements" />
<link type="text/css" rel="stylesheet" media="screen, print" href="/+icing/revb042f2deb3ecfaa583e2ab7763b0e6f8b706ff27/combo.css" />
<meta property="og:title" content="Launchpad" />
<meta property="og:type" content="website" />
<meta property="og:image" content="/@@/launchpad-og-image.png" />
<meta property="og:url" content="https://launchpad.net/index.html" />
<meta property="og:site_name" content="Launchpad" />
<script type="text/javascript">
var LP = {
cache: {},
links: {}
};
</script>
<script type="text/javascript">var cookie_scope = '; Path=/; Secure; Domain=.launchpad.net';</script>
<script type="text/javascript" src="/+combo/revb042f2deb3ecfaa583e2ab7763b0e6f8b706ff27/?yui/yui/yui-min.js&amp;lp/meta.js&amp;yui/loader/loader-min.js"></script>
<script type="text/javascript">
var raw = null;
if (LP.devmode) {
raw = 'raw';
}
YUI.GlobalConfig = {
combine: true,
comboBase: '/+combo/revb042f2deb3ecfaa583e2ab7763b0e6f8b706ff27/?',
root: 'yui/',
filter: raw,
debug: false,
fetchCSS: false,
maxURLLength: 2000,
groups: {
lp: {
combine: true,
base: '/+combo/revb042f2deb3ecfaa583e2ab7763b0e6f8b706ff27/?lp/',
comboBase: '/+combo/revb042f2deb3ecfaa583e2ab7763b0e6f8b706ff27/?',
root: 'lp/',
// comes from including lp/meta.js
modules: LP_MODULES,
fetchCSS: false
}
}
}</script>
<script type="text/javascript">
// we need this to create a single YUI instance all events and code
// talks across. All instances of YUI().use should be based off of
// LPJS instead.
var LPJS = new YUI();
</script>
<script id="base-layout-load-scripts" type="text/javascript">
//<![CDATA[
LPJS.use('base', 'node', 'console', 'event',
'oop', 'lp', 'lp.app.foldables','lp.app.sorttable',
'lp.app.inlinehelp', 'lp.app.links',
'lp.bugs.bugtask_index', 'lp.bugs.subscribers',
'lp.app.ellipsis', 'lp.code.branchmergeproposal.diff',
'lp.views.global',
function(Y) {
Y.on("domready", function () {
var global_view = new Y.lp.views.Global();
global_view.render();
Y.lp.app.sorttable.SortTable.init();
Y.lp.app.inlinehelp.init_help();
Y.lp.activate_collapsibles();
Y.lp.app.foldables.activate();
Y.lp.app.links.check_valid_lp_links();
});
Y.on('lp:context:web_link:changed', function(e) {
window.location = e.new_value;
});
});
//]]>
</script>
<script id="base-helper-functions" type="text/javascript">
//<![CDATA[
// This code is pulled from lp.js that needs to be available on every
// request. Pulling here to get it outside the scope of the YUI block.
function setFocusByName(name) {
// Focus the first element matching the given name which can be focused.
var nodes = document.getElementsByName(name);
var i, node;
for (i = 0; i < nodes.length; i++) {
node = nodes[i];
if (node.focus) {
try {
// Trying to focus a hidden element throws an error in IE8.
if (node.offsetHeight !== 0) {
node.focus();
}
} catch (e) {
LPJS.use('console', function(Y) {
Y.log('In setFocusByName(<' +
node.tagName + ' type=' + node.type + '>): ' + e);
});
}
break;
}
}
}
function selectWidget(widget_name, event) {
if (event && (event.keyCode === 9 || event.keyCode === 13)) {
// Avoid firing if user is tabbing through or simply pressing
// enter to submit the form.
return;
}
document.getElementById(widget_name).checked = true;
}
//]]>
</script>
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="/+icing/vanilla-framework-version-4.7.0.min.css" />
</head>
<body id="document" itemscope="" itemtype="http://schema.org/WebPage" class="tab-unknown
main_only
public
yui3-skin-sam">
<div class="yui-d0">
<div id="locationbar" class="login-logout">
<div id="logincontrol"><a href="https://launchpad.net/+login">Log in / Register</a></div>
</div><!--id="locationbar"-->
<div id="maincontent" class="yui-main">
<div class="yui-b" dir="ltr">
<div class="context-publication">
<div id="registration" class="registering">
</div>
</div>
<div id="request-notifications">
</div>
<div>
<!-- Is your project registered yet? -->
<div id="homepage" class="homepage">
<div class="top-portlet">
<img src="/@@/launchpad-logo-and-name.svg" class="homepage__logo" id="launchpad-logo-and-name" alt="Launchpad logo and name" />
</div>
<hr>
<section class="p-strip is-shallow">
<div class="u-fixed-width">
<form id="homepage-searchform" class="p-form p-form--inline" xml:lang="en" lang="en" dir="ltr" method="get" accept-charset="UTF-8" action="https://launchpad.net/+search">
<div class="p-form__group p-form--search">
<label for="search-input" class="u-off-screen">Search</label>
<div class="p-form__control u-clearfix">
<input id="search-input" type="search" name="field.text" value="" autofocus="">
</div>
</div>
<button id="search" class="p-button--positive" type="submit" value="Search Launchpad">Search</button>
</form>
<script type="text/javascript">
LPJS.use('lp', function () {
setFocusByName('field.text');
});
</script>
<div id="homepage-stats" class="u-text--muted">
<strong>49,106</strong>&nbsp;projects,
<strong>2,108,367</strong>&nbsp;bugs,
<strong>1,009,234</strong>&nbsp;branches,
<strong>119,025</strong>&nbsp;Git repositories,
<strong>3,185,634</strong>&nbsp;translations,
<strong>822,311</strong>&nbsp;answers,
<strong>76,426</strong>&nbsp;blueprints,
and&nbsp;counting...
</div>
</div>
</section>
<section class="p-strip is-shallow">
<div class="homepage-whatslaunchpad">
<div class="u-fixed-width u-clearfix">
<h2>Launchpad</h2>
<h4>A software collaboration platform that provides</h4>
</div>
<div class="u-fixed-width u-clearfix">
<div class="row p-divider">
<div class="col-3 p-divider__block">
<h4><a href="https://bugs.launchpad.net/">Bug tracking</a></h4>
<p>One place to track bugs across project boundaries and tools</p>
</div>
<div class="col-3 p-divider__block">
<h4><a href="https://code.launchpad.net/">Code hosting</a> using <a href="https://git-scm.com/">Git</a></h4>
<p>Easy for anyone to get your project's code using Git</p>
</div>
<div class="col-3 p-divider__block">
<h4><a href="https://documentation.ubuntu.com/launchpad/user/how-to/work-with-code-hosted-on-launchpad/create-and-manage-a-merge-proposal/">Code reviews</a></h4>
<p>Full control of who can land code in your project remains with you</p>
</div>
<div class="col-3 p-divider__block">
<h4><a href="https://launchpad.net/ubuntu">Ubuntu package building and hosting</a></h4>
<p>Publishing your software is simple with Personal Package Archives</p>
</div>
</div>
<div class="row p-divider">
<div class="col-3 p-divider__block">
<h4><a href="https://translations.launchpad.net/">Crowd source translations</a></h4>
<p>Build an open community to translate your software into almost any language</p>
</div>
<div class="col-3 p-divider__block">
<h4><a href="https://documentation.ubuntu.com/launchpad/user/Teams/MailingLists">Mailing lists</a></h4>
<p>Find and work with the right people by building a social network of individuals and teams around projects</p>
</div>
<div class="col-3 p-divider__block">
<h4><a href="https://answers.launchpad.net/">Answer tracking and FAQs</a></h4>
<p>Free software thrives on people helping each other when the unexpected happens</p>
</div>
<div class="col-3 p-divider__block">
<h4><a href="https://blueprints.launchpad.net/">Specification tracking</a></h4>
<p>Track ideas and chunks of work as “blueprints”</p>
</div>
</div>
</div>
</div>
</section>
<section class="p-strip is-shallow">
<div id="homepage-getstarted">
<div class="u-fixed-width u-clearfix">
<h2 class="u-float-left">Get started</h2>
</div>
<div class="u-fixed-width u-clearfix">
<span>
Learn more about Launchpad in the
<a href="https://documentation.ubuntu.com/launchpad/">user guide</a>.
</span>
If you're ready, you can:
<ul class="p-matrix">
<li class="p-matrix__item">
<img class="p-matrix__img" src="/@@/add-homepage.png" alt="add">
<div class="p-matrix__content">
<h4 class="p-matrix__title"><a class="p-matrix__link" href="/+login">Create an account</a></h4>
</div>
</li>
<li class="p-matrix__item">
<img class="p-matrix__img" src="/@@/tour-homepage.png" alt="tour">
<div class="p-matrix__content">
<h4 class="p-matrix__title"><a class="p-matrix__link" href="/+tour">Take the tour</a></h4>
</div>
</li>
<li class="p-matrix__item">
<img class="p-matrix__img" src="/@@/question-homepage.png" alt="question">
<div class="p-matrix__content">
<h4 class="p-matrix__title"><a class="p-matrix__link" href="https://answers.launchpad.net/">Find answers</a></h4>
</div>
</li>
</ul>
</div>
</div>
</section>
<section class="p-strip is-shallow">
<div id="homepage-featured">
<div class="u-fixed-width u-clearfix">
<h2 class="u-float-left">Featured projects</h2>
</div>
<div class="u-fixed-width u-clearfix">
<ul class="p-matrix featured-projects-list">
<li class="p-matrix__item">
<img class="p-matrix__img" alt="Beautiful Soup" src="/@@/product-logo">
<div class="p-matrix__content">
<h4 class="p-matrix__title"><a class="p-matrix__link" href="/beautifulsoup">Beautiful Soup</a></h4>
<div class="p-matrix__desc">
<p>A program designed for screen-scraping HTML. The discussion group is at: http://groups.google.com...</p>
</div>
</div>
</li>
<li class="p-matrix__item">
<img class="p-matrix__img" alt="Inkscape" src="https://launchpadlibrarian.net/66795469/ink-lp-logo.png">
<div class="p-matrix__content">
<h4 class="p-matrix__title"><a class="p-matrix__link" href="/inkscape">Inkscape</a></h4>
<div class="p-matrix__desc">
<p>Inkscape is an SVG-based graphics editor featuring alpha
blending, node editing, SVG to PNG exp...</p>
</div>
</div>
</li>
<li class="p-matrix__item">
<img class="p-matrix__img" alt="Launchpad itself" src="https://launchpadlibrarian.net/600817174/Canonical_Launchpad_icon_64px.png">
<div class="p-matrix__content">
<h4 class="p-matrix__title"><a class="p-matrix__link" href="/launchpad">Launchpad itself</a></h4>
<div class="p-matrix__desc">
<p>Launchpad is a set of Web services to help software developers collaborate.</p>
</div>
</div>
</li>
<li class="p-matrix__item">
<img class="p-matrix__img" alt="launchpadlib " src="/@@/product-logo">
<div class="p-matrix__content">
<h4 class="p-matrix__title"><a class="p-matrix__link" href="/launchpadlib">launchpadlib </a></h4>
<div class="p-matrix__desc">
<p>Python client library for Launchpad's web service</p>
</div>
</div>
</li>
<li class="p-matrix__item">
<img class="p-matrix__img" alt="OpenMW" src="/@@/product-logo">
<div class="p-matrix__content">
<h4 class="p-matrix__title"><a class="p-matrix__link" href="/openmw">OpenMW</a></h4>
<div class="p-matrix__desc">
<p>OpenMW is an attempt to reimplement the popular role playing game Morrowind. It aims to be a full...</p>
</div>
</div>
</li>
<li class="p-matrix__item">
<img class="p-matrix__img" alt="OpenShot Video Editor" src="https://launchpadlibrarian.net/250357498/OpenShot-2-Logo.png">
<div class="p-matrix__content">
<h4 class="p-matrix__title"><a class="p-matrix__link" href="/openshot">OpenShot Video Editor</a></h4>
<div class="p-matrix__desc">
<p>OpenShot Video Editor is a free, open-source, non-linear video editor. It can create and edit vid...</p>
</div>
</div>
</li>
<li class="p-matrix__item">
<img class="p-matrix__img" alt="OpenStack" src="https://launchpadlibrarian.net/52042558/os64.png">
<div class="p-matrix__content">
<h4 class="p-matrix__title"><a class="p-matrix__link" href="/openstack">OpenStack</a></h4>
<div class="p-matrix__desc">
<p>The OpenStack Open Source Cloud Mission: to produce the ubiquitous Open Source Cloud Computing pl...</p>
</div>
</div>
</li>
<li class="p-matrix__item">
<img class="p-matrix__img" alt="txpkgupload" src="/@@/product-logo">
<div class="p-matrix__content">
<h4 class="p-matrix__title"><a class="p-matrix__link" href="/txpkgupload">txpkgupload</a></h4>
<div class="p-matrix__desc">
<p>Package upload server used by Launchpad.</p>
</div>
</div>
</li>
<li class="p-matrix__item">
<img class="p-matrix__img" alt="Ubuntu" src="https://launchpadlibrarian.net/606381979/CoF%2064px.png">
<div class="p-matrix__content">
<h4 class="p-matrix__title"><a class="p-matrix__link" href="/ubuntu">Ubuntu</a></h4>
<div class="p-matrix__desc">
<p>Ubuntu is a complete Linux-based operating system, freely available with both community and profe...</p>
</div>
</div>
</li>
</ul>
<ul class="horizontal">
<li>
<strong><a href="/projects">Browse all
49106
projects</a>!</strong>
</li>
</ul>
</div>
</div>
</section>
</div><!-- homepage -->
</div>
</div><!-- yui-b -->
</div><!-- yui-main -->
<!-- yui-b side -->
<!-- yui-t4 -->
<div id="footer" class="footer">
<div class="colophon">
&copy; 2004
<a href="http://canonical.com/">Canonical&nbsp;Ltd.</a>
&nbsp;&bull;&nbsp;
<a href="https://ubuntu.com/legal/launchpad-terms-of-service">Terms of use</a>
&nbsp;&bull;&nbsp;
<a href="https://www.ubuntu.com/legal/dataprivacy">Data privacy</a>
&nbsp;&bull;&nbsp;
<a href="/feedback">Contact Launchpad Support</a>
&nbsp;&bull;&nbsp;
<a href="http://blog.launchpad.net/">Blog</a>
&nbsp;&bull;&nbsp;
<a href="https://canonical.com/careers">Careers</a>
&nbsp;&bull;&nbsp;
<a href="https://ubuntu.social/@launchpadstatus">System status</a>
<span id="lp-version">
&nbsp;&bull;&nbsp;
b042f2d
(<a href="https://documentation.ubuntu.com/launchpad/developer/how-to/get-source-code/">Get the code!</a>)
</span>
</div>
</div>
</div><!-- yui-d0-->
<script id="json-cache-script">LP.cache = {"related_features": {}};</script>
</body>
<!--
Facet name: unknown
Page type: main_only
Has global search: True
Has application tabs: True
Has side portlets: False
At least 22 queries/external actions issued in 0.19 seconds
Features: {'profiling.enabled': None, 'hard_timeout': '5000', 'js.yui_version': None, 'app.maintenance_message': None, 'app.mainsite_only.canonical_url': None, 'baselayout.careers_link.disabled': None, 'visible_render_time': None}
rb042f2d
-->
</html>

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1 @@
lib/aarch64-linux-gnu/libudev.so.1

View file

@ -0,0 +1 @@
libudev.so.1.7.8

Binary file not shown.

View file

@ -0,0 +1 @@
libusb-1.0.so.0.4.0

View file

@ -0,0 +1 @@
libusb-1.0.so.0.4.0

View file

@ -0,0 +1,11 @@
prefix=/usr
exec_prefix=${prefix}
libdir=${prefix}/lib/aarch64-linux-gnu
includedir=${prefix}/include
Name: libusb-1.0
Description: C API for USB device access from Linux, Mac OS X, Windows, OpenBSD/NetBSD and Solaris userspace
Version: 1.0.27
Libs: -L${libdir} -lusb-1.0
Libs.private: -ludev
Cflags: -I${includedir}/libusb-1.0

Binary file not shown.

View file

@ -0,0 +1,287 @@
Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
Upstream-Name: systemd
Upstream-Contact: systemd-devel@lists.freedesktop.org
Source: https://www.freedesktop.org/wiki/Software/systemd/
Files: *
Copyright: 2008-2015 Kay Sievers <kay@vrfy.org>
2010-2015 Lennart Poettering
2012-2015 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
2013-2015 Tom Gundersen <teg@jklm.no>
2013-2015 Daniel Mack
2010-2015 Harald Hoyer
2013-2015 David Herrmann
2013, 2014 Thomas H.P. Andersen
2013, 2014 Daniel Buch
2014 Susant Sahani
2009-2015 Intel Corporation
2000, 2005 Red Hat, Inc.
2009 Alan Jenkins <alan-jenkins@tuffmail.co.uk>
2010 ProFUSION embedded systems
2010 Maarten Lankhorst
1995-2004 Miquel van Smoorenburg
1999 Tom Tromey
2011 Michal Schmidt
2012 B. Poettering
2012 Holger Hans Peter Freyther
2012 Dan Walsh
2012 Roberto Sassu
2013 David Strauss
2013 Marius Vollmer
2013 Jan Janssen
2013 Simon Peeters
License: LGPL-2.1+
Files: src/basic/siphash24.h
src/basic/siphash24.c
Copyright: 2012 Jean-Philippe Aumasson <jeanphilippe.aumasson@gmail.com>
2012 Daniel J. Bernstein <djb@cr.yp.to>
License: CC0-1.0
Files: src/shared/linux/*
src/basic/linux/*
Copyright: 2004-2009 Red Hat, Inc.
2011-2014 PLUMgrid
2001-2003 Sistina Software (UK) Limited.
2008 Ian Kent <raven@themaw.net>
1998 David S. Miller >davem@redhat.com>
2001 Jeff Garzik <jgarzik@pobox.com>
2006-2010 Johannes Berg <johannes@sipsolutions.net
2008 Michael Wu <flamingice@sourmilk.net>
2008 Luis Carlos Cobo <luisca@cozybit.com>
2008 Michael Buesch <m@bues.ch>
2008, 2009 Luis R. Rodriguez <lrodriguez@atheros.com>
2008 Jouni Malinen <jouni.malinen@atheros.com>
2008 Colin McCabe <colin@cozybit.com>
2018-2019 Intel Corporation
2007 Oracle.
2009 Wolfgang Grandegger <wg@grandegger.com>
1999 Thomas Davis <tadavis@lbl.gov>
2015 Sabrina Dubroca <sd@queasysnail.net>
1999-2000 Maxim Krasnyansky <max_mk@yahoo.com>
2015-2019 Jason A. Donenfeld <Jason@zx2c4.com>
License: GPL-2 with Linux-syscall-note exception
Files: src/basic/sparse-endian.h
Copyright: 2012 Josh Triplett <josh@joshtriplett.org>
License: Expat
Files: src/basic/MurmurHash2.c
src/basic/MurmurHash2.h
src/libsystemd/sd-journal/lookup3.c
src/libsystemd/sd-journal/lookup3.h
Copyright: none
License: public-domain
You can use this free for any purpose. It's in the public domain. It has no
warranty.
Files: src/udev/ata_id/ata_id.c
src/udev/cdrom_id/cdrom_id.c
src/udev/dmi_memory_id/dmi_memory_id.c
src/udev/mtd_probe/mtd_probe.c
src/udev/mtd_probe/mtd_probe.h
src/udev/mtd_probe/probe_smartmedia.c
src/udev/scsi_id/scsi.h
src/udev/scsi_id/scsi_id.c
src/udev/scsi_id/scsi_id.h
src/udev/scsi_id/scsi_serial.c
src/udev/udevadm.c
src/udev/udevadm-control.c
src/udev/udevadm.h
src/udev/udevadm-info.c
src/udev/udevadm-monitor.c
src/udev/udevadm-settle.c
src/udev/udevadm-test-builtin.c
src/udev/udevadm-test.c
src/udev/udevadm-trigger.c
src/udev/udevadm-util.c
src/udev/udevadm-util.h
src/udev/udev-builtin-blkid.c
src/udev/udev-builtin.h
src/udev/udev-builtin-input_id.c
src/udev/udev-builtin-kmod.c
src/udev/udev-builtin-path_id.c
src/udev/udev-builtin-uaccess.c
src/udev/udev-builtin-usb_id.c
src/udev/udev-ctrl.h
src/udev/udevd.c
src/udev/udevd.h
src/udev/udev-event.c
src/udev/udev-event.h
src/udev/udev-node.c
src/udev/udev-node.h
src/udev/udev-rules.c
src/udev/udev-rules.h
src/udev/udev-watch.c
src/udev/udev-watch.h
src/udev/v4l_id/v4l_id.c
Copyright: 2003-2012 Kay Sievers <kay@vrfy.org>
2003-2004 Greg Kroah-Hartman <greg@kroah.com>
2004 Chris Friesen <chris_friesen@sympatico.ca>
2004, 2009, 2010 David Zeuthen <david@fubar.dk>
2005, 2006 SUSE Linux Products GmbH
2003 IBM Corp.
2007 Hannes Reinecke <hare@suse.de>
2009 Canonical Ltd.
2009 Scott James Remnant <scott@netsplit.com>
2009 Martin Pitt <martin.pitt@ubuntu.com>
2009 Piter Punk <piterpunk@slackware.com>
2009, 2010 Lennart Poettering
2009 Filippo Argiolas <filippo.argiolas@gmail.com>
2010 Maxim Levitsky
2011 ProFUSION embedded systems
2011 Karel Zak <kzak@redhat.com>
2014 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
2014 David Herrmann <dh.herrmann@gmail.com>
2014 Carlos Garnacho <carlosg@gnome.org>
License: GPL-2+
Files: debian/*
Copyright: 2010-2013 Tollef Fog Heen <tfheen@debian.org>
2011 Josh Triplett <josh@joshtriplett.org>
2013-2014 Michael Stapelberg <stapelberg@debian.org>
2013-2020 Martin Pitt <martin.pitt@ubuntu.com>
2013-2022 Michael Biebl <biebl@debian.org>
2013 Daniel Schaal <farbing@web.de>
2013 Guido Günther <agx@sigxcpu.org>
2014-2015 Didier Roche <didrocks@ubuntu.com>
2014-2015 Marco d'Itri <md@linux.it>
2014-2017 Sjoerd Simons <sjoerd.simons@collabora.co.uk>
2014 Ansgar Burchardt <ansgar@debian.org>
2014 Jon Severinsson <jon@severinsson.net>
2015-2019 Felipe Sateler <fsateler@debian.org>
2015 Adam Conrad <adconrad@debian.org>
2015 Andreas Henriksson <andreas@fatal.se>
2015 Christian Seiler <christian@iwakd.de>
2015 Julian Wollrath <jwollrath@web.de>
2016-2018 Evgeny Vereshchagin <evvers@ya.ru>
2016,2018 Laurent Bigonville <bigon@debian.org>
2016-2019 Dimitri John Ledkov <xnox@ubuntu.com>
2016,2019 Michael Prokop <mika@debian.org>
2016 Alexander Kurtz <alexander@kurtz.be>
2016 Antonio Ospite <ao2@ao2.it>
2016 Iain Lane <iain@orangesquash.org.uk>
2016 Simon McVittie <simon.mcvittie@collabora.co.uk>
2017-2018 Nicolas Braud-Santoni <nicolas@braud-santoni.eu>
2017-2019 Martin Pitt <mpitt@debian.org>
2017 Cyril Brulebois <kibi@debian.org>
2017 Ondřej Nový <onovy@debian.org>
2018-2019 Mert Dirik <mertdirik@gmail.com>
2018 Adam Borowski <kilobyte@angband.pl>
2018 Alf Gaida <agaida@siduction.org>
2018 Benjamin Drung <benjamin.drung@profitbricks.com>
2018 Gunnar Hjalmarsson <gunnarhj@ubuntu.com>
2018 Manuel A. Fernandez Montecelo <manuel.montezelo@gmail.com>
2019-2021 Balint Reczey <balint.reczey@canonical.com>
2019-2021 Dan Streetman <ddstreet@canonical.com>
2019 Daniel Kahn Gillmor <dkg@fifthhorseman.net>
2020-2021 Helmut Grohne <helmut@subdivi.de>
2020 Topi Miettinen <toiwoton@gmail.com>
2020 Youfu Zhang <zhangyoufu@gmail.com>
2020 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
2020 наб <nabijaczleweli@nabijaczleweli.xyz>
2021-2022 Luca Boccassi <bluca@debian.org>
2021-2022 Lukas Märdian <slyon@ubuntu.com>
2021 Frantisek Sumsal <frantisek@sumsal.cz>
2021 Ioanna Alifieraki <ioanna-maria.alifieraki@canonical.com>
2021 Jan Kiszka <jan.kiszka@web.de>
2021 Matthias Klumpp <matthias@tenstral.net>
2021 Salvatore Bonaccorso <carnil@debian.org>
License: LGPL-2.1+
License: Expat
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to
deal in the Software without restriction, including without limitation the
rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
sell copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
.
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
IN THE SOFTWARE.
License: GPL-2 with Linux-syscall-note exception
NOTE! This copyright does *not* cover user programs that use kernel services
by normal system calls - this is merely considered normal use of the kernel,
and does *not* fall under the heading of "derived work". Also note that the
GPL below is copyrighted by the Free Software Foundation, but the instance of
code that it refers to (the Linux kernel) is copyrighted by me and others who
actually wrote it.
.
Also note that the only valid version of the GPL as far as the kernel is
concerned is _this_ particular version of the license (ie v2, not v2.2 or v3.x
or whatever), unless explicitly otherwise stated.
.
Linus Torvalds
.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; version 2 of the License.
.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software Foundation, Inc.,
51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
.
On Debian and systems the full text of the GNU General Public
License version 2 can be found in the file
`/usr/share/common-licenses/GPL-2`
License: GPL-2+
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.
.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
.
You should have received a copy of the GNU General Public License along
with this program; if not, write to the Free Software Foundation,
Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
.
On Debian systems, the complete text of the GNU General Public License
version 2 can be found in /usr/share/common-licenses/GPL-2.
License: LGPL-2.1+
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as published by
the Free Software Foundation; either version 2.1, or (at your option)
any later version.
.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Lesser General Public License for more details.
.
You should have received a copy of the GNU Lesser General Public License along
with this program; if not, write to the Free Software Foundation,
Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
.
On Debian systems, the complete text of the GNU Lesser General Public
License version 2.1 can be found in /usr/share/common-licenses/LGPL-2.1.
License: CC0-1.0
To the extent possible under law, the author(s) have dedicated all copyright
and related and neighboring rights to this software to the public domain
worldwide. This software is distributed without any warranty.
.
You should have received a copy of the CC0 Public Domain Dedication along with
this software. If not, see <http://creativecommons.org/publicdomain/zero/1.0/>.
.
On Debian systems, the complete text of the CC0 1.0 Universal license can be
found in /usr/share/common-licenses/CC0-1.0.

View file

@ -0,0 +1 @@
../libusb-1.0-0/README

View file

@ -0,0 +1 @@
../libusb-1.0-0/changelog.Debian.gz

View file

@ -0,0 +1,121 @@
This package was debianized by Christopher L Cheney <ccheney@debian.org> on
Wed, 13 Jun 2001 12:21:44 -0500.
It was downloaded from http://www.libusb.info
Authors:
Alan Ott
Alan Stern
Alex Vatchenko
Andrew Fernandes
Anthony Clay
Artem Egorkine
Aurelien Jarno
Bastien Nocera
Bei Zhang
Benjamin Dobell
Chris Dickens
Colin Walters
Dave Camarillo
David Engraf
David Moore
Davidlohr Bueso
Federico Manzan
Felipe Balbi
Florian Albrechtskirchinger
Francesco Montorsi
Francisco Facioni
Graeme Gill
Gustavo Zacarias
Hans Ulrich Niedermann
Hector Martin
Hoi-Ho Chan
Ilya Konstantinov
James Hanko
Joshua Blake
Karsten Koenig
Konrad Rzepecki
Kuangye Guo
Lars Wirzenius
Luca Longinotti
Martin Koegler
Matthias Bolte
Mike Frysinger
Mikhail Gusarov
Moritz Fischer
Nicholas Corgan
Omri Iluz
Orin Eman
Paul Fertser
Pekka Nikander
Rob Walker
Sean McBride
Sebastian Pipping
Simon Haggett
Thomas Röfer
Tim Roberts
Toby Peterson
Trygve Laugstøl
Uri Lublin
Vasily Khoruzhick
Vegard Storheil Eriksen
Vitali Lovich
Xiaofan Chen
Zoltán Kovács
Роман Донченко
xantares
Copyright:
Copyright (C) 2001 Johannes Erdfelt <johannes@erdfelt.com>
Copyright (C) 2007-2009 Daniel Drake <dsd@gentoo.org>
Copyright (C) 2010-2012 Peter Stuge <peter@stuge.se>
Copyright (C) 2008-2013 Nathan Hjelm <hjelmn@users.sourceforge.net>
Copyright (C) 2009-2013 Pete Batard <pete@akeo.ie>
Copyright (C) 2009-2013 Ludovic Rousseau <ludovic.rousseau@gmail.com>
Copyright (C) 2010-2012 Michael Plante <michael.plante@gmail.com>
Copyright (C) 2011-2013 Hans de Goede <hdegoede@redhat.com>
Copyright (C) 2012-2013 Martin Pieuchot <mpi@openbsd.org>
License of the libusb library and most examples except ezusb and fxload:
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the
Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
MA 02110-1301 USA.
On Debian systems, the complete text of the LGPL license can be found
in the /usr/share/common-licenses/LGPL-2.1 file.
License of ezusb and fxload:
This source code is free software; you can redistribute it
and/or modify it in source code form under the terms of the GNU
General Public License as published by the Free Software
Foundation; either version 2 of the License, or (at your option)
any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301
USA.
On Debian systems, the complete text of the GPL license can be found
in the /usr/share/common-licenses/GPL-2 file.

View file

@ -0,0 +1,29 @@
# libusb
libusb is a library for USB device access from Linux, macOS,
Windows, OpenBSD/NetBSD, Haiku, Solaris userspace, and WebAssembly
via WebUSB.
It is written in C (Haiku backend in C++) and licensed under the GNU
Lesser General Public License version 2.1 or, at your option, any later
version (see COPYING).
libusb is abstracted internally in such a way that it can hopefully
be ported to other operating systems. Please see the PORTING
file for more information.
libusb homepage:
https://libusb.info/
Developers will wish to consult the API documentation:
http://api.libusb.info
Use the mailing list for questions, comments, etc:
http://mailing-list.libusb.info
- Hans de Goede <hdegoede@redhat.com>
- Xiaofan Chen <xiaofanc@gmail.com>
- Ludovic Rousseau <ludovic.rousseau@gmail.com>
- Nathan Hjelm <hjelmn@cs.unm.edu>
- Chris Dickens <christopher.a.dickens@gmail.com>
(Please use the mailing list rather than mailing developers directly)

View file

@ -0,0 +1,121 @@
This package was debianized by Christopher L Cheney <ccheney@debian.org> on
Wed, 13 Jun 2001 12:21:44 -0500.
It was downloaded from http://www.libusb.info
Authors:
Alan Ott
Alan Stern
Alex Vatchenko
Andrew Fernandes
Anthony Clay
Artem Egorkine
Aurelien Jarno
Bastien Nocera
Bei Zhang
Benjamin Dobell
Chris Dickens
Colin Walters
Dave Camarillo
David Engraf
David Moore
Davidlohr Bueso
Federico Manzan
Felipe Balbi
Florian Albrechtskirchinger
Francesco Montorsi
Francisco Facioni
Graeme Gill
Gustavo Zacarias
Hans Ulrich Niedermann
Hector Martin
Hoi-Ho Chan
Ilya Konstantinov
James Hanko
Joshua Blake
Karsten Koenig
Konrad Rzepecki
Kuangye Guo
Lars Wirzenius
Luca Longinotti
Martin Koegler
Matthias Bolte
Mike Frysinger
Mikhail Gusarov
Moritz Fischer
Nicholas Corgan
Omri Iluz
Orin Eman
Paul Fertser
Pekka Nikander
Rob Walker
Sean McBride
Sebastian Pipping
Simon Haggett
Thomas Röfer
Tim Roberts
Toby Peterson
Trygve Laugstøl
Uri Lublin
Vasily Khoruzhick
Vegard Storheil Eriksen
Vitali Lovich
Xiaofan Chen
Zoltán Kovács
Роман Донченко
xantares
Copyright:
Copyright (C) 2001 Johannes Erdfelt <johannes@erdfelt.com>
Copyright (C) 2007-2009 Daniel Drake <dsd@gentoo.org>
Copyright (C) 2010-2012 Peter Stuge <peter@stuge.se>
Copyright (C) 2008-2013 Nathan Hjelm <hjelmn@users.sourceforge.net>
Copyright (C) 2009-2013 Pete Batard <pete@akeo.ie>
Copyright (C) 2009-2013 Ludovic Rousseau <ludovic.rousseau@gmail.com>
Copyright (C) 2010-2012 Michael Plante <michael.plante@gmail.com>
Copyright (C) 2011-2013 Hans de Goede <hdegoede@redhat.com>
Copyright (C) 2012-2013 Martin Pieuchot <mpi@openbsd.org>
License of the libusb library and most examples except ezusb and fxload:
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the
Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
MA 02110-1301 USA.
On Debian systems, the complete text of the LGPL license can be found
in the /usr/share/common-licenses/LGPL-2.1 file.
License of ezusb and fxload:
This source code is free software; you can redistribute it
and/or modify it in source code form under the terms of the GNU
General Public License as published by the Free Software
Foundation; either version 2 of the License, or (at your option)
any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301
USA.
On Debian systems, the complete text of the GPL license can be found
in the /usr/share/common-licenses/GPL-2 file.

View file

@ -1,6 +1,6 @@
{
"version": "0.2",
"date": "02.08.2026 um 09:34",
"version": "0.2.2",
"build_date": "03.08.2026 um 14;01",
"description": "Messung von zwei Spannung und Steuerung von Relais",
"features": [
"ADS1115-Abfrage über go-i2c",

View file

@ -45,11 +45,11 @@ func NewServer(port string, readVolt func(int) float64, toggle func(int), getRel
}
}
func (s *Server) Start() error {
func (s *Server) Start(certFile, keyFile string) error {
http.HandleFunc("/", s.handleIndex)
http.HandleFunc("/api/status", s.handleAPIStatus)
http.HandleFunc("/api/toggle", s.handleAPIToggle)
return http.ListenAndServe(s.port, nil)
return http.ListenAndServeTLS(s.port, certFile, keyFile, nil)
}
func (s *Server) handleIndex(w http.ResponseWriter, r *http.Request) {

View file

@ -91,7 +91,7 @@
<div class="footer-nav">
Live-Aktualisierung aktiv <br>
<span style="font-size: 0.8em; color: #475569; margin-top: 5px; display: block;">
Version v{{.Version}} ({{.BuildDate}})
Version {{.Version}} ({{.BuildDate}})
</span>
</div>
</div>