Merge remote-tracking branch 'upstream/master' into spark/nvidia-dp-detach
This commit is contained in:
commit
e4b00e594c
191 files changed
+20188
-702
No files matched your search
@@ -1,6 +1,6 @@
|
||||
pkgname=1password-beta
|
||||
|
||||
_tarver=8.12.38-25.BETA
|
||||
_tarver=8.12.40-23.BETA
|
||||
case "${CARCH}" in
|
||||
x86_64)
|
||||
_archdir="x64"
|
||||
@@ -9,8 +9,8 @@ case "${CARCH}" in
|
||||
_archdir="arm64"
|
||||
;;
|
||||
esac
|
||||
pkgver=8.12.38_25.BETA
|
||||
pkgrel=25.2
|
||||
pkgver=8.12.40_23.BETA
|
||||
pkgrel=1
|
||||
conflicts=('1password' '1password-beta-bin')
|
||||
pkgdesc="Password manager and secure wallet"
|
||||
arch=('x86_64' 'aarch64')
|
||||
@@ -22,10 +22,8 @@ source=()
|
||||
sha256sums=()
|
||||
source_x86_64=(https://downloads.1password.com/linux/tar/beta/x86_64/1password-${_tarver}.x64.tar.gz{,.sig})
|
||||
source_aarch64=(https://downloads.1password.com/linux/tar/beta/aarch64/1password-${_tarver}.arm64.tar.gz{,.sig})
|
||||
sha256sums_x86_64=('c6d302a2c7404a7ded34a3c4f1c401a43eafeed8b147d128dcb416284c2c2b71'
|
||||
'cc0f00054749c32d77fba31a12a8dece812e409f4b9d81850d2f9b50fab55dca')
|
||||
sha256sums_aarch64=('1fd62cd0df90098dd5e50d22e9a6c0a5221f9db6355b7c848db7af7076b395fd'
|
||||
'4d273b71ab987dcadad9e4fa7cfac7e0173dc4dbe7908c9a3e76af274313dd76')
|
||||
sha256sums_x86_64=('dc1e21c2a6589dacbbb6d56901fdf2bc8c294fd18766a299aca8b84d9f396dcb' 'df3042ed9e897f32888a51447cf0bc977eef130954e7e34f203d96ab036f995a')
|
||||
sha256sums_aarch64=('a1153234abe0f9b7ccbf2d713be548cfd3a66e9fc487efbc42a72fd2d9e6dbbf' 'ae3c9954fcf43b08f50a4ef6429311c80b2605d321fade6643aa1a28a61c0a2a')
|
||||
validpgpkeys=('3FEF9748469ADBE15DA7CA80AC2D62742012EA22')
|
||||
|
||||
package() {
|
||||
|
||||
@@ -0,0 +1,6 @@
|
||||
{
|
||||
"source": "local",
|
||||
"channels": [
|
||||
"edge"
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,36 @@
|
||||
From 375e80ec3826b54618fdd5f2db708c0f2bb936ae Mon Sep 17 00:00:00 2001
|
||||
From: Marcelo Alcantara <maralc@gmail.com>
|
||||
Date: Wed, 16 Sep 2026 00:39:04 +1000
|
||||
Subject: [PATCH] drm: re-read possible CRTCs when rescanning connectors
|
||||
|
||||
A driver can change a connector's possible CRTCs at runtime. Apple's DCP
|
||||
driver narrows a Type-C port's encoder to the display pipeline the fabric
|
||||
routed it to and relies on the following hotplug for userspace to re-read
|
||||
it. possibleCrtcs was only read when the connector was first created, so a
|
||||
rerouted port kept a stale mask and was never assigned its now-free CRTC
|
||||
until the compositor restarted.
|
||||
---
|
||||
src/backend/drm/DRM.cpp | 7 +++++++
|
||||
1 file changed, 7 insertions(+)
|
||||
|
||||
diff --git a/src/backend/drm/DRM.cpp b/src/backend/drm/DRM.cpp
|
||||
index 6618a26..b492dac 100644
|
||||
--- a/src/backend/drm/DRM.cpp
|
||||
+++ b/src/backend/drm/DRM.cpp
|
||||
@@ -1287,6 +1287,13 @@ void Aquamarine::CDRMBackend::scanConnectors() {
|
||||
} else {
|
||||
backend->log(AQ_LOG_DEBUG, std::format("drm: Connector id {} already initialized", connectorID));
|
||||
conn = *it;
|
||||
+
|
||||
+ // drivers may narrow or widen these on hotplug, e.g. when a Type-C port is rerouted to another pipeline
|
||||
+ const auto possibleCrtcs = drmModeConnectorGetPossibleCrtcs(gpu->fd, drmConn);
|
||||
+ if (possibleCrtcs && possibleCrtcs != conn->possibleCrtcs) {
|
||||
+ backend->log(AQ_LOG_DEBUG, std::format("drm: Connector {} possible CRTCs changed {:#x} -> {:#x}", conn->szName, conn->possibleCrtcs, possibleCrtcs));
|
||||
+ conn->possibleCrtcs = possibleCrtcs;
|
||||
+ }
|
||||
}
|
||||
|
||||
conn->status = drmConn->connection;
|
||||
--
|
||||
2.50.1 (Apple Git-155)
|
||||
|
||||
@@ -0,0 +1,63 @@
|
||||
# Maintainer: Caleb Maclennan <caleb@alerque.com>
|
||||
# Contributor: Aaron Blasko <blaskoazzolaaaron [at] gmail.com>
|
||||
#
|
||||
# Arch's aquamarine 0.15.1-1 plus one patch, carried on edge for Apple Silicon:
|
||||
# re-read a connector's possible CRTCs when rescanning, so a Type-C port the
|
||||
# DCP fabric reroutes to another display pipeline gets a CRTC without
|
||||
# restarting the compositor. Drop the carry once hyprwm releases the fix.
|
||||
|
||||
pkgname=aquamarine
|
||||
pkgver=0.15.1
|
||||
pkgrel=1.1
|
||||
pkgdesc='a very light linux rendering backend library'
|
||||
arch=(aarch64)
|
||||
url="https://github.com/hyprwm/$pkgname"
|
||||
license=(BSD-3-Clause)
|
||||
depends=(libgcc
|
||||
libstdc++
|
||||
glibc # libc.so libm.so
|
||||
hyprutils libhyprutils.so
|
||||
libdisplay-info libdisplay-info.so
|
||||
libdrm # libdrm.so
|
||||
libglvnd libEGL.so
|
||||
libinput # libinput.so
|
||||
mesa # libgbm.so
|
||||
opengl-driver
|
||||
pixman
|
||||
seatd libseat.so
|
||||
systemd-libs libudev.so
|
||||
wayland libwayland-client.so
|
||||
wayland-protocols)
|
||||
makedepends=(cmake
|
||||
hyprwayland-scanner)
|
||||
provides=("lib$pkgname.so")
|
||||
_archive="$pkgname-$pkgver"
|
||||
source=("$url/archive/v$pkgver/$_archive.tar.gz"
|
||||
0001-drm-re-read-possible-CRTCs-when-rescanning-connectors.patch)
|
||||
sha256sums=('2f9de98c0bd1b7b1b09c576e390a2fef436449762fb334163c414f0c300296f2'
|
||||
'50e9e38ff915b18074dc9b5dd1d07d7f24e340e99f254476d6abe578eece7864')
|
||||
|
||||
prepare() {
|
||||
cd "$_archive"
|
||||
patch -Np1 -i ../0001-drm-re-read-possible-CRTCs-when-rescanning-connectors.patch
|
||||
}
|
||||
|
||||
build() {
|
||||
cd "$_archive"
|
||||
# cc1plus needs more than 8 MiB of stack for DRM.cpp. GCC raises its own
|
||||
# limit natively, but under QEMU user-mode emulation (the aarch64 builder)
|
||||
# the guest stack is fixed at exec and setrlimit is ignored, so the compiler
|
||||
# segfaults. QEMU reads this at exec; native builds ignore it. The object
|
||||
# code is identical either way.
|
||||
export QEMU_STACK_SIZE=64M
|
||||
cmake -B build \
|
||||
-D CMAKE_INSTALL_PREFIX=/usr \
|
||||
-D CMAKE_BUILD_TYPE=Release
|
||||
cmake --build build
|
||||
}
|
||||
|
||||
package() {
|
||||
cd "$_archive"
|
||||
DESTDIR="$pkgdir" cmake --install build
|
||||
install -Dm0644 -t "$pkgdir/usr/share/licenses/$pkgname" LICENSE
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
{
|
||||
"source": "local",
|
||||
"upstream": {
|
||||
"watch": {
|
||||
"pattern": "v(?P<version>[0-9]+(?:\\.[0-9]+)*)",
|
||||
"git_tags": "https://github.com/AsahiLinux/avd-fw.git"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,51 @@
|
||||
# Open replacement firmware for the Apple Video Decoder.
|
||||
# Built from AsahiLinux sources, without extracting proprietary firmware.
|
||||
|
||||
pkgname=avd-fw
|
||||
pkgver=0.1
|
||||
pkgrel=1
|
||||
pkgdesc='Open replacement firmware for the Apple Video Decoder (AVD) on Apple Silicon'
|
||||
# This recipe uses the native ARM linker and serves Apple Silicon systems.
|
||||
# Restrict both builds and publication to aarch64.
|
||||
arch=('aarch64')
|
||||
url='https://github.com/AsahiLinux/avd-fw'
|
||||
license=('MIT')
|
||||
# clang cross-compiles to arm-none-eabi out of the box, so no arm-none-eabi
|
||||
# toolchain is required; llvm supplies llvm-objcopy, which meson.build looks
|
||||
# up by name to turn each linked ELF into a padded raw image.
|
||||
makedepends=('meson' 'clang' 'llvm')
|
||||
# !buildflags is load-bearing: makepkg's CFLAGS/LDFLAGS target the aarch64 host
|
||||
# and would be injected into a bare-metal Cortex-M3 build. !strip keeps makepkg
|
||||
# from running the host strip over raw firmware images.
|
||||
options=('!strip' '!debug' '!buildflags' '!lto')
|
||||
source=("$pkgname-$pkgver.tar.gz::$url/archive/refs/tags/v$pkgver.tar.gz")
|
||||
sha256sums=('2e131244275cb15c94243e41eec8a2a665ec895cfe3a818181549db991e62c67')
|
||||
|
||||
build() {
|
||||
# The cross file selects clang, pins the host machine to cortex-m3 and sets
|
||||
# libdir=lib, which lands the images in /usr/lib/firmware/apple.
|
||||
#
|
||||
# Optimization is pinned to match upstream's Makefile (-O2). Meson's default
|
||||
# buildtype is "debug" (-O0 -g), which would ship unoptimized firmware; the
|
||||
# MMIO accessors in src/util.c go through a volatile typedef, so -O2 cannot
|
||||
# elide register reads or writes.
|
||||
meson setup \
|
||||
--cross-file "$pkgname-$pkgver/llvm.ini" \
|
||||
--prefix=/usr \
|
||||
-Doptimization=2 \
|
||||
-Ddebug=false \
|
||||
"$pkgname-$pkgver" build
|
||||
|
||||
meson compile -C build
|
||||
}
|
||||
|
||||
package() {
|
||||
meson install -C build --destdir "$pkgdir"
|
||||
|
||||
# meson installs custom_target outputs 0755; these are firmware blobs, not
|
||||
# programs, and every other firmware file on the system is 0644.
|
||||
chmod 644 "$pkgdir"/usr/lib/firmware/apple/*.bin
|
||||
|
||||
install -Dm644 "$pkgname-$pkgver/LICENSE" \
|
||||
"$pkgdir/usr/share/licenses/$pkgname/LICENSE"
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
{
|
||||
"source": "local",
|
||||
"release_ring": "fast",
|
||||
"upstream": {
|
||||
"watch": {
|
||||
"debian": "https://brave-browser-apt-release.s3.brave.com/dists/stable/main/binary-amd64/Packages",
|
||||
"package": "brave-browser",
|
||||
"pattern": "(?P<version>[0-9]+(?:\\.[0-9]+)*)"
|
||||
}
|
||||
},
|
||||
"origin": {
|
||||
"aur": "brave-bin",
|
||||
"commit": "d86e5479e163dac19d7ace3de472710e6eb06eea"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,62 @@
|
||||
# Maintainer: brave <aur-release@brave.com>
|
||||
# Contributor: Caleb Maclennan <caleb@alerque.com>
|
||||
# Contributor: José Miguel Sarasola <jmsaraur@gmail.com>
|
||||
# Contributor: Như Bảo Trương <28810481+nhubaotruong@users.noreply.github.com>
|
||||
# Contributor: Andrés Rodríguez <hello@andres.codes>
|
||||
# Contributor: Jacob Mischka <jacob@mischka.me>
|
||||
# Contributor: Manuel Mazzuola <origin.of@gmail.com>
|
||||
# Contributor: Simón Oroño <simonorono@protonmail.com>
|
||||
# Contributor: now-im <now im 627 @ gmail . com>
|
||||
# Contributor: Giusy Digital <kurmikon at libero dot it>
|
||||
|
||||
pkgname=brave-bin
|
||||
pkgver=1.96.59
|
||||
pkgrel=1
|
||||
epoch=1
|
||||
pkgdesc='Web browser that blocks ads and trackers by default (binary release)'
|
||||
arch=(x86_64 aarch64)
|
||||
url=https://brave.com
|
||||
license=(MPL2 BSD custom:chromium)
|
||||
depends=(alsa-lib
|
||||
gtk3
|
||||
libxss
|
||||
nss
|
||||
ttf-font)
|
||||
optdepends=('cups: Printer support'
|
||||
'libgnome-keyring: Enable GNOME keyring support'
|
||||
'libnotify: Native notification support')
|
||||
provides=("${pkgname%-bin}=$pkgver" 'brave-browser')
|
||||
conflicts=("${pkgname%-bin}")
|
||||
options=(!strip)
|
||||
source=($pkgname.sh brave-browser.desktop)
|
||||
source_x86_64=(${pkgname}-${pkgver}-x86_64.zip::https://github.com/brave/brave-browser/releases/download/v${pkgver}/brave-browser-${pkgver}-linux-amd64.zip)
|
||||
source_aarch64=(${pkgname}-${pkgver}-aarch64.zip::https://github.com/brave/brave-browser/releases/download/v${pkgver}/brave-browser-${pkgver}-linux-arm64.zip)
|
||||
|
||||
noextract=(${pkgname}-${pkgver}-x86_64.zip ${pkgname}-${pkgver}-aarch64.zip)
|
||||
sha256sums=('75a87dd17b42fcc6f27adfd16c82bed1c08e9251b07d2012f8d49f7412fa1d00'
|
||||
'c07276b69c7304981525ecb022f92daf7ae125a4fb05ac3442157b50826e257a')
|
||||
sha256sums_x86_64=('ee36d0fb939ebdf1922d47d7b4cb8879507733b2a76605a31bfe9dede3297139')
|
||||
sha256sums_aarch64=('faa8a26f1e7c0c3b8632633503f82e571a798212d8e6fe9baba77f0c73509867')
|
||||
|
||||
prepare() {
|
||||
mkdir -p brave
|
||||
bsdtar -xf "$pkgname-$pkgver-$CARCH.zip" -C brave
|
||||
chmod +x brave/brave
|
||||
}
|
||||
|
||||
package() {
|
||||
install -dm0755 "$pkgdir/opt"
|
||||
cp -a brave "$pkgdir/opt/$pkgname"
|
||||
|
||||
# allow firejail users to get the suid sandbox working
|
||||
chmod 4755 "$pkgdir/opt/brave-bin/chrome-sandbox"
|
||||
|
||||
install -Dm0755 "$pkgname.sh" "$pkgdir/usr/bin/brave"
|
||||
install -Dm0644 -t "$pkgdir/usr/share/applications/" "brave-browser.desktop"
|
||||
install -Dm0644 -t "$pkgdir/usr/share/licenses/$pkgname/" brave/LICENSE
|
||||
pushd "$pkgdir/usr/"
|
||||
for size in 16x16 24x24 32x32 48x48 64x64 128x128 256x256; do
|
||||
install -Dm0644 "$pkgdir/opt/$pkgname/product_logo_${size/x*/}.png" \
|
||||
"share/icons/hicolor/$size/apps/brave-desktop.png"
|
||||
done
|
||||
}
|
||||
@@ -0,0 +1,25 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
XDG_CONFIG_HOME="${XDG_CONFIG_HOME:-"${HOME}/.config"}"
|
||||
|
||||
CONF_FILE="${XDG_CONFIG_HOME}/brave-flags.conf"
|
||||
|
||||
if
|
||||
test -f "${CONF_FILE}"
|
||||
then
|
||||
mapfile -t CONF_LIST < "${CONF_FILE}"
|
||||
fi
|
||||
|
||||
for CONF_LINE in "${CONF_LIST[@]}"
|
||||
do
|
||||
if ! [[
|
||||
"${CONF_LINE}" =~ ^[[:space:]]*(#|$)
|
||||
]]
|
||||
then
|
||||
FLAG_LIST+=("${CONF_LINE}")
|
||||
fi
|
||||
done
|
||||
|
||||
export CHROME_VERSION_EXTRA='stable'
|
||||
|
||||
exec /opt/brave-bin/brave "${FLAG_LIST[@]}" "${@}"
|
||||
@@ -0,0 +1,224 @@
|
||||
[Desktop Entry]
|
||||
Version=1.0
|
||||
Name=Brave
|
||||
# Only KDE 4 seems to use GenericName, so we reuse the KDE strings.
|
||||
# From Ubuntu's language-pack-kde-XX-base packages, version 9.04-20090413.
|
||||
GenericName=Web Browser
|
||||
GenericName[ar]=متصفح الشبكة
|
||||
GenericName[bg]=Уеб браузър
|
||||
GenericName[ca]=Navegador web
|
||||
GenericName[cs]=WWW prohlížeč
|
||||
GenericName[da]=Browser
|
||||
GenericName[de]=Web-Browser
|
||||
GenericName[el]=Περιηγητής ιστού
|
||||
GenericName[en_GB]=Web Browser
|
||||
GenericName[es]=Navegador web
|
||||
GenericName[et]=Veebibrauser
|
||||
GenericName[fi]=WWW-selain
|
||||
GenericName[fr]=Navigateur Web
|
||||
GenericName[gu]=વેબ બ્રાઉઝર
|
||||
GenericName[he]=דפדפן אינטרנט
|
||||
GenericName[hi]=वेब ब्राउज़र
|
||||
GenericName[hu]=Webböngésző
|
||||
GenericName[it]=Browser Web
|
||||
GenericName[ja]=ウェブブラウザ
|
||||
GenericName[kn]=ಜಾಲ ವೀಕ್ಷಕ
|
||||
GenericName[ko]=웹 브라우저
|
||||
GenericName[lt]=Žiniatinklio naršyklė
|
||||
GenericName[lv]=Tīmekļa pārlūks
|
||||
GenericName[ml]=വെബ് ബ്രൌസര്
|
||||
GenericName[mr]=वेब ब्राऊजर
|
||||
GenericName[nb]=Nettleser
|
||||
GenericName[nl]=Webbrowser
|
||||
GenericName[pl]=Przeglądarka WWW
|
||||
GenericName[pt]=Navegador Web
|
||||
GenericName[pt_BR]=Navegador da Internet
|
||||
GenericName[ro]=Navigator de Internet
|
||||
GenericName[ru]=Веб-браузер
|
||||
GenericName[sl]=Spletni brskalnik
|
||||
GenericName[sv]=Webbläsare
|
||||
GenericName[ta]=இணைய உலாவி
|
||||
GenericName[th]=เว็บเบราว์เซอร์
|
||||
GenericName[tr]=Web Tarayıcı
|
||||
GenericName[uk]=Навігатор Тенет
|
||||
GenericName[zh_CN]=网页浏览器
|
||||
GenericName[zh_HK]=網頁瀏覽器
|
||||
GenericName[zh_TW]=網頁瀏覽器
|
||||
# Not translated in KDE, from Epiphany 2.26.1-0ubuntu1.
|
||||
GenericName[bn]=ওয়েব ব্রাউজার
|
||||
GenericName[fil]=Web Browser
|
||||
GenericName[hr]=Web preglednik
|
||||
GenericName[id]=Browser Web
|
||||
GenericName[or]=ଓ୍ବେବ ବ୍ରାଉଜର
|
||||
GenericName[sk]=WWW prehliadač
|
||||
GenericName[sr]=Интернет прегледник
|
||||
GenericName[te]=మహాతల అన్వేషి
|
||||
GenericName[vi]=Bộ duyệt Web
|
||||
# Gnome and KDE 3 uses Comment.
|
||||
Comment=Access the Internet
|
||||
Comment[ar]=الدخول إلى الإنترنت
|
||||
Comment[bg]=Достъп до интернет
|
||||
Comment[bn]=ইন্টারনেটটি অ্যাক্সেস করুন
|
||||
Comment[ca]=Accedeix a Internet
|
||||
Comment[cs]=Přístup k internetu
|
||||
Comment[da]=Få adgang til internettet
|
||||
Comment[de]=Internetzugriff
|
||||
Comment[el]=Πρόσβαση στο Διαδίκτυο
|
||||
Comment[en_GB]=Access the Internet
|
||||
Comment[es]=Accede a Internet.
|
||||
Comment[et]=Pääs Internetti
|
||||
Comment[fi]=Käytä internetiä
|
||||
Comment[fil]=I-access ang Internet
|
||||
Comment[fr]=Accéder à Internet
|
||||
Comment[gu]=ઇંટરનેટ ઍક્સેસ કરો
|
||||
Comment[he]=גישה אל האינטרנט
|
||||
Comment[hi]=इंटरनेट तक पहुंच स्थापित करें
|
||||
Comment[hr]=Pristup Internetu
|
||||
Comment[hu]=Internetelérés
|
||||
Comment[id]=Akses Internet
|
||||
Comment[it]=Accesso a Internet
|
||||
Comment[ja]=インターネットにアクセス
|
||||
Comment[kn]=ಇಂಟರ್ನೆಟ್ ಅನ್ನು ಪ್ರವೇಶಿಸಿ
|
||||
Comment[ko]=인터넷 연결
|
||||
Comment[lt]=Interneto prieiga
|
||||
Comment[lv]=Piekļūt internetam
|
||||
Comment[ml]=ഇന്റര്നെറ്റ് ആക്സസ് ചെയ്യുക
|
||||
Comment[mr]=इंटरनेटमध्ये प्रवेश करा
|
||||
Comment[nb]=Gå til Internett
|
||||
Comment[nl]=Verbinding maken met internet
|
||||
Comment[or]=ଇଣ୍ଟର୍ନେଟ୍ ପ୍ରବେଶ କରନ୍ତୁ
|
||||
Comment[pl]=Skorzystaj z internetu
|
||||
Comment[pt]=Aceder à Internet
|
||||
Comment[pt_BR]=Acessar a internet
|
||||
Comment[ro]=Accesaţi Internetul
|
||||
Comment[ru]=Доступ в Интернет
|
||||
Comment[sk]=Prístup do siete Internet
|
||||
Comment[sl]=Dostop do interneta
|
||||
Comment[sr]=Приступите Интернету
|
||||
Comment[sv]=Gå ut på Internet
|
||||
Comment[ta]=இணையத்தை அணுகுதல்
|
||||
Comment[te]=ఇంటర్నెట్ను ఆక్సెస్ చెయ్యండి
|
||||
Comment[th]=เข้าถึงอินเทอร์เน็ต
|
||||
Comment[tr]=İnternet'e erişin
|
||||
Comment[uk]=Доступ до Інтернету
|
||||
Comment[vi]=Truy cập Internet
|
||||
Comment[zh_CN]=访问互联网
|
||||
Comment[zh_HK]=連線到網際網路
|
||||
Comment[zh_TW]=連線到網際網路
|
||||
StartupNotify=true
|
||||
StartupWMClass=brave-browser
|
||||
TryExec=brave
|
||||
Exec=brave %U
|
||||
Terminal=false
|
||||
Icon=brave-desktop
|
||||
Type=Application
|
||||
Categories=Network;WebBrowser;
|
||||
MimeType=application/pdf;application/rdf+xml;application/rss+xml;application/xhtml+xml;application/xhtml_xml;application/xml;image/gif;image/jpeg;image/png;image/webp;text/html;text/xml;x-scheme-handler/http;x-scheme-handler/https;x-scheme-handler/ipfs;x-scheme-handler/ipns;
|
||||
Actions=new-window;new-private-window;
|
||||
|
||||
[Desktop Action new-window]
|
||||
Name=New Window
|
||||
Name[am]=አዲስ መስኮት
|
||||
Name[ar]=نافذة جديدة
|
||||
Name[bg]=Нов прозорец
|
||||
Name[bn]=নতুন উইন্ডো
|
||||
Name[ca]=Finestra nova
|
||||
Name[cs]=Nové okno
|
||||
Name[da]=Nyt vindue
|
||||
Name[de]=Neues Fenster
|
||||
Name[el]=Νέο Παράθυρο
|
||||
Name[en_GB]=New Window
|
||||
Name[es]=Nueva ventana
|
||||
Name[et]=Uus aken
|
||||
Name[fa]=پنجره جدید
|
||||
Name[fi]=Uusi ikkuna
|
||||
Name[fil]=New Window
|
||||
Name[fr]=Nouvelle fenêtre
|
||||
Name[gu]=નવી વિંડો
|
||||
Name[hi]=नई विंडो
|
||||
Name[hr]=Novi prozor
|
||||
Name[hu]=Új ablak
|
||||
Name[id]=Jendela Baru
|
||||
Name[it]=Nuova finestra
|
||||
Name[iw]=חלון חדש
|
||||
Name[ja]=新規ウインドウ
|
||||
Name[kn]=ಹೊಸ ವಿಂಡೊ
|
||||
Name[ko]=새 창
|
||||
Name[lt]=Naujas langas
|
||||
Name[lv]=Jauns logs
|
||||
Name[ml]=പുതിയ വിന്ഡോ
|
||||
Name[mr]=नवीन विंडो
|
||||
Name[nl]=Nieuw venster
|
||||
Name[no]=Nytt vindu
|
||||
Name[pl]=Nowe okno
|
||||
Name[pt]=Nova janela
|
||||
Name[pt_BR]=Nova janela
|
||||
Name[ro]=Fereastră nouă
|
||||
Name[ru]=Новое окно
|
||||
Name[sk]=Nové okno
|
||||
Name[sl]=Novo okno
|
||||
Name[sr]=Нови прозор
|
||||
Name[sv]=Nytt fönster
|
||||
Name[sw]=Dirisha Jipya
|
||||
Name[ta]=புதிய சாளரம்
|
||||
Name[te]=క్రొత్త విండో
|
||||
Name[th]=หน้าต่างใหม่
|
||||
Name[tr]=Yeni Pencere
|
||||
Name[uk]=Нове вікно
|
||||
Name[vi]=Cửa sổ Mới
|
||||
Name[zh_CN]=新建窗口
|
||||
Name[zh_TW]=開新視窗
|
||||
Exec=brave
|
||||
|
||||
[Desktop Action new-private-window]
|
||||
Name=New Incognito Window
|
||||
Name[ar]=نافذة جديدة للتصفح المتخفي
|
||||
Name[bg]=Нов прозорец „инкогнито“
|
||||
Name[bn]=নতুন ছদ্মবেশী উইন্ডো
|
||||
Name[ca]=Finestra d'incògnit nova
|
||||
Name[cs]=Nové anonymní okno
|
||||
Name[da]=Nyt inkognitovindue
|
||||
Name[de]=Neues Inkognito-Fenster
|
||||
Name[el]=Νέο παράθυρο για ανώνυμη περιήγηση
|
||||
Name[en_GB]=New Incognito window
|
||||
Name[es]=Nueva ventana de incógnito
|
||||
Name[et]=Uus inkognito aken
|
||||
Name[fa]=پنجره جدید حالت ناشناس
|
||||
Name[fi]=Uusi incognito-ikkuna
|
||||
Name[fil]=Bagong Incognito window
|
||||
Name[fr]=Nouvelle fenêtre de navigation privée
|
||||
Name[gu]=નવી છુપી વિંડો
|
||||
Name[hi]=नई गुप्त विंडो
|
||||
Name[hr]=Novi anoniman prozor
|
||||
Name[hu]=Új Inkognitóablak
|
||||
Name[id]=Jendela Penyamaran baru
|
||||
Name[it]=Nuova finestra di navigazione in incognito
|
||||
Name[iw]=חלון חדש לגלישה בסתר
|
||||
Name[ja]=新しいシークレット ウィンドウ
|
||||
Name[kn]=ಹೊಸ ಅಜ್ಞಾತ ವಿಂಡೋ
|
||||
Name[ko]=새 시크릿 창
|
||||
Name[lt]=Naujas inkognito langas
|
||||
Name[lv]=Jauns inkognito režīma logs
|
||||
Name[ml]=പുതിയ വേഷ പ്രച്ഛന്ന വിന്ഡോ
|
||||
Name[mr]=नवीन गुप्त विंडो
|
||||
Name[nl]=Nieuw incognitovenster
|
||||
Name[no]=Nytt inkognitovindu
|
||||
Name[pl]=Nowe okno incognito
|
||||
Name[pt]=Nova janela de navegação anónima
|
||||
Name[pt_BR]=Nova janela anônima
|
||||
Name[ro]=Fereastră nouă incognito
|
||||
Name[ru]=Новое окно в режиме инкогнито
|
||||
Name[sk]=Nové okno inkognito
|
||||
Name[sl]=Novo okno brez beleženja zgodovine
|
||||
Name[sr]=Нови прозор за прегледање без архивирања
|
||||
Name[sv]=Nytt inkognitofönster
|
||||
Name[ta]=புதிய மறைநிலைச் சாளரம்
|
||||
Name[te]=క్రొత్త అజ్ఞాత విండో
|
||||
Name[th]=หน้าต่างใหม่ที่ไม่ระบุตัวตน
|
||||
Name[tr]=Yeni Gizli pencere
|
||||
Name[uk]=Нове вікно в режимі анонімного перегляду
|
||||
Name[vi]=Cửa sổ ẩn danh mới
|
||||
Name[zh_CN]=新建隐身窗口
|
||||
Name[zh_TW]=新增無痕式視窗
|
||||
Exec=brave --incognito
|
||||
MimeType=x-scheme-handler/unknown;x-scheme-handler/about;text/html;text/xml;application/xhtml_xml;image/webp;x-scheme-handler/http;x-scheme-handler/https;
|
||||
@@ -0,0 +1,15 @@
|
||||
{
|
||||
"source": "local",
|
||||
"release_ring": "fast",
|
||||
"upstream": {
|
||||
"watch": {
|
||||
"debian": "https://brave-browser-apt-release.s3.brave.com/dists/stable/main/binary-amd64/Packages",
|
||||
"package": "brave-origin",
|
||||
"pattern": "(?P<version>[0-9]+(?:\\.[0-9]+)*)"
|
||||
}
|
||||
},
|
||||
"origin": {
|
||||
"aur": "brave-origin-bin",
|
||||
"commit": "f2daecf7b7576cd445094ed09c3c783619ca0eb2"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,46 @@
|
||||
# Maintainer: brave <aur-release@brave.com>
|
||||
|
||||
pkgname=brave-origin-bin
|
||||
pkgver=1.96.59
|
||||
pkgrel=1
|
||||
epoch=1
|
||||
pkgdesc='The minimalist browser from the makers of Brave (binary release).'
|
||||
arch=(x86_64 aarch64)
|
||||
url=https://brave.com/origin/download
|
||||
license=('MPL2')
|
||||
depends=(alsa-lib gtk3 libxss nss ttf-font)
|
||||
optdepends=('cups: Printer support'
|
||||
'libgnome-keyring: Enable GNOME keyring support'
|
||||
'libnotify: Native notification support')
|
||||
provides=("$pkgname" "${pkgname%-bin}")
|
||||
conflicts=("${pkgname%-bin}")
|
||||
options=(!strip)
|
||||
source=($pkgname.sh "${pkgname%-bin}.desktop")
|
||||
source_x86_64=("${pkgname}-${pkgver}-x86_64.zip::https://github.com/brave/brave-browser/releases/download/v${pkgver}/brave-origin-${pkgver}-linux-amd64.zip")
|
||||
source_aarch64=("${pkgname}-${pkgver}-aarch64.zip::https://github.com/brave/brave-browser/releases/download/v${pkgver}/brave-origin-${pkgver}-linux-arm64.zip")
|
||||
|
||||
noextract=("${pkgname}-${pkgver}-x86_64.zip" "${pkgname}-${pkgver}-aarch64.zip")
|
||||
sha256sums=('5ff70ee473f35c2fc7642c422c8abe20aaac0d7cc30a3292744eb9fbeafba1bd'
|
||||
'c70bc71c696b6764247070375ae111bd76c8bad9c7bda4d46e03975b95571a8a')
|
||||
sha256sums_x86_64=('ad71abea5326d15bbe813a1e9592bcf2383f2ecc083a432313ca80b4436d3797')
|
||||
sha256sums_aarch64=('68d1fb922e0ad25099081a32a7f0611f2657345726590b697eaf6bbb820848ee')
|
||||
|
||||
prepare() {
|
||||
mkdir -p brave
|
||||
bsdtar -xf "$pkgname-$pkgver-$CARCH.zip" -C brave
|
||||
chmod +x brave/brave
|
||||
}
|
||||
|
||||
package() {
|
||||
install -dm0755 "$pkgdir/opt"
|
||||
cp -a brave "$pkgdir/opt/$pkgname"
|
||||
chmod 4755 "$pkgdir/opt/$pkgname/chrome-sandbox"
|
||||
install -Dm0755 "$pkgname.sh" "$pkgdir/usr/bin/${pkgname%-bin}"
|
||||
install -Dm0644 -t "$pkgdir/usr/share/applications/" "${pkgname%-bin}.desktop"
|
||||
install -Dm0644 -t "$pkgdir/usr/share/licenses/$pkgname/" brave/LICENSE
|
||||
pushd "$pkgdir/usr/"
|
||||
for size in 16x16 24x24 32x32 48x48 64x64 128x128 256x256; do
|
||||
install -Dm0644 "$pkgdir/opt/$pkgname/product_logo_${size/x*/}.png" \
|
||||
"share/icons/hicolor/$size/apps/brave-origin.png"
|
||||
done
|
||||
}
|
||||
+25
@@ -0,0 +1,25 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
XDG_CONFIG_HOME="${XDG_CONFIG_HOME:-"${HOME}/.config"}"
|
||||
|
||||
CONF_FILE="${XDG_CONFIG_HOME}/brave-origin-flags.conf"
|
||||
|
||||
if
|
||||
test -f "${CONF_FILE}"
|
||||
then
|
||||
mapfile -t CONF_LIST < "${CONF_FILE}"
|
||||
fi
|
||||
|
||||
for CONF_LINE in "${CONF_LIST[@]}"
|
||||
do
|
||||
if ! [[
|
||||
"${CONF_LINE}" =~ ^[[:space:]]*(#|$)
|
||||
]]
|
||||
then
|
||||
FLAG_LIST+=("${CONF_LINE}")
|
||||
fi
|
||||
done
|
||||
|
||||
export CHROME_VERSION_EXTRA='stable'
|
||||
|
||||
exec /opt/brave-origin-bin/brave-origin "${FLAG_LIST[@]}" "${@}"
|
||||
@@ -0,0 +1,222 @@
|
||||
[Desktop Entry]
|
||||
Version=1.0
|
||||
Name=Brave Origin
|
||||
# Only KDE 4 seems to use GenericName, so we reuse the KDE strings.
|
||||
# From Ubuntu's language-pack-kde-XX-base packages, version 9.04-20090413.
|
||||
GenericName=Web Browser
|
||||
GenericName[ar]=متصفح الشبكة
|
||||
GenericName[bg]=Уеб браузър
|
||||
GenericName[ca]=Navegador web
|
||||
GenericName[cs]=WWW prohlížeč
|
||||
GenericName[da]=Browser
|
||||
GenericName[de]=Web-Browser
|
||||
GenericName[el]=Περιηγητής ιστού
|
||||
GenericName[en_GB]=Web Browser
|
||||
GenericName[es]=Navegador web
|
||||
GenericName[et]=Veebibrauser
|
||||
GenericName[fi]=WWW-selain
|
||||
GenericName[fr]=Navigateur Web
|
||||
GenericName[gu]=વેબ બ્રાઉઝર
|
||||
GenericName[he]=דפדפן אינטרנט
|
||||
GenericName[hi]=वेब ब्राउज़र
|
||||
GenericName[hu]=Webböngésző
|
||||
GenericName[it]=Browser Web
|
||||
GenericName[ja]=ウェブブラウザ
|
||||
GenericName[kn]=ಜಾಲ ವೀಕ್ಷಕ
|
||||
GenericName[ko]=웹 브라우저
|
||||
GenericName[lt]=Žiniatinklio naršyklė
|
||||
GenericName[lv]=Tīmekļa pārlūks
|
||||
GenericName[ml]=വെബ് ബ്രൌസര്
|
||||
GenericName[mr]=वेब ब्राऊजर
|
||||
GenericName[nb]=Nettleser
|
||||
GenericName[nl]=Webbrowser
|
||||
GenericName[pl]=Przeglądarka WWW
|
||||
GenericName[pt]=Navegador Web
|
||||
GenericName[pt_BR]=Navegador da Internet
|
||||
GenericName[ro]=Navigator de Internet
|
||||
GenericName[ru]=Веб-браузер
|
||||
GenericName[sl]=Spletni brskalnik
|
||||
GenericName[sv]=Webbläsare
|
||||
GenericName[ta]=இணைய உலாவி
|
||||
GenericName[th]=เว็บเบราว์เซอร์
|
||||
GenericName[tr]=Web Tarayıcı
|
||||
GenericName[uk]=Навігатор Тенет
|
||||
GenericName[zh_CN]=网页浏览器
|
||||
GenericName[zh_HK]=網頁瀏覽器
|
||||
GenericName[zh_TW]=網頁瀏覽器
|
||||
# Not translated in KDE, from Epiphany 2.26.1-0ubuntu1.
|
||||
GenericName[bn]=ওয়েব ব্রাউজার
|
||||
GenericName[fil]=Web Browser
|
||||
GenericName[hr]=Web preglednik
|
||||
GenericName[id]=Browser Web
|
||||
GenericName[or]=ଓ୍ବେବ ବ୍ରାଉଜର
|
||||
GenericName[sk]=WWW prehliadač
|
||||
GenericName[sr]=Интернет прегледник
|
||||
GenericName[te]=మహాతల అన్వేషి
|
||||
GenericName[vi]=Bộ duyệt Web
|
||||
# Gnome and KDE 3 uses Comment.
|
||||
Comment=Access the Internet
|
||||
Comment[ar]=الدخول إلى الإنترنت
|
||||
Comment[bg]=Достъп до интернет
|
||||
Comment[bn]=ইন্টারনেটটি অ্যাক্সেস করুন
|
||||
Comment[ca]=Accedeix a Internet
|
||||
Comment[cs]=Přístup k internetu
|
||||
Comment[da]=Få adgang til internettet
|
||||
Comment[de]=Internetzugriff
|
||||
Comment[el]=Πρόσβαση στο Διαδίκτυο
|
||||
Comment[en_GB]=Access the Internet
|
||||
Comment[es]=Accede a Internet.
|
||||
Comment[et]=Pääs Internetti
|
||||
Comment[fi]=Käytä internetiä
|
||||
Comment[fil]=I-access ang Internet
|
||||
Comment[fr]=Accéder à Internet
|
||||
Comment[gu]=ઇંટરનેટ ઍક્સેસ કરો
|
||||
Comment[he]=גישה אל האינטרנט
|
||||
Comment[hi]=इंटरनेट तक पहुंच स्थापित करें
|
||||
Comment[hr]=Pristup Internetu
|
||||
Comment[hu]=Internetelérés
|
||||
Comment[id]=Akses Internet
|
||||
Comment[it]=Accesso a Internet
|
||||
Comment[ja]=インターネットにアクセス
|
||||
Comment[kn]=ಇಂಟರ್ನೆಟ್ ಅನ್ನು ಪ್ರವೇಶಿಸಿ
|
||||
Comment[ko]=인터넷 연결
|
||||
Comment[lt]=Interneto prieiga
|
||||
Comment[lv]=Piekļūt internetam
|
||||
Comment[ml]=ഇന്റര്നെറ്റ് ആക്സസ് ചെയ്യുക
|
||||
Comment[mr]=इंटरनेटमध्ये प्रवेश करा
|
||||
Comment[nb]=Gå til Internett
|
||||
Comment[nl]=Verbinding maken met internet
|
||||
Comment[or]=ଇଣ୍ଟର୍ନେଟ୍ ପ୍ରବେଶ କରନ୍ତୁ
|
||||
Comment[pl]=Skorzystaj z internetu
|
||||
Comment[pt]=Aceder à Internet
|
||||
Comment[pt_BR]=Acessar a internet
|
||||
Comment[ro]=Accesaţi Internetul
|
||||
Comment[ru]=Доступ в Интернет
|
||||
Comment[sk]=Prístup do siete Internet
|
||||
Comment[sl]=Dostop do interneta
|
||||
Comment[sr]=Приступите Интернету
|
||||
Comment[sv]=Gå ut på Internet
|
||||
Comment[ta]=இணையத்தை அணுகுதல்
|
||||
Comment[te]=ఇంటర్నెట్ను ఆక్సెస్ చెయ్యండి
|
||||
Comment[th]=เข้าถึงอินเทอร์เน็ต
|
||||
Comment[tr]=İnternet'e erişin
|
||||
Comment[uk]=Доступ до Інтернету
|
||||
Comment[vi]=Truy cập Internet
|
||||
Comment[zh_CN]=访问互联网
|
||||
Comment[zh_HK]=連線到網際網路
|
||||
Comment[zh_TW]=連線到網際網路
|
||||
StartupNotify=true
|
||||
StartupWMClass=brave-origin
|
||||
Exec=brave-origin %U
|
||||
Terminal=false
|
||||
Icon=brave-origin
|
||||
Type=Application
|
||||
Categories=Network;WebBrowser;
|
||||
MimeType=application/pdf;application/rdf+xml;application/rss+xml;application/xhtml+xml;application/xhtml_xml;application/xml;image/gif;image/jpeg;image/png;image/webp;text/html;text/xml;x-scheme-handler/http;x-scheme-handler/https;x-scheme-handler/chromium;
|
||||
Actions=new-window;new-private-window;
|
||||
|
||||
[Desktop Action new-window]
|
||||
Name=New Window
|
||||
Name[am]=አዲስ መስኮት
|
||||
Name[ar]=نافذة جديدة
|
||||
Name[bg]=Нов прозорец
|
||||
Name[bn]=নতুন উইন্ডো
|
||||
Name[ca]=Finestra nova
|
||||
Name[cs]=Nové okno
|
||||
Name[da]=Nyt vindue
|
||||
Name[de]=Neues Fenster
|
||||
Name[el]=Νέο Παράθυρο
|
||||
Name[en_GB]=New Window
|
||||
Name[es]=Nueva ventana
|
||||
Name[et]=Uus aken
|
||||
Name[fa]=پنجره جدید
|
||||
Name[fi]=Uusi ikkuna
|
||||
Name[fil]=New Window
|
||||
Name[fr]=Nouvelle fenêtre
|
||||
Name[gu]=નવી વિંડો
|
||||
Name[hi]=नई विंडो
|
||||
Name[hr]=Novi prozor
|
||||
Name[hu]=Új ablak
|
||||
Name[id]=Jendela Baru
|
||||
Name[it]=Nuova finestra
|
||||
Name[iw]=חלון חדש
|
||||
Name[ja]=新規ウインドウ
|
||||
Name[kn]=ಹೊಸ ವಿಂಡೊ
|
||||
Name[ko]=새 창
|
||||
Name[lt]=Naujas langas
|
||||
Name[lv]=Jauns logs
|
||||
Name[ml]=പുതിയ വിന്ഡോ
|
||||
Name[mr]=नवीन विंडो
|
||||
Name[nl]=Nieuw venster
|
||||
Name[no]=Nytt vindu
|
||||
Name[pl]=Nowe okno
|
||||
Name[pt]=Nova janela
|
||||
Name[pt_BR]=Nova janela
|
||||
Name[ro]=Fereastră nouă
|
||||
Name[ru]=Новое окно
|
||||
Name[sk]=Nové okno
|
||||
Name[sl]=Novo okno
|
||||
Name[sr]=Нови прозор
|
||||
Name[sv]=Nytt fönster
|
||||
Name[sw]=Dirisha Jipya
|
||||
Name[ta]=புதிய சாளரம்
|
||||
Name[te]=క్రొత్త విండో
|
||||
Name[th]=หน้าต่างใหม่
|
||||
Name[tr]=Yeni Pencere
|
||||
Name[uk]=Нове вікно
|
||||
Name[vi]=Cửa sổ Mới
|
||||
Name[zh_CN]=新建窗口
|
||||
Name[zh_TW]=開新視窗
|
||||
Exec=brave-origin
|
||||
|
||||
[Desktop Action new-private-window]
|
||||
Name=New Incognito Window
|
||||
Name[ar]=نافذة جديدة للتصفح المتخفي
|
||||
Name[bg]=Нов прозорец „инкогнито“
|
||||
Name[bn]=নতুন ছদ্মবেশী উইন্ডো
|
||||
Name[ca]=Finestra d'incògnit nova
|
||||
Name[cs]=Nové anonymní okno
|
||||
Name[da]=Nyt inkognitovindue
|
||||
Name[de]=Neues Inkognito-Fenster
|
||||
Name[el]=Νέο παράθυρο για ανώνυμη περιήγηση
|
||||
Name[en_GB]=New Incognito window
|
||||
Name[es]=Nueva ventana de incógnito
|
||||
Name[et]=Uus inkognito aken
|
||||
Name[fa]=پنجره جدید حالت ناشناس
|
||||
Name[fi]=Uusi incognito-ikkuna
|
||||
Name[fil]=Bagong Incognito window
|
||||
Name[fr]=Nouvelle fenêtre de navigation privée
|
||||
Name[gu]=નવી છુપી વિંડો
|
||||
Name[hi]=नई गुप्त विंडो
|
||||
Name[hr]=Novi anoniman prozor
|
||||
Name[hu]=Új Inkognitóablak
|
||||
Name[id]=Jendela Penyamaran baru
|
||||
Name[it]=Nuova finestra di navigazione in incognito
|
||||
Name[iw]=חלון חדש לגלישה בסתר
|
||||
Name[ja]=新しいシークレット ウィンドウ
|
||||
Name[kn]=ಹೊಸ ಅಜ್ಞಾತ ವಿಂಡೋ
|
||||
Name[ko]=새 시크릿 창
|
||||
Name[lt]=Naujas inkognito langas
|
||||
Name[lv]=Jauns inkognito režīma logs
|
||||
Name[ml]=പുതിയ വേഷ പ്രച്ഛന്ന വിന്ഡോ
|
||||
Name[mr]=नवीन गुप्त विंडो
|
||||
Name[nl]=Nieuw incognitovenster
|
||||
Name[no]=Nytt inkognitovindu
|
||||
Name[pl]=Nowe okno incognito
|
||||
Name[pt]=Nova janela de navegação anónima
|
||||
Name[pt_BR]=Nova janela anônima
|
||||
Name[ro]=Fereastră nouă incognito
|
||||
Name[ru]=Новое окно в режиме инкогнито
|
||||
Name[sk]=Nové okno inkognito
|
||||
Name[sl]=Novo okno brez beleženja zgodovine
|
||||
Name[sr]=Нови прозор за прегледање без архивирања
|
||||
Name[sv]=Nytt inkognitofönster
|
||||
Name[ta]=புதிய மறைநிலைச் சாளரம்
|
||||
Name[te]=క్రొత్త అజ్ఞాత విండో
|
||||
Name[th]=หน้าต่างใหม่ที่ไม่ระบุตัวตน
|
||||
Name[tr]=Yeni Gizli pencere
|
||||
Name[uk]=Нове вікно в режимі анонімного перегляду
|
||||
Name[vi]=Cửa sổ ẩn danh mới
|
||||
Name[zh_CN]=新建隐身窗口
|
||||
Name[zh_TW]=新增無痕式視窗
|
||||
Exec=brave-origin --incognito
|
||||
@@ -4,7 +4,7 @@
|
||||
# Automation repository: https://github.com/fabifont/claude-code-aur
|
||||
|
||||
pkgname=claude-code
|
||||
pkgver=2.1.278
|
||||
pkgver=2.1.283
|
||||
pkgrel=1
|
||||
pkgdesc="An agentic coding tool that lives in your terminal"
|
||||
arch=('x86_64' 'aarch64')
|
||||
@@ -29,8 +29,8 @@ source_x86_64=("claude-${pkgver}-x86_64::https://downloads.claude.ai/claude-code
|
||||
source_aarch64=("claude-${pkgver}-aarch64::https://downloads.claude.ai/claude-code-releases/${pkgver}/linux-arm64/claude")
|
||||
|
||||
sha256sums=('SKIP')
|
||||
sha256sums_x86_64=('5c4735937844e84f8a93306e841a5b0e12252909b07870f789b190468da147ab')
|
||||
sha256sums_aarch64=('7de6cab134e48321148e30182c98614118e8f4666819412bead45865190b34ed')
|
||||
sha256sums_x86_64=('1859583ce32920595c61ef868bee52e1b1594f7486db209935e01f1e5e804ae2')
|
||||
sha256sums_aarch64=('346d294f0103d6fc0de11ac953579b5c62dfa90698a4cfc486b6f927c615e697')
|
||||
|
||||
package() {
|
||||
install -Dm755 "${srcdir}/claude-${pkgver}-${CARCH}" "${pkgdir}/opt/claude-code/bin/claude"
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
# repository's package index.
|
||||
|
||||
pkgname=claude-desktop
|
||||
pkgver=2.2553.1
|
||||
pkgver=2.7032.0
|
||||
pkgrel=1
|
||||
pkgdesc="Official Claude desktop app with Claude Code"
|
||||
arch=('x86_64' 'aarch64')
|
||||
@@ -63,8 +63,8 @@ source_x86_64=("${_deb_x86_64}::${_pool}/${_deb_x86_64}")
|
||||
source_aarch64=("${_deb_aarch64}::${_pool}/${_deb_aarch64}")
|
||||
noextract=("${_deb_x86_64}" "${_deb_aarch64}")
|
||||
sha256sums=('edfdbc63b65891ef7c481b07086c7e630fc102c042b6ed65331a52fcaf72b14a')
|
||||
sha256sums_x86_64=('6700fdd84e77a6b8c93912c2f69eb5d1e40fa99bcd9d37f438f809ef2a6fe6f8')
|
||||
sha256sums_aarch64=('0003a6f9605a210f03c38670d62cd59c71153c2702aa4427e4cabe2e2e5f3390')
|
||||
sha256sums_x86_64=('1e7f4504bca5b2f6b2d3c4123d145d727647e77f2ee2d046850711e61e7d7b11')
|
||||
sha256sums_aarch64=('6dca79fa4c8b65267780b5460c627159852e2dfa2ad011d03a0488f7bf226ec3')
|
||||
|
||||
package() {
|
||||
cd "${srcdir}"
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
# Maintainer: caarlos0 <carlos@charm.sh>
|
||||
|
||||
pkgname='crush-bin'
|
||||
pkgver=0.96.0
|
||||
pkgver=0.96.1
|
||||
pkgrel=1
|
||||
pkgdesc='A powerful terminal-based AI assistant for developers, providing intelligent coding assistance directly in your terminal.'
|
||||
url='https://charm.sh/crush'
|
||||
@@ -13,16 +13,16 @@ provides=('crush')
|
||||
conflicts=('crush')
|
||||
|
||||
source_aarch64=("${pkgname}_${pkgver}_aarch64.tar.gz::https://github.com/charmbracelet/crush/releases/download/v${pkgver}/crush_${pkgver}_Linux_arm64.tar.gz")
|
||||
sha256sums_aarch64=('667062a39d499506b0fe151148f8d7a1c5cb5722902080d44bb3dd2ddafbf5c1')
|
||||
sha256sums_aarch64=('4bfe4a37aedeb4219d51eb7a25b837304084070378e77fd578999764b487f01f')
|
||||
|
||||
source_armv7h=("${pkgname}_${pkgver}_armv7h.tar.gz::https://github.com/charmbracelet/crush/releases/download/v${pkgver}/crush_${pkgver}_Linux_armv7.tar.gz")
|
||||
sha256sums_armv7h=('1de4c1ccb237743e4debb8c302df612fcef5c9b3b5378f5b65c8c6f8bc15cbfa')
|
||||
sha256sums_armv7h=('e2926383bdf97ab97e52e214fe810570abcff39d00cfe72eaf07eca958f1214c')
|
||||
|
||||
source_i686=("${pkgname}_${pkgver}_i686.tar.gz::https://github.com/charmbracelet/crush/releases/download/v${pkgver}/crush_${pkgver}_Linux_i386.tar.gz")
|
||||
sha256sums_i686=('4ec66431565de5721afb7afdd99e45ff6bc9c7e667bd18d9696ea7c5622e158d')
|
||||
sha256sums_i686=('bff753c454b1e9f18d5c3ab4f4395e3e6a505d1a4c033d50653e004647c166c2')
|
||||
|
||||
source_x86_64=("${pkgname}_${pkgver}_x86_64.tar.gz::https://github.com/charmbracelet/crush/releases/download/v${pkgver}/crush_${pkgver}_Linux_x86_64.tar.gz")
|
||||
sha256sums_x86_64=('5b33303a404acacf761c027e9fa9e69d4d2dd050c2690abe40877c49574b7475')
|
||||
sha256sums_x86_64=('5411b0906a82162dcab4a99071d70accf1caad0eee69789416dd607943c6680d')
|
||||
|
||||
package() {
|
||||
case "$CARCH" in
|
||||
|
||||
@@ -18,7 +18,7 @@
|
||||
# binary to point at pm.sh, a stand-in that declines and names pacman instead.
|
||||
|
||||
pkgname=cua-driver-bin
|
||||
pkgver=0.28.2
|
||||
pkgver=0.29.1
|
||||
pkgrel=1
|
||||
pkgdesc="Computer-use driver for native GUI apps: accessibility-tree snapshots and input injection"
|
||||
arch=('x86_64' 'aarch64')
|
||||
@@ -46,8 +46,8 @@ source_x86_64=("https://github.com/trycua/cua/releases/download/cua-driver-rs-v$
|
||||
source_aarch64=("https://github.com/trycua/cua/releases/download/cua-driver-rs-v${pkgver}/cua-driver-rs-${pkgver}-linux-arm64.tar.gz")
|
||||
sha256sums=('c0779290c1d4783169aa3dbfb55feb505e563ef8a004bbf55298ceffcfbda8d9'
|
||||
'c76e251c3ed424200eac52bec35ba534336307fabd83a175ab0b47e2084ab0d8')
|
||||
sha256sums_x86_64=('8f3e5b669e2bcd98d0eecc64f40640aac77f358b6332a06abc6ee79991620f7d')
|
||||
sha256sums_aarch64=('cadd7e6b757c3ce50f2b5f6e273c154ea48450fb5fcaff744209b382915eddf5')
|
||||
sha256sums_x86_64=('61a0c0f24d6b03e31bb7a73390db875ecf0de2ce53aa435eadb03d70979d79a5')
|
||||
sha256sums_aarch64=('47c1efa081057c9c1a18e45b20cb7dd0d7d2313520d18ba7d0d35f271005fe19')
|
||||
|
||||
case "${CARCH}" in
|
||||
x86_64) _platform="linux-x86_64" ;;
|
||||
|
||||
@@ -1,33 +1,53 @@
|
||||
# Maintainer: Gunther Schulz <dev@guntherschulz.de>
|
||||
|
||||
pkgname=cursor-bin
|
||||
pkgver=3.21.16
|
||||
pkgrel=2
|
||||
pkgver=3.22.7
|
||||
pkgrel=1
|
||||
pkgdesc='AI-first coding environment'
|
||||
arch=('x86_64')
|
||||
arch=('x86_64' 'aarch64')
|
||||
url="https://www.cursor.com"
|
||||
license=('LicenseRef-Cursor_EULA')
|
||||
# upstream uses Electron newer than internal VSCode
|
||||
_electron=electron42
|
||||
depends=(xdg-utils ripgrep $_electron nodejs
|
||||
'gcc-libs' 'hicolor-icon-theme' 'libxkbfile')
|
||||
depends=(xdg-utils gcc-libs hicolor-icon-theme libxkbfile)
|
||||
depends_x86_64=(ripgrep $_electron nodejs)
|
||||
# ARM retains bundled Electron because electron42 is unavailable in ALARM.
|
||||
depends_aarch64=(
|
||||
alsa-lib at-spi2-core ca-certificates cairo curl dbus expat glib2 glibc gtk3
|
||||
libcups libsecret libx11 libxcb libxcomposite libxdamage libxext libxfixes
|
||||
libxkbcommon libxrandr mesa nspr nss pango systemd-libs which
|
||||
)
|
||||
options=(!strip !debug) # Don't break ext of VSCode
|
||||
_commit=8ae78e8eee1e63479c7e0504b664bc0a80c6800f
|
||||
source=("https://downloads.cursor.com/production/${_commit}/linux/x64/deb/amd64/deb/cursor_${pkgver}_amd64.deb"
|
||||
_commit=37076c6c3f9e253c0fa2305197e45befd13a2268
|
||||
source_x86_64=("https://downloads.cursor.com/production/${_commit}/linux/x64/deb/amd64/deb/cursor_${pkgver}_amd64.deb"
|
||||
"https://gitlab.archlinux.org/archlinux/packaging/packages/code/-/raw/main/code."{sh,mjs}
|
||||
rg.sh)
|
||||
sha512sums=('032c86a5d51f154ce36b1a0bf34aa06b2d117666b4372a787ea3117fc0b2b1686e952c721388f2eaf7787f2e0581378c98608048126f7470df2e85e9dbd75ca4' '937299c6cb6be2f8d25f7dbc95cf77423875c5f8353b8bd6cd7cc8e5603cbf8405b14dbf8bd615db2e3b36ed680fc8e1909410815f7f8587b7267a699e00ab37' '793f9ff6306e3992ac89802d98110cba288ea1181a901467333293b7d76182ef9792c2a39ff49d9347a18a174b1f42bc58862091dff583f4146c2704eea28033' 'e79fe7659f59d1ae02fc68816399bfd31587315df6cdb6ccf1d0ca76f7cdc692c2a42b30591c0091147bd97ef14b1c7745dc26bd7cb3ea6bba45698e5044fa2a')
|
||||
noextract=(cursor_${pkgver}_amd64.deb) # avoid double tarball
|
||||
sha512sums_x86_64=('f061675a7de3552feebda762d6ff5a296035e13527da9405c73e89cde9604137c52a1c8681ef29ad6aeb37b29ad6ab3733fe46e342950850241c91041c6613f8' '937299c6cb6be2f8d25f7dbc95cf77423875c5f8353b8bd6cd7cc8e5603cbf8405b14dbf8bd615db2e3b36ed680fc8e1909410815f7f8587b7267a699e00ab37' '793f9ff6306e3992ac89802d98110cba288ea1181a901467333293b7d76182ef9792c2a39ff49d9347a18a174b1f42bc58862091dff583f4146c2704eea28033' 'e79fe7659f59d1ae02fc68816399bfd31587315df6cdb6ccf1d0ca76f7cdc692c2a42b30591c0091147bd97ef14b1c7745dc26bd7cb3ea6bba45698e5044fa2a')
|
||||
source_aarch64=("https://downloads.cursor.com/production/${_commit}/linux/arm64/deb/arm64/deb/cursor_${pkgver}_arm64.deb")
|
||||
sha512sums_aarch64=('32d64ef0fdd9f672c374ea33a1d1d6b6b68df3f598f840b33215f5428c491deba1d587b93f4460ffe0f815126b928dd3befed8878b6fe6b3bcd375da8bed1716')
|
||||
noextract=(cursor_${pkgver}_amd64.deb cursor_${pkgver}_arm64.deb) # avoid double tarball
|
||||
_app=usr/share/cursor/resources/app
|
||||
package() {
|
||||
# Exclude electron
|
||||
bsdtar -xOf ${noextract[0]} data.tar.xz | tar -xJf - -C "$pkgdir" \
|
||||
--exclude 'usr/share/cursor/[^r]*' --exclude 'usr/share/cursor/*.pak'
|
||||
local deb="cursor_${pkgver}_amd64.deb"
|
||||
local -a excludes=(--exclude 'usr/share/cursor/[^r]*' --exclude 'usr/share/cursor/*.pak')
|
||||
if [[ "$CARCH" == aarch64 ]]; then
|
||||
deb="cursor_${pkgver}_arm64.deb"
|
||||
# Keep bundled Electron; omit Debian's AppArmor and sysctl settings.
|
||||
excludes=(--exclude './etc')
|
||||
fi
|
||||
bsdtar -xOf "${srcdir}/${deb}" data.tar.xz | tar -xJf - -C "$pkgdir" "${excludes[@]}"
|
||||
cd "$pkgdir"
|
||||
# Disable Cursor's bundled updater; Omarchy manages updates via pacman (#238).
|
||||
sed -i '/^[[:space:]]*"\(backupUpdateUrl\|updateUrl\)":/d' \
|
||||
"${_app}/product.json"
|
||||
mv usr/share/zsh/{vendor-completions,site-functions}
|
||||
if [[ "$CARCH" == aarch64 ]]; then
|
||||
install -d usr/bin
|
||||
ln -s /usr/share/cursor/bin/cursor usr/bin/cursor
|
||||
# Use Electron's unprivileged namespace sandbox.
|
||||
chmod 0755 usr/share/cursor/chrome-sandbox
|
||||
return
|
||||
fi
|
||||
ln -sf /usr/bin/node ${_app}/resources/helpers/node
|
||||
install -Dm755 "${srcdir}/rg.sh" ${_app}/node_modules/@vscode/ripgrep/bin/rg
|
||||
ln -sf /usr/bin/xdg-open ${_app}/node_modules/open/xdg-open
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
# Maintainer: Ismet Togay <ismet.togay at gmail dot com>
|
||||
# Contributor: Christopher Cooper <christopher@cg505.com>
|
||||
pkgname=cursor-cli
|
||||
pkgver=2026.09.18.1.9a7762b
|
||||
pkgver=2026.09.26.1.dd393fe
|
||||
# Upstream is YYYY.MM.DD-<hash>. pkgver cannot contain hyphens, and hashes are
|
||||
# not monotonically ordered, so pkgver is YYYY.MM.DD.<n>.<hash>: n resets to 1
|
||||
# on a new date and increments when the same date gets a new hash.
|
||||
@@ -25,8 +25,8 @@ source_x86_64=("cursor-cli-${_upstream_ver}-x86_64.tar.gz::https://downloads.cur
|
||||
source_aarch64=("cursor-cli-${_upstream_ver}-aarch64.tar.gz::https://downloads.cursor.com/lab/${_upstream_ver}/linux/arm64/agent-cli-package.tar.gz")
|
||||
b2sums=('d241ee9895bdb1c17514438fde8528222a8f2326568bd7a033d7a1b11432ce6b4575ff1a50625764bfe6bc6f8a9dc060f7439c3be7e95f8fd02912cdd37a011d'
|
||||
'1928e04c713e13911ea607f84c3e4a2fed1f76af9795503811078f43d2b53c753e28b2233e553fc17e766831800fb0dbc272aad2a80b387f95ba6071d7d4116a')
|
||||
b2sums_x86_64=('3fccee6929df1042d03461895e56c222a996d3ae9e4f9c61dcc5e6ab7b1d075d3265c21a44f48dd94de0dcde4f8012cc39bfbf323e2bb0c6106cac79885c35ae')
|
||||
b2sums_aarch64=('3d3bb0a3cb7e2409acf4925f207eaa4e3f41782c3c947e2834b69664b116b972da0b67eea17147fc524ea248af9919494570adc7c48d12c44f12deca17ba2c28')
|
||||
b2sums_x86_64=('799276ea8ba5dc410ff7e4ae1b9c095bcbaaa7ed6806a78ce249c10dbf9cc523a0ee5402f743e5a5a2cac87be59ffeff7a1b3dbb1ed062932dc300e2e57c9009')
|
||||
b2sums_aarch64=('417bfda50e13b9848f15ace73fb828632db766b54eb05bd0944bbe14ec49c780f870ea850d67dad40e073692e683436134056e24be5b3287bf8c481d713d9840')
|
||||
|
||||
prepare() {
|
||||
# Block cursor-agent auto-updates by making its versions directory
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
_pkgname="dbxcli"
|
||||
pkgname="${_pkgname}-bin"
|
||||
pkgver=3.7.3
|
||||
pkgver=3.7.4
|
||||
pkgrel=1
|
||||
pkgdesc="A command line client for Dropbox built using the Go SDK"
|
||||
arch=(
|
||||
@@ -33,9 +33,9 @@ source_armv7h=(
|
||||
source_x86_64=(
|
||||
"${url}/releases/download/v${pkgver}/${_pkgname}_${pkgver}_linux_amd64.tar.gz"
|
||||
)
|
||||
sha256sums_aarch64=('9d654da62a1ac10c9e32ee8f66fa6cc8d88ed29bc95555435a5ce4255eb4b96a')
|
||||
sha256sums_armv7h=('8067cee274dc2f062a06ceda26200c44d9251336ec235f7d7a3826743c9a379e')
|
||||
sha256sums_x86_64=('fee977ce4144174356cd7d1bae0b546aecad2570f14666bd44417e96af943484')
|
||||
sha256sums_aarch64=('c2101af4149ff4104dcfac515c85dedf3a9a3fdff43aac0d650c16df17fcf1f2')
|
||||
sha256sums_armv7h=('90311a7058ce706e38f6bac06461660308460f59e1c4e5ff5743e62eb3292097')
|
||||
sha256sums_x86_64=('eb9624bbe2c89287caa5b02ba120bc486d9f4c5ffb5f51d884fc7c40620da730')
|
||||
|
||||
prepare() {
|
||||
local source_array="source_${CARCH}[0]"
|
||||
|
||||
@@ -15,19 +15,15 @@ pkgver=10.0.401
|
||||
_runtimever=10.0.12
|
||||
_sdkver=$pkgver
|
||||
_short_ver=10.0
|
||||
pkgrel=1
|
||||
arch=('x86_64' 'armv7h' 'aarch64')
|
||||
pkgrel=2
|
||||
arch=('aarch64')
|
||||
url='https://www.microsoft.com/net/core'
|
||||
license=('MIT')
|
||||
options=('staticlibs')
|
||||
options=('staticlibs' '!debug')
|
||||
source=('dotnet.sh')
|
||||
source_armv7h=("https://builds.dotnet.microsoft.com/dotnet/Sdk/${_sdkver}/dotnet-sdk-${_sdkver}-linux-arm.tar.gz")
|
||||
source_aarch64=("https://builds.dotnet.microsoft.com/dotnet/Sdk/${_sdkver}/dotnet-sdk-${_sdkver}-linux-arm64.tar.gz")
|
||||
source_x86_64=("https://builds.dotnet.microsoft.com/dotnet/Sdk/${_sdkver}/dotnet-sdk-${_sdkver}-linux-x64.tar.gz")
|
||||
sha512sums=('768151c7179fb6a126b3de9cae01e363e8894f6fab384b1e2c5066c2adca4578638983b1b62aea10dd18045e6d6e8f8ea13280481134de94f004a118919b2c06')
|
||||
sha512sums_armv7h=('94a8a52862ca9f0de1075a468d6e4e307a1d4463098a9e8266e66939709a812b0126e212cce7e8c6feae6b078d86c8b77e088814a0e32531edb0da0a1ce90c11')
|
||||
sha512sums_aarch64=('58ace73ced6b4360754689a686bdfb8a317f4da6cb8bb416dbc7d0ba9f47e43e3c09f5eb1f1a1cfaacbd10df9558da4882bf2a5e195d6ab56a02c1f9f76102ed')
|
||||
sha512sums_x86_64=('51c8b999af9e8dd9998c9edc5944e19a90788862068acd38694e098889054ce8c23d4f0c5cccfa16bf187d044562359e5ee69a9f8ad0bbe913ba90311fbce25b')
|
||||
|
||||
# Keep each split package's notices usable when installed independently.
|
||||
_install_license() {
|
||||
@@ -110,12 +106,8 @@ package_dotnet-targeting-pack-bin() {
|
||||
provides=(dotnet-targeting-pack=${_runtimever} dotnet-targeting-pack-${_short_ver})
|
||||
conflicts=(dotnet-targeting-pack=${_runtimever} dotnet-targeting-pack-${_short_ver})
|
||||
|
||||
if [ $CARCH = 'x86_64' ]; then msarch=x64;
|
||||
elif [ $CARCH = 'armv7h' ]; then msarch=arm;
|
||||
elif [ $CARCH = 'aarch64' ]; then msarch=arm64; fi
|
||||
|
||||
install -dm 755 "${pkgdir}"/usr/share/{dotnet,dotnet/packs,licenses}
|
||||
cp -dr --no-preserve='ownership' packs/Microsoft.NETCore.App.{Host.linux-${msarch},Ref} "${pkgdir}"/usr/share/dotnet/packs/
|
||||
cp -dr --no-preserve='ownership' packs/Microsoft.NETCore.App.{Host.linux-arm64,Ref} "${pkgdir}"/usr/share/dotnet/packs/
|
||||
_install_license
|
||||
}
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
# Maintainer: Andrej Benz <hello[at]benz[dot]dev>
|
||||
|
||||
pkgname=elephant-all
|
||||
pkgver=2.22.0
|
||||
pkgver=2.22.1
|
||||
pkgrel=1
|
||||
pkgdesc='elephant + all official elephant providers'
|
||||
url='https://github.com/abenz1267/elephant'
|
||||
@@ -12,7 +12,7 @@ makedepends=('go')
|
||||
conflicts=('elephant' 'elephant-playerctl' 'elephant-wireplumber' 'elephant-bitwarden' 'elephant-dnfpackages' 'elephant-1password' 'elephant-bookmarks' 'elephant-nirisessions' 'elephant-niriactions' 'elephant-archlinuxpkgs' 'elephant-bluetooth' 'elephant-calc' 'elephant-clipboard' 'elephant-desktopapplications' 'elephant-files' 'elephant-menus' 'elephant-providerlist' 'elephant-runner' 'elephant-snippets' 'elephant-symbols' 'elephant-todo' 'elephant-unicode' 'elephant-websearch' 'elephant-windows')
|
||||
provides=('elephant' 'elephant-playerctl' 'elephant-wireplumber' 'elephant-nirisessions' 'elephant-niriactions' 'elephant-archlinuxpkgs' 'elephant-bluetooth' 'elephant-calc' 'elephant-clipboard' 'elephant-desktopapplications' 'elephant-files' 'elephant-menus' 'elephant-providerlist' 'elephant-runner' 'elephant-snippets' 'elephant-symbols' 'elephant-todo' 'elephant-unicode' 'elephant-websearch' 'elephant-windows')
|
||||
source=("${url}/archive/refs/tags/v${pkgver}.tar.gz")
|
||||
sha256sums=('c6caa61727e4b5c3981099943b4b616c338a6e1b4e33b5e1d32078b8e4dbe120')
|
||||
sha256sums=('3d1d0d4c55ae531fa3f06406b96504b5165a0d7b53523d1f8351d9d93e457f44')
|
||||
|
||||
build() {
|
||||
# Build main elephant binary
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
# Maintainer: Andrej Benz <hello[at]benz[dot]dev>
|
||||
|
||||
pkgname=elephant-archlinuxpkgs
|
||||
pkgver=2.22.0
|
||||
pkgver=2.22.1
|
||||
pkgrel=1
|
||||
pkgdesc='archlinuxpkgs provider for elephant'
|
||||
url='https://github.com/abenz1267/elephant'
|
||||
@@ -11,7 +11,7 @@ makedepends=('go')
|
||||
conflicts=('elephant-archlinuxpkgs')
|
||||
provides=('elephant-archlinuxpkgs')
|
||||
source=("${url}/archive/refs/tags/v${pkgver}.tar.gz")
|
||||
sha256sums=('c6caa61727e4b5c3981099943b4b616c338a6e1b4e33b5e1d32078b8e4dbe120')
|
||||
sha256sums=('3d1d0d4c55ae531fa3f06406b96504b5165a0d7b53523d1f8351d9d93e457f44')
|
||||
|
||||
build() {
|
||||
cd elephant-${pkgver}/internal/providers/archlinuxpkgs
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
# Maintainer: Andrej Benz <hello[at]benz[dot]dev>
|
||||
|
||||
pkgname=elephant-bluetooth
|
||||
pkgver=2.22.0
|
||||
pkgver=2.22.1
|
||||
pkgrel=1
|
||||
pkgdesc='bluetooth provider for elephant'
|
||||
url='https://github.com/abenz1267/elephant'
|
||||
@@ -11,7 +11,7 @@ makedepends=('go')
|
||||
conflicts=('elephant-bluetooth')
|
||||
provides=('elephant-bluetooth')
|
||||
source=("${url}/archive/refs/tags/v${pkgver}.tar.gz")
|
||||
sha256sums=('c6caa61727e4b5c3981099943b4b616c338a6e1b4e33b5e1d32078b8e4dbe120')
|
||||
sha256sums=('3d1d0d4c55ae531fa3f06406b96504b5165a0d7b53523d1f8351d9d93e457f44')
|
||||
|
||||
build() {
|
||||
cd elephant-${pkgver}/internal/providers/bluetooth
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
# Maintainer: Andrej Benz <hello[at]benz[dot]dev>
|
||||
|
||||
pkgname=elephant-calc
|
||||
pkgver=2.22.0
|
||||
pkgver=2.22.1
|
||||
pkgrel=1
|
||||
pkgdesc='calc provider for elephant'
|
||||
url='https://github.com/abenz1267/elephant'
|
||||
@@ -12,7 +12,7 @@ makedepends=('go')
|
||||
conflicts=('elephant-calc')
|
||||
provides=('elephant-calc')
|
||||
source=("${url}/archive/refs/tags/v${pkgver}.tar.gz")
|
||||
sha256sums=('c6caa61727e4b5c3981099943b4b616c338a6e1b4e33b5e1d32078b8e4dbe120')
|
||||
sha256sums=('3d1d0d4c55ae531fa3f06406b96504b5165a0d7b53523d1f8351d9d93e457f44')
|
||||
|
||||
build() {
|
||||
cd elephant-${pkgver}/internal/providers/calc
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
# Maintainer: Andrej Benz <hello[at]benz[dot]dev>
|
||||
|
||||
pkgname=elephant-clipboard
|
||||
pkgver=2.22.0
|
||||
pkgver=2.22.1
|
||||
pkgrel=1
|
||||
pkgdesc='clipboard provider for elephant'
|
||||
url='https://github.com/abenz1267/elephant'
|
||||
@@ -12,7 +12,7 @@ makedepends=('go')
|
||||
conflicts=('elephant-clipboard')
|
||||
provides=('elephant-clipboard')
|
||||
source=("${url}/archive/refs/tags/v${pkgver}.tar.gz")
|
||||
sha256sums=('c6caa61727e4b5c3981099943b4b616c338a6e1b4e33b5e1d32078b8e4dbe120')
|
||||
sha256sums=('3d1d0d4c55ae531fa3f06406b96504b5165a0d7b53523d1f8351d9d93e457f44')
|
||||
|
||||
build() {
|
||||
cd elephant-${pkgver}/internal/providers/clipboard
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
# Maintainer: Andrej Benz <hello[at]benz[dot]dev>
|
||||
|
||||
pkgname=elephant-desktopapplications
|
||||
pkgver=2.22.0
|
||||
pkgver=2.22.1
|
||||
pkgrel=1
|
||||
pkgdesc='desktopapplications provider for elephant'
|
||||
url='https://github.com/abenz1267/elephant'
|
||||
@@ -11,7 +11,7 @@ makedepends=('go')
|
||||
conflicts=('elephant-desktopapplications')
|
||||
provides=('elephant-desktopapplications')
|
||||
source=("${url}/archive/refs/tags/v${pkgver}.tar.gz")
|
||||
sha256sums=('c6caa61727e4b5c3981099943b4b616c338a6e1b4e33b5e1d32078b8e4dbe120')
|
||||
sha256sums=('3d1d0d4c55ae531fa3f06406b96504b5165a0d7b53523d1f8351d9d93e457f44')
|
||||
|
||||
build() {
|
||||
cd elephant-${pkgver}/internal/providers/desktopapplications
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
# Maintainer: Andrej Benz <hello[at]benz[dot]dev>
|
||||
|
||||
pkgname=elephant-files
|
||||
pkgver=2.22.0
|
||||
pkgver=2.22.1
|
||||
pkgrel=1
|
||||
pkgdesc='files provider for elephant'
|
||||
url='https://github.com/abenz1267/elephant'
|
||||
@@ -12,7 +12,7 @@ makedepends=('go')
|
||||
conflicts=('elephant-files')
|
||||
provides=('elephant-files')
|
||||
source=("${url}/archive/refs/tags/v${pkgver}.tar.gz")
|
||||
sha256sums=('c6caa61727e4b5c3981099943b4b616c338a6e1b4e33b5e1d32078b8e4dbe120')
|
||||
sha256sums=('3d1d0d4c55ae531fa3f06406b96504b5165a0d7b53523d1f8351d9d93e457f44')
|
||||
|
||||
build() {
|
||||
cd elephant-${pkgver}/internal/providers/files
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
# Maintainer: Andrej Benz <hello[at]benz[dot]dev>
|
||||
|
||||
pkgname=elephant-menus
|
||||
pkgver=2.22.0
|
||||
pkgver=2.22.1
|
||||
pkgrel=1
|
||||
pkgdesc='menus provider for elephant'
|
||||
url='https://github.com/abenz1267/elephant'
|
||||
@@ -11,7 +11,7 @@ makedepends=('go')
|
||||
conflicts=('elephant-menus')
|
||||
provides=('elephant-menus')
|
||||
source=("${url}/archive/refs/tags/v${pkgver}.tar.gz")
|
||||
sha256sums=('c6caa61727e4b5c3981099943b4b616c338a6e1b4e33b5e1d32078b8e4dbe120')
|
||||
sha256sums=('3d1d0d4c55ae531fa3f06406b96504b5165a0d7b53523d1f8351d9d93e457f44')
|
||||
|
||||
build() {
|
||||
cd elephant-${pkgver}/internal/providers/menus
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
# Maintainer: Andrej Benz <hello[at]benz[dot]dev>
|
||||
|
||||
pkgname=elephant-providerlist
|
||||
pkgver=2.22.0
|
||||
pkgver=2.22.1
|
||||
pkgrel=1
|
||||
pkgdesc='providerlist provider for elephant'
|
||||
url='https://github.com/abenz1267/elephant'
|
||||
@@ -11,7 +11,7 @@ makedepends=('go')
|
||||
conflicts=('elephant-providerlist')
|
||||
provides=('elephant-providerlist')
|
||||
source=("${url}/archive/refs/tags/v${pkgver}.tar.gz")
|
||||
sha256sums=('c6caa61727e4b5c3981099943b4b616c338a6e1b4e33b5e1d32078b8e4dbe120')
|
||||
sha256sums=('3d1d0d4c55ae531fa3f06406b96504b5165a0d7b53523d1f8351d9d93e457f44')
|
||||
|
||||
build() {
|
||||
cd elephant-${pkgver}/internal/providers/providerlist
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
# Maintainer: Andrej Benz <hello[at]benz[dot]dev>
|
||||
|
||||
pkgname=elephant-runner
|
||||
pkgver=2.22.0
|
||||
pkgver=2.22.1
|
||||
pkgrel=1
|
||||
pkgdesc='runner provider for elephant'
|
||||
url='https://github.com/abenz1267/elephant'
|
||||
@@ -11,7 +11,7 @@ makedepends=('go')
|
||||
conflicts=('elephant-runner')
|
||||
provides=('elephant-runner')
|
||||
source=("${url}/archive/refs/tags/v${pkgver}.tar.gz")
|
||||
sha256sums=('c6caa61727e4b5c3981099943b4b616c338a6e1b4e33b5e1d32078b8e4dbe120')
|
||||
sha256sums=('3d1d0d4c55ae531fa3f06406b96504b5165a0d7b53523d1f8351d9d93e457f44')
|
||||
|
||||
build() {
|
||||
cd elephant-${pkgver}/internal/providers/runner
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
# Maintainer: Andrej Benz <hello[at]benz[dot]dev>
|
||||
|
||||
pkgname=elephant-symbols
|
||||
pkgver=2.22.0
|
||||
pkgver=2.22.1
|
||||
pkgrel=1
|
||||
pkgdesc='symbols provider for elephant'
|
||||
url='https://github.com/abenz1267/elephant'
|
||||
@@ -11,7 +11,7 @@ makedepends=('go')
|
||||
conflicts=('elephant-symbols')
|
||||
provides=('elephant-symbols')
|
||||
source=("${url}/archive/refs/tags/v${pkgver}.tar.gz")
|
||||
sha256sums=('c6caa61727e4b5c3981099943b4b616c338a6e1b4e33b5e1d32078b8e4dbe120')
|
||||
sha256sums=('3d1d0d4c55ae531fa3f06406b96504b5165a0d7b53523d1f8351d9d93e457f44')
|
||||
|
||||
build() {
|
||||
cd elephant-${pkgver}/internal/providers/symbols
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
# Maintainer: Andrej Benz <hello[at]benz[dot]dev>
|
||||
|
||||
pkgname=elephant-todo
|
||||
pkgver=2.22.0
|
||||
pkgver=2.22.1
|
||||
pkgrel=1
|
||||
pkgdesc='todo provider for elephant'
|
||||
url='https://github.com/abenz1267/elephant'
|
||||
@@ -11,7 +11,7 @@ makedepends=('go')
|
||||
conflicts=('elephant-todo')
|
||||
provides=('elephant-todo')
|
||||
source=("${url}/archive/refs/tags/v${pkgver}.tar.gz")
|
||||
sha256sums=('c6caa61727e4b5c3981099943b4b616c338a6e1b4e33b5e1d32078b8e4dbe120')
|
||||
sha256sums=('3d1d0d4c55ae531fa3f06406b96504b5165a0d7b53523d1f8351d9d93e457f44')
|
||||
|
||||
build() {
|
||||
cd elephant-${pkgver}/internal/providers/todo
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
# Maintainer: Andrej Benz <hello[at]benz[dot]dev>
|
||||
|
||||
pkgname=elephant-unicode
|
||||
pkgver=2.22.0
|
||||
pkgver=2.22.1
|
||||
pkgrel=1
|
||||
pkgdesc='unicode provider for elephant'
|
||||
url='https://github.com/abenz1267/elephant'
|
||||
@@ -11,7 +11,7 @@ makedepends=('go')
|
||||
conflicts=('elephant-unicode')
|
||||
provides=('elephant-unicode')
|
||||
source=("${url}/archive/refs/tags/v${pkgver}.tar.gz")
|
||||
sha256sums=('c6caa61727e4b5c3981099943b4b616c338a6e1b4e33b5e1d32078b8e4dbe120')
|
||||
sha256sums=('3d1d0d4c55ae531fa3f06406b96504b5165a0d7b53523d1f8351d9d93e457f44')
|
||||
|
||||
build() {
|
||||
cd elephant-${pkgver}/internal/providers/unicode
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
# Maintainer: Andrej Benz <hello[at]benz[dot]dev>
|
||||
|
||||
pkgname=elephant-websearch
|
||||
pkgver=2.22.0
|
||||
pkgver=2.22.1
|
||||
pkgrel=1
|
||||
pkgdesc='websearch provider for elephant'
|
||||
url='https://github.com/abenz1267/elephant'
|
||||
@@ -11,7 +11,7 @@ makedepends=('go')
|
||||
conflicts=('elephant-websearch')
|
||||
provides=('elephant-websearch')
|
||||
source=("${url}/archive/refs/tags/v${pkgver}.tar.gz")
|
||||
sha256sums=('c6caa61727e4b5c3981099943b4b616c338a6e1b4e33b5e1d32078b8e4dbe120')
|
||||
sha256sums=('3d1d0d4c55ae531fa3f06406b96504b5165a0d7b53523d1f8351d9d93e457f44')
|
||||
|
||||
build() {
|
||||
cd elephant-${pkgver}/internal/providers/websearch
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
# Maintainer: Andrej Benz <hello[at]benz[dot]dev>
|
||||
|
||||
pkgname=elephant
|
||||
pkgver=2.22.0
|
||||
pkgver=2.22.1
|
||||
pkgrel=1
|
||||
pkgdesc='general purpose datasource and executor'
|
||||
url='https://github.com/abenz1267/elephant'
|
||||
@@ -11,7 +11,7 @@ makedepends=('go')
|
||||
conflicts=('elephant')
|
||||
provides=('elephant')
|
||||
source=("${url}/archive/refs/tags/v${pkgver}.tar.gz")
|
||||
sha256sums=('c6caa61727e4b5c3981099943b4b616c338a6e1b4e33b5e1d32078b8e4dbe120')
|
||||
sha256sums=('3d1d0d4c55ae531fa3f06406b96504b5165a0d7b53523d1f8351d9d93e457f44')
|
||||
|
||||
build() {
|
||||
cd ${pkgname}-${pkgver}/cmd/elephant
|
||||
|
||||
@@ -1,17 +0,0 @@
|
||||
# elsewhen
|
||||
|
||||
Installs the Elsewhen world clock plugin from the `v{pkgver}` GitHub tag archive into `/usr/share/omarchy/shell/plugins/omacom.elsewhen/` (the directory name is the plugin id the shell scans for, not the package name), plus `LICENSE` under `/usr/share/licenses/elsewhen/` and the upstream `README.md` under `/usr/share/doc/elsewhen/`. The shell scans this directory alongside its bundled plugins.
|
||||
|
||||
`package()` copies an explicit allow-list (`manifest.json`, every `*.qml` and `*.js`, `cities.json`, `world.json`, `worldclock-data.py`), so `tests/`, `.github/` and `.gitignore` never ship, and it fails the build if `manifest.json` is missing, does not declare `omacom.elsewhen`, or does not name a present `Panel.qml` as the entry point. An upstream release that adds a runtime file outside those patterns needs the allow-list extended here; the sync only moves versions and checksums. Every file is 0644: `Panel.qml` runs the script as `python3 <plugin dir>/worldclock-data.py`, so it needs no execute bit. No install hook: Omarchy restarts the shell after `omarchy update`, and nothing here may write into a user home. The script's only writes go to `$XDG_CACHE_HOME/omacom-elsewhen/`, which it creates itself at runtime.
|
||||
|
||||
Dependencies, cited as `file: tool` in the upstream tree:
|
||||
|
||||
- `omarchy`: `ArcText.qml`, `Chip.qml`, `EarthRow.qml`, `Globe.qml`, `MiniGlobe.qml`, `MoonDot.qml`, `Panel.qml: import qs.Commons`; `EarthRow.qml`, `Globe.qml`, `Panel.qml: import qs.Ui`. Owns `/usr/share/omarchy` and the shell plugin directory.
|
||||
- `quickshell`: `Globe.qml`, `Panel.qml: import Quickshell`; `Globe.qml`, `MiniGlobe.qml`, `Panel.qml: import Quickshell.Io` (`Process`, `FileView`, `StdioCollector`).
|
||||
- `python`: `Panel.qml: python3 <plugin dir>/worldclock-data.py` (the facts process). `worldclock-data.py` imports only `json`, `os`, `sys`, `time`, `urllib`.
|
||||
- Left implicit as members of `base`, per Arch convention: `bash` (`Panel.qml`, `Globe.qml: bash -c` wraps every probe), `coreutils` (`Panel.qml`, `Globe.qml: date`, one probe per refresh), `systemd` (`Panel.qml: timedatectl show`, `timedatectl list-timezones`, each with a fallback: `/etc/localtime` for the home zone and `find /usr/share/zoneinfo` for the catalog), `sed` and `grep` (`Panel.qml`: the symlink target of `/etc/localtime` and the zoneinfo catalog filter), `findutils` and `tzdata` (that fallback; `worldclock-data.py: /usr/share/zoneinfo/zone1970.tab`). `omarchy` cannot run without any of them either.
|
||||
- Not a dependency: `iso-codes`. Only `tests/currency_check.py` reads `/usr/share/iso-codes/json`, to validate the currency table before a release; the runtime never touches it.
|
||||
|
||||
Release tracking: `bin/sync-upstream` follows `omacom/elsewhen` through the `upstream.watch.github` provider, which reads the GitHub Releases feed (drafts and prereleases excluded; a tag with no published Release is not seen) and matches exactly `vX.Y.Z`, the grammar upstream's `scripts/set-version.sh` enforces. A newer release rewrites `pkgver`, resets `pkgrel` to 1, fetches `archive/refs/tags/v{pkgver}.tar.gz` again and rewrites `sha256sums` from the download. The Release's `published_at` is what lets `min_release_age: 24h` hold a fresh release for a day; `release_ring: fast` builds it straight to rc and stable as well as edge.
|
||||
|
||||
The watch only moves on a version increase, so the first release's digest is filled in by hand (`curl -fsSL <archive url> | sha256sum`), which is why the recipe carries a placeholder until the `v0.1.0` tag exists. Until upstream has published at least one Release, the watch finds nothing and fails the scheduled `sync-upstream` run for every package in the batch, so this recipe stays a draft until then.
|
||||
@@ -1,11 +0,0 @@
|
||||
{
|
||||
"source": "local",
|
||||
"release_ring": "fast",
|
||||
"min_release_age": "24h",
|
||||
"upstream": {
|
||||
"watch": {
|
||||
"github": "omacom/elsewhen",
|
||||
"pattern": "v(?P<version>[0-9]+\\.[0-9]+\\.[0-9]+)"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,63 +0,0 @@
|
||||
# Maintainer: Spencer Bull <spencer.bull@hey.com>
|
||||
|
||||
pkgname=elsewhen
|
||||
pkgver=1.0.0
|
||||
pkgrel=2
|
||||
pkgdesc='World clock plugin for the Omarchy shell'
|
||||
arch=('any')
|
||||
url='https://github.com/omacom/elsewhen'
|
||||
license=('MIT')
|
||||
|
||||
# What the plugin needs to load and run. It also shells out to bash, date
|
||||
# (coreutils) and timedatectl (systemd) and reads /usr/share/zoneinfo
|
||||
# (tzdata); those are members of the base group and stay implicit, per Arch
|
||||
# convention. The citations for each entry are in .omarchy/README.md.
|
||||
depends=(
|
||||
'omarchy'
|
||||
'python'
|
||||
'quickshell'
|
||||
)
|
||||
|
||||
options=('!debug')
|
||||
|
||||
source=("$pkgname-$pkgver.tar.gz::$url/archive/refs/tags/v$pkgver.tar.gz")
|
||||
sha256sums=('3124f0c0a19ebc1b158bcf04151cddd6c733ceeead88052186b6a54c46bee263')
|
||||
|
||||
package() {
|
||||
# Install alongside the bundled plugins in the shell's plugin directory.
|
||||
local plugin="$pkgdir/usr/share/omarchy/shell/plugins/omacom.elsewhen"
|
||||
cd "$srcdir/$pkgname-$pkgver" || return 1
|
||||
|
||||
# The shell loads the entry point each manifest declares. A tree without
|
||||
# either would install cleanly and never load, so fail the build instead of
|
||||
# shipping it.
|
||||
[[ -f manifest.json ]] || {
|
||||
echo "release tree is missing manifest.json" >&2
|
||||
return 1
|
||||
}
|
||||
grep -Eq '"id"[[:space:]]*:[[:space:]]*"omacom\.elsewhen"' manifest.json || {
|
||||
echo "manifest.json does not declare the plugin id omacom.elsewhen" >&2
|
||||
return 1
|
||||
}
|
||||
grep -Eq '"barWidget"[[:space:]]*:[[:space:]]*"Panel\.qml"' manifest.json || {
|
||||
echo "manifest.json does not name Panel.qml as the bar widget entry point" >&2
|
||||
return 1
|
||||
}
|
||||
[[ -f Panel.qml ]] || {
|
||||
echo "release tree is missing the entry point Panel.qml" >&2
|
||||
return 1
|
||||
}
|
||||
|
||||
# An explicit allow-list of runtime files, so tests/, .github/ and the rest
|
||||
# of the repository never reach the package. Directories end up 0755 and
|
||||
# every file 0644: worldclock-data.py runs as `python3 <path>` and needs no
|
||||
# execute bit. An unmatched glob is left literal and fails install, which
|
||||
# is the right outcome for a release tree missing its QML or JS.
|
||||
local file
|
||||
for file in manifest.json cities.json world.json worldclock-data.py *.qml *.js; do
|
||||
install -Dm644 "$file" "$plugin/$file"
|
||||
done
|
||||
|
||||
install -Dm644 LICENSE "$pkgdir/usr/share/licenses/$pkgname/LICENSE"
|
||||
install -Dm644 README.md "$pkgdir/usr/share/doc/$pkgname/README.md"
|
||||
}
|
||||
@@ -1,6 +1,12 @@
|
||||
#!/bin/bash
|
||||
# Verify Flea's published source archive against its checksum manifest when a
|
||||
# newer stable release exists, then check its root and required security fixes.
|
||||
# newer stable release exists, then check its root.
|
||||
#
|
||||
# Through 0.1.x this also grepped the source for the upstream security fixes
|
||||
# Omarchy once carried as patches, so the package could not move to a release
|
||||
# that lacked them. Every release since 0.1.5 has had them, and matching
|
||||
# literal source lines only ever caught renames (#488, 0.3.5's
|
||||
# open_if_regular_with_meta), never a regression.
|
||||
set -euo pipefail
|
||||
|
||||
REPO='thisisgm/flea'
|
||||
@@ -74,38 +80,6 @@ if [[ $served_roots != "$expected_root" ]]; then
|
||||
exit 1
|
||||
fi
|
||||
|
||||
archive_rs=$(tar -xOzf "$tarball" "$expected_root/src/backend/archive.rs")
|
||||
archiveops_rs=$(tar -xOzf "$tarball" "$expected_root/src/backend/archiveops.rs")
|
||||
run_rs=$(tar -xOzf "$tarball" "$expected_root/src/backend/run.rs")
|
||||
archivereq_rs=$(tar -xOzf "$tarball" "$expected_root/src/backend/archivereq.rs")
|
||||
archivework_rs=$(tar -xOzf "$tarball" "$expected_root/src/backend/archivework.rs")
|
||||
mediaprobe_rs=$(tar -xOzf "$tarball" "$expected_root/src/backend/mediaprobe.rs")
|
||||
metareq_rs=$(tar -xOzf "$tarball" "$expected_root/src/backend/metareq.rs")
|
||||
sharelink_qml=$(tar -xOzf "$tarball" "$expected_root/ui/ShareLink.qml")
|
||||
copyfile_rs=$(tar -xOzf "$tarball" "$expected_root/src/backend/copyfile.rs")
|
||||
regfile_rs=$(tar -xOzf "$tarball" "$expected_root/src/backend/regfile.rs")
|
||||
|
||||
# Every check below pins a literal line except the O_NOFOLLOW one. That check
|
||||
# guards a property -- the copy opens its source with O_NOFOLLOW, so a symlink
|
||||
# swapped in cannot redirect the read -- and pinning the exact call expression
|
||||
# made it assert the spelling instead. v0.3.0 moved the first argument from
|
||||
# `src` to `src.at` when directory-relative opens landed, kept O_NOFOLLOW, and
|
||||
# hardened symlink handling further; the literal still refused it. Match the
|
||||
# call and the flag together so a rename cannot read as a removed fix, while
|
||||
# dropping O_NOFOLLOW still fails.
|
||||
if ! grep -Fq 'a.push("--".to_string());' <<<"$archive_rs" ||
|
||||
! grep -Fq 'let input = std::fs::canonicalize(input)' <<<"$archiveops_rs" ||
|
||||
! grep -Fq 'if op != "compress" && op != "extract"' <<<"$run_rs$archivereq_rs" ||
|
||||
! grep -Fq 'the sandbox is unavailable: bwrap or prlimit is not on PATH' <<<"$archivework_rs" ||
|
||||
! grep -Fq 'if !sandbox::available()' <<<"$mediaprobe_rs" ||
|
||||
! grep -Fq 'if !sandbox::available()' <<<"$metareq_rs" ||
|
||||
! grep -Fq 'copyToClipboard.command = ["wl-copy", url]' <<<"$sharelink_qml" ||
|
||||
! grep -Eq 'open_if_regular\(.*O_NOFOLLOW' <<<"$copyfile_rs" ||
|
||||
! grep -Fq '.custom_flags(O_NONBLOCK | extra_flags)' <<<"$regfile_rs"; then
|
||||
printf 'Release %s does not contain every required upstream security fix\n' "$best_tag" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
jq -n \
|
||||
--arg pkgver "$best_version" \
|
||||
--arg published_at "$best_published_at" \
|
||||
|
||||
+20
-3
@@ -1,8 +1,8 @@
|
||||
# Maintainer: GM <gianmarcomorales@icloud.com>
|
||||
|
||||
pkgname=flea
|
||||
pkgver=0.3.1
|
||||
pkgrel=2
|
||||
pkgver=0.3.5
|
||||
pkgrel=1
|
||||
pkgdesc='Fast, keyboard-first file manager for Omarchy'
|
||||
arch=('x86_64' 'aarch64')
|
||||
url='https://github.com/thisisgm/flea'
|
||||
@@ -52,7 +52,7 @@ options=('!debug')
|
||||
source=(
|
||||
"$url/releases/download/v$pkgver/$pkgname-v$pkgver.tar.gz"
|
||||
)
|
||||
sha256sums=('b146ac3f5025da987eae623c4392c44ce69a6a7275a8df3ec1a84563920a4dd2')
|
||||
sha256sums=('947bd1ad17238e6402af044f848662a4c20e9a82e5a61062ef2e10bb6c2d4cfe')
|
||||
|
||||
build() {
|
||||
cd "$pkgname-$pkgver"
|
||||
@@ -115,7 +115,12 @@ check() {
|
||||
# back to the next create, so on the builder's /tmp the stranger is
|
||||
# identical and undo walks it back. tmpfs allocates inode numbers from a
|
||||
# counter and never reuses one, which is what the test assumes.
|
||||
# copymanifest's garbage-stream test opens its O_TMPFILE manifest in its
|
||||
# own test dir; the module's other tests must stay off tmpfs, because
|
||||
# Writer::create wants a runtime dir on a different filesystem from the
|
||||
# copy and finds none when both live on /dev/shm.
|
||||
local -a filesystem_tests=(
|
||||
backend::copymanifest::tests::a_garbage_stream_falls_back_with_the_tree_untouched
|
||||
backend::menu_actions::tests::
|
||||
backend::menudelete::tests::
|
||||
backend::redo::tests::
|
||||
@@ -151,6 +156,18 @@ check() {
|
||||
--skip backend::child::tests::a_child_that_never_started_is_told_apart_from_one_that_ran_and_failed
|
||||
--skip backend::menu_registry::tests::unavailable_failed_and_oversized_queries_are_named_errors
|
||||
)
|
||||
# deep_directory_tree_fits_the_worker_stack sizes a tree 1900 folders
|
||||
# deep and expects a complete answer, but the listing walk stops at its
|
||||
# 2000 ms deadline (dirsize::DEADLINE_MS) and reports partial; emulated
|
||||
# read_dir over paths near PATH_MAX does not finish in time.
|
||||
# closing_a_query_kills_its_process_group_and_releases_the_service
|
||||
# cancels an `sh -c 'sleep 600 & wait'` child the moment it is
|
||||
# registered and waits 5 s for the capture to return. Unchanged since
|
||||
# 0.3.1, which passed it here; under emulation it now loses that race.
|
||||
test_args+=(
|
||||
--skip backend::dirsizeworker::tests::deep_directory_tree_fits_the_worker_stack
|
||||
--skip backend::menu_registry::tests::closing_a_query_kills_its_process_group_and_releases_the_service
|
||||
)
|
||||
fi
|
||||
|
||||
local test_tmp test_status=0 suite
|
||||
|
||||
@@ -6,7 +6,7 @@ _npmmodule=@github/copilot
|
||||
pkgname=github-copilot-cli
|
||||
_pkgexec=copilot
|
||||
|
||||
pkgver=1.0.86
|
||||
pkgver=1.0.88
|
||||
pkgrel=1
|
||||
|
||||
pkgdesc="GitHub Copilot CLI brings the power of Copilot coding agent directly to your terminal."
|
||||
@@ -31,8 +31,8 @@ source=("https://registry.npmjs.org/${_npmmodule}/-/copilot-${pkgver}.tgz"
|
||||
noextract=("copilot-${pkgver}.tgz")
|
||||
|
||||
sha256sums=(
|
||||
'4c6433345f08199e96dcf8db1c3e46a337dfab96cea32132d6127ffcd63a6200'
|
||||
'b94d2aab574cf3e0c8d950e72430186cdd918261a1376146de971fa90ba0a672'
|
||||
'2ccb1e1d287ddd3c4d74ef02d95ee0151d2d6a3e1fc5e18a3756de211f0d8193'
|
||||
'782da64fdc6608e595aa03125d4a1fd0a5430f86cdf3c79b22166a5660dc5dff'
|
||||
)
|
||||
|
||||
# Document: https://wiki.archlinux.org/title/Node.js_package_guidelines
|
||||
|
||||
@@ -0,0 +1,7 @@
|
||||
[google-chrome]
|
||||
source = "apt"
|
||||
mirror = "https://dl.google.com/linux/chrome/deb/"
|
||||
pkg = "google-chrome-stable"
|
||||
suite = "stable"
|
||||
repo = "main"
|
||||
strip_release = true
|
||||
@@ -0,0 +1,15 @@
|
||||
{
|
||||
"source": "local",
|
||||
"release_ring": "fast",
|
||||
"upstream": {
|
||||
"watch": {
|
||||
"debian": "https://dl.google.com/linux/chrome/deb/dists/stable/main/binary-amd64/Packages",
|
||||
"package": "google-chrome-stable",
|
||||
"pattern": "(?P<version>[0-9]+(?:\\.[0-9]+)*)-1"
|
||||
}
|
||||
},
|
||||
"origin": {
|
||||
"aur": "google-chrome",
|
||||
"commit": "6bd49a411277b3f9bcc9e58ce0c579292db75804"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,76 @@
|
||||
# Maintainer: Christian Heusel <christian@heusel.eu>
|
||||
# Contributor: Knut Ahlers <knut at ahlers dot me>
|
||||
# Contributor: Det <nimetonmaili g-mail>
|
||||
# Contributor: t3ddy, Lex Rivera aka x-demon, ruario, Abdullah
|
||||
|
||||
# Check for new Linux releases in: http://googlechromereleases.blogspot.com/search/label/Stable%20updates
|
||||
# or use: $ curl -sSf https://dl.google.com/linux/chrome/deb/dists/stable/main/binary-amd64/Packages | grep -A1 "Package: google-chrome-stable" | awk '/Version/{print $2}' | cut -d '-' -f1
|
||||
|
||||
pkgname=google-chrome
|
||||
pkgver=154.0.8037.57
|
||||
pkgrel=1
|
||||
pkgdesc="The popular web browser by Google (Stable Channel)"
|
||||
arch=(
|
||||
'x86_64'
|
||||
'aarch64'
|
||||
)
|
||||
url="https://www.google.com/chrome"
|
||||
license=('custom:chrome')
|
||||
depends=(
|
||||
'alsa-lib'
|
||||
'gtk3'
|
||||
'libcups'
|
||||
'libxss'
|
||||
'libxtst'
|
||||
'nss'
|
||||
'ttf-liberation'
|
||||
'xdg-utils'
|
||||
)
|
||||
optdepends=(
|
||||
'pipewire: WebRTC desktop sharing under Wayland'
|
||||
'kdialog: for file dialogs in KDE'
|
||||
'gnome-keyring: for storing passwords in GNOME keyring'
|
||||
'kwallet: for storing passwords in KWallet'
|
||||
)
|
||||
options=('!emptydirs' '!strip')
|
||||
install=$pkgname.install
|
||||
_channel=stable
|
||||
source=('eula_text.html'
|
||||
"google-chrome-$_channel.sh")
|
||||
sha512sums=('a225555c06b7c32f9f2657004558e3f996c981481dbb0d3cd79b1d59fa3f05d591af88399422d3ab29d9446c103e98d567aeafe061d9550817ab6e7eb0498396'
|
||||
'de02b498a4b5b93e21622c8dba57befe795d733a04656be911cc38e28bfef0e20470450f44be523bbde8d4de28f79c10434846ca01fc2a2f4e67707b79332f94')
|
||||
sha512sums_x86_64=('503bfdac8639dddeb44c339b37a295383a5a766e47204b26f4e3e11b550937a1e1c1b0c41d63c3bcbbcf26795d53a2b731385065c9245fb5509f33e59cff6864')
|
||||
sha512sums_aarch64=('b409cd701801d0e1c204c4eede536d9439a481db5b5ab6e475016f8845cfc3d47ae656412fac6e0988072d05037f3a94a4059ac2b0534b6f283471b8778bf6c3')
|
||||
|
||||
source_x86_64=("https://dl.google.com/linux/chrome/deb/pool/main/g/google-chrome-${_channel}/google-chrome-${_channel}_${pkgver}-1_amd64.deb")
|
||||
source_aarch64=("https://dl.google.com/linux/chrome/deb/pool/main/g/google-chrome-${_channel}/google-chrome-${_channel}_${pkgver}-1_arm64.deb")
|
||||
|
||||
package() {
|
||||
bsdtar -xf data.tar.xz -C "$pkgdir/"
|
||||
|
||||
# Launcher
|
||||
install -m755 google-chrome-$_channel.sh "$pkgdir"/usr/bin/google-chrome-$_channel
|
||||
|
||||
# Icons
|
||||
for i in 16x16 24x24 32x32 48x48 64x64 128x128 256x256; do
|
||||
install -Dm644 "$pkgdir"/opt/google/chrome/product_logo_${i/x*/}.png \
|
||||
"$pkgdir"/usr/share/icons/hicolor/$i/apps/google-chrome.png
|
||||
done
|
||||
|
||||
# License
|
||||
install -Dm644 eula_text.html "$pkgdir"/usr/share/licenses/google-chrome/eula_text.html
|
||||
install -Dm644 "$pkgdir"/opt/google/chrome/WidevineCdm/LICENSE \
|
||||
"$pkgdir"/usr/share/licenses/google-chrome-$_channel/WidevineCdm-LICENSE.txt
|
||||
|
||||
# Fix the Chrome desktop entry
|
||||
sed -i \
|
||||
-e "/Exec=/i\StartupWMClass=Google-chrome" \
|
||||
-e "s/x-scheme-handler\/ftp;\?//g" \
|
||||
"$pkgdir"/usr/share/applications/google-chrome.desktop
|
||||
|
||||
# Remove the Debian Cron job, duplicate product logos and menu directory
|
||||
rm -r \
|
||||
"$pkgdir"/etc/cron.daily/ \
|
||||
"$pkgdir"/opt/google/chrome/cron/ \
|
||||
"$pkgdir"/opt/google/chrome/product_logo_*.png
|
||||
}
|
||||
@@ -0,0 +1,901 @@
|
||||
<!DOCTYPE html>
|
||||
<html class="no-js consumer" data-country="us" lang="en">
|
||||
<head>
|
||||
|
||||
<script>
|
||||
var a=location.href.match(/platform=(win8|win|mac|linux|cros|ios)/),b=window.navigator.userAgent;document.documentElement.id=a&&a[1]||(-1<b.indexOf("Windows NT 6.2")?"win8":-1<b.indexOf("iPad")?"ios":-1<b.indexOf("Windows")?"win":-1<b.indexOf("Mac")?"mac":-1<b.indexOf("CrOS")?"cros":"linux");
|
||||
if(-1<b.indexOf("MSIE")){var c=-1<b.indexOf("MSIE 6")?" lt-ie10 lt-ie9 lt-ie8 lt-ie7 ie6":-1<b.indexOf("MSIE 7")?" lt-ie10 lt-ie9 lt-ie8 ie7":-1<b.indexOf("MSIE 8")?" lt-ie10 lt-ie9 ie8":-1<b.indexOf("MSIE 9")?" lt-ie10 ie9":-1<b.indexOf("MSIE 10")?" ie10":"";""!==c&&(document.documentElement.className+=c)}if(-1<b.indexOf("Windows NT 5.1")||-1<b.indexOf("Windows NT 5.2"))document.documentElement.className+=" winXP";
|
||||
</script>
|
||||
<script src="//www.gstatic.com/external_hosted/modernizr/modernizr.js">
|
||||
</script>
|
||||
<meta charset="utf-8">
|
||||
<meta content="initial-scale=1, minimum-scale=1, width=device-width" name="viewport">
|
||||
<meta content="View the full Terms of Service agreement for Google Chrome" name="description">
|
||||
<title>
|
||||
Google Chrome Terms of Service
|
||||
</title>
|
||||
<link href="https://plus.google.com/100585555255542998765" rel="publisher">
|
||||
<link href="//www.google.com/images/icons/product/chrome-32.png" rel="icon" type="image/ico">
|
||||
<link href="https://www.google.com/chrome/browser/privacy/eula_text.html" rel="canonical">
|
||||
<style>
|
||||
body {
|
||||
font-family: Arial;
|
||||
font-size: 13px;
|
||||
}
|
||||
</style>
|
||||
<script src="//www.google.com/js/gweb/analytics/autotrack.js">
|
||||
</script>
|
||||
<script>
|
||||
new gweb.analytics.AutoTrack({
|
||||
profile: 'UA-26908291-1'
|
||||
});
|
||||
</script>
|
||||
</head>
|
||||
<body class="" id="grid">
|
||||
<div class="browser-eula" id="main">
|
||||
<div class="compact">
|
||||
<h2>
|
||||
Google Chrome Terms of Service
|
||||
</h2>
|
||||
<p>
|
||||
These Terms of Service apply to the executable code version of Google Chrome. Source code
|
||||
for Google Chrome is available free of charge under open source software license
|
||||
agreements at http://code.google.com/chromium/terms.html.
|
||||
</p>
|
||||
<p>
|
||||
<strong>1. Your relationship with Google</strong>
|
||||
</p>
|
||||
<p>
|
||||
1.1 Your use of Google’s products, software, services and web sites (referred to
|
||||
collectively as the “Services” in this document and excluding any services provided to
|
||||
you by Google under a separate written agreement) is subject to the terms of a legal
|
||||
agreement between you and Google. “Google” means Google Inc., whose principal place of
|
||||
business is at 1600 Amphitheatre Parkway, Mountain View, CA 94043, United States. This
|
||||
document explains how the agreement is made up, and sets out some of the terms of that
|
||||
agreement.
|
||||
</p>
|
||||
<p>
|
||||
1.2 Unless otherwise agreed in writing with Google, your agreement with Google will
|
||||
always include, at a minimum, the terms and conditions set out in this document. These
|
||||
are referred to below as the “Universal Terms”. Open source software licenses for Google
|
||||
Chrome source code constitute separate written agreements. To the limited extent that the
|
||||
open source software licenses expressly supersede these Universal Terms, the open source
|
||||
licenses govern your agreement with Google for the use of Google Chrome or specific
|
||||
included components of Google Chrome.
|
||||
</p>
|
||||
<p>
|
||||
1.3 Your agreement with Google will also include the terms set forth below in the Google
|
||||
Chrome Additional Terms of Service and terms of any Legal Notices applicable to the
|
||||
Services, in addition to the Universal Terms. All of these are referred to below as the
|
||||
“Additional Terms”. Where Additional Terms apply to a Service, these will be accessible
|
||||
for you to read either within, or through your use of, that Service.
|
||||
</p>
|
||||
<p>
|
||||
1.4 The Universal Terms, together with the Additional Terms, form a legally binding
|
||||
agreement between you and Google in relation to your use of the Services. It is important
|
||||
that you take the time to read them carefully. Collectively, this legal agreement is
|
||||
referred to below as the “Terms”.
|
||||
</p>
|
||||
<p>
|
||||
1.5 If there is any contradiction between what the Additional Terms say and what the
|
||||
Universal Terms say, then the Additional Terms shall take precedence in relation to that
|
||||
Service.
|
||||
</p>
|
||||
<p>
|
||||
<strong>2. Accepting the Terms</strong>
|
||||
</p>
|
||||
<p>
|
||||
2.1 In order to use the Services, you must first agree to the Terms. You may not use the
|
||||
Services if you do not accept the Terms.
|
||||
</p>
|
||||
<p>
|
||||
2.2 You can accept the Terms by:
|
||||
</p>
|
||||
<p>
|
||||
(A) clicking to accept or agree to the Terms, where this option is made available to you
|
||||
by Google in the user interface for any Service; or
|
||||
</p>
|
||||
<p>
|
||||
(B) by actually using the Services. In this case, you understand and agree that Google
|
||||
will treat your use of the Services as acceptance of the Terms from that point onwards.
|
||||
</p>
|
||||
<p>
|
||||
<strong>3. Language of the Terms</strong>
|
||||
</p>
|
||||
<p>
|
||||
3.1 Where Google has provided you with a translation of the English language version of
|
||||
the Terms, then you agree that the translation is provided for your convenience only and
|
||||
that the English language versions of the Terms will govern your relationship with
|
||||
Google.
|
||||
</p>
|
||||
<p>
|
||||
3.2 If there is any contradiction between what the English language version of the Terms
|
||||
says and what a translation says, then the English language version shall take
|
||||
precedence.
|
||||
</p>
|
||||
<p>
|
||||
<strong>4. Provision of the Services by Google</strong>
|
||||
</p>
|
||||
<p>
|
||||
4.1 Google has subsidiaries and affiliated legal entities around the world (“Subsidiaries
|
||||
and Affiliates”). Sometimes, these companies will be providing the Services to you on
|
||||
behalf of Google itself. You acknowledge and agree that Subsidiaries and Affiliates will
|
||||
be entitled to provide the Services to you.
|
||||
</p>
|
||||
<p>
|
||||
4.2 Google is constantly innovating in order to provide the best possible experience for
|
||||
its users. You acknowledge and agree that the form and nature of the Services which
|
||||
Google provides may change from time to time without prior notice to you.
|
||||
</p>
|
||||
<p>
|
||||
4.3 As part of this continuing innovation, you acknowledge and agree that Google may stop
|
||||
(permanently or temporarily) providing the Services (or any features within the Services)
|
||||
to you or to users generally at Google’s sole discretion, without prior notice to you.
|
||||
You may stop using the Services at any time. You do not need to specifically inform
|
||||
Google when you stop using the Services.
|
||||
</p>
|
||||
<p>
|
||||
4.4 You acknowledge and agree that if Google disables access to your account, you may be
|
||||
prevented from accessing the Services, your account details or any files or other content
|
||||
which is contained in your account.
|
||||
</p>
|
||||
<p>
|
||||
<strong>5. Use of the Services by you</strong>
|
||||
</p>
|
||||
<p>
|
||||
5.1 You agree to use the Services only for purposes that are permitted by (a) the Terms
|
||||
and (b) any applicable law, regulation or generally accepted practices or guidelines in
|
||||
the relevant jurisdictions (including any laws regarding the export of data or software
|
||||
to and from the United States or other relevant countries).
|
||||
</p>
|
||||
<p>
|
||||
5.2 You agree that you will not engage in any activity that interferes with or disrupts
|
||||
the Services (or the servers and networks which are connected to the Services).
|
||||
</p>
|
||||
<p>
|
||||
5.3 Unless you have been specifically permitted to do so in a separate agreement with
|
||||
Google, you agree that you will not reproduce, duplicate, copy, sell, trade or resell the
|
||||
Services for any purpose.
|
||||
</p>
|
||||
<p>
|
||||
5.4 You agree that you are solely responsible for (and that Google has no responsibility
|
||||
to you or to any third party for) any breach of your obligations under the Terms and for
|
||||
the consequences (including any loss or damage which Google may suffer) of any such
|
||||
breach.
|
||||
</p>
|
||||
<p>
|
||||
<strong>6. Privacy and your personal information</strong>
|
||||
</p>
|
||||
<p>
|
||||
6.1 For information about Google’s data protection practices, please read Google’s
|
||||
privacy policy at http://www.google.com/privacy.html and at
|
||||
http://www.google.com/chrome/intl/en/privacy.html. This policy explains how Google treats
|
||||
your personal information, and protects your privacy, when you use the Services.
|
||||
</p>
|
||||
<p>
|
||||
6.2 You agree to the use of your data in accordance with Google’s privacy policies.
|
||||
</p>
|
||||
<p>
|
||||
<strong>7. Content in the Services</strong>
|
||||
</p>
|
||||
<p>
|
||||
7.1 You understand that all information (such as data files, written text, computer
|
||||
software, music, audio files or other sounds, photographs, videos or other images) which
|
||||
you may have access to as part of, or through your use of, the Services are the sole
|
||||
responsibility of the person from which such content originated. All such information is
|
||||
referred to below as the “Content.”
|
||||
</p>
|
||||
<p>
|
||||
7.2 You should be aware that Content presented to you as part of the Services, including
|
||||
but not limited to advertisements in the Services and sponsored Content within the
|
||||
Services may be protected by intellectual property rights which are owned by the sponsors
|
||||
or advertisers who provide that Content to Google (or by other persons or companies on
|
||||
their behalf). You may not modify, rent, lease, loan, sell, distribute or create
|
||||
derivative works based on this Content (either in whole or in part) unless you have been
|
||||
specifically told that you may do so by Google or by the owners of that Content, in a
|
||||
separate agreement.
|
||||
</p>
|
||||
<p>
|
||||
7.3 Google reserves the right (but shall have no obligation) to pre-screen, review, flag,
|
||||
filter, modify, refuse or remove any or all Content from any Service. For some of the
|
||||
Services, Google may provide tools to filter out explicit sexual content. These tools
|
||||
include the SafeSearch preference settings (see
|
||||
https://support.google.com/websearch/answer/510?hl=en). In addition, there are
|
||||
commercially available services and software to limit access to material that you may
|
||||
find objectionable.
|
||||
</p>
|
||||
<p>
|
||||
7.4 You understand that by using the Services you may be exposed to Content that you may
|
||||
find offensive, indecent or objectionable and that, in this respect, you use the Services
|
||||
at your own risk.
|
||||
</p>
|
||||
<p>
|
||||
7.5 You agree that you are solely responsible for (and that Google has no responsibility
|
||||
to you or to any third party for) any Content that you create, transmit or display while
|
||||
using the Services and for the consequences of your actions (including any loss or damage
|
||||
which Google may suffer) by doing so.
|
||||
</p>
|
||||
<p>
|
||||
<strong>8. Proprietary rights</strong>
|
||||
</p>
|
||||
<p>
|
||||
8.1 You acknowledge and agree that Google (or Google’s licensors) own all legal right,
|
||||
title and interest in and to the Services, including any intellectual property rights
|
||||
which subsist in the Services (whether those rights happen to be registered or not, and
|
||||
wherever in the world those rights may exist).
|
||||
</p>
|
||||
<p>
|
||||
8.2 Unless you have agreed otherwise in writing with Google, nothing in the Terms gives
|
||||
you a right to use any of Google’s trade names, trade marks, service marks, logos, domain
|
||||
names, and other distinctive brand features.
|
||||
</p>
|
||||
<p>
|
||||
8.3 If you have been given an explicit right to use any of these brand features in a
|
||||
separate written agreement with Google, then you agree that your use of such features
|
||||
shall be in compliance with that agreement, any applicable provisions of the Terms, and
|
||||
Google's brand feature use guidelines as updated from time to time. These guidelines can
|
||||
be viewed online at http://www.google.com/permissions/guidelines.html (or such other URL
|
||||
as Google may provide for this purpose from time to time).
|
||||
</p>
|
||||
<p>
|
||||
8.4 Google acknowledges and agrees that it obtains no right, title or interest from you
|
||||
(or your licensors) under these Terms in or to any Content that you submit, post,
|
||||
transmit or display on, or through, the Services, including any intellectual property
|
||||
rights which subsist in that Content (whether those rights happen to be registered or
|
||||
not, and wherever in the world those rights may exist). Unless you have agreed otherwise
|
||||
in writing with Google, you agree that you are responsible for protecting and enforcing
|
||||
those rights and that Google has no obligation to do so on your behalf.
|
||||
</p>
|
||||
<p>
|
||||
8.5 You agree that you shall not remove, obscure, or alter any proprietary rights notices
|
||||
(including copyright and trade mark notices) which may be affixed to or contained within
|
||||
the Services.
|
||||
</p>
|
||||
<p>
|
||||
8.6 Unless you have been expressly authorized to do so in writing by Google, you agree
|
||||
that in using the Services, you will not use any trade mark, service mark, trade name,
|
||||
logo of any company or organization in a way that is likely or intended to cause
|
||||
confusion about the owner or authorized user of such marks, names or logos.
|
||||
</p>
|
||||
<p>
|
||||
<strong>9. License from Google</strong>
|
||||
</p>
|
||||
<p>
|
||||
9.1 Google gives you a personal, worldwide, royalty-free, non-assignable and
|
||||
non-exclusive license to use the software provided to you by Google as part of the
|
||||
Services as provided to you by Google (referred to as the “Software” below). This license
|
||||
is for the sole purpose of enabling you to use and enjoy the benefit of the Services as
|
||||
provided by Google, in the manner permitted by the Terms.
|
||||
</p>
|
||||
<p>
|
||||
9.2 Subject to section 1.2, you may not (and you may not permit anyone else to) copy,
|
||||
modify, create a derivative work of, reverse engineer, decompile or otherwise attempt to
|
||||
extract the source code of the Software or any part thereof, unless this is expressly
|
||||
permitted or required by law, or unless you have been specifically told that you may do
|
||||
so by Google, in writing.
|
||||
</p>
|
||||
<p>
|
||||
9.3 Subject to section 1.2, unless Google has given you specific written permission to do
|
||||
so, you may not assign (or grant a sub-license of) your rights to use the Software, grant
|
||||
a security interest in or over your rights to use the Software, or otherwise transfer any
|
||||
part of your rights to use the Software.
|
||||
</p>
|
||||
<p>
|
||||
<strong>10. Content license from you</strong>
|
||||
</p>
|
||||
<p>
|
||||
10.1 You retain copyright and any other rights you already hold in Content which you
|
||||
submit, post or display on or through, the Services.
|
||||
</p>
|
||||
<p>
|
||||
<strong>11. Software updates</strong>
|
||||
</p>
|
||||
<p>
|
||||
11.1 The Software which you use may automatically download and install updates from time
|
||||
to time from Google. These updates are designed to improve, enhance and further develop
|
||||
the Services and may take the form of bug fixes, enhanced functions, new software modules
|
||||
and completely new versions. You agree to receive such updates (and permit Google to
|
||||
deliver these to you) as part of your use of the Services.
|
||||
</p>
|
||||
<p>
|
||||
<strong>12. Ending your relationship with Google</strong>
|
||||
</p>
|
||||
<p>
|
||||
12.1 The Terms will continue to apply until terminated by either you or Google as set out
|
||||
below.
|
||||
</p>
|
||||
<p>
|
||||
12.2 Google may at any time, terminate its legal agreement with you if:
|
||||
</p>
|
||||
<p>
|
||||
(A) you have breached any provision of the Terms (or have acted in manner which clearly
|
||||
shows that you do not intend to, or are unable to comply with the provisions of the
|
||||
Terms); or
|
||||
</p>
|
||||
<p>
|
||||
(B) Google is required to do so by law (for example, where the provision of the Services
|
||||
to you is, or becomes, unlawful); or
|
||||
</p>
|
||||
<p>
|
||||
(C) the partner with whom Google offered the Services to you has terminated its
|
||||
relationship with Google or ceased to offer the Services to you; or
|
||||
</p>
|
||||
<p>
|
||||
(D) Google is transitioning to no longer providing the Services to users in the country
|
||||
in which you are resident or from which you use the service; or
|
||||
</p>
|
||||
<p>
|
||||
(E) the provision of the Services to you by Google is, in Google’s opinion, no longer
|
||||
commercially viable.
|
||||
</p>
|
||||
<p>
|
||||
12.3 Nothing in this Section shall affect Google’s rights regarding provision of Services
|
||||
under Section 4 of the Terms.
|
||||
</p>
|
||||
<p>
|
||||
12.4 When these Terms come to an end, all of the legal rights, obligations and
|
||||
liabilities that you and Google have benefited from, been subject to (or which have
|
||||
accrued over time whilst the Terms have been in force) or which are expressed to continue
|
||||
indefinitely, shall be unaffected by this cessation, and the provisions of paragraph 19.7
|
||||
shall continue to apply to such rights, obligations and liabilities indefinitely.
|
||||
</p>
|
||||
<p>
|
||||
<strong>13. EXCLUSION OF WARRANTIES</strong>
|
||||
</p>
|
||||
<p>
|
||||
13.1 NOTHING IN THESE TERMS, INCLUDING SECTIONS 13 AND 14, SHALL EXCLUDE OR LIMIT
|
||||
GOOGLE’S WARRANTY OR LIABILITY FOR LOSSES WHICH MAY NOT BE LAWFULLY EXCLUDED OR LIMITED
|
||||
BY APPLICABLE LAW. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF CERTAIN WARRANTIES OR
|
||||
CONDITIONS OR THE LIMITATION OR EXCLUSION OF LIABILITY FOR LOSS OR DAMAGE CAUSED BY
|
||||
NEGLIGENCE, BREACH OF CONTRACT OR BREACH OF IMPLIED TERMS, OR INCIDENTAL OR CONSEQUENTIAL
|
||||
DAMAGES. ACCORDINGLY, ONLY THE LIMITATIONS WHICH ARE LAWFUL IN YOUR JURISDICTION WILL
|
||||
APPLY TO YOU AND OUR LIABILITY WILL BE LIMITED TO THE MAXIMUM EXTENT PERMITTED BY LAW.
|
||||
</p>
|
||||
<p>
|
||||
13.2 YOU EXPRESSLY UNDERSTAND AND AGREE THAT YOUR USE OF THE SERVICES IS AT YOUR SOLE
|
||||
RISK AND THAT THE SERVICES ARE PROVIDED "AS IS" AND “AS AVAILABLE.”
|
||||
</p>
|
||||
<p>
|
||||
13.3 IN PARTICULAR, GOOGLE, ITS SUBSIDIARIES AND AFFILIATES, AND ITS LICENSORS DO NOT
|
||||
REPRESENT OR WARRANT TO YOU THAT:
|
||||
</p>
|
||||
<p>
|
||||
(A) YOUR USE OF THE SERVICES WILL MEET YOUR REQUIREMENTS,
|
||||
</p>
|
||||
<p>
|
||||
(B) YOUR USE OF THE SERVICES WILL BE UNINTERRUPTED, TIMELY, SECURE OR FREE FROM ERROR,
|
||||
</p>
|
||||
<p>
|
||||
(C) ANY INFORMATION OBTAINED BY YOU AS A RESULT OF YOUR USE OF THE SERVICES WILL BE
|
||||
ACCURATE OR RELIABLE, AND
|
||||
</p>
|
||||
<p>
|
||||
(D) THAT DEFECTS IN THE OPERATION OR FUNCTIONALITY OF ANY SOFTWARE PROVIDED TO YOU AS
|
||||
PART OF THE SERVICES WILL BE CORRECTED.
|
||||
</p>
|
||||
<p>
|
||||
13.4 ANY MATERIAL DOWNLOADED OR OTHERWISE OBTAINED THROUGH THE USE OF THE SERVICES IS
|
||||
DONE AT YOUR OWN DISCRETION AND RISK AND THAT YOU WILL BE SOLELY RESPONSIBLE FOR ANY
|
||||
DAMAGE TO YOUR COMPUTER SYSTEM OR OTHER DEVICE OR LOSS OF DATA THAT RESULTS FROM THE
|
||||
DOWNLOAD OF ANY SUCH MATERIAL.
|
||||
</p>
|
||||
<p>
|
||||
13.5 NO ADVICE OR INFORMATION, WHETHER ORAL OR WRITTEN, OBTAINED BY YOU FROM GOOGLE OR
|
||||
THROUGH OR FROM THE SERVICES SHALL CREATE ANY WARRANTY NOT EXPRESSLY STATED IN THE TERMS.
|
||||
</p>
|
||||
<p>
|
||||
13.6 GOOGLE FURTHER EXPRESSLY DISCLAIMS ALL WARRANTIES AND CONDITIONS OF ANY KIND,
|
||||
WHETHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO THE IMPLIED WARRANTIES AND
|
||||
CONDITIONS OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
|
||||
</p>
|
||||
<p>
|
||||
<strong>14. LIMITATION OF LIABILITY</strong>
|
||||
</p>
|
||||
<p>
|
||||
14.1 SUBJECT TO OVERALL PROVISION IN PARAGRAPH 13.1 ABOVE, YOU EXPRESSLY UNDERSTAND AND
|
||||
AGREE THAT GOOGLE, ITS SUBSIDIARIES AND AFFILIATES, AND ITS LICENSORS SHALL NOT BE LIABLE
|
||||
TO YOU FOR:
|
||||
</p>
|
||||
<p>
|
||||
(A) ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL CONSEQUENTIAL OR EXEMPLARY DAMAGES WHICH
|
||||
MAY BE INCURRED BY YOU, HOWEVER CAUSED AND UNDER ANY THEORY OF LIABILITY.. THIS SHALL
|
||||
INCLUDE, BUT NOT BE LIMITED TO, ANY LOSS OF PROFIT (WHETHER INCURRED DIRECTLY OR
|
||||
INDIRECTLY), ANY LOSS OF GOODWILL OR BUSINESS REPUTATION, ANY LOSS OF DATA SUFFERED, COST
|
||||
OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR OTHER INTANGIBLE LOSS;
|
||||
</p>
|
||||
<p>
|
||||
(B) ANY LOSS OR DAMAGE WHICH MAY BE INCURRED BY YOU, INCLUDING BUT NOT LIMITED TO LOSS OR
|
||||
DAMAGE AS A RESULT OF:
|
||||
</p>
|
||||
<p>
|
||||
(I) ANY RELIANCE PLACED BY YOU ON THE COMPLETENESS, ACCURACY OR EXISTENCE OF ANY
|
||||
ADVERTISING, OR AS A RESULT OF ANY RELATIONSHIP OR TRANSACTION BETWEEN YOU AND ANY
|
||||
ADVERTISER OR SPONSOR WHOSE ADVERTISING APPEARS ON THE SERVICES;
|
||||
</p>
|
||||
<p>
|
||||
(II) ANY CHANGES WHICH GOOGLE MAY MAKE TO THE SERVICES, OR FOR ANY PERMANENT OR TEMPORARY
|
||||
CESSATION IN THE PROVISION OF THE SERVICES (OR ANY FEATURES WITHIN THE SERVICES);
|
||||
</p>
|
||||
<p>
|
||||
(III) THE DELETION OF, CORRUPTION OF, OR FAILURE TO STORE, ANY CONTENT AND OTHER
|
||||
COMMUNICATIONS DATA MAINTAINED OR TRANSMITTED BY OR THROUGH YOUR USE OF THE SERVICES;
|
||||
</p>
|
||||
<p>
|
||||
(IV) YOUR FAILURE TO PROVIDE GOOGLE WITH ACCURATE ACCOUNT INFORMATION;
|
||||
</p>
|
||||
<p>
|
||||
(V) YOUR FAILURE TO KEEP YOUR PASSWORD OR ACCOUNT DETAILS SECURE AND CONFIDENTIAL;
|
||||
</p>
|
||||
<p>
|
||||
14.2 THE LIMITATIONS ON GOOGLE’S LIABILITY TO YOU IN PARAGRAPH 14.1 ABOVE SHALL APPLY
|
||||
WHETHER OR NOT GOOGLE HAS BEEN ADVISED OF OR SHOULD HAVE BEEN AWARE OF THE POSSIBILITY OF
|
||||
ANY SUCH LOSSES ARISING.
|
||||
</p>
|
||||
<p>
|
||||
<strong>15. Copyright and trade mark policies</strong>
|
||||
</p>
|
||||
<p>
|
||||
15.1 It is Google’s policy to respond to notices of alleged copyright infringement that
|
||||
comply with applicable international intellectual property law (including, in the United
|
||||
States, the Digital Millennium Copyright Act) and to terminating the accounts of repeat
|
||||
infringers. Details of Google’s policy can be found at http://www.google.com/dmca.html.
|
||||
</p>
|
||||
<p>
|
||||
15.2 Google operates a trade mark complaints procedure in respect of Google’s advertising
|
||||
business, details of which can be found at http://www.google.com/tm_complaint.html.
|
||||
</p>
|
||||
<p>
|
||||
<strong>16. Advertisements</strong>
|
||||
</p>
|
||||
<p>
|
||||
16.1 Some of the Services are supported by advertising revenue and may display
|
||||
advertisements and promotions. These advertisements may be targeted to the content of
|
||||
information stored on the Services, queries made through the Services or other
|
||||
information.
|
||||
</p>
|
||||
<p>
|
||||
16.2 The manner, mode and extent of advertising by Google on the Services are subject to
|
||||
change without specific notice to you.
|
||||
</p>
|
||||
<p>
|
||||
16.3 In consideration for Google granting you access to and use of the Services, you
|
||||
agree that Google may place such advertising on the Services.
|
||||
</p>
|
||||
<p>
|
||||
<strong>17. Other content</strong>
|
||||
</p>
|
||||
<p>
|
||||
17.1 The Services may include hyperlinks to other web sites or content or resources.
|
||||
Google may have no control over any web sites or resources which are provided by
|
||||
companies or persons other than Google.
|
||||
</p>
|
||||
<p>
|
||||
17.2 You acknowledge and agree that Google is not responsible for the availability of any
|
||||
such external sites or resources, and does not endorse any advertising, products or other
|
||||
materials on or available from such web sites or resources.
|
||||
</p>
|
||||
<p>
|
||||
17.3 You acknowledge and agree that Google is not liable for any loss or damage which may
|
||||
be incurred by you as a result of the availability of those external sites or resources,
|
||||
or as a result of any reliance placed by you on the completeness, accuracy or existence
|
||||
of any advertising, products or other materials on, or available from, such web sites or
|
||||
resources.
|
||||
</p>
|
||||
<p>
|
||||
<strong>18. Changes to the Terms</strong>
|
||||
</p>
|
||||
<p>
|
||||
18.1 Google may make changes to the Universal Terms or Additional Terms from time to
|
||||
time. When these changes are made, Google will make a new copy of the Universal Terms
|
||||
available at http://www.google.com/chrome/intl/en/eula_text.html and any new Additional
|
||||
Terms will be made available to you from within, or through, the affected Services.
|
||||
</p>
|
||||
<p>
|
||||
18.2 You understand and agree that if you use the Services after the date on which the
|
||||
Universal Terms or Additional Terms have changed, Google will treat your use as
|
||||
acceptance of the updated Universal Terms or Additional Terms.
|
||||
</p>
|
||||
<p>
|
||||
<strong>19. General legal terms</strong>
|
||||
</p>
|
||||
<p>
|
||||
19.1 Sometimes when you use the Services, you may (as a result of, or in connection with
|
||||
your use of the Services) use a service or download a piece of software, or purchase
|
||||
goods, which are provided by another person or company. Your use of these other services,
|
||||
software or goods may be subject to separate terms between you and the company or person
|
||||
concerned. If so, the Terms do not affect your legal relationship with these other
|
||||
companies or individuals.
|
||||
</p>
|
||||
<p>
|
||||
19.2 The Terms constitute the whole legal agreement between you and Google and govern
|
||||
your use of the Services (but excluding any services which Google may provide to you
|
||||
under a separate written agreement), and completely replace any prior agreements between
|
||||
you and Google in relation to the Services.
|
||||
</p>
|
||||
<p>
|
||||
19.3 You agree that Google may provide you with notices, including those regarding
|
||||
changes to the Terms, by email, regular mail, or postings on the Services.
|
||||
</p>
|
||||
<p>
|
||||
19.4 You agree that if Google does not exercise or enforce any legal right or remedy
|
||||
which is contained in the Terms (or which Google has the benefit of under any applicable
|
||||
law), this will not be taken to be a formal waiver of Google’s rights and that those
|
||||
rights or remedies will still be available to Google.
|
||||
</p>
|
||||
<p>
|
||||
19.5 If any court of law, having the jurisdiction to decide on this matter, rules that
|
||||
any provision of these Terms is invalid, then that provision will be removed from the
|
||||
Terms without affecting the rest of the Terms. The remaining provisions of the Terms will
|
||||
continue to be valid and enforceable.
|
||||
</p>
|
||||
<p>
|
||||
19.6 You acknowledge and agree that each member of the group of companies of which Google
|
||||
is the parent shall be third party beneficiaries to the Terms and that such other
|
||||
companies shall be entitled to directly enforce, and rely upon, any provision of the
|
||||
Terms which confers a benefit on (or rights in favor of) them. Other than this, no other
|
||||
person or company shall be third party beneficiaries to the Terms.
|
||||
</p>
|
||||
<p>
|
||||
19.7 The Terms, and your relationship with Google under the Terms, shall be governed by
|
||||
the laws of the State of California without regard to its conflict of laws provisions.
|
||||
You and Google agree to submit to the exclusive jurisdiction of the courts located within
|
||||
the county of Santa Clara, California to resolve any legal matter arising from the Terms.
|
||||
Notwithstanding this, you agree that Google shall still be allowed to apply for
|
||||
injunctive remedies (or an equivalent type of urgent legal relief) in any jurisdiction.
|
||||
</p>
|
||||
<p>
|
||||
<strong>20. Additional Terms for Extensions for Google Chrome</strong>
|
||||
</p>
|
||||
<p>
|
||||
20.1 These terms in this section apply if you install extensions on your copy of Google
|
||||
Chrome. Extensions are small software programs, developed by Google or third parties,
|
||||
that can modify and enhance the functionality of Google Chrome. Extensions may have
|
||||
greater privileges to access your browser or your computer than regular webpages,
|
||||
including the ability to read and modify your private data.
|
||||
</p>
|
||||
<p>
|
||||
20.2 From time to time, Google Chrome may check with remote servers (hosted by Google or
|
||||
by third parties) for available updates to extensions, including but not limited to bug
|
||||
fixes or enhanced functionality. You agree that such updates will be automatically
|
||||
requested, downloaded, and installed without further notice to you.
|
||||
</p>
|
||||
<p>
|
||||
20.3 From time to time, Google may discover an extension that violates Google developer
|
||||
terms or other legal agreements, laws, regulations or policies. Google Chrome will
|
||||
periodically download a list of such extensions from Google’s servers. You agree that
|
||||
Google may remotely disable or remove any such extension from user systems in its sole
|
||||
discretion.
|
||||
</p>
|
||||
<p>
|
||||
<strong>21. Additional Terms for Enterprise Use</strong>
|
||||
</p>
|
||||
<p>
|
||||
21.1 If you are a business entity, then the individual accepting on behalf of the entity
|
||||
(for the avoidance of doubt, for business entities, in these Terms, "you" means the
|
||||
entity) represents and warrants that he or she has the authority to act on your behalf,
|
||||
that you represent that you are duly authorized to do business in the country or
|
||||
countries where you operate, and that your employees, officers, representatives, and
|
||||
other agents accessing the Service are duly authorized to access Google Chrome and to
|
||||
legally bind you to these Terms.
|
||||
</p>
|
||||
<p>
|
||||
21.2 Subject to the Terms, and in addition to the license grant in Section 9, Google
|
||||
grants you a non-exclusive, non-transferable license to reproduce, distribute, install,
|
||||
and use Google Chrome solely on machines intended for use by your employees, officers,
|
||||
representatives, and agents in connection with your business entity, and provided that
|
||||
their use of Google Chrome will be subject to the Terms.
|
||||
</p>
|
||||
<p>
|
||||
August 12, 2010
|
||||
</p><br>
|
||||
<hr>
|
||||
<br>
|
||||
<h2>
|
||||
Google Chrome Additional Terms of Service
|
||||
</h2>
|
||||
<p>
|
||||
<strong>MPEGLA</strong>
|
||||
</p>
|
||||
<p>
|
||||
THIS PRODUCT IS LICENSED UNDER THE AVC PATENT PORTFOLIO LICENSE FOR THE PERSONAL AND
|
||||
NON-COMMERCIAL USE OF A CONSUMER TO (i) ENCODE VIDEO IN COMPLIANCE WITH THE AVC STANDARD
|
||||
( “AVC VIDEO”) AND/OR (ii) DECODE AVC VIDEO THAT WAS ENCODED BY A CONSUMER ENGAGED IN A
|
||||
PERSONAL AND NON-COMMERCIAL ACTIVITY AND/OR WAS OBTAINED FROM A VIDEO PARTNER LICENSED TO
|
||||
PROVIDE AVC VIDEO. NO LICENSE IS GRANTED OR SHALL BE IMPLIED FOR ANY OTHER USE.
|
||||
ADDITIONAL INFORMATION MAY BE OBTAINED FROM MPEG LA, L.L.C. SEE HTTP://WWW.MPEGLA.COM.
|
||||
</p>
|
||||
<p>
|
||||
<strong>Adobe</strong>
|
||||
</p>
|
||||
<p>
|
||||
Google Chrome may include one or more components provided by Adobe Systems Incorporated
|
||||
and Adobe Software Ireland Limited (collectively “Adobe”). Your use of the Adobe software
|
||||
as provided by Google (“Adobe Software”) is subject to the following additional terms
|
||||
(the “Adobe Terms”). You, the entity receiving the Adobe Software, will be hereinafter
|
||||
referred to as “Sublicensee.”
|
||||
</p>
|
||||
<p>
|
||||
1. License Restrictions.
|
||||
</p>
|
||||
<p>
|
||||
(a) Flash Player, Version 10.x is designed only as a browser plug-in. Sublicensee may not
|
||||
modify or distribute this Adobe Software for use as anything but a browser plug-in for
|
||||
playing back content on a web page. For example, Sublicensee will not modify this Adobe
|
||||
Software in order to allow interoperation with applications that run outside of the
|
||||
browser (e.g., standalone applications, widgets, device UI).
|
||||
</p>
|
||||
<p>
|
||||
(b) Sublicensee will not expose any APIs of the Flash Player, Version 10.x through a
|
||||
browser plug-in interface in such a way that allows such extension to be used to playback
|
||||
content from a web page as a stand-alone application.
|
||||
</p>
|
||||
<p>
|
||||
(c) The Chrome-Reader Software may not be used to render any PDF or EPUB documents that
|
||||
utilize digital rights management protocols or systems other than Adobe DRM.
|
||||
</p>
|
||||
<p>
|
||||
(d) Adobe DRM must be enabled in the Chrome-Reader Software for all Adobe DRM protected
|
||||
PDF and EPUB documents.
|
||||
</p>
|
||||
<p>
|
||||
(e) The Chrome-Reader Software may not, other than as explicitly permitted by the
|
||||
technical specifications, disable any capabilities provided by Adobe in the Adobe
|
||||
Software, including but not limited to, support for PDF and EPUB formats and Adobe DRM.
|
||||
</p>
|
||||
<p>
|
||||
2. Electronic Transmission. Sublicensee may allow the download of the Adobe Software from
|
||||
a web site, the Internet, an intranet, or similar technology (an, “Electronic
|
||||
Transmissions”) provided that Sublicensee agrees that any distributions of the Adobe
|
||||
Software by Sublicensee, including those on CD-ROM, DVD-ROM or other storage media and
|
||||
Electronic Transmissions, if expressly permitted, shall be subject to reasonable security
|
||||
measures to prevent unauthorized use. With relation to Electronic Transmissions approved
|
||||
hereunder, Sublicensee agrees to employ any reasonable use restrictions set by Adobe,
|
||||
including those related to security and/or the restriction of distribution to end users
|
||||
of the Sublicensee Product.
|
||||
</p>
|
||||
<p>
|
||||
3. EULA and Distribution Terms.
|
||||
</p>
|
||||
<p>
|
||||
(a) Sublicensee shall ensure that the Adobe Software is distributed to end users under an
|
||||
enforceable end user license agreement, in favor of Sublicensee and its suppliers
|
||||
containing at least each of the following minimum terms (the “End-User License”): (i) a
|
||||
prohibition against distribution and copying, (ii) a prohibition against modifications
|
||||
and derivative works, (iii) a prohibition against decompiling, reverse engineering,
|
||||
disassembling, and otherwise reducing the Adobe Software to a human-perceivable form,
|
||||
(iv) a provision indicating ownership of Sublicensee Product (as defined in Section 8) by
|
||||
Sublicensee and its licensors, (v) a disclaimer of indirect, special, incidental,
|
||||
punitive, and consequential damages, and (vi) other industry standard disclaimers and
|
||||
limitations, including, as applicable: a disclaimer of all applicable statutory
|
||||
warranties, to the full extent allowed by law.
|
||||
</p>
|
||||
<p>
|
||||
(b) Sublicensee shall ensure that the Adobe Software is distributed to Sublicensee’s
|
||||
distributors under an enforceable distribution license agreement, in favor of Sublicensee
|
||||
and its suppliers containing terms as protective of Adobe as the Adobe Terms.
|
||||
</p>
|
||||
<p>
|
||||
4. Opensource. Sublicensee will not directly or indirectly grant, or purport to grant, to
|
||||
any third party any rights or immunities under Adobe’s intellectual property or
|
||||
proprietary rights that will subject such intellectual property to an open source license
|
||||
or scheme in which there is or could be interpreted to be a requirement that as a
|
||||
condition of use, modification and/or distribution, the Adobe Software be: (i) disclosed
|
||||
or distributed in source code form; (ii) licensed for the purpose of making derivative
|
||||
works; or (iii) redistributable at no charge. For clarification purposes, the foregoing
|
||||
restriction does not preclude Sublicensee from distributing, and Sublicensee will
|
||||
distribute the Adobe Software as bundled with the Google Software, without charge.
|
||||
</p>
|
||||
<p>
|
||||
5. Additional Terms. With respect to any update, upgrade, new versions of the Adobe
|
||||
Software (collectively “Upgrades”) provided to Sublicenses, Adobe reserves the right to
|
||||
require additional terms and conditions applicable solely to the Upgrade and future
|
||||
versions thereof, and solely to the extent that such restrictions are imposed by Adobe on
|
||||
all licensees of such Upgrade. If Sublicensee does not agree to such additional terms or
|
||||
conditions, Sublicensee will have no license rights with respect to such Upgrade, and
|
||||
Sublicensee’s license rights with respect to the Adobe Software will terminate
|
||||
automatically on the 90th day from the date such additional terms are made available to
|
||||
Sublicensee.
|
||||
</p>
|
||||
<p>
|
||||
6. Proprietary Rights Notices. Sublicensee shall not, and shall require its distributors
|
||||
not to, delete or in any manner alter the copyright notices, trademarks, logos or related
|
||||
notices, or other proprietary rights notices of Adobe (and its licensors, if any)
|
||||
appearing on or within the Adobe Software or accompanying materials.
|
||||
</p>
|
||||
<p>
|
||||
7. Technical Requirements. Sublicensee and its distributors may only distribute Adobe
|
||||
Software and/or Upgrade on devices that (i) meet the technical specifications posted on
|
||||
http://www.adobe.com/mobile/licensees, (or a successor web site thereto), and (ii) has
|
||||
been verified by Adobe as set forth below.
|
||||
</p>
|
||||
<p>
|
||||
8. Verification and Update. Sublicensee must submit to Adobe each Sublicensee product
|
||||
(and each version thereof) containing the Adobe Software and/or Upgrade (“Sublicensee
|
||||
Product”) that do not meet the Device Verification exemption criteria to be communicated
|
||||
by Google, for Adobe to verify. Sublicensee shall pay for each submission made by
|
||||
Sublicensee by procuring verification packages at Adobe’s then-current terms set forth at
|
||||
http://flashmobile.adobe.com/. Sublicensee Product that has not passed verification may
|
||||
not be distributed. Verification will be accomplished in accordance with Adobe’s
|
||||
then-current process described at http://flashmobile.adobe.com/ (“Verification”).
|
||||
</p>
|
||||
<p>
|
||||
9. Profiles and Device Central. Sublicensee will be prompted to enter certain profile
|
||||
information about the Sublicensee Products either as part of the Verification process or
|
||||
some other method, and Sublicensee will provide such information, to Adobe. Adobe may (i)
|
||||
use such profile information as reasonably necessary to verify the Sublicensee Product
|
||||
(if such product is subject to Verification), and (ii) display such profile information
|
||||
in “Adobe Device Intelligence system,” located at
|
||||
https://devices.adobe.com/partnerportal/, and made available through Adobe’s authoring
|
||||
and development tools and services to enable developers and end users to see how content
|
||||
or applications are displayed in Sublicensee Products (e.g. how video images appear in
|
||||
certain phones).
|
||||
</p>
|
||||
<p>
|
||||
10. Export. Sublicensee acknowledges that the laws and regulations of the United States
|
||||
restrict the export and re-export of commodities and technical data of United States
|
||||
origin, which may include the Adobe Software. Sublicensee agrees that it will not export
|
||||
or re-export the Adobe Software, without the appropriate United States and foreign
|
||||
governmental clearances, if any.
|
||||
</p>
|
||||
<p>
|
||||
11. Technology Pass-through Terms.
|
||||
</p>
|
||||
<p>
|
||||
(a) Except pursuant to applicable permissions or agreements therefor, from or with the
|
||||
applicable parties, Sublicensees shall not use and shall not allow the use of, the Adobe
|
||||
Software for the encoding or decoding of mp3 audio only (.mp3) data on any non-pc device
|
||||
(e.g., mobile phone or set-top box), nor may the mp3 encoders or decoders contained in
|
||||
the Adobe Software be used or accessed by any product other than the Adobe Software. The
|
||||
Adobe Software may be used for the encoding or decoding of MP3 data contained within a
|
||||
swf or flv file, which contains video, picture or other data. Sublicensee shall
|
||||
acknowledge that use of the Adobe Software for non-PC devices, as described in the
|
||||
prohibitions in this section, may require the payment of licensing royalties or other
|
||||
amounts to third parties who may hold intellectual property rights related to the MP3
|
||||
technology and that Adobe nor Sublicensee has not paid any royalties or other amounts on
|
||||
account of third party intellectual property rights for such use. If Sublicensee requires
|
||||
an MP3 encoder or decoder for such use, Sublicensee is responsible for obtaining the
|
||||
necessary intellectual property license, including any applicable patent rights.
|
||||
</p>
|
||||
<p>
|
||||
(b) Sublicensee will not use, copy, reproduce and modify (i) the On2 source code
|
||||
(provided hereunder as a component of the Source Code) as necessary to enable the Adobe
|
||||
Software to decode video in the Flash video file format (.flv or .f4v), and (ii) the
|
||||
Sorenson Spark source code (provided hereunder as a component of the Source Code) for the
|
||||
limited purpose of making bug fixes and performance enhancements to the Adobe Software.
|
||||
All codecs provided with the Adobe Software may only be used and distributed as an
|
||||
integrated part of the Adobe Software and may not be accessed by any other application,
|
||||
including other Google applications.
|
||||
</p>
|
||||
<p>
|
||||
(c) The Source Code may be provided with an AAC codec and/or HE-AAC codec (“the AAC
|
||||
Codec”). Use of the AAC Codec is conditioned on Sublicensee obtaining a proper patent
|
||||
license covering necessary patents as provided by VIA Licensing, for end products on or
|
||||
in which the AAC Codec will be used. Sublicensee acknowledges and agrees that Adobe is
|
||||
not providing a patent license for an AAC Codec under this Agreement to Sublicensee or
|
||||
its sublicensees.
|
||||
</p>
|
||||
<p>
|
||||
(d) THE SOURCE CODE MAY CONTAIN CODE LICENSED UNDER THE AVC PATENT PORTFOLIO LICENSE FOR
|
||||
THE PERSONAL NON-COMMERCIAL USE OF A CONSUMER TO (i) ENCODE VIDEO IN COMPLIANCE WITH THE
|
||||
AVC STANDARD ("AVC VIDEO") AND/OR (ii) DECODE AVC VIDEO THAT WAS ENCODED BY A CONSUMER
|
||||
ENGAGED IN A PERSONAL NON-COMMERCIAL ACTIVITY AND/OR WAS OBTAINED FROM A VIDEO PROVIDER
|
||||
LICENSED TO PROVIDE AVC VIDEO. NO LICENSE IS GRANTED OR WILL BE IMPLIED FOR ANY OTHER
|
||||
USE. ADDITIONAL INFORMATION MAY BE OBTAINED FROM MPEG LA, L.L.C. See
|
||||
http://www.mpegla.com
|
||||
</p>
|
||||
<p>
|
||||
12. Update. Sublicensee will not circumvent Google’s or Adobe’s efforts to update the
|
||||
Adobe Software in all Sublicensee’s products incorporating the Adobe Software as bundled
|
||||
with the Google Software (“Sublicensee Products”).
|
||||
</p>
|
||||
<p>
|
||||
13. Attribution and Proprietary Notices. Sublicensee will list the Adobe Software in
|
||||
publicly available Sublicensee Product specifications and include appropriate Adobe
|
||||
Software branding (specifically excluding the Adobe corporate logo) on the Sublicensee
|
||||
Product packaging or marketing materials in a manner consistent with branding of other
|
||||
third party products contained within the Sublicensee Product.
|
||||
</p>
|
||||
<p>
|
||||
14. No Warranty. THE ADOBE SOFTWARE IS MADE AVAILABLE TO SUBLICENSEE FOR USE AND
|
||||
REPRODUCTION “AS IS” AND ADOBE MAKES NO WARRANTY AS TO ITS USE OR PERFORMANCE. ADOBE AND
|
||||
ITS SUPPLIERS DO NOT AND CANNOT WARRANT THE PERFORMANCE OR RESULTS OBTAINED BY USING THE
|
||||
ADOBE SOFTWARE. EXCEPT FOR ANY WARRANTY, CONDITION, REPRESENTATION OR TERM TO THE EXTENT
|
||||
TO WHICH THE SAME CANNOT OR MAY NOT BE EXCLUDED OR LIMITED BY LAW APPLICABLE TO
|
||||
SUBLICENSEEIN SUBLICENSEE’S JURISDICTION, ADOBE AND ITS SUPPLIERS MAKE NO WARRANTIES,
|
||||
CONDITIONS, REPRESENTATIONS, OR TERMS (EXPRESS OR IMPLIED WHETHER BY STATUTE, COMMON LAW,
|
||||
CUSTOM, USAGE OR OTHERWISE) AS TO ANY MATTER INCLUDING WITHOUT LIMITATION NONINFRINGEMENT
|
||||
OF THIRD PARTY RIGHTS, MERCHANTABILITY, INTEGRATION, SATISFACTORY QUALITY, OR FITNESS FOR
|
||||
ANY PARTICULAR PURPOSE. SUBLICENSEE AGREES THAT SUBLICENSEE SHALL NOT MAKE ANY WARRANTY,
|
||||
EXPRESS OR IMPLIED, ON BEHALF OF ADOBE.
|
||||
</p>
|
||||
<p>
|
||||
15. Limitation of Liability. IN NO EVENT WILL ADOBE OR ITS SUPPLIERS BE LIABLE TO
|
||||
SUBLICENSEE FOR ANY DAMAGES, CLAIMS OR COSTS WHATSOEVER OR ANY CONSEQUENTIAL, INDIRECT,
|
||||
OR INCIDENTAL DAMAGES, OR ANY LOST PROFITS OR LOST SAVINGS, EVEN IF AN ADOBE
|
||||
REPRESENTATIVE HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH LOSS, DAMAGES, CLAIMS OR COSTS
|
||||
OR FOR ANY CLAIM BY ANY THIRD PARTY. THE FOREGOING LIMITATIONS AND EXCLUSIONS APPLY TO
|
||||
THE EXTENT PERMITTED BY APPLICABLE LAW IN SUBLICENSEE’S JURISDICTION. ADOBE’S AGGREGATE
|
||||
LIABILITY AND THAT OF ITS SUPPLIERS UNDER OR IN CONNECTION WITH THIS AGREEMENT SHALL BE
|
||||
LIMITED TO ONE THOUSAND DOLLARS (US$1,000). Nothing contained in this Agreement limits
|
||||
Adobe’s liability to Sublicensee in the event of death or personal injury resulting from
|
||||
Adobe’s negligence or for the tort of deceit (fraud). Adobe is acting on behalf of its
|
||||
suppliers for the purpose of disclaiming, excluding and/or limiting obligations,
|
||||
warranties and liability as provided in this Agreement, but in no other respects and for
|
||||
no other purpose.
|
||||
</p>
|
||||
<p>
|
||||
16. Content Protection Terms
|
||||
</p>
|
||||
<p>
|
||||
(a) Definitions.
|
||||
</p>
|
||||
<p>
|
||||
“Compliance and Robustness Rules” means the document setting forth compliance and
|
||||
robustness rules for the Adobe Software located at http://www.adobe.com/mobile/licensees,
|
||||
or a successor web site thereto.
|
||||
</p>
|
||||
<p>
|
||||
“Content Protection Functions” means those aspects of the Adobe Software that are
|
||||
designed to ensure compliance with the Compliance and Robustness Rules, and to prevent
|
||||
playback, copying, modification, redistribution or other actions with respect to digital
|
||||
content distributed for consumption by users of the Adobe Software when such actions are
|
||||
not authorized by the owners of such digital content or its licensed distributors.
|
||||
</p>
|
||||
<p>
|
||||
“Content Protection Code” means code within certain designated versions of the Adobe
|
||||
Software that enables certain Content Protection Functions.
|
||||
</p>
|
||||
<p>
|
||||
“Key” means a cryptographic value contained in the Adobe Software for use in decrypting
|
||||
digital content.
|
||||
</p>
|
||||
<p>
|
||||
(b) License Restrictions. Sublicensee’s right to exercise the licenses with respect to
|
||||
the Adobe Software is subject to the following additional restrictions and obligations.
|
||||
Sublicensee will ensure that Sublicensee’s customers comply with these restrictions and
|
||||
obligations to the same extent imposed on Sublicensee with respect to the Adobe Software;
|
||||
any failure by Sublicensee’s customers to comply with these additional restrictions and
|
||||
obligations shall be treated as a material breach by Sublicensee.
|
||||
</p>
|
||||
<p>
|
||||
b.1. Sublicensee and customers may only distribute the Adobe Software that meets the
|
||||
Robustness and Compliance Rules as so confirmed by Sublicensee during the verification
|
||||
process described above in the Adobe Terms.
|
||||
</p>
|
||||
<p>
|
||||
b.2. Sublicensee shall not (i) circumvent the Content Protection Functions of either the
|
||||
Adobe Software or any related Adobe Software that is used to encrypt or decrypt digital
|
||||
content for authorized consumption by users of the Adobe Software, or (ii) develop or
|
||||
distribute products that are designed to circumvent the Content Protection Functions of
|
||||
either the Adobe Software or any Adobe Software that is used to encrypt or decrypt
|
||||
digital content for authorized consumption by users of the Adobe Software.
|
||||
</p>
|
||||
<p>
|
||||
(c) The Keys are hereby designated as Adobe’s Confidential Information, and Sublicensee
|
||||
will, with respect to the Keys, adhere to Adobe’s Source Code Handling Procedure (to be
|
||||
provided by Adobe upon request).
|
||||
</p>
|
||||
<p>
|
||||
(d) Injunctive Relief. Sublicensee agrees that a breach of this Agreement may compromise
|
||||
the Content Protection Functions of the Adobe Software and may cause unique and lasting
|
||||
harm to the interests of Adobe and owners of digital content that rely on such Content
|
||||
Protection Functions, and that monetary damages may be inadequate to compensate fully for
|
||||
such harm. Therefore, Sublicensee further agrees that Adobe may be entitled to seek
|
||||
injunctive relief to prevent or limit the harm caused by any such breach, in addition to
|
||||
monetary damages.
|
||||
</p>
|
||||
<p>
|
||||
17. Intended Third-party Beneficiary. Adobe Systems Incorporated and Adobe Software
|
||||
Ireland Limited are the intended third-party beneficiaries of Google’s agreement with
|
||||
Sublicensee with respect to the Adobe Software, including but not limited to, the Adobe
|
||||
Terms. Sublicensee agrees, notwithstanding anything to the contrary in its agreement with
|
||||
Google, that Google may disclose Sublicensee’s identity to Adobe and certify in writing
|
||||
that Sublicensee has entered into a license agreement with Google which includes the
|
||||
Adobe Terms. Sublicensee must have an agreement with each of its licensees, and if such
|
||||
licensees are allowed to redistribute the Adobe Software, such agreement will include the
|
||||
Adobe Terms.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,11 @@
|
||||
#!/bin/bash
|
||||
|
||||
XDG_CONFIG_HOME=${XDG_CONFIG_HOME:-~/.config}
|
||||
|
||||
# Allow users to override command-line options
|
||||
if [[ -f $XDG_CONFIG_HOME/chrome-flags.conf ]]; then
|
||||
CHROME_USER_FLAGS="$(grep -v '^#' $XDG_CONFIG_HOME/chrome-flags.conf)"
|
||||
fi
|
||||
|
||||
# Launch
|
||||
exec /opt/google/chrome/google-chrome $CHROME_USER_FLAGS "$@"
|
||||
@@ -0,0 +1,14 @@
|
||||
# Colored makepkg-like functions
|
||||
note() {
|
||||
printf "${_blue}==>${_yellow} NOTE:${_bold} %s${_all_off}\n" "$1"
|
||||
}
|
||||
|
||||
_all_off="$(tput sgr0)"
|
||||
_bold="${_all_off}$(tput bold)"
|
||||
_blue="${_bold}$(tput setaf 4)"
|
||||
_yellow="${_bold}$(tput setaf 3)"
|
||||
|
||||
post_install() {
|
||||
note "Custom flags should be put directly in: ~/.config/chrome-flags.conf"
|
||||
note "The launcher is called: 'google-chrome-stable'"
|
||||
}
|
||||
@@ -1,3 +1,12 @@
|
||||
{
|
||||
"source": "local"
|
||||
"source": "local",
|
||||
"upstream": {
|
||||
"git_tags": "https://github.com/omacom/hype.git",
|
||||
"tag_pattern": "v{pkgver}",
|
||||
"sources": {
|
||||
"any": [
|
||||
"https://github.com/omacom/hype/archive/refs/tags/{tag}.tar.gz"
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,7 +1,7 @@
|
||||
# Maintainer: David Heinemeier Hansson <david@hey.com>
|
||||
|
||||
pkgname=hype
|
||||
pkgver=0.4.1
|
||||
pkgver=0.4.2
|
||||
pkgrel=1
|
||||
pkgdesc='Simple Markdown presentations with a visual slide editor'
|
||||
arch=('x86_64' 'aarch64')
|
||||
@@ -24,7 +24,7 @@ depends=(
|
||||
)
|
||||
makedepends=('gcc' 'make')
|
||||
source=("$pkgname-$pkgver.tar.gz::$url/archive/refs/tags/v$pkgver.tar.gz")
|
||||
sha256sums=('0724a9d18df7657b50dff21ffe3dec1c107e9191a9e9fd5ad40b56ed9d5d6f51')
|
||||
sha256sums=('eff1a0d8ff04eca8602aeaf0284d1792c0a881f00ecddafe7578ba5ada33cd64')
|
||||
|
||||
build() {
|
||||
cd "$srcdir/$pkgname-$pkgver"
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
{
|
||||
"source": "local",
|
||||
"sync": false,
|
||||
"release_ring": "fast",
|
||||
"upstream": {
|
||||
"git_tags": "https://github.com/hyprwm/Hyprland.git",
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
|
||||
pkgname=(hyprland hyprpm)
|
||||
pkgver=0.56.2
|
||||
pkgrel=3
|
||||
pkgrel=4
|
||||
pkgdesc='a highly customizable dynamic tiling Wayland compositor'
|
||||
arch=(aarch64)
|
||||
url="https://github.com/hyprwm/${pkgname^}"
|
||||
@@ -65,12 +65,16 @@ optdepends=('hyprpm: build and install plugins'
|
||||
'xdg-desktop-portal-hyprland: xdg-desktop-portal backend for hyprland')
|
||||
provides=(wayland-compositor)
|
||||
_archive="${pkgname^}-$pkgver"
|
||||
source=("$_archive.tar.gz::$url/releases/download/v$pkgver/source-v$pkgver.tar.gz")
|
||||
sha256sums=('03ad3f5ef152ff44116ffd56fcf808486211ecabf4f0ba567108ee746ba5cd2e')
|
||||
source=("$_archive.tar.gz::$url/releases/download/v$pkgver/source-v$pkgver.tar.gz"
|
||||
software-renderer.patch)
|
||||
sha256sums=('03ad3f5ef152ff44116ffd56fcf808486211ecabf4f0ba567108ee746ba5cd2e'
|
||||
'380bb6d61c36d6c68bcccf242131f5b259734e8570ea39b3bc519b9ed137eddd')
|
||||
|
||||
prepare() {
|
||||
ln -sf hyprland-source "$_archive"
|
||||
cd "$_archive"
|
||||
# Backport of hyprwm/Hyprland#16343; drop once the packaged release includes it
|
||||
patch -Np1 --fuzz=0 -i "$srcdir/software-renderer.patch"
|
||||
sed -i -e '/^release:/{n;s/-D/-DCMAKE_SKIP_RPATH=ON -D/}' Makefile
|
||||
sed -i -e '/find_package.glaze/s/7...<8 //' {.,hyprpm,start}/CMakeLists.txt
|
||||
}
|
||||
|
||||
@@ -0,0 +1,7 @@
|
||||
# Hyprland software-rendering backport
|
||||
|
||||
Automatic upstream version bumps are held (`sync: false`) while the packaged release carries [Hyprland #16343](https://github.com/hyprwm/Hyprland/pull/16343) as `software-renderer.patch`. `prepare()` applies that patch with `--fuzz=0`. Hyprland's `release_ring: fast` builds edge, rc, and stable from this recipe. Aquamarine changes in the official/ALARM repositories are checked by the separate six-hour `sync-rebuilds` job through `rebuild_on`, which proposes a package release bump for rebuilding.
|
||||
|
||||
The hold does not require staying on v0.56.2 until #16343 lands. If a newer upstream release does not yet include the fix, update `pkgver`, rebase the patch and refresh its checksum, and test software rendering and accelerated rendering before publishing. Keep `sync: false` while the backport is needed.
|
||||
|
||||
Remove `sync: false` and `software-renderer.patch` in the same change once the selected upstream release includes the #16343 behavior. Set `pkgver` to that release, then test software rendering and accelerated rendering before publishing.
|
||||
@@ -0,0 +1,76 @@
|
||||
From: Scott Jones <scottajones@gmail.com>
|
||||
Subject: [PATCH] render: detect software rendering from the GL renderer (0.56.2 backport)
|
||||
|
||||
Backport-of: 61d0ff60a7547d49229714a68b7ca9c0b6658727
|
||||
Backport-of: c3dcabc15ba7b71bd1bcd880e9f543909dd9372d
|
||||
Upstream-PR: https://github.com/hyprwm/Hyprland/pull/16343
|
||||
Co-authored-by: Eryk Wieliczko <44800858+erykwieliczko@users.noreply.github.com>
|
||||
|
||||
Adapt constructor and logger-context differences against v0.56.2 while
|
||||
preserving the GL classification behavior. v0.56.2 has no
|
||||
StringUtils.hpp, so the ASCII case-insensitive matcher lives as a
|
||||
file-local helper in GLRenderer.cpp. Remove this backport once the
|
||||
packaged upstream version includes this behavior.
|
||||
|
||||
--- a/src/render/GLRenderer.cpp
|
||||
+++ b/src/render/GLRenderer.cpp
|
||||
@@ -22,6 +22,7 @@
|
||||
#include "./gl/GLTexture.hpp"
|
||||
|
||||
#include <cstdint>
|
||||
+#include <string_view>
|
||||
#include <hyprutils/memory/SharedPtr.hpp>
|
||||
#include <hyprutils/memory/UniquePtr.hpp>
|
||||
#include <hyprutils/utils/ScopeGuard.hpp>
|
||||
@@ -36,7 +37,30 @@ extern "C" {
|
||||
#include <xf86drm.h>
|
||||
}
|
||||
|
||||
-CHyprGLRenderer::CHyprGLRenderer() : IHyprRenderer(), m_elementRenderer(makeUnique<CGLElementRenderer>()) {}
|
||||
+// Whether haystack contains needle, ignoring ASCII case only; all other bytes must match exactly.
|
||||
+static bool containsCaseInsensitive(const std::string_view haystack, const std::string_view needle) {
|
||||
+ const auto lower = [](const unsigned char c) { return c >= 'A' && c <= 'Z' ? c + ('a' - 'A') : c; };
|
||||
+
|
||||
+ for (size_t i = 0; i + needle.size() <= haystack.size(); ++i) {
|
||||
+ size_t j = 0;
|
||||
+ while (j < needle.size() && lower(haystack[i + j]) == lower(needle[j]))
|
||||
+ ++j;
|
||||
+
|
||||
+ if (j == needle.size())
|
||||
+ return true;
|
||||
+ }
|
||||
+
|
||||
+ return false;
|
||||
+}
|
||||
+
|
||||
+CHyprGLRenderer::CHyprGLRenderer() : IHyprRenderer(), m_elementRenderer(makeUnique<CGLElementRenderer>()) {
|
||||
+ // KMS can be display-only; classify the active GL renderer instead of the DRM driver.
|
||||
+ g_pHyprOpenGL->makeEGLCurrent();
|
||||
+ if (const auto* renderer = rc<const char*>(glGetString(GL_RENDERER))) {
|
||||
+ const std::string_view name{renderer};
|
||||
+ m_software = containsCaseInsensitive(name, "llvmpipe") || containsCaseInsensitive(name, "softpipe") || containsCaseInsensitive(name, "Software Rasterizer");
|
||||
+ }
|
||||
+}
|
||||
|
||||
IHyprRenderer::eType CHyprGLRenderer::type() {
|
||||
return RT_GL;
|
||||
--- a/src/render/Renderer.cpp
|
||||
+++ b/src/render/Renderer.cpp
|
||||
@@ -104,8 +104,6 @@ IHyprRenderer::IHyprRenderer() {
|
||||
m_nvidia = true;
|
||||
else if (name.contains("i915"))
|
||||
m_intel = true;
|
||||
- else if (name.contains("softpipe") || name.contains("Software Rasterizer") || name.contains("llvmpipe"))
|
||||
- m_software = true;
|
||||
|
||||
Log::logger->log(Log::DEBUG, "DRM driver information: {} v{}.{}.{} from {} description {}", name, DRMV->version_major, DRMV->version_minor, DRMV->version_patchlevel,
|
||||
std::string{DRMV->date, DRMV->date_len}, std::string{DRMV->desc, DRMV->desc_len});
|
||||
@@ -126,8 +124,6 @@ IHyprRenderer::IHyprRenderer() {
|
||||
m_nvidia = true;
|
||||
else if (name.contains("i915"))
|
||||
m_intel = true;
|
||||
- else if (name.contains("softpipe") || name.contains("Software Rasterizer") || name.contains("llvmpipe"))
|
||||
- m_software = true;
|
||||
|
||||
Log::logger->log(Log::DEBUG, "Primary DRM driver information: {} v{}.{}.{} from {} description {}", name, DRMV->version_major, DRMV->version_minor,
|
||||
DRMV->version_patchlevel, std::string{DRMV->date, DRMV->date_len}, std::string{DRMV->desc, DRMV->desc_len});
|
||||
@@ -1,7 +1,7 @@
|
||||
# Maintainer: Dan Wahlin <dwahlin@gmail.com>
|
||||
|
||||
pkgname=learn-omarchy
|
||||
pkgver=0.2.2
|
||||
pkgver=0.2.4
|
||||
pkgrel=1
|
||||
pkgdesc="Interactive, theme-aware courses for learning Omarchy"
|
||||
arch=('any')
|
||||
@@ -25,7 +25,7 @@ optdepends=(
|
||||
)
|
||||
options=('!strip')
|
||||
source=("$pkgname-$pkgver.tar.gz::$url/releases/download/v$pkgver/$pkgname-$pkgver.tar.gz")
|
||||
sha256sums=('67f14778c2b66d56c1504695b0e11cab603f1a002570abc94b4bae9b0bec6066')
|
||||
sha256sums=('34e13cb452dbef9104400cfc468dcee84575e511c11f425b69fd6a9b462599e5')
|
||||
|
||||
package() {
|
||||
cd "$srcdir/$pkgname-$pkgver"
|
||||
|
||||
@@ -0,0 +1,12 @@
|
||||
{
|
||||
"source": "local",
|
||||
"upstream": {
|
||||
"watch": {
|
||||
"git_tags": "https://github.com/sofus13/libva-v4l2_request.git",
|
||||
"pattern": "(?P<version>[0-9]+(?:\\.[0-9]+)*)"
|
||||
}
|
||||
},
|
||||
"rebuild_on": [
|
||||
"libva"
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,55 @@
|
||||
# VA-API driver with Apple Video Decoder fixes from the sofus13 fork.
|
||||
# The asahi alias lets libva discover it on Apple Silicon.
|
||||
|
||||
_fork=sofus13
|
||||
pkgname=libva-v4l2_request-avd
|
||||
pkgver=1.3
|
||||
pkgrel=1
|
||||
pkgdesc='VA-API driver for V4L2 stateless decoders, with Apple Video Decoder (AVD) support'
|
||||
arch=('aarch64')
|
||||
url="https://github.com/$_fork/libva-v4l2_request"
|
||||
license=('GPL-3.0-or-later')
|
||||
# The driver is a dlopen()ed plugin: it links only libc and exports the VA
|
||||
# backend entry point (__vaDriverInit_1_24), so libva is a runtime rather than
|
||||
# a link-time dependency -- and that symbol is versioned, so this needs a
|
||||
# rebuild whenever libva's driver ABI is bumped. libdrm is only used for
|
||||
# drm_fourcc.h constants at compile time.
|
||||
depends=('glibc' 'libva')
|
||||
makedepends=('meson' 'libdrm')
|
||||
provides=('libva-v4l2_request')
|
||||
conflicts=('libva-v4l2_request')
|
||||
install="$pkgname.install"
|
||||
source=("$pkgname-$pkgver.tar.gz::$url/archive/refs/tags/$pkgver.tar.gz")
|
||||
sha256sums=('3670a1712f9f0a5a61bd44a781eba81dd9b2e0fd8271417ca8a9fbbed9dccfe9')
|
||||
|
||||
build() {
|
||||
# driverdir is left unset so meson takes it from libva's pkg-config
|
||||
# (/usr/lib/dri); the codec set is decided by configure-time checks against
|
||||
# the kernel uapi headers, so linux-api-headers governs what gets built in.
|
||||
# Plain meson rather than arch-meson: the latter lives in devtools, which is
|
||||
# not a safe assumption outside a clean chroot. buildtype=plain hands the
|
||||
# compiler makepkg's own CFLAGS/LDFLAGS, which is what arch-meson does too.
|
||||
meson setup \
|
||||
--prefix=/usr \
|
||||
--buildtype=plain \
|
||||
--wrap-mode=nodownload \
|
||||
"libva-v4l2_request-$pkgver" build
|
||||
meson compile -C build
|
||||
}
|
||||
|
||||
package() {
|
||||
meson install -C build --destdir "$pkgdir"
|
||||
|
||||
# libva picks its driver from the DRM driver name of the render node, which
|
||||
# on Apple Silicon is "asahi", so it looks for asahi_drv_video.so. Nothing
|
||||
# else ships that name (mesa provides no VA driver for asahi), so aliasing it
|
||||
# here makes every VA-API application find the decoder with no environment
|
||||
# variable at all. If mesa ever ships its own asahi_drv_video.so this will
|
||||
# collide and pacman will say so at install time.
|
||||
ln -sf v4l2_request_drv_video.so "$pkgdir/usr/lib/dri/asahi_drv_video.so"
|
||||
|
||||
install -Dm644 "libva-v4l2_request-$pkgver/COPYING" \
|
||||
"$pkgdir/usr/share/licenses/$pkgname/COPYING"
|
||||
install -Dm644 "libva-v4l2_request-$pkgver/README" \
|
||||
"$pkgdir/usr/share/doc/$pkgname/README"
|
||||
}
|
||||
@@ -0,0 +1,21 @@
|
||||
post_install() {
|
||||
cat <<'MSG'
|
||||
==> This package installs itself as asahi_drv_video.so as well, which is the
|
||||
name libva looks for on Apple Silicon, so VA-API applications should pick
|
||||
the decoder up with no configuration.
|
||||
|
||||
If something does not, select it explicitly for the session:
|
||||
|
||||
LIBVA_DRIVER_NAME=v4l2_request
|
||||
|
||||
==> Check with: vainfo
|
||||
==> mpv: mpv --hwdec=vaapi video.mp4
|
||||
==> Firefox: additionally needs MOZ_DISABLE_RDD_SANDBOX=1, because the RDD
|
||||
sandbox blocks the /dev/video* and /dev/media* access this
|
||||
driver requires. That weakens Firefox's media sandbox.
|
||||
MSG
|
||||
}
|
||||
|
||||
post_upgrade() {
|
||||
post_install
|
||||
}
|
||||
@@ -2,7 +2,7 @@
|
||||
_pkgname="limine-entry-tool"
|
||||
pkgname="limine-mkinitcpio-hook"
|
||||
_gradle_version=9.7.1
|
||||
pkgver=1.39.0
|
||||
pkgver=1.40.0
|
||||
pkgrel=1
|
||||
pkgdesc="Install kernels for the Limine bootloader."
|
||||
arch=('x86_64' 'aarch64')
|
||||
@@ -10,7 +10,9 @@ url="https://gitlab.com/Zesko/limine-entry-tool"
|
||||
source=("${_pkgname}::git+${url}.git#tag=${pkgver}")
|
||||
source_x86_64=("https://github.com/graalvm/graalvm-ce-builds/releases/download/graal-25.2.4/graalvm-community-jdk-25i2-25.0.4_linux-x64_bin.tar.gz")
|
||||
source_aarch64=("https://github.com/graalvm/graalvm-ce-builds/releases/download/graal-25.2.4/graalvm-community-jdk-25i2-25.0.4_linux-aarch64_bin.tar.gz"
|
||||
"https://services.gradle.org/distributions/gradle-${_gradle_version}-bin.zip")
|
||||
"https://services.gradle.org/distributions/gradle-${_gradle_version}-bin.zip"
|
||||
"limine-apple-gate"
|
||||
"mkinitcpio-install.hook")
|
||||
license=("GPL3")
|
||||
provides=('limine-entry-tool')
|
||||
options=(!debug !strip)
|
||||
@@ -31,10 +33,12 @@ makedepends=('git')
|
||||
makedepends_x86_64=('gradle')
|
||||
backup=(etc/limine-entry-tool.conf)
|
||||
conflicts=('limine-entry-tool')
|
||||
sha256sums=('6c4affb6fb6367a1222f7d0c54957a3142781d7894bbf61b1a274bd153e5d869')
|
||||
sha256sums=('267e0496d863b01903d6b99dae8c222a0ec33c4108a8a5d6e9b38eaa4a4a2edf')
|
||||
sha256sums_x86_64=('3f4a89de8eaa96f2ed677f09957c7e872cd8467aad3537f8b5394c1b8c4b942e')
|
||||
sha256sums_aarch64=('22286f7ecd21b9aedb3226b9bf797469e1bd3eefc491e12ef3dd49b452d230b7'
|
||||
'acd53f1edaf02f1a8ff99879f8a34b302661a057d9b063ae9e35b552f804d20a')
|
||||
'acd53f1edaf02f1a8ff99879f8a34b302661a057d9b063ae9e35b552f804d20a'
|
||||
'199fa2122e4a20ed80e6cf5df235b4e50739593803522bfa65700b1ef242b9ce'
|
||||
'9fc607e81d2f09aa0dfd313805277af92977535bd222f1e86caf5fbb28138cb4')
|
||||
|
||||
prepare() {
|
||||
[[ -d "${_graalvm_version}" ]] && rm -rf "${_graalvm_version}"
|
||||
@@ -77,4 +81,58 @@ package() {
|
||||
# limine hook symlinks
|
||||
ln -sf /usr/bin/limine-reset-enroll "$pkgdir/etc/boot/hooks/pre.d/10-limine-reset-enroll"
|
||||
ln -sf /usr/bin/limine-enroll-config "$pkgdir/etc/boot/hooks/post.d/90-limine-enroll-config"
|
||||
|
||||
if [[ $CARCH == aarch64 ]]; then
|
||||
_apple_silicon_hooks
|
||||
fi
|
||||
}
|
||||
|
||||
# An Apple Silicon Mac boots GRUB until Omarchy activates Limine, and keeps
|
||||
# the kernel and initramfs that mkinitcpio's presets install under /boot
|
||||
# after that too (GRUB, the boot check and the snapshot tools read them).
|
||||
# The aarch64 hooks and mkinitcpio wrapper run through limine-apple-gate,
|
||||
# which leaves every other machine as upstream ships it. On a Mac:
|
||||
# - Limine's kernel and removal hooks wait until Limine is active;
|
||||
# - mkinitcpio's own kernel hook, which Limine's takes over by name, runs from
|
||||
# a copy of mkinitcpio 42's (mkinitcpio-install.hook: keep its triggers in
|
||||
# step with mkinitcpio's), just before Limine's;
|
||||
# - Limine's EFI deploy hook stays out: omarchy-mac-boot puts Limine in
|
||||
# U-Boot's EFI/BOOT/BOOTAA64.EFI slot;
|
||||
# - the wrapper is plain mkinitcpio: it would run limine-mkinitcpio after
|
||||
# every preset build, mkinitcpio's kernel hook included.
|
||||
_apple_silicon_hooks() {
|
||||
local scripts=/usr/share/libalpm/scripts
|
||||
local gate=$scripts/limine-apple-gate
|
||||
local hooks="$pkgdir/usr/share/libalpm/hooks"
|
||||
local kernel_hook="$pkgdir/etc/pacman.d/hooks/90-mkinitcpio-install.hook"
|
||||
local mac_hook="$hooks/90-mkinitcpio-apple-install.hook"
|
||||
local wrapper="$pkgdir/usr/local/bin/mkinitcpio"
|
||||
|
||||
install -Dm755 "$srcdir/limine-apple-gate" "$pkgdir$gate"
|
||||
install -Dm644 "$srcdir/mkinitcpio-install.hook" "$mac_hook"
|
||||
sed -i -e 's|^Description = .*|Description = Updating linux initcpios under /boot (Apple Silicon)...|' \
|
||||
-e "s|^Exec = $scripts/mkinitcpio install\$|Exec = $gate --mac $scripts/mkinitcpio install|" "$mac_hook"
|
||||
sed -i "s|^Exec = $scripts/limine-mkinitcpio-|Exec = $gate $scripts/limine-mkinitcpio-|" \
|
||||
"$kernel_hook" "$hooks/60-limine-mkinitcpio-remove-pre.hook" "$hooks/90-limine-mkinitcpio-remove-post.hook"
|
||||
sed -i "s|^Exec = /usr/bin/limine-install\$|Exec = $gate --not-mac /usr/bin/limine-install|" "$hooks/80-limine-efi-deploy.hook"
|
||||
sed -i "1a $gate --mac \\&\\& exec /usr/bin/mkinitcpio \"\$@\"" "$wrapper"
|
||||
|
||||
local expected=(
|
||||
"$mac_hook|Exec = $gate --mac $scripts/mkinitcpio install"
|
||||
"$kernel_hook|Exec = $gate $scripts/limine-mkinitcpio-install"
|
||||
"$hooks/60-limine-mkinitcpio-remove-pre.hook|Exec = $gate $scripts/limine-mkinitcpio-remove pre"
|
||||
"$hooks/90-limine-mkinitcpio-remove-post.hook|Exec = $gate $scripts/limine-mkinitcpio-remove post"
|
||||
"$hooks/80-limine-efi-deploy.hook|Exec = $gate --not-mac /usr/bin/limine-install"
|
||||
)
|
||||
local entry
|
||||
for entry in "${expected[@]}"; do
|
||||
[[ $(grep '^Exec = ' "${entry%%|*}") == "${entry#*|}" ]] || {
|
||||
echo "${entry%%|*}: expected '${entry#*|}'" >&2
|
||||
return 1
|
||||
}
|
||||
done
|
||||
[[ $(sed -n 1,2p "$wrapper") == $'#!/usr/bin/env bash\n'"$gate --mac && exec /usr/bin/mkinitcpio \"\$@\"" ]] || {
|
||||
echo "the mkinitcpio wrapper does not start with the Apple Silicon gate" >&2
|
||||
return 1
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,69 @@
|
||||
#!/bin/bash
|
||||
# The aarch64 package runs its pacman hooks and its mkinitcpio wrapper through
|
||||
# this, so that only an Apple Silicon Mac behaves differently from upstream:
|
||||
#
|
||||
# limine-apple-gate COMMAND... COMMAND, except on a Mac that has not activated Limine
|
||||
# limine-apple-gate --mac COMMAND... COMMAND on a Mac only
|
||||
# limine-apple-gate --not-mac COMMAND... COMMAND everywhere but a Mac
|
||||
# limine-apple-gate --mac succeeds on a Mac only
|
||||
#
|
||||
# A Mac boots GRUB until Omarchy activates Limine: the gate
|
||||
# /var/lib/omarchy/limine.enabled and the /etc/default/limine the activation
|
||||
# writes, the same test as omarchy-mac-limine-active. A command that does not
|
||||
# run reads the targets pacman streams to it and succeeds quietly.
|
||||
|
||||
gate=/var/lib/omarchy/limine.enabled
|
||||
limine_default=/etc/default/limine
|
||||
compatible=(/proc/device-tree/compatible /sys/firmware/devicetree/base/compatible)
|
||||
|
||||
# Fixtures fake the machine for an unprivileged caller only; as root, which
|
||||
# pacman hooks always are, the live system decides.
|
||||
if ((EUID != 0)); then
|
||||
gate=${OMARCHY_LIMINE_GATE:-$gate}
|
||||
limine_default=${OMARCHY_LIMINE_DEFAULT:-$limine_default}
|
||||
if [[ -n ${OMARCHY_PROC_ROOT:-}${OMARCHY_SYS_ROOT:-} ]]; then
|
||||
compatible=()
|
||||
[[ -z ${OMARCHY_PROC_ROOT:-} ]] || compatible+=("$OMARCHY_PROC_ROOT/device-tree/compatible")
|
||||
[[ -z ${OMARCHY_SYS_ROOT:-} ]] || compatible+=("$OMARCHY_SYS_ROOT/firmware/devicetree/base/compatible")
|
||||
fi
|
||||
fi
|
||||
|
||||
# m1n1 names every Apple Silicon Mac "apple,<model>" in the root node's
|
||||
# NUL-separated compatible list, as omarchy-hw-platform reads it.
|
||||
is_mac() {
|
||||
local source
|
||||
for source in "${compatible[@]}"; do
|
||||
[[ -r $source ]] && tr '\0' '\n' <"$source" | grep -q '^apple,' && return 0
|
||||
done
|
||||
return 1
|
||||
}
|
||||
|
||||
# pacman writes NeedsTargets to a socket and fails the write if the hook has
|
||||
# gone; hooks without NeedsTargets get no stdin at all.
|
||||
pass() {
|
||||
if [[ -S /dev/stdin || -p /dev/stdin ]]; then
|
||||
cat >/dev/null
|
||||
fi
|
||||
exit 0
|
||||
}
|
||||
|
||||
mode=limine
|
||||
case ${1:-} in
|
||||
--mac | --not-mac)
|
||||
mode=${1#--}
|
||||
shift
|
||||
;;
|
||||
esac
|
||||
|
||||
if (($# == 0)); then
|
||||
[[ $mode == mac ]] && { is_mac; exit; }
|
||||
echo "usage: limine-apple-gate [--mac|--not-mac] COMMAND [ARG]..." >&2
|
||||
exit 2
|
||||
fi
|
||||
|
||||
case $mode in
|
||||
mac) is_mac || pass ;;
|
||||
not-mac) ! is_mac || pass ;;
|
||||
limine) ! is_mac || [[ -e $gate && -f $limine_default ]] || pass ;;
|
||||
esac
|
||||
exec "$@"
|
||||
@@ -0,0 +1,38 @@
|
||||
[Trigger]
|
||||
Type = Path
|
||||
Operation = Install
|
||||
Operation = Upgrade
|
||||
Operation = Remove
|
||||
Target = usr/lib/initcpio/*
|
||||
Target = usr/lib/firmware/*
|
||||
Target = usr/lib/modules/*/extramodules/
|
||||
Target = usr/src/*/dkms.conf
|
||||
Target = usr/lib/systemd/systemd
|
||||
Target = usr/lib/systemd/systemd-udevd
|
||||
Target = usr/bin/cryptsetup
|
||||
Target = usr/bin/lvm
|
||||
Target = usr/bin/mdadm
|
||||
Target = usr/bin/pdata_tools
|
||||
Target = usr/lib/libcryptsetup.so
|
||||
Target = usr/lib/libp11-kit.so
|
||||
Target = usr/lib/libpcsclite.so
|
||||
Target = usr/lib/modprobe.d/
|
||||
|
||||
[Trigger]
|
||||
Type = Path
|
||||
Operation = Install
|
||||
Operation = Upgrade
|
||||
Target = usr/lib/modules/*/vmlinuz
|
||||
|
||||
[Trigger]
|
||||
Type = Package
|
||||
Operation = Install
|
||||
Operation = Upgrade
|
||||
Target = mkinitcpio
|
||||
Target = mkinitcpio-git
|
||||
|
||||
[Action]
|
||||
Description = Updating linux initcpios...
|
||||
When = PostTransaction
|
||||
Exec = /usr/share/libalpm/scripts/mkinitcpio install
|
||||
NeedsTargets
|
||||
@@ -0,0 +1,5 @@
|
||||
{
|
||||
"source": "local",
|
||||
"skip_build": true,
|
||||
"channels": ["edge"]
|
||||
}
|
||||
@@ -0,0 +1,226 @@
|
||||
# AArch64 Apple Silicon (Aurora Silicon)
|
||||
# Based on the asahi-alarm linux-asahi package by Jos Dehaes and Matthias Kurz.
|
||||
#
|
||||
# Aurora Silicon maintain a fork of the Asahi kernel carrying DisplayPort
|
||||
# alt-mode and USB4 support for external monitors, variable refresh rate, and
|
||||
# the ISP and AOP drivers. Those changes touch device trees, the type-C stack
|
||||
# and DRM, so they cannot ship as a module: this is a whole alternative kernel
|
||||
# for Macs on the Omarchy edge channel. It reaches rc and stable only after
|
||||
# cold-boot qualification on M1 and M2.
|
||||
|
||||
_auroraver=7.1.12
|
||||
_aurorarel=2
|
||||
pkgrel=11
|
||||
|
||||
# Immutable pin on aurora-silicon/linux (branch aurora-wip). Every bump is a
|
||||
# PR that moves _commit and the archive checksum; the pinned commit is cold-boot
|
||||
# qualified on MacBook Pro 14" M1 Pro (j314s) and 16" M2 Max (j416c) first.
|
||||
_commit=2439016d2e8d3a0d8aebcd243f29604a91f201c9
|
||||
|
||||
_m1n1_version=1.6.1
|
||||
|
||||
pkgbase=linux-aurora
|
||||
_srcname=linux-${_commit}
|
||||
_kernelname=${pkgbase#linux}
|
||||
_desc="AArch64 Apple Silicon (Aurora kernel)"
|
||||
pkgver="${_auroraver}.aurora${_aurorarel}"
|
||||
arch=('aarch64')
|
||||
url="https://github.com/aurora-silicon/linux"
|
||||
license=('GPL2')
|
||||
|
||||
makedepends=(
|
||||
base-devel bc dtc kmod libelf pahole cpio perl rustup rust-bindgen tar xz xmlto python
|
||||
)
|
||||
options=('!strip')
|
||||
source=(
|
||||
https://github.com/aurora-silicon/linux/archive/${_commit}.tar.gz
|
||||
config # the main kernel config file
|
||||
rust-toolchain.toml
|
||||
)
|
||||
sha256sums=('6347354537148120fc5448afcb8671a558ce336f731c70690cd88062a903f84d'
|
||||
'e8f3818e6bfa70166dd5caff228a0becfdd5d4f0165b589efa38150fd0b59cc9'
|
||||
'2a95563bb9f5b216cc3c170a17e9471448bc63a7084bdd67df23d074939b366c')
|
||||
|
||||
# Kbuild takes ARCH literally and knows arm64, not aarch64.
|
||||
export ARCH=arm64
|
||||
export KBUILD_BUILD_HOST=archlinux
|
||||
export KBUILD_BUILD_USER=$pkgbase
|
||||
export KBUILD_BUILD_TIMESTAMP="$(date -Ru${SOURCE_DATE_EPOCH:+d @$SOURCE_DATE_EPOCH})"
|
||||
|
||||
prepare() {
|
||||
cd $_srcname
|
||||
|
||||
echo "Setting version..."
|
||||
echo "-$_aurorarel-$pkgrel" > localversion.10-pkgrel
|
||||
|
||||
local src
|
||||
for src in "${source[@]}"; do
|
||||
src="${src%%::*}"
|
||||
src="${src##*/}"
|
||||
[[ $src = *.patch ]] || continue
|
||||
echo "Applying patch $src..."
|
||||
patch -Np1 < "../$src"
|
||||
done
|
||||
|
||||
echo "Pinning the Rust toolchain..."
|
||||
cp ../rust-toolchain.toml .
|
||||
|
||||
echo "Creating build directories..."
|
||||
mkdir -p build/base
|
||||
|
||||
echo "Setting config (base)..."
|
||||
cp ../config build/base/.config
|
||||
make olddefconfig prepare O=$PWD/build/base
|
||||
diff -u ../config build/base/.config || :
|
||||
make -s kernelrelease O=$PWD/build/base > build/base/version
|
||||
|
||||
echo "Prepared $pkgbase version $(<build/base/version)"
|
||||
}
|
||||
|
||||
build() {
|
||||
cd $_srcname
|
||||
echo "Building base..."
|
||||
make all O=$PWD/build/base -j $(nproc)
|
||||
}
|
||||
|
||||
_package_kernel() {
|
||||
pkgdesc="The $pkgdesc kernel and modules"
|
||||
depends=(coreutils kmod initramfs $2 "m1n1>=$_m1n1_version")
|
||||
optdepends=('crda: to set the correct wireless channels of your country'
|
||||
'linux-firmware: firmware images needed for some devices')
|
||||
# No generic linux provide: on a shared aarch64 repository it would compete
|
||||
# with linux-aarch64 for any dependency on linux.
|
||||
provides=(WIREGUARD-MODULE linux-asahi=${pkgver})
|
||||
conflicts=(linux-asahi)
|
||||
|
||||
local kernver="$(<$O/version)"
|
||||
local modulesdir="$pkgdir/usr/lib/modules/$kernver"
|
||||
|
||||
echo "Installing boot image..."
|
||||
# systemd expects to find the kernel here to allow hibernation
|
||||
# https://github.com/systemd/systemd/commit/edda44605f06a41fb86b7ab8128dcf99161d2344
|
||||
install -Dm644 "$O"/arch/arm64/boot/Image "$modulesdir/vmlinuz"
|
||||
|
||||
# Used by mkinitcpio to name the kernel
|
||||
echo "$1" | install -Dm644 /dev/stdin "$modulesdir/pkgbase"
|
||||
|
||||
echo "Installing modules..."
|
||||
make O="$O" INSTALL_MOD_PATH="$pkgdir/usr" INSTALL_MOD_STRIP=1 modules_install
|
||||
|
||||
echo "Installing device trees..."
|
||||
install -Dt "$modulesdir/dtbs" "$O"/arch/arm64/boot/dts/apple/*.dtb
|
||||
|
||||
# remove build and source links
|
||||
rm -f "$modulesdir"/{source,build}
|
||||
}
|
||||
|
||||
_package() {
|
||||
cd $_srcname
|
||||
export O="$PWD/build/base"
|
||||
_package_kernel "$pkgbase"
|
||||
}
|
||||
|
||||
_package-headers() {
|
||||
pkgdesc="Headers and scripts for building modules for the $pkgdesc kernel"
|
||||
depends=(pahole)
|
||||
provides=(linux-asahi-headers=${pkgver})
|
||||
conflicts=(linux-asahi-headers)
|
||||
|
||||
KARCH=arm64
|
||||
|
||||
cd $_srcname
|
||||
O=build/base
|
||||
local builddir="$pkgdir/usr/lib/modules/$(<${O}/version)/build"
|
||||
|
||||
echo "Installing build files..."
|
||||
install -Dt "$builddir" -m644 $O/.config Makefile $O/Module.symvers $O/System.map \
|
||||
localversion.* $O/version $O/vmlinux
|
||||
install -Dt "$builddir/kernel" -m644 kernel/Makefile
|
||||
cp -t "$builddir" -a scripts $O/scripts
|
||||
|
||||
# required when STACK_VALIDATION is enabled
|
||||
#install -Dt "$builddir/tools/objtool" tools/objtool/objtool
|
||||
|
||||
# required when DEBUG_INFO_BTF_MODULES is enabled
|
||||
install -Dt "$builddir/tools/bpf/resolve_btfids" $O/tools/bpf/resolve_btfids/resolve_btfids
|
||||
|
||||
echo "Installing headers..."
|
||||
cp -t "$builddir" -a include $O/include
|
||||
|
||||
install -Dt "${builddir}/arch/${KARCH}" -m644 arch/${KARCH}/Makefile
|
||||
install -Dt "${builddir}/arch/${KARCH}/kernel" -m644 $O/arch/${KARCH}/kernel/asm-offsets.s
|
||||
cp -t "${builddir}/arch/${KARCH}" -a arch/${KARCH}/include $O/arch/${KARCH}/include
|
||||
|
||||
install -Dt "$builddir/drivers/md" -m644 drivers/md/*.h
|
||||
install -Dt "$builddir/net/mac80211" -m644 net/mac80211/*.h
|
||||
|
||||
# https://bugs.archlinux.org/task/13146
|
||||
install -Dt "$builddir/drivers/media/i2c" -m644 drivers/media/i2c/msp3400-driver.h
|
||||
|
||||
# https://bugs.archlinux.org/task/20402
|
||||
install -Dt "$builddir/drivers/media/usb/dvb-usb" -m644 drivers/media/usb/dvb-usb/*.h
|
||||
install -Dt "$builddir/drivers/media/dvb-frontends" -m644 drivers/media/dvb-frontends/*.h
|
||||
install -Dt "$builddir/drivers/media/tuners" -m644 drivers/media/tuners/*.h
|
||||
|
||||
# https://bugs.archlinux.org/task/71392
|
||||
install -Dt "$builddir/drivers/iio/common/hid-sensors" -m644 drivers/iio/common/hid-sensors/*.h
|
||||
|
||||
echo "Installing KConfig files..."
|
||||
find . -name 'Kconfig*' -exec install -Dm644 {} "$builddir/{}" \;
|
||||
|
||||
echo "Installing unstripped VDSO..."
|
||||
make O="$O" INSTALL_MOD_PATH="$pkgdir/usr" vdso_install link=
|
||||
|
||||
echo "Removing unneeded architectures..."
|
||||
local arch
|
||||
for arch in "$builddir"/arch/*/; do
|
||||
[[ $arch = */${KARCH}/ ]] && continue
|
||||
echo "Removing $(basename "$arch")"
|
||||
rm -r "$arch"
|
||||
done
|
||||
|
||||
echo "Removing documentation..."
|
||||
rm -r "$builddir/Documentation"
|
||||
|
||||
echo "Removing broken symlinks..."
|
||||
find -L "$builddir" -type l -printf 'Removing %P\n' -delete
|
||||
|
||||
echo "Removing loose objects..."
|
||||
find "$builddir" -type f -name '*.o' -printf 'Removing %P\n' -delete
|
||||
|
||||
echo "Removing cmd files..."
|
||||
find "$builddir" -type f -name '*.cmd' -printf 'Removing %P\n' -delete
|
||||
|
||||
echo "Stripping build tools..."
|
||||
local file
|
||||
while read -rd '' file; do
|
||||
case "$(file --no-sandbox -bi "$file")" in
|
||||
application/x-sharedlib\;*) # Libraries (.so)
|
||||
strip -v $STRIP_SHARED "$file" ;;
|
||||
application/x-archive\;*) # Libraries (.a)
|
||||
strip -v $STRIP_STATIC "$file" ;;
|
||||
application/x-executable\;*) # Binaries
|
||||
strip -v $STRIP_BINARIES "$file" ;;
|
||||
application/x-pie-executable\;*) # Relocatable binaries
|
||||
strip -v $STRIP_SHARED "$file" ;;
|
||||
esac
|
||||
done < <(find "$builddir" -type f -perm -u+x ! -name vmlinux -print0)
|
||||
|
||||
echo "Stripping vmlinux..."
|
||||
strip -v $STRIP_STATIC "$builddir/vmlinux"
|
||||
|
||||
echo "Adding symlink..."
|
||||
mkdir -p "$pkgdir/usr/src"
|
||||
ln -sr "$builddir" "$pkgdir/usr/src/$pkgbase"
|
||||
|
||||
}
|
||||
|
||||
pkgname=("$pkgbase" "$pkgbase-headers")
|
||||
for _p in "${pkgname[@]}"; do
|
||||
eval "package_$_p() {
|
||||
$(declare -f "_package${_p#$pkgbase}")
|
||||
_package${_p#$pkgbase}
|
||||
}"
|
||||
done
|
||||
|
||||
# vim:set ts=8 sts=2 sw=2 et:
|
||||
File diff suppressed because it is too large.
Load diff
@@ -0,0 +1,4 @@
|
||||
[toolchain]
|
||||
channel = "1.93.1"
|
||||
components = ["rustc", "cargo", "rust-src"]
|
||||
targets = ["aarch64-unknown-linux-gnu"]
|
||||
@@ -0,0 +1,5 @@
|
||||
{
|
||||
"source": "local",
|
||||
"channels": ["edge"],
|
||||
"sync": false
|
||||
}
|
||||
@@ -0,0 +1,54 @@
|
||||
# m1n1 for linux-aurora. Aurora's device trees name the USB4 aliases
|
||||
# usb4-N-acio, usb4-N-nhi and usb4-N-pcie-adapter; m1n1 v1.6.1 only looks up
|
||||
# the usb4_N_* names, so without the alias fallback the USB4 tunables are
|
||||
# never applied. The Asahi m1n1 stays with linux-asahi.
|
||||
pkgname=m1n1-aurora
|
||||
pkgver=1.6.1.aurora1
|
||||
pkgrel=3
|
||||
pkgdesc='Omarchy Aurora m1n1 with compatible USB4 tunable aliases'
|
||||
arch=('aarch64')
|
||||
url='https://github.com/aurora-silicon/m1n1'
|
||||
license=('MIT' 'CC0-1.0' 'OFL-1.1-RFN' 'Zlib' 'BSD-2-Clause OR GPL-2.0-or-later' 'BSD-3-Clause OR GPL-2.0-or-later' 'MIT OR Apache-2.0')
|
||||
provides=("m1n1=$pkgver")
|
||||
conflicts=('m1n1')
|
||||
makedepends=('clang' 'lld' 'llvm' 'rustup' 'make' 'patch')
|
||||
options=('!strip' '!debug')
|
||||
_commit=06a4601a351ebfd1abb6abba9a44c34e40d94776
|
||||
source=("m1n1-${_commit}.tar.gz::https://github.com/aurora-silicon/m1n1/archive/${_commit}.tar.gz"
|
||||
aurora-cio-aliases.patch
|
||||
bootlogo_48.bin
|
||||
bootlogo_128.bin
|
||||
bootlogo_256.bin
|
||||
)
|
||||
sha256sums=('9d6972d3edaff856e985f2b1feb64fcf9b42fc5eecda7be64a242b49bbbe636d'
|
||||
'4345a4e431642c4316595bdf023bc67d5c72e0374f3c8d59be81318710138f32'
|
||||
'6668050653645711ad7523fe2abeb4cbe85a92c875f3eec754b6db23cea2191c'
|
||||
'b19cb017645c7a9068ea0be9b6bb394131d7ca11b28093cf6caa1ffca74b0a4e'
|
||||
'9c659b392aacfa31c62c638003d2257abfdbe17919b5c90cde4c4e62f87addab')
|
||||
|
||||
prepare() {
|
||||
cd "m1n1-$_commit"
|
||||
patch -p1 < "$srcdir/aurora-cio-aliases.patch"
|
||||
for size in 48 128 256; do
|
||||
cp "$srcdir/bootlogo_$size.bin" "data/bootlogo_$size.bin"
|
||||
done
|
||||
rustup toolchain install 1.89.0 --profile minimal --target aarch64-unknown-none-softfloat
|
||||
}
|
||||
|
||||
build() {
|
||||
cd "m1n1-$_commit"
|
||||
RUSTUP_TOOLCHAIN=1.89.0 make RELEASE=1 USE_CLANG=1 ARCH=aarch64-linux-gnu \
|
||||
M1N1_VERSION_TAG=v1.6.1-omarchy.aurora1
|
||||
}
|
||||
|
||||
package() {
|
||||
# asahi-scripts (update-m1n1 and its pacman hook) only exists in the
|
||||
# asahi-alarm repository, which the builder does not configure. Declared
|
||||
# here so makepkg does not try to install it at build time.
|
||||
depends=('asahi-scripts>=20260127.1')
|
||||
|
||||
cd "m1n1-$_commit"
|
||||
install -Dm644 build/m1n1.bin "$pkgdir/usr/lib/asahi-boot/m1n1.bin"
|
||||
install -Dm644 LICENSE "$pkgdir/usr/share/licenses/$pkgname/LICENSE"
|
||||
install -m644 3rdparty_licenses/* "$pkgdir/usr/share/licenses/$pkgname/"
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
# m1n1-aurora
|
||||
|
||||
m1n1 v1.6.1 from aurora-silicon/m1n1 (06a4601a351ebfd1abb6abba9a44c34e40d94776) with RC, NHI and PCIe adapter alias fallbacks for the USB4 tunables, plus the Omarchy boot logos. Aurora's device trees name those aliases `usb4-N-acio`, `usb4-N-nhi` and `usb4-N-pcie-adapter`; stock m1n1 only looks up the `usb4_N_*` names. Latest Aurora m1n1 main is not qualified.
|
||||
|
||||
## Pairing with linux-aurora
|
||||
|
||||
- It provides `m1n1=1.6.1.aurora1`, which satisfies linux-aurora's `m1n1>=1.6.1`, and conflicts with asahi-alarm's `m1n1`. pacman prefers a package literally named `m1n1` over a provider, so an Aurora transaction names `m1n1-aurora` explicitly and accepts its conflict with `m1n1` (`--ask 4` under `--noconfirm`).
|
||||
- It owns `/usr/lib/asahi-boot/m1n1.bin`. asahi-scripts' `95-m1n1-install.hook` runs `update-m1n1` when that file, `/usr/lib/modules/*/dtbs/*` or U-Boot changes. `update-m1n1` writes m1n1, the device trees and gzipped U-Boot into `m1n1/boot.bin` on the system ESP. asahi-alarm's default takes the device trees from the newest `/lib/modules/*-ARCH/dtbs`, which is where linux-aurora installs its Apple DTBs. `/etc/default/update-m1n1` overrides are left alone.
|
||||
- Raising linux-aurora's `_m1n1_version` above 1.6.1 needs an m1n1-aurora whose provided version satisfies it, released first.
|
||||
|
||||
## Qualification
|
||||
|
||||
Each bump is cold-boot qualified on the M1 Pro and M2 Max: package installation, the hook rebuilding `boot.bin`, the logo, physical boot and two external displays. A successful build is not hardware acceptance.
|
||||
@@ -0,0 +1,28 @@
|
||||
diff --git a/src/kboot.c b/src/kboot.c
|
||||
index a5bd4f1..1089666 100644
|
||||
--- a/src/kboot.c
|
||||
+++ b/src/kboot.c
|
||||
@@ -1249,17 +1249,23 @@ static int dt_set_acio_tunables(void)
|
||||
|
||||
memset(fdt_alias, 0, sizeof(fdt_alias));
|
||||
snprintf(fdt_alias, sizeof(fdt_alias), "usb4_%d_rc", i);
|
||||
+ if (!fdt_get_alias(dt, fdt_alias))
|
||||
+ snprintf(fdt_alias, sizeof(fdt_alias), "usb4-%d-acio", i);
|
||||
dt_copy_acio_tunables(adt_path, fdt_alias, usb4_rc_tunables,
|
||||
sizeof(usb4_rc_tunables) / sizeof(*usb4_rc_tunables));
|
||||
|
||||
memset(fdt_alias, 0, sizeof(fdt_alias));
|
||||
snprintf(fdt_alias, sizeof(fdt_alias), "usb4_%d_pcie_adapter", i);
|
||||
+ if (!fdt_get_alias(dt, fdt_alias))
|
||||
+ snprintf(fdt_alias, sizeof(fdt_alias), "usb4-%d-pcie-adapter", i);
|
||||
dt_copy_acio_tunables(adt_path, fdt_alias, usb4_pcie_adapter_tunables,
|
||||
sizeof(usb4_pcie_adapter_tunables) /
|
||||
sizeof(*usb4_pcie_adapter_tunables));
|
||||
|
||||
memset(fdt_alias, 0, sizeof(fdt_alias));
|
||||
snprintf(fdt_alias, sizeof(fdt_alias), "usb4_%d_nhi", i);
|
||||
+ if (!fdt_get_alias(dt, fdt_alias))
|
||||
+ snprintf(fdt_alias, sizeof(fdt_alias), "usb4-%d-nhi", i);
|
||||
dt_copy_acio_tunables(adt_path, fdt_alias, usb4_nhi_tunables,
|
||||
sizeof(usb4_nhi_tunables) / sizeof(*usb4_nhi_tunables));
|
||||
dt_copy_usb4_drom(adt_path, fdt_alias);
|
||||
Binary file not shown.
@@ -0,0 +1 @@
|
||||
榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻jLine truncated
|
||||
Binary file not shown.
@@ -0,0 +1,4 @@
|
||||
[microsoft-edge-stable-bin]
|
||||
source = "regex"
|
||||
url = "https://packages.microsoft.com/repos/edge/dists/stable/main/binary-amd64/Packages"
|
||||
regex = "(?s)Package: microsoft-edge-stable\\n.*?Version: ([0-9.]+)-"
|
||||
@@ -0,0 +1,15 @@
|
||||
{
|
||||
"source": "local",
|
||||
"release_ring": "fast",
|
||||
"upstream": {
|
||||
"watch": {
|
||||
"debian": "https://packages.microsoft.com/repos/edge/dists/stable/main/binary-amd64/Packages",
|
||||
"package": "microsoft-edge-stable",
|
||||
"pattern": "(?P<version>[0-9]+(?:\\.[0-9]+)*)-1"
|
||||
}
|
||||
},
|
||||
"origin": {
|
||||
"aur": "microsoft-edge-stable-bin",
|
||||
"commit": "4f6358224df9e58ad9ef84980505d1ead732f8dc"
|
||||
}
|
||||
}
|
||||
BIN
Binary file not shown.
@@ -0,0 +1,74 @@
|
||||
|
||||
# Maintainer: Peter Jung <ptr1337@archlinux.org>
|
||||
# Contributor: Aakash Hemadri <aakashhemadri123@gmail.com>
|
||||
# Contributor: Nicolas Narvaez <nicomix1006@gmail.com>
|
||||
# Contributor: Luna Jernberg <droidbittin@gmail.com>
|
||||
# Contributor: EsauPR
|
||||
# Contributor: nowy
|
||||
|
||||
pkgname=microsoft-edge-stable-bin
|
||||
_pkgname=microsoft-edge
|
||||
_pkgshortname=msedge
|
||||
_channel=stable
|
||||
pkgver=154.0.4258.37
|
||||
pkgrel=2
|
||||
pkgdesc="A browser that combines a minimal design with sophisticated technology to make the web faster, safer, and easier"
|
||||
arch=('x86_64')
|
||||
url="https://www.microsoftedgeinsider.com/en-us/download"
|
||||
license=('Licenseref-custom')
|
||||
provides=('microsoft-edge-stable' 'edge-stable')
|
||||
conflicts=('microsoft-edge-stable' 'edge-stable' 'edge-stable-bin' 'edge')
|
||||
depends=('gtk3' 'libcups' 'nss' 'alsa-lib' 'libxtst' 'libdrm' 'mesa' 'libxml2')
|
||||
makedepends=('imagemagick')
|
||||
optdepends=(
|
||||
'libpipewire: WebRTC desktop sharing under Wayland'
|
||||
'kdialog: for file dialogs in KDE'
|
||||
'gnome-keyring: for storing passwords in GNOME keyring'
|
||||
'kwallet: for storing passwords in KWallet'
|
||||
'libunity: for download progress on KDE'
|
||||
'ttf-liberation: fix fonts for some PDFs - CRBug #369991'
|
||||
'xdg-utils'
|
||||
)
|
||||
options=(!strip !zipman !emptydirs)
|
||||
source=("https://packages.microsoft.com/repos/edge/pool/main/m/microsoft-edge-stable/${_pkgname}-${_channel}_${pkgver}-1_amd64.deb"
|
||||
"microsoft-edge-stable.sh"
|
||||
"Microsoft Standard Application License Terms - Standalone (free) Use Terms.pdf")
|
||||
sha256sums=('c6fa2974733991321b46c4064b785cdec5a14d8cddd182bc5fda057e37e7603d'
|
||||
'dc3765d2de6520b13f105b8001aa0e40291bc9457ac508160b23eea8811e26af'
|
||||
'edf2ed596eb068f168287fc76aa713ad5e0afb59f0a0a47a4f29c0c124ade15e')
|
||||
|
||||
package() {
|
||||
bsdtar -xf data.tar.xz -C "$pkgdir/"
|
||||
|
||||
# suid sandbox
|
||||
chmod 4755 "${pkgdir}/opt/microsoft/${_pkgshortname}/msedge-sandbox"
|
||||
|
||||
# 256 and 24 are proper colored icons
|
||||
for res in 128 64 48 32; do
|
||||
magick "${pkgdir}/opt/microsoft/${_pkgshortname}/product_logo_256.png" \
|
||||
-resize ${res}x${res} \
|
||||
"${pkgdir}/opt/microsoft/${_pkgshortname}/product_logo_${res}.png"
|
||||
done
|
||||
for res in 22 16; do
|
||||
magick "${pkgdir}/opt/microsoft/${_pkgshortname}/product_logo_24.png" \
|
||||
-resize ${res}x${res} \
|
||||
"${pkgdir}/opt/microsoft/${_pkgshortname}/product_logo_${res}.png"
|
||||
done
|
||||
|
||||
# install icons
|
||||
for res in 16 24 32 48 64 128 256; do
|
||||
install -Dm644 "${pkgdir}/opt/microsoft/${_pkgshortname}/product_logo_${res}.png" \
|
||||
"${pkgdir}/usr/share/icons/hicolor/${res}x${res}/apps/${_pkgname}.png"
|
||||
done
|
||||
|
||||
# User flag aware launcher
|
||||
install -m755 microsoft-edge-stable.sh "${pkgdir}/usr/bin/microsoft-edge-stable"
|
||||
# License
|
||||
install -Dm644 'Microsoft Standard Application License Terms - Standalone (free) Use Terms.pdf' "${pkgdir}/usr/share/licenses/${_pkgname}/LICENSE.pdf"
|
||||
rm "${pkgdir}/opt/microsoft/${_pkgshortname}"/product_logo_*.png
|
||||
|
||||
# Remove the Debian cron job, which installs an apt keyring pacman doesn't track
|
||||
rm -r \
|
||||
"${pkgdir}/etc/cron.daily/" \
|
||||
"${pkgdir}/opt/microsoft/${_pkgshortname}/cron/"
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
# Colored makepkg-like functions
|
||||
msg_blue() {
|
||||
printf "${blue}==>${bold} $1${all_off}\n"
|
||||
}
|
||||
|
||||
note() {
|
||||
printf "${blue}==>${yellow} NOTE:${bold} $1${all_off}\n"
|
||||
}
|
||||
|
||||
all_off="$(tput sgr0)"
|
||||
bold="${all_off}$(tput bold)"
|
||||
blue="${bold}$(tput setaf 4)"
|
||||
yellow="${bold}$(tput setaf 3)"
|
||||
|
||||
post_install() {
|
||||
note "Custom flags should be put directly in: ~/.config/microsoft-edge-stable-flags.conf"
|
||||
note "The launcher is called: 'microsoft-edge-stable'"
|
||||
}
|
||||
|
||||
post_upgrade() {
|
||||
post_install
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
#!/usr/bin/env sh
|
||||
# Launches MS Edge with flags specified in $XDG_CONFIG_HOME/microsoft-edge-beta-flags.conf
|
||||
|
||||
# Make script fail if `cat` fails for some reason
|
||||
set -e
|
||||
|
||||
# Set default value if variable is unset/null
|
||||
XDG_CONFIG_HOME="${XDG_CONFIG_HOME:-${HOME}/.config}"
|
||||
|
||||
# Attempt to read a config file if it exists
|
||||
if [ -r "${XDG_CONFIG_HOME}/microsoft-edge-stable-flags.conf" ]; then
|
||||
EDGE_USER_FLAGS="$(cat "$XDG_CONFIG_HOME/microsoft-edge-stable-flags.conf")"
|
||||
fi
|
||||
|
||||
exec /opt/microsoft/msedge/microsoft-edge $EDGE_USER_FLAGS "$@"
|
||||
@@ -1,6 +1,6 @@
|
||||
# Maintainer: Jeff Dickey <releases@mise.jdx.dev>
|
||||
pkgname=mise-bin
|
||||
pkgver=2026.9.12
|
||||
pkgver=2026.9.14
|
||||
pkgrel=1
|
||||
pkgdesc="dev tools, env vars, task runner"
|
||||
arch=('x86_64' 'aarch64')
|
||||
@@ -14,8 +14,8 @@ provides=('mise')
|
||||
conflicts=('mise')
|
||||
source_x86_64=("https://github.com/jdx/mise/releases/download/v${pkgver}/mise-v${pkgver}-linux-x64.tar.xz")
|
||||
source_aarch64=("https://github.com/jdx/mise/releases/download/v${pkgver}/mise-v${pkgver}-linux-arm64.tar.xz")
|
||||
sha256sums_x86_64=('30c79a0a24d8f0ad80e6c9b11ec54816be2a9b77e7eeae32c1267a5b9d34d3d7')
|
||||
sha256sums_aarch64=('7bc2a5558b787a33f22e4b5955cfec58871ad3723658418ad3d2cdf5a0e693b9')
|
||||
sha256sums_x86_64=('849cf8eb77d4ccf1eb9fd87cbd757e863e64bcd8623a8865a651af2a1579dace')
|
||||
sha256sums_aarch64=('3405d3fe8c1491ace3bfbb76e88b5ddbbbfc2f1495dcaad6455607ec782d2a5d')
|
||||
|
||||
package() {
|
||||
install -Dm755 "${srcdir}/mise/bin/mise" "${pkgdir}/usr/bin/mise"
|
||||
|
||||
@@ -1,3 +1,12 @@
|
||||
{
|
||||
"source": "local"
|
||||
"source": "local",
|
||||
"upstream": {
|
||||
"git_tags": "https://github.com/omacom/monologue.git",
|
||||
"tag_pattern": "v{pkgver}",
|
||||
"sources": {
|
||||
"any": [
|
||||
"https://github.com/omacom/monologue/archive/refs/tags/{tag}.tar.gz"
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,8 +1,8 @@
|
||||
# Maintainer: David Heinemeier Hansson <david@hey.com>
|
||||
|
||||
pkgname=monologue
|
||||
pkgver=0.1.0
|
||||
pkgrel=3
|
||||
pkgver=0.2.0
|
||||
pkgrel=1
|
||||
pkgdesc='A simple, theme-synced webcam recorder for Omarchy'
|
||||
arch=('x86_64' 'aarch64')
|
||||
url='https://github.com/omacom/monologue'
|
||||
@@ -19,19 +19,16 @@ depends=(
|
||||
'xdg-desktop-portal'
|
||||
)
|
||||
makedepends=('gcc' 'make' 'pkgconf')
|
||||
optdepends=('omacut: trim recordings directly from Monologue')
|
||||
# Pin the published source until a tagged release is available.
|
||||
_commit=23e0844f60feef2f9d2cf2c9d89f13eb0bf5adef
|
||||
source=("$pkgname-$_commit.tar.gz::$url/archive/$_commit.tar.gz")
|
||||
sha256sums=('1a04b9e47b29846e9135d110978f7f35c0274f7361729f0b6ac03796499c0ad6')
|
||||
source=("$pkgname-$pkgver.tar.gz::$url/archive/refs/tags/v$pkgver.tar.gz")
|
||||
sha256sums=('aef0e8d2d5f978e03d0e3a6c9685b828ff6a128d2dc136cb36e45458cdf62c69')
|
||||
|
||||
build() {
|
||||
cd "$srcdir/$pkgname-$_commit"
|
||||
cd "$srcdir/$pkgname-$pkgver"
|
||||
./bin/build
|
||||
}
|
||||
|
||||
package() {
|
||||
cd "$srcdir/$pkgname-$_commit"
|
||||
cd "$srcdir/$pkgname-$pkgver"
|
||||
|
||||
install -Dm755 build/monologue "$pkgdir/usr/bin/monologue"
|
||||
install -Dm644 LICENSE "$pkgdir/usr/share/licenses/$pkgname/LICENSE"
|
||||
|
||||
@@ -0,0 +1,3 @@
|
||||
{
|
||||
"source": "local"
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
#!/bin/bash
|
||||
set -euo pipefail
|
||||
python3 "$(dirname "$0")/../upstream.py"
|
||||
@@ -0,0 +1,103 @@
|
||||
# Maintainer: Shun Li <riverscn@gmail.com>
|
||||
# Extracted from omacom/omarchy-pkgs PR #240, revision dcef132b2df11bb762e233ea8c6af3110f079b67.
|
||||
|
||||
pkgname=obsidian
|
||||
pkgver=1.13.7
|
||||
pkgrel=2
|
||||
pkgdesc='Knowledge base on top of a local folder of plain-text Markdown files'
|
||||
arch=('aarch64')
|
||||
url='https://obsidian.md/'
|
||||
license=('custom')
|
||||
depends=(
|
||||
'alsa-lib'
|
||||
'at-spi2-core'
|
||||
'cairo'
|
||||
'dbus'
|
||||
'expat'
|
||||
'fontconfig'
|
||||
'gcc-libs'
|
||||
'glib2'
|
||||
'glibc'
|
||||
'gtk3'
|
||||
'hicolor-icon-theme'
|
||||
'libcups'
|
||||
'libnotify'
|
||||
'libsecret'
|
||||
'libx11'
|
||||
'libxcb'
|
||||
'libxcomposite'
|
||||
'libxdamage'
|
||||
'libxext'
|
||||
'libxfixes'
|
||||
'libxkbcommon'
|
||||
'libxrandr'
|
||||
'mesa'
|
||||
'nspr'
|
||||
'nss'
|
||||
'pango'
|
||||
'systemd-libs'
|
||||
'xdg-utils'
|
||||
)
|
||||
provides=('obsidian')
|
||||
conflicts=('obsidian-appimage' 'obsidian-bin')
|
||||
options=('!debug' '!strip')
|
||||
checkdepends=('python')
|
||||
source=('obsidian.desktop' 'upstream.py' 'test-upstream.py')
|
||||
source_aarch64=(
|
||||
"obsidian-${pkgver}-arm64.tar.gz::https://github.com/obsidianmd/obsidian-releases/releases/download/v${pkgver}/obsidian-${pkgver}-arm64.tar.gz"
|
||||
)
|
||||
sha256sums=('42ecb332c900a01b2a6db0a70b4cc8c0553e863aee72894b23ed20a6289b131c'
|
||||
'd2933bdc97d9ba55986d710114512e0eb105e1cc549cef4aa7416cb333e0a9b8'
|
||||
'7213e4e691c53e184b0f037478ac6758fe44adad7a984fc1daef7fd17c31d5d8')
|
||||
sha256sums_aarch64=('98aac34d1f132a35cf506fc3fa196d595dcdeefdebd44b0cc5faaa7a1a210de2')
|
||||
|
||||
check() {
|
||||
python test-upstream.py
|
||||
}
|
||||
|
||||
package() {
|
||||
local source_dir="$srcdir/obsidian-${pkgver}-arm64"
|
||||
local install_dir="$pkgdir/opt/obsidian"
|
||||
|
||||
install -d "$install_dir"
|
||||
cp -a --no-preserve=ownership "$source_dir/." "$install_dir/"
|
||||
|
||||
# The official ARM64 archive currently carries two x86_64-only addons.
|
||||
# Remove only an unusable x86_64 payload; retain it automatically if the
|
||||
# vendor starts shipping an AArch64 build in a later release.
|
||||
local addon machine
|
||||
for addon in \
|
||||
resources/app.asar.unpacked/node_modules/btime/binding.node \
|
||||
resources/app.asar.unpacked/node_modules/get-fonts/binding.node; do
|
||||
[[ -f "$install_dir/$addon" ]] || continue
|
||||
machine=$(readelf -h "$install_dir/$addon" |
|
||||
sed -n 's/^[[:space:]]*Machine:[[:space:]]*//p')
|
||||
case "$machine" in
|
||||
AArch64) ;;
|
||||
'Advanced Micro Devices X86-64') rm -f "$install_dir/$addon" ;;
|
||||
*) error "Unexpected Obsidian addon architecture: $addon ($machine)"; return 1 ;;
|
||||
esac
|
||||
done
|
||||
|
||||
find "$install_dir" -type d -exec chmod 755 {} +
|
||||
find "$install_dir" -type f -exec chmod 644 {} +
|
||||
chmod 755 \
|
||||
"$install_dir/chrome_crashpad_handler" \
|
||||
"$install_dir/obsidian" \
|
||||
"$install_dir/obsidian-cli"
|
||||
# Chromium sandboxes through unprivileged user namespaces, which Arch-family
|
||||
# kernels allow; a setuid-root helper is not needed.
|
||||
chmod 755 "$install_dir/chrome-sandbox"
|
||||
|
||||
install -d "$pkgdir/usr/bin"
|
||||
ln -s /opt/obsidian/obsidian "$pkgdir/usr/bin/obsidian"
|
||||
ln -s /opt/obsidian/obsidian-cli "$pkgdir/usr/bin/obsidian-cli"
|
||||
install -Dm644 "$srcdir/obsidian.desktop" \
|
||||
"$pkgdir/usr/share/applications/obsidian.desktop"
|
||||
install -Dm644 "$install_dir/resources/icon.png" \
|
||||
"$pkgdir/usr/share/icons/hicolor/512x512/apps/obsidian.png"
|
||||
install -Dm644 "$install_dir/LICENSE.electron.txt" \
|
||||
"$pkgdir/usr/share/licenses/$pkgname/LICENSE.electron.txt"
|
||||
install -Dm644 "$install_dir/LICENSES.chromium.html" \
|
||||
"$pkgdir/usr/share/licenses/$pkgname/LICENSES.chromium.html"
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
# Obsidian on ARM
|
||||
|
||||
This is the canonical `obsidian` package, extracted from omacom/omarchy-pkgs #240 at `dcef132b2df11bb762e233ea8c6af3110f079b67`. It repackages the official ARM64 desktop tarball and preserves the original contributor attribution and Electron/Chromium license files.
|
||||
|
||||
The package owns the installed application bundle and Electron runtime. `chrome-sandbox` is installed without setuid: Chromium's sandbox uses unprivileged user namespaces, which Arch-family kernels allow. A system that disables them must re-enable them rather than launch Obsidian with `--no-sandbox`. Obsidian's user-controlled in-app updater may separately update application code; no updater-disabling patch is applied. See https://obsidian.md/help/updates.
|
||||
|
||||
The package-local upstream hook selects stable desktop releases containing the exact ARM64 tarball, ignoring mobile-only tags. Missing SHA256 metadata on the selected desktop release fails rather than silently selecting an older installer. The offline tests in `test-upstream.py` run in the package's `check()`; run them directly with `python pkgbuilds/obsidian/test-upstream.py`. Upstream's scheduled sync opens or updates its normal review PR; maintainers need GitHub PR notifications enabled and should monitor failed sync runs too.
|
||||
|
||||
This package conflicts with `obsidian-appimage` and `obsidian-bin`. It does not automatically remove them or migrate users. Adoption in Omarchy Mac requires a separate change to the existing ARM preinstall/removal mappings. Do not modify vaults or user configuration as part of the package transaction.
|
||||
|
||||
Before this draft is ready, validate clean ARM installation, desktop/CLI paths, native payload architecture and opening/editing a disposable vault in a disposable GUI session. Existing AppImage operation does not validate this tarball package. The two named vendor x86-only addons are removed; any newly introduced foreign executable requires review.
|
||||
@@ -0,0 +1,10 @@
|
||||
[Desktop Entry]
|
||||
Name=Obsidian
|
||||
Comment=Knowledge base on top of a local folder of Markdown files
|
||||
Exec=obsidian %U
|
||||
Terminal=false
|
||||
Type=Application
|
||||
Icon=obsidian
|
||||
StartupWMClass=obsidian
|
||||
MimeType=x-scheme-handler/obsidian;
|
||||
Categories=Office;
|
||||
@@ -0,0 +1,47 @@
|
||||
#!/usr/bin/python3
|
||||
import importlib.util
|
||||
from pathlib import Path
|
||||
import unittest
|
||||
|
||||
path = Path(__file__).with_name('upstream.py')
|
||||
spec = importlib.util.spec_from_file_location('obsidian_upstream', path)
|
||||
module = importlib.util.module_from_spec(spec)
|
||||
spec.loader.exec_module(module)
|
||||
|
||||
|
||||
def release(version, **extra):
|
||||
return dict(tag_name='v' + version, draft=False, prerelease=False,
|
||||
published_at='2026-09-23T00:00:00Z', assets=[{
|
||||
'name': f'obsidian-{version}-arm64.tar.gz',
|
||||
'digest': 'sha256:' + 'a' * 64,
|
||||
'browser_download_url': f'https://github.com/obsidianmd/obsidian-releases/releases/download/v{version}/obsidian-{version}-arm64.tar.gz'
|
||||
}], **extra)
|
||||
|
||||
|
||||
class DesktopReleaseTests(unittest.TestCase):
|
||||
def test_mobile_only_and_preview_ignored(self):
|
||||
mobile = release('2.0.0'); mobile['assets'] = [{'name': 'Obsidian.apk'}]
|
||||
preview = release('3.0.0'); preview['prerelease'] = True
|
||||
draft = release('4.0.0'); draft['draft'] = True
|
||||
self.assertEqual(module.select([mobile, preview, draft, release('1.13.7')])['pkgver'], '1.13.7')
|
||||
|
||||
def test_numeric_version_order(self):
|
||||
self.assertEqual(module.select([release('1.9.0'), release('1.13.7')])['pkgver'], '1.13.7')
|
||||
|
||||
def test_bad_newest_digest_fails_without_falling_back(self):
|
||||
newest = release('2.0.0'); newest['assets'][0]['digest'] = None
|
||||
with self.assertRaises(ValueError):
|
||||
module.select([release('1.13.7'), newest])
|
||||
|
||||
def test_changed_url_rejected(self):
|
||||
row = release('1.13.7'); row['assets'][0]['browser_download_url'] = 'https://example.org/foreign'
|
||||
with self.assertRaises(ValueError): module.select([row])
|
||||
|
||||
def test_missing_or_duplicate_installer_rejected(self):
|
||||
with self.assertRaises(ValueError): module.select([])
|
||||
row = release('1.13.7'); row['assets'] *= 2
|
||||
with self.assertRaises(ValueError): module.select([row])
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
unittest.main()
|
||||
@@ -0,0 +1,45 @@
|
||||
#!/usr/bin/python3
|
||||
"""Report the newest stable ARM desktop installer, ignoring mobile-only tags."""
|
||||
import json
|
||||
import re
|
||||
import subprocess
|
||||
|
||||
|
||||
def select(releases):
|
||||
if not isinstance(releases, list):
|
||||
raise ValueError('Expected a GitHub release list')
|
||||
candidates = []
|
||||
for release in releases:
|
||||
if release.get('draft') or release.get('prerelease'):
|
||||
continue
|
||||
match = re.fullmatch(r'v([0-9]+(?:\.[0-9]+)*)', release.get('tag_name', ''))
|
||||
if not match:
|
||||
continue
|
||||
version = match[1]
|
||||
assets = [a for a in release.get('assets', [])
|
||||
if a.get('name') == f'obsidian-{version}-arm64.tar.gz']
|
||||
if not assets:
|
||||
continue
|
||||
if len(assets) != 1:
|
||||
raise ValueError('Duplicate desktop installer')
|
||||
candidates.append((tuple(map(int, version.split('.'))), version, release, assets[0]))
|
||||
if not candidates:
|
||||
raise ValueError('No stable ARM desktop installer found')
|
||||
_, version, release, asset = max(candidates, key=lambda row: row[0])
|
||||
digest = asset.get('digest') or ''
|
||||
if not re.fullmatch(r'sha256:[0-9a-f]{64}', digest):
|
||||
raise ValueError('Selected desktop installer lacks its SHA256 digest')
|
||||
expected = f'https://github.com/obsidianmd/obsidian-releases/releases/download/v{version}/obsidian-{version}-arm64.tar.gz'
|
||||
if asset.get('browser_download_url') != expected:
|
||||
raise ValueError('Unexpected desktop installer URL')
|
||||
return {'pkgver': version, 'published_at': release['published_at'],
|
||||
'sha256sums': {'aarch64': [digest[7:]]}}
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
response = subprocess.check_output([
|
||||
'curl', '--proto', '=https', '--proto-redir', '=https', '-fsSL',
|
||||
'--retry', '3', '--max-time', '60',
|
||||
'https://api.github.com/repos/obsidianmd/obsidian-releases/releases?per_page=100'
|
||||
], text=True)
|
||||
print(json.dumps(select(json.loads(response))))
|
||||
@@ -1,5 +1,5 @@
|
||||
pkgname=omakade
|
||||
pkgver=1.10.0
|
||||
pkgver=1.12.0
|
||||
pkgrel=1
|
||||
pkgdesc='A beautiful, local-first game library for Omarchy'
|
||||
arch=('x86_64' 'aarch64')
|
||||
@@ -11,7 +11,7 @@ depends=('glib2' 'hicolor-icon-theme' 'libsecret' 'libzip' 'openssl' 'qt6-base'
|
||||
makedepends=('cmake' 'ninja' 'pkgconf' 'wayland-protocols')
|
||||
options=('!debug')
|
||||
source=("$pkgname-$pkgver.tar.gz::https://github.com/btsouth/omakade/releases/download/v$pkgver/$pkgname-$pkgver.tar.gz")
|
||||
sha256sums=('01a4c1aa35c51aba54f57fd0d4eab4a00a14ca2bd4d1b6163264b8ba6fed5b55')
|
||||
sha256sums=('712788a432682465040fd3b384f18ce0cc60c8e699410bed63cbecadb8171729')
|
||||
|
||||
build() {
|
||||
cmake -S "$pkgname-$pkgver" -B build -G Ninja \
|
||||
|
||||
@@ -1 +1,17 @@
|
||||
{ "source": "local", "channels": ["edge"] }
|
||||
{
|
||||
"source": "local",
|
||||
"channels": ["edge"],
|
||||
"auto_merge": true,
|
||||
"min_release_age": "30m",
|
||||
"upstream": {
|
||||
"watch": {
|
||||
"git_branch": "https://github.com/basecamp/omarchy.git",
|
||||
"branch": "quattro",
|
||||
"tag_pattern": "v(?P<version>[0-9]+\\.[0-9]+\\.[0-9]+)",
|
||||
"version": "{version}.r{count}.g{commit:.7}",
|
||||
"variables": {
|
||||
"_commit": "{commit}"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,9 +1,13 @@
|
||||
# Maintainer: Ryan Hughes <ryan@omarchy.org>
|
||||
pkgname='omarchy-dev'
|
||||
pkgver=4.0.0.r847.g4de185b
|
||||
pkgver=4.0.0.r6663.g3faafba
|
||||
pkgrel=1
|
||||
_pkgver_base=4.0.0
|
||||
_pkgver_base_tag=v3.8.2
|
||||
# Pinned by the upstream watch in .omarchy/package.json (bin/sync-upstream):
|
||||
# every quattro tip becomes a commit pin here, so the package is versioned,
|
||||
# checksummed and built exactly like a release, just more often. The r-number
|
||||
# is the branch's total commit count, not the distance from the last tag: the
|
||||
# published history used the total, and pacman must never see it go down.
|
||||
_commit=3faafba234e530b0986196b98dc2c38951e7dd6f
|
||||
pkgdesc='Beautiful, modern, and opinionated Arch Linux by DHH (quattro branch tip)'
|
||||
# The payload is architecture-independent, but the dependency set is not: the
|
||||
# boot stack differs per architecture (see depends_x86_64 / depends_aarch64),
|
||||
@@ -73,30 +77,16 @@ makedepends=(
|
||||
'git'
|
||||
)
|
||||
|
||||
# Source: quattro branch tip by default; set OMARCHY_SRC=/path/to/checkout
|
||||
# to build from a local source tree instead (mirrors omarchy-zsh/omarchy-fish DX).
|
||||
# Source: the pinned quattro commit. Set OMARCHY_SRC=/path/to/checkout to
|
||||
# build from a local source tree instead (mirrors omarchy-zsh/omarchy-fish DX);
|
||||
# the arrays are emptied below so nothing is downloaded in that case.
|
||||
source=("omarchy::git+https://github.com/basecamp/omarchy.git#commit=${_commit}")
|
||||
sha256sums=('d97e0f12d9f17bfd78872bdc12edb63184b59483f055178d8d80597ed132882f')
|
||||
if [[ -n "${OMARCHY_SRC:-}" ]]; then
|
||||
source=()
|
||||
sha256sums=()
|
||||
else
|
||||
source=("omarchy::git+https://github.com/basecamp/omarchy.git#branch=quattro")
|
||||
sha256sums=('SKIP')
|
||||
fi
|
||||
|
||||
pkgver() {
|
||||
cd "$srcdir/omarchy"
|
||||
|
||||
local commit_count commit_hash
|
||||
if git rev-parse --verify "${_pkgver_base_tag}^{commit}" >/dev/null 2>&1; then
|
||||
commit_count=$(git rev-list --count "${_pkgver_base_tag}..HEAD")
|
||||
else
|
||||
commit_count=$(git rev-list --count HEAD)
|
||||
fi
|
||||
commit_hash=$(git rev-parse --short=7 HEAD)
|
||||
|
||||
printf "%s.r%s.g%s" "$_pkgver_base" "$commit_count" "$commit_hash"
|
||||
}
|
||||
|
||||
prepare() {
|
||||
if [[ -n "${OMARCHY_SRC:-}" ]]; then
|
||||
rm -rf "$srcdir/omarchy"
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
{ "source": "local", "channels": ["edge"] }
|
||||
@@ -0,0 +1,65 @@
|
||||
# Maintainer: Marcelo Alcantara <maralc@gmail.com>
|
||||
# Recipe from maralcbr/omarchy-pkgs asahi-quattro pkgbuilds/omarchy-mac-boot
|
||||
# (20260921-10 at 0a55baeddecf59687c32b4bd4e1dee743605c183); the payload now
|
||||
# builds from packages/omarchy-mac/boot in omacom/omarchy-mac.
|
||||
|
||||
pkgname=omarchy-mac-boot
|
||||
# pkgver is the UTC commit date of _commit, so it sorts above the fork's
|
||||
# 20260921-N. Reset pkgrel to 1 when pkgver changes; bump it to re-pin or
|
||||
# rebuild on the same day.
|
||||
pkgver=20260927
|
||||
pkgrel=1
|
||||
pkgdesc='Apple Silicon boot support for Omarchy: initramfs, in-place encryption, first boot and Limine activation'
|
||||
arch=('aarch64')
|
||||
groups=('omarchy-platform-apple-silicon')
|
||||
url='https://github.com/omacom/omarchy-mac'
|
||||
license=('MIT')
|
||||
makedepends=('git')
|
||||
provides=('omarchy-apple-boot' 'omarchy-first-boot')
|
||||
conflicts=('omarchy-apple-boot' 'omarchy-first-boot')
|
||||
replaces=('omarchy-apple-boot' 'omarchy-first-boot')
|
||||
install=omarchy-mac-boot.install
|
||||
# An exact omarchy-mac commit, never a branch.
|
||||
_commit=ff7ce0d4dfaea9e17270b3061e642ee095b7b265
|
||||
source=("omarchy-mac::git+https://github.com/omacom/omarchy-mac.git#commit=${_commit}")
|
||||
sha256sums=('7530c284cd323d451540205c0a677c4e187070f0b8c4081a2e85f487f2ebb985')
|
||||
|
||||
prepare() {
|
||||
# Staging must not be able to read the surrounding desktop source.
|
||||
rm -rf "$srcdir/boot"
|
||||
cp -a "$srcdir/omarchy-mac/packages/omarchy-mac/boot" "$srcdir/boot"
|
||||
[[ $(git -C "$srcdir/omarchy-mac" rev-parse HEAD) == "$_commit" ]]
|
||||
[[ $(TZ=UTC0 git -C "$srcdir/omarchy-mac" show -s --format=%cd --date=format-local:%Y%m%d HEAD) == "$pkgver" ]]
|
||||
}
|
||||
|
||||
# The tests run in the checkout: some compare the payload with the desktop
|
||||
# source around it (the HOOKS baseline in etc/, the first-run user units and the
|
||||
# default package lists, from omacom/omarchy-mac#582 and #598).
|
||||
check() {
|
||||
"$srcdir/omarchy-mac/packages/omarchy-mac/boot/test/all"
|
||||
}
|
||||
|
||||
package() {
|
||||
# Runtime-only, so the builder stages and tests the payload without the
|
||||
# desktop or a boot chain. 1.39.0-2 is the first limine-mkinitcpio-hook that
|
||||
# leaves a Mac's /boot to mkinitcpio until Limine is activated.
|
||||
depends=('omarchy' 'limine' 'limine-mkinitcpio-hook>=1.39.0-2' 'limine-snapper-sync' 'asahi-scripts'
|
||||
'bash' 'binutils' 'btrfs-progs' 'coreutils' 'cpio' 'cryptsetup' 'diffutils' 'gawk' 'gnupg' 'grep'
|
||||
'gum' 'gzip' 'kbd' 'mkinitcpio' 'sed' 'systemd' 'util-linux')
|
||||
|
||||
"$srcdir/boot/install" "$pkgdir"
|
||||
# Once the source drops its own Plymouth fragment (omacom/omarchy-mac#544),
|
||||
# the Apple drop-ins build on omarchy-settings' HOOKS baseline
|
||||
# (/etc/mkinitcpio.conf.d/00-omarchy-hooks.conf, omacom/omarchy-mac#536), and
|
||||
# an older settings package leaves Plymouth out of the Mac initramfs. A
|
||||
# settings version cannot say so (quattro candidates sort below stock
|
||||
# releases, and omarchy pins its settings exactly), so the settings packages
|
||||
# that ship the baseline provide it by name.
|
||||
[[ -e $pkgdir/etc/mkinitcpio.conf.d/93-omarchy-mac-plymouth.conf ]] ||
|
||||
depends+=('omarchy-mkinitcpio-hooks-baseline')
|
||||
printf '%s\n' "$_commit" | install -Dm644 /dev/stdin "$pkgdir/usr/share/omarchy-mac/boot-source-revision"
|
||||
|
||||
# Administrator-editable: every /etc file and the initramfs helpers an image
|
||||
# may rewrite.
|
||||
mapfile -t backup < <(cd "$pkgdir" && find etc usr/lib/omarchy/initcpio -type f | sort)
|
||||
}
|
||||
@@ -0,0 +1,40 @@
|
||||
# omarchy-mac-boot
|
||||
|
||||
Apple Silicon boot support for Omarchy: the Mac mkinitcpio drop-ins and initcpio hooks, in-place LUKS conversion in the initramfs, vendor firmware in early boot, first boot of a Mac image, the Limine activation gate and the boot check. The source is `packages/omarchy-mac/boot/` in omacom/omarchy-mac, with its own tests. The recipe pins an exact omarchy-mac commit, copies that directory away from the surrounding desktop tree in `prepare()` and stages the package from the copy with its `install` script. `check()` runs its `test/all` in the full checkout instead, because some tests compare the payload with the desktop source around it (omacom/omarchy-mac#582 and #598). The recipe itself holds only metadata, `backup=` and the pacman scriptlet.
|
||||
|
||||
It follows the fork recipe in maralcbr/omarchy-pkgs (`asahi-quattro`, `pkgbuilds/omarchy-mac-boot` at 20260921-10), which carried the payload as files in the recipe.
|
||||
|
||||
## Scope
|
||||
|
||||
The package is aarch64-only and published to edge only. It widens to rc and stable only after M1 and M2 cold-boot qualification. It carries the Apple platform tag, `groups=('omarchy-platform-apple-silicon')`, which omarchy-settings' pacman platform guard uses to keep it off other machines once that guard ships (omacom/omarchy-mac#539, `docs/platform-guard.md`). Its only provides are the retired Apple-only names, and nothing generic depends on it or on them, so nothing generic can pull it onto non-Apple aarch64 machines. Its one Apple-only dependency, `asahi-scripts`, comes from the asahi-alarm repository that only the Apple profile configures.
|
||||
|
||||
It requires `limine-mkinitcpio-hook` 1.39.0-2 or newer: that is the first build whose hooks leave a Mac's `/boot` to mkinitcpio until Limine is activated. With an older hook, Limine's kernel hook replaces mkinitcpio's by name, and this package's `limine-ready` gate stops it on a Mac that still boots GRUB, so a kernel update would never reach `/boot`.
|
||||
|
||||
## HOOKS baseline
|
||||
|
||||
From the source that drops the boot package's own Plymouth fragment (omacom/omarchy-mac#544), the Apple drop-ins build on omarchy-settings' HOOKS baseline, `/etc/mkinitcpio.conf.d/00-omarchy-hooks.conf` (omacom/omarchy-mac#536). With an older settings package the Mac initramfs loses Plymouth at the passphrase prompt. A settings version cannot express this: quattro candidate builds sort below stock releases, and `omarchy` pins its settings version exactly. So when the staged payload has no `93-omarchy-mac-plymouth.conf`, `package()` adds a dependency on the name `omarchy-mkinitcpio-hooks-baseline`. Every settings package that ships the baseline on aarch64 (`omarchy-settings`, `omarchy-settings-dev`, candidate builds) must `provide` that name. Until one does, such a build of this package cannot be installed: it fails outright rather than silently booting without Plymouth.
|
||||
|
||||
## Publish order
|
||||
|
||||
A new pin publishes on merge, so check what the pinned source needs first:
|
||||
|
||||
- **Settings baseline.** A pin that includes omacom/omarchy-mac#544 (no `93-omarchy-mac-plymouth.conf`) needs omarchy-settings with the HOOKS baseline (omacom/omarchy-mac#542) published on aarch64, and providing `omarchy-mkinitcpio-hooks-baseline`. Publish that first; otherwise this build cannot be installed.
|
||||
- **Update verification.** A pin that includes omacom/omarchy-mac#543 (`/usr/lib/omarchy/mac-boot/update-verify`) must publish before any runtime that carries #543. Otherwise that runtime blocks every update on Macs whose `omarchy-mac-boot` predates it.
|
||||
- **Reset and key-slot entrypoints.** A pin that includes omacom/omarchy-mac#552 (`reset-prepare`, `reset-verify`, `reset-commit`, `reset-rollback`) and #553 (`luks-slots`) must publish before any runtime that carries them. That runtime's `omarchy-lifecycle-dispatch` requires them on Apple Silicon, so otherwise factory reset, owner setup and `omarchy-drive-password` on the system disk fail on Macs whose `omarchy-mac-boot` predates them.
|
||||
- **Reset first-boot markers.** A pin that includes omacom/omarchy-mac#579 (`reset-prepare` clears the factory root's first-boot state and arms `mac-first-boot/pending`) must publish before any runtime that carries #579's `omarchy-system-factory-reset`, which no longer does that inline. Otherwise a factory reset on a Mac whose `omarchy-mac-boot` predates it leaves the factory root without the Mac's first boot, and so without its package keyring, or with an older image's conversion token. A newer boot package with an older runtime is safe: the steps are idempotent.
|
||||
- **Speaker safety owner.** A pin that includes omacom/omarchy-mac#567 no longer presets or enables `speakersafetyd`; `omarchy-mac` owns it from omacom/omarchy-mac#535. Re-pin `omarchy-mac` at or past #535 in the same merge as that pin, or publish it first. Edge `omarchy-mac` 0.1.0-5 (b4a79d83d) predates #535 and ships no preset for it, so with only the boot package re-pinned a `systemctl preset-all` on an edge Mac disables the speaker amps' safety daemon, and an image built from edge fails its image check.
|
||||
|
||||
## Transition
|
||||
|
||||
- It provides, conflicts with and replaces `omarchy-apple-boot` and `omarchy-first-boot`. The scriptlet moves a pending `omarchy-first-boot` marker to `omarchy-mac-first-boot`, drops the replaced unit's dangling enable link and points at a customised `90-omarchy-asahi.conf.pacsave`.
|
||||
- `pkgver` is the UTC commit date of the pin, so any pin from `20260925` on upgrades the fork's `20260921-10` on mx-mac Macs. The files the fork shipped that the source no longer does (the image finalize tools, the upstream ARM repository key and the GRUB snapshot-menu hook) are removed by that upgrade.
|
||||
- `backup=` covers every `/etc` file and `/usr/lib/omarchy/initcpio`. It includes `/etc/default/update-m1n1`, which pins update-m1n1's device-tree order to the C locale. On a Mac that already has its own unowned copy, pacman keeps it and installs the shipped one as `.pacnew`. The snapshot restore hooks in `/etc/boot/hooks` are symlinks to `/usr/bin/omarchy-mac-snapshot-check`, not files, so they stay out of it.
|
||||
|
||||
## Updates
|
||||
|
||||
Updates are reviewed pins, never a branch:
|
||||
|
||||
1. Set `_commit` to the full omarchy-mac SHA and `pkgver` to its UTC commit date (`TZ=UTC0 git show -s --format=%cd --date=format-local:%Y%m%d <sha>`); `prepare()` checks both.
|
||||
2. Reset `pkgrel` to 1 when `pkgver` changes; bump it for a second pin on the same date or a rebuild.
|
||||
3. Refresh `sha256sums` with `makepkg -g`.
|
||||
4. Check the pin against [Publish order](#publish-order). Before the first pin that includes omacom/omarchy-mac#567 publishes, `omarchy-mac` must be published at or past #535, or re-pinned in the same pull request.
|
||||
@@ -0,0 +1,48 @@
|
||||
_omarchy_mac_boot_asahi_pacsave_notice() {
|
||||
local pacsave=/etc/mkinitcpio.conf.d/90-omarchy-asahi.conf.pacsave
|
||||
local shipped=/etc/mkinitcpio.conf.d/90-omarchy-mac.conf
|
||||
|
||||
[[ -f $pacsave && -f $shipped ]] || return 0
|
||||
cmp -s "$pacsave" "$shipped" && return 0
|
||||
|
||||
cat <<EOF
|
||||
==> omarchy-mac-boot: a customized 90-omarchy-asahi.conf was preserved as:
|
||||
$pacsave
|
||||
The active mkinitcpio drop-in is now:
|
||||
$shipped
|
||||
Merge any remaining local changes into the new file.
|
||||
EOF
|
||||
}
|
||||
|
||||
_omarchy_mac_boot_migrate_legacy_first_boot() {
|
||||
local legacy=/var/lib/omarchy/first-boot/pending
|
||||
local successor=/var/lib/omarchy/mac-first-boot/pending
|
||||
|
||||
[[ -e $legacy ]] || return 0
|
||||
install -Dm644 /dev/null "$successor"
|
||||
rm -f "$legacy"
|
||||
systemctl --no-reload enable omarchy-mac-first-boot.service 2>/dev/null || {
|
||||
install -d /etc/systemd/system/multi-user.target.wants
|
||||
ln -sfr /usr/lib/systemd/system/omarchy-mac-first-boot.service \
|
||||
/etc/systemd/system/multi-user.target.wants/omarchy-mac-first-boot.service
|
||||
}
|
||||
}
|
||||
|
||||
post_install() {
|
||||
_omarchy_mac_boot_asahi_pacsave_notice
|
||||
_omarchy_mac_boot_migrate_legacy_first_boot
|
||||
_omarchy_mac_boot_drop_legacy_wants
|
||||
}
|
||||
|
||||
_omarchy_mac_boot_drop_legacy_wants() {
|
||||
# The replaced omarchy-first-boot left its preset-enabled link behind.
|
||||
local link=/etc/systemd/system/multi-user.target.wants/omarchy-first-boot.service
|
||||
[[ -L $link && ! -e $link ]] && rm -f "$link"
|
||||
return 0
|
||||
}
|
||||
|
||||
post_upgrade() {
|
||||
_omarchy_mac_boot_asahi_pacsave_notice
|
||||
_omarchy_mac_boot_migrate_legacy_first_boot
|
||||
_omarchy_mac_boot_drop_legacy_wants
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
{ "source": "local", "channels": ["edge"] }
|
||||
@@ -0,0 +1,44 @@
|
||||
# Maintainer: Scott Jones <scottajones@gmail.com>
|
||||
# Ported from omarchy-mac/omarchy-pkgs-aarch64 pkgbuilds/omarchy-mac at 02ed7b250f7edcf7c5f748acaf7b21ef0a764e9d.
|
||||
|
||||
pkgname=omarchy-mac
|
||||
# pkgver matches packages/omarchy-mac/version at _commit. Bump pkgrel to re-pin
|
||||
# or rebuild the same add-on version; reset it to 1 when pkgver increases.
|
||||
pkgver=0.1.0
|
||||
pkgrel=6
|
||||
pkgdesc='Apple Silicon configuration and support services for Omarchy'
|
||||
arch=('aarch64')
|
||||
groups=('omarchy-platform-apple-silicon')
|
||||
url='https://github.com/omacom/omarchy-mac'
|
||||
license=('MIT')
|
||||
makedepends=('git' 'findutils')
|
||||
checkdepends=('diffutils' 'python' 'systemd')
|
||||
# An exact quattro-upstream commit, never a branch.
|
||||
_commit=ff7ce0d4dfaea9e17270b3061e642ee095b7b265
|
||||
source=("omarchy-mac::git+https://github.com/omacom/omarchy-mac.git#commit=${_commit}")
|
||||
sha256sums=('7530c284cd323d451540205c0a677c4e187070f0b8c4081a2e85f487f2ebb985')
|
||||
|
||||
prepare() {
|
||||
# Tests and staging must not be able to read the surrounding desktop source.
|
||||
rm -rf "$srcdir/addon"
|
||||
cp -a "$srcdir/omarchy-mac/packages/omarchy-mac" "$srcdir/addon"
|
||||
[[ $(<"$srcdir/addon/version") == "$pkgver" ]]
|
||||
[[ $(git -C "$srcdir/omarchy-mac" rev-parse HEAD) == "$_commit" ]]
|
||||
}
|
||||
|
||||
check() {
|
||||
"$srcdir/addon/test/all"
|
||||
}
|
||||
|
||||
package() {
|
||||
# Runtime-only: the builder does not need the Omarchy desktop to stage or
|
||||
# test the add-on.
|
||||
depends=('omarchy' 'bash' 'coreutils' 'diffutils' 'grep' 'sed' 'gawk' 'systemd' 'pciutils' 'kmod'
|
||||
'mkinitcpio' 'networkmanager' 'iwd' 'python' 'pipewire' 'pipewire-pulse' 'libpulse' 'wireplumber'
|
||||
'asahi-audio' 'alsa-ucm-conf-asahi' 'rtkit' 'pipewire-alsa')
|
||||
|
||||
"$srcdir/addon/install" "$pkgdir"
|
||||
install -Dm644 "$srcdir/addon/README.md" "$pkgdir/usr/share/doc/$pkgname/README.md"
|
||||
install -Dm644 "$srcdir/addon/ORIGINS.md" "$pkgdir/usr/share/doc/$pkgname/ORIGINS.md"
|
||||
printf '%s\n' "$_commit" >"$pkgdir/usr/share/omarchy-mac/source-revision"
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
# omarchy-mac
|
||||
|
||||
Apple Silicon runtime support for Omarchy: Wi-Fi resume recovery, the headset microphone mapping, the notch modprobe default and the NetworkManager Wi-Fi backend. The source is `packages/omarchy-mac/` in omacom/omarchy-mac, with its own version and tests. The recipe pins an exact `quattro-upstream` commit and packages only that directory; `prepare()` copies it away from the surrounding desktop tree before `check()` runs its tests.
|
||||
|
||||
Ported from Scott Jones's recipe in omarchy-mac/omarchy-pkgs-aarch64 (`pkgbuilds/omarchy-mac` at `02ed7b250f7edcf7c5f748acaf7b21ef0a764e9d`). It supersedes the unpublished `omarchy-settings-asahi` recipe.
|
||||
|
||||
## Scope
|
||||
|
||||
The package is aarch64-only and published to edge only. It widens to rc and stable only after M1 and M2 cold-boot qualification. It depends on the generic `omarchy` package and has no `provides`, so nothing generic can pull it onto non-Apple aarch64 machines. It ships no kernel, boot, installer or trust configuration; those belong to `omarchy-mac-boot`.
|
||||
|
||||
Installing the package enables no services, but its vendor configuration applies on the next service start or module load: the iwd Wi-Fi backend for NetworkManager, the `appledrm` notch option and the WirePlumber headset microphone policy. `omarchy-mac-setup-system` and `omarchy-mac-setup-user` enable the Wi-Fi resume and microphone units, and they exit unless `omarchy-hw-apple-silicon` reports Apple Silicon. Stock Omarchy does not yet ship that detector or call these entrypoints, so on a stock install the units stay disabled until the platform detector and profile work lands.
|
||||
|
||||
Runtime dependencies are declared in `package()`, so the builder stages and tests the add-on without installing the desktop.
|
||||
|
||||
## Updates
|
||||
|
||||
Updates are reviewed pins, never a branch. To release a change to the add-on:
|
||||
|
||||
1. Set `_commit` to the full `quattro-upstream` SHA and `pkgver` to `packages/omarchy-mac/version` at that commit.
|
||||
2. Reset `pkgrel` to 1 when `pkgver` increases; bump it to re-pin or rebuild the same version.
|
||||
3. Refresh `sha256sums` with `makepkg -g`.
|
||||
|
||||
Desktop-only commits on `quattro-upstream` do not need a new pin. `0.1.0-5` sorts above the `0.1.0-4.<run>` candidates the collaboration builder produced for test images.
|
||||
@@ -0,0 +1,11 @@
|
||||
{
|
||||
"source": "local",
|
||||
"min_release_age": "24h",
|
||||
"upstream": {
|
||||
"github": "jankeesvw/omarchy-meeting-recorder",
|
||||
"digests": true,
|
||||
"assets": {
|
||||
"x86_64": "omarchy-meeting-recorder-{pkgver}-x86_64-linux.tar.gz"
|
||||
}
|
||||
}
|
||||
}
|
||||
Loaded 100 of 191 files, more files were not shown because too many files have changed in this diff.
Show more
Reference in new issue
Block a user