Compare commits

...

172 commits

Author SHA1 Message Date
tobtoht
f73940891a
depends: qt: update to 6.9.0 2025-04-03 10:05:33 +02:00
tobtoht
c97dbbba98
guix: add workarounds for distro issues 2025-04-01 16:23:42 +02:00
tobtoht
e9df4a9fcb
revuo: add separator between section 2025-04-01 10:42:30 +02:00
tobtoht
3c7d768f08
guix: explicitely enable CET 2025-03-31 15:11:15 +02:00
tobtoht
d6a87ea85a
release: bump version to 2.8.0 2025-03-28 10:02:30 +01:00
tobtoht
ab4f0fa02e
update monero submodule for v0.18.4.0 [2] 2025-03-28 06:43:12 +01:00
tobtoht
424edf07e8
wizard: cleanup main menu 2025-03-28 06:29:08 +01:00
tobtoht
82212f4982
cmake: remove feather-config.h 2025-03-27 11:28:33 +01:00
tobtoht
2f0bccf124
cmake: update copyright year 2025-03-27 11:09:10 +01:00
tobtoht
0784092697
assets: add some shoutouts 2025-03-27 09:32:39 +01:00
tobtoht
95c8b494f4
ui: consistent search placeholder 2025-03-27 09:24:00 +01:00
tobtoht
9e39482fbb
ui: consistent layout spacing between search bar 2025-03-27 09:20:18 +01:00
tobtoht
ce2f332114
subaddress: cleanup 2025-03-27 09:17:38 +01:00
tobtoht
45f3d89dd3
contacts: move import/export to tool button 2025-03-27 06:06:13 +01:00
tobtoht
b27d724a5b
depends: qt: update to 6.8.3 2025-03-27 04:26:59 +01:00
tobtoht
fea39b1929
subaddress: ensure at least one unused subaddress is available 2025-03-26 16:00:31 +01:00
tobtoht
d68e327178
menu: make view tabs checkable 2025-03-26 10:16:31 +01:00
tobtoht
19b78b9c70
add notes tab 2025-03-26 10:06:48 +01:00
tobtoht
480ebc29ba
remove references to lemmy 2025-03-26 07:42:41 +01:00
tobtoht
c51671fb6c
Send: clarify pay to options 2025-03-26 07:28:14 +01:00
tobtoht
69419171b7
move contacts to separate tab 2025-03-26 07:21:01 +01:00
tobtoht
1a402d2a05
ci: add macos build 2025-03-26 06:08:36 +01:00
tobtoht
cdc7918825
history: add options button 2025-03-26 05:51:46 +01:00
tobtoht
48cc0f0aad
wallet: clear coin control on account switch 2025-03-26 05:20:48 +01:00
tobtoht
2b347c3ef2
ci: add signpath 2025-03-25 18:05:40 +01:00
tobtoht
f3eabe3245
update monero submodule for v0.18.4.0 2025-03-25 05:51:11 +01:00
tobtoht
ce95959c1d
tails: write to persistent storage for system packages 2025-03-24 09:55:38 +01:00
tobtoht
7da4e90593
depends: expat: update to 2.7.0 2025-03-24 07:00:10 +01:00
tobtoht
df44ecf98e
depends: libxkbcommon: update to 1.8.1 2025-03-24 06:34:24 +01:00
tobtoht
249183f0c1
seed: check legacy checksum 2025-03-24 05:50:32 +01:00
tobtoht
897afaaabb
remove prestium integration 2025-03-18 15:31:05 +01:00
tobtoht
2a9af40ece
Tails: persist desktop entry 2025-03-18 13:53:19 +01:00
tobtoht
45ea707c0c
getAddressSafe: check torsion 2025-03-18 10:11:33 +01:00
tobtoht
c34ad819a6
AddressChecker: add torsion check 2025-03-18 08:35:02 +01:00
tobtoht
1c6bd9815b
mining: add deprecation notice 2025-03-18 08:34:56 +01:00
tobtoht
0c4aa8c1fb
Merge pull request from sorenstoutner/CRLF
Convert CRLF files to LF.
2025-03-18 05:33:11 +00:00
Soren Stoutner
ddbfa46a87 Convert CRLF files to LF. 2025-03-17 21:21:13 -07:00
tobtoht
003009d607
TransactionHistory: remove unused function 2025-03-12 21:06:22 +01:00
tobtoht
e25c315226
Coins: remove redundant functions 2025-03-12 21:01:18 +01:00
tobtoht
de499b2386
Coins: remove unused function 2025-03-12 14:34:22 +01:00
tobtoht
c5aef15bb0
Receive: don't refresh model on new block 2025-03-12 14:23:39 +01:00
tobtoht
2c5f766a7b
libwalletqt: cleanup 2025-03-12 11:23:03 +01:00
tobtoht
4f28d83ac3
History: cleanup 2025-03-12 10:04:33 +01:00
tobtoht
1219bfc3a7
Ring/Transfer: cleanup 2025-03-11 22:53:19 +01:00
tobtoht
f7d11e8ffe
Coins: add tool button 2025-03-11 22:05:39 +01:00
tobtoht
c5f010bd3c
Coins: cleanup 2025-03-11 21:45:38 +01:00
tobtoht
4aa571454b
Subaddress: cleanup 2025-03-11 20:45:34 +01:00
tobtoht
c10190ea2e
SubaddressAccount: cleanup 2025-03-11 16:05:43 +01:00
tobtoht
de37f9a8b7
AddressBook: cleanup 2025-03-11 15:21:09 +01:00
tobtoht
055b898c85
history: rework csv export 2025-03-05 13:21:57 +01:00
tobtoht
4bcd397aad
receive: fix pinned address sort 2025-03-04 20:18:47 +01:00
tobtoht
2e344cfa94
send: add placeholder text 2025-03-04 18:49:33 +01:00
tobtoht
bb1015731f
settings: add option to minimize to tray 2025-03-04 15:31:34 +01:00
tobtoht
e55afe9429
always display restore dates next to restore heights 2025-03-04 14:54:04 +01:00
tobtoht
8f3205d632
PaymentRequest: add fiat conversion 2025-03-04 13:51:49 +01:00
tobtoht
e7a6e4f16a
balance: add fiat balance 2025-03-04 11:01:17 +01:00
tobtoht
88ab38a193
settings: add option to hide tray icon 2025-03-04 10:09:25 +01:00
tobtoht
3fa9240c0b
wizard: improve restore keys error handling 2025-03-04 08:30:15 +01:00
tobtoht
fb0564f7a1
assets: update nodes 2025-03-03 18:19:18 +01:00
tobtoht
c49917f2ae
depends: tor: update to 0.4.8.14 2025-02-24 06:56:17 +01:00
tobtoht
5c8485eac6
depends: remove utf8proc 2025-02-24 06:51:38 +01:00
tobtoht
465576aa5a
guix: clean up manifest 2025-02-23 09:28:05 +01:00
tobtoht
e2f790d86a
guix: remove zig 2025-02-23 08:57:56 +01:00
tobtoht
7559736de0
guix: remove gettext-minimal 2025-02-22 20:56:30 +01:00
tobtoht
841c6812db
depends: remove eudev 2025-02-22 20:28:56 +01:00
tobtoht
a0834cece5
guix: use gcc 13.3.0 2025-02-22 12:03:58 +01:00
tobtoht
e5e7300c39
guix: remove xcb libs 2025-02-22 12:02:29 +01:00
tobtoht
f73efb7e8d
guix: add bison note 2025-02-22 10:55:10 +01:00
tobtoht
e4f7493271
guix: remove autoconf, automake, libtool 2025-02-22 10:43:18 +01:00
tobtoht
649ba5c58a
depends: don't run autoreconf anywhere 2025-02-22 10:43:02 +01:00
tobtoht
fad3eb259c
depends: libusb: build with cmake 2025-02-22 09:10:29 +01:00
tobtoht
e84661f758
guix: clean up manifest 2025-02-22 08:39:04 +01:00
tobtoht
d9aa9a9682
depends: don't use bzip2 2025-02-22 08:38:58 +01:00
tobtoht
673b511a99
ci: disable guix commit authentication 2025-02-22 08:38:51 +01:00
tobtoht
678b0c1133
Merge pull request from stig-atle/master
Update info about building on Redhat 9 based distro
2025-02-22 04:59:47 +00:00
Stig Atle Steffensen
dbdaff70a5 Update info about building on Redhat 9 based distro 2025-02-21 21:36:44 +01:00
tobtoht
1ba584153f
guix: remove moreutils 2025-02-21 20:55:44 +01:00
tobtoht
dfec4c8da2
guix: remove unused patch 2025-02-21 20:47:54 +01:00
tobtoht
2449b44885
guix: fix verify script 2025-02-21 20:26:37 +01:00
tobtoht
51ea7e381a
guix: update docs 2025-02-21 20:24:30 +01:00
tobtoht
e6967fa9d2
ci: inline guix apparmor workaround 2025-02-21 20:13:00 +01:00
tobtoht
1b8761f3cb
ci: containerize ubuntu build 2025-02-21 20:11:24 +01:00
tobtoht
a84c552d43
ci: add arch linux build 2025-02-21 20:09:05 +01:00
tobtoht
078bcc29bd
depends: zstd: update to 1.5.7 2025-02-21 19:23:49 +01:00
tobtoht
7fd116b725
guix: set repo to monero-project/guix 2025-02-21 13:00:51 +01:00
tobtoht
22ce2011a7
guix: remove githash.txt 2025-02-21 12:59:03 +01:00
tobtoht
e66886832a
config: remove melo.tools block explorer 2025-02-21 12:54:04 +01:00
tobtoht
cc693a33cb
readme: add signpath 2025-02-21 10:22:02 +01:00
tobtoht
13daf73c03
build: set -DOFFICIAL_BUILD 2025-02-21 10:07:59 +01:00
tobtoht
8adbf7eaad
cmake: remove GenVersion.cmake 2025-02-21 09:06:15 +01:00
tobtoht
280a7db065
cmake: remove Version.cmake 2025-02-21 09:02:33 +01:00
tobtoht
7992d7be9b
macos: fix Tor startup 2025-02-21 08:57:11 +01:00
tobtoht
dff4752e82
update copyright for 2025 2025-02-20 18:52:03 +01:00
tobtoht
c47314d99d
build: macos codesigning 2025-02-20 18:38:56 +01:00
tobtoht
f447b78f4a
MainWindow: improve tx history export error handling 2025-02-16 11:52:59 +01:00
tobtoht
6a9a564664
TxConfAdv: fix setting description 2025-02-16 11:18:30 +01:00
tobtoht
3973b1ece7
flatpak: fix icons on wayland 2025-02-16 09:38:49 +01:00
tobtoht
244121b124
update monero submodule for v0.18.3.4 2025-02-15 08:00:29 +01:00
tobtoht
078d19dbd8
depends: native_libffi: update to 3.4.7 2025-02-15 07:29:11 +01:00
tobtoht
c667f0c5be
depends: abseil: update to 20250127.0 2025-02-13 12:13:00 +01:00
tobtoht
d0b6ac1364
depends: libxkbcommon: update to 1.8.0 2025-02-13 12:04:33 +01:00
tobtoht
bad9544bbc
depends: libffi: fix hash 2025-02-13 11:50:22 +01:00
tobtoht
f84ec87b9e
depends: libffi: update to 3.4.7 2025-02-13 11:48:48 +01:00
tobtoht
5fae2a2b25
depends: libzip: update to 1.11.3 2025-02-13 11:47:06 +01:00
tobtoht
177e390f4a
depends: openssl: update to 3.4.1 2025-02-12 04:06:08 +01:00
tobtoht
7827b865b1
depends: qt: update to 6.8.2 2025-02-04 07:46:36 +01:00
tobtoht
019d87c5a6
guix: add missing patch 2024-12-20 23:24:32 +01:00
tobtoht
41d6fdbf69
guix: macos: use clang-toolchain-18 2024-12-20 15:18:36 +01:00
tobtoht
9cac42e556
guix: macos: replace ldid with python-signapple 2024-12-20 14:54:03 +01:00
tobtoht
6ed5ed23a5
build: macos: replace bind_at_load with fixup_chains 2024-12-20 14:50:58 +01:00
tobtoht
f423059b30
ledger: show reconnect dialog if ledger is locked during sync 2024-12-19 00:37:01 +01:00
tobtoht
1e3bc6615c
Revert "guix: bump time-machine to 6c86ae62a0ea12e49eddaa3b541340d1ec8e56a2"
This reverts commit e2138d4755.
2024-12-18 23:02:33 +01:00
tobtoht
cd51bc72d7
receive: hide address as soon as its use is detected in the tx pool 2024-12-18 19:10:10 +01:00
tobtoht
147e8c04f6
AccountSwitcherDialog: don't select account on opening 2024-12-18 18:35:19 +01:00
tobtoht
117c6b9763
monero: Replace in-tree MD5 with OpenSSL 2024-12-18 16:54:02 +01:00
tobtoht
e2138d4755
guix: bump time-machine to 6c86ae62a0ea12e49eddaa3b541340d1ec8e56a2 2024-12-18 02:51:28 +01:00
tobtoht
2e20526e03
Revert "readme: add signpath"
This reverts commit 1ec55e148d.
2024-12-18 02:22:28 +01:00
tobtoht
03dbd9628c
Revert "ci: integrate signpath"
This reverts commit c033718956.

Revert until the SignPath GitHub app does not require admin
permissions.
2024-12-18 02:19:52 +01:00
tobtoht
5a5602e288
depends: libXau: update to 1.0.12 2024-12-17 23:41:43 +01:00
tobtoht
f17c92df84
depends: minor fixes 2024-12-17 22:25:53 +01:00
tobtoht
efc0546600
depends: protobuf: update to 29.1 2024-12-07 18:25:26 +01:00
tobtoht
3aa0985425
depends: libzip: update to 1.11.2 2024-12-07 18:16:56 +01:00
tobtoht
3649147ae6
depends: libffi: update to 3.4.6 2024-12-07 18:16:40 +01:00
tobtoht
b808324469
depends: native_expat: update to 2.6.4 2024-12-07 18:00:07 +01:00
tobtoht
375c6dbe52
depends: qt: update to 6.8.1 2024-12-07 17:57:46 +01:00
tobtoht
758af9f0ef
polyseed: update submodule 2024-11-13 15:13:57 +01:00
tobtoht
2c040099a0
monero: remove unneeded libraries 2024-11-13 12:37:13 +01:00
tobtoht
c48e6adf3a
Merge pull request from sorenstoutner/icons
Install all app icon sizes on Linux.
2024-11-13 11:02:00 +00:00
Soren Stoutner
f223034aef Install all app icon sizes on Linux. 2024-11-12 21:49:04 -07:00
tobtoht
c403d80779
Merge pull request from sorenstoutner/typos
Fix typos.
2024-11-12 11:37:23 +00:00
Soren Stoutner
765bdb1f2c Fix typos. 2024-11-11 17:34:56 -07:00
tobtoht
d8aa157565
Merge pull request from sorenstoutner/keywords
Add .desktop file keywords entries.
2024-11-09 16:15:43 +00:00
Soren Stoutner
e475bebe2f Add .desktop file keywords entries. 2024-11-09 09:12:59 -07:00
tobtoht
53e9465d42
Merge pull request from sorenstoutner/appstream
Add an AppStream MetaInfo file.
2024-11-09 11:17:46 +00:00
Soren Stoutner
672b4644c0 Add an AppStream MetaInfo file. 2024-11-08 16:53:38 -07:00
tobtoht
b26d1d0dee
depends: expat: update to 2.6.4 2024-11-07 18:33:15 +01:00
tobtoht
725ad63210
build: add make convenience wrapper for guix scripts 2024-11-04 18:19:56 +01:00
tobtoht
d877523cce
build: windows codesigning 2024-11-04 17:29:03 +01:00
tobtoht
c033718956
ci: integrate signpath 2024-11-04 14:35:48 +01:00
tobtoht
1ec55e148d
readme: add signpath 2024-11-04 13:58:55 +01:00
tobtoht
48f3ef4c3e
flatpak: fix socket permissions for wayland 2024-11-03 19:58:24 +01:00
tobtoht
6fe43167a9
ci: use explicit ubuntu version 2024-11-03 19:55:34 +01:00
tobtoht
a3d36c6122
ci: fix ubuntu dependencies 2024-11-03 19:49:48 +01:00
tobtoht
91cfdd6df8
build: wayland support 2024-11-03 17:42:34 +01:00
tobtoht
0195bdc59c
guix: fix riscv64-linux-gnu build 2024-11-03 01:17:05 +01:00
tobtoht
1df5842ea3
guix: bump time-machine to 639f79952e51a58b7fbca2a826dcc3df162300c1 2024-11-03 00:04:46 +01:00
tobtoht
fe6cdf8d63
build: drop i686-linux-gnu target 2024-11-02 23:31:21 +01:00
tobtoht
06a34c6612
depends: qt: update to 6.8.0 2024-11-02 19:58:13 +01:00
tobtoht
3b9412fece
guix: use llvm17 toolchain for macos 2024-11-02 18:55:52 +01:00
tobtoht
6561b6d979
depends: tor_linux: update to 0.4.8.13 2024-10-28 13:46:35 +01:00
tobtoht
60124a6b44
main: don't attempt to restart on crash 2024-10-28 13:36:53 +01:00
tobtoht
8a2326089e
depends: protobuf: update to 28.3 2024-10-25 00:00:33 +02:00
tobtoht
e50a764937
readme: fix typo 2024-10-24 01:20:59 +02:00
tobtoht
08462f54c0
cmake: fix macos build issue 2024-10-24 01:11:12 +02:00
tobtoht
eb483f33ec
depends: openssl: update to 3.4.0 2024-10-23 19:40:12 +02:00
tobtoht
d4b5153093
depends: unbound: update to 1.22.0 2024-10-18 15:05:05 +02:00
tobtoht
c48726d7a3
guix: add osslsigncode 2024-10-17 22:39:50 +02:00
tobtoht
9d9413c4cc
ci: fix ref_name 2024-10-17 21:32:34 +02:00
tobtoht
9fde18717d
ci: get tag for tag build 2024-10-17 20:59:19 +02:00
tobtoht
534649a0af
ci: don't run virustotal scan if key is missing [2] 2024-10-17 14:01:00 +02:00
tobtoht
4330a18464
ci: don't run virustotal scan if key is missing 2024-10-17 13:38:58 +02:00
tobtoht
849269f53f
wizard: don't add space if there is already one, never insert tab 2024-10-14 23:56:11 +02:00
tobtoht
5acbd9a20f
wizard: add space when autocompleting words 2024-10-14 22:46:59 +02:00
tobtoht
2707a26d3c
guix: update mingw-w64 to 12.0.0 2024-10-11 11:24:13 +02:00
tobtoht
fdc7a09c6c
coins: don't refresh for each freeze/thaw 2024-10-10 14:22:47 +02:00
tobtoht
796d4dd3f0
send: fix uri handling from scanned QR code 2024-10-10 14:03:46 +02:00
tobtoht
c2b5c051da
crowdfunding: update magic grants url 2024-10-09 22:51:45 +02:00
tobtoht
d1f4dfb0b8
DocsDialog: don't close on pressing enter 2024-10-09 19:52:23 +02:00
tobtoht
1ac76ddcee
wizard: menu: auto-focus next button 2024-10-09 19:47:21 +02:00
tobtoht
52546c5660
updater: fix status text 2024-10-09 19:14:59 +02:00
tobtoht
2e91a0dc9f
update MAINTENANCE.md 2024-10-09 15:46:51 +02:00
tobtoht
130432fd23
SECURITY.md: add clarification on binary exploitation 2024-10-08 19:15:55 +02:00
502 changed files with 5780 additions and 4919 deletions
.github/workflows
.gitignore.gitmodulesCMakeLists.txtHACKING.mdLICENSEMAINTENANCE.mdMakefileREADME.mdSECURITY.md
cmake
contrib

View file

@ -4,21 +4,59 @@ on: [push, pull_request]
jobs:
build-ubuntu-without-scanner:
name: "Ubuntu 24.04 (no scanner)"
runs-on: ubuntu-latest
container:
image: ubuntu:24.04
steps:
- name: update apt
run: apt update
- name: install dependencies
run: apt -y install git cmake build-essential ccache libssl-dev libunbound-dev libboost-all-dev
libqrencode-dev qt6-base-dev qt6-svg-dev qt6-websockets-dev qt6-multimedia-dev
qt6-wayland-dev libzip-dev libsodium-dev libgcrypt20-dev libx11-xcb-dev
protobuf-compiler libprotobuf-dev libhidapi-dev libzxing-dev libusb-dev
libusb-1.0-0-dev
- name: configure git
run: git config --global --add safe.directory '*'
- uses: actions/checkout@v4
with:
submodules: recursive
- name: update apt
run: sudo apt update
- name: install dependencies
run: sudo apt -y install git cmake build-essential ccache libssl-dev libunbound-dev libboost-all-dev
libqrencode-dev qt6-base-dev libgl1-mesa-dev libqt6svg6-dev libqt6websockets6-dev
qt6-multimedia-dev libzip-dev libsodium-dev libgcrypt-dev libx11-xcb-dev
libprotobuf-dev libhidapi-dev libzxingcore-dev
- name: build
run: |
mkdir build
cd build
cmake -DWITH_SCANNER=OFF ..
cmake --build . -j $(nproc)
build-arch:
name: 'Arch Linux'
runs-on: ubuntu-latest
container:
image: archlinux:latest
steps:
- name: install dependencies
run: pacman -Syyu --noconfirm git cmake base-devel unbound boost qrencode qt6-base qt6-svg qt6-websockets qt6-wayland qt6-multimedia libzip hidapi protobuf zxing-cpp
- name: configure git
run: git config --global --add safe.directory '*'
- uses: actions/checkout@v4
with:
submodules: recursive
- name: build
run: |
cmake -S . -B build
cmake --build build -j $(nproc)
build-macos:
name: 'macOS (brew)'
runs-on: macos-latest
steps:
- uses: actions/checkout@v4
with:
submodules: recursive
- name: install dependencies
run: HOMEBREW_NO_AUTO_UPDATE=1 brew install qt libsodium libzip qrencode unbound cmake boost hidapi openssl expat libunwind-headers protobuf pkgconfig
- name: build
run: |
cmake -S . -B build -DWITH_SCANNER=Off
cmake --build build -j $(nproc)

View file

@ -1,11 +0,0 @@
abi <abi/4.0>,
include <tunables/global>
# https://bugs.launchpad.net/ubuntu/+source/guix/+bug/2064115
profile guix /usr/bin/guix flags=(unconfined) {
userns,
# Site-specific additions and overrides. See local/README for details.
include if exists <local/guix>
}

View file

@ -32,18 +32,24 @@ jobs:
- target: "aarch64-linux-gnu"
- target: "arm-linux-gnueabihf"
- target: "riscv64-linux-gnu"
- target: "i686-linux-gnu"
- target: "x86_64-w64-mingw32"
- target: "x86_64-w64-mingw32.installer"
- target: "x86_64-apple-darwin"
- target: "arm64-apple-darwin"
outputs:
WIN_INSTALLER_ARTIFACT_ID: ${{ steps.win-installer.outputs.WIN_INSTALLER_ARTIFACT_ID }}
WIN_EXECUTABLE_ARTIFACT_ID: ${{ steps.win-executable.outputs.WIN_EXECUTABLE_ARTIFACT_ID }}
name: ${{ matrix.toolchain.target }}
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
ref: ${{ github.ref }}
submodules: recursive
# https://github.com/actions/checkout/issues/1467
- name: git fetch tags
run: git fetch --tags
- name: remove bundled packages
run: sudo rm -rf /usr/local
- name: depends sources cache
@ -52,26 +58,45 @@ jobs:
path: contrib/depends/sources
key: sources-${{ hashFiles('contrib/depends/packages/*') }}
- name: install dependencies
run: sudo apt update; sudo apt -y install guix git ca-certificates apparmor-utils
- name: fix apparmor
run: sudo cp .github/workflows/guix /etc/apparmor.d/guix; sudo /etc/init.d/apparmor reload; sudo aa-enforce guix || echo "failed"
- name: purge apparmor
run: sudo apt purge apparmor
run: sudo apt update; sudo apt -y install guix git ca-certificates apparmor-utils osslsigncode
- name: apparmor workaround
# https://bugs.launchpad.net/ubuntu/+source/guix/+bug/2064115
run: |
sudo tee /etc/apparmor.d/guix << EOF
abi <abi/4.0>,
include <tunables/global>
profile guix /usr/bin/guix flags=(unconfined) {
userns,
include if exists <local/guix>
}
EOF
sudo /etc/init.d/apparmor reload
sudo aa-enforce guix || true
sudo apt purge apparmor
- name: build
run: SUBSTITUTE_URLS='http://bordeaux.guix.gnu.org' HOSTS="${{ matrix.toolchain.target }}" ./contrib/guix/guix-build
run: ADDITIONAL_GUIX_TIMEMACHINE_FLAGS="--disable-authentication" SUBSTITUTE_URLS='http://bordeaux.guix.gnu.org' HOSTS="${{ matrix.toolchain.target }}" ./contrib/guix/guix-build
- name: virustotal scan
if: matrix.toolchain.target == 'x86_64-w64-mingw32'
env:
VT_API_KEY: ${{ secrets.VT_API_KEY }}
if: ${{ matrix.toolchain.target == 'x86_64-w64-mingw32' && env.VT_API_KEY != '' }}
uses: crazy-max/ghaction-virustotal@v4
with:
vt_api_key: ${{ secrets.VT_API_KEY }}
files: |
guix/guix-build-*/build/distsrc-*/build/bin/feather.exe
- uses: actions/upload-artifact@v4
id: upload-artifact
with:
name: ${{ matrix.toolchain.target }}
path: |
guix/guix-build-*/output/${{ matrix.toolchain.target }}/*
guix/guix-build-*/logs/${{ matrix.toolchain.target }}/*
- if: ${{ matrix.toolchain.target == 'x86_64-w64-mingw32.installer' }}
id: win-installer
run: echo "WIN_INSTALLER_ARTIFACT_ID=${{ steps.upload-artifact.outputs.artifact-id }}" >> "$GITHUB_OUTPUT"
- if: ${{ matrix.toolchain.target == 'x86_64-w64-mingw32' }}
id: win-executable
run: echo "WIN_EXECUTABLE_ARTIFACT_ID=${{ steps.upload-artifact.outputs.artifact-id }}" >> "$GITHUB_OUTPUT"
bundle-logs:
runs-on: ubuntu-24.04
@ -89,9 +114,45 @@ jobs:
with:
name: "logs"
path: '**/logs/**'
- uses: ncipollo/release-action@v1
if: startsWith(github.ref, 'refs/tags/')
codesigning:
runs-on: ubuntu-24.04
needs: [build-guix, bundle-logs]
if: startsWith(github.ref, 'refs/tags/') && contains(github.ref, '-rc')
strategy:
fail-fast: false
matrix:
toolchain:
- target: "x86_64-w64-mingw32"
- target: "x86_64-w64-mingw32.installer"
steps:
- name: install dependencies
run: sudo apt update; sudo apt -y install osslsigncode
- name: "set artifact id"
run: |
if [ "${{ matrix.toolchain.target }}" == "x86_64-w64-mingw32" ]; then
echo "ARTIFACT_ID=${{ needs.build-guix.outputs.WIN_EXECUTABLE_ARTIFACT_ID }}" >> $GITHUB_ENV
echo "ARTIFACT_SLUG=executable" >> $GITHUB_ENV
elif [ "${{ matrix.toolchain.target }}" == "x86_64-w64-mingw32.installer" ]; then
echo "ARTIFACT_ID=${{ needs.build-guix.outputs.WIN_INSTALLER_ARTIFACT_ID }}" >> $GITHUB_ENV
echo "ARTIFACT_SLUG=installer" >> $GITHUB_ENV
fi
- uses: signpath/github-action-submit-signing-request@v1
name: "request signature"
with:
artifacts: "**/*.AppImage,**/*-linux-arm.zip,**/*-linux-arm64.zip,**/*-linux-riscv64.zip,**/*-linux.zip,**/*-mac-arm64.zip,**/*-mac.zip,**/*-win.zip,**/FeatherWalletSetup-*.exe,**/feather-{{github.ref_name}}.tar.gz"
draft: true
name: v${{github.ref_name}}
api-token: '${{ secrets.SIGNPATH_API_KEY }}'
organization-id: 'd3e94749-9c69-44e9-82de-c65cb3832869'
project-slug: 'feather'
signing-policy-slug: 'release-signing'
artifact-configuration-slug: ${{ env.ARTIFACT_SLUG }}
github-artifact-id: ${{ env.ARTIFACT_ID }}
wait-for-completion: true
output-artifact-directory: codesigning/
- name: "extract signature"
run: osslsigncode extract-signature -in codesigning/guix-build-*/output/${{ matrix.toolchain.target }}/*.exe -out codesigning/${{ matrix.toolchain.target }}.pem
- uses: actions/upload-artifact@v4
name: "upload signature"
with:
name: ${{ matrix.toolchain.target }}.pem
path: |
codesigning/${{ matrix.toolchain.target }}.pem

1
.gitignore vendored
View file

@ -12,7 +12,6 @@ CMakeFiles
cmake_install.cmake
feather_autogen/
feather.cbp
src/config-feather.h
src/assets_tor.qrc
src/assets_docs.qrc
feather.AppDir/*

6
.gitmodules vendored
View file

@ -7,3 +7,9 @@
[submodule "external/feather-docs"]
path = external/feather-docs
url = https://github.com/feather-wallet/feather-docs.git
[submodule "external/feather-sigs"]
path = external/feather-sigs
url = https://github.com/feather-wallet/feather-sigs.git
[submodule "external/feather-codesigning"]
path = external/feather-codesigning
url = https://github.com/feather-wallet/feather-codesigning.git

View file

@ -1,7 +1,7 @@
cmake_minimum_required(VERSION 3.18)
project(feather
VERSION "2.7.0"
VERSION "2.8.0"
DESCRIPTION "A free Monero desktop wallet"
LANGUAGES CXX C ASM
)
@ -12,7 +12,7 @@ set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(PACKAGE_NAME ${PROJECT_NAME})
set(PACKAGE_BUGREPORT "https://github.com/feather-wallet/feather/issues")
set(PACKAGE_URL "https://featherwallet.org/")
set(COPYRIGHT_YEAR "2024")
set(COPYRIGHT_YEAR "2025")
set(COPYRIGHT_HOLDERS "The Monero Project")
cmake_policy(SET CMP0074 NEW)
@ -28,6 +28,9 @@ option(DONATE_BEG "Prompt donation window every once in a while" OFF)
option(WITH_SCANNER "Enable webcam QR scanner" ON)
option(STACK_TRACE "Dump stack trace on crash (Linux only)" OFF)
# internal configuration options
option(TOR_INSTALLED "Is Tor installed on the filesystem?" OFF)
# Plugins
option(WITH_PLUGIN_HOME "Include Home tab plugin" ON)
option(WITH_PLUGIN_TICKERS "Include Tickers Home plugin" ON)
@ -64,7 +67,6 @@ if(STATIC)
endif()
include(CMakePackageConfigHelpers)
include(VersionFeather)
#### Dependencies ####
# Monero
@ -79,13 +81,6 @@ get_directory_property(OPENBSD DIRECTORY "monero" DEFINITION OPENBSD)
get_directory_property(FREEBSD DIRECTORY "monero" DEFINITION FREEBSD)
get_directory_property(DRAGONFLY DIRECTORY "monero" DEFINITION DRAGONFLY)
# libXau
# workaround for: undefined reference to `XauGetBestAuthByAddr'
if (DEPENDS AND UNIX AND NOT APPLE)
find_library(LIBXAU_LIBRARY Xau)
message(STATUS "libXau: libraries at ${LIBXAU_LIBRARY}")
endif()
# pthread
find_package(Threads REQUIRED)
@ -153,7 +148,6 @@ if(TOR_DIR)
endif()
message(STATUS "Embedded Tor version: ${TOR_VERSION}")
configure_file("cmake/config-feather.h.cmake" "${CMAKE_CURRENT_SOURCE_DIR}/src/config-feather.h")
# Always copy Tor when doing a reproducible build to prevent old versions from getting included
if (REPRODUCIBLE)
@ -231,7 +225,7 @@ endif()
# linker
if (APPLE)
add_linker_flag_if_supported(-Wl,-bind_at_load LD_SECURITY_FLAGS)
add_linker_flag_if_supported(-Wl,-fixup_chains LD_SECURITY_FLAGS)
add_linker_flag_if_supported(-Wl,-dead_strip LD_SECURITY_FLAGS)
add_linker_flag_if_supported(-Wl,-dead_strip_dylibs LD_SECURITY_FLAGS)
endif()

View file

@ -11,24 +11,33 @@ We support development on rolling release distributions and the latest version o
#### Arch Linux
```bash
pacman -S git cmake base-devel ccache unbound boost qrencode qt6-base qt6-svg qt6-websockets qt6-multimedia libzip hidapi protobuf zxing-cpp
pacman -S git cmake base-devel ccache unbound boost qrencode qt6-base qt6-svg qt6-websockets qt6-wayland qt6-multimedia libzip hidapi protobuf zxing-cpp
```
#### Ubuntu 24.04
```bash
apt update
apt install git cmake build-essential ccache libssl-dev libunbound-dev libboost-all-dev libqrencode-dev \
qt6-base-dev qt6-multimedia-dev libgl1-mesa-dev libqt6svg6-dev libqt6websockets6-dev libzip-dev libsodium-dev libgcrypt-dev \
libx11-xcb-dev libprotobuf-dev protobuf-compiler libhidapi-dev libzxing-dev
apt install git cmake build-essential ccache libssl-dev libunbound-dev libboost-all-dev \
libqrencode-dev qt6-base-dev qt6-svg-dev qt6-websockets-dev qt6-multimedia-dev \
qt6-wayland-dev libzip-dev libsodium-dev libgcrypt20-dev libx11-xcb-dev \
libprotobuf-dev libhidapi-dev libzxing-dev libusb-1.0-0-dev
```
#### Rhel 9 / Alma / Rocky
```bash
sudo dnf install epel-release -y
sudo dnf groupinstall "Development Tools" -y
sudo dnf install unbound-devel boost-devel qrencode-devel zxing-cpp-devel qt6-qtbase-devel qt6-qtsvg-devel qt6-qtwebsockets-devel qt6-qtmultimedia-devel qt6-qtwayland-devel libsodium-devel
```
#### Void Linux
```bash
xbps-install -S base-devel cmake boost-devel openssl-devel unbound-devel libsodium-devel zlib-devel qt6-base-devel \
qt6-svg-devel qt6-websockets-devel qt6-multimedia-devel libgcrypt-devel libzip-devel hidapi-devel protobuf \
protobuf-devel qrencode-devel zxing-cpp-devel
qt6-svg-devel qt6-websockets-devel qt6-multimedia-devel qt6-wayland-devel libgcrypt-devel libzip-devel \
hidapi-devel protobuf protobuf-devel qrencode-devel zxing-cpp-devel
```
#### macOS

View file

@ -1,4 +1,4 @@
Copyright (c) 2020-2024, The Monero Project
Copyright (c) 2020-2025, The Monero Project
All rights reserved.

View file

@ -28,7 +28,19 @@ Goals:
Security issues that affect Feather always warrant a new release as soon as possible.
### 2. Reproducibility
### 2. Continuity
- Keep the website and services online
- Keep source repositories accessible
- Make sure that running release builds is easy to set up and reproducible in time
Goals:
- Make sure the project is transmissible
- Make sure that setting up release infrastructure, release engineering, and maintenance are extensively documented
- Make the websocket server repository public
### 3. Reproducibility
- Improve and maintain tools to check for non-determinism
- Ensure releases are reproducible and stay that way
@ -40,32 +52,32 @@ To learn more about Feather's build system, see: [`contrib/guix/README.md`](http
Our Guix time-machine is currently pinned at a commit which implements the
[Full-Source Bootstrap](https://guix.gnu.org/en/blog/2023/the-full-source-bootstrap-building-from-source-all-the-way-down/).
### 3. Bugs
### 4. Bugs
- Fix bugs and crashes
To report a bug, please see: https://docs.featherwallet.org/guides/report-an-issue
### 4. Tests
### 5. Tests
- Improve test coverage
- Write more test cases
Feather does not currently have a test suite (apart from the tests in the Monero submodule), this is a WIP.
### 5. Documentation
### 6. Documentation
- Make sure the documentation accurately reflects the latest release
- Add troubleshooting guides for common problems
- Ideally, most support questions can be answered with a link to the documentation
Goals:
- Most support questions can be answered with a link to the documentation
- Reconsider and document default settings
- Write a document on threat modeling
Documentation is available at https://docs.featherwallet.org
### 6. Improvements
### 7. Improvements
- Improve existing features
- Improve UI/UX
@ -73,7 +85,7 @@ Documentation is available at https://docs.featherwallet.org
Feather should first and foremost be a good __wallet__.
Improving features that are closer to this end should have priority.
### 7. Platform Support
### 8. Platform Support
- Add support for more architectures and operating systems
- Drop support for End-of-Life distributions
@ -81,7 +93,7 @@ Improving features that are closer to this end should have priority.
See: https://docs.featherwallet.org/guides/supported-operating-systems
### 8. Optimization, cleanup and continuity
### 9. Optimization
Miscellaneous maintenance tasks.
@ -99,9 +111,9 @@ Miscellaneous maintenance tasks.
Goals:
- Make sure Feather is ready for the migration to [Seraphis](https://github.com/seraphis-migration/wallet3)
- Make sure Feather is ready for the migration to [FCMP++](https://www.getmonero.org/2024/04/27/fcmps.html)
### 9. Features
### 10. Features
- Implement new features
- Allow Feather to be used or configured for higher, esoteric or new threat models
@ -113,7 +125,7 @@ compared to its expected maintenance and support burden.
For a non-exhaustive list of potentially new features, see: https://featherwallet.org/ideas
### 10. Upstreaming
### 11. Upstreaming
- Upstream tried and tested features, bugfixes and useful patches
- Bugfixes should be upstreamed without delay

16
Makefile Normal file
View file

@ -0,0 +1,16 @@
build:
@./contrib/guix/guix-build
attest:
@./contrib/guix/guix-attest
verify:
@./contrib/guix/guix-verify
clean:
@./contrib/guix/guix-clean
DEFAULT_GOAL := default
default: build
.PHONY: default build attest verify clean

View file

@ -11,15 +11,15 @@ Feather is a free Monero desktop wallet for Linux, Tails, macOS and Windows. It
You can download Feather from **[featherwallet.org](https://featherwallet.org/download/)** or **[GitHub](https://github.com/feather-wallet/feather/releases)**.
If you need help installing installing Feather, check the [installation documentation](https://docs.featherwallet.org/).
If you need help installing Feather, check the [installation documentation](https://docs.featherwallet.org/).
Releases are signed with our [release signing key](https://docs.featherwallet.org/guides/release-signing-key). The fingerprint is:
We recommend that you verify downloads with GPG. Releases are signed with our [release signing key](https://docs.featherwallet.org/guides/release-signing-key). The fingerprint is:
```
8185 E158 A333 30C7 FD61 BC0D 1F76 E155 CEFB A71C
```
We recommend that you verify downloads with GPG.
Windows releases are code-signed for free by [SignPath.io](https://about.signpath.io/), certificate by [SignPath Foundation](https://signpath.org/).
## Resources
@ -65,4 +65,4 @@ Donations help pay for hosting, build servers, domain names, e-mail and other re
Feather is free and open-source software, [licensed under BSD-3](https://raw.githubusercontent.com/feather-wallet/feather/master/LICENSE).
Copyright (c) 2020-2024, The Monero Project
Copyright (c) 2020-2025, The Monero Project

View file

@ -35,6 +35,7 @@ Clarifications on scope:
- Any form of coercion, physical or psychological, is out of scope.
- Vulnerabilities that are attributable to hardware are out of scope.
- If the issue was fixed in the `master` branch before we receive your report, it is invalid and not eligible for a bounty from this program.
- If the vulnerability involves binary exploitation, we may ask you to provide a proof of concept of secret key exfiltration.
- Vulnerabilities that are present in the monero submodule but were not introduced in patches made by the Feather developers must
be reported [upstream](https://github.com/monero-project/meta/blob/master/VULNERABILITY_RESPONSE_PROCESS.md) and are not eligible for a bounty from this program.
- Vulnerabilities that are present in any of our third-party dependencies must be reported upstream and are not eligible for a bounty from this program.

View file

@ -1,65 +0,0 @@
# Copyright (c) 2014-2019, The Monero Project
#
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without modification, are
# permitted provided that the following conditions are met:
#
# 1. Redistributions of source code must retain the above copyright notice, this list of
# conditions and the following disclaimer.
#
# 2. Redistributions in binary form must reproduce the above copyright notice, this list
# of conditions and the following disclaimer in the documentation and/or other
# materials provided with the distribution.
#
# 3. Neither the name of the copyright holder nor the names of its contributors may be
# used to endorse or promote products derived from this software without specific
# prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
# THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
# STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
# THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#
# Parts of this file are originally copyright (c) 2012-2013 The Cryptonote developers
# Check what commit we're on
execute_process(COMMAND "${GIT}" rev-parse --short=9 HEAD RESULT_VARIABLE RET OUTPUT_VARIABLE COMMIT OUTPUT_STRIP_TRAILING_WHITESPACE)
if(RET)
# Something went wrong, set the version tag to -unknown
message(WARNING "Cannot determine current commit. Make sure that you are building either from a Git working tree or from a source archive.")
set(VERSIONTAG "unknown")
set(VERSION_IS_RELEASE "false")
configure_file("monero/src/version.cpp.in" "${TO}")
else()
string(SUBSTRING ${COMMIT} 0 9 COMMIT)
message(STATUS "You are currently on commit ${COMMIT}")
# Get all the tags
execute_process(COMMAND "${GIT}" rev-list --tags --max-count=1 --abbrev-commit RESULT_VARIABLE RET OUTPUT_VARIABLE TAGGEDCOMMIT OUTPUT_STRIP_TRAILING_WHITESPACE)
if(NOT TAGGEDCOMMIT)
message(WARNING "Cannot determine most recent tag. Make sure that you are building either from a Git working tree or from a source archive.")
set(VERSIONTAG "${COMMIT}")
set(VERSION_IS_RELEASE "false")
else()
message(STATUS "The most recent tag was at ${TAGGEDCOMMIT}")
# Check if we're building that tagged commit or a different one
if(COMMIT STREQUAL TAGGEDCOMMIT)
message(STATUS "You are building a tagged release")
set(VERSIONTAG "release")
set(VERSION_IS_RELEASE "true")
else()
message(STATUS "You are ahead of or behind a tagged release")
set(VERSIONTAG "${COMMIT}")
set(VERSION_IS_RELEASE "false")
endif()
endif()
configure_file("monero/src/version.cpp.in" "${TO}")
endif()

View file

@ -1,3 +1,5 @@
set(QRC_LIST)
if (TOR_DIR)
FILE(GLOB TOR_FILES LIST_DIRECTORIES false ${TOR_DIR}/*)

View file

@ -1,53 +0,0 @@
# Copyright (c) 2014-2017, The Monero Project
#
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without modification, are
# permitted provided that the following conditions are met:
#
# 1. Redistributions of source code must retain the above copyright notice, this list of
# conditions and the following disclaimer.
#
# 2. Redistributions in binary form must reproduce the above copyright notice, this list
# of conditions and the following disclaimer in the documentation and/or other
# materials provided with the distribution.
#
# 3. Neither the name of the copyright holder nor the names of its contributors may be
# used to endorse or promote products derived from this software without specific
# prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
# THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
# STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
# THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
function (write_static_version_header hash)
set(VERSIONTAG "${hash}")
configure_file("${CMAKE_SOURCE_DIR}/monero/src/version.cpp.in" "${CMAKE_BINARY_DIR}/version.cpp")
endfunction ()
find_package(Git QUIET)
if ("$Format:$" STREQUAL "")
# We're in a tarball; use hard-coded variables.
write_static_version_header("release")
elseif (GIT_FOUND OR Git_FOUND)
add_custom_command(
OUTPUT "${CMAKE_BINARY_DIR}/version.cpp"
COMMAND "${CMAKE_COMMAND}"
"-D" "GIT=${GIT_EXECUTABLE}"
"-D" "TO=${CMAKE_BINARY_DIR}/version.cpp"
"-P" "cmake/GenVersion.cmake"
WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}")
else()
message(STATUS "WARNING: Git was not found!")
write_static_version_header("unknown")
endif ()
add_custom_target(genversion ALL
DEPENDS "${CMAKE_BINARY_DIR}/version.cpp")

View file

@ -1,27 +0,0 @@
# SPDX-License-Identifier: BSD-3-Clause
# SPDX-FileCopyrightText: 2020-2023 The Monero Project
find_package(Git QUIET)
# Sets FEATHER_COMMIT to the first 9 chars of the current commit hash.
if (EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/githash.txt")
# This file added in source archives where the .git folder has been removed to optimize for space.
file(READ "githash.txt" COMMIT)
string(SUBSTRING ${COMMIT} 0 9 COMMIT)
message(STATUS "You are currently on commit ${COMMIT}")
set(FEATHER_COMMIT "${COMMIT}")
else()
execute_process(COMMAND "${GIT_EXECUTABLE}" rev-parse --short=9 HEAD RESULT_VARIABLE RET OUTPUT_VARIABLE COMMIT OUTPUT_STRIP_TRAILING_WHITESPACE)
if(RET)
message(WARNING "Cannot determine current commit. Make sure that you are building either from a Git working tree or from a source archive.")
set(FEATHER_COMMIT "unknown")
else()
string(SUBSTRING ${COMMIT} 0 9 COMMIT)
message(STATUS "You are currently on commit ${COMMIT}")
set(FEATHER_COMMIT "${COMMIT}")
endif()
endif()
configure_file("cmake/config-feather.h.cmake" "${CMAKE_CURRENT_SOURCE_DIR}/src/config-feather.h")

View file

@ -1,11 +0,0 @@
#ifndef FEATHER_VERSION_H
#define FEATHER_VERSION_H
#define FEATHER_VERSION "@PROJECT_VERSION@"
#define FEATHER_COMMIT "@FEATHER_COMMIT@"
#define TOR_VERSION "@TOR_VERSION@"
#define FEATHER_TARGET_TRIPLET "@FEATHER_TARGET_TRIPLET@"
#endif //FEATHER_VERSION_H

View file

@ -1,36 +1,27 @@
OSX_MIN_VERSION=10.14
OSX_MIN_VERSION=11.0
OSX_SDK_VERSION=11.0
XCODE_VERSION=12.2
XCODE_BUILD_ID=12B45b
LD64_VERSION=609
LD64_VERSION=711
OSX_SDK=$(host_prefix)/native/SDK
darwin_native_binutils=native_cctools
darwin_native_toolchain=darwin_sdk
# We can't just use $(shell command -v clang) because GNU Make handles builtins
# in a special way and doesn't know that `command` is a POSIX-standard builtin
# prior to 1af314465e5dfe3e8baa839a32a72e83c04f26ef, first released in v4.2.90.
# At the time of writing, GNU Make v4.2.1 is still being used in supported
# distro releases.
#
# Source: https://lists.gnu.org/archive/html/bug-make/2017-11/msg00017.html
clang_prog=$(shell $(SHELL) $(.SHELLFLAGS) "command -v clang")
clangxx_prog=$(shell $(SHELL) $(.SHELLFLAGS) "command -v clang++")
clang_resource_dir=$(shell clang -print-resource-dir)
clang_prog=clang
clangxx_prog=clang++
llvm_config_prog=llvm-config
cctools_TOOLS=AR RANLIB STRIP NM LIBTOOL OTOOL INSTALL_NAME_TOOL DSYMUTIL
llvm_lib_dir=$(shell $(llvm_config_prog) --libdir)
# Make-only lowercase function
lc = $(subst A,a,$(subst B,b,$(subst C,c,$(subst D,d,$(subst E,e,$(subst F,f,$(subst G,g,$(subst H,h,$(subst I,i,$(subst J,j,$(subst K,k,$(subst L,l,$(subst M,m,$(subst N,n,$(subst O,o,$(subst P,p,$(subst Q,q,$(subst R,r,$(subst S,s,$(subst T,t,$(subst U,u,$(subst V,v,$(subst W,w,$(subst X,x,$(subst Y,y,$(subst Z,z,$1))))))))))))))))))))))))))
# For well-known tools provided by cctools, make sure that their well-known
# variable is set to the full path of the tool, just like how AC_PATH_{TOO,PROG}
# would.
$(foreach TOOL,$(cctools_TOOLS),$(eval darwin_$(TOOL) = $$(build_prefix)/bin/$$(host)-$(call lc,$(TOOL))))
darwin_AR=llvm-ar
darwin_DSYMUTIL=dsymutil
darwin_NM=llvm-nm
darwin_OBJDUMP=llvm-objdump
darwin_RANLIB=llvm-ranlib
darwin_STRIP=llvm-strip
darwin_LIBTOOL=llvm-libtool-darwin
# Flag explanations:
#
@ -55,9 +46,7 @@ $(foreach TOOL,$(cctools_TOOLS),$(eval darwin_$(TOOL) = $$(build_prefix)/bin/$$(
# Adds the desired paths from the SDK
#
darwin_CC_=--target=$(host) -mmacosx-version-min=$(OSX_MIN_VERSION) \
-B$(build_prefix)/bin -mlinker-version=$(LD64_VERSION) \
-isysroot$(OSX_SDK) \
darwin_CC_=--target=$(host) \
-isysroot$(OSX_SDK) -nostdlibinc \
-iwithsysroot/usr/include -iframeworkwithsysroot/System/Library/Frameworks
darwin_CC=env -u C_INCLUDE_PATH -u CPLUS_INCLUDE_PATH \
@ -65,18 +54,18 @@ darwin_CC=env -u C_INCLUDE_PATH -u CPLUS_INCLUDE_PATH \
-u LIBRARY_PATH \
$(clang_prog) $(darwin_CC_)
darwin_CXX_=--target=$(host) -mmacosx-version-min=$(OSX_MIN_VERSION) \
-B$(build_prefix)/bin -mlinker-version=$(LD64_VERSION) \
-isysroot$(OSX_SDK) -nostdlibinc \
-iwithsysroot/usr/include/c++/v1 \
-iwithsysroot/usr/include -iframeworkwithsysroot/System/Library/Frameworks
darwin_CXX_=--target=$(host) \
-isysroot$(OSX_SDK) -nostdlibinc \
-iwithsysroot/usr/include/c++/v1 \
-iwithsysroot/usr/include -iframeworkwithsysroot/System/Library/Frameworks
darwin_CXX=env -u C_INCLUDE_PATH -u CPLUS_INCLUDE_PATH \
-u OBJC_INCLUDE_PATH -u OBJCPLUS_INCLUDE_PATH -u CPATH \
-u LIBRARY_PATH \
$(clangxx_prog) $(darwin_CXX_)
darwin_CFLAGS=-pipe
darwin_CXXFLAGS=-pipe -std=$(CXX_STANDARD)
darwin_CFLAGS=-pipe -mmacosx-version-min=$(OSX_MIN_VERSION) -mlinker-version=$(LD64_VERSION)
darwin_CXXFLAGS=-pipe -mmacosx-version-min=$(OSX_MIN_VERSION) -mlinker-version=$(LD64_VERSION)
darwin_LDFLAGS=-Wl,-platform_version,macos,$(OSX_MIN_VERSION),$(OSX_SDK_VERSION) -fuse-ld=lld
darwin_ARFLAGS=cr
darwin_release_CFLAGS=-O2

View file

@ -11,7 +11,8 @@ define $(package)_set_vars
endef
define $(package)_preprocess_cmds
patch -p1 -i $($(package)_patch_dir)/no_librt.patch
patch -p1 -i $($(package)_patch_dir)/no_librt.patch && \
rm -rf absl/time/internal/cctz/testdata
endef
define $(package)_config_cmds

View file

@ -1,8 +1,8 @@
package=appimage_runtime
$(package)_version=c9553b05938b22849ac3255ac923bf8e775ce539
$(package)_version=f6c0b18d42eb4aa629cc6a18d08c20cc67c80af8
$(package)_download_path=https://github.com/AppImage/type2-runtime/archive/
$(package)_file_name=$($(package)_version).tar.gz
$(package)_sha256_hash=4a27451013b571cf9f5a13660719d091cc79f2344aafa2e48578ddc0e4618af1
$(package)_sha256_hash=746c2110049c4092dab9d8b788e2a9e98ec77ff9b8b09be844fce1dcdeb4c328
$(package)_dependencies=libsquashfuse zstd
$(package)_patches=depends-fix.patch
@ -13,11 +13,11 @@ endef
define $(package)_build_cmds
cd src/runtime && \
export host_prefix="$(host_prefix)" && \
$(MAKE) runtime-fuse3 -e CC=$($(package)_cc) LDLAGS="$($(package)_ldflags)" && \
"${HOST}-strip" runtime-fuse3
$(MAKE) runtime -e CC=$($(package)_cc) LDLAGS="$($(package)_ldflags)" && \
"${HOST}-strip" runtime
endef
define $(package)_stage_cmds
cd src/runtime && \
cp -a runtime-fuse3 $($(package)_staging_prefix_dir)/runtime
endef
cp -a runtime $($(package)_staging_prefix_dir)/runtime
endef

View file

@ -1,9 +1,9 @@
package=boost
$(package)_version=1.85.0
$(package)_download_path=https://boostorg.jfrog.io/artifactory/main/release/$($(package)_version)/source/
$(package)_download_path=https://archives.boost.io/release/$($(package)_version)/source/
$(package)_file_name=$(package)_$(subst .,_,$($(package)_version)).tar.gz
$(package)_sha256_hash=be0d91732d5b0cc6fbb275c7939974457e79b54d6f07ce2e3dfdd68bef883b0b
$(package)_patches=disable_addr2line.patch
$(package)_patches=disable_addr2line.patch filesystem_macos_sdk.patch
define $(package)_set_vars
$(package)_config_opts=variant=release
@ -29,6 +29,7 @@ endef
define $(package)_preprocess_cmds
patch -p1 -i $($(package)_patch_dir)/disable_addr2line.patch && \
patch -p1 -i $($(package)_patch_dir)/filesystem_macos_sdk.patch && \
echo "using $(boost_toolset_$(host_os)) : : $($(package)_cxx) : <cxxflags>\"$($(package)_cxxflags) $($(package)_cppflags)\" <linkflags>\"$($(package)_ldflags)\" <archiver>\"$(boost_archiver_$(host_os))\" <arflags>\"$($(package)_arflags)\" <striper>\"$(host_STRIP)\" <ranlib>\"$(host_RANLIB)\" <rc>\"$(host_WINDRES)\" : ;" > user-config.jam
endef

View file

@ -1,8 +1,8 @@
package=darwin_sdk
$(package)_version=12.2
$(package)_download_path=https://featherwallet.org/files/sources/
$(package)_file_name=Xcode-12.2-12B45b-extracted-SDK-with-libcxx-headers.tar.gz
$(package)_sha256_hash=332477876917786b26dd7c3fc1665d2c5cdca81c72755e6a9754f308de77d33b
$(package)_version=15.0
$(package)_download_path=https://bitcoincore.org/depends-sources/sdks
$(package)_file_name=Xcode-15.0-15A240d-extracted-SDK-with-libcxx-headers.tar.gz
$(package)_sha256_hash=c0c2e7bb92c1fee0c4e9f3a485e4530786732d6c6dd9e9f418c282aa6892f55d
define $(package)_stage_cmds
mkdir -p $($(package)_staging_dir)/$(host_prefix)/native/SDK &&\

View file

@ -1,29 +0,0 @@
package=eudev
$(package)_version=3.2.14
$(package)_download_path=https://github.com/eudev-project/eudev/releases/download/v$($(package)_version)/
$(package)_file_name=eudev-$($(package)_version).tar.gz
$(package)_sha256_hash=8da4319102f24abbf7fff5ce9c416af848df163b29590e666d334cc1927f006f
define $(package)_set_vars
$(package)_config_opts=--disable-gudev --disable-introspection --disable-hwdb --disable-manpages --disable-shared
endef
define $(package)_config_cmds
$($(package)_autoconf)
endef
define $(package)_build_cmd
$(MAKE)
endef
define $(package)_preprocess_cmds
cd $($(package)_build_subdir); autoreconf -f -i
endef
define $(package)_stage_cmds
$(MAKE) DESTDIR=$($(package)_staging_dir) install
endef
define $(package)_postprocess_cmds
rm lib/*.la
endef

View file

@ -1,8 +1,8 @@
package=expat
$(package)_version=2.6.3
$(package)_version=2.7.0
$(package)_download_path=https://github.com/libexpat/libexpat/releases/download/R_$(subst .,_,$($(package)_version))/
$(package)_file_name=$(package)-$($(package)_version).tar.gz
$(package)_sha256_hash=17aa6cfc5c4c219c09287abfc10bc13f0c06f30bb654b28bfe6f567ca646eb79
$(package)_sha256_hash=362e89ca6b8a0d46fc5740a917eb2a8b4d6356edbe016eee09f49c0781215844
$(package)_build_subdir=build
define $(package)_set_vars

View file

@ -3,12 +3,17 @@ $(package)_version=a148fb86c30968eeb30dc6ac3384ad2a16690520
$(package)_download_path=https://github.com/tobtoht/ln-guix-store/archive/
$(package)_file_name=$($(package)_version).tar.gz
$(package)_sha256_hash=e9694fcda4f9fcb00374da7a439b881296c0ce67ea98ca44bf2830d1a364365b
$(package)_patches=main.c main.S
define $(package)_preprocess_cmds
cp -f $($(package)_patch_dir)/main.c $($(package)_patch_dir)/main.S .
endef
define $(package)_build_cmds
zig build-exe ln-guix-store.zig -target x86_64-linux-none -OReleaseSmall
$($(package)_cc) -nostdlib -fno-unwind-tables -fno-asynchronous-unwind-tables -fdata-sections -Wl,--gc-sections -Wa,--noexecstack -fno-builtin -fno-stack-protector -static -o startup main.c main.S
endef
define $(package)_stage_cmds
mkdir -p $($(package)_staging_prefix_dir)/bin && \
cp ln-guix-store $($(package)_staging_prefix_dir)/bin/startup
cp startup $($(package)_staging_prefix_dir)/bin/
endef

View file

@ -1,8 +1,8 @@
package=fontconfig
$(package)_version=2.12.6
$(package)_download_path=https://www.freedesktop.org/software/fontconfig/release/
$(package)_file_name=fontconfig-$($(package)_version).tar.bz2
$(package)_sha256_hash=cf0c30807d08f6a28ab46c61b8dbd55c97d2f292cf88f3a07d3384687f31f017
$(package)_file_name=fontconfig-$($(package)_version).tar.gz
$(package)_sha256_hash=064b9ebf060c9e77011733ac9dc0e2ce92870b574cca2405e11f5353a683c334
$(package)_dependencies=freetype expat
$(package)_patches=gperf_header_regen.patch

View file

@ -3,10 +3,16 @@ $(package)_version=0.14.0
$(package)_download_path=https://github.com/libusb/hidapi/archive/refs/tags
$(package)_file_name=$(package)-$($(package)_version).tar.gz
$(package)_sha256_hash=a5714234abe6e1f53647dd8cba7d69f65f71c558b7896ed218864ffcf405bcbd
$(package)_linux_dependencies=libusb eudev
$(package)_linux_dependencies=libusb
$(package)_patches=cmake-fix-libusb.patch
define $(package)_set_vars
$(package)_config_opts+=-DBUILD_SHARED_LIBS=OFF
$(package)_config_opts := -DBUILD_SHARED_LIBS=OFF
$(package)_config_opts += -DHIDAPI_WITH_HIDRAW=OFF
endef
define $(package)_preprocess_cmds
patch -p1 < $($(package)_patch_dir)/cmake-fix-libusb.patch
endef
define $(package)_config_cmds

View file

@ -1,34 +1,37 @@
package=libXau
$(package)_version=1.0.11
$(package)_version=1.0.12
$(package)_download_path=https://xorg.freedesktop.org/releases/individual/lib/
$(package)_file_name=libXau-$($(package)_version).tar.xz
$(package)_sha256_hash=f3fa3282f5570c3f6bd620244438dbfbdd580fc80f02f549587a0f8ab329bbeb
$(package)_file_name=libXau-$($(package)_version).tar.gz
$(package)_sha256_hash=2402dd938da4d0a332349ab3d3586606175e19cb32cb9fe013c19f1dc922dcee
$(package)_dependencies=xorgproto
# When updating this package, check the default value of
# --disable-xthreads. It is currently enabled.
define $(package)_set_vars
$(package)_config_opts=--disable-shared --disable-lint-library --without-lint
$(package)_config_opts += --disable-dependency-tracking --enable-option-checking
$(package)_config_opts += --with-pic
endef
$(package)_patches=toolchain.txt
define $(package)_preprocess_cmds
cp -f $(BASEDIR)/config.guess $(BASEDIR)/config.sub .
rm Makefile.in aclocal.m4 compile config.guess config.h.in config.sub configure depcomp \
install-sh ltmain.sh missing test-driver man/Makefile.in && \
rm -rf m4 && \
cp $($(package)_patch_dir)/toolchain.txt toolchain.txt && \
sed -i -e 's|@host_prefix@|$(host_prefix)|' \
-e 's|@cc@|$($(package)_cc)|' \
-e 's|@cxx@|$($(package)_cxx)|' \
-e 's|@ar@|$($(package)_ar)|' \
-e 's|@strip@|$(host_STRIP)|' \
-e 's|@arch@|$(host_arch)|' \
toolchain.txt
endef
define $(package)_config_cmds
$($(package)_autoconf)
meson setup --cross-file toolchain.txt build
endef
define $(package)_build_cmds
$(MAKE)
ninja -C build
endef
define $(package)_stage_cmds
$(MAKE) DESTDIR=$($(package)_staging_dir) install
DESTDIR=$($(package)_staging_dir) ninja -C build install
endef
define $(package)_postprocess_cmds
rm -rf share lib/*.la
sed -i 's/Requires: xproto//g' lib/pkgconfig/xau.pc
endef

View file

@ -0,0 +1,27 @@
package=libffi
$(package)_version=3.4.7
$(package)_download_path := https://github.com/libffi/$(package)/releases/download/v$($(package)_version)
$(package)_file_name := libffi-$($(package)_version).tar.gz
$(package)_sha256_hash := 138607dee268bdecf374adf9144c00e839e38541f75f24a1fcf18b78fda48b2d
define $(package)_set_vars
$(package)_config_opts := --enable-option-checking --disable-dependency-tracking
$(package)_config_opts += --disable-shared --enable-static --disable-docs
$(package)_config_opts += --disable-multi-os-directory
endef
define $(package)_config_cmds
$($(package)_autoconf)
endef
define $(package)_build_cmds
$(MAKE)
endef
define $(package)_stage_cmds
$(MAKE) DESTDIR=$($(package)_staging_dir) install
endef
define $(package)_postprocess_cmds
rm -rf share
endef

View file

@ -4,17 +4,19 @@ $(package)_download_path=https://www.gnupg.org/ftp/gcrypt/libgcrypt/
$(package)_file_name=libgcrypt-$($(package)_version).tar.gz
$(package)_sha256_hash=2382891207d3b000b20c81dbf2036516a535d31abd80f57d455e711e1dde5ff5
$(package)_dependencies=libgpg-error
$(package)_patches=no-programs.patch
define $(package)_set_vars
$(package)_build_opts=CFLAGS="-fPIE"
endef
define $(package)_preprocess_cmds
patch -p1 < $($(package)_patch_dir)/no-programs.patch && \
cp -f $(BASEDIR)/config.guess $(BASEDIR)/config.sub build-aux
endef
define $(package)_config_cmds
$($(package)_autoconf) --disable-shared --enable-static --disable-doc --disable-asm --with-libgpg-error-prefix=$(host_prefix)
$($(package)_autoconf) --disable-shared --enable-static --disable-tests --disable-doc --disable-asm --with-libgpg-error-prefix=$(host_prefix)
endef
define $(package)_build_cmds

View file

@ -3,7 +3,7 @@ $(package)_version=1.50
$(package)_download_path=https://www.gnupg.org/ftp/gcrypt/libgpg-error/
$(package)_file_name=libgpg-error-$($(package)_version).tar.gz
$(package)_sha256_hash=34a3b36ec8ad830f8f3ceb5db583d1f6dc8ae4c31d04f6da18ea18dd95396ab0
$(package)_patches=declare_environ_macos.patch
$(package)_patches=declare_environ_macos.patch no-programs.patch
define $(package)_set_vars
$(package)_config_opts := --enable-static --disable-shared
@ -14,6 +14,7 @@ endef
define $(package)_preprocess_cmds
patch -p1 < $($(package)_patch_dir)/declare_environ_macos.patch && \
patch -p1 < $($(package)_patch_dir)/no-programs.patch && \
cp -f $(BASEDIR)/config.guess $(BASEDIR)/config.sub build-aux
endef

View file

@ -13,8 +13,7 @@ endef
define $(package)_preprocess_cmds
rm -rf builds/msvc &&\
cp -f $(BASEDIR)/config.guess $(BASEDIR)/config.sub build-aux/ && \
patch -p1 -i $($(package)_patch_dir)/fix-blake2b-symbol-naming.patch && \
autoconf
patch -p1 -i $($(package)_patch_dir)/fix-blake2b-symbol-naming.patch
endef
define $(package)_config_cmds

View file

@ -1,14 +1,10 @@
package=libsquashfuse
$(package)_version=e51978cd6bb5c4d16fae9eee43d0b258f570bb0f
$(package)_download_path=https://github.com/vasi/squashfuse/archive/
$(package)_file_name=$($(package)_version).tar.gz
$(package)_sha256_hash=f544029ad30d8fbde4e4540c574b8cdc6d38b94df025a98d8551a9441f07d341
$(package)_version=0.5.2
$(package)_download_path=https://github.com/vasi/squashfuse/releases/download/$($(package)_version)
$(package)_file_name=squashfuse-$($(package)_version).tar.gz
$(package)_sha256_hash=54e4baaa20796e86a214a1f62bab07c7c361fb7a598375576d585712691178f5
$(package)_dependencies=libfuse zstd
define $(package)_preprocess_cmds
./autogen.sh
endef
define $(package)_config_cmds
$($(package)_autoconf) --with-zstd=$(host_prefix) --without-zlib CFLAGS=-no-pie LDFLAGS=-static
endef

View file

@ -1,23 +1,23 @@
package=libusb
$(package)_version=1.0.27
$(package)_download_path=https://github.com/libusb/libusb/releases/download/v$($(package)_version)
$(package)_file_name=$(package)-$($(package)_version).tar.bz2
$(package)_sha256_hash=ffaa41d741a8a3bee244ac8e54a72ea05bf2879663c098c82fc5757853441575
$(package)_download_path=https://github.com/libusb/libusb/archive/refs/tags
$(package)_download_file=v$($(package)_version).tar.gz
$(package)_file_name=$(package)-$($(package)_version).tar.gz
$(package)_sha256_hash=e8f18a7a36ecbb11fb820bd71540350d8f61bcd9db0d2e8c18a6fb80b214a3de
$(package)_patches=CMakeLists.txt config.h.in
define $(package)_preprocess_cmds
cp -f $(BASEDIR)/config.guess $(BASEDIR)/config.sub . && \
autoreconf -i
cp -f $($(package)_patch_dir)/CMakeLists.txt . && \
cp -f $($(package)_patch_dir)/config.h.in .
endef
define $(package)_set_vars
$(package)_config_opts=--disable-shared
$(package)_config_opts_linux=--with-pic --disable-udev
$(package)_config_opts_mingw32=--disable-udev
$(package)_config_opts_darwin=--disable-udev
$(package)_config_opts := -DBUILD_SHARED_LIBS=OFF
$(package)_config_opts_linux += -DLIBUSB_ENABLE_UDEV=OFF
endef
define $(package)_config_cmds
$($(package)_autoconf)
$($(package)_cmake) .
endef
define $(package)_build_cmd
@ -27,7 +27,3 @@ endef
define $(package)_stage_cmds
$(MAKE) DESTDIR=$($(package)_staging_dir) install
endef
define $(package)_postprocess_cmds
cp -f lib/libusb-1.0.a lib/libusb.a
endef

View file

@ -20,10 +20,6 @@ $(package)_config_opts += --disable-xtest --disable-xv --disable-xvmc
endef
define $(package)_preprocess_cmds
find . -type f -name 'Makefile.in' -exec rm {} + && \
rm -rf build-aux/* && \
rm ChangeLog INSTALL aclocal.m4 configure m4/libtool.m4 m4/ltoptions.m4 m4/ltsugar.m4 m4/ltversion.m4 m4/lt~obsolete.m4 src/config.h.in && \
autoreconf -fi && \
cp -f $(BASEDIR)/config.guess $(BASEDIR)/config.sub build-aux && \
patch -p1 -i $($(package)_patch_dir)/remove_pthread_stubs.patch
endef

View file

@ -12,9 +12,9 @@ $(package)_config_opts+= --disable-dependency-tracking --enable-option-checking
endef
define $(package)_preprocess_cmds
rm -rf test && \
cp -f $(BASEDIR)/config.guess $(BASEDIR)/config.sub . && \
patch -p1 -i $($(package)_patch_dir)/no-tests.patch && \
autoreconf -i
patch -p1 -i $($(package)_patch_dir)/no-tests.patch
endef
define $(package)_config_cmds

View file

@ -1,8 +1,8 @@
package=libxkbcommon
$(package)_version=1.7.0
$(package)_download_path=https://xkbcommon.org/download/
$(package)_file_name=libxkbcommon-$($(package)_version).tar.xz
$(package)_sha256_hash=65782f0a10a4b455af9c6baab7040e2f537520caa2ec2092805cdfd36863b247
$(package)_version=1.8.1
$(package)_download_path=https://github.com/xkbcommon/libxkbcommon/archive/refs/tags
$(package)_file_name=xkbcommon-$($(package)_version).tar.gz
$(package)_sha256_hash=c65c668810db305c4454ba26a10b6d84a96b5469719fe3c729e1c6542b8d0d87
$(package)_dependencies=libxcb
$(package)_patches=no-test-x11.patch toolchain.txt
@ -19,7 +19,7 @@ define $(package)_preprocess_cmds
endef
define $(package)_config_cmds
meson setup --cross-file toolchain.txt build
meson setup --cross-file toolchain.txt build -Dxkb-config-root=/usr/share/X11/xkb -Dxkb-config-extra-path=/app/share/X11/xkb
endef
define $(package)_build_cmds

View file

@ -1,8 +1,8 @@
package=libzip
$(package)_version=1.11.1
$(package)_version=1.11.3
$(package)_download_path=https://libzip.org/download/
$(package)_file_name=$(package)-$($(package)_version).tar.gz
$(package)_sha256_hash=c0e6fa52a62ba11efd30262290dc6970947aef32e0cc294ee50e9005ceac092a
$(package)_sha256_hash=76653f135dde3036036c500e11861648ffbf9e1fc5b233ff473c60897d9db0ea
$(package)_dependencies=zlib
define $(package)_set_vars

View file

@ -1,14 +1,18 @@
package=native_abseil
$(package)_version=20240722.0
$(package)_version=20250127.0
$(package)_download_path=https://github.com/abseil/abseil-cpp/archive/refs/tags/
$(package)_download_file=$($(package)_version).tar.gz
$(package)_file_name=abseil-$($(package)_version).tar.gz
$(package)_sha256_hash=f50e5ac311a81382da7fa75b97310e4b9006474f9560ac46f54a9967f07d4ae3
$(package)_sha256_hash=16242f394245627e508ec6bb296b433c90f8d914f73b9c026fddb905e27276e8
define $(package)_config_cmds
$($(package)_cmake)
endef
define $(package)_preprocess_cmds
rm -rf absl/time/internal/cctz/testdata
endef
define $(package)_build_cmds
$(MAKE)
endef

View file

@ -1,36 +0,0 @@
package=native_cctools
$(package)_version=2ef2e931cf641547eb8a68cfebde61003587c9fd
$(package)_download_path=https://github.com/tpoechtrager/cctools-port/archive
$(package)_file_name=$($(package)_version).tar.gz
$(package)_sha256_hash=6b73269efdf5c58a070e7357b66ee760501388549d6a12b423723f45888b074b
$(package)_build_subdir=cctools
$(package)_dependencies=native_libtapi
$(package)_patches=no-build-date.patch
define $(package)_set_vars
$(package)_config_opts=--target=$(host)
$(package)_ldflags+=-Wl,-rpath=\\$$$$$$$$\$$$$$$$$ORIGIN/../lib
$(package)_cc=$(clang_prog)
$(package)_cxx=$(clangxx_prog)
endef
define $(package)_preprocess_cmds
patch -p1 < $($(package)_patch_dir)/no-build-date.patch && \
cp -f $(BASEDIR)/config.guess $(BASEDIR)/config.sub cctools
endef
define $(package)_config_cmds
$($(package)_autoconf)
endef
define $(package)_build_cmds
$(MAKE)
endef
define $(package)_stage_cmds
$(MAKE) DESTDIR=$($(package)_staging_dir) install
endef
define $(package)_postprocess_cmds
rm -rf share
endef

View file

@ -0,0 +1,30 @@
package=native_expat
$(package)_version=2.7.0
$(package)_download_path=https://github.com/libexpat/libexpat/releases/download/R_$(subst .,_,$($(package)_version))/
$(package)_file_name=expat-$($(package)_version).tar.gz
$(package)_sha256_hash=362e89ca6b8a0d46fc5740a917eb2a8b4d6356edbe016eee09f49c0781215844
$(package)_build_subdir=build
define $(package)_set_vars
$(package)_config_opts := -DEXPAT_BUILD_TOOLS=OFF
$(package)_config_opts += -DEXPAT_BUILD_EXAMPLES=OFF
$(package)_config_opts += -DEXPAT_BUILD_TESTS=OFF
$(package)_config_opts += -DBUILD_SHARED_LIBS=OFF
$(package)_config_opts += -DCMAKE_POSITION_INDEPENDENT_CODE=ON
endef
define $(package)_config_cmds
$($(package)_cmake) -S .. -B .
endef
define $(package)_build_cmds
$(MAKE)
endef
define $(package)_stage_cmds
$(MAKE) DESTDIR=$($(package)_staging_dir) install
endef
define $(package)_postprocess_cmds
rm -rf share lib/cmake
endef

View file

@ -0,0 +1,27 @@
package=native_libffi
$(package)_version=3.4.7
$(package)_download_path := https://github.com/libffi/libffi/releases/download/v$($(package)_version)
$(package)_file_name := libffi-$($(package)_version).tar.gz
$(package)_sha256_hash := 138607dee268bdecf374adf9144c00e839e38541f75f24a1fcf18b78fda48b2d
define $(package)_set_vars
$(package)_config_opts := --enable-option-checking --disable-dependency-tracking
$(package)_config_opts += --enable-shared --disable-static --disable-docs
$(package)_config_opts += --disable-multi-os-directory
endef
define $(package)_config_cmds
$($(package)_autoconf)
endef
define $(package)_build_cmds
$(MAKE)
endef
define $(package)_stage_cmds
$(MAKE) DESTDIR=$($(package)_staging_dir) install
endef
define $(package)_postprocess_cmds
rm -rf share
endef

View file

@ -1,20 +0,0 @@
package=native_libtapi
$(package)_version=664b8414f89612f2dfd35a9b679c345aa5389026
$(package)_download_path=https://github.com/tpoechtrager/apple-libtapi/archive
$(package)_file_name=$($(package)_version).tar.gz
$(package)_sha256_hash=62e419c12d1c9fad67cc1cd523132bc00db050998337c734c15bc8d73cc02b61
$(package)_patches=no_embed_git_rev.patch
define $(package)_preprocess_cmds
patch -p1 -i $($(package)_patch_dir)/no_embed_git_rev.patch
endef
define $(package)_build_cmds
CC=$(clang_prog) CXX=$(clangxx_prog) INSTALLPREFIX=$($(package)_staging_prefix_dir) ./build.sh
endef
define $(package)_stage_cmds
./install.sh && \
mkdir -p $($(package)_staging_prefix_dir)/include/llvm-c && \
cp src/llvm/include/llvm-c/lto.h $($(package)_staging_prefix_dir)/include/llvm-c
endef

View file

@ -1,8 +1,8 @@
package=native_protobuf
$(package)_version=28.2
$(package)_version=29.1
$(package)_download_path=https://github.com/protocolbuffers/protobuf/releases/download/v$($(package)_version)
$(package)_file_name=protobuf-$($(package)_version).tar.gz
$(package)_sha256_hash=b2340aa47faf7ef10a0328190319d3f3bee1b24f426d4ce8f4253b6f27ce16db
$(package)_sha256_hash=3d32940e975c4ad9b8ba69640e78f5527075bae33ca2890275bf26b853c0962c
$(package)_dependencies=native_abseil
define $(package)_set_vars
@ -14,7 +14,7 @@ define $(package)_set_vars
endef
define $(package)_preprocess_cmds
rm -rf docs php/src/GPBMetadata compatibility objectivec/Tests csharp/keys php/tests src/google/protobuf/testdata csharp/src/Google.Protobuf.Test
rm -rf examples docs php/src/GPBMetadata compatibility objectivec/Tests csharp/keys php/tests src/google/protobuf/testdata csharp/src/Google.Protobuf.Test
endef
define $(package)_config_cmds

View file

@ -1,33 +1,37 @@
package=native_qt
$(package)_version=6.7.3
$(package)_download_path=https://download.qt.io/official_releases/qt/6.7/$($(package)_version)/submodules
$(package)_version=6.9.0
$(package)_download_path=https://download.qt.io/official_releases/qt/6.9/$($(package)_version)/submodules
$(package)_suffix=everywhere-src-$($(package)_version).tar.xz
$(package)_file_name=qtbase-$($(package)_suffix)
$(package)_sha256_hash=8ccbb9ab055205ac76632c9eeddd1ed6fc66936fc56afc2ed0fd5d9e23da3097
$(package)_sha256_hash=c1800c2ea835801af04a05d4a32321d79a93954ee3ae2172bbeacf13d1f0598c
$(package)_linux_dependencies=native_wayland
$(package)_qt_libs=corelib network widgets gui plugins testlib
$(package)_patches = dont_hardcode_pwd.patch
$(package)_patches += fast_fixed_dtoa_no_optimize.patch
$(package)_patches = fast_fixed_dtoa_no_optimize.patch
$(package)_patches += guix_cross_lib_path.patch
$(package)_patches += qtbase-moc-ignore-gcc-macro.patch
$(package)_patches += rcc_hardcode_timestamp.patch
$(package)_patches += root_CMakeLists.txt
$(package)_qttools_file_name=qttools-$($(package)_suffix)
$(package)_qttools_sha256_hash=f03bb7df619cd9ac9dba110e30b7bcab5dd88eb8bdc9cc752563b4367233203f
$(package)_qttools_sha256_hash=fa645589cc3f939022401a926825972a44277dead8ec8607d9f2662e6529c9a4
$(package)_qtsvg_file_name=qtsvg-$($(package)_suffix)
$(package)_qtsvg_sha256_hash=40142cb71fb1e07ad612bc361b67f5d54cd9367f9979ae6b86124a064deda06b
$(package)_qtsvg_sha256_hash=ec359d930c95935ea48af58b100c2f5d0d275968ec8ca1e0e76629b7159215fc
$(package)_qtmultimedia_file_name=qtmultimedia-$($(package)_suffix)
$(package)_qtmultimedia_sha256_hash=304d28b8e592435293893b0110d5f3534407604d1e04d8a0b0e5b34afe577303
$(package)_qtmultimedia_sha256_hash=995c3b194f3de3e1929280639642f7661d94aa57523c459dbbf2f71dbdcaa18c
$(package)_qtshadertools_file_name=qtshadertools-$($(package)_suffix)
$(package)_qtshadertools_sha256_hash=74e512798c7ddbda354a2d8d975211454bbabb47afb7e598892067a5828c0995
$(package)_qtshadertools_sha256_hash=916c40281ac3dee23b163f6ca73fb5bdeee344838b9a922b6f36269642d6f4bb
$(package)_qtwayland_file_name=qtwayland-$($(package)_suffix)
$(package)_qtwayland_sha256_hash=503416fcb04db503bd130e6a49c45e3e546f091e83406f774a0c703130c91805
$(package)_extra_sources += $($(package)_qttools_file_name)
$(package)_extra_sources += $($(package)_qtsvg_file_name)
$(package)_extra_sources += $($(package)_qtmultimedia_file_name)
$(package)_extra_sources += $($(package)_qtshadertools_file_name)
$(package)_extra_sources += $($(package)_qtwayland_file_name)
define $(package)_set_vars
$(package)_config_opts_release = -release
@ -101,6 +105,7 @@ $(package)_config_opts += -no-openssl
$(package)_config_opts += -no-openvg
$(package)_config_opts += -no-pch
$(package)_config_opts += -no-reduce-relocations
$(package)_config_opts += -no-sbom
$(package)_config_opts += -no-schannel
$(package)_config_opts += -no-sctp
$(package)_config_opts += -no-securetransport
@ -112,6 +117,9 @@ $(package)_config_opts += -no-zstd
ifneq ($(LTO),)
$(package)_config_opts += -ltcg
endif
$(package)_config_env := CC="$$($(package)_cc)"
$(package)_config_env += CXX="$$($(package)_cxx)"
endef
define $(package)_fetch_cmds
@ -119,7 +127,8 @@ $(call fetch_file,$(package),$($(package)_download_path),$($(package)_download_f
$(call fetch_file,$(package),$($(package)_download_path),$($(package)_qttools_file_name),$($(package)_qttools_file_name),$($(package)_qttools_sha256_hash)) && \
$(call fetch_file,$(package),$($(package)_download_path),$($(package)_qtsvg_file_name),$($(package)_qtsvg_file_name),$($(package)_qtsvg_sha256_hash)) && \
$(call fetch_file,$(package),$($(package)_download_path),$($(package)_qtmultimedia_file_name),$($(package)_qtmultimedia_file_name),$($(package)_qtmultimedia_sha256_hash)) && \
$(call fetch_file,$(package),$($(package)_download_path),$($(package)_qtshadertools_file_name),$($(package)_qtshadertools_file_name),$($(package)_qtshadertools_sha256_hash))
$(call fetch_file,$(package),$($(package)_download_path),$($(package)_qtshadertools_file_name),$($(package)_qtshadertools_file_name),$($(package)_qtshadertools_sha256_hash)) && \
$(call fetch_file,$(package),$($(package)_download_path),$($(package)_qtwayland_file_name),$($(package)_qtwayland_file_name),$($(package)_qtwayland_sha256_hash))
endef
define $(package)_extract_cmds
@ -129,6 +138,7 @@ define $(package)_extract_cmds
echo "$($(package)_qtsvg_sha256_hash) $($(package)_source_dir)/$($(package)_qtsvg_file_name)" >> $($(package)_extract_dir)/.$($(package)_file_name).hash && \
echo "$($(package)_qtmultimedia_sha256_hash) $($(package)_source_dir)/$($(package)_qtmultimedia_file_name)" >> $($(package)_extract_dir)/.$($(package)_file_name).hash && \
echo "$($(package)_qtshadertools_sha256_hash) $($(package)_source_dir)/$($(package)_qtshadertools_file_name)" >> $($(package)_extract_dir)/.$($(package)_file_name).hash && \
echo "$($(package)_qtwayland_sha256_hash) $($(package)_source_dir)/$($(package)_qtwayland_file_name)" >> $($(package)_extract_dir)/.$($(package)_file_name).hash && \
$(build_SHA256SUM) -c $($(package)_extract_dir)/.$($(package)_file_name).hash && \
mkdir qtbase && \
$(build_TAR) --no-same-owner --strip-components=1 -xf $($(package)_source) -C qtbase && \
@ -139,12 +149,13 @@ define $(package)_extract_cmds
mkdir qtmultimedia && \
$(build_TAR) --no-same-owner --strip-components=1 -xf $($(package)_source_dir)/$($(package)_qtmultimedia_file_name) -C qtmultimedia && \
mkdir qtshadertools && \
$(build_TAR) --no-same-owner --strip-components=1 -xf $($(package)_source_dir)/$($(package)_qtshadertools_file_name) -C qtshadertools
$(build_TAR) --no-same-owner --strip-components=1 -xf $($(package)_source_dir)/$($(package)_qtshadertools_file_name) -C qtshadertools && \
mkdir qtwayland && \
$(build_TAR) --no-same-owner --strip-components=1 -xf $($(package)_source_dir)/$($(package)_qtwayland_file_name) -C qtwayland
endef
define $(package)_preprocess_cmds
cp $($(package)_patch_dir)/root_CMakeLists.txt CMakeLists.txt && \
patch -p1 -i $($(package)_patch_dir)/dont_hardcode_pwd.patch && \
patch -p1 -i $($(package)_patch_dir)/qtbase-moc-ignore-gcc-macro.patch && \
patch -p1 -i $($(package)_patch_dir)/rcc_hardcode_timestamp.patch && \
patch -p1 -i $($(package)_patch_dir)/fast_fixed_dtoa_no_optimize.patch && \
@ -156,7 +167,6 @@ define $(package)_config_cmds
export PKG_CONFIG_LIBDIR=$(build_prefix)/lib/pkgconfig && \
export QT_MAC_SDK_NO_VERSION_CHECK=1 && \
unset CMAKE_PREFIX_PATH && \
export CMAKE_PREFIX_PATH="$(QT_LIBS)" && \
cd qtbase && \
./configure -top-level $($(package)_config_opts)
endef

View file

@ -0,0 +1,18 @@
package=native_wayland
$(package)_version=1.23.1
$(package)_download_path := https://gitlab.freedesktop.org/wayland/wayland/-/releases/$($(package)_version)/downloads/
$(package)_file_name := wayland-$($(package)_version).tar.xz
$(package)_sha256_hash := 864fb2a8399e2d0ec39d56e9d9b753c093775beadc6022ce81f441929a81e5ed
$(package)_dependencies := native_expat native_libffi
define $(package)_config_cmds
meson setup build -Dprefix="$(build_prefix)" -Ddtd_validation=false -Ddocumentation=false -Dtests=false
endef
define $(package)_build_cmds
ninja -C build
endef
define $(package)_stage_cmds
DESTDIR=$($(package)_staging_dir) ninja -C build install
endef

View file

@ -1,14 +1,15 @@
package=openssl
$(package)_version=3.3.2
$(package)_version=3.4.1
$(package)_download_path=https://github.com/openssl/openssl/releases/download/openssl-$($(package)_version)
$(package)_file_name=$(package)-$($(package)_version).tar.gz
$(package)_sha256_hash=2e8a40b01979afe8be0bbfb3de5dc1c6709fedb46d6c89c10da114ab5fc3d281
$(package)_sha256_hash=002a2d6b30b58bf4bea46c43bdd96365aaf8daa6c428782aa4feee06da197df3
define $(package)_set_vars
$(package)_config_env=AR="$($(package)_ar)" ARFLAGS=$($(package)_arflags) RANLIB="$($(package)_ranlib)" CC="$($(package)_cc)"
$(package)_config_env_android=ANDROID_NDK_ROOT="$(host_prefix)/native" PATH="$(host_prefix)/native/bin" CC=clang AR=ar RANLIB=ranlib
$(package)_build_env_android=ANDROID_NDK_ROOT="$(host_prefix)/native"
$(package)_config_opts=--prefix=$(host_prefix) --openssldir=$(host_prefix)/etc/openssl --libdir=$(host_prefix)/lib
$(package)_config_opts+=no-apps
$(package)_config_opts+=no-capieng
$(package)_config_opts+=no-dso
$(package)_config_opts+=no-dtls1

View file

@ -1,13 +1,13 @@
packages := boost openssl unbound qrencode libsodium polyseed hidapi abseil protobuf libusb zlib libgpg-error libgcrypt expat libzip zxing-cpp
native_packages := native_qt native_abseil native_protobuf
linux_packages := eudev libfuse libsquashfuse zstd appimage_runtime
linux_native_packages =
linux_packages := libfuse libsquashfuse zstd appimage_runtime wayland libffi
linux_native_packages := native_expat native_libffi native_wayland
x86_64_linux_packages := flatstart
darwin_packages :=
darwin_native_packages = darwin_sdk native_cctools native_libtapi
darwin_native_packages = darwin_sdk
mingw32_packages =
mingw32_native_packages =
@ -18,4 +18,4 @@ qt_mingw32_packages := qt
tor_linux_packages := libevent tor_linux
tor_darwin_packages := tor_darwin
tor_mingw32_packages := tor_mingw32
tor_mingw32_packages := tor_mingw32

View file

@ -1,8 +1,8 @@
package=qrencode
$(package)_version=4.1.1
$(package)_download_path=https://fukuchi.org/works/qrencode/
$(package)_file_name=$(package)-$($(package)_version).tar.bz2
$(package)_sha256_hash=e455d9732f8041cf5b9c388e345a641fd15707860f928e94507b1961256a6923
$(package)_file_name=$(package)-$($(package)_version).tar.gz
$(package)_sha256_hash=da448ed4f52aba6bcb0cd48cac0dd51b8692bccc4cd127431402fca6f8171e8e
define $(package)_set_vars
$(package)_config_opts=--disable-shared --without-tools --without-tests --disable-sdltest

View file

@ -1,12 +1,12 @@
package=qt
$(package)_version=6.7.3
$(package)_download_path=https://download.qt.io/official_releases/qt/6.7/$($(package)_version)/submodules
$(package)_version=6.9.0
$(package)_download_path=https://download.qt.io/official_releases/qt/6.9/$($(package)_version)/submodules
$(package)_suffix=everywhere-src-$($(package)_version).tar.xz
$(package)_file_name=qtbase-$($(package)_suffix)
$(package)_sha256_hash=8ccbb9ab055205ac76632c9eeddd1ed6fc66936fc56afc2ed0fd5d9e23da3097
$(package)_darwin_dependencies=native_cctools native_qt openssl
$(package)_sha256_hash=c1800c2ea835801af04a05d4a32321d79a93954ee3ae2172bbeacf13d1f0598c
$(package)_darwin_dependencies=openssl native_qt
$(package)_mingw32_dependencies=openssl native_qt
$(package)_linux_dependencies=openssl native_qt freetype fontconfig libxcb libxkbcommon libxcb_util libxcb_util_render libxcb_util_keysyms libxcb_util_image libxcb_util_wm libxcb_util_cursor dbus
$(package)_linux_dependencies=openssl native_qt freetype fontconfig libxcb libxkbcommon libxcb_util libxcb_util_render libxcb_util_keysyms libxcb_util_image libxcb_util_wm libxcb_util_cursor dbus wayland native_wayland
$(package)_patches += fast_fixed_dtoa_no_optimize.patch
$(package)_patches += guix_cross_lib_path.patch
$(package)_patches += qtbase-moc-ignore-gcc-macro.patch
@ -21,29 +21,35 @@ $(package)_patches += toolchain.cmake
$(package)_patches += revert-macOS-Silence-warning-about-supporting-secure.patch
$(package)_patches += no-resonance-audio.patch
$(package)_patches += fix_static_qt_darwin_camera_permissions.patch
$(package)_patches += revert-f67ee7c39.patch
$(package)_patches += macos-available-qtbase.patch
$(package)_patches += macos-available-qtmultimedia.patch
$(package)_patches += qtwayland-tabletevent-fix.patch
#$(package)_patches += fix-static-fontconfig-static-linking.patch
$(package)_qttools_file_name=qttools-$($(package)_suffix)
$(package)_qttools_sha256_hash=f03bb7df619cd9ac9dba110e30b7bcab5dd88eb8bdc9cc752563b4367233203f
$(package)_qttools_sha256_hash=fa645589cc3f939022401a926825972a44277dead8ec8607d9f2662e6529c9a4
$(package)_qtsvg_file_name=qtsvg-$($(package)_suffix)
$(package)_qtsvg_sha256_hash=40142cb71fb1e07ad612bc361b67f5d54cd9367f9979ae6b86124a064deda06b
$(package)_qtsvg_sha256_hash=ec359d930c95935ea48af58b100c2f5d0d275968ec8ca1e0e76629b7159215fc
$(package)_qtwebsockets_file_name=qtwebsockets-$($(package)_suffix)
$(package)_qtwebsockets_sha256_hash=ba03007db7ee68a5bc3e3bd1d71e11f3e1f84e470bcb8c54cd7c01bbe1c5990e
$(package)_qtwebsockets_sha256_hash=6b3add7cacf3a4e0b448d5e69d9dac42795fef63309038af1dc5a454ce514940
$(package)_qtmultimedia_file_name=qtmultimedia-$($(package)_suffix)
$(package)_qtmultimedia_sha256_hash=304d28b8e592435293893b0110d5f3534407604d1e04d8a0b0e5b34afe577303
$(package)_qtmultimedia_sha256_hash=995c3b194f3de3e1929280639642f7661d94aa57523c459dbbf2f71dbdcaa18c
$(package)_qtshadertools_file_name=qtshadertools-$($(package)_suffix)
$(package)_qtshadertools_sha256_hash=74e512798c7ddbda354a2d8d975211454bbabb47afb7e598892067a5828c0995
$(package)_qtshadertools_sha256_hash=916c40281ac3dee23b163f6ca73fb5bdeee344838b9a922b6f36269642d6f4bb
$(package)_qtwayland_file_name=qtwayland-$($(package)_suffix)
$(package)_qtwayland_sha256_hash=503416fcb04db503bd130e6a49c45e3e546f091e83406f774a0c703130c91805
$(package)_extra_sources += $($(package)_qttools_file_name)
$(package)_extra_sources += $($(package)_qtsvg_file_name)
$(package)_extra_sources += $($(package)_qtwebsockets_file_name)
$(package)_extra_sources += $($(package)_qtmultimedia_file_name)
$(package)_extra_sources += $($(package)_qtshadertools_file_name)
$(package)_extra_sources += $($(package)_qtwayland_file_name)
define $(package)_set_vars
$(package)_config_opts += -DQT_HOST_PATH=$(build_prefix)/qt-host
@ -53,92 +59,116 @@ $(package)_config_opts += -DCMAKE_INSTALL_PREFIX=$(host_prefix)
$(package)_config_opts += -DINSTALL_LIBEXECDIR=$(build_prefix)/bin
$(package)_config_opts += -DQT_BUILD_EXAMPLES=FALSE
$(package)_config_opts += -DQT_BUILD_TESTS=FALSE
$(package)_config_opts += -DQT_GENERATE_SBOM=OFF
$(package)_config_opts += -DCMAKE_TOOLCHAIN_FILE=toolchain.cmake
$(package)_config_opts += -DINPUT_cups=no
$(package)_config_opts += -DINPUT_egl=no
$(package)_config_opts += -DINPUT_eglfs=no
$(package)_config_opts += -DINPUT_evdev=no
$(package)_config_opts += -DINPUT_gif=no
$(package)_config_opts += -DINPUT_glib=no
$(package)_config_opts += -DINPUT_icu=no
$(package)_config_opts += -DINPUT_ico=no
$(package)_config_opts += -DINPUT_kms=no
$(package)_config_opts += -DINPUT_linuxfb=no
$(package)_config_opts += -DINPUT_libudev=no
$(package)_config_opts += -DINPUT_mtdev=no
$(package)_config_opts += -DINPUT_openssl=linked
$(package)_config_opts += -DINPUT_openvg=no
$(package)_config_opts += -DINPUT_permissions=yes
$(package)_config_opts += -DINPUT_reduce_relocations=no
$(package)_config_opts += -DINPUT_schannel=no
$(package)_config_opts += -DINPUT_sctp=no
$(package)_config_opts += -DINPUT_securetransport=no
$(package)_config_opts += -DINPUT_system_proxies=no
$(package)_config_opts += -DINPUT_use_gold_linker_alias=no
$(package)_config_opts += -DINPUT_zstd=no
$(package)_config_opts += -DINPUT_pkg_config=yes
$(package)_config_opts += -DINPUT_libpng=qt
$(package)_config_opts += -DINPUT_pcre=qt
$(package)_config_opts += -DINPUT_harfbuzz=qt
$(package)_config_opts += -DINPUT_system_zlib=no
$(package)_config_opts += -DINPUT_colordialog=no
$(package)_config_opts += -DINPUT_dial=no
$(package)_config_opts += -DINPUT_fontcombobox=no
$(package)_config_opts += -DINPUT_image_heuristic_mask=no
$(package)_config_opts += -DINPUT_keysequenceedit=no
$(package)_config_opts += -DINPUT_lcdnumber=no
$(package)_config_opts += -DINPUT_networkdiskcache=no
$(package)_config_opts += -DINPUT_pdf=no
$(package)_config_opts += -DINPUT_printdialog=no
$(package)_config_opts += -DINPUT_printer=no
$(package)_config_opts += -DINPUT_printpreviewdialog=no
$(package)_config_opts += -DINPUT_printpreviewwidget=no
$(package)_config_opts += -DINPUT_printsupport=no
$(package)_config_opts += -DINPUT_sessionmanager=no
$(package)_config_opts += -DINPUT_spatialaudio=no
$(package)_config_opts += -DINPUT_sql=no
$(package)_config_opts += -DINPUT_syntaxhighlighter=no
$(package)_config_opts += -DINPUT_textmarkdownwriter=no
$(package)_config_opts += -DINPUT_textodfwriter=no
$(package)_config_opts += -DINPUT_topleveldomain=no
$(package)_config_opts += -DINPUT_undocommand=no
$(package)_config_opts += -DINPUT_undogroup=no
$(package)_config_opts += -DINPUT_undostack=no
$(package)_config_opts += -DINPUT_undoview=no
$(package)_config_opts += -DINPUT_vnc=no
$(package)_config_opts += -DQT_FEATURE_cups=OFF
$(package)_config_opts += -DQT_FEATURE_qmake=OFF
$(package)_config_opts += -DQT_FEATURE_egl=OFF
$(package)_config_opts += -DQT_FEATURE_egl_x11=OFF
$(package)_config_opts += -DQT_FEATURE_xcb_egl_plugin=OFF
$(package)_config_opts += -DQT_FEATURE_xcb_glx_plugin=OFF
$(package)_config_opts += -DQT_FEATURE_eglfs=OFF
$(package)_config_opts += -DQT_FEATURE_evdev=OFF
$(package)_config_opts += -DQT_FEATURE_gif=OFF
$(package)_config_opts += -DQT_FEATURE_glib=OFF
$(package)_config_opts += -DQT_FEATURE_icu=OFF
$(package)_config_opts += -DQT_FEATURE_ico=OFF
$(package)_config_opts += -DQT_FEATURE_kms=OFF
$(package)_config_opts += -DQT_FEATURE_linuxfb=OFF
$(package)_config_opts += -DQT_FEATURE_libudev=OFF
$(package)_config_opts += -DQT_FEATURE_mtdev=OFF
$(package)_config_opts += -DQT_FEATURE_openssl=ON
$(package)_config_opts += -DQT_FEATURE_openssl_linked=ON
$(package)_config_opts += -DQT_FEATURE_openvg=OFF
$(package)_config_opts += -DQT_FEATURE_permissions=ON
$(package)_config_opts += -DQT_FEATURE_reduce_relocations=OFF
$(package)_config_opts += -DQT_FEATURE_schannel=OFF
$(package)_config_opts += -DQT_FEATURE_sctp=OFF
$(package)_config_opts += -DQT_FEATURE_securetransport=OFF
$(package)_config_opts += -DQT_FEATURE_system_proxies=OFF
$(package)_config_opts += -DQT_FEATURE_use_gold_linker_alias=OFF
$(package)_config_opts += -DQT_FEATURE_zstd=OFF
$(package)_config_opts += -DQT_FEATURE_pkg_config=ON
$(package)_config_opts += -DQT_FEATURE_system_png=OFF
$(package)_config_opts += -DQT_FEATURE_system_pcre2=OFF
$(package)_config_opts += -DQT_FEATURE_system_harfbuzz=OFF
$(package)_config_opts += -DQT_FEATURE_system_zlib=OFF
$(package)_config_opts += -DQT_FEATURE_colordialog=OFF
$(package)_config_opts += -DQT_FEATURE_dial=OFF
$(package)_config_opts += -DQT_FEATURE_fontcombobox=OFF
$(package)_config_opts += -DQT_FEATURE_image_heuristic_mask=OFF
$(package)_config_opts += -DQT_FEATURE_keysequenceedit=OFF
$(package)_config_opts += -DQT_FEATURE_lcdnumber=OFF
$(package)_config_opts += -DQT_FEATURE_networkdiskcache=OFF
$(package)_config_opts += -DQT_FEATURE_pdf=OFF
$(package)_config_opts += -DQT_FEATURE_printdialog=OFF
$(package)_config_opts += -DQT_FEATURE_printer=OFF
$(package)_config_opts += -DQT_FEATURE_printpreviewdialog=OFF
$(package)_config_opts += -DQT_FEATURE_printpreviewwidget=OFF
$(package)_config_opts += -DQT_FEATURE_printsupport=OFF
$(package)_config_opts += -DQT_FEATURE_sessionmanager=OFF
$(package)_config_opts += -DQT_FEATURE_spatialaudio=OFF
$(package)_config_opts += -DQT_FEATURE_sql=OFF
$(package)_config_opts += -DQT_FEATURE_syntaxhighlighter=OFF
$(package)_config_opts += -DQT_FEATURE_tabletevent=OFF
$(package)_config_opts += -DQT_FEATURE_textmarkdownwriter=OFF
$(package)_config_opts += -DQT_FEATURE_textodfwriter=OFF
$(package)_config_opts += -DQT_FEATURE_topleveldomain=OFF
$(package)_config_opts += -DQT_FEATURE_undocommand=OFF
$(package)_config_opts += -DQT_FEATURE_undogroup=OFF
$(package)_config_opts += -DQT_FEATURE_undostack=OFF
$(package)_config_opts += -DQT_FEATURE_undoview=OFF
$(package)_config_opts += -DQT_FEATURE_vnc=OFF
$(package)_config_opts_linux += -DQT_QMAKE_TARGET_MKSPEC=linux-g++
$(package)_config_opts_linux += -DINPUT_xcb=yes
$(package)_config_opts_linux += -DINPUT_xcb_xlib=no
$(package)_config_opts_linux += -DINPUT_xlib=no
$(package)_config_opts_linux += -DINPUT_freetype=system
$(package)_config_opts_linux += -DINPUT_fontconfig=yes
$(package)_config_opts_linux += -DQT_FEATURE_xcb=ON
$(package)_config_opts_linux += -DQT_FEATURE_xcb_xlib=OFF
$(package)_config_opts_linux += -DQT_FEATURE_xlib=OFF
$(package)_config_opts_linux += -DQT_FEATURE_freetype=ON
$(package)_config_opts_linux += -DQT_FEATURE_system_freetype=ON
$(package)_config_opts_linux += -DQT_FEATURE_fontconfig=ON
$(package)_config_opts_linux += -DINPUT_opengl=no
$(package)_config_opts_linux += -DINPUT_vulkan=no
$(package)_config_opts_linux += -DINPUT_backtrace=no
$(package)_config_opts_linux += -DINPUT_dbus=linked
$(package)_config_opts_linux += -DQT_FEATURE_opengl=OFF
$(package)_config_opts_linux += -DQT_FEATURE_opengles2=OFF
$(package)_config_opts_linux += -DQT_FEATURE_opengles3=OFF
$(package)_config_opts_linux += -DQT_FEATURE_opengles31=OFF
$(package)_config_opts_linux += -DQT_FEATURE_opengles32=OFF
$(package)_config_opts_linux += -DQT_FEATURE_opengl_desktop=OFF
$(package)_config_opts_linux += -DQT_FEATURE_vulkan=OFF
$(package)_config_opts_linux += -DQT_FEATURE_backtrace=OFF
$(package)_config_opts_linux += -DQT_FEATURE_dbus=ON
$(package)_config_opts_linux += -DQT_FEATURE_dbus_linked=ON
$(package)_config_opts_linux += -DQT_FEATURE_wayland_client=ON
$(package)_config_opts_linux += -DQT_FEATURE_wayland_server=OFF
$(package)_config_opts_linux += -DQT_FEATURE_wayland_drm_egl_server_buffer=OFF
$(package)_config_opts_linux += -DQT_FEATURE_wayland-shm-emulation-server-buffer=OFF
$(package)_config_opts_linux += -DQT_FEATURE_wayland-client-fullscreen-shell-v1=OFF
$(package)_config_opts_linux += -DQT_FEATURE_wayland-client-ivi-shell=OFF
$(package)_config_opts_linux += -DQT_FEATURE_wayland-client-wl-shell=OFF
$(package)_config_opts_linux += -DQT_FEATURE_wayland-client-xdg-shell-v5=OFF
$(package)_config_opts_linux += -DQT_FEATURE_wayland-client-xdg-shell-v6=OFF
$(package)_config_opts_linux += -DBUILD_WITH_PCH=OFF
$(package)_config_opts_mingw32 += -DQT_QMAKE_TARGET_MKSPEC=win32-g++
$(package)_config_opts_mingw32 += -DINPUT_opengl=no
$(package)_config_opts_mingw32 += -DINPUT_dbus=no
$(package)_config_opts_mingw32 += -DINPUT_freetype=no
$(package)_config_opts_mingw32 += -DINPUT_ffmpeg=no
$(package)_config_opts_mingw32 += -DINPUT_wmf=yes
$(package)_config_opts_mingw32 += -DQT_FEATURE_dbus=OFF
$(package)_config_opts_mingw32 += -DQT_FEATURE_freetype=OFF
$(package)_config_opts_mingw32 += -DQT_FEATURE_ffmpeg=OFF
$(package)_config_opts_mingw32 += -DQT_FEATURE_wmf=ON
$(package)_config_opts_mingw32 += -DBUILD_WITH_PCH=ON
$(package)_config_opts_darwin += -DQT_QMAKE_TARGET_MKSPEC=macx-clang
# see #138
$(package)_config_opts_darwin += -DINPUT_accessibility=no
$(package)_config_opts_darwin += -DINPUT_dbus=no
$(package)_config_opts_darwin += -DINPUT_freetype=no
$(package)_config_opts_darwin += -DINPUT_ffmpeg=no
$(package)_config_opts_darwin += -DQT_FEATURE_accessibility=OFF
$(package)_config_opts_darwin += -DQT_FEATURE_dbus=OFF
$(package)_config_opts_darwin += -DQT_FEATURE_freetype=OFF
$(package)_config_opts_darwin += -DQT_FEATURE_ffmpeg=OFF
$(package)_config_opts_darwin += -DQMAKE_MACOSX_DEPLOYMENT_TARGET=11.0
$(package)_config_opts_darwin += -DBUILD_WITH_PCH=OFF
$(package)_config_opts_darwin += '-DQT_QMAKE_DEVICE_OPTIONS=MAC_SDK_PATH=$(host_prefix)/native/SDK;MAC_SDK_VERSION=$(OSX_SDK_VERSION);CROSS_COMPILE=$(host)-;MAC_TARGET=$(host);XCODE_VERSION=$(XCODE_VERSION)'
$(package)_config_opts_darwin += -DQT_NO_APPLE_SDK_AND_XCODE_CHECK=ON
# work around a build issue in qfutex_mac_p.h
$(package)_config_opts_darwin += -DINPUT_appstore_compliant=yes
$(package)_config_opts_darwin += -DQT_FEATURE_appstore_compliant=ON
$(package)_config_opts += -G Ninja
@ -152,7 +182,8 @@ $(call fetch_file,$(package),$($(package)_download_path),$($(package)_qttools_fi
$(call fetch_file,$(package),$($(package)_download_path),$($(package)_qtsvg_file_name),$($(package)_qtsvg_file_name),$($(package)_qtsvg_sha256_hash)) && \
$(call fetch_file,$(package),$($(package)_download_path),$($(package)_qtwebsockets_file_name),$($(package)_qtwebsockets_file_name),$($(package)_qtwebsockets_sha256_hash)) && \
$(call fetch_file,$(package),$($(package)_download_path),$($(package)_qtmultimedia_file_name),$($(package)_qtmultimedia_file_name),$($(package)_qtmultimedia_sha256_hash)) && \
$(call fetch_file,$(package),$($(package)_download_path),$($(package)_qtshadertools_file_name),$($(package)_qtshadertools_file_name),$($(package)_qtshadertools_sha256_hash))
$(call fetch_file,$(package),$($(package)_download_path),$($(package)_qtshadertools_file_name),$($(package)_qtshadertools_file_name),$($(package)_qtshadertools_sha256_hash)) && \
$(call fetch_file,$(package),$($(package)_download_path),$($(package)_qtwayland_file_name),$($(package)_qtwayland_file_name),$($(package)_qtwayland_sha256_hash))
endef
define $(package)_extract_cmds
@ -163,6 +194,7 @@ define $(package)_extract_cmds
echo "$($(package)_qtwebsockets_sha256_hash) $($(package)_source_dir)/$($(package)_qtwebsockets_file_name)" >> $($(package)_extract_dir)/.$($(package)_file_name).hash && \
echo "$($(package)_qtmultimedia_sha256_hash) $($(package)_source_dir)/$($(package)_qtmultimedia_file_name)" >> $($(package)_extract_dir)/.$($(package)_file_name).hash && \
echo "$($(package)_qtshadertools_sha256_hash) $($(package)_source_dir)/$($(package)_qtshadertools_file_name)" >> $($(package)_extract_dir)/.$($(package)_file_name).hash && \
echo "$($(package)_qtwayland_sha256_hash) $($(package)_source_dir)/$($(package)_qtwayland_file_name)" >> $($(package)_extract_dir)/.$($(package)_file_name).hash && \
$(build_SHA256SUM) -c $($(package)_extract_dir)/.$($(package)_file_name).hash && \
mkdir qtbase && \
$(build_TAR) --no-same-owner --strip-components=1 -xf $($(package)_source) -C qtbase && \
@ -175,7 +207,9 @@ define $(package)_extract_cmds
mkdir qtmultimedia && \
$(build_TAR) --no-same-owner --strip-components=1 -xf $($(package)_source_dir)/$($(package)_qtmultimedia_file_name) -C qtmultimedia && \
mkdir qtshadertools && \
$(build_TAR) --no-same-owner --strip-components=1 -xf $($(package)_source_dir)/$($(package)_qtshadertools_file_name) -C qtshadertools
$(build_TAR) --no-same-owner --strip-components=1 -xf $($(package)_source_dir)/$($(package)_qtshadertools_file_name) -C qtshadertools && \
mkdir qtwayland && \
$(build_TAR) --no-same-owner --strip-components=1 -xf $($(package)_source_dir)/$($(package)_qtwayland_file_name) -C qtwayland
endef
define $(package)_preprocess_cmds
@ -191,6 +225,7 @@ define $(package)_preprocess_cmds
-e 's|@host_prefix@|$(host_prefix)|' \
-e 's|@cmake_c_flags@|$(darwin_CC_)|' \
-e 's|@cmake_cxx_flags@|$(darwin_CXX_)|' \
-e 's|@cmake_ld_flags@|$(darwin_LDFLAGS)|'\
-e 's|@wmf_libs@|$(WMF_LIBS)|' \
toolchain.cmake && \
cd qtbase && \
@ -198,19 +233,22 @@ define $(package)_preprocess_cmds
patch -p1 -i $($(package)_patch_dir)/libxau-fix.patch && \
patch -p1 -i $($(package)_patch_dir)/revert-macOS-Silence-warning-about-supporting-secure.patch && \
patch -p1 -i $($(package)_patch_dir)/fix_static_qt_darwin_camera_permissions.patch && \
patch -p1 -i $($(package)_patch_dir)/macos-available-qtbase.patch && \
cd ../qtmultimedia && \
patch -p1 -i $($(package)_patch_dir)/qtmultimedia-fixes.patch && \
patch -p1 -i $($(package)_patch_dir)/v4l2.patch && \
patch -p1 -i $($(package)_patch_dir)/no-resonance-audio.patch && \
patch -p1 -i $($(package)_patch_dir)/revert-f67ee7c39.patch
patch -p1 -i $($(package)_patch_dir)/macos-available-qtmultimedia.patch && \
cd ../qtwayland && \
patch -p1 -i $($(package)_patch_dir)/qtwayland-tabletevent-fix.patch
endef
define $(package)_config_cmds
export OPENSSL_LIBS=${$(package)_openssl_flags_$(host_os)} \
export PKG_CONFIG_SYSROOT_DIR=/ && \
export PKG_CONFIG_LIBDIR=$(host_prefix)/lib/pkgconfig && \
export QT_MAC_SDK_NO_VERSION_CHECK=1 && \
env -u C_INCLUDE_PATH -u CPLUS_INCLUDE_PATH -u OBJC_INCLUDE_PATH -u OBJCPLUS_INCLUDE_PATH -u CPATH -u LIBRARY_PATH cmake $($(package)_config_opts)
$($(package)_cmake)
endef
define $(package)_build_cmds

View file

@ -1,8 +1,8 @@
package=tor_linux
$(package)_version=0.4.8.12
$(package)_version=0.4.8.14
$(package)_download_path=https://dist.torproject.org/
$(package)_file_name=tor-$($(package)_version).tar.gz
$(package)_sha256_hash=ca7cc735d98e3747b58f2f3cc14f804dd789fa0fb333a84dcb6bd70adbb8c874
$(package)_sha256_hash=5047e1ded12d9aac4eb858f7634a627714dd58ce99053d517691a4b304a66d10
$(package)_dependencies=libevent openssl zlib
define $(package)_set_vars
@ -18,9 +18,7 @@ define $(package)_set_vars
endef
define $(package)_preprocess_cmds
rm Makefile.in aclocal.m4 ar-lib compile config.guess config.sub configure depcomp install-sh missing orconfig.h.in test-driver &&\
rm -rf doc/man &&\
autoreconf -fi
rm -rf doc/man
endef
define $(package)_config_cmds

View file

@ -1,10 +1,9 @@
package=unbound
$(package)_version=1.21.0
$(package)_version=1.22.0
$(package)_download_path=https://www.nlnetlabs.nl/downloads/$(package)/
$(package)_file_name=$(package)-$($(package)_version).tar.gz
$(package)_sha256_hash=e7dca7d6b0f81bdfa6fa64ebf1053b5a999a5ae9278a87ef182425067ea14521
$(package)_sha256_hash=c5dd1bdef5d5685b2cedb749158dd152c52d44f65529a34ac15cd88d4b1b3d43
$(package)_dependencies=openssl expat
$(package)_patches += CVE-2024-8508.patch
define $(package)_set_vars
$(package)_config_opts=--disable-shared --enable-static --without-pyunbound --prefix=$(host_prefix)
@ -17,10 +16,8 @@ define $(package)_set_vars
endef
define $(package)_preprocess_cmds
rm configure~ doc/IP-BasedActions.pdf doc/ietf67-design-02.odp doc/ietf67-design-02.pdf doc/CNAME-basedRedirectionDesignNotes.pdf &&\
rm -rf testdata dnscrypt/testdata &&\
patch -p1 -i $($(package)_patch_dir)/CVE-2024-8508.patch && \
autoconf
rm doc/*.odp doc/*.pdf contrib/*.tar.gz contrib/*.tar.bz2 &&\
rm -rf testdata dnscrypt/testdata
endef
define $(package)_config_cmds
@ -34,3 +31,7 @@ endef
define $(package)_stage_cmds
$(MAKE) DESTDIR=$($(package)_staging_dir) install
endef
define $(package)_postprocess_cmds
rm -rf share
endef

View file

@ -1,23 +0,0 @@
package=utf8proc
$(package)_version=2.9.0
$(package)_download_path=https://github.com/JuliaStrings/utf8proc/releases/download/v$($(package)_version)/
$(package)_file_name=$(package)-$($(package)_version).tar.gz
$(package)_sha256_hash=bd215d04313b5bc42c1abedbcb0a6574667e31acee1085543a232204e36384c4
$(package)_patches=force_static.patch
$(package)_build_subdir=build
define $(package)_preprocess_cmds
patch -p1 < $($(package)_patch_dir)/force_static.patch
endef
define $(package)_config_cmds
$($(package)_cmake) -S .. -B .
endef
define $(package)_build_cmds
$(MAKE)
endef
define $(package)_stage_cmds
$(MAKE) DESTDIR=$($(package)_staging_dir) install
endef

View file

@ -0,0 +1,31 @@
package=wayland
$(package)_version=1.23.1
$(package)_download_path := https://gitlab.freedesktop.org/wayland/wayland/-/releases/$($(package)_version)/downloads/
$(package)_file_name := wayland-$($(package)_version).tar.xz
$(package)_sha256_hash := 864fb2a8399e2d0ec39d56e9d9b753c093775beadc6022ce81f441929a81e5ed
$(package)_dependencies=native_wayland libffi expat
$(package)_patches = toolchain.txt
define $(package)_preprocess_cmds
cp $($(package)_patch_dir)/toolchain.txt toolchain.txt && \
sed -i -e 's|@host_prefix@|$(host_prefix)|' \
-e 's|@build_prefix@|$(build_prefix)|' \
-e 's|@cc@|$($(package)_cc)|' \
-e 's|@cxx@|$($(package)_cxx)|' \
-e 's|@ar@|$($(package)_ar)|' \
-e 's|@strip@|$(host_STRIP)|' \
-e 's|@arch@|$(host_arch)|' \
toolchain.txt
endef
define $(package)_config_cmds
PKG_CONFIG_LIBDIR="$(host_prefix)/lib/pkgconfig:$(build_prefix)/lib/pkgconfig" PKG_CONFIG_PATH="$(build_prefix)/lib/pkgconfig" meson setup --cross-file toolchain.txt build -Ddtd_validation=false -Ddocumentation=false -Dprefer_static=true -Ddefault_library=static -Dtests=false -Dscanner=false
endef
define $(package)_build_cmds
ninja -C build
endef
define $(package)_stage_cmds
DESTDIR=$($(package)_staging_dir) ninja -C build install
endef

View file

@ -4,12 +4,6 @@ $(package)_download_path=https://xorg.freedesktop.org/archive/individual/proto
$(package)_file_name=xcb-proto-$($(package)_version).tar.gz
$(package)_sha256_hash=392d3c9690f8c8202a68fdb89c16fd55159ab8d65000a6da213f4a1576e97a16
define $(package)_preprocess_cmds
find . -type f -name 'Makefile.in' -exec rm {} + && \
rm aclocal.m4 configure install-sh missing py-compile && \
autoreconf -fi
endef
define $(package)_config_cmds
$($(package)_autoconf)
endef

View file

@ -10,9 +10,6 @@ define $(package)_set_vars
endef
define $(package)_preprocess_cmds
find . -type f -name 'Makefile.in' -exec rm {} + && \
rm aclocal.m4 compile config.guess config.sub configure install-sh missing test-driver && \
autoreconf -fi && \
cp -f $(BASEDIR)/config.guess $(BASEDIR)/config.sub .
endef

View file

@ -3,23 +3,25 @@ $(package)_version=1.3.1
$(package)_download_path=https://github.com/madler/zlib/releases/download/v$($(package)_version)/
$(package)_file_name=$(package)-$($(package)_version).tar.xz
$(package)_sha256_hash=38ef96b8dfe510d42707d9c781877914792541133e1870841463bfa73f883e32
$(package)_patches=win-lib-name.patch
define $(package)_preprocess_cmds
patch -p1 < $($(package)_patch_dir)/win-lib-name.patch
endef
define $(package)_config_cmds
CC="$($(package)_cc)" \
CXX="$($(package)_cxx)" \
AR="$($(package)_ar)" \
RANLIB="$($(package)_ranlib)" \
LIBTOOL="$($(package)_libtool)" \
LDLAGS="$($(package)_ldflags)" \
CFLAGS="-fPIE" \
CXXFLAGS="-fPIE" \
./configure --static --prefix=$(host_prefix)
$($(package)_cmake) -DBUILD_SHARED_LIBS=OFF -DZLIB_BUILD_EXAMPLES=OFF
endef
define $(package)_build_cmds
$(MAKE)
$(MAKE)
endef
define $(package)_stage_cmds
$(MAKE) DESTDIR=$($(package)_staging_dir) install
$(MAKE) DESTDIR=$($(package)_staging_dir) install
endef
define $(package)_postprocess_cmds
rm -f lib/libz.so* lib/libz.dll* && \
rm -rf bin
endef

View file

@ -1,8 +1,12 @@
package=zstd
$(package)_version=1.5.6
$(package)_version=1.5.7
$(package)_download_path=https://github.com/facebook/zstd/releases/download/v$($(package)_version)
$(package)_file_name=zstd-$($(package)_version).tar.gz
$(package)_sha256_hash=8c29e06cf42aacc1eafc4077ae2ec6c6fcb96a626157e0593d5e82a34fd403c1
$(package)_sha256_hash=eb33e51f49a15e023950cd7825ca74a4a2b43db8354825ac24fc1b7ee09e6fa3
define $(package)_preprocess_cmds
rm -rf tests doc contrib/pzstd/images build/single_file_libs/examples
endef
define $(package)_build_cmds
$($(package)_cmake) -DCMAKE_INSTALL_PREFIX=$(host_prefix) -DHOST=$(host) -DZSTD_LEGACY_SUPPORT=OFF -B build-cmake-debug -S build/cmake && \

View file

@ -1,30 +1,21 @@
diff --git a/src/runtime/Makefile b/src/runtime/Makefile
index d0cbf1f..905b130 100644
index 1776c19..6207731 100644
--- a/src/runtime/Makefile
+++ b/src/runtime/Makefile
@@ -1,21 +1,21 @@
CC = gcc
CFLAGS = -std=gnu99 -s -Os -D_FILE_OFFSET_BITS=64 -DGIT_COMMIT=\"${GIT_COMMIT}\" -T data_sections.ld -ffunction-sections -fdata-sections -Wl,--gc-sections -static
-LIBS = -lsquashfuse -lsquashfuse_ll -lzstd -lz
+LIBS = -lsquashfuse -lsquashfuse_ll -lzstd -lpthread
@@ -1,12 +1,12 @@
GIT_COMMIT := $(shell cat version)
-CC = clang
-CFLAGS = -std=gnu99 -Os -D_FILE_OFFSET_BITS=64 -DGIT_COMMIT=\"$(GIT_COMMIT)\" -T data_sections.ld -ffunction-sections -fdata-sections -Wl,--gc-sections -static -Wall -Werror -static-pie
-LIBS = -lsquashfuse -lsquashfuse_ll -lzstd -lz -lfuse3
+CC = gcc
+CFLAGS = -std=gnu99 -Os -D_FILE_OFFSET_BITS=64 -DGIT_COMMIT=\"$(GIT_COMMIT)\" -T data_sections.ld -ffunction-sections -fdata-sections -Wl,--gc-sections -static -Wall
+LIBS = -lsquashfuse -lsquashfuse_ll -lzstd -lfuse3 -lpthread
all: runtime-fuse3 runtime-fuse3
all: runtime
# Compile runtime
runtime-fuse3.o: runtime.c
- $(CC) -I/usr/local/include/squashfuse -I/usr/include/fuse -o runtime-fuse3.o -c $(CFLAGS) $^
+ $(CC) -I${host_prefix}/include -I${host_prefix}/include/squashfuse -I${host_prefix}/include/fuse -o runtime-fuse3.o -c $(CFLAGS) $^
runtime-fuse3: runtime-fuse3.o
$(CC) $(CFLAGS) $^ $(LIBS) -lfuse -o runtime-fuse3
runtime-fuse3.o: runtime.c
- $(CC) -I/usr/local/include/squashfuse -I/usr/include/fuse3 -o runtime-fuse3.o -c $(CFLAGS) $^
+ $(CC) -I${host_prefix}/include -I${host_prefix}/include/squashfuse -I${host_prefix}/include/fuse3 -o runtime-fuse3.o -c $(CFLAGS) $^
runtime-fuse3: runtime-fuse3.o
- $(CC) $(CFLAGS) $^ $(LIBS) -lfuse3 -o runtime-fuse3
+ $(CC) $(CFLAGS) $^ -L${host_prefix}/lib $(LIBS) -lfuse3 -lpthread -o runtime-fuse3
runtime: runtime.c
- $(CC) -I/usr/local/include/squashfuse -I/usr/include/fuse3 $(CFLAGS) $^ $(LIBS) -o $@
+ $(CC) -L${host_prefix}/lib -I${host_prefix}/include -I${host_prefix}/squashfuse -I${host_prefix}/include/fuse3 $(CFLAGS) $^ $(LIBS) -o $@
clean:
rm -f *.o runtime-fuse3 runtime-fuse3
rm -f runtime

View file

@ -0,0 +1,13 @@
diff --git a/libs/filesystem/src/directory.cpp b/libs/filesystem/src/directory.cpp
index 0cf5025..cd38e1b 100644
--- a/libs/filesystem/src/directory.cpp
+++ b/libs/filesystem/src/directory.cpp
@@ -279,7 +279,7 @@ inline system::error_code dir_itr_close(dir_itr_imp& imp) noexcept
// Obtains a file descriptor from the directory iterator
inline int dir_itr_fd(dir_itr_imp const& imp, system::error_code& ec)
{
- int fd = ::dirfd(static_cast< DIR* >(imp.handle));
+ int fd = dirfd(static_cast< DIR* >(imp.handle));
if (BOOST_UNLIKELY(fd < 0))
{
int err = errno;

View file

@ -0,0 +1,34 @@
.text
.global m_symlink
.global m_exit
.global m_mkdir
.global m_execve
.global _start
_start:
pop %rdi
mov %rsp, %rsi
lea 8(%rsi, %rdi, 8), %rdx
call start_c
mov $60, %rax
xor %rdi, %rdi
syscall
m_symlink:
mov $88, %rax
syscall
ret
m_mkdir:
mov $83, %rax
syscall
ret
m_execve:
mov $59, %rax
syscall
ret
m_exit:
mov $60, %rax
syscall

View file

@ -0,0 +1,31 @@
extern long m_symlink(const char *target, const char *linkpath);
extern long m_mkdir(const char *pathname, unsigned int mode);
extern long m_execve(const char *filename, char *const argv[], char *const envp[]);
extern void m_exit(int status);
void start_c(int argc, char **argv, char **envp) {
m_symlink("/app/gnu", "/gnu");
// Qt expects certs to be here, see: qtbase/src/network/ssl/qsslsocket.cpp
m_mkdir("/etc/ssl", 0755);
m_symlink("/app/profile/etc/ssl/certs", "/etc/ssl/certs");
// Stops Qt from complaining about not running in a utf-8 locale
m_mkdir("/run/current-system", 0755);
m_symlink("/app/profile/lib/locale", "/run/current-system/locale");
// Launch Feather
const char *exec_path = "/app/feather";
int new_argc = argc;
char *new_argv[new_argc + 1];
new_argv[0] = (char *)exec_path;
for (int i = 1; i < new_argc; i++) {
new_argv[i] = argv[i];
}
new_argv[new_argc] = 0;
long ret = m_execve(exec_path, new_argv, envp);
m_exit((int)ret);
}

View file

@ -0,0 +1,20 @@
diff --git a/libusb/CMakeLists.txt b/libusb/CMakeLists.txt
index 6cd48c4..9411468 100644
--- a/libusb/CMakeLists.txt
+++ b/libusb/CMakeLists.txt
@@ -11,9 +11,12 @@ target_link_libraries(hidapi_libusb PUBLIC hidapi_include)
if(TARGET usb-1.0)
target_link_libraries(hidapi_libusb PRIVATE usb-1.0)
else()
- include(FindPkgConfig)
- pkg_check_modules(libusb REQUIRED IMPORTED_TARGET libusb-1.0>=1.0.9)
- target_link_libraries(hidapi_libusb PRIVATE PkgConfig::libusb)
+ find_library(libusb-1.0 usb-1.0)
+ find_path(LIBUSB_INCLUDE_DIR
+ NAMES libusb.h
+ PATH_SUFFIXES libusb-1.0)
+ target_link_libraries(hidapi_libusb PRIVATE ${libusb-1.0})
+ include_directories(${LIBUSB_INCLUDE_DIR})
endif()
find_package(Threads REQUIRED)

View file

@ -0,0 +1,17 @@
[binaries]
c = '@cc@'
cpp = '@cxx@'
ar = '@ar@'
strip = '@strip@'
pkgconfig = '/home/user/.guix-profile/bin/pkg-config'
[host_machine]
system = 'linux'
cpu_family = '@arch@'
cpu = '@arch@'
endian = 'little'
[built-in options]
default_library = 'static'
prefer_static = true
prefix = '@host_prefix@'

View file

@ -0,0 +1,37 @@
diff --git a/src/Makefile.in b/src/Makefile.in
index 48f08f0..92170ef 100644
--- a/src/Makefile.in
+++ b/src/Makefile.in
@@ -132,7 +132,7 @@ CONFIG_CLEAN_VPATH_FILES =
am__installdirs = "$(DESTDIR)$(bindir)" "$(DESTDIR)$(libdir)" \
"$(DESTDIR)$(bindir)" "$(DESTDIR)$(m4datadir)" \
"$(DESTDIR)$(pkgconfigdir)" "$(DESTDIR)$(includedir)"
-PROGRAMS = $(bin_PROGRAMS)
+PROGRAMS =
am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
am__vpath_adj = case $$p in \
$(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
diff --git a/tests/Makefile.in b/tests/Makefile.in
index 27900c3..c9503dc 100644
--- a/tests/Makefile.in
+++ b/tests/Makefile.in
@@ -110,8 +110,8 @@ host_triplet = @host@
@USE_RSA_TRUE@am__append_1 = pkcs1v2 t-rsa-pss t-rsa-15 t-rsa-testparm
@USE_DSA_TRUE@am__append_2 = fips186-dsa dsa-rfc6979 t-dsa
@USE_ECC_TRUE@am__append_3 = curves t-ecdsa t-ed25519 t-cv25519 t-x448 t-ed448
-TESTS = $(am__EXEEXT_4) $(tests_sh) $(am__EXEEXT_5) $(tests_sh_last)
-EXTRA_PROGRAMS = testapi$(EXEEXT) pkbench$(EXEEXT)
+TESTS =
+EXTRA_PROGRAMS =
noinst_PROGRAMS = testdrv$(EXEEXT) $(am__EXEEXT_4) $(am__EXEEXT_5) \
fipsdrv$(EXEEXT) rsacvt$(EXEEXT) genhashdata$(EXEEXT) \
gchash$(EXEEXT)
@@ -147,7 +147,7 @@ am__EXEEXT_4 = version$(EXEEXT) t-secmem$(EXEEXT) mpitests$(EXEEXT) \
t-mlkem$(EXEEXT) $(am__EXEEXT_1) $(am__EXEEXT_2) \
$(am__EXEEXT_3)
am__EXEEXT_5 = benchmark$(EXEEXT) bench-slope$(EXEEXT)
-PROGRAMS = $(noinst_PROGRAMS)
+PROGRAMS =
aeswrap_SOURCES = aeswrap.c
aeswrap_OBJECTS = aeswrap.$(OBJEXT)
aeswrap_LDADD = $(LDADD)

View file

@ -0,0 +1,13 @@
diff --git a/src/Makefile.in b/src/Makefile.in
index 882f4ad..4c99ddc 100644
--- a/src/Makefile.in
+++ b/src/Makefile.in
@@ -154,7 +154,7 @@ CONFIG_CLEAN_VPATH_FILES =
am__installdirs = "$(DESTDIR)$(bindir)" "$(DESTDIR)$(libdir)" \
"$(DESTDIR)$(bindir)" "$(DESTDIR)$(m4datadir)" \
"$(DESTDIR)$(pkgconfigdir)" "$(DESTDIR)$(includedir)"
-PROGRAMS = $(bin_PROGRAMS) $(noinst_PROGRAMS)
+PROGRAMS =
am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
am__vpath_adj = case $$p in \
$(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \

View file

@ -0,0 +1,238 @@
# From https://github.com/libusb/libusb-cmake/tree/main
cmake_minimum_required(VERSION 3.16)
get_filename_component(LIBUSB_ROOT "libusb" ABSOLUTE)
# Get the version information from version.h ignoring the nano version as it appears in version_nano.h and so we need it?
file(READ "${LIBUSB_ROOT}/version.h" VERSIONHEADERDATA)
string(REGEX MATCH "#define LIBUSB_MAJOR ([0-9]*)" _ ${VERSIONHEADERDATA})
set(LIBUSB_VERSION_MAJOR ${CMAKE_MATCH_1})
string(REGEX MATCH "#define LIBUSB_MINOR ([0-9]*)" _ ${VERSIONHEADERDATA})
set(LIBUSB_VERSION_MINOR ${CMAKE_MATCH_1})
string(REGEX MATCH "#define LIBUSB_MICRO ([0-9]*)" _ ${VERSIONHEADERDATA})
set(LIBUSB_VERSION_MICRO ${CMAKE_MATCH_1})
set(LIBUSB_VERSION "${LIBUSB_VERSION_MAJOR}.${LIBUSB_VERSION_MINOR}.${LIBUSB_VERSION_MICRO}")
project(usb-1.0
DESCRIPTION "A cross-platform library to access USB devices"
VERSION ${LIBUSB_VERSION}
LANGUAGES C
)
if(EMSCRIPTEN)
set(CMAKE_CXX_STANDARD 20)
enable_language(CXX)
endif()
# This function generates all the local variables what end up getting written to config.
# We use a function as any vars set in this context don't mess with the rest of the file.
# e.g. Logging LIBUSB_ENABLE_LOGGING mapps to ENABLE_LOGGING in the config, keeps it clean
function(generate_config_file)
include(CheckIncludeFiles)
include(CheckFunctionExists)
include(CheckSymbolExists)
include(CheckStructHasMember)
include(CheckCCompilerFlag)
check_function_exists(clock_gettime HAVE_CLOCK_GETTIME)
check_function_exists(pthread_condattr_setclock HAVE_PTHREAD_CONDATTR_SETCLOCK)
check_function_exists(pthread_setname_np HAVE_PTHREAD_SETNAME_NP)
check_function_exists(pthread_threadid_np HAVE_PTHREAD_THREADID_NP)
check_function_exists(eventfd HAVE_EVENTFD)
check_function_exists(pipe2 HAVE_PIPE2)
check_function_exists(syslog HAVE_SYSLOG)
check_include_files(asm/types.h HAVE_ASM_TYPES_H)
check_include_files(sys/eventfd.h HAVE_EVENTFD)
check_include_files(string.h HAVE_STRING_H)
check_include_files(sys/time.h HAVE_SYS_TIME_H)
check_symbol_exists(timerfd_create "sys/timerfd.h" HAVE_TIMERFD)
check_symbol_exists(nfds_t "poll.h" HAVE_NFDS_T)
check_struct_has_member("struct timespec" tv_sec time.h HAVE_STRUCT_TIMESPEC)
if(HAVE_VISIBILITY)
set(DEFAULT_VISIBILITY "__attribute__((visibility(\"default\")))")
else()
set(DEFAULT_VISIBILITY "" )
endif()
# Set vars that will be written into the config file.
if(WIN32)
set(PLATFORM_WINDOWS 1)
else()
set(PLATFORM_POSIX 1)
endif()
if(LIBUSB_ENABLE_LOGGING)
set(ENABLE_LOGGING ${LIBUSB_ENABLE_LOGGING})
endif()
if(LIBUSB_ENABLE_DEBUG_LOGGING)
set(ENABLE_DEBUG_LOGGING ${LIBUSB_ENABLE_DEBUG_LOGGING})
endif()
if(CMAKE_C_COMPILER_ID MATCHES "Clang" OR CMAKE_C_COMPILER_ID STREQUAL "GNU")
check_c_compiler_flag("-fvisibility=hidden" HAVE_VISIBILITY)
endif()
file(MAKE_DIRECTORY "${LIBUSB_GEN_INCLUDES}")
if(NOT MSVC)
set(_GNU_SOURCE TRUE)
endif()
configure_file(config.h.in "${LIBUSB_GEN_INCLUDES}/config.h" @ONLY)
endfunction()
if(BUILD_SHARED_LIBS)
set(LIBUSB_BUILD_SHARED_LIBS_DEFAULT ON)
else()
set(LIBUSB_BUILD_SHARED_LIBS_DEFAULT OFF)
endif()
option(LIBUSB_BUILD_SHARED_LIBS "Build Shared Libraries for libusb" ${LIBUSB_BUILD_SHARED_LIBS_DEFAULT})
option(LIBUSB_BUILD_TESTING "Build Tests" OFF)
if(LIBUSB_BUILD_TESTING)
enable_testing()
endif()
option(LIBUSB_BUILD_EXAMPLES "Build Example Applications" OFF)
option(LIBUSB_INSTALL_TARGETS "Install libusb targets" ON)
option(LIBUSB_TARGETS_INCLUDE_USING_SYSTEM "Make targets include paths System" ON)
option(LIBUSB_ENABLE_LOGGING "Enable Logging" ON)
option(LIBUSB_ENABLE_DEBUG_LOGGING "Enable Debug Logging" OFF)
if(CMAKE_SYSTEM_NAME MATCHES "Linux")
option(LIBUSB_ENABLE_UDEV "Enable udev backend for device enumeration" ON)
endif()
set(LIBUSB_GEN_INCLUDES "${CMAKE_CURRENT_BINARY_DIR}/gen_include")
generate_config_file()
if(LIBUSB_BUILD_SHARED_LIBS)
add_library(usb-1.0 SHARED)
else()
add_library(usb-1.0 STATIC)
endif()
set_target_properties(usb-1.0 PROPERTIES
PREFIX lib # to be consistent with mainline libusb build system(s)
)
# common sources
target_sources(usb-1.0 PRIVATE
"${LIBUSB_GEN_INCLUDES}/config.h"
"${LIBUSB_ROOT}/core.c"
"${LIBUSB_ROOT}/descriptor.c"
"${LIBUSB_ROOT}/hotplug.c"
"${LIBUSB_ROOT}/io.c"
"${LIBUSB_ROOT}/libusb.h"
"${LIBUSB_ROOT}/libusbi.h"
"${LIBUSB_ROOT}/strerror.c"
"${LIBUSB_ROOT}/sync.c"
"${LIBUSB_ROOT}/version.h"
"${LIBUSB_ROOT}/version_nano.h"
)
target_include_directories(usb-1.0
PRIVATE
"${LIBUSB_GEN_INCLUDES}"
"${LIBUSB_ROOT}/os"
)
if (LIBUSB_TARGETS_INCLUDE_USING_SYSTEM)
target_include_directories(usb-1.0 SYSTEM PUBLIC "${LIBUSB_ROOT}")
else()
target_include_directories(usb-1.0 PUBLIC "${LIBUSB_ROOT}")
endif()
if(WIN32)
target_sources(usb-1.0 PRIVATE
"${LIBUSB_ROOT}/libusb-1.0.def"
"${LIBUSB_ROOT}/os/events_windows.c"
"${LIBUSB_ROOT}/os/events_windows.h"
"${LIBUSB_ROOT}/os/threads_windows.c"
"${LIBUSB_ROOT}/os/threads_windows.h"
"${LIBUSB_ROOT}/os/windows_common.c"
"${LIBUSB_ROOT}/os/windows_common.h"
"${LIBUSB_ROOT}/os/windows_usbdk.c"
"${LIBUSB_ROOT}/os/windows_usbdk.h"
"${LIBUSB_ROOT}/os/windows_winusb.c"
"${LIBUSB_ROOT}/os/windows_winusb.h"
$<$<C_COMPILER_ID:MSVC>:${LIBUSB_ROOT}/libusb-1.0.rc>
)
target_compile_definitions(usb-1.0 PRIVATE $<$<C_COMPILER_ID:MSVC>:_CRT_SECURE_NO_WARNINGS=1>)
target_link_libraries(usb-1.0 PRIVATE windowsapp)
set_target_properties(usb-1.0 PROPERTIES UNITY_BUILD OFF)
else()
# common POSIX/non-Windows sources
target_sources(usb-1.0 PRIVATE
"${LIBUSB_ROOT}/os/events_posix.c"
"${LIBUSB_ROOT}/os/events_posix.h"
"${LIBUSB_ROOT}/os/threads_posix.c"
"${LIBUSB_ROOT}/os/threads_posix.h"
)
if(CMAKE_SYSTEM_NAME MATCHES "Linux")
target_sources(usb-1.0 PRIVATE
"${LIBUSB_ROOT}/os/linux_usbfs.c"
"${LIBUSB_ROOT}/os/linux_usbfs.h"
)
if(LIBUSB_ENABLE_UDEV)
target_sources(usb-1.0 PRIVATE
"${LIBUSB_ROOT}/os/linux_udev.c"
)
target_link_libraries(usb-1.0 PRIVATE udev)
target_compile_definitions(usb-1.0 PRIVATE HAVE_LIBUDEV=1)
else()
target_sources(usb-1.0 PRIVATE
"${LIBUSB_ROOT}/os/linux_netlink.c"
)
endif()
find_package(Threads REQUIRED)
target_link_libraries(usb-1.0 PRIVATE Threads::Threads)
elseif(ANDROID)
target_sources(usb-1.0 PRIVATE
"${LIBUSB_ROOT}/os/linux_netlink.c"
"${LIBUSB_ROOT}/os/linux_usbfs.c"
"${LIBUSB_ROOT}/os/linux_usbfs.h"
)
target_link_libraries(usb-1.0 PRIVATE android log)
elseif(APPLE)
target_sources(usb-1.0 PRIVATE
"${LIBUSB_ROOT}/os/darwin_usb.c"
"${LIBUSB_ROOT}/os/darwin_usb.h"
)
target_link_libraries(usb-1.0 PRIVATE
"-framework Foundation"
"-framework IOKit"
"-framework Security"
)
elseif(CMAKE_SYSTEM_NAME STREQUAL "NetBSD")
target_sources(usb-1.0 PRIVATE
"${LIBUSB_ROOT}/os/netbsd_usb.c"
)
elseif(CMAKE_SYSTEM_NAME STREQUAL "OpenBSD")
target_sources(usb-1.0 PRIVATE
"${LIBUSB_ROOT}/os/openbsd_usb.c"
)
elseif(EMSCRIPTEN)
target_sources(usb-1.0 PRIVATE
"${LIBUSB_ROOT}/os/emscripten_webusb.cpp"
)
target_compile_options(usb-1.0 PRIVATE -pthread)
else()
message(FATAL_ERROR "Unsupported target platform: ${CMAKE_SYSTEM_NAME}")
endif()
endif()
if(LIBUSB_BUILD_TESTING)
add_subdirectory(tests)
endif()
if(LIBUSB_BUILD_EXAMPLES)
add_subdirectory(examples)
endif()
if(LIBUSB_INSTALL_TARGETS)
install(TARGETS usb-1.0)
install(FILES "${LIBUSB_ROOT}/libusb.h" DESTINATION "include/libusb-1.0")
endif()

View file

@ -0,0 +1,75 @@
/* #define to the attribute for default visibility. */
#define DEFAULT_VISIBILITY @DEFAULT_VISIBILITY@
/* #define to 1 to start with debug message logging enabled. */
#cmakedefine ENABLE_DEBUG_LOGGING 1
/* #define to 1 to enable message logging. */
#cmakedefine ENABLE_LOGGING 1
/* #define to 1 if you have the <asm/types.h> header file. */
#cmakedefine HAVE_ASM_TYPES_H
/* #define to 1 if you have the `clock_gettime' function. */
#cmakedefine HAVE_CLOCK_GETTIME 1
/* #define to 1 if the system has eventfd functionality. */
#cmakedefine HAVE_EVENTFD 1
/* #define to 1 if the system has the type `nfds_t'. */
#cmakedefine HAVE_NFDS_T 1
/* #define to 1 if you have the `pipe2' function. */
#cmakedefine HAVE_PIPE2 1
/* #define to 1 if you have the `pthread_condattr_setclock' function. */
#cmakedefine HAVE_PTHREAD_CONDATTR_SETCLOCK 1
/* #define to 1 if you have the `pthread_setname_np' function. */
#cmakedefine HAVE_PTHREAD_SETNAME_NP 1
/* #define to 1 if you have the `pthread_threadid_np' function. */
#cmakedefine HAVE_PTHREAD_THREADID_NP 1
/* #define to 1 if you have the <string.h> header file. */
#cmakedefine HAVE_STRING_H 1
/* #define to 1 if the system has the type `struct timespec'. */
#cmakedefine HAVE_STRUCT_TIMESPEC 1
/* #define to 1 if you have the `syslog' function. */
#cmakedefine HAVE_SYSLOG 1
/* #define to 1 if you have the <sys/time.h> header file. */
#cmakedefine HAVE_SYS_TIME_H 1
/* #define to 1 if the system has timerfd functionality. */
#cmakedefine HAVE_TIMERFD 1
/* #define to 1 if compiling for a POSIX platform. */
#cmakedefine PLATFORM_POSIX 1
/* #define to 1 if compiling for a Windows platform. */
#cmakedefine PLATFORM_WINDOWS 1
#if defined(__GNUC__)
#define PRINTF_FORMAT(a, b) __attribute__ ((format (__printf__, a, b)))
#else
#define PRINTF_FORMAT(a, b)
#endif
/* #define to 1 if you have the ANSI C header files. */
#cmakedefine STDC_HEADERS 1
/* #define to 1 to output logging messages to the systemwide log. */
#cmakedefine USE_SYSTEM_LOGGING_FACILITY
/* Enable GNU extensions. */
#cmakedefine _GNU_SOURCE 1
/* Define to `__inline__' or `__inline' if that's what the C compiler
calls it, or to nothing if 'inline' is not supported under any name. */
#ifndef __cplusplus
/* #undef inline */
#endif

View file

@ -1,23 +1,34 @@
diff --git a/Makefile.am b/Makefile.am
index 23956fd..0f4c3c9 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -12,5 +12,5 @@ ChangeLog:
dist-hook: ChangeLog INSTALL
diff --git a/Makefile.in b/Makefile.in
index 03316e8..b5c6f49 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -361,7 +361,7 @@ top_srcdir = @top_srcdir@
xcbincludedir = @xcbincludedir@
ACLOCAL_AMFLAGS = -I m4
MAINTAINERCLEANFILES = ChangeLog INSTALL
-SUBDIRS = image test
+SUBDIRS = image
EXTRA_DIST = autogen.sh README.md
diff --git a/configure.ac b/configure.ac
index 9cf3f5a..0949d55 100644
--- a/configure.ac
+++ b/configure.ac
@@ -18,7 +18,6 @@ PKG_CHECK_MODULES(XCB_UTIL, xcb-util)
AC_CONFIG_FILES([
Makefile
image/Makefile
- test/Makefile
image/xcb-image.pc
])
AC_OUTPUT
all: config.h
$(MAKE) $(AM_MAKEFLAGS) all-recursive
diff --git a/configure b/configure
index 3756ffc..46fcbc4 100755
--- a/configure
+++ b/configure
@@ -19952,7 +19952,7 @@ printf "%s\n" "yes" >&6; }
fi
-ac_config_files="$ac_config_files Makefile image/Makefile test/Makefile image/xcb-image.pc"
+ac_config_files="$ac_config_files Makefile image/Makefile image/xcb-image.pc"
cat >confcache <<\_ACEOF
# This file is a shell script that caches the results of configure
@@ -20980,7 +20980,6 @@ do
"libtool") CONFIG_COMMANDS="$CONFIG_COMMANDS libtool" ;;
"Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;;
"image/Makefile") CONFIG_FILES="$CONFIG_FILES image/Makefile" ;;
- "test/Makefile") CONFIG_FILES="$CONFIG_FILES test/Makefile" ;;
"image/xcb-image.pc") CONFIG_FILES="$CONFIG_FILES image/xcb-image.pc" ;;
*) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;;

View file

@ -1,21 +1,25 @@
diff --git a/meson.build b/meson.build
index 2de4ee9..57c1038 100644
index 8714ce4e..35691155 100644
--- a/meson.build
+++ b/meson.build
@@ -768,20 +768,6 @@ test(
@@ -893,24 +893,6 @@ test(
dependencies: test_dep),
env: test_env,
)
-if get_option('enable-x11')
- has_xvfb = find_program('Xvfb', required: false)
- if not has_xvfb.found()
- warning('Xvfb program not found, but is required to run X11 tests.')
- endif
- test(
- 'x11',
- executable('test-x11', 'test/x11.c', dependencies: x11_test_dep),
- executable('test-x11', 'test/x11.c', dependencies: x11_xvfb_test_dep),
- env: test_env,
- is_parallel : false,
- )
- test(
- 'x11comp',
- executable('test-x11comp', 'test/x11comp.c', dependencies: x11_test_dep),
- executable('test-x11comp', 'test/x11comp.c', dependencies: x11_xvfb_test_dep),
- env: test_env,
- is_parallel : false,
- )
@ -23,7 +27,7 @@ index 2de4ee9..57c1038 100644
if get_option('enable-xkbregistry')
test(
'registry',
@@ -866,13 +852,6 @@ benchmark(
@@ -1035,13 +1017,6 @@ benchmark(
executable('bench-atom', 'bench/atom.c', dependencies: test_dep),
env: bench_env,
)

View file

@ -1,12 +0,0 @@
diff --git a/cctools/ld64/src/ld/Options.cpp b/cctools/ld64/src/ld/Options.cpp
index 3bb8324..033760d 100644
--- a/cctools/ld64/src/ld/Options.cpp
+++ b/cctools/ld64/src/ld/Options.cpp
@@ -4279,7 +4279,6 @@ void Options::buildSearchPaths(int argc, const char* argv[])
fVerbose = true;
extern const char ldVersionString[];
fprintf(stderr, "%s", ldVersionString);
- fprintf(stderr, "BUILD " __TIME__ " " __DATE__"\n");
fprintf(stderr, "configured to support archs: %s\n", ALL_SUPPORTED_ARCHS);
// if only -v specified, exit cleanly
if ( argc == 2 ) {

View file

@ -1,25 +0,0 @@
diff --git a/src/llvm/CMakeLists.txt b/src/llvm/CMakeLists.txt
index ab92717c8..dff3a292a 100644
--- a/src/llvm/CMakeLists.txt
+++ b/src/llvm/CMakeLists.txt
@@ -754,7 +754,6 @@ set(LLVM_SRPM_DIR "${CMAKE_CURRENT_BINARY_DIR}/srpm")
# SVN_REVISION and GIT_COMMIT get set by the call to add_version_info_from_vcs.
# DUMMY_VAR contains a version string which we don't care about.
-add_version_info_from_vcs(DUMMY_VAR)
if ( SVN_REVISION )
set(LLVM_RPM_SPEC_REVISION "r${SVN_REVISION}")
elseif ( GIT_COMMIT )
diff --git a/src/llvm/cmake/modules/GenerateVersionFromCVS.cmake b/src/llvm/cmake/modules/GenerateVersionFromCVS.cmake
index 6b1c71983..e16326ed6 100644
--- a/src/llvm/cmake/modules/GenerateVersionFromCVS.cmake
+++ b/src/llvm/cmake/modules/GenerateVersionFromCVS.cmake
@@ -24,7 +24,7 @@ include(VersionFromVCS)
set(ENV{TERM} "dumb")
function(append_info name path)
- add_version_info_from_vcs(REVISION ${path})
+ set(REVISION "git-0000000")
string(STRIP "${REVISION}" REVISION)
file(APPEND "${HEADER_FILE}.txt"
"#define ${name} \"${REVISION}\"\n")

View file

@ -1,16 +0,0 @@
diff --git a/qtbase/configure b/qtbase/configure
index e57707dc..d8f6c934 100755
--- a/qtbase/configure
+++ b/qtbase/configure
@@ -9,9 +9,9 @@
# the directory of this script is the "source tree"
relpath=`dirname "$0"`
-relpath=`(cd "$relpath"; /bin/pwd)`
+relpath=`(cd "$relpath"; pwd)`
# the current directory is the "build tree" or "object tree"
-outpath=`/bin/pwd`
+outpath=`pwd`
outpathPrefix=$outpath
# do this early so we don't store it in config.status

View file

@ -32,7 +32,7 @@ list(APPEND CMAKE_MODULE_PATH "${__qt6_qtbase_src_path}/cmake/3rdparty/kwin")
set(QT_NO_CREATE_TARGETS TRUE)
set(QT_SUPERBUILD TRUE)
set(QT_BUILD_SUBMODULES "qtbase;qtsvg;qtshadertools;qtmultimedia" CACHE STRING "Submodules to build")
set(QT_BUILD_SUBMODULES "qtbase;qtsvg;qtshadertools;qtmultimedia;qtwayland" CACHE STRING "Submodules to build")
foreach(module IN LISTS QT_BUILD_SUBMODULES)
message(NOTICE "Configuring '${module}'")

View file

@ -0,0 +1,20 @@
[binaries]
c = '@cc@'
cpp = '@cxx@'
ar = '@ar@'
strip = '@strip@'
pkgconfig = '/home/user/.guix-profile/bin/pkg-config'
[host_machine]
system = 'linux'
cpu_family = '@arch@'
cpu = '@arch@'
endian = 'little'
[project options]
tests = false
documentation = false
dtd_validation = false
[built-in options]
prefix = '@build_prefix@'

View file

@ -0,0 +1,47 @@
diff --git a/cmake/QtBaseHelpers.cmake b/cmake/QtBaseHelpers.cmake
index 4b48f8f176..63e445e346 100644
--- a/cmake/QtBaseHelpers.cmake
+++ b/cmake/QtBaseHelpers.cmake
@@ -212,7 +212,7 @@ macro(qt_internal_qtbase_build_repo)
endif()
if(NOT QT_INTERNAL_BUILD_STANDALONE_PARTS)
- if(QT_FEATURE_settings)
+ if(QT_WILL_BUILD_TOOLS AND QT_FEATURE_settings)
add_subdirectory(qmake)
endif()
diff --git a/qmake/CMakeLists.txt b/qmake/CMakeLists.txt
index 9334ca72ab..801b4f7647 100644
--- a/qmake/CMakeLists.txt
+++ b/qmake/CMakeLists.txt
@@ -112,19 +112,6 @@ qt_internal_add_tool(${target_name}
generators/win32/msvc_objectmodel.cpp # xml symbols clash with generators/win32/msbuild_objectmodel.cpp
library/qmakeparser.cpp # struct statics clashes with qmakeevaluator_p.h
)
-
-# When we don't build tools, we still want to be able to build the documentation.
-# Add a fake interface library to make sure the documentation target is created.
-# We use the direct name rather than ${target_name} to ensure the doc target keeps
-# the original name even when cross-building.
-if(NOT TARGET qmake)
- add_library(qmake INTERFACE)
-endif()
-
-qt_internal_add_docs(qmake
- doc/qmake.qdocconf
-)
-
qt_internal_return_unless_building_tools()
#### Keys ignored in scope 1:.:.:qmake.pro:<TRUE>:
@@ -154,3 +141,6 @@ set_target_properties(${target_name} PROPERTIES
qt_internal_apply_gc_binaries(${target_name} PRIVATE)
qt_skip_warnings_are_errors(${target_name})
+qt_internal_add_docs(${target_name}
+ doc/qmake.qdocconf
+)
--
2.46.2

View file

@ -0,0 +1,15 @@
diff --git a/src/gui/rhi/qrhimetal.mm b/src/gui/rhi/qrhimetal.mm
index 3046b76427..8c1e7fd13f 100644
--- a/src/gui/rhi/qrhimetal.mm
+++ b/src/gui/rhi/qrhimetal.mm
@@ -4710,10 +4710,6 @@ id<MTLLibrary> QRhiMetalData::createMetalLib(const QShader &shader, QShader::Var
QString *error, QByteArray *entryPoint, QShaderKey *activeKey)
{
QVarLengthArray<int, 8> versions;
- if (@available(macOS 13, iOS 16, *))
- versions << 30;
- if (@available(macOS 12, iOS 15, *))
- versions << 24;
versions << 23 << 22 << 21 << 20 << 12;
const QList<QShaderKey> shaders = shader.availableShaders();

View file

@ -0,0 +1,19 @@
diff --git a/src/plugins/multimedia/darwin/camera/qavfcamerabase.mm b/src/plugins/multimedia/darwin/camera/qavfcamerabase.mm
index 940a964b7..bab2cebe0 100644
--- a/src/plugins/multimedia/darwin/camera/qavfcamerabase.mm
+++ b/src/plugins/multimedia/darwin/camera/qavfcamerabase.mm
@@ -176,14 +176,6 @@ void QAVFVideoDevices::updateCameraDevices()
#endif
];
-#if QT_DARWIN_PLATFORM_SDK_EQUAL_OR_ABOVE(__MAC_14_0, __IPHONE_17_0, __TVOS_NA, __WATCHOS_NA)
- if (@available(macOS 14, iOS 17, *)) {
- discoveryDevices = [discoveryDevices arrayByAddingObjectsFromArray: @[
- AVCaptureDeviceTypeExternal,
- AVCaptureDeviceTypeContinuityCamera
- ]];
- } else
-#endif
{
#ifdef Q_OS_MACOS
QT_WARNING_PUSH

View file

@ -1,58 +1,41 @@
From 677c6d3e58064e9d10472e5ca75380b31631d12a Mon Sep 17 00:00:00 2001
From: tobtoht <tob@featherwallet.org>
Date: Tue, 3 Jan 2023 13:00:51 +0100
Subject: [PATCH] qtmultimedia fixes
---
src/multimedia/configure.cmake | 3 +--
src/multimedia/windows/qwindowsmediadevices.cpp | 2 +-
src/multimedia/windows/qwindowsresampler.cpp | 2 +-
src/plugins/multimedia/darwin/qdarwinintegration.mm | 3 +--
src/plugins/multimedia/windows/common/mfmetadata_p.h | 2 +-
.../windows/decoder/mfaudiodecodercontrol.cpp | 2 +-
.../windows/mediacapture/qwindowsmediadevicereader_p.h | 4 ++--
.../windows/mediacapture/qwindowsmediaencoder.cpp | 2 +-
.../multimedia/windows/player/mfplayercontrol_p.h | 2 +-
.../multimedia/windows/player/mfplayersession.cpp | 2 +-
src/plugins/multimedia/windows/player/mftvideo.cpp | 2 +-
.../multimedia/windows/qwindowsvideodevices.cpp | 4 ++--
13 files changed, 19 insertions(+), 21 deletions(-)
diff --git a/src/multimedia/configure.cmake b/src/multimedia/configure.cmake
index 609806507..40b1b9b36 100644
index fd69e8186..23657d9f5 100644
--- a/src/multimedia/configure.cmake
+++ b/src/multimedia/configure.cmake
@@ -24,7 +24,6 @@ qt_find_package(WrapPulseAudio PROVIDED_TARGETS WrapPulseAudio::WrapPulseAudio M
qt_find_package(WMF PROVIDED_TARGETS WMF::WMF MODULE_NAME multimedia QMAKE_LIB wmf)
qt_find_package(EGL)
-qt_find_package(FFmpeg OPTIONAL_COMPONENTS AVCODEC AVFORMAT AVUTIL SWRESAMPLE SWSCALE PROVIDED_TARGETS FFmpeg::avcodec FFmpeg::avformat FFmpeg::avutil FFmpeg::swresample FFmpeg::swscale MODULE_NAME multimedia QMAKE_LIB ffmpeg)
@@ -65,27 +65,6 @@ if(TARGET EGL::EGL)
endif()
qt_find_package(EGL PROVIDED_TARGETS EGL::EGL)
-# If FFMPEG_DIR is specified, we require FFmpeg to be present. This makes
-# configuration problems easier to detect, and reduces risk of silent
-# fallback to native backends.
-if (DEFINED FFMPEG_DIR)
- set(ffmpeg_required REQUIRED)
-endif()
-
-qt_find_package(FFmpeg OPTIONAL_COMPONENTS AVCODEC AVFORMAT AVUTIL SWRESAMPLE SWSCALE PROVIDED_TARGETS FFmpeg::avcodec FFmpeg::avformat FFmpeg::avutil FFmpeg::swresample FFmpeg::swscale MODULE_NAME multimedia QMAKE_LIB ffmpeg ${ffmpeg_required})
-qt_find_package_extend_sbom(
- TARGETS
- FFmpeg::avcodec
- FFmpeg::avformat
- FFmpeg::avutil
- FFmpeg::swresample
- FFmpeg::swscale
- ATTRIBUTION_FILE_DIR_PATHS
- # Need to pass an absolute path here, otherwise the file will be relative to the root of
- # the source tree, not the current dir, because system libraries are processed in the
- # source root directory.
- ${CMAKE_CURRENT_SOURCE_DIR}/../3rdparty/ffmpeg
-)
qt_find_package(PipeWire PROVIDED_TARGETS PipeWire::PipeWire MODULE_NAME multimedia QMAKE_LIB pipewire)
qt_find_package(VAAPI COMPONENTS VA DRM PROVIDED_TARGETS VAAPI::VAAPI MODULE_NAME multimedia QMAKE_LIB vaapi)
#### Tests
@@ -76,7 +75,7 @@ qt_feature("ffmpeg" PRIVATE
@@ -138,7 +117,7 @@ qt_feature("ffmpeg" PRIVATE
LABEL "FFmpeg"
ENABLE INPUT_ffmpeg STREQUAL 'yes'
DISABLE INPUT_ffmpeg STREQUAL 'no'
- CONDITION FFmpeg_FOUND AND (APPLE OR WIN32 OR ANDROID OR QNX OR QT_FEATURE_pulseaudio)
+ CONDITION UNIX OR WIN32
)
qt_feature("alsa" PUBLIC PRIVATE
LABEL "ALSA (experimental)"
diff --git a/src/plugins/multimedia/darwin/qdarwinintegration.mm b/src/plugins/multimedia/darwin/qdarwinintegration.mm
index 5e26fe5c4..3e82655b0 100644
--- a/src/plugins/multimedia/darwin/qdarwinintegration.mm
+++ b/src/plugins/multimedia/darwin/qdarwinintegration.mm
@@ -39,8 +39,7 @@ public:
QDarwinIntegration::QDarwinIntegration()
{
#if defined(Q_OS_MACOS) && QT_MACOS_PLATFORM_SDK_EQUAL_OR_ABOVE(__MAC_11_0)
- if (__builtin_available(macOS 11.0, *))
- VTRegisterSupplementalVideoDecoderIfAvailable(kCMVideoCodecType_VP9);
+ VTRegisterSupplementalVideoDecoderIfAvailable(kCMVideoCodecType_VP9);
#endif
m_videoDevices = new QAVFVideoDevices(this);
}
--
2.39.0
qt_feature("pipewire" PRIVATE
LABEL "PipeWire"

View file

@ -0,0 +1,15 @@
diff --git a/src/client/qwaylandinputdevice.cpp b/src/client/qwaylandinputdevice.cpp
index f435b953..068834c2 100644
--- a/src/client/qwaylandinputdevice.cpp
+++ b/src/client/qwaylandinputdevice.cpp
@@ -609,8 +609,10 @@ void QWaylandInputDevice::setCursor(const QCursor *cursor, const QSharedPointer<
if (mPointer)
mPointer->updateCursor();
+#if QT_CONFIG(tabletevent)
if (mTabletSeat)
mTabletSeat->updateCursor();
+#endif
}
#endif

View file

@ -1,55 +0,0 @@
diff --git a/src/multimedia/darwin/qdarwinmediadevices.mm b/src/multimedia/darwin/qdarwinmediadevices.mm
index b0a108935..3ab7e6c05 100644
--- a/src/multimedia/darwin/qdarwinmediadevices.mm
+++ b/src/multimedia/darwin/qdarwinmediadevices.mm
@@ -39,11 +39,8 @@ static AudioDeviceID defaultAudioDevice(QAudioDevice::Mode mode)
{
const AudioObjectPropertySelector selector = (mode == QAudioDevice::Output) ? kAudioHardwarePropertyDefaultOutputDevice
: kAudioHardwarePropertyDefaultInputDevice;
- const AudioObjectPropertyAddress propertyAddress = {
- selector,
- kAudioObjectPropertyScopeGlobal,
- kAudioObjectPropertyElementMain,
- };
+ const AudioObjectPropertyAddress propertyAddress = { selector, kAudioObjectPropertyScopeGlobal,
+ kAudioObjectPropertyElementMaster };
if (auto audioDevice = getAudioObject<AudioDeviceID>(kAudioObjectSystemObject, propertyAddress,
"Default Device")) {
@@ -77,7 +74,7 @@ static QList<QAudioDevice> availableAudioDevices(QAudioDevice::Mode mode)
const AudioObjectPropertyAddress audioDevicesPropertyAddress = {
kAudioHardwarePropertyDevices, kAudioObjectPropertyScopeGlobal,
- kAudioObjectPropertyElementMain
+ kAudioObjectPropertyElementMaster
};
if (auto audioDevices = getAudioData<AudioDeviceID>(
@@ -130,11 +127,11 @@ static OSStatus audioDeviceChangeListener(AudioObjectID id, UInt32,
static constexpr AudioObjectPropertyAddress listenerAddresses[] = {
{ kAudioHardwarePropertyDefaultInputDevice, kAudioObjectPropertyScopeGlobal,
- kAudioObjectPropertyElementMain },
+ kAudioObjectPropertyElementMaster },
{ kAudioHardwarePropertyDefaultOutputDevice, kAudioObjectPropertyScopeGlobal,
- kAudioObjectPropertyElementMain },
+ kAudioObjectPropertyElementMaster },
{ kAudioHardwarePropertyDevices, kAudioObjectPropertyScopeGlobal,
- kAudioObjectPropertyElementMain }
+ kAudioObjectPropertyElementMaster }
};
static void setAudioListeners(QDarwinMediaDevices &instance)
diff --git a/src/multimedia/darwin/qmacosaudiodatautils_p.h b/src/multimedia/darwin/qmacosaudiodatautils_p.h
index 8cc2f8440..5cd6fced2 100644
--- a/src/multimedia/darwin/qmacosaudiodatautils_p.h
+++ b/src/multimedia/darwin/qmacosaudiodatautils_p.h
@@ -44,7 +44,7 @@ void printUnableToReadWarning(const char *logName, AudioObjectID objectID, const
inline static AudioObjectPropertyAddress
makePropertyAddress(AudioObjectPropertySelector selector, QAudioDevice::Mode mode,
- AudioObjectPropertyElement element = kAudioObjectPropertyElementMain)
+ AudioObjectPropertyElement element = kAudioObjectPropertyElementMaster)
{
return { selector,
mode == QAudioDevice::Input ? kAudioDevicePropertyScopeInput

View file

@ -32,7 +32,7 @@ list(APPEND CMAKE_MODULE_PATH "${__qt6_qtbase_src_path}/cmake/3rdparty/kwin")
set(QT_NO_CREATE_TARGETS TRUE)
set(QT_SUPERBUILD TRUE)
set(QT_BUILD_SUBMODULES "qtbase;qtsvg;qtwebsockets;qtshadertools;qtmultimedia" CACHE STRING "Submodules to build")
set(QT_BUILD_SUBMODULES "qtbase;qtsvg;qtwebsockets;qtshadertools;qtmultimedia;qtwayland" CACHE STRING "Submodules to build")
foreach(module IN LISTS QT_BUILD_SUBMODULES)
message(NOTICE "Configuring '${module}'")

View file

@ -9,6 +9,8 @@ set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
set(CMAKE_FIND_ROOT_PATH @host_prefix@)
if(CMAKE_SYSTEM_NAME STREQUAL "Windows")
set(CMAKE_FIND_ROOT_PATH @host_prefix@;@wmf_libs@)
endif()
@ -25,6 +27,10 @@ if(CMAKE_SYSTEM_NAME STREQUAL "Darwin")
set(CMAKE_CXX_FLAGS "@cmake_cxx_flags@")
set(CMAKE_OBJC_FLAGS "@cmake_c_flags@")
set(CMAKE_OBJCXX_FLAGS "@cmake_cxx_flags@")
set(CMAKE_EXE_LINKER_FLAGS "@cmake_ld_flags@")
set(CMAKE_MODULE_LINKER_FLAGS "@cmake_ld_flags@")
set(CMAKE_SHARED_LINKER_FLAGS "@cmake_ld_flags@")
SET(CMAKE_OSX_DEPLOYMENT_TARGET "11.0")
set(CMAKE_INSTALL_NAME_TOOL @target@-install_name_tool)
endif()

View file

@ -1,5 +1,5 @@
diff --git a/src/plugins/multimedia/CMakeLists.txt b/src/plugins/multimedia/CMakeLists.txt
index 5bc39c1f8..c74f2ff4c 100644
index 5b163e98a..eac405570 100644
--- a/src/plugins/multimedia/CMakeLists.txt
+++ b/src/plugins/multimedia/CMakeLists.txt
@@ -2,7 +2,7 @@
@ -976,7 +976,7 @@ index 000000000..95b069b64
+#endif // QFFMPEGMEDIAMETADATA_H
diff --git a/src/plugins/multimedia/v4l2/qffmpegvideosink.cpp b/src/plugins/multimedia/v4l2/qffmpegvideosink.cpp
new file mode 100644
index 000000000..93e7ceeed
index 000000000..128ce2f56
--- /dev/null
+++ b/src/plugins/multimedia/v4l2/qffmpegvideosink.cpp
@@ -0,0 +1,17 @@
@ -991,18 +991,18 @@ index 000000000..93e7ceeed
+{
+}
+
+void QFFmpegVideoSink::setVideoFrame(const QVideoFrame &frame)
+void QFFmpegVideoSink::onVideoFrameChanged(const QVideoFrame &frame)
+{
+ QPlatformVideoSink::setVideoFrame(frame);
+
+}
+
+QT_END_NAMESPACE
diff --git a/src/plugins/multimedia/v4l2/qffmpegvideosink_p.h b/src/plugins/multimedia/v4l2/qffmpegvideosink_p.h
new file mode 100644
index 000000000..cbaa810d7
index 000000000..9eac79129
--- /dev/null
+++ b/src/plugins/multimedia/v4l2/qffmpegvideosink_p.h
@@ -0,0 +1,39 @@
@@ -0,0 +1,40 @@
+// Copyright (C) 2021 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+
@ -1035,7 +1035,8 @@ index 000000000..cbaa810d7
+public:
+ QFFmpegVideoSink(QVideoSink *sink);
+
+ void setVideoFrame(const QVideoFrame &frame) override;
+protected:
+ void onVideoFrameChanged(const QVideoFrame &frame) override;
+};
+
+QT_END_NAMESPACE
@ -1896,7 +1897,7 @@ index 000000000..79cc3cfa9
+#endif // QV4L2CAMERA_H
diff --git a/src/plugins/multimedia/v4l2/qv4l2cameradevices.cpp b/src/plugins/multimedia/v4l2/qv4l2cameradevices.cpp
new file mode 100644
index 000000000..44abde914
index 000000000..c89ff69c6
--- /dev/null
+++ b/src/plugins/multimedia/v4l2/qv4l2cameradevices.cpp
@@ -0,0 +1,168 @@
@ -1941,7 +1942,7 @@ index 000000000..44abde914
+ doCheckCameras();
+}
+
+QList<QCameraDevice> QV4L2CameraDevices::videoDevices() const
+QList<QCameraDevice> QV4L2CameraDevices::findVideoInputs() const
+{
+ return m_cameras;
+}
@ -1949,7 +1950,7 @@ index 000000000..44abde914
+void QV4L2CameraDevices::checkCameras()
+{
+ if (doCheckCameras())
+ emit videoInputsChanged();
+ onVideoInputsChanged();
+}
+
+bool QV4L2CameraDevices::doCheckCameras()
@ -2070,10 +2071,10 @@ index 000000000..44abde914
+#include "moc_qv4l2cameradevices_p.cpp"
diff --git a/src/plugins/multimedia/v4l2/qv4l2cameradevices_p.h b/src/plugins/multimedia/v4l2/qv4l2cameradevices_p.h
new file mode 100644
index 000000000..ce424d3b6
index 000000000..22ac44027
--- /dev/null
+++ b/src/plugins/multimedia/v4l2/qv4l2cameradevices_p.h
@@ -0,0 +1,46 @@
@@ -0,0 +1,47 @@
+// Copyright (C) 2023 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+
@ -2104,11 +2105,12 @@ index 000000000..ce424d3b6
+public:
+ QV4L2CameraDevices(QPlatformMediaIntegration *integration);
+
+ QList<QCameraDevice> videoDevices() const override;
+
+public Q_SLOTS:
+ void checkCameras();
+
+protected:
+ QList<QCameraDevice> findVideoInputs() const override;
+
+private:
+ bool doCheckCameras();
+

View file

@ -1,236 +0,0 @@
diff --git a/util/data/msgencode.c b/util/data/msgencode.c
index 898ff841..6d116fb5 100644
--- a/util/data/msgencode.c
+++ b/util/data/msgencode.c
@@ -62,6 +62,10 @@
#define RETVAL_TRUNC -4
/** return code that means all is peachy keen. Equal to DNS rcode NOERROR */
#define RETVAL_OK 0
+/** Max compressions we are willing to perform; more than that will result
+ * in semi-compressed messages, or truncated even on TCP for huge messages, to
+ * avoid locking the CPU for long */
+#define MAX_COMPRESSION_PER_MESSAGE 120
/**
* Data structure to help domain name compression in outgoing messages.
@@ -284,15 +288,17 @@ write_compressed_dname(sldns_buffer* pkt, uint8_t* dname, int labs,
/** compress owner name of RR, return RETVAL_OUTMEM RETVAL_TRUNC */
static int
-compress_owner(struct ub_packed_rrset_key* key, sldns_buffer* pkt,
- struct regional* region, struct compress_tree_node** tree,
- size_t owner_pos, uint16_t* owner_ptr, int owner_labs)
+compress_owner(struct ub_packed_rrset_key* key, sldns_buffer* pkt,
+ struct regional* region, struct compress_tree_node** tree,
+ size_t owner_pos, uint16_t* owner_ptr, int owner_labs,
+ size_t* compress_count)
{
struct compress_tree_node* p;
struct compress_tree_node** insertpt = NULL;
if(!*owner_ptr) {
/* compress first time dname */
- if((p = compress_tree_lookup(tree, key->rk.dname,
+ if(*compress_count < MAX_COMPRESSION_PER_MESSAGE &&
+ (p = compress_tree_lookup(tree, key->rk.dname,
owner_labs, &insertpt))) {
if(p->labs == owner_labs)
/* avoid ptr chains, since some software is
@@ -301,6 +307,7 @@ compress_owner(struct ub_packed_rrset_key* key, sldns_buffer* pkt,
if(!write_compressed_dname(pkt, key->rk.dname,
owner_labs, p))
return RETVAL_TRUNC;
+ (*compress_count)++;
/* check if typeclass+4 ttl + rdatalen is available */
if(sldns_buffer_remaining(pkt) < 4+4+2)
return RETVAL_TRUNC;
@@ -313,7 +320,8 @@ compress_owner(struct ub_packed_rrset_key* key, sldns_buffer* pkt,
if(owner_pos <= PTR_MAX_OFFSET)
*owner_ptr = htons(PTR_CREATE(owner_pos));
}
- if(!compress_tree_store(key->rk.dname, owner_labs,
+ if(*compress_count < MAX_COMPRESSION_PER_MESSAGE &&
+ !compress_tree_store(key->rk.dname, owner_labs,
owner_pos, region, p, insertpt))
return RETVAL_OUTMEM;
} else {
@@ -333,20 +341,24 @@ compress_owner(struct ub_packed_rrset_key* key, sldns_buffer* pkt,
/** compress any domain name to the packet, return RETVAL_* */
static int
-compress_any_dname(uint8_t* dname, sldns_buffer* pkt, int labs,
- struct regional* region, struct compress_tree_node** tree)
+compress_any_dname(uint8_t* dname, sldns_buffer* pkt, int labs,
+ struct regional* region, struct compress_tree_node** tree,
+ size_t* compress_count)
{
struct compress_tree_node* p;
struct compress_tree_node** insertpt = NULL;
size_t pos = sldns_buffer_position(pkt);
- if((p = compress_tree_lookup(tree, dname, labs, &insertpt))) {
+ if(*compress_count < MAX_COMPRESSION_PER_MESSAGE &&
+ (p = compress_tree_lookup(tree, dname, labs, &insertpt))) {
if(!write_compressed_dname(pkt, dname, labs, p))
return RETVAL_TRUNC;
+ (*compress_count)++;
} else {
if(!dname_buffer_write(pkt, dname))
return RETVAL_TRUNC;
}
- if(!compress_tree_store(dname, labs, pos, region, p, insertpt))
+ if(*compress_count < MAX_COMPRESSION_PER_MESSAGE &&
+ !compress_tree_store(dname, labs, pos, region, p, insertpt))
return RETVAL_OUTMEM;
return RETVAL_OK;
}
@@ -364,9 +376,9 @@ type_rdata_compressable(struct ub_packed_rrset_key* key)
/** compress domain names in rdata, return RETVAL_* */
static int
-compress_rdata(sldns_buffer* pkt, uint8_t* rdata, size_t todolen,
- struct regional* region, struct compress_tree_node** tree,
- const sldns_rr_descriptor* desc)
+compress_rdata(sldns_buffer* pkt, uint8_t* rdata, size_t todolen,
+ struct regional* region, struct compress_tree_node** tree,
+ const sldns_rr_descriptor* desc, size_t* compress_count)
{
int labs, r, rdf = 0;
size_t dname_len, len, pos = sldns_buffer_position(pkt);
@@ -380,8 +392,8 @@ compress_rdata(sldns_buffer* pkt, uint8_t* rdata, size_t todolen,
switch(desc->_wireformat[rdf]) {
case LDNS_RDF_TYPE_DNAME:
labs = dname_count_size_labels(rdata, &dname_len);
- if((r=compress_any_dname(rdata, pkt, labs, region,
- tree)) != RETVAL_OK)
+ if((r=compress_any_dname(rdata, pkt, labs, region,
+ tree, compress_count)) != RETVAL_OK)
return r;
rdata += dname_len;
todolen -= dname_len;
@@ -449,7 +461,8 @@ static int
packed_rrset_encode(struct ub_packed_rrset_key* key, sldns_buffer* pkt,
uint16_t* num_rrs, time_t timenow, struct regional* region,
int do_data, int do_sig, struct compress_tree_node** tree,
- sldns_pkt_section s, uint16_t qtype, int dnssec, size_t rr_offset)
+ sldns_pkt_section s, uint16_t qtype, int dnssec, size_t rr_offset,
+ size_t* compress_count)
{
size_t i, j, owner_pos;
int r, owner_labs;
@@ -477,9 +490,9 @@ packed_rrset_encode(struct ub_packed_rrset_key* key, sldns_buffer* pkt,
for(i=0; i<data->count; i++) {
/* rrset roundrobin */
j = (i + rr_offset) % data->count;
- if((r=compress_owner(key, pkt, region, tree,
- owner_pos, &owner_ptr, owner_labs))
- != RETVAL_OK)
+ if((r=compress_owner(key, pkt, region, tree,
+ owner_pos, &owner_ptr, owner_labs,
+ compress_count)) != RETVAL_OK)
return r;
sldns_buffer_write(pkt, &key->rk.type, 2);
sldns_buffer_write(pkt, &key->rk.rrset_class, 2);
@@ -489,8 +502,8 @@ packed_rrset_encode(struct ub_packed_rrset_key* key, sldns_buffer* pkt,
else sldns_buffer_write_u32(pkt, data->rr_ttl[j]-adjust);
if(c) {
if((r=compress_rdata(pkt, data->rr_data[j],
- data->rr_len[j], region, tree, c))
- != RETVAL_OK)
+ data->rr_len[j], region, tree, c,
+ compress_count)) != RETVAL_OK)
return r;
} else {
if(sldns_buffer_remaining(pkt) < data->rr_len[j])
@@ -510,9 +523,9 @@ packed_rrset_encode(struct ub_packed_rrset_key* key, sldns_buffer* pkt,
return RETVAL_TRUNC;
sldns_buffer_write(pkt, &owner_ptr, 2);
} else {
- if((r=compress_any_dname(key->rk.dname,
- pkt, owner_labs, region, tree))
- != RETVAL_OK)
+ if((r=compress_any_dname(key->rk.dname,
+ pkt, owner_labs, region, tree,
+ compress_count)) != RETVAL_OK)
return r;
if(sldns_buffer_remaining(pkt) <
4+4+data->rr_len[i])
@@ -544,7 +557,8 @@ static int
insert_section(struct reply_info* rep, size_t num_rrsets, uint16_t* num_rrs,
sldns_buffer* pkt, size_t rrsets_before, time_t timenow,
struct regional* region, struct compress_tree_node** tree,
- sldns_pkt_section s, uint16_t qtype, int dnssec, size_t rr_offset)
+ sldns_pkt_section s, uint16_t qtype, int dnssec, size_t rr_offset,
+ size_t* compress_count)
{
int r;
size_t i, setstart;
@@ -560,7 +574,7 @@ insert_section(struct reply_info* rep, size_t num_rrsets, uint16_t* num_rrs,
setstart = sldns_buffer_position(pkt);
if((r=packed_rrset_encode(rep->rrsets[rrsets_before+i],
pkt, num_rrs, timenow, region, 1, 1, tree,
- s, qtype, dnssec, rr_offset))
+ s, qtype, dnssec, rr_offset, compress_count))
!= RETVAL_OK) {
/* Bad, but if due to size must set TC bit */
/* trim off the rrset neatly. */
@@ -573,7 +587,7 @@ insert_section(struct reply_info* rep, size_t num_rrsets, uint16_t* num_rrs,
setstart = sldns_buffer_position(pkt);
if((r=packed_rrset_encode(rep->rrsets[rrsets_before+i],
pkt, num_rrs, timenow, region, 1, 0, tree,
- s, qtype, dnssec, rr_offset))
+ s, qtype, dnssec, rr_offset, compress_count))
!= RETVAL_OK) {
sldns_buffer_set_position(pkt, setstart);
return r;
@@ -584,7 +598,7 @@ insert_section(struct reply_info* rep, size_t num_rrsets, uint16_t* num_rrs,
setstart = sldns_buffer_position(pkt);
if((r=packed_rrset_encode(rep->rrsets[rrsets_before+i],
pkt, num_rrs, timenow, region, 0, 1, tree,
- s, qtype, dnssec, rr_offset))
+ s, qtype, dnssec, rr_offset, compress_count))
!= RETVAL_OK) {
sldns_buffer_set_position(pkt, setstart);
return r;
@@ -677,6 +691,7 @@ reply_info_encode(struct query_info* qinfo, struct reply_info* rep,
struct compress_tree_node* tree = 0;
int r;
size_t rr_offset;
+ size_t compress_count=0;
sldns_buffer_clear(buffer);
if(udpsize < sldns_buffer_limit(buffer))
@@ -723,7 +738,7 @@ reply_info_encode(struct query_info* qinfo, struct reply_info* rep,
arep.rrsets = &qinfo->local_alias->rrset;
if((r=insert_section(&arep, 1, &ancount, buffer, 0,
timezero, region, &tree, LDNS_SECTION_ANSWER,
- qinfo->qtype, dnssec, rr_offset)) != RETVAL_OK) {
+ qinfo->qtype, dnssec, rr_offset, &compress_count)) != RETVAL_OK) {
if(r == RETVAL_TRUNC) {
/* create truncated message */
sldns_buffer_write_u16_at(buffer, 6, ancount);
@@ -738,7 +753,7 @@ reply_info_encode(struct query_info* qinfo, struct reply_info* rep,
/* insert answer section */
if((r=insert_section(rep, rep->an_numrrsets, &ancount, buffer,
0, timenow, region, &tree, LDNS_SECTION_ANSWER, qinfo->qtype,
- dnssec, rr_offset)) != RETVAL_OK) {
+ dnssec, rr_offset, &compress_count)) != RETVAL_OK) {
if(r == RETVAL_TRUNC) {
/* create truncated message */
sldns_buffer_write_u16_at(buffer, 6, ancount);
@@ -756,7 +771,7 @@ reply_info_encode(struct query_info* qinfo, struct reply_info* rep,
if((r=insert_section(rep, rep->ns_numrrsets, &nscount, buffer,
rep->an_numrrsets, timenow, region, &tree,
LDNS_SECTION_AUTHORITY, qinfo->qtype,
- dnssec, rr_offset)) != RETVAL_OK) {
+ dnssec, rr_offset, &compress_count)) != RETVAL_OK) {
if(r == RETVAL_TRUNC) {
/* create truncated message */
sldns_buffer_write_u16_at(buffer, 8, nscount);
@@ -773,7 +788,7 @@ reply_info_encode(struct query_info* qinfo, struct reply_info* rep,
if((r=insert_section(rep, rep->ar_numrrsets, &arcount, buffer,
rep->an_numrrsets + rep->ns_numrrsets, timenow, region,
&tree, LDNS_SECTION_ADDITIONAL, qinfo->qtype,
- dnssec, rr_offset)) != RETVAL_OK) {
+ dnssec, rr_offset, &compress_count)) != RETVAL_OK) {
if(r == RETVAL_TRUNC) {
/* no need to set TC bit, this is the additional */
sldns_buffer_write_u16_at(buffer, 10, arcount);

View file

@ -0,0 +1,15 @@
[binaries]
c = '@cc@'
cpp = '@cxx@'
ar = '@ar@'
strip = '@strip@'
pkgconfig = '/home/user/.guix-profile/bin/pkg-config'
[host_machine]
system = 'linux'
cpu_family = '@arch@'
cpu = '@arch@'
endian = 'little'
[built-in options]
prefix = '@host_prefix@'

View file

@ -0,0 +1,23 @@
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 15ceebe..58414f6 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -167,15 +167,9 @@ if(NOT CYGWIN)
set_target_properties(zlib PROPERTIES VERSION ${ZLIB_FULL_VERSION})
endif()
-if(UNIX)
- # On unix-like platforms the library is almost always called libz
- set_target_properties(zlib zlibstatic PROPERTIES OUTPUT_NAME z)
- if(NOT APPLE AND NOT(CMAKE_SYSTEM_NAME STREQUAL AIX))
- set_target_properties(zlib PROPERTIES LINK_FLAGS "-Wl,--version-script,\"${CMAKE_CURRENT_SOURCE_DIR}/zlib.map\"")
- endif()
-elseif(BUILD_SHARED_LIBS AND WIN32)
- # Creates zlib1.dll when building shared library version
- set_target_properties(zlib PROPERTIES SUFFIX "1.dll")
+set_target_properties(zlib zlibstatic PROPERTIES OUTPUT_NAME z)
+if(NOT APPLE AND NOT(CMAKE_SYSTEM_NAME STREQUAL AIX))
+ set_target_properties(zlib PROPERTIES LINK_FLAGS "-Wl,--version-script,\"${CMAKE_CURRENT_SOURCE_DIR}/zlib.map\"")
endif()
if(NOT SKIP_INSTALL_LIBRARIES AND NOT SKIP_INSTALL_ALL )

View file

@ -94,28 +94,30 @@ if(CMAKE_SYSTEM_NAME STREQUAL "Darwin")
SET(BUILD_TAG "mac-x64")
SET(CMAKE_OSX_ARCHITECTURES "x86_64")
endif()
SET(CMAKE_SYSTEM_VERSION 20.1)
SET(_CMAKE_TOOLCHAIN_PREFIX @prefix@/native/bin/${CONF_TRIPLE}-)
SET(CMAKE_C_COMPILER @CC@)
SET(CMAKE_C_COMPILER_TARGET ${CLANG_TARGET})
SET(CMAKE_C_FLAGS_INIT -B${_CMAKE_TOOLCHAIN_PREFIX})
SET(CMAKE_CXX_COMPILER @CXX@ -stdlib=libc++ )
SET(CMAKE_CXX_COMPILER_TARGET ${CLANG_TARGET})
SET(CMAKE_CXX_FLAGS_INIT -B${_CMAKE_TOOLCHAIN_PREFIX})
SET(CMAKE_C_FLAGS "@CFLAGS@")
SET(CMAKE_CXX_COMPILER @CXX@ -stdlib=libc++)
SET(CMAKE_CXX_FLAGS "@CXXFLAGS@")
SET(CMAKE_EXE_LINKER_FLAGS "@LDFLAGS@")
SET(CMAKE_MODULE_LINKER_FLAGS "@LDFLAGS@")
SET(CMAKE_SHARED_LINKER_FLAGS "@LDFLAGS@")
SET(CMAKE_INSTALL_NAME_TOOL llvm-install-name-tool)
SET(CMAKE_ASM_COMPILER clang)
SET(CMAKE_ASM-ATT_COMPILER as)
SET(CMAKE_ASM-ATT_COMPILER llvm-as)
SET(CMAKE_ASM_COMPILER_TARGET ${CLANG_TARGET})
SET(CMAKE_ASM-ATT_COMPILER_TARGET ${CLANG_TARGET})
SET(CMAKE_AR @prefix@/native/bin/${CLANG_TARGET}-ar)
SET(CMAKE_RANLIB @prefix@/native/bin/${CLANG_TARGET}-ranlib)
SET(CMAKE_AR llvm-ar)
SET(CMAKE_RANLIB llvm-ranlib)
SET(APPLE True)
SET(BUILD_64 ON)
SET(BREW OFF)
SET(PORT OFF)
SET(CMAKE_OSX_SYSROOT "@prefix@/native/SDK")
SET(CMAKE_OSX_DEPLOYMENT_TARGET "10.14")
SET(CMAKE_OSX_DEPLOYMENT_TARGET "11.0")
SET(CMAKE_CXX_STANDARD 17)
SET(LLVM_ENABLE_PIC OFF)
SET(LLVM_ENABLE_PIE OFF)
else()
SET(CMAKE_C_COMPILER @CC@)
SET(CMAKE_CXX_COMPILER @CXX@)
@ -150,16 +152,6 @@ if(ARCHITECTURE STREQUAL "riscv64")
set(ARCH "rv64imafdc")
endif()
if(ARCHITECTURE STREQUAL "i686")
SET(ARCH_ID "i386")
if(CMAKE_SYSTEM_NAME STREQUAL "Linux")
set(BUILD_TAG "linux-x86")
SET(LINUX_32 ON)
elseif(CMAKE_SYSTEM_NAME STREQUAL "Windows")
set(BUILD_TAG "win-x32")
endif()
endif()
if(ARCHITECTURE STREQUAL "x86_64")
if(CMAKE_SYSTEM_NAME STREQUAL "Linux")
set(BUILD_TAG "linux-x64")

View file

@ -0,0 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="16" height="16" xmlns="http://www.w3.org/2000/svg">
<path d="M4 4h1.031c.255.011.51.129.688.313L8 6.592l2.312-2.28c.266-.231.447-.306.688-.313h1v1c0 .286-.034.55-.25.75L9.469 8.031l2.25 2.25c.188.188.281.454.281.719v1h-1c-.265 0-.53-.093-.719-.281L8 9.438l-2.281 2.28A1.015 1.015 0 015 12H4v-1c0-.265.093-.53.281-.719l2.281-2.25-2.28-2.281A.909.909 0 014 5z" color="#bebebe" fill="#2e3436" font-family="Andale Mono" font-weight="400" overflow="visible" style="text-decoration-line:none;text-indent:0;text-transform:none"/>
</svg>

After

(image error) Size: 582 B

View file

@ -0,0 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="16" height="16" xmlns="http://www.w3.org/2000/svg">
<path d="M3.988 3.992v8.012H12V3.992zm2 2H10v4.012H5.988z" fill="#2e3436" font-family="sans-serif" font-weight="400" overflow="visible" style="font-feature-settings:normal;font-variant-alternates:normal;font-variant-caps:normal;font-variant-ligatures:normal;font-variant-numeric:normal;font-variant-position:normal;isolation:auto;mix-blend-mode:normal;shape-padding:0;text-decoration-color:#000;text-decoration-line:none;text-decoration-style:solid;text-indent:0;text-orientation:mixed;text-transform:none;white-space:normal"/>
</svg>

After

(image error) Size: 639 B

View file

@ -0,0 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="16" height="16" xmlns="http://www.w3.org/2000/svg">
<path d="M4 10.009h8v1.989H4z" fill="#2e3436" fill-rule="evenodd" overflow="visible"/>
</svg>

After

(image error) Size: 198 B

View file

@ -0,0 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="16" height="16" xmlns="http://www.w3.org/2000/svg">
<path d="M4.988 4.992v6.012H11V4.992zm2 2H9v2.012H6.988z" fill="#2e3436" font-family="sans-serif" font-weight="400" overflow="visible" style="font-feature-settings:normal;font-variant-alternates:normal;font-variant-caps:normal;font-variant-ligatures:normal;font-variant-numeric:normal;font-variant-position:normal;isolation:auto;mix-blend-mode:normal;shape-padding:0;text-decoration-color:#000;text-decoration-line:none;text-decoration-style:solid;text-indent:0;text-orientation:mixed;text-transform:none;white-space:normal"/>
</svg>

After

(image error) Size: 638 B

View file

@ -32,13 +32,17 @@ cd files
cp /feather/contrib/depends/x86_64-linux-gnu/bin/startup .
# Copy feather binary
cp /feather-bin feather
cp /outdir/feather feather
# Copy metadata
cp -r /feather/contrib/flatpak/share .
touch --no-dereference --date="@${SOURCE_DATE_EPOCH}" share/metainfo/${APP_ID}.metainfo.xml
gzip -c share/metainfo/${APP_ID}.metainfo.xml > share/app-info/xmls/${APP_ID}.xml.gz
# Copy icons
mkdir -p share/icons
cp -r /feather/contrib/flatpak/icons/gnome share/icons
# Extract guix pack
tar xf /pack .
@ -47,6 +51,7 @@ GUIX_PROFILE=$(get_store_path "profile")
GUIX_GLIBC=$(get_store_path "glibc")
GUIX_FONTCONFIG=$(get_store_path "fontconfig")
GUIX_GCC=$(get_store_path "gcc")
GUIX_KEYBOARD_CONFIG=$(get_store_path "keyboard-config")
# Patch Feather binary
patchelf --set-interpreter "/${GUIX_GLIBC}/lib/ld-linux-x86-64.so.2" feather
@ -82,6 +87,8 @@ ln -s "/run/host/fonts-cache" share/fonts-cache
ln -s "/${GUIX_PROFILE}/share/locale" share/locale
ln -s "/${GUIX_PROFILE}/share/xml" share/xml
ln -s "/${GUIX_KEYBOARD_CONFIG}/share/X11" share/X11
# Setup profile symlink
ln -s "/${GUIX_PROFILE}" profile

View file

@ -6,6 +6,6 @@ command=/app/startup
[Context]
shared=network;ipc;
sockets=x11;wayland;
sockets=wayland;fallback-x11;
devices=all;
filesystems=~/Monero:create;

View file

@ -46,24 +46,68 @@ $ git clone https://github.com/feather-wallet/feather
$ cd feather
```
### Before building
#### Ubuntu
On **Ubuntu**, you may run into the following error caused by [this Ubuntu bug](https://bugs.launchpad.net/ubuntu/+source/guix/+bug/2064115):
`guix environment: error: mount: mount "none" on "/tmp/guix-directory.Ile657": Permission denied`
To work around this issue, you need to create a permissive AppArmor profile for Guix:
```bash
$ apt install apparmor-utils
$ cat <<EOL >> /etc/apparmor.d/guix
abi <abi/4.0>,
include <tunables/global>
profile guix /usr/bin/guix flags=(unconfined) {
userns,
include if exists <local/guix>
}
EOL
$ /etc/init.d/apparmor reload
$ aa-enforce guix
```
#### Fedora
On **Fedora**, you may run into the following error:
`guix gc: error: remounting /gnu/store writable: Permission denied`
To work around this issue, you need to temporarily disable SELinux:
```bash
sudo setenforce 0
```
You can re-enable it after the build with:
```bash
sudo setenforce 1
```
### Run the build
To build all targets using all available cores:
```bash
$ ./contrib/guix/guix-build
$ make build
```
To limit the number of threads to N:
```
$ JOBS=N ./contrib/guix/guix-build
$ JOBS=N make build
```
To only build the x86_64 linux target:
```
$ HOSTS="x86_64-linux-gnu" ./contrib/guix/guix-build
$ HOSTS="x86_64-linux-gnu" make build
```
More recognized environment variables can be found further below.
@ -89,7 +133,7 @@ To build Feather Wallet reproducibly with all default options, invoke the
following from the top of a clean repository:
```sh
./contrib/guix/guix-build
make build
```
## Cleaning intermediate work directories
@ -102,7 +146,7 @@ directories usually take up a large amount of disk space. Therefore, a
worktree to save disk space:
```
./contrib/guix/guix-clean
make clean
```
@ -112,13 +156,10 @@ After you've cloned the `feather-sigs` repository, to attest to the current
worktree's commit/tag:
```
env GUIX_SIGS_REPO=<path/to/feather-sigs> SIGNER=<gpg-key-fingerprint>=<gh_username> ./contrib/guix/guix-attest
make attest
```
See `./contrib/guix/guix-attest --help` for more information on the various ways
`guix-attest` can be invoked.
For a step-by-step walkthrough, see: https://paste.debian.net/plainh/2457c02c. Make sure to replace the version number
For a step-by-step walkthrough, see: https://paste.debian.net/plainh/dfecbbcc. Make sure to replace the version number
with the version you want to build.
## Verifying build output attestations
@ -127,8 +168,8 @@ After at least one other signer has uploaded their signatures to the `feather-si
repository:
```
git -C <path/to/feather-sigs> pull
env GUIX_SIGS_REPO=<path/to/feather-sigs> ./contrib/guix/guix-verify
git submodule update --recursive
make verify
```
@ -144,7 +185,7 @@ help with this situation, the `guix-build` script honours the `SOURCES_PATH`,
depends tree so that you can do something like:
```sh
env SOURCES_PATH="$HOME/depends-SOURCES_PATH" BASE_CACHE="$HOME/depends-BASE_CACHE" ./contrib/guix/guix-build
env SOURCES_PATH="$HOME/depends-SOURCES_PATH" BASE_CACHE="$HOME/depends-BASE_CACHE" make build
```
Note that the paths that these environment variables point to **must be
@ -160,7 +201,7 @@ which case you can override the default list by setting the space-separated
`HOSTS` environment variable:
```sh
env HOSTS='x86_64-w64-mingw32 x86_64-apple-darwin' ./contrib/guix/guix-build
env HOSTS='x86_64-w64-mingw32 x86_64-apple-darwin' make build
```
See the [recognized environment variables][env-vars-list] section for more

View file

@ -39,54 +39,56 @@ cmd_usage() {
cat <<EOF
Synopsis:
env GUIX_SIGS_REPO=<path/to/feather-sigs> \\
SIGNER=GPG_KEY_NAME[=SIGNER_NAME] \\
env SIGNER=GPG_KEY_NAME[=SIGNER_NAME] \\
[ NO_SIGN=1 ]
./contrib/guix/guix-attest
Example w/o overriding signing name:
env GUIX_SIGS_REPO=/home/user/feather-sigs \\
SIGNER=achow101 \\
env SIGNER=achow101 \\
./contrib/guix/guix-attest
Example overriding signing name:
env GUIX_SIGS_REPO=/home/user/feather-sigs \\
SIGNER=0x96AB007F1A7ED999=dongcarl \\
env SIGNER=0x96AB007F1A7ED999=dongcarl \\
./contrib/guix/guix-attest
Example w/o signing, just creating SHA256SUMS:
env GUIX_SIGS_REPO=/home/user/feather-sigs \\
SIGNER=achow101 \\
env SIGNER=achow101 \\
NO_SIGN=1 \\
./contrib/guix/guix-attest
EOF
}
if [ -z "$GUIX_SIGS_REPO" ] || [ -z "$SIGNER" ]; then
cmd_usage
exit 1
if [ -z "${SIGNER}" ]; then
printf "Enter your GitHub username: "
read -r signer
if [ -z "$signer" ]; then
echo "ERR: signer name can't be empty"
exit 1
fi
echo ""
echo "[HINT] To find your GPG fingerprint use:"
echo "gpg --list-secret-keys --keyid-format=long"
echo "It should look like: E87BD921CDD885C9D78A38C5E45B10DD027D2472"
echo ""
printf "Enter fingerprint of your GPG key: "
read -r fingerprint
export SIGNER="${fingerprint}=${signer}"
wizard=1
fi
################
# GUIX_SIGS_REPO should exist as a directory
################
if [ ! -d "$GUIX_SIGS_REPO" ]; then
cat << EOF
ERR: The specified GUIX_SIGS_REPO is not an existent directory:
'$GUIX_SIGS_REPO'
Hint: Please clone the feather-sigs repository and point to it with the
GUIX_SIGS_REPO environment variable.
EOF
cmd_usage
exit 1
if [ -n "$wizard" ]; then
echo ""
echo "Next time, invoke this command as:"
echo "env SIGNER=${SIGNER} make attest"
echo ""
fi
################
@ -113,19 +115,15 @@ shopt -s nullglob
sha256sum_fragments=( "$LOGDIR_BASE"/*/SHA256SUMS.part ) # This expands to an array of directories...
shopt -u nullglob
noncodesigned_fragments=()
codesigned_fragments=()
fragments=()
if (( ${#sha256sum_fragments[@]} )); then
echo "Found build output SHA256SUMS fragments:"
for logdir in "${sha256sum_fragments[@]}"; do
echo " '$logdir'"
case "$logdir" in
"$LOGDIR_BASE"/*-codesigned/SHA256SUMS.part)
codesigned_fragments+=("$logdir")
;;
*)
noncodesigned_fragments+=("$logdir")
fragments+=("$logdir")
;;
esac
done
@ -182,67 +180,40 @@ basenameify_SHA256SUMS() {
sed -E 's@(^[[:xdigit:]]{64}[[:space:]]+).+/([^/]+$)@\1\2@'
}
outsigdir="$GUIX_SIGS_REPO/$VERSION/$signer_name"
outsigdir="external/feather-sigs/$VERSION/$signer_name"
mkdir -p "$outsigdir"
(
cd "$outsigdir"
temp_noncodesigned="$(mktemp)"
trap 'rm -rf -- "$temp_noncodesigned"' EXIT
temp_file="$(mktemp)"
trap 'rm -rf -- "$temp_file"' EXIT
if (( ${#noncodesigned_fragments[@]} )); then
cat "${noncodesigned_fragments[@]}" \
if (( ${#fragments[@]} )); then
cat "${fragments[@]}" \
| sort -u \
| basenameify_SHA256SUMS \
| sort -k2 \
> "$temp_noncodesigned"
if [ -e noncodesigned.SHA256SUMS ]; then
# The SHA256SUMS already exists, make sure it's exactly what we
# expect, error out if not
if diff -u noncodesigned.SHA256SUMS "$temp_noncodesigned"; then
echo "A noncodesigned.SHA256SUMS file already exists for '${VERSION}' and is up-to-date."
else
shasum_already_exists noncodesigned.SHA256SUMS
exit 1
fi
else
mv "$temp_noncodesigned" noncodesigned.SHA256SUMS
fi
else
echo "ERR: No noncodesigned outputs found for '${VERSION}', exiting..."
exit 1
fi
temp_all="$(mktemp)"
trap 'rm -rf -- "$temp_all"' EXIT
if (( ${#codesigned_fragments[@]} )); then
# Note: all.SHA256SUMS attests to all of $sha256sum_fragments, but is
# not needed if there are no $codesigned_fragments
cat "${sha256sum_fragments[@]}" \
| sort -u \
| sort -k2 \
| basenameify_SHA256SUMS \
> "$temp_all"
> "$temp_file"
if [ -e all.SHA256SUMS ]; then
# The SHA256SUMS already exists, make sure it's exactly what we
# expect, error out if not
if diff -u all.SHA256SUMS "$temp_all"; then
echo "An all.SHA256SUMS file already exists for '${VERSION}' and is up-to-date."
if diff -u all.SHA256SUMS "$temp_file"; then
echo "A SHA256SUMS file already exists for '${VERSION}' and is up-to-date."
else
shasum_already_exists all.SHA256SUMS
exit 1
fi
else
mv "$temp_all" all.SHA256SUMS
mv "$temp_file" all.SHA256SUMS
fi
else
# It is fine to have the codesigned outputs be missing (perhaps the
# detached codesigs have not been published yet), just print a log
# message instead of erroring out
echo "INFO: No codesigned outputs found for '${VERSION}', skipping..."
echo "ERR: No outputs found for '${VERSION}', exiting..."
exit 1
fi
temp_all="$(mktemp)"
trap 'rm -rf -- "$temp_all"' EXIT
if [ -z "$NO_SIGN" ]; then
echo "Signing SHA256SUMS to produce SHA256SUMS.asc"
for i in *.SHA256SUMS; do

View file

@ -79,7 +79,7 @@ mkdir -p "$VERSION_BASE"
################
# Default to building for all supported HOSTs (overridable by environment)
export HOSTS="${HOSTS:-i686-linux-gnu x86_64-linux-gnu aarch64-linux-gnu arm-linux-gnueabihf
export HOSTS="${HOSTS:-x86_64-linux-gnu aarch64-linux-gnu arm-linux-gnueabihf
x86_64-linux-gnu.no-tor-bundle
x86_64-linux-gnu.pack
riscv64-linux-gnu
@ -447,6 +447,9 @@ EOF
-- env HOST="$HOST" \
DISTNAME="$DISTNAME" \
JOBS="$JOBS" \
VERSION="$VERSION" \
COMMIT="$COMMIT" \
TAG="$TAG" \
COMMIT_TIMESTAMP="${COMMIT_TIMESTAMP:?unable to determine value}" \
${V:+V=1} \
${SOURCES_PATH:+SOURCES_PATH="$SOURCES_PATH"} \
@ -461,7 +464,7 @@ EOF
case "$OPTIONS" in
pack)
FEATHER_BIN="$(outdir_for_host "$host")/feather"
OUTDIR="$(outdir_for_host "$host")"
export VERSION=${VERSION}
time-machine pack -S /profile=. --manifest="${PWD}/contrib/guix/pack.scm"
PACK=$(time-machine pack --manifest="${PWD}/contrib/guix/pack.scm")
@ -473,7 +476,7 @@ EOF
--share="$PACK"=/pack \
--share="$(outdir_for_host "$host")"=/output \
--share="$LOGDIR_BASE"=/logdir-base \
--share="$FEATHER_BIN"=/feather-bin \
--share="$OUTDIR"=/outdir \
--keep-failed \
--fallback \
--user="user" \

View file

@ -37,34 +37,11 @@ Example overriding signer's manifest to use as base
EOF
}
if [ -z "$GUIX_SIGS_REPO" ]; then
cmd_usage
exit 1
fi
################
# GUIX_SIGS_REPO should exist as a directory
################
if [ ! -d "$GUIX_SIGS_REPO" ]; then
cat << EOF
ERR: The specified GUIX_SIGS_REPO is not an existent directory:
'$GUIX_SIGS_REPO'
Hint: Please clone the feather-sigs repository and point to it with the
GUIX_SIGS_REPO environment variable.
EOF
cmd_usage
exit 1
fi
##############
## Verify ##
##############
OUTSIGDIR_BASE="${GUIX_SIGS_REPO}/${VERSION}"
OUTSIGDIR_BASE="external/feather-sigs/${VERSION}"
echo "Looking for signature directories in '${OUTSIGDIR_BASE}'"
echo ""
@ -90,37 +67,6 @@ verify() {
fi
}
shopt -s nullglob
all_noncodesigned=( "$OUTSIGDIR_BASE"/*/noncodesigned.SHA256SUMS )
shopt -u nullglob
echo "--------------------"
echo ""
if (( ${#all_noncodesigned[@]} )); then
compare_noncodesigned="${all_noncodesigned[0]}"
if [[ -n "$SIGNER" ]]; then
signer_noncodesigned="$OUTSIGDIR_BASE/$SIGNER/noncodesigned.SHA256SUMS"
if [[ -f "$signer_noncodesigned" ]]; then
echo "Using $SIGNER's manifest as the base to compare against"
compare_noncodesigned="$signer_noncodesigned"
else
echo "Unable to find $SIGNER's manifest, using the first one found"
fi
else
echo "No SIGNER provided, using the first manifest found"
fi
for current_manifest in "${all_noncodesigned[@]}"; do
verify "$compare_noncodesigned" "$current_manifest"
done
echo "DONE: Checking output signatures for noncodesigned.SHA256SUMS"
echo ""
else
echo "WARN: No signature directories with noncodesigned.SHA256SUMS found"
echo ""
fi
shopt -s nullglob
all_all=( "$OUTSIGDIR_BASE"/*/all.SHA256SUMS )
shopt -u nullglob
@ -145,14 +91,6 @@ if (( ${#all_all[@]} )); then
verify "$compare_all" "$current_manifest"
done
# Sanity check: there should be no entries that exist in
# noncodesigned.SHA256SUMS that doesn't exist in all.SHA256SUMS
if [[ "$(comm -23 <(sort "$compare_noncodesigned") <(sort "$compare_all") | wc -c)" -ne 0 ]]; then
echo "ERR: There are unique lines in noncodesigned.SHA256SUMS which"
echo " do not exist in all.SHA256SUMS, something went very wrong."
exit 1
fi
echo "DONE: Checking output signatures for all.SHA256SUMS"
echo ""
else
@ -162,7 +100,7 @@ fi
echo "===================="
echo ""
if (( ${#all_noncodesigned[@]} + ${#all_all[@]} == 0 )); then
if (( ${#all_all[@]} == 0 )); then
echo "ERR: Unable to perform any verifications as no signature directories"
echo " were found"
echo ""

View file

@ -35,6 +35,8 @@ cat << EOF
Required environment variables as seen inside the container:
DIST_ARCHIVE_BASE: ${DIST_ARCHIVE_BASE:?not set}
DISTNAME: ${DISTNAME:?not set}
VERSION: ${VERSION:?not set}
COMMIT: ${COMMIT:?not set}
HOST: ${HOST:?not set}
COMMIT_TIMESTAMP: ${COMMIT_TIMESTAMP:?not set}
JOBS: ${JOBS:?not set}
@ -44,8 +46,11 @@ Required environment variables as seen inside the container:
OPTIONS: ${OPTIONS}
EOF
mkdir -p ${DISTSRC}
ln -s "${DISTSRC}" /distsrc
ACTUAL_OUTDIR="${OUTDIR}"
OUTDIR="${DISTSRC}/output"
OUTDIR="/distsrc/output"
# Use a fixed timestamp for depends builds so hashes match across commits that don't make changes to the build system
export SOURCE_DATE_EPOCH=1397818193
@ -78,8 +83,6 @@ store_path() {
# includes/libs
NATIVE_GCC="$(store_path gcc-toolchain)"
NATIVE_GCC_STATIC="$(store_path gcc-toolchain static)"
QT_LIBS="$(store_path xcb-util):$(store_path xcb-util-renderutil):$(store_path xcb-util-keysyms):$(store_path xcb-util-cursor):$(store_path xcb-util-image):$(store_path xcb-util-wm):"
QT_LIBS_LIBS="$(echo "${QT_LIBS}" | sed 's/:/\/lib:/g')"
unset LIBRARY_PATH
unset CPATH
@ -93,8 +96,6 @@ export C_INCLUDE_PATH="${NATIVE_GCC}/include"
export CPLUS_INCLUDE_PATH="${NATIVE_GCC}/include/c++:${NATIVE_GCC}/include"
export OBJC_INCLUDE_PATH="${NATIVE_GCC}/include"
export OBJCPLUS_INCLUDE_PATH="${NATIVE_GCC}/include/c++:${NATIVE_GCC}/include"
export QT_LIBS
export QT_LIBS_LIBS
prepend_to_search_env_var() {
export "${1}=${2}${!1:+:}${!1}"
@ -153,18 +154,7 @@ for p in "${PATHS[@]}"; do
done
# Disable Guix ld auto-rpath behavior
case "$HOST" in
*darwin*)
# The auto-rpath behavior is necessary for darwin builds as some native
# tools built by depends refer to and depend on Guix-built native
# libraries
#
# After the native packages in depends are built, the ld wrapper should
# no longer affect our build, as clang would instead reach for
# x86_64-apple-darwin-ld from cctools
;;
*) export GUIX_LD_WRAPPER_DISABLE_RPATH=yes ;;
esac
export GUIX_LD_WRAPPER_DISABLE_RPATH=yes
# Make /usr/bin if it doesn't exist
[ -e /usr/bin ] || mkdir -p /usr/bin
@ -184,7 +174,6 @@ case "$HOST" in
riscv64-linux-gnu) echo /lib/ld-linux-riscv64-lp64d.so.1 ;;
powerpc64-linux-gnu) echo /lib64/ld64.so.1;;
powerpc64le-linux-gnu) echo /lib64/ld64.so.2;;
i686-linux-gnu) echo /lib/ld-linux.so.2 ;;
*) exit 1 ;;
esac
)
@ -196,16 +185,6 @@ export GLIBC_DYNAMIC_LINKER=${glibc_dynamic_linker}
# Environment variables for determinism
export TAR_OPTIONS="--owner=0 --group=0 --numeric-owner --mtime='@${SOURCE_DATE_EPOCH}' --sort=name"
export TZ="UTC"
case "$HOST" in
*darwin*)
# cctools AR, unlike GNU binutils AR, does not have a deterministic mode
# or a configure flag to enable determinism by default, it only
# understands if this env-var is set or not. See:
#
# https://github.com/tpoechtrager/cctools-port/blob/55562e4073dea0fbfd0b20e0bf69ffe6390c7f97/cctools/ar/archive.c#L334
export ZERO_AR_DATE=yes
;;
esac
####################
# Depends Building #
@ -238,7 +217,9 @@ make -C contrib/depends --jobs="$JOBS" HOST="$HOST" \
x86_64_linux_RANLIB=x86_64-linux-gnu-gcc-ranlib \
x86_64_linux_NM=x86_64-linux-gnu-gcc-nm \
x86_64_linux_STRIP=x86_64-linux-gnu-strip \
guix_ldflags="$HOST_LDFLAGS"
guix_ldflags="$HOST_LDFLAGS" \
build_CC="${NATIVE_GCC}/bin/gcc -isystem ${NATIVE_GCC}/include" \
build_CXX="${NATIVE_GCC}/bin/g++ -isystem ${NATIVE_GCC}/include/c++ -isystem ${NATIVE_GCC}/include"
# Log the depends package hashes
DEPENDS_PACKAGES="$(make -C contrib/depends --no-print-directory HOST="$HOST" print-all_packages)"
@ -263,9 +244,7 @@ GIT_ARCHIVE="${DIST_ARCHIVE_BASE}/${DISTNAME}.tar.gz"
# Create the source tarball if not already there
if [ ! -e "$GIT_ARCHIVE" ]; then
mkdir -p "$(dirname "$GIT_ARCHIVE")"
git rev-parse --short=12 HEAD > githash.txt
( git ls-files --recurse-submodules ; echo "githash.txt" ) \
| cat \
git ls-files --recurse-submodules \
| sort \
| tar --create --transform "s,^,${DISTNAME}/," --mode='u+rw,go+r-w,a+X' --files-from=- \
| gzip -9n > ${GIT_ARCHIVE}
@ -296,9 +275,8 @@ export USE_DEVICE_TREZOR_MANDATORY=1
# Make $HOST-specific native binaries from depends available in $PATH
export PATH="${BASEPREFIX}/${HOST}/native/bin:${PATH}"
mkdir -p "$DISTSRC"
(
cd "$DISTSRC"
cd "/distsrc"
# Extract the source tarball
tar --strip-components=1 -xf "${GIT_ARCHIVE}"
@ -306,18 +284,23 @@ mkdir -p "$DISTSRC"
# Setup the directory where our Bitcoin Core build for HOST will be
# installed. This directory will also later serve as the input for our
# binary tarballs.
INSTALLPATH="${DISTSRC}/installed"
INSTALLPATH="/distsrc/installed"
mkdir -p "${INSTALLPATH}"
# Set appropriate CMake options for build type
CMAKEVARS="-DWITH_SCANNER=On -DCHECK_UPDATES=On -DSELF_CONTAINED=On -DDONATE_BEG=On -DFEATHER_TARGET_TRIPLET=${HOST} -DWITH_PLUGIN_REDDIT=Off"
if [[ -n "${TAG}" ]]; then
CMAKEVARS+=" -DOFFICIAL_BUILD=On"
fi
ANONDIST=""
case "$HOST" in
*mingw32)
case "$OPTIONS" in
installer)
CMAKEVARS+=" -DPLATFORM_INSTALLER=On -DTOR_DIR=Off -DTOR_VERSION=Off"
CMAKEVARS+=" -DPLATFORM_INSTALLER=On -DTOR_INSTALLED=On -DTOR_DIR=Off -DTOR_VERSION=Off"
;;
esac
;;
@ -336,6 +319,9 @@ mkdir -p "$DISTSRC"
*gnueabihf)
CMAKEVARS+=" -DNO_AES=On" # Raspberry Pi
;;
*darwin*)
CMAKEVARS+=" -DTOR_DIR=Off -DTOR_VERSION=Off -DTOR_INSTALLED=On"
;;
esac
# Configure this DISTSRC for $HOST
@ -353,9 +339,6 @@ mkdir -p "$DISTSRC"
LINUX_ARCH=""
case "$HOST" in
i686-linux*)
LINUX_ARCH="-x86"
;;
aarch64-linux*)
LINUX_ARCH="-arm64"
;;
@ -394,8 +377,8 @@ mkdir -p "$DISTSRC"
case "$OPTIONS" in
installer)
makensis -DCUR_PATH=$PWD -V2 contrib/installers/windows/setup.nsi
cp contrib/installers/windows/FeatherWalletSetup-*.exe "${INSTALLPATH}/"
mv contrib/installers/windows/FeatherWalletSetup-*.exe "${OUTDIR}/"
cp contrib/installers/windows/FeatherWalletSetup.exe "${INSTALLPATH}/"
mv contrib/installers/windows/FeatherWalletSetup.exe "${OUTDIR}/"
;;
esac
;;
@ -426,39 +409,75 @@ mkdir -p "$DISTSRC"
case "$HOST" in
*darwin*)
mv "feather.app" "Feather.app"
mkdir -p Feather.app/Contents/bin
cp -a /feather/contrib/depends/${HOST}/Tor/libevent-2.1.7.dylib Feather.app/Contents/bin
cp -a /feather/contrib/depends/${HOST}/Tor/tor Feather.app/Contents/bin
chmod +x Feather.app/Contents/bin/tor
;;
esac
# Ad-hoc code signing
case "$HOST" in
arm64-apple-darwin)
ldid -S -Cadhoc,linker-signed Feather.app
;;
esac
# Code-signing
if [[ -n "${TAG}" ]]; then
if [[ "${TAG}" != *"-rc"* ]]; then
case "$HOST" in
*darwin*)
signapple apply Feather.app "/distsrc/external/feather-codesigning/signatures/${HOST}/Feather.app"
;;
*mingw*)
case "$OPTIONS" in
installer)
osslsigncode attach-signature \
-in "FeatherWalletSetup.exe" \
-out "FeatherWalletSetup.exe.tmp" \
-CAfile "$GUIX_ENVIRONMENT/etc/ssl/certs/ca-certificates.crt" \
-sigin "/distsrc/external/feather-codesigning/signatures/${HOST}/feather.installer.pem" || true
cp FeatherWalletSetup.exe.tmp "${OUTDIR}/FeatherWalletSetup-${TAG}.exe"
mv FeatherWalletSetup.exe.tmp "FeatherWalletSetup-${TAG}.exe"
rm "${OUTDIR}/FeatherWalletSetup.exe"
;;
"")
osslsigncode attach-signature \
-in "feather.exe" \
-out "feather.exe.tmp" \
-CAfile "$GUIX_ENVIRONMENT/etc/ssl/certs/ca-certificates.crt" \
-sigin "/distsrc/external/feather-codesigning/signatures/${HOST}/feather.pem" || true
mv feather.exe.tmp feather.exe
;;
esac
;;
esac
fi
fi
# Finally, deterministically produce {non-,}debug binary tarballs ready
# for release
case "$HOST" in
*mingw*)
case "$OPTIONS" in
installer)
find . -print0 \
| xargs -0r touch --no-dereference --date="@${SOURCE_DATE_EPOCH}"
find . \
| sort \
| zip -X@ "${OUTDIR}/${DISTNAME}-win-installer.zip" \
|| ( rm -f "${OUTDIR}/${DISTNAME}-win-installer.zip" && exit 1 )
;;
"")
mv feather.exe ${DISTNAME}.exe && \
find . -print0 \
| xargs -0r touch --no-dereference --date="@${SOURCE_DATE_EPOCH}"
find . \
| sort \
| zip -X@ "${OUTDIR}/${DISTNAME}-win.zip" \
|| ( rm -f "${OUTDIR}/${DISTNAME}-win.zip" && exit 1 )
;;
esac
if [[ "${TAG}" == *"-rc"* ]]; then
if [ -z "$OPTIONS" ]; then
mv feather.exe "${OUTDIR}/${DISTNAME}.exe"
fi
else
case "$OPTIONS" in
installer)
find . -print0 \
| xargs -0r touch --no-dereference --date="@${SOURCE_DATE_EPOCH}"
find . \
| sort \
| zip -X@ "${OUTDIR}/${DISTNAME}-win-installer.zip" \
|| ( rm -f "${OUTDIR}/${DISTNAME}-win-installer.zip" && exit 1 )
;;
"")
mv feather.exe ${DISTNAME}.exe && \
find . -print0 \
| xargs -0r touch --no-dereference --date="@${SOURCE_DATE_EPOCH}"
find . \
| sort \
| zip -X@ "${OUTDIR}/${DISTNAME}-win.zip" \
|| ( rm -f "${OUTDIR}/${DISTNAME}-win.zip" && exit 1 )
;;
esac
fi
;;
*linux*)
if [ "$OPTIONS" != "pack" ]; then
@ -509,6 +528,5 @@ mv --no-target-directory "$OUTDIR" "$ACTUAL_OUTDIR" \
find "$ACTUAL_OUTDIR" -type f -not -name "*.txt"
} | xargs realpath --relative-base="$PWD" \
| xargs sha256sum \
| sort -k2 \
| sponge "$LOGDIR"/SHA256SUMS.part
| sort -k2 -o "$LOGDIR"/SHA256SUMS.part
)

View file

@ -50,8 +50,8 @@ fi
# across time.
time-machine() {
# shellcheck disable=SC2086
guix time-machine --url=https://github.com/tobtoht/guix.git \
--commit=f0bb724211872cd6158fce6162e0b8c73efed126 \
guix time-machine --url=https://github.com/monero-project/guix.git \
--commit=639f79952e51a58b7fbca2a826dcc3df162300c1 \
--cores="$JOBS" \
--keep-failed \
--fallback \
@ -65,7 +65,16 @@ time-machine() {
# Set common variables
################
VERSION="${FORCE_VERSION:-$(git_head_version)}"
COMMIT="$(git_head_commit)"
TAG="$(git_head_tag)"
if [[ -n "${TAG}" ]]; then
VERSION="${TAG}"
else
VERSION="${COMMIT}"
fi
VERSION="${FORCE_VERSION:-${VERSION}}"
DISTNAME="${DISTNAME:-feather-${VERSION}}"
VERSION_BASE_DIR="${VERSION_BASE_DIR:-${PWD}}"

Some files were not shown because too many files have changed in this diff Show more