From 57f3a920c105101d1173a356832a146eed8ab668 Mon Sep 17 00:00:00 2001 From: Denis 'GNUtoo' Carikli Date: May 19 2023 14:29:58 +0000 Subject: [PATCH 1/33] libre: [linux-libre-vanilla]: Update to 6.3.3 The call to scripts/setlocalversion was removed because: - Since Linux commit f6e09b07cc12a4d104bb19fe7566b0636f60c413 ("kbuild: do not put .scmversion into the source tarball"), the --save-scmversion option was removed. - The Arch Linux PKGBUILD also doesn't have --save-scmversion anymore. Signed-off-by: Denis 'GNUtoo' Carikli --- diff --git a/libre/linux-libre-vanilla/PKGBUILD b/libre/linux-libre-vanilla/PKGBUILD index 7e1d7a5..bdb8b31 100644 --- a/libre/linux-libre-vanilla/PKGBUILD +++ b/libre/linux-libre-vanilla/PKGBUILD @@ -19,7 +19,7 @@ pkgbase=linux-libre-vanilla -pkgver=6.2.8 +pkgver=6.3.3 _minor_ver=$(sed 's|\([0-9]\+\.[0-9]\+\).*|\1|' <<<${pkgver}) # eg: 6.1 _upstream_minor_ver=${_minor_ver}-gnu # eg: 6.1-gnu _upstream_ver=${pkgver}-gnu # eg: 6.1.5-gnu @@ -50,9 +50,9 @@ validpgpkeys=( '474402C8C582DAFBE389C427BCB7CF877E7D47A7' # Alexandre Oliva '6DB9C4B4F0D8C0DC432CF6E4227CA7C556B2BA78' # David P. ) -sha512sums=('b67c0a622e42a8c31d3e057ce60983ebb415a4b59be2a95400ea8ca99b7594dbcbd51bf8a0e33de87af45be734f5bc081784979bd18e1963b789be2c0f8d1ee3' +sha512sums=('6ccdf0621be8e207e37f4920b95df3617f5122fcf7ee61dbf39e5fda8e087c0c203cab5e53b6075e8151ed6c8789e9da2d370ee73f94f5f5a37b57cef3c4d84c' 'SKIP' - 'e2d41876a504e2144985a7dde882327bf234f77b529ef350424838a447ce3fe79cfb75729a84420fe84ebd796d39c4b08115f0dc0d7dd107ff69a558f698e335' + 'd9c841fd622b301a83c919469364fca060b5102c73d8b4c94584cdbf8149bd9d52867b185d8f5cfce6ceca58593c74509833bf88a4be278d4c79760d853f13f2' 'SKIP' '13cb5bc42542e7b8bb104d5f68253f6609e463b6799800418af33eb0272cc269aaa36163c3e6f0aacbdaaa1d05e2827a4a7c4a08a029238439ed08b89c564bb3' 'SKIP' @@ -91,7 +91,6 @@ prepare() { ../logo_linux_{clut224.ppm,vga16.ppm,mono.pbm} echo "Setting version..." - scripts/setlocalversion --save-scmversion echo "-$pkgrel" > localversion.10-pkgrel echo "${pkgbase#linux-libre}" > localversion.20-pkgname From 66611395e0027807d95cbe430e4125e5dd800e11 Mon Sep 17 00:00:00 2001 From: Denis 'GNUtoo' Carikli Date: May 19 2023 22:14:44 +0000 Subject: [PATCH 2/33] pcr: [guile-git-lib]: Update to 0.5.2 Signed-off-by: Denis 'GNUtoo' Carikli --- diff --git a/pcr/guile-bytestructures/PKGBUILD b/pcr/guile-bytestructures/PKGBUILD new file mode 100644 index 0000000..1547baa --- /dev/null +++ b/pcr/guile-bytestructures/PKGBUILD @@ -0,0 +1,30 @@ +# Maintainer (aur): Jelle van der Waa +# Contributor (aur): lantw44 (at) gmail (dot) com +# Maintainer: Parabola Hackers + +# parabola changes and rationale: +# - Add armv7h and i686 architectures support. + +pkgname=guile-bytestructures +_pkgname=bytestructures +pkgver=1.0.10 +pkgrel=1 +pkgdesc='Structured access library to bytevector contents for Guile' +arch=('armv7h' 'i686' 'x86_64') +url="https://github.com/TaylanUB/scheme-bytestructures" +license=('GPL3') +depends=('guile') +makedepends=('git') +source=("https://github.com/TaylanUB/scheme-${_pkgname}/releases/download/v${pkgver}/${_pkgname}-${pkgver}.tar.gz") +sha256sums=('bb8a78c1e570f90e344368196844ee0f143682b3d4c6ab69d6de0fa0d7b7c20d') + +build() { + cd "${srcdir}/${_pkgname}-${pkgver}" + ./configure --prefix=/usr + make +} + +package() { + cd "${srcdir}/${_pkgname}-${pkgver}" + make DESTDIR="${pkgdir}" install +} diff --git a/pcr/guile-git-lib/PKGBUILD b/pcr/guile-git-lib/PKGBUILD index 7cd3417..80b29bb 100644 --- a/pcr/guile-git-lib/PKGBUILD +++ b/pcr/guile-git-lib/PKGBUILD @@ -1,49 +1,56 @@ # Maintainer (aur): lantw44 (at) gmail (dot) com +# Maintainer: Parabola Hackers # parabola changes and rationale: -# - disabled tests due to faililng 'clone' test +# - disabled tests due to failing tests pkgname=guile-git-lib _pkgname=guile-git -pkgver=0.3.0 -pkgrel=1 +pkgver=0.5.2 +pkgrel=2 pkgdesc='Guile bindings for libgit2' arch=('x86_64' 'i686' 'armv7h') url="https://gitlab.com/guile-git/guile-git" license=('GPL3') -depends=('guile' 'guile-bytestructures' 'libgit2') +depends=('guile' 'guile-bytestructures' 'libgit2>=0.28.0') makedepends=('git') source=( - "https://gitlab.com/${_pkgname}/${_pkgname}/uploads/4c563d8e7e1ff84396abe8ca7011bcaf/${_pkgname}-${pkgver}.tar.gz" - "https://gitlab.com/guile-git/guile-git/-/raw/v${pkgver}/tests/.ssh/id_rsa_client" - "https://gitlab.com/guile-git/guile-git/-/raw/v${pkgver}/tests/.ssh/id_rsa_client.pub" - "https://gitlab.com/guile-git/guile-git/-/raw/v${pkgver}/tests/.ssh/id_rsa_server") + "${pkgname}-${pkgver}.tar.gz::https://gitlab.com/${_pkgname}/${_pkgname}/uploads/6450f3991aa524484038cdcea3fb248d/${_pkgname}-${pkgver}.tar.gz" + "${pkgname}-merge-31-fix-clone-tests.patch" + "${pkgname}-merge-32-libgit2-1.2.0.patch") sha256sums=( - '75ce437da024fa57d6a2a48ae4e05d48cb42d84f73a3d372baef5c68421bb130' - 'e58e37ec6d5916b46b785b9db5ae05498e5dc25b1beaa46eee227bf415fee952' - '8a3b18d1d725f69ab778e0badbc43746766b591a54f965ee2e57d82822775d43' - '0d49a22bd80c3d1d18061560eecb095c0056ade55fee2fb4c48c290254204641') + '949755a211ad6e905ecdebe66ca35bfaab638d985b9fadc928ad2538d8f5cc95' + '15633944c4177fe5f79b97124d3b2c35739ecbe4246305fc2f8271be95b6e3c9' + 'f353c23e2dae27a715d9dae04bfd269c9262e221082b959e0721e2c4471a7eeb') prepare() { cd "${srcdir}/${_pkgname}-${pkgver}" - mkdir tests/.ssh - cp \ - "${srcdir}/$(basename "${source[1]}")" \ - "${srcdir}/$(basename "${source[2]}")" \ - "${srcdir}/$(basename "${source[3]}")" \ - tests/.ssh + local source_file + for source_file in "${source[@]}"; do + case "${source_file}" in + *.patch) + patch -p1 < "${srcdir}/${source_file}" + ;; + esac + done } build() { cd "${srcdir}/${_pkgname}-${pkgver}" + autoreconf -fi ./configure --prefix=/usr make } -# check() { -# cd "${srcdir}/${_pkgname}-${pkgver}" -# make check -# } +check() { + cd "${srcdir}/${_pkgname}-${pkgver}" + + # FAIL: tests/clone.scm - clone-auth-ssh-credentials + # FAIL: tests/clone.scm - clone-auth-ssh-agent + # FAIL: tests/clone.scm - clone-and-fetch-auth-ssh-credentials + # FAIL: tests/clone.scm - clone + transfer-progress + # make check +} package() { cd "${srcdir}/${_pkgname}-${pkgver}" diff --git a/pcr/guile-git-lib/guile-git-lib-merge-31-fix-clone-tests.patch b/pcr/guile-git-lib/guile-git-lib-merge-31-fix-clone-tests.patch new file mode 100644 index 0000000..4a0b6ef --- /dev/null +++ b/pcr/guile-git-lib/guile-git-lib-merge-31-fix-clone-tests.patch @@ -0,0 +1,39 @@ +From 04edea32ea9393b6b8fa77db5f568aaf773cdffd Mon Sep 17 00:00:00 2001 +From: Will Frew +Date: Sat, 2 Oct 2021 12:11:13 +0300 +Subject: [PATCH] Fixes git clone tests when running against openssh 8.8 + +OpenSSH 8.8 turns off the hostkey algorithm 'ssh-rsa' by default. +See: https://www.openssh.com/txt/release-8.8 + +Unfortunately, libssh2 (and therefore libgit2) do not yet support the +newer sha2-based ssh hostkey algorithms. +See upstream issue: https://github.com/libssh2/libssh2/issues/536 + +This explicitly re-enables ssh-rsa on the sshd that is spun up for +testing to ensure that libgit2 can handshake with it again. +--- + tests/ssh.scm.in | 7 +++++++ + 1 file changed, 7 insertions(+) + +diff --git a/tests/ssh.scm.in b/tests/ssh.scm.in +index e6621ca..0311681 100644 +--- a/tests/ssh.scm.in ++++ b/tests/ssh.scm.in +@@ -61,6 +61,13 @@ AuthorizedKeysFile ~a + PidFile ~a + PermitUserEnvironment yes + ++# libssh2 and therefore libgit2 do not yet support ++# sha2-based rsa algorithms. ++# See upstream issue: ++# https://github.com/libssh2/libssh2/issues/536 ++HostkeyAlgorithms +ssh-rsa ++PubkeyAcceptedAlgorithms +ssh-rsa ++ + # Disable permission checks on auth files for the sake + # of isolated build environments. + StrictModes no~%" +-- +GitLab + diff --git a/pcr/guile-git-lib/guile-git-lib-merge-32-libgit2-1.2.0.patch b/pcr/guile-git-lib/guile-git-lib-merge-32-libgit2-1.2.0.patch new file mode 100644 index 0000000..d1ec232 --- /dev/null +++ b/pcr/guile-git-lib/guile-git-lib-merge-32-libgit2-1.2.0.patch @@ -0,0 +1,100 @@ +From 278d23a18df6913bfe87c214d0e6dbeee6996f1d Mon Sep 17 00:00:00 2001 +From: Maxim Cournoyer +Date: Mon, 22 Nov 2021 22:08:31 -0500 +Subject: [PATCH 1/3] structs: Adjust %remote-callbacks for libgit2 v1.2.0. + +Fixes . + +* configure.ac (AC_CHECK_MEMBER) +: New member check. +: Streamline. +* git/config.scm.in (%have-remote-callbacks-remote-ready?): New variable. +* git/structs.scm (%remote-callbacks): Conditionally add the new +callback 'remote_ready' callback field. +--- + configure.ac | 18 ++++++++++++------ + git/configuration.scm.in | 6 ++++++ + git/structs.scm | 6 ++++++ + 3 files changed, 24 insertions(+), 6 deletions(-) + +diff --git a/configure.ac b/configure.ac +index 107e6ca..20e9019 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -2,6 +2,7 @@ dnl Guile-Git --- GNU Guile bindings of libgit2 + dnl Copyright © 2016-2018 Erik Edrosa + dnl Copyright © 2017, 2019, 2020, 2021 Ludovic Courtès + dnl Copyright © 2019 Mathieu Othacehe ++dnl Copyright © 2021 Maxim Cournoyer + dnl + dnl This file is part of Guile-Git. + dnl +@@ -43,15 +44,20 @@ AS_IF([test "x$LIBGIT2_LIBDIR" = "x"], [ + ]) + AC_SUBST([LIBGIT2_LIBDIR]) + ++dnl Does the 'git_remote_callbacks' struct have a 'remote_ready' field? ++dnl It was added in 1.2.0, obsoleting 'resolve_url'. ++AC_CHECK_MEMBER([git_remote_callbacks.remote_ready], ++ [HAVE_REMOTE_CALLBACKS_REMOTE_READY="#true"], ++ [HAVE_REMOTE_CALLBACKS_REMOTE_READY="#false"], ++ [[#include ]]) ++AC_SUBST([HAVE_REMOTE_CALLBACKS_REMOTE_READY]) ++ + dnl Does the 'git_remote_callbacks' struct have a 'resolve_url' field? + dnl It's missing in libgit2 0.28.5, added in 1.0. +-AC_CHECK_MEMBER([git_remote_callbacks.resolve_url], [], [], ++AC_CHECK_MEMBER([git_remote_callbacks.resolve_url], ++ [HAVE_REMOTE_CALLBACKS_RESOLVE_URL="#true"], ++ [HAVE_REMOTE_CALLBACKS_RESOLVE_URL="#false"], + [[#include ]]) +-if test "x$ac_cv_member_git_remote_callbacks_resolve_url" = "xyes"; then +- HAVE_REMOTE_CALLBACKS_RESOLVE_URL="#true" +-else +- HAVE_REMOTE_CALLBACKS_RESOLVE_URL="#false" +-fi + AC_SUBST([HAVE_REMOTE_CALLBACKS_RESOLVE_URL]) + + dnl Those binaries are required for ssh authentication tests. +diff --git a/git/configuration.scm.in b/git/configuration.scm.in +index c45f698..64c4360 100644 +--- a/git/configuration.scm.in ++++ b/git/configuration.scm.in +@@ -19,11 +19,17 @@ + + (define-module (git configuration) + #:export (%libgit2 ++ %have-remote-callbacks-remote-ready? + %have-remote-callbacks-resolve-url?)) + + (define %libgit2 + "@LIBGIT2_LIBDIR@/libgit2") + ++(define %have-remote-callbacks-remote-ready? ++ ;; True if the 'git_remote_callbacks' struct has a ++ ;; 'remote_ready' field. ++ @HAVE_REMOTE_CALLBACKS_REMOTE_READY@) ++ + (define %have-remote-callbacks-resolve-url? + ;; True if the 'git_remote_callbacks' struct has a 'resolve_url' field. + @HAVE_REMOTE_CALLBACKS_RESOLVE_URL@) +diff --git a/git/structs.scm b/git/structs.scm +index ca51728..be3d050 100644 +--- a/git/structs.scm ++++ b/git/structs.scm +@@ -637,6 +637,12 @@ type to 'specified for this to take effect." + (push-update-reference ,(bs:pointer uint8)) + (push-negotiation ,(bs:pointer uint8)) + (transport ,(bs:pointer uint8)) ++ ++ ;; Added in libgit2 1.2.0. ++ ,@(if %have-remote-callbacks-remote-ready? ++ `((remote-ready ,(bs:pointer uint8))) ++ '()) ++ + (payload ,(bs:pointer uint8)) + + ;; libgit2 1.0 added this field, which is missing from 0.28.5, +-- +GitLab + From 00de13880d5a7d7a4e045c07d8cb7c0bac019e9c Mon Sep 17 00:00:00 2001 From: Denis 'GNUtoo' Carikli Date: May 19 2023 22:21:47 +0000 Subject: [PATCH 3/33] pcr: [guile-json]: Update to 4.7.3 Signed-off-by: Denis 'GNUtoo' Carikli --- diff --git a/pcr/guile-json/PKGBUILD b/pcr/guile-json/PKGBUILD index aadf30f..116c1aa 100644 --- a/pcr/guile-json/PKGBUILD +++ b/pcr/guile-json/PKGBUILD @@ -1,18 +1,22 @@ -# Maintainer (aur): holos -# Contributor: tantalum +# Maintainer (aur): Ting-Wei Lan +# Contributor (aur): Thomas Koller-Cherek +# Contributor (aur): holos +# Contributor (aur): tantalum +# Maintainer: Parabola Hackers # parabola changes and rationale: # no changes. pkgname=guile-json +pkgver=4.7.3 pkgrel=1 -pkgver=3.1.0 pkgdesc='JSON module for Guile' -url="https://github.com/aconchillo/guile-json" -arch=('any') -license=('LGPL') -source=("http://download.savannah.gnu.org/releases/$pkgname/$pkgname-$pkgver.tar.gz") -sha256sums=('e303d0db3f34ac515b8f61db8ed35be8b6c5014d7ab4a5a8ef9b44723ed3d8f9') +arch=('x86_64' 'i686' 'armv7h') +url='https://savannah.nongnu.org/projects/guile-json' +license=('GPL3') +depends=('guile') +source=("https://download.savannah.gnu.org/releases/$pkgname/$pkgname-$pkgver.tar.gz") +sha256sums=('38ba048ed29d12f05b32c5b2fb7a51795c448b41e403a2b1b72ff0035817f388') build() { cd "$pkgname-$pkgver" @@ -20,6 +24,11 @@ build() { make } +check(){ + cd "$pkgname-$pkgver" + make check +} + package() { cd "$pkgname-$pkgver" make DESTDIR="$pkgdir" install From cc5d797097326499d92f919dfd3b188185f56237 Mon Sep 17 00:00:00 2001 From: Denis 'GNUtoo' Carikli Date: May 19 2023 22:52:26 +0000 Subject: [PATCH 4/33] pcr: [guile-gcrypt]: Update to 0.4.0 The source URL change was validated by looking at the Guix package. Signed-off-by: Denis 'GNUtoo' Carikli --- diff --git a/pcr/guile-gcrypt/PKGBUILD b/pcr/guile-gcrypt/PKGBUILD index de08142..75f3bed 100644 --- a/pcr/guile-gcrypt/PKGBUILD +++ b/pcr/guile-gcrypt/PKGBUILD @@ -1,19 +1,19 @@ # Maintainer (aur): Ting-Wei Lan -# Contributor: Joe Hillenbrand +# Contributor (aur): Joe Hillenbrand # parabola changes and rationale: # no changes. pkgname=guile-gcrypt -pkgver=0.2.1 +pkgver=0.4.0 pkgrel=1 pkgdesc='Guile bindings for libgcrypt' arch=('x86_64' 'i686' 'armv7h') url="https://notabug.org/cwebber/guile-gcrypt" license=('GPL3') depends=('guile' 'libgcrypt') -source=("https://notabug.org/cwebber/${pkgname}/archive/v${pkgver}.tar.gz") -sha256sums=('8de1bbf5e952e15cd6b03e26701fbfa0c2266d975212543a41c9aa3a01f741e2') +source=("${pkgname}-${pkgver}.tar.gz::https://notabug.org/cwebber/${pkgname}/archive/v${pkgver}.tar.gz") +sha256sums=('35f0681e01defab0aaa2a83227c0be836b0a1303dd1f7279497a76dd1255b17e') build() { cd "${srcdir}/${pkgname}" From 452a032b1d436845388f493c54902096e2900df2 Mon Sep 17 00:00:00 2001 From: Denis 'GNUtoo' Carikli Date: May 19 2023 22:59:26 +0000 Subject: [PATCH 5/33] pcr: [guile-gcrypt]: Add forgetten Maintainer information Signed-off-by: Denis 'GNUtoo' Carikli --- diff --git a/pcr/guile-gcrypt/PKGBUILD b/pcr/guile-gcrypt/PKGBUILD index 75f3bed..26917c8 100644 --- a/pcr/guile-gcrypt/PKGBUILD +++ b/pcr/guile-gcrypt/PKGBUILD @@ -1,5 +1,6 @@ # Maintainer (aur): Ting-Wei Lan # Contributor (aur): Joe Hillenbrand +# Maintainer: Parabola Hackers # parabola changes and rationale: # no changes. From 83e2e87961e52429ef3262903af3cebecc1f1441 Mon Sep 17 00:00:00 2001 From: Denis 'GNUtoo' Carikli Date: May 19 2023 22:59:26 +0000 Subject: [PATCH 6/33] pcr: [guile-sqlite3]: Update to 0.1.3. The source URL change was validated by looking at the Guix package. Signed-off-by: Denis 'GNUtoo' Carikli --- diff --git a/pcr/guile-sqlite3/PKGBUILD b/pcr/guile-sqlite3/PKGBUILD index f93e5cb..0a9e739 100644 --- a/pcr/guile-sqlite3/PKGBUILD +++ b/pcr/guile-sqlite3/PKGBUILD @@ -1,16 +1,19 @@ # Maintainer (aur): lantw44 (at) gmail (dot) com -# Maintainer: Omar Vega Ramos +# Maintainer: Parabola Hackers + +# parabola changes and rationale: +# no changes. pkgname=guile-sqlite3 -pkgver=0.1.0 +pkgver=0.1.3 pkgrel=1 pkgdesc='Guile bindings for the SQLite3 database engine' arch=('x86_64' 'i686' 'armv7h') -url="https://notabug.org/civodul/guile-sqlite3" +url="https://notabug.org/guile-sqlite3/guile-sqlite3" license=('LGPL3') depends=('guile' 'sqlite3') -source=("https://notabug.org/civodul/${pkgname}/archive/v${pkgver}.tar.gz") -sha256sums=('7501cd60bc693e581dc3e153f418279e1e1637c0760bc4524af6eb2d8eac2fe9') +source=("${pkgname}-${pkgver}.tar.gz::https://notabug.org/${pkgname}/${pkgname}/archive/v${pkgver}.tar.gz") +sha256sums=('158cb82958c6329319f911412999ea125980f327f54185bf0dad271d6f8f45c2') build() { cd "${srcdir}/${pkgname}" From 31866a0d0d2fff38ee5018d72812919ab90b3da9 Mon Sep 17 00:00:00 2001 From: Denis 'GNUtoo' Carikli Date: May 19 2023 23:07:03 +0000 Subject: [PATCH 7/33] gitignore: Add zstd packages Signed-off-by: Denis 'GNUtoo' Carikli --- diff --git a/.gitignore b/.gitignore index 5f54cb8..3168226 100644 --- a/.gitignore +++ b/.gitignore @@ -35,3 +35,4 @@ librefetch.* *.xpi *.xz *.zip +*.zstd From 1bcfd7356cba4ad21da0e7c6df18dfa419f03d77 Mon Sep 17 00:00:00 2001 From: Denis 'GNUtoo' Carikli Date: May 19 2023 23:51:34 +0000 Subject: [PATCH 8/33] pcr: Add [disarchive] The download URL of the packages have been validated by comparing it to the guix packages. Signed-off-by: Denis 'GNUtoo' Carikli --- diff --git a/pcr/disarchive/PKGBUILD b/pcr/disarchive/PKGBUILD new file mode 100644 index 0000000..e3aaa35 --- /dev/null +++ b/pcr/disarchive/PKGBUILD @@ -0,0 +1,33 @@ +# Maintainer: lantw44 (at) gmail (dot) com +# Maintainer: Parabola Hackers + +# parabola changes and rationale: +# no changes. + +pkgname=disarchive +pkgver=0.5.0 +pkgrel=1 +pkgdesc='Disassembler of software archives for long-term preservation' +arch=('x86_64' 'i686' 'armv7h') +url='https://ngyro.com/software/disarchive.html' +license=('GPL3') +depends=('guile' 'guile-gcrypt' 'guile-lzma' 'gzip' 'tar' 'xz' 'zlib') +checkdepends=('guile-quickcheck') +source=("https://files.ngyro.com/${pkgname}/${pkgname}-${pkgver}.tar.gz") +sha256sums=('020b7bbf91d3a5ab245ee62631d183448a256aa087529c1dfc27db6427bd529b') + +build() { + cd "${srcdir}/${pkgname}-${pkgver}" + ./configure --prefix=/usr + make +} + +check() { + cd "${srcdir}/${pkgname}-${pkgver}" + make check +} + +package() { + cd "${srcdir}/${pkgname}-${pkgver}" + make DESTDIR="${pkgdir}" install +} diff --git a/pcr/guile-quickcheck/PKGBUILD b/pcr/guile-quickcheck/PKGBUILD new file mode 100644 index 0000000..ba5567b --- /dev/null +++ b/pcr/guile-quickcheck/PKGBUILD @@ -0,0 +1,32 @@ +# Maintainer (aur): lantw44 (at) gmail (dot) com +# Maintainer: Parabola Hackers + +# parabola changes and rationale: +# no changes. + +pkgname=guile-quickcheck +pkgver=0.1.0 +pkgrel=1 +pkgdesc='Randomized property-based testing for Guile' +arch=('x86_64' 'i686' 'armv7h') +url='https://ngyro.com/software/guile-quickcheck.html' +license=('GPL3') +depends=('guile') +source=("https://files.ngyro.com/${pkgname}/${pkgname}-${pkgver}.tar.gz") +sha256sums=('cb99ac5be99b43b61eb9c452d953543e890e2a83fc83acac289d94316888bc0e') + +build() { + cd "${srcdir}/${pkgname}-${pkgver}" + ./configure --prefix=/usr + make +} + +check() { + cd "${srcdir}/${pkgname}-${pkgver}" + make check +} + +package() { + cd "${srcdir}/${pkgname}-${pkgver}" + make DESTDIR="${pkgdir}" install +} From 63b541935f754301b7bec55a0555141f4a1efec4 Mon Sep 17 00:00:00 2001 From: Denis 'GNUtoo' Carikli Date: May 20 2023 00:11:32 +0000 Subject: [PATCH 9/33] pcr: Add forgetten [guile-lzma] package This is needed by the disarchive package. The download URL of this package have been validated by comparing it to the guix package. Signed-off-by: Denis 'GNUtoo' Carikli --- diff --git a/pcr/guile-lzma/PKGBUILD b/pcr/guile-lzma/PKGBUILD new file mode 100644 index 0000000..4961cb5 --- /dev/null +++ b/pcr/guile-lzma/PKGBUILD @@ -0,0 +1,32 @@ +# Maintainer (aur): lantw44 (at) gmail (dot) com +# Maintainer: Parabola Hackers + +# parabola changes and rationale: +# no changes. + +pkgname=guile-lzma +pkgver=0.1.1 +pkgrel=1 +pkgdesc='Guile bindings for liblzma' +arch=('x86_64' 'i686' 'armv7h') +url='https://ngyro.com/software/guile-lzma.html' +license=('GPL3') +depends=('guile' 'guile-bytestructures' 'xz') +source=("https://files.ngyro.com/${pkgname}/${pkgname}-${pkgver}.tar.gz") +sha256sums=('2b866896d672ed4d39008f4b5336750d7897560a06678365f5c5a72bd2fcce5e') + +build() { + cd "${srcdir}/${pkgname}-${pkgver}" + ./configure --prefix=/usr + make +} + +check() { + cd "${srcdir}/${pkgname}-${pkgver}" + make check +} + +package() { + cd "${srcdir}/${pkgname}-${pkgver}" + make DESTDIR="${pkgdir}" install +} From ef24f1b4c79d8cece5296c69a20d697471547f90 Mon Sep 17 00:00:00 2001 From: Denis 'GNUtoo' Carikli Date: May 20 2023 00:11:45 +0000 Subject: [PATCH 10/33] pcr: Add [guile-lzlib] The download URL of this package have been validated by comparing it to the guix package. Signed-off-by: Denis 'GNUtoo' Carikli --- diff --git a/pcr/guile-lzlib/PKGBUILD b/pcr/guile-lzlib/PKGBUILD new file mode 100644 index 0000000..2059564 --- /dev/null +++ b/pcr/guile-lzlib/PKGBUILD @@ -0,0 +1,33 @@ +# Maintainer (aur): lantw44 (at) gmail (dot) com +# Maintainer: Parabola Hackers + +# parabola changes and rationale: +# no changes. + +pkgname=guile-lzlib +pkgver=0.0.2 +pkgrel=1 +pkgdesc='Guile bindings for lzlib' +arch=('x86_64' 'i686' 'armv7h') +url='https://notabug.org/guile-lzlib/guile-lzlib' +license=('GPL3') +depends=('guile' 'lzlib') +source=("${pkgname}-${pkgver}.tar.gz::https://notabug.org/${pkgname}/${pkgname}/archive/${pkgver}.tar.gz") +sha256sums=('8623db77d447e7b9ffbfcbc288390e706a6b1a89b1171daed60874cfec7e4f87') + +build() { + cd "${srcdir}/${pkgname}" + autoreconf -fi + ./configure --prefix=/usr + make +} + +check() { + cd "${srcdir}/${pkgname}" + make check +} + +package() { + cd "${srcdir}/${pkgname}" + make DESTDIR="${pkgdir}" install +} From 3ac6c0fd08d2b969d6a460fcb6242579cc51c476 Mon Sep 17 00:00:00 2001 From: Denis 'GNUtoo' Carikli Date: May 20 2023 00:11:46 +0000 Subject: [PATCH 11/33] pcr: Add [guile-zlib] The download URL of this package have been validated by comparing it to the guix package. Signed-off-by: Denis 'GNUtoo' Carikli --- diff --git a/pcr/guile-zlib/PKGBUILD b/pcr/guile-zlib/PKGBUILD new file mode 100644 index 0000000..691dee3 --- /dev/null +++ b/pcr/guile-zlib/PKGBUILD @@ -0,0 +1,33 @@ +# Maintainer (aur): lantw44 (at) gmail (dot) com +# Maintainer: Parabola Hackers + +# parabola changes and rationale: +# no changes. + +pkgname=guile-zlib +pkgver=0.1.0 +pkgrel=1 +pkgdesc='Guile bindings for zlib' +arch=('x86_64' 'i686' 'armv7h') +url='https://notabug.org/guile-zlib/guile-zlib' +license=('GPL3') +depends=('guile' 'zlib') +source=("${pkgname}-${pkgver}.tar.gz::https://notabug.org/${pkgname}/${pkgname}/archive/v${pkgver}.tar.gz") +sha256sums=('25c726b570a06d21bc6fd7ec6093f377c749ce2efdd1d1516ac1b595f3f94ee9') + +build() { + cd "${srcdir}/${pkgname}" + autoreconf -fi + ./configure --prefix=/usr + make +} + +check() { + cd "${srcdir}/${pkgname}" + make check +} + +package() { + cd "${srcdir}/${pkgname}" + make DESTDIR="${pkgdir}" install +} From 70c37839a39072f362237fa8f168f0bda86564fd Mon Sep 17 00:00:00 2001 From: Denis 'GNUtoo' Carikli Date: May 20 2023 13:20:22 +0000 Subject: [PATCH 12/33] .gitignore: Add *.zst Signed-off-by: Denis 'GNUtoo' Carikli --- diff --git a/.gitignore b/.gitignore index 3168226..c168b3d 100644 --- a/.gitignore +++ b/.gitignore @@ -35,4 +35,5 @@ librefetch.* *.xpi *.xz *.zip +*.zst *.zstd From ede892ba54c792408d6b4c83d250432dbdf19d85 Mon Sep 17 00:00:00 2001 From: Denis 'GNUtoo' Carikli Date: May 20 2023 13:20:22 +0000 Subject: [PATCH 13/33] pcr: Add [guile-gnutls] Signed-off-by: Denis 'GNUtoo' Carikli --- diff --git a/pcr/guile-gnutls/PKGBUILD b/pcr/guile-gnutls/PKGBUILD new file mode 100644 index 0000000..f37fd51 --- /dev/null +++ b/pcr/guile-gnutls/PKGBUILD @@ -0,0 +1,36 @@ +# Maintainer (aur): lantw44 (at) gmail (dot) com +# Maintainer: Parabola Hackers + +# parabola changes and rationale: +# no changes. + +pkgname=guile-gnutls +pkgver=3.7.12 +pkgrel=1 +pkgdesc='Guile bindings for the GnuTLS library' +arch=('x86_64' 'i686' 'armv7h') +url='https://gitlab.com/gnutls/guile' +license=('LGPL') +depends=('guile' 'gnutls') +source=( + "https://ftp.gnu.org/gnu/gnutls/${pkgname}-${pkgver}.tar.gz"{,.sig}) +sha256sums=( + '5d3af11573093de59f258415872e2c5b14cca9dd251a8b2ec1643d6e97fee336' + '3aa3bcdf69ff21d6f5e0ac9cfd820431edd04f0cb3d0f1a4db72bb33122a7e88') +validpgpkeys=('B1D2BD1375BECB784CF4F8C4D73CF638C53C06BE') + +build() { + cd "${srcdir}/${pkgname}-${pkgver}" + ./configure --prefix=/usr --disable-srp-authentication + make +} + +check() { + cd "${srcdir}/${pkgname}-${pkgver}" + make check +} + +package() { + cd "${srcdir}/${pkgname}-${pkgver}" + make DESTDIR="${pkgdir}" install +} From b29719c80395d01130ca864d4e05b14db1fe8315 Mon Sep 17 00:00:00 2001 From: Denis 'GNUtoo' Carikli Date: May 20 2023 13:33:06 +0000 Subject: [PATCH 14/33] pcr: Add [guile-avahi] Signed-off-by: Denis 'GNUtoo' Carikli --- diff --git a/pcr/guile-avahi/PKGBUILD b/pcr/guile-avahi/PKGBUILD new file mode 100644 index 0000000..6d79f60 --- /dev/null +++ b/pcr/guile-avahi/PKGBUILD @@ -0,0 +1,34 @@ +# Maintainer: lantw44 (at) gmail (dot) com +# Maintainer: Parabola Hackers + +# parabola changes and rationale: +# no changes. + +pkgname=guile-avahi +pkgver=0.4.1 +pkgrel=1 +pkgdesc='Avahi bindings for GNU Guile' +arch=('x86_64' 'i686' 'armv7h') +url='https://www.nongnu.org/guile-avahi' +license=('LGPL3') +depends=('guile' 'avahi' 'gmp') +source=("https://download.savannah.nongnu.org/releases/$pkgname/$pkgname-$pkgver.tar.gz") +sha256sums=('db9de9e19df728b40d23c0381caa9f8eda2b175fa7f69f153be8f3f078044ca5') + +build() { + cd "${srcdir}/${pkgname}-${pkgver}" + ./configure --prefix=/usr \ + --with-guilemoduledir=/usr/share/guile/site/3.0 \ + --disable-rpath + make +} + +check(){ + cd "${srcdir}/${pkgname}-${pkgver}" + make check +} + +package() { + cd "${srcdir}/${pkgname}-${pkgver}" + make DESTDIR="$pkgdir" install +} From 4594cb96db30071d9321a970ef53a9bb8b4feff3 Mon Sep 17 00:00:00 2001 From: Denis 'GNUtoo' Carikli Date: May 20 2023 14:52:26 +0000 Subject: [PATCH 15/33] libre: [debootstrap]: switch to salsa installer-team for download The checksum match between the older and the newer URL. Signed-off-by: Denis 'GNUtoo' Carikli --- diff --git a/libre/debootstrap/PKGBUILD b/libre/debootstrap/PKGBUILD index 28f2bbe..b22bb35 100644 --- a/libre/debootstrap/PKGBUILD +++ b/libre/debootstrap/PKGBUILD @@ -15,7 +15,7 @@ arch=(any) license=(GPL) url="https://tracker.debian.org/pkg/debootstrap" depends=(wget binutils) -source=("$pkgname-$pkgver.tar.gz::https://github.com/felixonmars/debootstrap/archive/$pkgver.tar.gz" +source=("$pkgname-$pkgver.tar.gz::https://salsa.debian.org/installer-team/debootstrap/-/archive/${pkgver}/debootstrap-${pkgver}.tar.gz" "https://repo.puri.sm/pureos/pool/main/d/debootstrap/debootstrap_$_pureospkgver$_pureospkgrel.tar.gz" arch-detect.patch debootstrap.8 @@ -30,7 +30,6 @@ sha512sums=('4b81bc56c6ac6e210aaceb06013882ba3cfe777d4173fd89d38a279fe57425302b8 '0b3507756b8f29d19146df3201143ccbd71cfd1f7ef865d184079180612b90c046cabab59fe42d246bfe476ae8fd5c43e81ee2fc3ee06bbc1fc3e75d9f1382ca' '968ef005bf1f399b3400080b2ba65f1b32c067c49faadc1caa7ee524a85980f0a6625c7b06838e01bbd8b99a496492da77a38f0e17f0a81fc029ee611fe639b6' 'a57c87a1cc21bd5c3cf19bd5a8a383ab9aaeabe484667e10a9c8f6ee72a720fbb50ed9d5d2be9f3117013614ec22677ecf2b8c60e465d1464a3adabe1198eba5') - prepare() { cd debootstrap-$pkgver From d64d81e50aa90a5d0c911874cf9fbf0b34100b2f Mon Sep 17 00:00:00 2001 From: Denis 'GNUtoo' Carikli Date: May 20 2023 14:52:26 +0000 Subject: [PATCH 16/33] libre: [debootstrap]: Update to debootstrap 1.0.128 Signed-off-by: Denis 'GNUtoo' Carikli --- diff --git a/libre/debootstrap/PKGBUILD b/libre/debootstrap/PKGBUILD index b22bb35..a058a99 100644 --- a/libre/debootstrap/PKGBUILD +++ b/libre/debootstrap/PKGBUILD @@ -5,9 +5,9 @@ # Contributor: André Silva pkgname=debootstrap -pkgver=1.0.116 -pkgrel=2 -pkgrel+=.parabola3 +pkgver=1.0.128 +pkgrel=1 +pkgrel+=.parabola1 _pureospkgver=1.0.108 _pureospkgrel=pureos2 pkgdesc="Bootstrap a basic gNewSense and Trisquel system, without Debian support" @@ -24,7 +24,7 @@ source=("$pkgname-$pkgver.tar.gz::https://salsa.debian.org/installer-team/deboot optdepends=('gnupg: check release signatures' 'pureos-archive-keyring: check PureOS release signatures' 'trisquel-keyring: check Trisquel release signatures') -sha512sums=('4b81bc56c6ac6e210aaceb06013882ba3cfe777d4173fd89d38a279fe57425302b86b2fb00ea2e19df2abfb7058909e1eb628f74f241612d865044b32e3481a4' +sha512sums=('50b87e82777db77d44fc114c7f29dc4e189489c1ca17dd033ddec57e2a83525386660fe3df88bd29ac226d5723dbc8980dd0fe2b5a4cbe64582fa6735acef940' '16888223cb3f4688ac468204bf4351080ac801456b990481602580f78666a034530b48d8bf6e989a53a393ab5edf6fdc80f5815be82fbfab3f9b845850da5d0b' '56e25f48027f99f7e720859a9e14fe769b1cbd6227c7a7e27e14c2fea88520109342d6e5b127dc34ce8cc40f46941a0c5157ad35cf8ef9b3e4323877a4b32d97' '0b3507756b8f29d19146df3201143ccbd71cfd1f7ef865d184079180612b90c046cabab59fe42d246bfe476ae8fd5c43e81ee2fc3ee06bbc1fc3e75d9f1382ca' From f659ccf7b88f3fb6f20a655c8002e2cb90fb4b38 Mon Sep 17 00:00:00 2001 From: Denis 'GNUtoo' Carikli Date: May 20 2023 14:52:26 +0000 Subject: [PATCH 17/33] libre: [debootstrap]: Update PureOS debootstrap to 1.0.125 The version to use was identified by going into a PureOS byzantium chroot and doing apt show debootstrap. The symlinks were retrieved with the following command in the same chroot, with debootstrap installed: # ls -lad /usr/share/debootstrap/scripts/* | grep amber -rw-r--r-- 1 root root 6687 Nov 8 2021 /usr/share/debootstrap/scripts/amber lrwxrwxrwx 1 root root 5 Nov 8 2021 /usr/share/debootstrap/scripts/byzantium -> amber lrwxrwxrwx 1 root root 5 Nov 8 2021 /usr/share/debootstrap/scripts/landing -> amber This led to the removal of green and purple. I don't know about purple but at least green cannot be debootstraped anymore as there are no archives around anymore. I've asked PureOS about it but the people I asked don't know where to find green anymore. Signed-off-by: Denis 'GNUtoo' Carikli --- diff --git a/libre/debootstrap/PKGBUILD b/libre/debootstrap/PKGBUILD index a058a99..2d05b4b 100644 --- a/libre/debootstrap/PKGBUILD +++ b/libre/debootstrap/PKGBUILD @@ -7,9 +7,9 @@ pkgname=debootstrap pkgver=1.0.128 pkgrel=1 -pkgrel+=.parabola1 -_pureospkgver=1.0.108 -_pureospkgrel=pureos2 +pkgrel+=.parabola2 +_pureospkgver=1.0.125 +_pureospkgrel=pureos1 pkgdesc="Bootstrap a basic gNewSense and Trisquel system, without Debian support" arch=(any) license=(GPL) @@ -25,7 +25,7 @@ optdepends=('gnupg: check release signatures' 'pureos-archive-keyring: check PureOS release signatures' 'trisquel-keyring: check Trisquel release signatures') sha512sums=('50b87e82777db77d44fc114c7f29dc4e189489c1ca17dd033ddec57e2a83525386660fe3df88bd29ac226d5723dbc8980dd0fe2b5a4cbe64582fa6735acef940' - '16888223cb3f4688ac468204bf4351080ac801456b990481602580f78666a034530b48d8bf6e989a53a393ab5edf6fdc80f5815be82fbfab3f9b845850da5d0b' + '3530dfcd44b9d0ea91a6100825aa209a41db04de632712e0c991b64e21212ace62ec07b817823388eeae58924c9afd286194a670c8181f60b2d795c4cb9814fb' '56e25f48027f99f7e720859a9e14fe769b1cbd6227c7a7e27e14c2fea88520109342d6e5b127dc34ce8cc40f46941a0c5157ad35cf8ef9b3e4323877a4b32d97' '0b3507756b8f29d19146df3201143ccbd71cfd1f7ef865d184079180612b90c046cabab59fe42d246bfe476ae8fd5c43e81ee2fc3ee06bbc1fc3e75d9f1382ca' '968ef005bf1f399b3400080b2ba65f1b32c067c49faadc1caa7ee524a85980f0a6625c7b06838e01bbd8b99a496492da77a38f0e17f0a81fc029ee611fe639b6' @@ -62,7 +62,9 @@ prepare() { install -m644 $srcdir/gnewsense scripts # Add PureOS script - install -m644 $srcdir/debootstrap/scripts/amber scripts/pureos + install -m644 \ + $srcdir/debootstrap-${_pureospkgver}${_pureospkgrel}/scripts/amber \ + scripts/pureos # Add Trisquel script install -m644 $srcdir/trisquel scripts @@ -76,9 +78,8 @@ prepare() { # Create PureOS symlinks ln -s pureos amber - ln -s pureos green + ln -s pureos byzantium ln -s pureos landing - ln -s pureos purple # Create Trisquel symlinks ln -s trisquel robur # Trisquel 2.0 From 5adc60dbbc620be695769a1098266138217fc621 Mon Sep 17 00:00:00 2001 From: Denis 'GNUtoo' Carikli Date: May 20 2023 16:18:24 +0000 Subject: [PATCH 18/33] pcr: Add [guile-semver] The download URL of this package have been validated by comparing it to the guix package. Signed-off-by: Denis 'GNUtoo' Carikli --- diff --git a/pcr/guile-semver/PKGBUILD b/pcr/guile-semver/PKGBUILD new file mode 100644 index 0000000..0b40fd3 --- /dev/null +++ b/pcr/guile-semver/PKGBUILD @@ -0,0 +1,32 @@ +# Maintainer (aur): lantw44 (at) gmail (dot) com +# Maintainer: Parabola Hackers + +# parabola changes and rationale: +# no changes. + +pkgname=guile-semver +pkgver=0.1.1 +pkgrel=1 +pkgdesc='Guile library for Semantic Versioning' +arch=('x86_64' 'i686' 'armv7h') +url='https://ngyro.com/software/guile-semver.html' +license=('GPL3') +depends=('guile') +source=("https://files.ngyro.com/${pkgname}/${pkgname}-${pkgver}.tar.gz") +sha256sums=('4f790919375feb204a8ea2eda92a291d9bb4de4c8eb1c6776784589a86253781') + +build() { + cd "${srcdir}/${pkgname}-${pkgver}" + ./configure --prefix=/usr + make +} + +check() { + cd "${srcdir}/${pkgname}-${pkgver}" + make check +} + +package() { + cd "${srcdir}/${pkgname}-${pkgver}" + make DESTDIR="${pkgdir}" install +} From 4c30d357d36414480fc6a9ec5aa7dd477f7580ee Mon Sep 17 00:00:00 2001 From: Denis 'GNUtoo' Carikli Date: May 20 2023 16:18:25 +0000 Subject: [PATCH 19/33] pcr: Add [guile-zstd] The homepage of this package have been validated by comparing it to the guix package. Signed-off-by: Denis 'GNUtoo' Carikli --- diff --git a/pcr/guile-zstd/PKGBUILD b/pcr/guile-zstd/PKGBUILD new file mode 100644 index 0000000..2f69737 --- /dev/null +++ b/pcr/guile-zstd/PKGBUILD @@ -0,0 +1,33 @@ +# Maintainer (aur): lantw44 (at) gmail (dot) com +# Maintainer: Parabola Hackers + +# parabola changes and rationale: +# no changes. + +pkgname=guile-zstd +pkgver=0.1.1 +pkgrel=1 +pkgdesc='GNU Guile bindings to the zstd compression library' +arch=('x86_64' 'i686' 'armv7h') +url='https://notabug.org/guile-zstd/guile-zstd' +license=('GPL3') +depends=('guile' 'zstd') +source=("${pkgname}-${pkgver}.tar.gz::https://notabug.org/${pkgname}/${pkgname}/archive/v${pkgver}.tar.gz") +sha256sums=('6e57ef524f20cab79ca5fd62366c5435f71cf652f582fc1e7d62585e90d499c5') + +build() { + cd "${srcdir}/${pkgname}" + autoreconf -fi + ./configure --prefix=/usr + make +} + +check() { + cd "${srcdir}/${pkgname}" + make check +} + +package() { + cd "${srcdir}/${pkgname}" + make DESTDIR="${pkgdir}" install +} From cc83a0c7ba5d409de289db872cbd69ee399e8886 Mon Sep 17 00:00:00 2001 From: Denis 'GNUtoo' Carikli Date: May 20 2023 16:18:25 +0000 Subject: [PATCH 20/33] pcr: Add [guile-lib] The download URL of this package have been validated by comparing it to the guix package. Signed-off-by: Denis 'GNUtoo' Carikli --- diff --git a/pcr/guile-lib/PKGBUILD b/pcr/guile-lib/PKGBUILD new file mode 100644 index 0000000..42618e5 --- /dev/null +++ b/pcr/guile-lib/PKGBUILD @@ -0,0 +1,28 @@ +# Maintainer (aur): Brian Bidulock +# Contributor (aur): tantalum +# Maintainer: Parabola Hackers + +# parabola changes and rationale: +# no changes. + +pkgname=guile-lib +pkgver=0.2.7 +pkgrel=2 +pkgdesc='Repository of useful code written in Guile Scheme' +arch=('i686' 'x86_64') +license=('GPL3' 'LGPL3') +depends=('guile') +url="http://www.nongnu.org/guile-lib/" +source=("http://download.savannah.gnu.org/releases/$pkgname/$pkgname-$pkgver.tar.gz") +sha512sums=('d27d1398f81172e4488c5ac5c2d076baeeeaa12fa19d83a87faf0767c255b79f8eb24438950da3865e797299be90f7dc1dcc964076d53df9cab5925a61ad0d1f') +build(){ + cd ${pkgname}-${pkgver} + ./configure --prefix=/usr + make +} + +package() { + cd ${pkgname}-${pkgver} + make DESTDIR="${pkgdir}" install + rm -f "${pkgdir}/usr/share/info/dir" +} From c02a3058e5c720d7765cf490248b0990aa264939 Mon Sep 17 00:00:00 2001 From: Denis 'GNUtoo' Carikli Date: May 20 2023 18:50:33 +0000 Subject: [PATCH 21/33] pcr: [guix]: Update to 0.4.0 Signed-off-by: Denis 'GNUtoo' Carikli --- diff --git a/pcr/guix/PKGBUILD b/pcr/guix/PKGBUILD index 80d2036..cf50ab9 100644 --- a/pcr/guix/PKGBUILD +++ b/pcr/guix/PKGBUILD @@ -1,66 +1,85 @@ # Maintainer (aur): lantw44 (at) gmail (dot) com # Modified from guix-git 20130119 PKGBUILD +# Maintainer: Parabola Hackers # parabola changes and rationale: # - Kept sysvinit service files as Parabola also supports OpenRC -# - Disabled tests. We have: -# FAIL: tests/build-utils.scm -# FAIL: tests/challenge.scm -# FAIL: tests/containers.scm -# -# The build also fails if you don't have enough RAM. Using -j2 with 4 GiB of -# RAM made it fail the following error: -# [ 69%] GUILEC gnu/packages/crates-io.go -# mmap(PROT_NONE) failed -# /bin/sh: line 7: 3174 Aborted (core dumped) \ -# XDG_CACHE_HOME=/nowhere host=i686-pc-linux-gnu srcdir="." \ -# ./pre-inst-env /usr/bin/guile -L "." -L "." --no-auto-compile -s \ -# "."/build-aux/compile-all.scm [lot of .scm] -# So to workaround that you can disable the -j by using: -# MAKEFLAGS="" ./build_x86_64.sh pcr/guix +# - Disable tests as they fail: +# | make check-TESTS check-local +# [...] +# | FAIL: tests/build-utils.scm +# [...] +# | FAIL: tests/challenge.scm +# [...] +# | FAIL: tests/containers.scm # In order to verify the PGP signature of the source archive, you may need to # use this command to download the needed public key: # gpg --recv-keys 3CE464558A84FDC69DB40CFB090B11993D9AEBB5 pkgname=guix -pkgver=1.1.0 -pkgrel=2 -pkgdesc="A purely functional package manager for the GNU system" +pkgver=1.4.0 +pkgrel=1 +pkgdesc='A purely functional package manager for the GNU system' arch=('x86_64' 'i686' 'armv7h') -url="https://www.gnu.org/software/guix/" +url='https://guix.gnu.org' license=('GPL3') options=('!strip') makedepends=( + 'guile-ssh>=0.13.0' + 'guile-zstd' + 'guile-semver' + 'guile-lib' 'bash-completion' 'fish' - 'guile-json3' - 'guile-ssh>=0.10.2' 'help2man' 'po4a') depends=( - 'guile>=2.2.4' - 'guile-gcrypt' - 'guile-git-lib' - 'guile-sqlite3' + 'guile>=3.0.3' + 'guile-gcrypt>=0.1.0' + 'guile-gnutls' + 'guile-sqlite3>=0.1.0' + 'guile-zlib>=0.1.0' + 'guile-lzlib' + 'guile-avahi' + 'guile-git-lib>=0.5.0' + 'guile-json>=4.3.0' + 'guile-lzma' 'sqlite>=3.6.19' 'bzip2' + 'disarchive' 'gnutls' - 'libgcrypt' - 'lzlib' - 'zlib') + 'libgcrypt') optdepends=( 'bash-completion: to enable bash programmable completion' - 'guile-json3: to import packages from cpan, gem, pypi' - 'guile-ssh: to offload builds to other machines') + 'guile-ssh: to offload builds to other machines' + 'guile-zstd: to use and publish zstd substitutes' + 'guile-semver: to use the crate importer' + 'guile-lib: to use the go importer') source=( - "https://ftp.gnu.org/gnu/${pkgname}/${pkgname}-${pkgver}.tar.gz"{,.sig}) + "https://ftp.gnu.org/gnu/${pkgname}/${pkgname}-${pkgver}.tar.gz"{,.sig} + 'guix-1.4.0-tests-guix-home.patch' + 'guix-1.4.0-guile-3.0.9.patch') install="${pkgname}.install" sha256sums=( - '5c59106ff4ac497c6097686834b0c914109cf5e44eb6b94ebce818923043640f' - '0416a733ba9b4410897d744a24388a43ba11bd8c427c7d08e649c8875119333d') + '43c769cbf632ef05449ac1fa48c1ba152c33494c6abc7e47137bba7b2149f8a4' + 'b30c7e63048c3fe4e72d6146f107e55e27d1ea1eb5bc7fd8818f20a1a32c8e10' + '930b94fae51eb84f8fd1ad5b6be373dc2a8c8887cf71d100d404159c079ddece' + 'c4b746b0e90981b5efde1fde093632899950d1724df9182bc9a45b4773be1f43') validpgpkeys=('3CE464558A84FDC69DB40CFB090B11993D9AEBB5') +prepare() { + cd "${srcdir}/${pkgname}-${pkgver}" + local source_file + for source_file in "${source[@]}"; do + case "${source_file}" in + *.patch) + patch -p1 < "${srcdir}/${source_file}" + ;; + esac + done +} + build() { local bash_completion_dir="$(pkg-config --variable=completionsdir bash-completion)" local fish_completion_dir="$(pkg-config --variable=completionsdir fish)" @@ -74,37 +93,40 @@ build() { make } -# check() { -# cd "${srcdir}/${pkgname}-${pkgver}" -# # Check whether the current working directory is too long -# local cwd_str="$(pwd)" -# local cwd_len="${#cwd_str}" -# # The test tests/gexp.scm fails when the path is longer than 29 bytes -# # because of the length limit on the shebang line. Since we have increased -# # the limit by 7 by renaming test-tmp to t with ac_cv_guix_test_root cache -# # variable, the limit we use here is 36 bytes. -# if [ "${cwd_len}" -gt 36 ]; then -# error "${cwd_str} is too long." -# error "The working directory cannot be longer than 36 bytes." -# false -# fi -# # Make sure we have a valid shell accepting -c option -# SHELL=/bin/sh make check -# } +check() { + cd "${srcdir}/${pkgname}-${pkgver}" + # # Check whether the current working directory is too long + # local cwd_str="$(pwd)" + # local cwd_len="${#cwd_str}" + # # The test tests/gexp.scm fails when the path is longer than 29 bytes + # # because of the length limit on the shebang line. Since we have increased + # # the limit by 7 by renaming test-tmp to t with ac_cv_guix_test_root cache + # # variable, the limit we use here is 36 bytes. + # if [ "${cwd_len}" -gt 36 ]; then + # error "${cwd_str} is too long." + # error "The working directory cannot be longer than 36 bytes." + # false + # fi + # # Make sure we have a valid shell accepting -c option. We cannot run tests + # # in parallel because it can cause permission denied error when copying + # # gnu/packages/bootstrap/i686-linux/bash. + # SHELL=/bin/sh make check -j1 +} package() { cd "${srcdir}/${pkgname}-${pkgver}" make DESTDIR="${pkgdir}" install - # Remove unused upstart service files - rm -r "${pkgdir}/usr/lib/upstart" # Rename systemd service files provided by upstream because they are not # usable without previous guix installation local system_unit_dir="${pkgdir}/usr/lib/systemd/system" local guix_daemon_default="${system_unit_dir}/guix-daemon.service" local guix_daemon_upstream="${system_unit_dir}/guix-daemon-latest.service" + local guix_gc_default="${system_unit_dir}/guix-gc.service" + local guix_gc_upstream="${system_unit_dir}/guix-gc-latest.service" local guix_publish_default="${system_unit_dir}/guix-publish.service" local guix_publish_upstream="${system_unit_dir}/guix-publish-latest.service" mv "${guix_daemon_default}" "${guix_daemon_upstream}" + mv "${guix_gc_default}" "${guix_gc_upstream}" mv "${guix_publish_default}" "${guix_publish_upstream}" # Generate default systemd service files from upstream ones by fixing paths local guix_profile_root="/var/guix/profiles/per-user/root/current-guix" @@ -114,14 +136,21 @@ package() { > "${guix_daemon_default}" sed -e "s|^ExecStart=${guix_profile_root}/bin|ExecStart=/usr/bin|" \ -e "s|^Description=\(.*\)|Description=\1 (default)|" \ + -e "/^Environment=/d" "${guix_gc_upstream}" \ + > "${guix_gc_default}" + sed -e "s|^ExecStart=${guix_profile_root}/bin|ExecStart=/usr/bin|" \ + -e "s|^Description=\(.*\)|Description=\1 (default)|" \ -e "/^Environment=/d" "${guix_publish_upstream}" \ > "${guix_publish_default}" # Make sure the above sed commands really work ! cmp "${guix_daemon_default}" "${guix_daemon_upstream}" + ! cmp "${guix_gc_default}" "${guix_gc_upstream}" ! cmp "${guix_publish_default}" "${guix_publish_upstream}" # Edit the description of upstream systemd service files sed -i "s|^Description=\(.*\)|Description=\1 (upstream)|" \ - "${guix_daemon_upstream}" "${guix_publish_upstream}" + "${guix_daemon_upstream}" \ + "${guix_gc_upstream}" \ + "${guix_publish_upstream}" # The default makepkg strip option cannot be used here because binaries # installed in /usr/share must not be stripped. # To keep user-defined 'strip' and 'debug' options useful, we still @@ -132,6 +161,9 @@ package() { # put in eval. eval 'options=()' cd "${pkgdir}/usr/bin" - tidy_strip + # tidy_strip may exit with a non-zero return value even if all operations + # are successful. Therefore, we have to ignore its return value to prevent + # makepkg from reporting it as an error. + tidy_strip || true eval 'options=("!strip")' } diff --git a/pcr/guix/guix-1.4.0-guile-3.0.9.patch b/pcr/guix/guix-1.4.0-guile-3.0.9.patch new file mode 100644 index 0000000..83513ae --- /dev/null +++ b/pcr/guix/guix-1.4.0-guile-3.0.9.patch @@ -0,0 +1,52 @@ +From 8b2721de6af76780611fe9f86fa5d4cd062400d1 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= +Date: Wed, 25 Jan 2023 17:29:09 +0100 +Subject: [PATCH] packages: Adjust 'generate-package-cache' for Guile 3.0.9. + +* gnu/packages.scm (generate-package-cache): Adjust for Guile 3.0.9. +--- + gnu/packages.scm | 16 +++++++++++----- + 1 file changed, 11 insertions(+), 5 deletions(-) + +diff --git a/gnu/packages.scm b/gnu/packages.scm +index 61345f75a9..80c22d1d7f 100644 +--- a/gnu/packages.scm ++++ b/gnu/packages.scm +@@ -1,5 +1,5 @@ + ;;; GNU Guix --- Functional package management for GNU +-;;; Copyright © 2012-2020, 2022 Ludovic Courtès ++;;; Copyright © 2012-2020, 2022-2023 Ludovic Courtès + ;;; Copyright © 2013 Mark H Weaver + ;;; Copyright © 2014 Eric Bavier + ;;; Copyright © 2016, 2017 Alex Kost +@@ -38,6 +38,7 @@ (define-module (gnu packages) + #:use-module (ice-9 vlist) + #:use-module (ice-9 match) + #:use-module (ice-9 binary-ports) ++ #:autoload (rnrs bytevectors) (bytevector?) + #:autoload (system base compile) (compile) + #:use-module (srfi srfi-1) + #:use-module (srfi srfi-26) +@@ -442,10 +443,15 @@ (define exp + (lambda (port) + ;; Store the cache as a '.go' file. This makes loading fast and reduces + ;; heap usage since some of the static data is directly mmapped. +- (put-bytevector port +- (compile `'(,@exp) +- #:to 'bytecode +- #:opts '(#:to-file? #t))))) ++ (match (compile `'(,@exp) ++ #:to 'bytecode ++ #:opts '(#:to-file? #t)) ++ ((? bytevector? bv) ++ (put-bytevector port bv)) ++ (proc ++ ;; In Guile 3.0.9, the linker can return a procedure instead of a ++ ;; bytevector. Adjust to that. ++ (proc port))))) + cache-file) + + +-- +2.40.0 + diff --git a/pcr/guix/guix-1.4.0-tests-guix-home.patch b/pcr/guix/guix-1.4.0-tests-guix-home.patch new file mode 100644 index 0000000..8dc3fb0 --- /dev/null +++ b/pcr/guix/guix-1.4.0-tests-guix-home.patch @@ -0,0 +1,14 @@ +diff --git a/tests/guix-home.sh b/tests/guix-home.sh +index 3151f66683..11b068ca43 100644 +--- a/tests/guix-home.sh ++++ b/tests/guix-home.sh +@@ -36,8 +36,8 @@ container_supported () + fi + } + +-NIX_STORE_DIR="$(guile -c '(use-modules (guix config))(display %storedir)')" + localstatedir="$(guile -c '(use-modules (guix config))(display %localstatedir)')" ++NIX_STORE_DIR="$(guile -c '(use-modules (guix config))(display %storedir)')" + GUIX_DAEMON_SOCKET="$localstatedir/guix/daemon-socket/socket" + export NIX_STORE_DIR GUIX_DAEMON_SOCKET + From 767d18504d2c100cc07fe712eacecbcc8be30308 Mon Sep 17 00:00:00 2001 From: Denis 'GNUtoo' Carikli Date: May 21 2023 00:43:26 +0000 Subject: [PATCH 22/33] pcr: [guile-lib]: Add armv7h support. Signed-off-by: Denis 'GNUtoo' Carikli --- diff --git a/pcr/guile-lib/PKGBUILD b/pcr/guile-lib/PKGBUILD index 42618e5..eaa30ef 100644 --- a/pcr/guile-lib/PKGBUILD +++ b/pcr/guile-lib/PKGBUILD @@ -3,13 +3,13 @@ # Maintainer: Parabola Hackers # parabola changes and rationale: -# no changes. +# - Add armv7h support. pkgname=guile-lib pkgver=0.2.7 pkgrel=2 pkgdesc='Repository of useful code written in Guile Scheme' -arch=('i686' 'x86_64') +arch=('armv7h' 'i686' 'x86_64') license=('GPL3' 'LGPL3') depends=('guile') url="http://www.nongnu.org/guile-lib/" From dc9af6e13dbc8bc11717ea17dc99b4f02d5a41e6 Mon Sep 17 00:00:00 2001 From: David P Date: May 21 2023 03:43:59 +0000 Subject: [PATCH 23/33] updpkg: nonsystemd/pipewire 1:0.3.70-2.nonsystemd1 Signed-off-by: David P --- diff --git a/nonsystemd/pipewire/PKGBUILD b/nonsystemd/pipewire/PKGBUILD index 4b049d1..1a18a81 100644 --- a/nonsystemd/pipewire/PKGBUILD +++ b/nonsystemd/pipewire/PKGBUILD @@ -1,15 +1,12 @@ # Maintainer: David P. -# Maintainer (artix): Nathan -# Maintainer (arch): David Runge -# Maintainer (arch): Jan Alexander Steffens (heftig) -# Contributor: Jan de Groot - +# Maintainer (Artix): Nathan +# Maintainer (Arch): Jan Alexander Steffens (heftig) +# Contributor (Arch): Jan de Groot # parabola changes and rationale: # - merge with Artix package for nonsystemd # - install an XDG autostart script to launch pipewire-pulse, like Gentoo - pkgbase=pipewire pkgname=( pipewire @@ -26,10 +23,10 @@ pkgname=( pipewire-v4l2 pipewire-x11-bell ) -_commit=26623ff8cb3c9ba774537379a1835c5efb0d5159 # tags/0.3.67 -pkgver=0.3.67 -pkgrel=1 -pkgrel+=.nonsystemd2 +_commit=9f7d60c1e84cc0481afc3f6ccf76e127567943a8 # tags/0.3.70 +pkgver=0.3.70 +pkgrel=2 +pkgrel+=.nonsystemd1 epoch=1 pkgdesc="Low-latency audio/video router and processor" url="https://pipewire.org" @@ -73,11 +70,11 @@ makedepends=( webrtc-audio-processing ) checkdepends=(desktop-file-utils) -source=(git+https://gitlab.freedesktop.org/pipewire/pipewire.git#commit=$_commit +source=("git+https://gitlab.freedesktop.org/pipewire/pipewire.git#commit=$_commit" pipewire.desktop pipewire-launcher) -sha256sums=('SKIP' - 'b5b68d711ff070b6217c4da5de0c5488b36a012b7e5484bf1d89d1969a778026' - '47f4d64dd4583963ce493828c171b608949dcc9f6e20d5dc2cdcb3a2f3ba6bac') +b2sums=('SKIP' + 'b26aea0758d4f747bbcf44f53db59dc89a7c947aba2d49e6468ced91173a8b3ea54858d71b6c6eb7bfbe9b1a0a0653c78c76480dcd6142978f7fde15bc989a01' + '3a9e120f3b7d0d33cd0e231c063dd7533bd20d146550e05d7da8b2a59153498cb080a78b9fca03a661363e8d0aca461b8127dc2f180e035039ccfd0da0281dde') pkgver() { cd pipewire @@ -111,7 +108,7 @@ build() { } check() { - meson test -C build --print-errorlogs + meson test -C build --print-errorlogs || : } _pick() { @@ -176,7 +173,7 @@ package_pipewire() { _pick docs usr/share/doc _pick audio usr/bin/pipewire-{aes67,avb} - _pick audio usr/bin/pw-{cat,play,record,midi{play,record},dsdplay} + _pick audio usr/bin/pw-{cat,{,enc}play,record,midi{play,record},dsdplay} _pick audio usr/bin/pw-{loopback,mididump} _pick audio usr/bin/spa-{acp-tool,resample} _pick audio usr/lib/alsa-lib @@ -431,3 +428,4 @@ package_pipewire-x11-bell() { install -Dt "$pkgdir/usr/share/licenses/$pkgname" -m644 pipewire/COPYING } +# vim:set sw=2 sts=-1 et: From f530eea22924e327de176787a29854fabb8691fd Mon Sep 17 00:00:00 2001 From: David P Date: May 23 2023 00:58:01 +0000 Subject: [PATCH 24/33] updpkg: libre/linux-libre 6.3.3-1 Signed-off-by: David P --- diff --git a/libre/linux-libre/0001-ARM-atags-add-support-for-Marvell-s-u-boot.patch b/libre/linux-libre/0001-ARM-atags-add-support-for-Marvell-s-u-boot.patch index a6967e0..d4c3cf0 100644 --- a/libre/linux-libre/0001-ARM-atags-add-support-for-Marvell-s-u-boot.patch +++ b/libre/linux-libre/0001-ARM-atags-add-support-for-Marvell-s-u-boot.patch @@ -1,4 +1,4 @@ -From cf30569da906ee631341244693ab1affde38809d Mon Sep 17 00:00:00 2001 +From 4533007cef1bd1da546752b372234b9bb9548214 Mon Sep 17 00:00:00 2001 From: Willy Tarreau Date: Sun, 2 Dec 2012 19:59:28 +0100 Subject: [PATCH 1/7] ARM: atags: add support for Marvell's u-boot @@ -47,5 +47,5 @@ index 25ceda63b284..83578c54975b 100644 }; -- -2.35.1 +2.37.0 diff --git a/libre/linux-libre/0001-ZEN-Add-sysctl-and-CONFIG-to-disallow-unprivileged-C.patch b/libre/linux-libre/0001-ZEN-Add-sysctl-and-CONFIG-to-disallow-unprivileged-C.patch index 669d7c0..ce00410 100644 --- a/libre/linux-libre/0001-ZEN-Add-sysctl-and-CONFIG-to-disallow-unprivileged-C.patch +++ b/libre/linux-libre/0001-ZEN-Add-sysctl-and-CONFIG-to-disallow-unprivileged-C.patch @@ -1,7 +1,7 @@ -From c6b820ca21a933239b7929851c50aa40f515781d Mon Sep 17 00:00:00 2001 +From 59f2f4ec4f5168b6c8945d59b9859d8b2321882b Mon Sep 17 00:00:00 2001 From: "Jan Alexander Steffens (heftig)" Date: Mon, 16 Sep 2019 04:53:20 +0200 -Subject: [PATCH 1/3] ZEN: Add sysctl and CONFIG to disallow unprivileged +Subject: [PATCH 1/2] ZEN: Add sysctl and CONFIG to disallow unprivileged CLONE_NEWUSER Our default behavior continues to match the vanilla kernel. @@ -36,10 +36,10 @@ index 45f09bec02c4..87b20e2ee274 100644 { return &init_user_ns; diff --git a/init/Kconfig b/init/Kconfig -index 94125d3b6893..9f7139b536f6 100644 +index c88bb30a8b0b..32ba96d94028 100644 --- a/init/Kconfig +++ b/init/Kconfig -@@ -1247,6 +1247,22 @@ config USER_NS +@@ -1249,6 +1249,22 @@ config USER_NS If unsure, say N. @@ -63,12 +63,12 @@ index 94125d3b6893..9f7139b536f6 100644 bool "PID Namespaces" default y diff --git a/kernel/fork.c b/kernel/fork.c -index 844dfdc8c639..31d41db3f84d 100644 +index ea332319dffe..349945168239 100644 --- a/kernel/fork.c +++ b/kernel/fork.c @@ -98,6 +98,10 @@ - #include #include + #include +#ifdef CONFIG_USER_NS +#include @@ -77,7 +77,7 @@ index 844dfdc8c639..31d41db3f84d 100644 #include #include #include -@@ -2011,6 +2015,10 @@ static __latent_entropy struct task_struct *copy_process( +@@ -2032,6 +2036,10 @@ static __latent_entropy struct task_struct *copy_process( if ((clone_flags & (CLONE_NEWUSER|CLONE_FS)) == (CLONE_NEWUSER|CLONE_FS)) return ERR_PTR(-EINVAL); @@ -88,7 +88,7 @@ index 844dfdc8c639..31d41db3f84d 100644 /* * Thread groups must share signals as well, and detached threads * can only be started up within the thread group. -@@ -3171,6 +3179,12 @@ int ksys_unshare(unsigned long unshare_flags) +@@ -3182,6 +3190,12 @@ int ksys_unshare(unsigned long unshare_flags) if (unshare_flags & CLONE_NEWNS) unshare_flags |= CLONE_FS; @@ -102,7 +102,7 @@ index 844dfdc8c639..31d41db3f84d 100644 if (err) goto bad_unshare_out; diff --git a/kernel/sysctl.c b/kernel/sysctl.c -index c6d9dec11b74..9a4514ad481b 100644 +index 1c240d2c99bc..2971581a27e2 100644 --- a/kernel/sysctl.c +++ b/kernel/sysctl.c @@ -81,6 +81,9 @@ @@ -115,7 +115,7 @@ index c6d9dec11b74..9a4514ad481b 100644 /* shared constants to be used in various sysctls */ const int sysctl_vals[] = { 0, 1, 2, 3, 4, 100, 200, 1000, 3000, INT_MAX, 65535, -1 }; -@@ -1659,6 +1662,15 @@ static struct ctl_table kern_table[] = { +@@ -1645,6 +1648,15 @@ static struct ctl_table kern_table[] = { .mode = 0644, .proc_handler = proc_dointvec, }, @@ -132,7 +132,7 @@ index c6d9dec11b74..9a4514ad481b 100644 { .procname = "tainted", diff --git a/kernel/user_namespace.c b/kernel/user_namespace.c -index 54211dbd516c..16ca0c151629 100644 +index 1d8e47bed3f1..fec01d016a35 100644 --- a/kernel/user_namespace.c +++ b/kernel/user_namespace.c @@ -22,6 +22,13 @@ @@ -150,5 +150,5 @@ index 54211dbd516c..16ca0c151629 100644 static DEFINE_MUTEX(userns_state_mutex); -- -2.39.0 +2.40.1 diff --git a/libre/linux-libre/0002-ARM-atags-fdt-retrieve-MAC-addresses-from-Marvell-bo.patch b/libre/linux-libre/0002-ARM-atags-fdt-retrieve-MAC-addresses-from-Marvell-bo.patch index c822087..758c050 100644 --- a/libre/linux-libre/0002-ARM-atags-fdt-retrieve-MAC-addresses-from-Marvell-bo.patch +++ b/libre/linux-libre/0002-ARM-atags-fdt-retrieve-MAC-addresses-from-Marvell-bo.patch @@ -1,4 +1,4 @@ -From 9f2269dc32ec1f583bba94432ca17dcef3778677 Mon Sep 17 00:00:00 2001 +From b2f96ec9b408c8bbec437c3d3b54c0b748fca85a Mon Sep 17 00:00:00 2001 From: Willy Tarreau Date: Sun, 2 Dec 2012 19:56:58 +0100 Subject: [PATCH 2/7] ARM: atags/fdt: retrieve MAC addresses from Marvell boot @@ -34,5 +34,5 @@ index 1feb6b0f7a1f..5e5cb3094b6a 100644 } -- -2.35.1 +2.37.0 diff --git a/libre/linux-libre/0002-docs-Fix-the-docs-build-with-Sphinx-6.0.patch b/libre/linux-libre/0002-docs-Fix-the-docs-build-with-Sphinx-6.0.patch deleted file mode 100644 index 270a6fe..0000000 --- a/libre/linux-libre/0002-docs-Fix-the-docs-build-with-Sphinx-6.0.patch +++ /dev/null @@ -1,48 +0,0 @@ -From 99c3052ddb60947d4590052bd68b4893967537eb Mon Sep 17 00:00:00 2001 -From: Jonathan Corbet -Date: Wed, 4 Jan 2023 13:45:35 -0700 -Subject: [PATCH 2/3] docs: Fix the docs build with Sphinx 6.0 -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -Sphinx 6.0 removed the execfile_() function, which we use as part of the -configuration process. They *did* warn us... Just open-code the -functionality as is done in Sphinx itself. - -Tested (using SPHINX_CONF, since this code is only executed with an -alternative config file) on various Sphinx versions from 2.5 through 6.0. - -Reported-by: Martin Liška -Signed-off-by: Jonathan Corbet ---- - Documentation/sphinx/load_config.py | 6 ++++-- - 1 file changed, 4 insertions(+), 2 deletions(-) - -diff --git a/Documentation/sphinx/load_config.py b/Documentation/sphinx/load_config.py -index eeb394b39e2c..8b416bfd75ac 100644 ---- a/Documentation/sphinx/load_config.py -+++ b/Documentation/sphinx/load_config.py -@@ -3,7 +3,7 @@ - - import os - import sys --from sphinx.util.pycompat import execfile_ -+from sphinx.util.osutil import fs_encoding - - # ------------------------------------------------------------------------------ - def loadConfig(namespace): -@@ -48,7 +48,9 @@ def loadConfig(namespace): - sys.stdout.write("load additional sphinx-config: %s\n" % config_file) - config = namespace.copy() - config['__file__'] = config_file -- execfile_(config_file, config) -+ with open(config_file, 'rb') as f: -+ code = compile(f.read(), fs_encoding, 'exec') -+ exec(code, config) - del config['__file__'] - namespace.update(config) - else: --- -2.39.0 - diff --git a/libre/linux-libre/0002-drm-amd-display-Have-Payload-Properly-Created-After-.patch b/libre/linux-libre/0002-drm-amd-display-Have-Payload-Properly-Created-After-.patch new file mode 100644 index 0000000..73b1a4a --- /dev/null +++ b/libre/linux-libre/0002-drm-amd-display-Have-Payload-Properly-Created-After-.patch @@ -0,0 +1,50 @@ +From 2fd9916a465e3b62452ac4346def013c3d8698a4 Mon Sep 17 00:00:00 2001 +From: Fangzhi Zuo +Date: Wed, 17 May 2023 19:37:13 +0800 +Subject: [PATCH 2/2] drm/amd/display: Have Payload Properly Created After + Resume + +At drm suspend sequence, MST dc_sink is removed. When commit cached +MST stream back in drm resume sequence, the MST stream payload is not +properly created and added into the payload table. After resume, topology +change is reprobed by removing existing streams first. That leads to +no payload is found in the existing payload table as below error +"[drm] ERROR No payload for [MST PORT:] found in mst state" + +1. In encoder .atomic_check routine, remove check existance of dc_sink +2. Bypass MST by checking existence of MST root port. dc_link_type cannot +differentiate MST port before topology is rediscovered. + +Reviewed-by: Wayne Lin +Acked-by: Tom Chung +Signed-off-by: Fangzhi Zuo +(cherry picked from https://patchwork.freedesktop.org/patch/537553/) +--- + drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c +index f54d670ab3ab..0695c7c3d489 100644 +--- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c ++++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c +@@ -2813,7 +2813,7 @@ static int dm_resume(void *handle) + * this is the case when traversing through already created + * MST connectors, should be skipped + */ +- if (aconnector->dc_link->type == dc_connection_mst_branch) ++ if (aconnector && aconnector->mst_root) + continue; + + mutex_lock(&aconnector->hpd_lock); +@@ -6717,7 +6717,7 @@ static int dm_encoder_helper_atomic_check(struct drm_encoder *encoder, + int clock, bpp = 0; + bool is_y420 = false; + +- if (!aconnector->mst_output_port || !aconnector->dc_sink) ++ if (!aconnector->mst_output_port) + return 0; + + mst_port = aconnector->mst_output_port; +-- +2.40.1 + diff --git a/libre/linux-libre/0003-Revert-drm-display-dp_mst-Move-all-payload-info-into.patch b/libre/linux-libre/0003-Revert-drm-display-dp_mst-Move-all-payload-info-into.patch deleted file mode 100644 index f279666..0000000 --- a/libre/linux-libre/0003-Revert-drm-display-dp_mst-Move-all-payload-info-into.patch +++ /dev/null @@ -1,2478 +0,0 @@ -From 7c4fed4d2afd27d7acb8835f8e79f49c99c03cdf Mon Sep 17 00:00:00 2001 -From: Wayne Lin -Date: Thu, 12 Jan 2023 16:50:44 +0800 -Subject: [PATCH 3/3] Revert "drm/display/dp_mst: Move all payload info into - the atomic state" -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -This reverts commit 4d07b0bc403403438d9cf88450506240c5faf92f. - -[Why] -Changes cause regression on amdgpu mst. -E.g. -In fill_dc_mst_payload_table_from_drm(), amdgpu expects to add/remove payload -one by one and call fill_dc_mst_payload_table_from_drm() to update the HW -maintained payload table. But previous change tries to go through all the -payloads in mst_state and update amdpug hw maintained table in once everytime -driver only tries to add/remove a specific payload stream only. The newly -design idea conflicts with the implementation in amdgpu nowadays. - -[How] -Revert this patch first. After addressing all regression problems caused by -this previous patch, will add it back and adjust it. - -Signed-off-by: Wayne Lin -Link: https://gitlab.freedesktop.org/drm/amd/-/issues/2171 -Cc: stable@vger.kernel.org # 6.1 -Cc: Lyude Paul -Cc: Harry Wentland -Cc: Mario Limonciello -Cc: Ville Syrjälä -Cc: Ben Skeggs -Cc: Stanislav Lisovskiy -Cc: Fangzhi Zuo ---- - .../gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 53 +- - .../amd/display/amdgpu_dm/amdgpu_dm_helpers.c | 104 ++- - .../display/amdgpu_dm/amdgpu_dm_mst_types.c | 87 ++- - .../amd/display/include/link_service_types.h | 3 - - drivers/gpu/drm/display/drm_dp_mst_topology.c | 724 ++++++++++++------ - drivers/gpu/drm/i915/display/intel_dp_mst.c | 64 +- - drivers/gpu/drm/i915/display/intel_hdcp.c | 24 +- - drivers/gpu/drm/nouveau/dispnv50/disp.c | 169 ++-- - include/drm/display/drm_dp_mst_helper.h | 178 +++-- - 9 files changed, 876 insertions(+), 530 deletions(-) - -diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c -index dacad8b85963..40defd664b49 100644 ---- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c -+++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c -@@ -6460,7 +6460,6 @@ static int dm_encoder_helper_atomic_check(struct drm_encoder *encoder, - const struct drm_display_mode *adjusted_mode = &crtc_state->adjusted_mode; - struct drm_dp_mst_topology_mgr *mst_mgr; - struct drm_dp_mst_port *mst_port; -- struct drm_dp_mst_topology_state *mst_state; - enum dc_color_depth color_depth; - int clock, bpp = 0; - bool is_y420 = false; -@@ -6474,13 +6473,6 @@ static int dm_encoder_helper_atomic_check(struct drm_encoder *encoder, - if (!crtc_state->connectors_changed && !crtc_state->mode_changed) - return 0; - -- mst_state = drm_atomic_get_mst_topology_state(state, mst_mgr); -- if (IS_ERR(mst_state)) -- return PTR_ERR(mst_state); -- -- if (!mst_state->pbn_div) -- mst_state->pbn_div = dm_mst_get_pbn_divider(aconnector->mst_port->dc_link); -- - if (!state->duplicated) { - int max_bpc = conn_state->max_requested_bpc; - is_y420 = drm_mode_is_420_also(&connector->display_info, adjusted_mode) && -@@ -6492,10 +6484,11 @@ static int dm_encoder_helper_atomic_check(struct drm_encoder *encoder, - clock = adjusted_mode->clock; - dm_new_connector_state->pbn = drm_dp_calc_pbn_mode(clock, bpp, false); - } -- -- dm_new_connector_state->vcpi_slots = -- drm_dp_atomic_find_time_slots(state, mst_mgr, mst_port, -- dm_new_connector_state->pbn); -+ dm_new_connector_state->vcpi_slots = drm_dp_atomic_find_time_slots(state, -+ mst_mgr, -+ mst_port, -+ dm_new_connector_state->pbn, -+ dm_mst_get_pbn_divider(aconnector->dc_link)); - if (dm_new_connector_state->vcpi_slots < 0) { - DRM_DEBUG_ATOMIC("failed finding vcpi slots: %d\n", (int)dm_new_connector_state->vcpi_slots); - return dm_new_connector_state->vcpi_slots; -@@ -6566,14 +6559,17 @@ static int dm_update_mst_vcpi_slots_for_dsc(struct drm_atomic_state *state, - dm_conn_state->vcpi_slots = slot_num; - - ret = drm_dp_mst_atomic_enable_dsc(state, aconnector->port, -- dm_conn_state->pbn, false); -+ dm_conn_state->pbn, 0, false); - if (ret < 0) - return ret; - - continue; - } - -- vcpi = drm_dp_mst_atomic_enable_dsc(state, aconnector->port, pbn, true); -+ vcpi = drm_dp_mst_atomic_enable_dsc(state, -+ aconnector->port, -+ pbn, pbn_div, -+ true); - if (vcpi < 0) - return vcpi; - -@@ -9407,6 +9403,8 @@ static int amdgpu_dm_atomic_check(struct drm_device *dev, - struct dm_crtc_state *dm_old_crtc_state, *dm_new_crtc_state; - #if defined(CONFIG_DRM_AMD_DC_DCN) - struct dsc_mst_fairness_vars vars[MAX_PIPES]; -+ struct drm_dp_mst_topology_state *mst_state; -+ struct drm_dp_mst_topology_mgr *mgr; - #endif - - trace_amdgpu_dm_atomic_check_begin(state); -@@ -9654,6 +9652,33 @@ static int amdgpu_dm_atomic_check(struct drm_device *dev, - lock_and_validation_needed = true; - } - -+#if defined(CONFIG_DRM_AMD_DC_DCN) -+ /* set the slot info for each mst_state based on the link encoding format */ -+ for_each_new_mst_mgr_in_state(state, mgr, mst_state, i) { -+ struct amdgpu_dm_connector *aconnector; -+ struct drm_connector *connector; -+ struct drm_connector_list_iter iter; -+ u8 link_coding_cap; -+ -+ if (!mgr->mst_state ) -+ continue; -+ -+ drm_connector_list_iter_begin(dev, &iter); -+ drm_for_each_connector_iter(connector, &iter) { -+ int id = connector->index; -+ -+ if (id == mst_state->mgr->conn_base_id) { -+ aconnector = to_amdgpu_dm_connector(connector); -+ link_coding_cap = dc_link_dp_mst_decide_link_encoding_format(aconnector->dc_link); -+ drm_dp_mst_update_slots(mst_state, link_coding_cap); -+ -+ break; -+ } -+ } -+ drm_connector_list_iter_end(&iter); -+ -+ } -+#endif - /** - * Streams and planes are reset when there are changes that affect - * bandwidth. Anything that affects bandwidth needs to go through -diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_helpers.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_helpers.c -index f72c013d3a5b..c8f9d10fde17 100644 ---- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_helpers.c -+++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_helpers.c -@@ -27,7 +27,6 @@ - #include - #include - --#include - #include - #include - #include -@@ -120,27 +119,40 @@ enum dc_edid_status dm_helpers_parse_edid_caps( - } - - static void --fill_dc_mst_payload_table_from_drm(struct drm_dp_mst_topology_state *mst_state, -- struct amdgpu_dm_connector *aconnector, -- struct dc_dp_mst_stream_allocation_table *table) -+fill_dc_mst_payload_table_from_drm(struct amdgpu_dm_connector *aconnector, -+ struct dc_dp_mst_stream_allocation_table *proposed_table) - { -- struct dc_dp_mst_stream_allocation_table new_table = { 0 }; -- struct dc_dp_mst_stream_allocation *sa; -- struct drm_dp_mst_atomic_payload *payload; -- -- /* Fill payload info*/ -- list_for_each_entry(payload, &mst_state->payloads, next) { -- if (payload->delete) -- continue; -- -- sa = &new_table.stream_allocations[new_table.stream_count]; -- sa->slot_count = payload->time_slots; -- sa->vcp_id = payload->vcpi; -- new_table.stream_count++; -+ int i; -+ struct drm_dp_mst_topology_mgr *mst_mgr = -+ &aconnector->mst_port->mst_mgr; -+ -+ mutex_lock(&mst_mgr->payload_lock); -+ -+ proposed_table->stream_count = 0; -+ -+ /* number of active streams */ -+ for (i = 0; i < mst_mgr->max_payloads; i++) { -+ if (mst_mgr->payloads[i].num_slots == 0) -+ break; /* end of vcp_id table */ -+ -+ ASSERT(mst_mgr->payloads[i].payload_state != -+ DP_PAYLOAD_DELETE_LOCAL); -+ -+ if (mst_mgr->payloads[i].payload_state == DP_PAYLOAD_LOCAL || -+ mst_mgr->payloads[i].payload_state == -+ DP_PAYLOAD_REMOTE) { -+ -+ struct dc_dp_mst_stream_allocation *sa = -+ &proposed_table->stream_allocations[ -+ proposed_table->stream_count]; -+ -+ sa->slot_count = mst_mgr->payloads[i].num_slots; -+ sa->vcp_id = mst_mgr->proposed_vcpis[i]->vcpi; -+ proposed_table->stream_count++; -+ } - } - -- /* Overwrite the old table */ -- *table = new_table; -+ mutex_unlock(&mst_mgr->payload_lock); - } - - void dm_helpers_dp_update_branch_info( -@@ -158,9 +170,11 @@ bool dm_helpers_dp_mst_write_payload_allocation_table( - bool enable) - { - struct amdgpu_dm_connector *aconnector; -- struct drm_dp_mst_topology_state *mst_state; -- struct drm_dp_mst_atomic_payload *payload; -+ struct dm_connector_state *dm_conn_state; - struct drm_dp_mst_topology_mgr *mst_mgr; -+ struct drm_dp_mst_port *mst_port; -+ bool ret; -+ u8 link_coding_cap = DP_8b_10b_ENCODING; - - aconnector = (struct amdgpu_dm_connector *)stream->dm_stream_context; - /* Accessing the connector state is required for vcpi_slots allocation -@@ -171,21 +185,40 @@ bool dm_helpers_dp_mst_write_payload_allocation_table( - if (!aconnector || !aconnector->mst_port) - return false; - -+ dm_conn_state = to_dm_connector_state(aconnector->base.state); -+ - mst_mgr = &aconnector->mst_port->mst_mgr; -- mst_state = to_drm_dp_mst_topology_state(mst_mgr->base.state); -+ -+ if (!mst_mgr->mst_state) -+ return false; -+ -+ mst_port = aconnector->port; -+ -+#if defined(CONFIG_DRM_AMD_DC_DCN) -+ link_coding_cap = dc_link_dp_mst_decide_link_encoding_format(aconnector->dc_link); -+#endif -+ -+ if (enable) { -+ -+ ret = drm_dp_mst_allocate_vcpi(mst_mgr, mst_port, -+ dm_conn_state->pbn, -+ dm_conn_state->vcpi_slots); -+ if (!ret) -+ return false; -+ -+ } else { -+ drm_dp_mst_reset_vcpi_slots(mst_mgr, mst_port); -+ } - - /* It's OK for this to fail */ -- payload = drm_atomic_get_mst_payload_state(mst_state, aconnector->port); -- if (enable) -- drm_dp_add_payload_part1(mst_mgr, mst_state, payload); -- else -- drm_dp_remove_payload(mst_mgr, mst_state, payload); -+ drm_dp_update_payload_part1(mst_mgr, (link_coding_cap == DP_CAP_ANSI_128B132B) ? 0:1); - - /* mst_mgr->->payloads are VC payload notify MST branch using DPCD or - * AUX message. The sequence is slot 1-63 allocated sequence for each - * stream. AMD ASIC stream slot allocation should follow the same - * sequence. copy DRM MST allocation to dc */ -- fill_dc_mst_payload_table_from_drm(mst_state, aconnector, proposed_table); -+ -+ fill_dc_mst_payload_table_from_drm(aconnector, proposed_table); - - return true; - } -@@ -242,9 +275,8 @@ bool dm_helpers_dp_mst_send_payload_allocation( - bool enable) - { - struct amdgpu_dm_connector *aconnector; -- struct drm_dp_mst_topology_state *mst_state; - struct drm_dp_mst_topology_mgr *mst_mgr; -- struct drm_dp_mst_atomic_payload *payload; -+ struct drm_dp_mst_port *mst_port; - enum mst_progress_status set_flag = MST_ALLOCATE_NEW_PAYLOAD; - enum mst_progress_status clr_flag = MST_CLEAR_ALLOCATED_PAYLOAD; - -@@ -253,16 +285,19 @@ bool dm_helpers_dp_mst_send_payload_allocation( - if (!aconnector || !aconnector->mst_port) - return false; - -+ mst_port = aconnector->port; -+ - mst_mgr = &aconnector->mst_port->mst_mgr; -- mst_state = to_drm_dp_mst_topology_state(mst_mgr->base.state); - -- payload = drm_atomic_get_mst_payload_state(mst_state, aconnector->port); -+ if (!mst_mgr->mst_state) -+ return false; -+ - if (!enable) { - set_flag = MST_CLEAR_ALLOCATED_PAYLOAD; - clr_flag = MST_ALLOCATE_NEW_PAYLOAD; - } - -- if (enable && drm_dp_add_payload_part2(mst_mgr, mst_state->base.state, payload)) { -+ if (drm_dp_update_payload_part2(mst_mgr)) { - amdgpu_dm_set_mst_status(&aconnector->mst_status, - set_flag, false); - } else { -@@ -272,6 +307,9 @@ bool dm_helpers_dp_mst_send_payload_allocation( - clr_flag, false); - } - -+ if (!enable) -+ drm_dp_mst_deallocate_vcpi(mst_mgr, mst_port); -+ - return true; - } - -diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_mst_types.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_mst_types.c -index 6483ba266893..d57f1528a295 100644 ---- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_mst_types.c -+++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_mst_types.c -@@ -598,8 +598,15 @@ void amdgpu_dm_initialize_dp_connector(struct amdgpu_display_manager *dm, - - dc_link_dp_get_max_link_enc_cap(aconnector->dc_link, &max_link_enc_cap); - aconnector->mst_mgr.cbs = &dm_mst_cbs; -- drm_dp_mst_topology_mgr_init(&aconnector->mst_mgr, adev_to_drm(dm->adev), -- &aconnector->dm_dp_aux.aux, 16, 4, aconnector->connector_id); -+ drm_dp_mst_topology_mgr_init( -+ &aconnector->mst_mgr, -+ adev_to_drm(dm->adev), -+ &aconnector->dm_dp_aux.aux, -+ 16, -+ 4, -+ max_link_enc_cap.lane_count, -+ drm_dp_bw_code_to_link_rate(max_link_enc_cap.link_rate), -+ aconnector->connector_id); - - drm_connector_attach_dp_subconnector_property(&aconnector->base); - } -@@ -703,13 +710,12 @@ static int bpp_x16_from_pbn(struct dsc_mst_fairness_params param, int pbn) - return dsc_config.bits_per_pixel; - } - --static int increase_dsc_bpp(struct drm_atomic_state *state, -- struct drm_dp_mst_topology_state *mst_state, -- struct dc_link *dc_link, -- struct dsc_mst_fairness_params *params, -- struct dsc_mst_fairness_vars *vars, -- int count, -- int k) -+static bool increase_dsc_bpp(struct drm_atomic_state *state, -+ struct dc_link *dc_link, -+ struct dsc_mst_fairness_params *params, -+ struct dsc_mst_fairness_vars *vars, -+ int count, -+ int k) - { - int i; - bool bpp_increased[MAX_PIPES]; -@@ -717,10 +723,13 @@ static int increase_dsc_bpp(struct drm_atomic_state *state, - int min_initial_slack; - int next_index; - int remaining_to_increase = 0; -+ int pbn_per_timeslot; - int link_timeslots_used; - int fair_pbn_alloc; - int ret = 0; - -+ pbn_per_timeslot = dm_mst_get_pbn_divider(dc_link); -+ - for (i = 0; i < count; i++) { - if (vars[i + k].dsc_enabled) { - initial_slack[i] = -@@ -751,17 +760,18 @@ static int increase_dsc_bpp(struct drm_atomic_state *state, - link_timeslots_used = 0; - - for (i = 0; i < count; i++) -- link_timeslots_used += DIV_ROUND_UP(vars[i + k].pbn, mst_state->pbn_div); -+ link_timeslots_used += DIV_ROUND_UP(vars[i + k].pbn, pbn_per_timeslot); - -- fair_pbn_alloc = -- (63 - link_timeslots_used) / remaining_to_increase * mst_state->pbn_div; -+ fair_pbn_alloc = (63 - link_timeslots_used) / remaining_to_increase * pbn_per_timeslot; - - if (initial_slack[next_index] > fair_pbn_alloc) { - vars[next_index].pbn += fair_pbn_alloc; -+ - ret = drm_dp_atomic_find_time_slots(state, - params[next_index].port->mgr, - params[next_index].port, -- vars[next_index].pbn); -+ vars[next_index].pbn, -+ pbn_per_timeslot); - if (ret < 0) - return ret; - -@@ -773,7 +783,8 @@ static int increase_dsc_bpp(struct drm_atomic_state *state, - ret = drm_dp_atomic_find_time_slots(state, - params[next_index].port->mgr, - params[next_index].port, -- vars[next_index].pbn); -+ vars[next_index].pbn, -+ pbn_per_timeslot); - if (ret < 0) - return ret; - } -@@ -782,7 +793,8 @@ static int increase_dsc_bpp(struct drm_atomic_state *state, - ret = drm_dp_atomic_find_time_slots(state, - params[next_index].port->mgr, - params[next_index].port, -- vars[next_index].pbn); -+ vars[next_index].pbn, -+ pbn_per_timeslot); - if (ret < 0) - return ret; - -@@ -794,7 +806,8 @@ static int increase_dsc_bpp(struct drm_atomic_state *state, - ret = drm_dp_atomic_find_time_slots(state, - params[next_index].port->mgr, - params[next_index].port, -- vars[next_index].pbn); -+ vars[next_index].pbn, -+ pbn_per_timeslot); - if (ret < 0) - return ret; - } -@@ -850,10 +863,12 @@ static int try_disable_dsc(struct drm_atomic_state *state, - break; - - vars[next_index].pbn = kbps_to_peak_pbn(params[next_index].bw_range.stream_kbps); -+ - ret = drm_dp_atomic_find_time_slots(state, - params[next_index].port->mgr, - params[next_index].port, -- vars[next_index].pbn); -+ vars[next_index].pbn, -+ dm_mst_get_pbn_divider(dc_link)); - if (ret < 0) - return ret; - -@@ -863,10 +878,12 @@ static int try_disable_dsc(struct drm_atomic_state *state, - vars[next_index].bpp_x16 = 0; - } else { - vars[next_index].pbn = kbps_to_peak_pbn(params[next_index].bw_range.max_kbps); -+ - ret = drm_dp_atomic_find_time_slots(state, - params[next_index].port->mgr, - params[next_index].port, -- vars[next_index].pbn); -+ vars[next_index].pbn, -+ dm_mst_get_pbn_divider(dc_link)); - if (ret < 0) - return ret; - } -@@ -877,31 +894,21 @@ static int try_disable_dsc(struct drm_atomic_state *state, - return 0; - } - --static int compute_mst_dsc_configs_for_link(struct drm_atomic_state *state, -- struct dc_state *dc_state, -- struct dc_link *dc_link, -- struct dsc_mst_fairness_vars *vars, -- struct drm_dp_mst_topology_mgr *mgr, -- int *link_vars_start_index) -+static bool compute_mst_dsc_configs_for_link(struct drm_atomic_state *state, -+ struct dc_state *dc_state, -+ struct dc_link *dc_link, -+ struct dsc_mst_fairness_vars *vars, -+ int *link_vars_start_index) - { -+ int i, k, ret; - struct dc_stream_state *stream; - struct dsc_mst_fairness_params params[MAX_PIPES]; - struct amdgpu_dm_connector *aconnector; -- struct drm_dp_mst_topology_state *mst_state = drm_atomic_get_mst_topology_state(state, mgr); - int count = 0; -- int i, k, ret; - bool debugfs_overwrite = false; - - memset(params, 0, sizeof(params)); - -- if (IS_ERR(mst_state)) -- return PTR_ERR(mst_state); -- -- mst_state->pbn_div = dm_mst_get_pbn_divider(dc_link); --#if defined(CONFIG_DRM_AMD_DC_DCN) -- drm_dp_mst_update_slots(mst_state, dc_link_dp_mst_decide_link_encoding_format(dc_link)); --#endif -- - /* Set up params */ - for (i = 0; i < dc_state->stream_count; i++) { - struct dc_dsc_policy dsc_policy = {0}; -@@ -961,7 +968,7 @@ static int compute_mst_dsc_configs_for_link(struct drm_atomic_state *state, - vars[i + k].dsc_enabled = false; - vars[i + k].bpp_x16 = 0; - ret = drm_dp_atomic_find_time_slots(state, params[i].port->mgr, params[i].port, -- vars[i + k].pbn); -+ vars[i + k].pbn, dm_mst_get_pbn_divider(dc_link)); - if (ret < 0) - return ret; - } -@@ -980,7 +987,7 @@ static int compute_mst_dsc_configs_for_link(struct drm_atomic_state *state, - vars[i + k].dsc_enabled = true; - vars[i + k].bpp_x16 = params[i].bw_range.min_target_bpp_x16; - ret = drm_dp_atomic_find_time_slots(state, params[i].port->mgr, -- params[i].port, vars[i + k].pbn); -+ params[i].port, vars[i + k].pbn, dm_mst_get_pbn_divider(dc_link)); - if (ret < 0) - return ret; - } else { -@@ -988,7 +995,7 @@ static int compute_mst_dsc_configs_for_link(struct drm_atomic_state *state, - vars[i + k].dsc_enabled = false; - vars[i + k].bpp_x16 = 0; - ret = drm_dp_atomic_find_time_slots(state, params[i].port->mgr, -- params[i].port, vars[i + k].pbn); -+ params[i].port, vars[i + k].pbn, dm_mst_get_pbn_divider(dc_link)); - if (ret < 0) - return ret; - } -@@ -998,7 +1005,7 @@ static int compute_mst_dsc_configs_for_link(struct drm_atomic_state *state, - return ret; - - /* Optimize degree of compression */ -- ret = increase_dsc_bpp(state, mst_state, dc_link, params, vars, count, k); -+ ret = increase_dsc_bpp(state, dc_link, params, vars, count, k); - if (ret < 0) - return ret; - -@@ -1148,7 +1155,7 @@ int compute_mst_dsc_configs_for_state(struct drm_atomic_state *state, - continue; - - mst_mgr = aconnector->port->mgr; -- ret = compute_mst_dsc_configs_for_link(state, dc_state, stream->link, vars, mst_mgr, -+ ret = compute_mst_dsc_configs_for_link(state, dc_state, stream->link, vars, - &link_vars_start_index); - if (ret != 0) - return ret; -@@ -1206,7 +1213,7 @@ static int pre_compute_mst_dsc_configs_for_state(struct drm_atomic_state *state, - continue; - - mst_mgr = aconnector->port->mgr; -- ret = compute_mst_dsc_configs_for_link(state, dc_state, stream->link, vars, mst_mgr, -+ ret = compute_mst_dsc_configs_for_link(state, dc_state, stream->link, vars, - &link_vars_start_index); - if (ret != 0) - return ret; -diff --git a/drivers/gpu/drm/amd/display/include/link_service_types.h b/drivers/gpu/drm/amd/display/include/link_service_types.h -index d1e91d31d151..0889c2a86733 100644 ---- a/drivers/gpu/drm/amd/display/include/link_service_types.h -+++ b/drivers/gpu/drm/amd/display/include/link_service_types.h -@@ -252,9 +252,6 @@ union dpcd_training_lane_set { - * _ONLY_ be filled out from DM and then passed to DC, do NOT use these for _any_ kind of atomic - * state calculations in DM, or you will break something. - */ -- --struct drm_dp_mst_port; -- - /* DP MST stream allocation (payload bandwidth number) */ - struct dc_dp_mst_stream_allocation { - uint8_t vcp_id; -diff --git a/drivers/gpu/drm/display/drm_dp_mst_topology.c b/drivers/gpu/drm/display/drm_dp_mst_topology.c -index 51a46689cda7..95ff57d20216 100644 ---- a/drivers/gpu/drm/display/drm_dp_mst_topology.c -+++ b/drivers/gpu/drm/display/drm_dp_mst_topology.c -@@ -68,7 +68,8 @@ static bool dump_dp_payload_table(struct drm_dp_mst_topology_mgr *mgr, - static void drm_dp_mst_topology_put_port(struct drm_dp_mst_port *port); - - static int drm_dp_dpcd_write_payload(struct drm_dp_mst_topology_mgr *mgr, -- int id, u8 start_slot, u8 num_slots); -+ int id, -+ struct drm_dp_payload *payload); - - static int drm_dp_send_dpcd_read(struct drm_dp_mst_topology_mgr *mgr, - struct drm_dp_mst_port *port, -@@ -1234,6 +1235,57 @@ build_query_stream_enc_status(struct drm_dp_sideband_msg_tx *msg, u8 stream_id, - return 0; - } - -+static int drm_dp_mst_assign_payload_id(struct drm_dp_mst_topology_mgr *mgr, -+ struct drm_dp_vcpi *vcpi) -+{ -+ int ret, vcpi_ret; -+ -+ mutex_lock(&mgr->payload_lock); -+ ret = find_first_zero_bit(&mgr->payload_mask, mgr->max_payloads + 1); -+ if (ret > mgr->max_payloads) { -+ ret = -EINVAL; -+ drm_dbg_kms(mgr->dev, "out of payload ids %d\n", ret); -+ goto out_unlock; -+ } -+ -+ vcpi_ret = find_first_zero_bit(&mgr->vcpi_mask, mgr->max_payloads + 1); -+ if (vcpi_ret > mgr->max_payloads) { -+ ret = -EINVAL; -+ drm_dbg_kms(mgr->dev, "out of vcpi ids %d\n", ret); -+ goto out_unlock; -+ } -+ -+ set_bit(ret, &mgr->payload_mask); -+ set_bit(vcpi_ret, &mgr->vcpi_mask); -+ vcpi->vcpi = vcpi_ret + 1; -+ mgr->proposed_vcpis[ret - 1] = vcpi; -+out_unlock: -+ mutex_unlock(&mgr->payload_lock); -+ return ret; -+} -+ -+static void drm_dp_mst_put_payload_id(struct drm_dp_mst_topology_mgr *mgr, -+ int vcpi) -+{ -+ int i; -+ -+ if (vcpi == 0) -+ return; -+ -+ mutex_lock(&mgr->payload_lock); -+ drm_dbg_kms(mgr->dev, "putting payload %d\n", vcpi); -+ clear_bit(vcpi - 1, &mgr->vcpi_mask); -+ -+ for (i = 0; i < mgr->max_payloads; i++) { -+ if (mgr->proposed_vcpis[i] && -+ mgr->proposed_vcpis[i]->vcpi == vcpi) { -+ mgr->proposed_vcpis[i] = NULL; -+ clear_bit(i + 1, &mgr->payload_mask); -+ } -+ } -+ mutex_unlock(&mgr->payload_lock); -+} -+ - static bool check_txmsg_state(struct drm_dp_mst_topology_mgr *mgr, - struct drm_dp_sideband_msg_tx *txmsg) - { -@@ -1686,7 +1738,7 @@ drm_dp_mst_dump_port_topology_history(struct drm_dp_mst_port *port) {} - #define save_port_topology_ref(port, type) - #endif - --struct drm_dp_mst_atomic_payload * -+static struct drm_dp_mst_atomic_payload * - drm_atomic_get_mst_payload_state(struct drm_dp_mst_topology_state *state, - struct drm_dp_mst_port *port) - { -@@ -1698,7 +1750,6 @@ drm_atomic_get_mst_payload_state(struct drm_dp_mst_topology_state *state, - - return NULL; - } --EXPORT_SYMBOL(drm_atomic_get_mst_payload_state); - - static void drm_dp_destroy_mst_branch_device(struct kref *kref) - { -@@ -3201,8 +3252,6 @@ int drm_dp_send_query_stream_enc_status(struct drm_dp_mst_topology_mgr *mgr, - struct drm_dp_mst_port *port, - struct drm_dp_query_stream_enc_status_ack_reply *status) - { -- struct drm_dp_mst_topology_state *state; -- struct drm_dp_mst_atomic_payload *payload; - struct drm_dp_sideband_msg_tx *txmsg; - u8 nonce[7]; - int ret; -@@ -3219,10 +3268,6 @@ int drm_dp_send_query_stream_enc_status(struct drm_dp_mst_topology_mgr *mgr, - - get_random_bytes(nonce, sizeof(nonce)); - -- drm_modeset_lock(&mgr->base.lock, NULL); -- state = to_drm_dp_mst_topology_state(mgr->base.state); -- payload = drm_atomic_get_mst_payload_state(state, port); -- - /* - * "Source device targets the QUERY_STREAM_ENCRYPTION_STATUS message - * transaction at the MST Branch device directly connected to the -@@ -3230,7 +3275,7 @@ int drm_dp_send_query_stream_enc_status(struct drm_dp_mst_topology_mgr *mgr, - */ - txmsg->dst = mgr->mst_primary; - -- build_query_stream_enc_status(txmsg, payload->vcpi, nonce); -+ build_query_stream_enc_status(txmsg, port->vcpi.vcpi, nonce); - - drm_dp_queue_down_tx(mgr, txmsg); - -@@ -3247,7 +3292,6 @@ int drm_dp_send_query_stream_enc_status(struct drm_dp_mst_topology_mgr *mgr, - memcpy(status, &txmsg->reply.u.enc_status, sizeof(*status)); - - out: -- drm_modeset_unlock(&mgr->base.lock); - drm_dp_mst_topology_put_port(port); - out_get_port: - kfree(txmsg); -@@ -3256,162 +3300,238 @@ int drm_dp_send_query_stream_enc_status(struct drm_dp_mst_topology_mgr *mgr, - EXPORT_SYMBOL(drm_dp_send_query_stream_enc_status); - - static int drm_dp_create_payload_step1(struct drm_dp_mst_topology_mgr *mgr, -- struct drm_dp_mst_atomic_payload *payload) -+ int id, -+ struct drm_dp_payload *payload) - { -- return drm_dp_dpcd_write_payload(mgr, payload->vcpi, payload->vc_start_slot, -- payload->time_slots); -+ int ret; -+ -+ ret = drm_dp_dpcd_write_payload(mgr, id, payload); -+ if (ret < 0) { -+ payload->payload_state = 0; -+ return ret; -+ } -+ payload->payload_state = DP_PAYLOAD_LOCAL; -+ return 0; - } - - static int drm_dp_create_payload_step2(struct drm_dp_mst_topology_mgr *mgr, -- struct drm_dp_mst_atomic_payload *payload) -+ struct drm_dp_mst_port *port, -+ int id, -+ struct drm_dp_payload *payload) - { - int ret; -- struct drm_dp_mst_port *port = drm_dp_mst_topology_get_port_validated(mgr, payload->port); -- -- if (!port) -- return -EIO; - -- ret = drm_dp_payload_send_msg(mgr, port, payload->vcpi, payload->pbn); -- drm_dp_mst_topology_put_port(port); -+ ret = drm_dp_payload_send_msg(mgr, port, id, port->vcpi.pbn); -+ if (ret < 0) -+ return ret; -+ payload->payload_state = DP_PAYLOAD_REMOTE; - return ret; - } - - static int drm_dp_destroy_payload_step1(struct drm_dp_mst_topology_mgr *mgr, -- struct drm_dp_mst_topology_state *mst_state, -- struct drm_dp_mst_atomic_payload *payload) -+ struct drm_dp_mst_port *port, -+ int id, -+ struct drm_dp_payload *payload) - { - drm_dbg_kms(mgr->dev, "\n"); -- - /* it's okay for these to fail */ -- drm_dp_payload_send_msg(mgr, payload->port, payload->vcpi, 0); -- drm_dp_dpcd_write_payload(mgr, payload->vcpi, payload->vc_start_slot, 0); -+ if (port) { -+ drm_dp_payload_send_msg(mgr, port, id, 0); -+ } - -+ drm_dp_dpcd_write_payload(mgr, id, payload); -+ payload->payload_state = DP_PAYLOAD_DELETE_LOCAL; -+ return 0; -+} -+ -+static int drm_dp_destroy_payload_step2(struct drm_dp_mst_topology_mgr *mgr, -+ int id, -+ struct drm_dp_payload *payload) -+{ -+ payload->payload_state = 0; - return 0; - } - - /** -- * drm_dp_add_payload_part1() - Execute payload update part 1 -- * @mgr: Manager to use. -- * @mst_state: The MST atomic state -- * @payload: The payload to write -+ * drm_dp_update_payload_part1() - Execute payload update part 1 -+ * @mgr: manager to use. -+ * @start_slot: this is the cur slot -+ * -+ * NOTE: start_slot is a temporary workaround for non-atomic drivers, -+ * this will be removed when non-atomic mst helpers are moved out of the helper - * -- * Determines the starting time slot for the given payload, and programs the VCPI for this payload -- * into hardware. After calling this, the driver should generate ACT and payload packets. -+ * This iterates over all proposed virtual channels, and tries to -+ * allocate space in the link for them. For 0->slots transitions, -+ * this step just writes the VCPI to the MST device. For slots->0 -+ * transitions, this writes the updated VCPIs and removes the -+ * remote VC payloads. - * -- * Returns: 0 on success, error code on failure. In the event that this fails, -- * @payload.vc_start_slot will also be set to -1. -+ * after calling this the driver should generate ACT and payload -+ * packets. - */ --int drm_dp_add_payload_part1(struct drm_dp_mst_topology_mgr *mgr, -- struct drm_dp_mst_topology_state *mst_state, -- struct drm_dp_mst_atomic_payload *payload) -+int drm_dp_update_payload_part1(struct drm_dp_mst_topology_mgr *mgr, int start_slot) - { -+ struct drm_dp_payload req_payload; - struct drm_dp_mst_port *port; -- int ret; -+ int i, j; -+ int cur_slots = start_slot; -+ bool skip; - -- port = drm_dp_mst_topology_get_port_validated(mgr, payload->port); -- if (!port) -- return 0; -+ mutex_lock(&mgr->payload_lock); -+ for (i = 0; i < mgr->max_payloads; i++) { -+ struct drm_dp_vcpi *vcpi = mgr->proposed_vcpis[i]; -+ struct drm_dp_payload *payload = &mgr->payloads[i]; -+ bool put_port = false; - -- if (mgr->payload_count == 0) -- mgr->next_start_slot = mst_state->start_slot; -+ /* solve the current payloads - compare to the hw ones -+ - update the hw view */ -+ req_payload.start_slot = cur_slots; -+ if (vcpi) { -+ port = container_of(vcpi, struct drm_dp_mst_port, -+ vcpi); - -- payload->vc_start_slot = mgr->next_start_slot; -+ mutex_lock(&mgr->lock); -+ skip = !drm_dp_mst_port_downstream_of_branch(port, mgr->mst_primary); -+ mutex_unlock(&mgr->lock); - -- ret = drm_dp_create_payload_step1(mgr, payload); -- drm_dp_mst_topology_put_port(port); -- if (ret < 0) { -- drm_warn(mgr->dev, "Failed to create MST payload for port %p: %d\n", -- payload->port, ret); -- payload->vc_start_slot = -1; -- return ret; -- } -+ if (skip) { -+ drm_dbg_kms(mgr->dev, -+ "Virtual channel %d is not in current topology\n", -+ i); -+ continue; -+ } -+ /* Validated ports don't matter if we're releasing -+ * VCPI -+ */ -+ if (vcpi->num_slots) { -+ port = drm_dp_mst_topology_get_port_validated( -+ mgr, port); -+ if (!port) { -+ if (vcpi->num_slots == payload->num_slots) { -+ cur_slots += vcpi->num_slots; -+ payload->start_slot = req_payload.start_slot; -+ continue; -+ } else { -+ drm_dbg_kms(mgr->dev, -+ "Fail:set payload to invalid sink"); -+ mutex_unlock(&mgr->payload_lock); -+ return -EINVAL; -+ } -+ } -+ put_port = true; -+ } - -- mgr->payload_count++; -- mgr->next_start_slot += payload->time_slots; -+ req_payload.num_slots = vcpi->num_slots; -+ req_payload.vcpi = vcpi->vcpi; -+ } else { -+ port = NULL; -+ req_payload.num_slots = 0; -+ } - -- return 0; --} --EXPORT_SYMBOL(drm_dp_add_payload_part1); -+ payload->start_slot = req_payload.start_slot; -+ /* work out what is required to happen with this payload */ -+ if (payload->num_slots != req_payload.num_slots) { -+ -+ /* need to push an update for this payload */ -+ if (req_payload.num_slots) { -+ drm_dp_create_payload_step1(mgr, vcpi->vcpi, -+ &req_payload); -+ payload->num_slots = req_payload.num_slots; -+ payload->vcpi = req_payload.vcpi; -+ -+ } else if (payload->num_slots) { -+ payload->num_slots = 0; -+ drm_dp_destroy_payload_step1(mgr, port, -+ payload->vcpi, -+ payload); -+ req_payload.payload_state = -+ payload->payload_state; -+ payload->start_slot = 0; -+ } -+ payload->payload_state = req_payload.payload_state; -+ } -+ cur_slots += req_payload.num_slots; - --/** -- * drm_dp_remove_payload() - Remove an MST payload -- * @mgr: Manager to use. -- * @mst_state: The MST atomic state -- * @payload: The payload to write -- * -- * Removes a payload from an MST topology if it was successfully assigned a start slot. Also updates -- * the starting time slots of all other payloads which would have been shifted towards the start of -- * the VC table as a result. After calling this, the driver should generate ACT and payload packets. -- */ --void drm_dp_remove_payload(struct drm_dp_mst_topology_mgr *mgr, -- struct drm_dp_mst_topology_state *mst_state, -- struct drm_dp_mst_atomic_payload *payload) --{ -- struct drm_dp_mst_atomic_payload *pos; -- bool send_remove = false; -+ if (put_port) -+ drm_dp_mst_topology_put_port(port); -+ } - -- /* We failed to make the payload, so nothing to do */ -- if (payload->vc_start_slot == -1) -- return; -+ for (i = 0; i < mgr->max_payloads; /* do nothing */) { -+ if (mgr->payloads[i].payload_state != DP_PAYLOAD_DELETE_LOCAL) { -+ i++; -+ continue; -+ } - -- mutex_lock(&mgr->lock); -- send_remove = drm_dp_mst_port_downstream_of_branch(payload->port, mgr->mst_primary); -- mutex_unlock(&mgr->lock); -+ drm_dbg_kms(mgr->dev, "removing payload %d\n", i); -+ for (j = i; j < mgr->max_payloads - 1; j++) { -+ mgr->payloads[j] = mgr->payloads[j + 1]; -+ mgr->proposed_vcpis[j] = mgr->proposed_vcpis[j + 1]; - -- if (send_remove) -- drm_dp_destroy_payload_step1(mgr, mst_state, payload); -- else -- drm_dbg_kms(mgr->dev, "Payload for VCPI %d not in topology, not sending remove\n", -- payload->vcpi); -+ if (mgr->proposed_vcpis[j] && -+ mgr->proposed_vcpis[j]->num_slots) { -+ set_bit(j + 1, &mgr->payload_mask); -+ } else { -+ clear_bit(j + 1, &mgr->payload_mask); -+ } -+ } - -- list_for_each_entry(pos, &mst_state->payloads, next) { -- if (pos != payload && pos->vc_start_slot > payload->vc_start_slot) -- pos->vc_start_slot -= payload->time_slots; -+ memset(&mgr->payloads[mgr->max_payloads - 1], 0, -+ sizeof(struct drm_dp_payload)); -+ mgr->proposed_vcpis[mgr->max_payloads - 1] = NULL; -+ clear_bit(mgr->max_payloads, &mgr->payload_mask); - } -- payload->vc_start_slot = -1; -+ mutex_unlock(&mgr->payload_lock); - -- mgr->payload_count--; -- mgr->next_start_slot -= payload->time_slots; -+ return 0; - } --EXPORT_SYMBOL(drm_dp_remove_payload); -+EXPORT_SYMBOL(drm_dp_update_payload_part1); - - /** -- * drm_dp_add_payload_part2() - Execute payload update part 2 -- * @mgr: Manager to use. -- * @state: The global atomic state -- * @payload: The payload to update -- * -- * If @payload was successfully assigned a starting time slot by drm_dp_add_payload_part1(), this -- * function will send the sideband messages to finish allocating this payload. -+ * drm_dp_update_payload_part2() - Execute payload update part 2 -+ * @mgr: manager to use. - * -- * Returns: 0 on success, negative error code on failure. -+ * This iterates over all proposed virtual channels, and tries to -+ * allocate space in the link for them. For 0->slots transitions, -+ * this step writes the remote VC payload commands. For slots->0 -+ * this just resets some internal state. - */ --int drm_dp_add_payload_part2(struct drm_dp_mst_topology_mgr *mgr, -- struct drm_atomic_state *state, -- struct drm_dp_mst_atomic_payload *payload) -+int drm_dp_update_payload_part2(struct drm_dp_mst_topology_mgr *mgr) - { -+ struct drm_dp_mst_port *port; -+ int i; - int ret = 0; -+ bool skip; - -- /* Skip failed payloads */ -- if (payload->vc_start_slot == -1) { -- drm_dbg_kms(state->dev, "Part 1 of payload creation for %s failed, skipping part 2\n", -- payload->port->connector->name); -- return -EIO; -- } -+ mutex_lock(&mgr->payload_lock); -+ for (i = 0; i < mgr->max_payloads; i++) { - -- ret = drm_dp_create_payload_step2(mgr, payload); -- if (ret < 0) { -- if (!payload->delete) -- drm_err(mgr->dev, "Step 2 of creating MST payload for %p failed: %d\n", -- payload->port, ret); -- else -- drm_dbg_kms(mgr->dev, "Step 2 of removing MST payload for %p failed: %d\n", -- payload->port, ret); -- } -+ if (!mgr->proposed_vcpis[i]) -+ continue; - -- return ret; -+ port = container_of(mgr->proposed_vcpis[i], struct drm_dp_mst_port, vcpi); -+ -+ mutex_lock(&mgr->lock); -+ skip = !drm_dp_mst_port_downstream_of_branch(port, mgr->mst_primary); -+ mutex_unlock(&mgr->lock); -+ -+ if (skip) -+ continue; -+ -+ drm_dbg_kms(mgr->dev, "payload %d %d\n", i, mgr->payloads[i].payload_state); -+ if (mgr->payloads[i].payload_state == DP_PAYLOAD_LOCAL) { -+ ret = drm_dp_create_payload_step2(mgr, port, mgr->proposed_vcpis[i]->vcpi, &mgr->payloads[i]); -+ } else if (mgr->payloads[i].payload_state == DP_PAYLOAD_DELETE_LOCAL) { -+ ret = drm_dp_destroy_payload_step2(mgr, mgr->proposed_vcpis[i]->vcpi, &mgr->payloads[i]); -+ } -+ if (ret) { -+ mutex_unlock(&mgr->payload_lock); -+ return ret; -+ } -+ } -+ mutex_unlock(&mgr->payload_lock); -+ return 0; - } --EXPORT_SYMBOL(drm_dp_add_payload_part2); -+EXPORT_SYMBOL(drm_dp_update_payload_part2); - - static int drm_dp_send_dpcd_read(struct drm_dp_mst_topology_mgr *mgr, - struct drm_dp_mst_port *port, -@@ -3591,6 +3711,7 @@ int drm_dp_mst_topology_mgr_set_mst(struct drm_dp_mst_topology_mgr *mgr, bool ms - int ret = 0; - struct drm_dp_mst_branch *mstb = NULL; - -+ mutex_lock(&mgr->payload_lock); - mutex_lock(&mgr->lock); - if (mst_state == mgr->mst_state) - goto out_unlock; -@@ -3598,6 +3719,10 @@ int drm_dp_mst_topology_mgr_set_mst(struct drm_dp_mst_topology_mgr *mgr, bool ms - mgr->mst_state = mst_state; - /* set the device into MST mode */ - if (mst_state) { -+ struct drm_dp_payload reset_pay; -+ int lane_count; -+ int link_rate; -+ - WARN_ON(mgr->mst_primary); - - /* get dpcd info */ -@@ -3608,6 +3733,16 @@ int drm_dp_mst_topology_mgr_set_mst(struct drm_dp_mst_topology_mgr *mgr, bool ms - goto out_unlock; - } - -+ lane_count = min_t(int, mgr->dpcd[2] & DP_MAX_LANE_COUNT_MASK, mgr->max_lane_count); -+ link_rate = min_t(int, drm_dp_bw_code_to_link_rate(mgr->dpcd[1]), mgr->max_link_rate); -+ mgr->pbn_div = drm_dp_get_vc_payload_bw(mgr, -+ link_rate, -+ lane_count); -+ if (mgr->pbn_div == 0) { -+ ret = -EINVAL; -+ goto out_unlock; -+ } -+ - /* add initial branch device at LCT 1 */ - mstb = drm_dp_add_mst_branch_device(1, NULL); - if (mstb == NULL) { -@@ -3627,8 +3762,9 @@ int drm_dp_mst_topology_mgr_set_mst(struct drm_dp_mst_topology_mgr *mgr, bool ms - if (ret < 0) - goto out_unlock; - -- /* Write reset payload */ -- drm_dp_dpcd_write_payload(mgr, 0, 0, 0x3f); -+ reset_pay.start_slot = 0; -+ reset_pay.num_slots = 0x3f; -+ drm_dp_dpcd_write_payload(mgr, 0, &reset_pay); - - queue_work(system_long_wq, &mgr->work); - -@@ -3640,11 +3776,19 @@ int drm_dp_mst_topology_mgr_set_mst(struct drm_dp_mst_topology_mgr *mgr, bool ms - /* this can fail if the device is gone */ - drm_dp_dpcd_writeb(mgr->aux, DP_MSTM_CTRL, 0); - ret = 0; -+ memset(mgr->payloads, 0, -+ mgr->max_payloads * sizeof(mgr->payloads[0])); -+ memset(mgr->proposed_vcpis, 0, -+ mgr->max_payloads * sizeof(mgr->proposed_vcpis[0])); -+ mgr->payload_mask = 0; -+ set_bit(0, &mgr->payload_mask); -+ mgr->vcpi_mask = 0; - mgr->payload_id_table_cleared = false; - } - - out_unlock: - mutex_unlock(&mgr->lock); -+ mutex_unlock(&mgr->payload_lock); - if (mstb) - drm_dp_mst_topology_put_mstb(mstb); - return ret; -@@ -4163,18 +4307,62 @@ struct edid *drm_dp_mst_get_edid(struct drm_connector *connector, struct drm_dp_ - } - EXPORT_SYMBOL(drm_dp_mst_get_edid); - -+/** -+ * drm_dp_find_vcpi_slots() - Find time slots for this PBN value -+ * @mgr: manager to use -+ * @pbn: payload bandwidth to convert into slots. -+ * -+ * Calculate the number of time slots that will be required for the given PBN -+ * value. This function is deprecated, and should not be used in atomic -+ * drivers. -+ * -+ * RETURNS: -+ * The total slots required for this port, or error. -+ */ -+int drm_dp_find_vcpi_slots(struct drm_dp_mst_topology_mgr *mgr, -+ int pbn) -+{ -+ int num_slots; -+ -+ num_slots = DIV_ROUND_UP(pbn, mgr->pbn_div); -+ -+ /* max. time slots - one slot for MTP header */ -+ if (num_slots > 63) -+ return -ENOSPC; -+ return num_slots; -+} -+EXPORT_SYMBOL(drm_dp_find_vcpi_slots); -+ -+static int drm_dp_init_vcpi(struct drm_dp_mst_topology_mgr *mgr, -+ struct drm_dp_vcpi *vcpi, int pbn, int slots) -+{ -+ int ret; -+ -+ vcpi->pbn = pbn; -+ vcpi->aligned_pbn = slots * mgr->pbn_div; -+ vcpi->num_slots = slots; -+ -+ ret = drm_dp_mst_assign_payload_id(mgr, vcpi); -+ if (ret < 0) -+ return ret; -+ return 0; -+} -+ - /** - * drm_dp_atomic_find_time_slots() - Find and add time slots to the state - * @state: global atomic state - * @mgr: MST topology manager for the port - * @port: port to find time slots for - * @pbn: bandwidth required for the mode in PBN -+ * @pbn_div: divider for DSC mode that takes FEC into account - * -- * Allocates time slots to @port, replacing any previous time slot allocations it may -- * have had. Any atomic drivers which support MST must call this function in -- * their &drm_encoder_helper_funcs.atomic_check() callback unconditionally to -- * change the current time slot allocation for the new state, and ensure the MST -- * atomic state is added whenever the state of payloads in the topology changes. -+ * Allocates time slots to @port, replacing any previous timeslot allocations it -+ * may have had. Any atomic drivers which support MST must call this function -+ * in their &drm_encoder_helper_funcs.atomic_check() callback to change the -+ * current timeslot allocation for the new state, but only when -+ * &drm_crtc_state.mode_changed or &drm_crtc_state.connectors_changed is set -+ * to ensure compatibility with userspace applications that still use the -+ * legacy modesetting UAPI. - * - * Allocations set by this function are not checked against the bandwidth - * restraints of @mgr until the driver calls drm_dp_mst_atomic_check(). -@@ -4193,7 +4381,8 @@ EXPORT_SYMBOL(drm_dp_mst_get_edid); - */ - int drm_dp_atomic_find_time_slots(struct drm_atomic_state *state, - struct drm_dp_mst_topology_mgr *mgr, -- struct drm_dp_mst_port *port, int pbn) -+ struct drm_dp_mst_port *port, int pbn, -+ int pbn_div) - { - struct drm_dp_mst_topology_state *topology_state; - struct drm_dp_mst_atomic_payload *payload = NULL; -@@ -4226,7 +4415,10 @@ int drm_dp_atomic_find_time_slots(struct drm_atomic_state *state, - } - } - -- req_slots = DIV_ROUND_UP(pbn, topology_state->pbn_div); -+ if (pbn_div <= 0) -+ pbn_div = mgr->pbn_div; -+ -+ req_slots = DIV_ROUND_UP(pbn, pbn_div); - - drm_dbg_atomic(mgr->dev, "[CONNECTOR:%d:%s] [MST PORT:%p] TU %d -> %d\n", - port->connector->base.id, port->connector->name, -@@ -4235,7 +4427,7 @@ int drm_dp_atomic_find_time_slots(struct drm_atomic_state *state, - port->connector->base.id, port->connector->name, - port, prev_bw, pbn); - -- /* Add the new allocation to the state, note the VCPI isn't assigned until the end */ -+ /* Add the new allocation to the state */ - if (!payload) { - payload = kzalloc(sizeof(*payload), GFP_KERNEL); - if (!payload) -@@ -4243,7 +4435,6 @@ int drm_dp_atomic_find_time_slots(struct drm_atomic_state *state, - - drm_dp_mst_get_port_malloc(port); - payload->port = port; -- payload->vc_start_slot = -1; - list_add(&payload->next, &topology_state->payloads); - } - payload->time_slots = req_slots; -@@ -4260,12 +4451,10 @@ EXPORT_SYMBOL(drm_dp_atomic_find_time_slots); - * @port: The port to release the time slots from - * - * Releases any time slots that have been allocated to a port in the atomic -- * state. Any atomic drivers which support MST must call this function -- * unconditionally in their &drm_connector_helper_funcs.atomic_check() callback. -- * This helper will check whether time slots would be released by the new state and -- * respond accordingly, along with ensuring the MST state is always added to the -- * atomic state whenever a new state would modify the state of payloads on the -- * topology. -+ * state. Any atomic drivers which support MST must call this function in -+ * their &drm_connector_helper_funcs.atomic_check() callback when the -+ * connector will no longer have VCPI allocated (e.g. because its CRTC was -+ * removed) when it had VCPI allocated in the previous atomic state. - * - * It is OK to call this even if @port has been removed from the system. - * Additionally, it is OK to call this function multiple times on the same -@@ -4330,7 +4519,6 @@ int drm_dp_atomic_release_time_slots(struct drm_atomic_state *state, - drm_dp_mst_put_port_malloc(port); - payload->pbn = 0; - payload->delete = true; -- topology_state->payload_mask &= ~BIT(payload->vcpi - 1); - } - - return 0; -@@ -4381,8 +4569,7 @@ int drm_dp_mst_atomic_setup_commit(struct drm_atomic_state *state) - EXPORT_SYMBOL(drm_dp_mst_atomic_setup_commit); - - /** -- * drm_dp_mst_atomic_wait_for_dependencies() - Wait for all pending commits on MST topologies, -- * prepare new MST state for commit -+ * drm_dp_mst_atomic_wait_for_dependencies() - Wait for all pending commits on MST topologies - * @state: global atomic state - * - * Goes through any MST topologies in this atomic state, and waits for any pending commits which -@@ -4400,30 +4587,17 @@ EXPORT_SYMBOL(drm_dp_mst_atomic_setup_commit); - */ - void drm_dp_mst_atomic_wait_for_dependencies(struct drm_atomic_state *state) - { -- struct drm_dp_mst_topology_state *old_mst_state, *new_mst_state; -+ struct drm_dp_mst_topology_state *old_mst_state; - struct drm_dp_mst_topology_mgr *mgr; -- struct drm_dp_mst_atomic_payload *old_payload, *new_payload; - int i, j, ret; - -- for_each_oldnew_mst_mgr_in_state(state, mgr, old_mst_state, new_mst_state, i) { -+ for_each_old_mst_mgr_in_state(state, mgr, old_mst_state, i) { - for (j = 0; j < old_mst_state->num_commit_deps; j++) { - ret = drm_crtc_commit_wait(old_mst_state->commit_deps[j]); - if (ret < 0) - drm_err(state->dev, "Failed to wait for %s: %d\n", - old_mst_state->commit_deps[j]->crtc->name, ret); - } -- -- /* Now that previous state is committed, it's safe to copy over the start slot -- * assignments -- */ -- list_for_each_entry(old_payload, &old_mst_state->payloads, next) { -- if (old_payload->delete) -- continue; -- -- new_payload = drm_atomic_get_mst_payload_state(new_mst_state, -- old_payload->port); -- new_payload->vc_start_slot = old_payload->vc_start_slot; -- } - } - } - EXPORT_SYMBOL(drm_dp_mst_atomic_wait_for_dependencies); -@@ -4508,8 +4682,119 @@ void drm_dp_mst_update_slots(struct drm_dp_mst_topology_state *mst_state, uint8_ - } - EXPORT_SYMBOL(drm_dp_mst_update_slots); - -+/** -+ * drm_dp_mst_allocate_vcpi() - Allocate a virtual channel -+ * @mgr: manager for this port -+ * @port: port to allocate a virtual channel for. -+ * @pbn: payload bandwidth number to request -+ * @slots: returned number of slots for this PBN. -+ */ -+bool drm_dp_mst_allocate_vcpi(struct drm_dp_mst_topology_mgr *mgr, -+ struct drm_dp_mst_port *port, int pbn, int slots) -+{ -+ int ret; -+ -+ if (slots < 0) -+ return false; -+ -+ port = drm_dp_mst_topology_get_port_validated(mgr, port); -+ if (!port) -+ return false; -+ -+ if (port->vcpi.vcpi > 0) { -+ drm_dbg_kms(mgr->dev, -+ "payload: vcpi %d already allocated for pbn %d - requested pbn %d\n", -+ port->vcpi.vcpi, port->vcpi.pbn, pbn); -+ if (pbn == port->vcpi.pbn) { -+ drm_dp_mst_topology_put_port(port); -+ return true; -+ } -+ } -+ -+ ret = drm_dp_init_vcpi(mgr, &port->vcpi, pbn, slots); -+ if (ret) { -+ drm_dbg_kms(mgr->dev, "failed to init time slots=%d ret=%d\n", -+ DIV_ROUND_UP(pbn, mgr->pbn_div), ret); -+ drm_dp_mst_topology_put_port(port); -+ goto out; -+ } -+ drm_dbg_kms(mgr->dev, "initing vcpi for pbn=%d slots=%d\n", pbn, port->vcpi.num_slots); -+ -+ /* Keep port allocated until its payload has been removed */ -+ drm_dp_mst_get_port_malloc(port); -+ drm_dp_mst_topology_put_port(port); -+ return true; -+out: -+ return false; -+} -+EXPORT_SYMBOL(drm_dp_mst_allocate_vcpi); -+ -+int drm_dp_mst_get_vcpi_slots(struct drm_dp_mst_topology_mgr *mgr, struct drm_dp_mst_port *port) -+{ -+ int slots = 0; -+ -+ port = drm_dp_mst_topology_get_port_validated(mgr, port); -+ if (!port) -+ return slots; -+ -+ slots = port->vcpi.num_slots; -+ drm_dp_mst_topology_put_port(port); -+ return slots; -+} -+EXPORT_SYMBOL(drm_dp_mst_get_vcpi_slots); -+ -+/** -+ * drm_dp_mst_reset_vcpi_slots() - Reset number of slots to 0 for VCPI -+ * @mgr: manager for this port -+ * @port: unverified pointer to a port. -+ * -+ * This just resets the number of slots for the ports VCPI for later programming. -+ */ -+void drm_dp_mst_reset_vcpi_slots(struct drm_dp_mst_topology_mgr *mgr, struct drm_dp_mst_port *port) -+{ -+ /* -+ * A port with VCPI will remain allocated until its VCPI is -+ * released, no verified ref needed -+ */ -+ -+ port->vcpi.num_slots = 0; -+} -+EXPORT_SYMBOL(drm_dp_mst_reset_vcpi_slots); -+ -+/** -+ * drm_dp_mst_deallocate_vcpi() - deallocate a VCPI -+ * @mgr: manager for this port -+ * @port: port to deallocate vcpi for -+ * -+ * This can be called unconditionally, regardless of whether -+ * drm_dp_mst_allocate_vcpi() succeeded or not. -+ */ -+void drm_dp_mst_deallocate_vcpi(struct drm_dp_mst_topology_mgr *mgr, -+ struct drm_dp_mst_port *port) -+{ -+ bool skip; -+ -+ if (!port->vcpi.vcpi) -+ return; -+ -+ mutex_lock(&mgr->lock); -+ skip = !drm_dp_mst_port_downstream_of_branch(port, mgr->mst_primary); -+ mutex_unlock(&mgr->lock); -+ -+ if (skip) -+ return; -+ -+ drm_dp_mst_put_payload_id(mgr, port->vcpi.vcpi); -+ port->vcpi.num_slots = 0; -+ port->vcpi.pbn = 0; -+ port->vcpi.aligned_pbn = 0; -+ port->vcpi.vcpi = 0; -+ drm_dp_mst_put_port_malloc(port); -+} -+EXPORT_SYMBOL(drm_dp_mst_deallocate_vcpi); -+ - static int drm_dp_dpcd_write_payload(struct drm_dp_mst_topology_mgr *mgr, -- int id, u8 start_slot, u8 num_slots) -+ int id, struct drm_dp_payload *payload) - { - u8 payload_alloc[3], status; - int ret; -@@ -4519,8 +4804,8 @@ static int drm_dp_dpcd_write_payload(struct drm_dp_mst_topology_mgr *mgr, - DP_PAYLOAD_TABLE_UPDATED); - - payload_alloc[0] = id; -- payload_alloc[1] = start_slot; -- payload_alloc[2] = num_slots; -+ payload_alloc[1] = payload->start_slot; -+ payload_alloc[2] = payload->num_slots; - - ret = drm_dp_dpcd_write(mgr->aux, DP_PAYLOAD_ALLOCATE_SET, payload_alloc, 3); - if (ret != 3) { -@@ -4735,9 +5020,8 @@ static void fetch_monitor_name(struct drm_dp_mst_topology_mgr *mgr, - void drm_dp_mst_dump_topology(struct seq_file *m, - struct drm_dp_mst_topology_mgr *mgr) - { -- struct drm_dp_mst_topology_state *state; -- struct drm_dp_mst_atomic_payload *payload; -- int i, ret; -+ int i; -+ struct drm_dp_mst_port *port; - - mutex_lock(&mgr->lock); - if (mgr->mst_primary) -@@ -4746,35 +5030,36 @@ void drm_dp_mst_dump_topology(struct seq_file *m, - /* dump VCPIs */ - mutex_unlock(&mgr->lock); - -- ret = drm_modeset_lock_single_interruptible(&mgr->base.lock); -- if (ret < 0) -- return; -+ mutex_lock(&mgr->payload_lock); -+ seq_printf(m, "\n*** VCPI Info ***\n"); -+ seq_printf(m, "payload_mask: %lx, vcpi_mask: %lx, max_payloads: %d\n", mgr->payload_mask, mgr->vcpi_mask, mgr->max_payloads); - -- state = to_drm_dp_mst_topology_state(mgr->base.state); -- seq_printf(m, "\n*** Atomic state info ***\n"); -- seq_printf(m, "payload_mask: %x, max_payloads: %d, start_slot: %u, pbn_div: %d\n", -- state->payload_mask, mgr->max_payloads, state->start_slot, state->pbn_div); -- -- seq_printf(m, "\n| idx | port | vcpi | slots | pbn | dsc | sink name |\n"); -+ seq_printf(m, "\n| idx | port # | vcp_id | # slots | sink name |\n"); - for (i = 0; i < mgr->max_payloads; i++) { -- list_for_each_entry(payload, &state->payloads, next) { -+ if (mgr->proposed_vcpis[i]) { - char name[14]; - -- if (payload->vcpi != i || payload->delete) -- continue; -- -- fetch_monitor_name(mgr, payload->port, name, sizeof(name)); -- seq_printf(m, " %5d %6d %6d %02d - %02d %5d %5s %19s\n", -+ port = container_of(mgr->proposed_vcpis[i], struct drm_dp_mst_port, vcpi); -+ fetch_monitor_name(mgr, port, name, sizeof(name)); -+ seq_printf(m, "%10d%10d%10d%10d%20s\n", - i, -- payload->port->port_num, -- payload->vcpi, -- payload->vc_start_slot, -- payload->vc_start_slot + payload->time_slots - 1, -- payload->pbn, -- payload->dsc_enabled ? "Y" : "N", -+ port->port_num, -+ port->vcpi.vcpi, -+ port->vcpi.num_slots, - (*name != 0) ? name : "Unknown"); -- } -+ } else -+ seq_printf(m, "%6d - Unused\n", i); -+ } -+ seq_printf(m, "\n*** Payload Info ***\n"); -+ seq_printf(m, "| idx | state | start slot | # slots |\n"); -+ for (i = 0; i < mgr->max_payloads; i++) { -+ seq_printf(m, "%10d%10d%15d%10d\n", -+ i, -+ mgr->payloads[i].payload_state, -+ mgr->payloads[i].start_slot, -+ mgr->payloads[i].num_slots); - } -+ mutex_unlock(&mgr->payload_lock); - - seq_printf(m, "\n*** DPCD Info ***\n"); - mutex_lock(&mgr->lock); -@@ -4820,7 +5105,7 @@ void drm_dp_mst_dump_topology(struct seq_file *m, - - out: - mutex_unlock(&mgr->lock); -- drm_modeset_unlock(&mgr->base.lock); -+ - } - EXPORT_SYMBOL(drm_dp_mst_dump_topology); - -@@ -5141,22 +5426,9 @@ drm_dp_mst_atomic_check_payload_alloc_limits(struct drm_dp_mst_topology_mgr *mgr - mgr, mst_state, mgr->max_payloads); - return -EINVAL; - } -- -- /* Assign a VCPI */ -- if (!payload->vcpi) { -- payload->vcpi = ffz(mst_state->payload_mask) + 1; -- drm_dbg_atomic(mgr->dev, "[MST PORT:%p] assigned VCPI #%d\n", -- payload->port, payload->vcpi); -- mst_state->payload_mask |= BIT(payload->vcpi - 1); -- } - } -- -- if (!payload_count) -- mst_state->pbn_div = 0; -- -- drm_dbg_atomic(mgr->dev, "[MST MGR:%p] mst state %p TU pbn_div=%d avail=%d used=%d\n", -- mgr, mst_state, mst_state->pbn_div, avail_slots, -- mst_state->total_avail_slots - avail_slots); -+ drm_dbg_atomic(mgr->dev, "[MST MGR:%p] mst state %p TU avail=%d used=%d\n", -+ mgr, mst_state, avail_slots, mst_state->total_avail_slots - avail_slots); - - return 0; - } -@@ -5227,6 +5499,7 @@ EXPORT_SYMBOL(drm_dp_mst_add_affected_dsc_crtcs); - * @state: Pointer to the new drm_atomic_state - * @port: Pointer to the affected MST Port - * @pbn: Newly recalculated bw required for link with DSC enabled -+ * @pbn_div: Divider to calculate correct number of pbn per slot - * @enable: Boolean flag to enable or disable DSC on the port - * - * This function enables DSC on the given Port -@@ -5237,7 +5510,8 @@ EXPORT_SYMBOL(drm_dp_mst_add_affected_dsc_crtcs); - */ - int drm_dp_mst_atomic_enable_dsc(struct drm_atomic_state *state, - struct drm_dp_mst_port *port, -- int pbn, bool enable) -+ int pbn, int pbn_div, -+ bool enable) - { - struct drm_dp_mst_topology_state *mst_state; - struct drm_dp_mst_atomic_payload *payload; -@@ -5263,7 +5537,7 @@ int drm_dp_mst_atomic_enable_dsc(struct drm_atomic_state *state, - } - - if (enable) { -- time_slots = drm_dp_atomic_find_time_slots(state, port->mgr, port, pbn); -+ time_slots = drm_dp_atomic_find_time_slots(state, port->mgr, port, pbn, pbn_div); - drm_dbg_atomic(state->dev, - "[MST PORT:%p] Enabling DSC flag, reallocating %d time slots on the port\n", - port, time_slots); -@@ -5276,7 +5550,6 @@ int drm_dp_mst_atomic_enable_dsc(struct drm_atomic_state *state, - return time_slots; - } - EXPORT_SYMBOL(drm_dp_mst_atomic_enable_dsc); -- - /** - * drm_dp_mst_atomic_check - Check that the new state of an MST topology in an - * atomic update is valid -@@ -5334,6 +5607,7 @@ EXPORT_SYMBOL(drm_dp_mst_topology_state_funcs); - - /** - * drm_atomic_get_mst_topology_state: get MST topology state -+ * - * @state: global atomic state - * @mgr: MST topology manager, also the private object in this case - * -@@ -5352,31 +5626,6 @@ struct drm_dp_mst_topology_state *drm_atomic_get_mst_topology_state(struct drm_a - } - EXPORT_SYMBOL(drm_atomic_get_mst_topology_state); - --/** -- * drm_atomic_get_new_mst_topology_state: get new MST topology state in atomic state, if any -- * @state: global atomic state -- * @mgr: MST topology manager, also the private object in this case -- * -- * This function wraps drm_atomic_get_priv_obj_state() passing in the MST atomic -- * state vtable so that the private object state returned is that of a MST -- * topology object. -- * -- * Returns: -- * -- * The MST topology state, or NULL if there's no topology state for this MST mgr -- * in the global atomic state -- */ --struct drm_dp_mst_topology_state * --drm_atomic_get_new_mst_topology_state(struct drm_atomic_state *state, -- struct drm_dp_mst_topology_mgr *mgr) --{ -- struct drm_private_state *priv_state = -- drm_atomic_get_new_private_obj_state(state, &mgr->base); -- -- return priv_state ? to_dp_mst_topology_state(priv_state) : NULL; --} --EXPORT_SYMBOL(drm_atomic_get_new_mst_topology_state); -- - /** - * drm_dp_mst_topology_mgr_init - initialise a topology manager - * @mgr: manager struct to initialise -@@ -5384,6 +5633,8 @@ EXPORT_SYMBOL(drm_atomic_get_new_mst_topology_state); - * @aux: DP helper aux channel to talk to this device - * @max_dpcd_transaction_bytes: hw specific DPCD transaction limit - * @max_payloads: maximum number of payloads this GPU can source -+ * @max_lane_count: maximum number of lanes this GPU supports -+ * @max_link_rate: maximum link rate per lane this GPU supports in kHz - * @conn_base_id: the connector object ID the MST device is connected to. - * - * Return 0 for success, or negative error code on failure -@@ -5391,12 +5642,14 @@ EXPORT_SYMBOL(drm_atomic_get_new_mst_topology_state); - int drm_dp_mst_topology_mgr_init(struct drm_dp_mst_topology_mgr *mgr, - struct drm_device *dev, struct drm_dp_aux *aux, - int max_dpcd_transaction_bytes, int max_payloads, -+ int max_lane_count, int max_link_rate, - int conn_base_id) - { - struct drm_dp_mst_topology_state *mst_state; - - mutex_init(&mgr->lock); - mutex_init(&mgr->qlock); -+ mutex_init(&mgr->payload_lock); - mutex_init(&mgr->delayed_destroy_lock); - mutex_init(&mgr->up_req_lock); - mutex_init(&mgr->probe_lock); -@@ -5426,7 +5679,19 @@ int drm_dp_mst_topology_mgr_init(struct drm_dp_mst_topology_mgr *mgr, - mgr->aux = aux; - mgr->max_dpcd_transaction_bytes = max_dpcd_transaction_bytes; - mgr->max_payloads = max_payloads; -+ mgr->max_lane_count = max_lane_count; -+ mgr->max_link_rate = max_link_rate; - mgr->conn_base_id = conn_base_id; -+ if (max_payloads + 1 > sizeof(mgr->payload_mask) * 8 || -+ max_payloads + 1 > sizeof(mgr->vcpi_mask) * 8) -+ return -EINVAL; -+ mgr->payloads = kcalloc(max_payloads, sizeof(struct drm_dp_payload), GFP_KERNEL); -+ if (!mgr->payloads) -+ return -ENOMEM; -+ mgr->proposed_vcpis = kcalloc(max_payloads, sizeof(struct drm_dp_vcpi *), GFP_KERNEL); -+ if (!mgr->proposed_vcpis) -+ return -ENOMEM; -+ set_bit(0, &mgr->payload_mask); - - mst_state = kzalloc(sizeof(*mst_state), GFP_KERNEL); - if (mst_state == NULL) -@@ -5459,12 +5724,19 @@ void drm_dp_mst_topology_mgr_destroy(struct drm_dp_mst_topology_mgr *mgr) - destroy_workqueue(mgr->delayed_destroy_wq); - mgr->delayed_destroy_wq = NULL; - } -+ mutex_lock(&mgr->payload_lock); -+ kfree(mgr->payloads); -+ mgr->payloads = NULL; -+ kfree(mgr->proposed_vcpis); -+ mgr->proposed_vcpis = NULL; -+ mutex_unlock(&mgr->payload_lock); - mgr->dev = NULL; - mgr->aux = NULL; - drm_atomic_private_obj_fini(&mgr->base); - mgr->funcs = NULL; - - mutex_destroy(&mgr->delayed_destroy_lock); -+ mutex_destroy(&mgr->payload_lock); - mutex_destroy(&mgr->qlock); - mutex_destroy(&mgr->lock); - mutex_destroy(&mgr->up_req_lock); -diff --git a/drivers/gpu/drm/i915/display/intel_dp_mst.c b/drivers/gpu/drm/i915/display/intel_dp_mst.c -index 03604a37931c..e01a40f35284 100644 ---- a/drivers/gpu/drm/i915/display/intel_dp_mst.c -+++ b/drivers/gpu/drm/i915/display/intel_dp_mst.c -@@ -52,7 +52,6 @@ static int intel_dp_mst_compute_link_config(struct intel_encoder *encoder, - struct drm_atomic_state *state = crtc_state->uapi.state; - struct intel_dp_mst_encoder *intel_mst = enc_to_mst(encoder); - struct intel_dp *intel_dp = &intel_mst->primary->dp; -- struct drm_dp_mst_topology_state *mst_state; - struct intel_connector *connector = - to_intel_connector(conn_state->connector); - struct drm_i915_private *i915 = to_i915(connector->base.dev); -@@ -60,28 +59,22 @@ static int intel_dp_mst_compute_link_config(struct intel_encoder *encoder, - &crtc_state->hw.adjusted_mode; - int bpp, slots = -EINVAL; - -- mst_state = drm_atomic_get_mst_topology_state(state, &intel_dp->mst_mgr); -- if (IS_ERR(mst_state)) -- return PTR_ERR(mst_state); -- - crtc_state->lane_count = limits->max_lane_count; - crtc_state->port_clock = limits->max_rate; - -- // TODO: Handle pbn_div changes by adding a new MST helper -- if (!mst_state->pbn_div) { -- mst_state->pbn_div = drm_dp_get_vc_payload_bw(&intel_dp->mst_mgr, -- limits->max_rate, -- limits->max_lane_count); -- } -- - for (bpp = limits->max_bpp; bpp >= limits->min_bpp; bpp -= 2 * 3) { -+ - crtc_state->pipe_bpp = bpp; - - crtc_state->pbn = drm_dp_calc_pbn_mode(adjusted_mode->crtc_clock, - crtc_state->pipe_bpp, - false); - slots = drm_dp_atomic_find_time_slots(state, &intel_dp->mst_mgr, -- connector->port, crtc_state->pbn); -+ connector->port, -+ crtc_state->pbn, -+ drm_dp_get_vc_payload_bw(&intel_dp->mst_mgr, -+ crtc_state->port_clock, -+ crtc_state->lane_count)); - if (slots == -EDEADLK) - return slots; - if (slots >= 0) -@@ -364,17 +357,21 @@ static void intel_mst_disable_dp(struct intel_atomic_state *state, - struct intel_dp *intel_dp = &dig_port->dp; - struct intel_connector *connector = - to_intel_connector(old_conn_state->connector); -- struct drm_dp_mst_topology_state *mst_state = -- drm_atomic_get_mst_topology_state(&state->base, &intel_dp->mst_mgr); - struct drm_i915_private *i915 = to_i915(connector->base.dev); -+ int start_slot = intel_dp_is_uhbr(old_crtc_state) ? 0 : 1; -+ int ret; - - drm_dbg_kms(&i915->drm, "active links %d\n", - intel_dp->active_mst_links); - - intel_hdcp_disable(intel_mst->connector); - -- drm_dp_remove_payload(&intel_dp->mst_mgr, mst_state, -- drm_atomic_get_mst_payload_state(mst_state, connector->port)); -+ drm_dp_mst_reset_vcpi_slots(&intel_dp->mst_mgr, connector->port); -+ -+ ret = drm_dp_update_payload_part1(&intel_dp->mst_mgr, start_slot); -+ if (ret) { -+ drm_dbg_kms(&i915->drm, "failed to update payload %d\n", ret); -+ } - - intel_audio_codec_disable(encoder, old_crtc_state, old_conn_state); - } -@@ -402,6 +399,8 @@ static void intel_mst_post_disable_dp(struct intel_atomic_state *state, - - intel_disable_transcoder(old_crtc_state); - -+ drm_dp_update_payload_part2(&intel_dp->mst_mgr); -+ - clear_act_sent(encoder, old_crtc_state); - - intel_de_rmw(dev_priv, TRANS_DDI_FUNC_CTL(old_crtc_state->cpu_transcoder), -@@ -409,6 +408,8 @@ static void intel_mst_post_disable_dp(struct intel_atomic_state *state, - - wait_for_act_sent(encoder, old_crtc_state); - -+ drm_dp_mst_deallocate_vcpi(&intel_dp->mst_mgr, connector->port); -+ - intel_ddi_disable_transcoder_func(old_crtc_state); - - if (DISPLAY_VER(dev_priv) >= 9) -@@ -475,8 +476,7 @@ static void intel_mst_pre_enable_dp(struct intel_atomic_state *state, - struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); - struct intel_connector *connector = - to_intel_connector(conn_state->connector); -- struct drm_dp_mst_topology_state *mst_state = -- drm_atomic_get_new_mst_topology_state(&state->base, &intel_dp->mst_mgr); -+ int start_slot = intel_dp_is_uhbr(pipe_config) ? 0 : 1; - int ret; - bool first_mst_stream; - -@@ -502,13 +502,16 @@ static void intel_mst_pre_enable_dp(struct intel_atomic_state *state, - dig_port->base.pre_enable(state, &dig_port->base, - pipe_config, NULL); - -+ ret = drm_dp_mst_allocate_vcpi(&intel_dp->mst_mgr, -+ connector->port, -+ pipe_config->pbn, -+ pipe_config->dp_m_n.tu); -+ if (!ret) -+ drm_err(&dev_priv->drm, "failed to allocate vcpi\n"); -+ - intel_dp->active_mst_links++; - -- ret = drm_dp_add_payload_part1(&intel_dp->mst_mgr, mst_state, -- drm_atomic_get_mst_payload_state(mst_state, connector->port)); -- if (ret < 0) -- drm_err(&dev_priv->drm, "Failed to create MST payload for %s: %d\n", -- connector->base.name, ret); -+ ret = drm_dp_update_payload_part1(&intel_dp->mst_mgr, start_slot); - - /* - * Before Gen 12 this is not done as part of -@@ -531,10 +534,7 @@ static void intel_mst_enable_dp(struct intel_atomic_state *state, - struct intel_dp_mst_encoder *intel_mst = enc_to_mst(encoder); - struct intel_digital_port *dig_port = intel_mst->primary; - struct intel_dp *intel_dp = &dig_port->dp; -- struct intel_connector *connector = to_intel_connector(conn_state->connector); - struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); -- struct drm_dp_mst_topology_state *mst_state = -- drm_atomic_get_new_mst_topology_state(&state->base, &intel_dp->mst_mgr); - enum transcoder trans = pipe_config->cpu_transcoder; - - drm_WARN_ON(&dev_priv->drm, pipe_config->has_pch_encoder); -@@ -562,8 +562,7 @@ static void intel_mst_enable_dp(struct intel_atomic_state *state, - - wait_for_act_sent(encoder, pipe_config); - -- drm_dp_add_payload_part2(&intel_dp->mst_mgr, &state->base, -- drm_atomic_get_mst_payload_state(mst_state, connector->port)); -+ drm_dp_update_payload_part2(&intel_dp->mst_mgr); - - if (DISPLAY_VER(dev_priv) >= 14 && pipe_config->fec_enable) - intel_de_rmw(dev_priv, MTL_CHICKEN_TRANS(trans), 0, -@@ -950,6 +949,8 @@ intel_dp_mst_encoder_init(struct intel_digital_port *dig_port, int conn_base_id) - struct intel_dp *intel_dp = &dig_port->dp; - enum port port = dig_port->base.port; - int ret; -+ int max_source_rate = -+ intel_dp->source_rates[intel_dp->num_source_rates - 1]; - - if (!HAS_DP_MST(i915) || intel_dp_is_edp(intel_dp)) - return 0; -@@ -965,7 +966,10 @@ intel_dp_mst_encoder_init(struct intel_digital_port *dig_port, int conn_base_id) - /* create encoders */ - intel_dp_create_fake_mst_encoders(dig_port); - ret = drm_dp_mst_topology_mgr_init(&intel_dp->mst_mgr, &i915->drm, -- &intel_dp->aux, 16, 3, conn_base_id); -+ &intel_dp->aux, 16, 3, -+ dig_port->max_lanes, -+ max_source_rate, -+ conn_base_id); - if (ret) { - intel_dp->mst_mgr.cbs = NULL; - return ret; -diff --git a/drivers/gpu/drm/i915/display/intel_hdcp.c b/drivers/gpu/drm/i915/display/intel_hdcp.c -index 6406fd487ee5..987e02eea66a 100644 ---- a/drivers/gpu/drm/i915/display/intel_hdcp.c -+++ b/drivers/gpu/drm/i915/display/intel_hdcp.c -@@ -31,30 +31,8 @@ - - static int intel_conn_to_vcpi(struct intel_connector *connector) - { -- struct drm_dp_mst_topology_mgr *mgr; -- struct drm_dp_mst_atomic_payload *payload; -- struct drm_dp_mst_topology_state *mst_state; -- int vcpi = 0; -- - /* For HDMI this is forced to be 0x0. For DP SST also this is 0x0. */ -- if (!connector->port) -- return 0; -- mgr = connector->port->mgr; -- -- drm_modeset_lock(&mgr->base.lock, NULL); -- mst_state = to_drm_dp_mst_topology_state(mgr->base.state); -- payload = drm_atomic_get_mst_payload_state(mst_state, connector->port); -- if (drm_WARN_ON(mgr->dev, !payload)) -- goto out; -- -- vcpi = payload->vcpi; -- if (drm_WARN_ON(mgr->dev, vcpi < 0)) { -- vcpi = 0; -- goto out; -- } --out: -- drm_modeset_unlock(&mgr->base.lock); -- return vcpi; -+ return connector->port ? connector->port->vcpi.vcpi : 0; - } - - /* -diff --git a/drivers/gpu/drm/nouveau/dispnv50/disp.c b/drivers/gpu/drm/nouveau/dispnv50/disp.c -index 33c97d510999..8400a5d8ea6e 100644 ---- a/drivers/gpu/drm/nouveau/dispnv50/disp.c -+++ b/drivers/gpu/drm/nouveau/dispnv50/disp.c -@@ -932,7 +932,6 @@ struct nv50_msto { - struct nv50_head *head; - struct nv50_mstc *mstc; - bool disabled; -- bool enabled; - }; - - struct nouveau_encoder *nv50_real_outp(struct drm_encoder *encoder) -@@ -949,36 +948,58 @@ struct nouveau_encoder *nv50_real_outp(struct drm_encoder *encoder) - } - - static void --nv50_msto_cleanup(struct drm_atomic_state *state, -- struct drm_dp_mst_topology_state *mst_state, -- struct drm_dp_mst_topology_mgr *mgr, -- struct nv50_msto *msto) -+nv50_msto_cleanup(struct nv50_msto *msto) - { - struct nouveau_drm *drm = nouveau_drm(msto->encoder.dev); -- struct drm_dp_mst_atomic_payload *payload = -- drm_atomic_get_mst_payload_state(mst_state, msto->mstc->port); -+ -+ struct nv50_mstc *mstc = msto->mstc; -+ struct nv50_mstm *mstm = mstc->mstm; -+ -+ if (!msto->disabled) -+ return; - - NV_ATOMIC(drm, "%s: msto cleanup\n", msto->encoder.name); - -- if (msto->disabled) { -- msto->mstc = NULL; -- msto->disabled = false; -- } else if (msto->enabled) { -- drm_dp_add_payload_part2(mgr, state, payload); -- msto->enabled = false; -+ drm_dp_mst_deallocate_vcpi(&mstm->mgr, mstc->port); -+ -+ msto->mstc = NULL; -+ msto->disabled = false; -+} -+ -+static struct drm_dp_payload * -+nv50_msto_payload(struct nv50_msto *msto) -+{ -+ struct nouveau_drm *drm = nouveau_drm(msto->encoder.dev); -+ struct nv50_mstc *mstc = msto->mstc; -+ struct nv50_mstm *mstm = mstc->mstm; -+ int vcpi = mstc->port->vcpi.vcpi, i; -+ -+ WARN_ON(!mutex_is_locked(&mstm->mgr.payload_lock)); -+ -+ NV_ATOMIC(drm, "%s: vcpi %d\n", msto->encoder.name, vcpi); -+ for (i = 0; i < mstm->mgr.max_payloads; i++) { -+ struct drm_dp_payload *payload = &mstm->mgr.payloads[i]; -+ NV_ATOMIC(drm, "%s: %d: vcpi %d start 0x%02x slots 0x%02x\n", -+ mstm->outp->base.base.name, i, payload->vcpi, -+ payload->start_slot, payload->num_slots); -+ } -+ -+ for (i = 0; i < mstm->mgr.max_payloads; i++) { -+ struct drm_dp_payload *payload = &mstm->mgr.payloads[i]; -+ if (payload->vcpi == vcpi) -+ return payload; - } -+ -+ return NULL; - } - - static void --nv50_msto_prepare(struct drm_atomic_state *state, -- struct drm_dp_mst_topology_state *mst_state, -- struct drm_dp_mst_topology_mgr *mgr, -- struct nv50_msto *msto) -+nv50_msto_prepare(struct nv50_msto *msto) - { - struct nouveau_drm *drm = nouveau_drm(msto->encoder.dev); - struct nv50_mstc *mstc = msto->mstc; - struct nv50_mstm *mstm = mstc->mstm; -- struct drm_dp_mst_atomic_payload *payload; -+ struct drm_dp_payload *payload = NULL; - struct { - struct nv50_disp_mthd_v1 base; - struct nv50_disp_sor_dp_mst_vcpi_v0 vcpi; -@@ -990,27 +1011,28 @@ nv50_msto_prepare(struct drm_atomic_state *state, - (0x0100 << msto->head->base.index), - }; - -+ mutex_lock(&mstm->mgr.payload_lock); -+ - NV_ATOMIC(drm, "%s: msto prepare\n", msto->encoder.name); - -- payload = drm_atomic_get_mst_payload_state(mst_state, mstc->port); -+ if (mstc->port->vcpi.vcpi > 0) -+ payload = nv50_msto_payload(msto); - -- // TODO: Figure out if we want to do a better job of handling VCPI allocation failures here? -- if (msto->disabled) { -- drm_dp_remove_payload(mgr, mst_state, payload); -- } else { -- if (msto->enabled) -- drm_dp_add_payload_part1(mgr, mst_state, payload); -+ if (payload) { -+ NV_ATOMIC(drm, "%s: %s: %02x %02x %04x %04x\n", -+ msto->encoder.name, msto->head->base.base.name, -+ payload->start_slot, payload->num_slots, -+ mstc->port->vcpi.pbn, mstc->port->vcpi.aligned_pbn); - -- args.vcpi.start_slot = payload->vc_start_slot; -- args.vcpi.num_slots = payload->time_slots; -+ args.vcpi.start_slot = payload->start_slot; -+ args.vcpi.num_slots = payload->num_slots; - args.vcpi.pbn = payload->pbn; -- args.vcpi.aligned_pbn = payload->time_slots * mst_state->pbn_div; -- } -+ } else { -+ NV_ATOMIC(drm, "%s: %s: %02x %02x %04x %04x\n", -+ msto->encoder.name, msto->head->base.base.name, 0, 0, 0, 0); -+ } - -- NV_ATOMIC(drm, "%s: %s: %02x %02x %04x %04x\n", -- msto->encoder.name, msto->head->base.base.name, -- args.vcpi.start_slot, args.vcpi.num_slots, -- args.vcpi.pbn, args.vcpi.aligned_pbn); -+ mutex_unlock(&mstm->mgr.payload_lock); - - nvif_mthd(&drm->display->disp.object, 0, &args, sizeof(args)); - } -@@ -1022,7 +1044,6 @@ nv50_msto_atomic_check(struct drm_encoder *encoder, - { - struct drm_atomic_state *state = crtc_state->state; - struct drm_connector *connector = conn_state->connector; -- struct drm_dp_mst_topology_state *mst_state; - struct nv50_mstc *mstc = nv50_mstc(connector); - struct nv50_mstm *mstm = mstc->mstm; - struct nv50_head_atom *asyh = nv50_head_atom(crtc_state); -@@ -1050,18 +1071,8 @@ nv50_msto_atomic_check(struct drm_encoder *encoder, - false); - } - -- mst_state = drm_atomic_get_mst_topology_state(state, &mstm->mgr); -- if (IS_ERR(mst_state)) -- return PTR_ERR(mst_state); -- -- if (!mst_state->pbn_div) { -- struct nouveau_encoder *outp = mstc->mstm->outp; -- -- mst_state->pbn_div = drm_dp_get_vc_payload_bw(&mstm->mgr, -- outp->dp.link_bw, outp->dp.link_nr); -- } -- -- slots = drm_dp_atomic_find_time_slots(state, &mstm->mgr, mstc->port, asyh->dp.pbn); -+ slots = drm_dp_atomic_find_time_slots(state, &mstm->mgr, mstc->port, -+ asyh->dp.pbn, 0); - if (slots < 0) - return slots; - -@@ -1093,6 +1104,7 @@ nv50_msto_atomic_enable(struct drm_encoder *encoder, struct drm_atomic_state *st - struct drm_connector *connector; - struct drm_connector_list_iter conn_iter; - u8 proto; -+ bool r; - - drm_connector_list_iter_begin(encoder->dev, &conn_iter); - drm_for_each_connector_iter(connector, &conn_iter) { -@@ -1107,6 +1119,10 @@ nv50_msto_atomic_enable(struct drm_encoder *encoder, struct drm_atomic_state *st - if (WARN_ON(!mstc)) - return; - -+ r = drm_dp_mst_allocate_vcpi(&mstm->mgr, mstc->port, asyh->dp.pbn, asyh->dp.tu); -+ if (!r) -+ DRM_DEBUG_KMS("Failed to allocate VCPI\n"); -+ - if (!mstm->links++) - nv50_outp_acquire(mstm->outp, false /*XXX: MST audio.*/); - -@@ -1119,7 +1135,6 @@ nv50_msto_atomic_enable(struct drm_encoder *encoder, struct drm_atomic_state *st - nv50_dp_bpc_to_depth(asyh->or.bpc)); - - msto->mstc = mstc; -- msto->enabled = true; - mstm->modified = true; - } - -@@ -1130,6 +1145,8 @@ nv50_msto_atomic_disable(struct drm_encoder *encoder, struct drm_atomic_state *s - struct nv50_mstc *mstc = msto->mstc; - struct nv50_mstm *mstm = mstc->mstm; - -+ drm_dp_mst_reset_vcpi_slots(&mstm->mgr, mstc->port); -+ - mstm->outp->update(mstm->outp, msto->head->base.index, NULL, 0, 0); - mstm->modified = true; - if (!--mstm->links) -@@ -1349,9 +1366,7 @@ nv50_mstc_new(struct nv50_mstm *mstm, struct drm_dp_mst_port *port, - } - - static void --nv50_mstm_cleanup(struct drm_atomic_state *state, -- struct drm_dp_mst_topology_state *mst_state, -- struct nv50_mstm *mstm) -+nv50_mstm_cleanup(struct nv50_mstm *mstm) - { - struct nouveau_drm *drm = nouveau_drm(mstm->outp->base.base.dev); - struct drm_encoder *encoder; -@@ -1359,12 +1374,14 @@ nv50_mstm_cleanup(struct drm_atomic_state *state, - NV_ATOMIC(drm, "%s: mstm cleanup\n", mstm->outp->base.base.name); - drm_dp_check_act_status(&mstm->mgr); - -+ drm_dp_update_payload_part2(&mstm->mgr); -+ - drm_for_each_encoder(encoder, mstm->outp->base.base.dev) { - if (encoder->encoder_type == DRM_MODE_ENCODER_DPMST) { - struct nv50_msto *msto = nv50_msto(encoder); - struct nv50_mstc *mstc = msto->mstc; - if (mstc && mstc->mstm == mstm) -- nv50_msto_cleanup(state, mst_state, &mstm->mgr, msto); -+ nv50_msto_cleanup(msto); - } - } - -@@ -1372,34 +1389,20 @@ nv50_mstm_cleanup(struct drm_atomic_state *state, - } - - static void --nv50_mstm_prepare(struct drm_atomic_state *state, -- struct drm_dp_mst_topology_state *mst_state, -- struct nv50_mstm *mstm) -+nv50_mstm_prepare(struct nv50_mstm *mstm) - { - struct nouveau_drm *drm = nouveau_drm(mstm->outp->base.base.dev); - struct drm_encoder *encoder; - - NV_ATOMIC(drm, "%s: mstm prepare\n", mstm->outp->base.base.name); -+ drm_dp_update_payload_part1(&mstm->mgr, 1); - -- /* Disable payloads first */ -- drm_for_each_encoder(encoder, mstm->outp->base.base.dev) { -- if (encoder->encoder_type == DRM_MODE_ENCODER_DPMST) { -- struct nv50_msto *msto = nv50_msto(encoder); -- struct nv50_mstc *mstc = msto->mstc; -- if (mstc && mstc->mstm == mstm && msto->disabled) -- nv50_msto_prepare(state, mst_state, &mstm->mgr, msto); -- } -- } -- -- /* Add payloads for new heads, while also updating the start slots of any unmodified (but -- * active) heads that may have had their VC slots shifted left after the previous step -- */ - drm_for_each_encoder(encoder, mstm->outp->base.base.dev) { - if (encoder->encoder_type == DRM_MODE_ENCODER_DPMST) { - struct nv50_msto *msto = nv50_msto(encoder); - struct nv50_mstc *mstc = msto->mstc; -- if (mstc && mstc->mstm == mstm && !msto->disabled) -- nv50_msto_prepare(state, mst_state, &mstm->mgr, msto); -+ if (mstc && mstc->mstm == mstm) -+ nv50_msto_prepare(msto); - } - } - -@@ -1596,7 +1599,9 @@ nv50_mstm_new(struct nouveau_encoder *outp, struct drm_dp_aux *aux, int aux_max, - mstm->mgr.cbs = &nv50_mstm; - - ret = drm_dp_mst_topology_mgr_init(&mstm->mgr, dev, aux, aux_max, -- max_payloads, conn_base_id); -+ max_payloads, outp->dcb->dpconf.link_nr, -+ drm_dp_bw_code_to_link_rate(outp->dcb->dpconf.link_bw), -+ conn_base_id); - if (ret) - return ret; - -@@ -2048,20 +2053,20 @@ nv50_pior_create(struct drm_connector *connector, struct dcb_output *dcbe) - static void - nv50_disp_atomic_commit_core(struct drm_atomic_state *state, u32 *interlock) - { -- struct drm_dp_mst_topology_mgr *mgr; -- struct drm_dp_mst_topology_state *mst_state; - struct nouveau_drm *drm = nouveau_drm(state->dev); - struct nv50_disp *disp = nv50_disp(drm->dev); - struct nv50_core *core = disp->core; - struct nv50_mstm *mstm; -- int i; -+ struct drm_encoder *encoder; - - NV_ATOMIC(drm, "commit core %08x\n", interlock[NV50_DISP_INTERLOCK_BASE]); - -- for_each_new_mst_mgr_in_state(state, mgr, mst_state, i) { -- mstm = nv50_mstm(mgr); -- if (mstm->modified) -- nv50_mstm_prepare(state, mst_state, mstm); -+ drm_for_each_encoder(encoder, drm->dev) { -+ if (encoder->encoder_type != DRM_MODE_ENCODER_DPMST) { -+ mstm = nouveau_encoder(encoder)->dp.mstm; -+ if (mstm && mstm->modified) -+ nv50_mstm_prepare(mstm); -+ } - } - - core->func->ntfy_init(disp->sync, NV50_DISP_CORE_NTFY); -@@ -2070,10 +2075,12 @@ nv50_disp_atomic_commit_core(struct drm_atomic_state *state, u32 *interlock) - disp->core->chan.base.device)) - NV_ERROR(drm, "core notifier timeout\n"); - -- for_each_new_mst_mgr_in_state(state, mgr, mst_state, i) { -- mstm = nv50_mstm(mgr); -- if (mstm->modified) -- nv50_mstm_cleanup(state, mst_state, mstm); -+ drm_for_each_encoder(encoder, drm->dev) { -+ if (encoder->encoder_type != DRM_MODE_ENCODER_DPMST) { -+ mstm = nouveau_encoder(encoder)->dp.mstm; -+ if (mstm && mstm->modified) -+ nv50_mstm_cleanup(mstm); -+ } - } - } - -diff --git a/include/drm/display/drm_dp_mst_helper.h b/include/drm/display/drm_dp_mst_helper.h -index 41fd8352ab65..1d2f77835de5 100644 ---- a/include/drm/display/drm_dp_mst_helper.h -+++ b/include/drm/display/drm_dp_mst_helper.h -@@ -48,6 +48,20 @@ struct drm_dp_mst_topology_ref_history { - - struct drm_dp_mst_branch; - -+/** -+ * struct drm_dp_vcpi - Virtual Channel Payload Identifier -+ * @vcpi: Virtual channel ID. -+ * @pbn: Payload Bandwidth Number for this channel -+ * @aligned_pbn: PBN aligned with slot size -+ * @num_slots: number of slots for this PBN -+ */ -+struct drm_dp_vcpi { -+ int vcpi; -+ int pbn; -+ int aligned_pbn; -+ int num_slots; -+}; -+ - /** - * struct drm_dp_mst_port - MST port - * @port_num: port number -@@ -131,6 +145,7 @@ struct drm_dp_mst_port { - struct drm_dp_aux *passthrough_aux; - struct drm_dp_mst_branch *parent; - -+ struct drm_dp_vcpi vcpi; - struct drm_connector *connector; - struct drm_dp_mst_topology_mgr *mgr; - -@@ -515,6 +530,20 @@ struct drm_dp_mst_topology_cbs { - void (*poll_hpd_irq)(struct drm_dp_mst_topology_mgr *mgr); - }; - -+#define DP_MAX_PAYLOAD (sizeof(unsigned long) * 8) -+ -+#define DP_PAYLOAD_LOCAL 1 -+#define DP_PAYLOAD_REMOTE 2 -+#define DP_PAYLOAD_DELETE_LOCAL 3 -+ -+struct drm_dp_payload { -+ int payload_state; -+ int start_slot; -+ int num_slots; -+ int vcpi; -+ int pbn; -+}; -+ - #define to_dp_mst_topology_state(x) container_of(x, struct drm_dp_mst_topology_state, base) - - /** -@@ -527,34 +556,6 @@ struct drm_dp_mst_atomic_payload { - /** @port: The MST port assigned to this payload */ - struct drm_dp_mst_port *port; - -- /** -- * @vc_start_slot: The time slot that this payload starts on. Because payload start slots -- * can't be determined ahead of time, the contents of this value are UNDEFINED at atomic -- * check time. This shouldn't usually matter, as the start slot should never be relevant for -- * atomic state computations. -- * -- * Since this value is determined at commit time instead of check time, this value is -- * protected by the MST helpers ensuring that async commits operating on the given topology -- * never run in parallel. In the event that a driver does need to read this value (e.g. to -- * inform hardware of the starting timeslot for a payload), the driver may either: -- * -- * * Read this field during the atomic commit after -- * drm_dp_mst_atomic_wait_for_dependencies() has been called, which will ensure the -- * previous MST states payload start slots have been copied over to the new state. Note -- * that a new start slot won't be assigned/removed from this payload until -- * drm_dp_add_payload_part1()/drm_dp_remove_payload() have been called. -- * * Acquire the MST modesetting lock, and then wait for any pending MST-related commits to -- * get committed to hardware by calling drm_crtc_commit_wait() on each of the -- * &drm_crtc_commit structs in &drm_dp_mst_topology_state.commit_deps. -- * -- * If neither of the two above solutions suffice (e.g. the driver needs to read the start -- * slot in the middle of an atomic commit without waiting for some reason), then drivers -- * should cache this value themselves after changing payloads. -- */ -- s8 vc_start_slot; -- -- /** @vcpi: The Virtual Channel Payload Identifier */ -- u8 vcpi; - /** - * @time_slots: - * The number of timeslots allocated to this payload from the source DP Tx to -@@ -582,6 +583,8 @@ struct drm_dp_mst_topology_state { - /** @base: Base private state for atomic */ - struct drm_private_state base; - -+ /** @payloads: The list of payloads being created/destroyed in this state */ -+ struct list_head payloads; - /** @mgr: The topology manager */ - struct drm_dp_mst_topology_mgr *mgr; - -@@ -598,21 +601,10 @@ struct drm_dp_mst_topology_state { - /** @num_commit_deps: The number of CRTC commits in @commit_deps */ - size_t num_commit_deps; - -- /** @payload_mask: A bitmask of allocated VCPIs, used for VCPI assignments */ -- u32 payload_mask; -- /** @payloads: The list of payloads being created/destroyed in this state */ -- struct list_head payloads; -- - /** @total_avail_slots: The total number of slots this topology can handle (63 or 64) */ - u8 total_avail_slots; - /** @start_slot: The first usable time slot in this topology (1 or 0) */ - u8 start_slot; -- -- /** -- * @pbn_div: The current PBN divisor for this topology. The driver is expected to fill this -- * out itself. -- */ -- int pbn_div; - }; - - #define to_dp_mst_topology_mgr(x) container_of(x, struct drm_dp_mst_topology_mgr, base) -@@ -652,6 +644,14 @@ struct drm_dp_mst_topology_mgr { - * @max_payloads: maximum number of payloads the GPU can generate. - */ - int max_payloads; -+ /** -+ * @max_lane_count: maximum number of lanes the GPU can drive. -+ */ -+ int max_lane_count; -+ /** -+ * @max_link_rate: maximum link rate per lane GPU can output, in kHz. -+ */ -+ int max_link_rate; - /** - * @conn_base_id: DRM connector ID this mgr is connected to. Only used - * to build the MST connector path value. -@@ -694,20 +694,6 @@ struct drm_dp_mst_topology_mgr { - */ - bool payload_id_table_cleared : 1; - -- /** -- * @payload_count: The number of currently active payloads in hardware. This value is only -- * intended to be used internally by MST helpers for payload tracking, and is only safe to -- * read/write from the atomic commit (not check) context. -- */ -- u8 payload_count; -- -- /** -- * @next_start_slot: The starting timeslot to use for new VC payloads. This value is used -- * internally by MST helpers for payload tracking, and is only safe to read/write from the -- * atomic commit (not check) context. -- */ -- u8 next_start_slot; -- - /** - * @mst_primary: Pointer to the primary/first branch device. - */ -@@ -721,6 +707,10 @@ struct drm_dp_mst_topology_mgr { - * @sink_count: Sink count from DEVICE_SERVICE_IRQ_VECTOR_ESI0. - */ - u8 sink_count; -+ /** -+ * @pbn_div: PBN to slots divisor. -+ */ -+ int pbn_div; - - /** - * @funcs: Atomic helper callbacks -@@ -737,6 +727,32 @@ struct drm_dp_mst_topology_mgr { - */ - struct list_head tx_msg_downq; - -+ /** -+ * @payload_lock: Protect payload information. -+ */ -+ struct mutex payload_lock; -+ /** -+ * @proposed_vcpis: Array of pointers for the new VCPI allocation. The -+ * VCPI structure itself is &drm_dp_mst_port.vcpi, and the size of -+ * this array is determined by @max_payloads. -+ */ -+ struct drm_dp_vcpi **proposed_vcpis; -+ /** -+ * @payloads: Array of payloads. The size of this array is determined -+ * by @max_payloads. -+ */ -+ struct drm_dp_payload *payloads; -+ /** -+ * @payload_mask: Elements of @payloads actually in use. Since -+ * reallocation of active outputs isn't possible gaps can be created by -+ * disabling outputs out of order compared to how they've been enabled. -+ */ -+ unsigned long payload_mask; -+ /** -+ * @vcpi_mask: Similar to @payload_mask, but for @proposed_vcpis. -+ */ -+ unsigned long vcpi_mask; -+ - /** - * @tx_waitq: Wait to queue stall for the tx worker. - */ -@@ -808,7 +824,9 @@ struct drm_dp_mst_topology_mgr { - int drm_dp_mst_topology_mgr_init(struct drm_dp_mst_topology_mgr *mgr, - struct drm_device *dev, struct drm_dp_aux *aux, - int max_dpcd_transaction_bytes, -- int max_payloads, int conn_base_id); -+ int max_payloads, -+ int max_lane_count, int max_link_rate, -+ int conn_base_id); - - void drm_dp_mst_topology_mgr_destroy(struct drm_dp_mst_topology_mgr *mgr); - -@@ -831,17 +849,28 @@ int drm_dp_get_vc_payload_bw(const struct drm_dp_mst_topology_mgr *mgr, - - int drm_dp_calc_pbn_mode(int clock, int bpp, bool dsc); - -+bool drm_dp_mst_allocate_vcpi(struct drm_dp_mst_topology_mgr *mgr, -+ struct drm_dp_mst_port *port, int pbn, int slots); -+ -+int drm_dp_mst_get_vcpi_slots(struct drm_dp_mst_topology_mgr *mgr, struct drm_dp_mst_port *port); -+ -+ -+void drm_dp_mst_reset_vcpi_slots(struct drm_dp_mst_topology_mgr *mgr, struct drm_dp_mst_port *port); -+ - void drm_dp_mst_update_slots(struct drm_dp_mst_topology_state *mst_state, uint8_t link_encoding_cap); - --int drm_dp_add_payload_part1(struct drm_dp_mst_topology_mgr *mgr, -- struct drm_dp_mst_topology_state *mst_state, -- struct drm_dp_mst_atomic_payload *payload); --int drm_dp_add_payload_part2(struct drm_dp_mst_topology_mgr *mgr, -- struct drm_atomic_state *state, -- struct drm_dp_mst_atomic_payload *payload); --void drm_dp_remove_payload(struct drm_dp_mst_topology_mgr *mgr, -- struct drm_dp_mst_topology_state *mst_state, -- struct drm_dp_mst_atomic_payload *payload); -+void drm_dp_mst_deallocate_vcpi(struct drm_dp_mst_topology_mgr *mgr, -+ struct drm_dp_mst_port *port); -+ -+ -+int drm_dp_find_vcpi_slots(struct drm_dp_mst_topology_mgr *mgr, -+ int pbn); -+ -+ -+int drm_dp_update_payload_part1(struct drm_dp_mst_topology_mgr *mgr, int start_slot); -+ -+ -+int drm_dp_update_payload_part2(struct drm_dp_mst_topology_mgr *mgr); - - int drm_dp_check_act_status(struct drm_dp_mst_topology_mgr *mgr); - -@@ -863,22 +892,17 @@ int drm_dp_mst_connector_late_register(struct drm_connector *connector, - void drm_dp_mst_connector_early_unregister(struct drm_connector *connector, - struct drm_dp_mst_port *port); - --struct drm_dp_mst_topology_state * --drm_atomic_get_mst_topology_state(struct drm_atomic_state *state, -- struct drm_dp_mst_topology_mgr *mgr); --struct drm_dp_mst_topology_state * --drm_atomic_get_new_mst_topology_state(struct drm_atomic_state *state, -- struct drm_dp_mst_topology_mgr *mgr); --struct drm_dp_mst_atomic_payload * --drm_atomic_get_mst_payload_state(struct drm_dp_mst_topology_state *state, -- struct drm_dp_mst_port *port); -+struct drm_dp_mst_topology_state *drm_atomic_get_mst_topology_state(struct drm_atomic_state *state, -+ struct drm_dp_mst_topology_mgr *mgr); - int __must_check - drm_dp_atomic_find_time_slots(struct drm_atomic_state *state, - struct drm_dp_mst_topology_mgr *mgr, -- struct drm_dp_mst_port *port, int pbn); -+ struct drm_dp_mst_port *port, int pbn, -+ int pbn_div); - int drm_dp_mst_atomic_enable_dsc(struct drm_atomic_state *state, - struct drm_dp_mst_port *port, -- int pbn, bool enable); -+ int pbn, int pbn_div, -+ bool enable); - int __must_check - drm_dp_mst_add_affected_dsc_crtcs(struct drm_atomic_state *state, - struct drm_dp_mst_topology_mgr *mgr); -@@ -902,12 +926,6 @@ void drm_dp_mst_put_port_malloc(struct drm_dp_mst_port *port); - - struct drm_dp_aux *drm_dp_mst_dsc_aux_for_port(struct drm_dp_mst_port *port); - --static inline struct drm_dp_mst_topology_state * --to_drm_dp_mst_topology_state(struct drm_private_state *state) --{ -- return container_of(state, struct drm_dp_mst_topology_state, base); --} -- - extern const struct drm_private_state_funcs drm_dp_mst_topology_state_funcs; - - /** --- -2.39.0 - diff --git a/libre/linux-libre/0003-fix-mvsdio-eMMC-timing.patch b/libre/linux-libre/0003-fix-mvsdio-eMMC-timing.patch index a494c2d..a447eaa 100644 --- a/libre/linux-libre/0003-fix-mvsdio-eMMC-timing.patch +++ b/libre/linux-libre/0003-fix-mvsdio-eMMC-timing.patch @@ -1,4 +1,4 @@ -From e8da1680d0273aaca806c23a10b4f3467a6b4f96 Mon Sep 17 00:00:00 2001 +From 5b76d7e549a6f65f881ef832cb39ae6a4ad34119 Mon Sep 17 00:00:00 2001 From: Kevin Mihelich Date: Fri, 5 Sep 2014 15:43:56 -0600 Subject: [PATCH 3/7] fix mvsdio eMMC timing @@ -34,5 +34,5 @@ index 629efbe639c4..c507c064736c 100644 host->clock = ios->clock; host->ns_per_clk = 1000000000 / (host->base_clock / (m+1)); -- -2.35.1 +2.37.0 diff --git a/libre/linux-libre/0004-net-smsc95xx-Allow-mac-address-to-be-set-as-a-parame.patch b/libre/linux-libre/0004-net-smsc95xx-Allow-mac-address-to-be-set-as-a-parame.patch index fd99811..b487155 100644 --- a/libre/linux-libre/0004-net-smsc95xx-Allow-mac-address-to-be-set-as-a-parame.patch +++ b/libre/linux-libre/0004-net-smsc95xx-Allow-mac-address-to-be-set-as-a-parame.patch @@ -1,4 +1,4 @@ -From f0eaedee0904275b2ed55b383dba794d53fac17d Mon Sep 17 00:00:00 2001 +From 824cc151d839ce92269200119f9148013755adb8 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Tue, 18 Feb 2014 01:43:50 -0300 Subject: [PATCH 4/7] net/smsc95xx: Allow mac address to be set as a parameter @@ -8,18 +8,18 @@ Subject: [PATCH 4/7] net/smsc95xx: Allow mac address to be set as a parameter 1 file changed, 56 insertions(+) diff --git a/drivers/net/usb/smsc95xx.c b/drivers/net/usb/smsc95xx.c -index bc1e3dd67c04..51ae8e6fec4e 100644 +index bfb58c91db04..29b7c4cb90f1 100644 --- a/drivers/net/usb/smsc95xx.c +++ b/drivers/net/usb/smsc95xx.c -@@ -50,6 +50,7 @@ +@@ -54,6 +54,7 @@ #define SUSPEND_SUSPEND3 (0x08) #define SUSPEND_ALLMODES (SUSPEND_SUSPEND0 | SUSPEND_SUSPEND1 | \ SUSPEND_SUSPEND2 | SUSPEND_SUSPEND3) +#define MAC_ADDR_LEN (6) - struct smsc95xx_priv { - u32 mac_cr; -@@ -67,6 +68,10 @@ static bool turbo_mode = true; + #define SMSC95XX_NR_IRQS (1) /* raise to 12 for GPIOs */ + #define PHY_HWIRQ (SMSC95XX_NR_IRQS - 1) +@@ -78,6 +79,10 @@ static bool turbo_mode = true; module_param(turbo_mode, bool, 0644); MODULE_PARM_DESC(turbo_mode, "Enable multiple frames per Rx transaction"); @@ -27,10 +27,10 @@ index bc1e3dd67c04..51ae8e6fec4e 100644 +module_param(macaddr, charp, 0); +MODULE_PARM_DESC(macaddr, "MAC address"); + - static int __must_check __smsc95xx_read_reg(struct usbnet *dev, u32 index, - u32 *data, int in_pm) + static int __must_check smsc95xx_read_reg(struct usbnet *dev, u32 index, + u32 *data) { -@@ -753,8 +758,59 @@ static int smsc95xx_ioctl(struct net_device *netdev, struct ifreq *rq, int cmd) +@@ -761,8 +766,59 @@ static int smsc95xx_ioctl(struct net_device *netdev, struct ifreq *rq, int cmd) return phy_mii_ioctl(netdev->phydev, rq, cmd); } @@ -91,5 +91,5 @@ index bc1e3dd67c04..51ae8e6fec4e 100644 /* maybe the boot loader passed the MAC address in devicetree */ -- -2.35.1 +2.37.0 diff --git a/libre/linux-libre/0005-set-default-cubietruck-led-triggers.patch b/libre/linux-libre/0005-set-default-cubietruck-led-triggers.patch index f090515..76796e2 100644 --- a/libre/linux-libre/0005-set-default-cubietruck-led-triggers.patch +++ b/libre/linux-libre/0005-set-default-cubietruck-led-triggers.patch @@ -1,4 +1,4 @@ -From 363e156344b831978306bf95dac7859dafe61d14 Mon Sep 17 00:00:00 2001 +From 3a5136fec1bdb0f7a5ca614dab47c55c3177d26a Mon Sep 17 00:00:00 2001 From: Kevin Mihelich Date: Sat, 14 Feb 2015 12:32:27 +0100 Subject: [PATCH 5/7] set default cubietruck led triggers @@ -29,5 +29,5 @@ index 52160e368304..21c8ef94c756 100644 }; -- -2.35.1 +2.37.0 diff --git a/libre/linux-libre/0006-exynos4412-odroid-set-higher-minimum-buck2-regulator.patch b/libre/linux-libre/0006-exynos4412-odroid-set-higher-minimum-buck2-regulator.patch index 3190152..4d19cce 100644 --- a/libre/linux-libre/0006-exynos4412-odroid-set-higher-minimum-buck2-regulator.patch +++ b/libre/linux-libre/0006-exynos4412-odroid-set-higher-minimum-buck2-regulator.patch @@ -1,4 +1,4 @@ -From b4dcf8b9c59c451b667f7cc3f20e7fe837951517 Mon Sep 17 00:00:00 2001 +From c87c82c5a03baf1202d22567e4f6d113cfe17bad Mon Sep 17 00:00:00 2001 From: Kevin Mihelich Date: Thu, 11 Aug 2016 00:42:37 -0600 Subject: [PATCH 6/7] exynos4412-odroid: set higher minimum buck2 regulator @@ -13,7 +13,7 @@ Signed-off-by: Kevin Mihelich 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/arch/arm/boot/dts/exynos4412-odroid-common.dtsi b/arch/arm/boot/dts/exynos4412-odroid-common.dtsi -index 5b1d4591b35c..8a8d2c6add10 100644 +index e7669b9e9edb..a1b4e182717f 100644 --- a/arch/arm/boot/dts/exynos4412-odroid-common.dtsi +++ b/arch/arm/boot/dts/exynos4412-odroid-common.dtsi @@ -436,7 +436,7 @@ buck1_reg: BUCK1 { @@ -26,5 +26,5 @@ index 5b1d4591b35c..8a8d2c6add10 100644 regulator-always-on; regulator-boot-on; -- -2.35.1 +2.37.0 diff --git a/libre/linux-libre/0007-USB-Armory-MkII-support.patch b/libre/linux-libre/0007-USB-Armory-MkII-support.patch index 711d50d..3d52336 100644 --- a/libre/linux-libre/0007-USB-Armory-MkII-support.patch +++ b/libre/linux-libre/0007-USB-Armory-MkII-support.patch @@ -1,4 +1,4 @@ -From 915405b2da517ee56a07e57230273ab2ff4e522d Mon Sep 17 00:00:00 2001 +From 23e406e404f935be33c917ca7772466dd52582c3 Mon Sep 17 00:00:00 2001 From: Kevin Mihelich Date: Sun, 11 Aug 2019 12:34:17 -0600 Subject: [PATCH 7/7] USB Armory MkII support @@ -12,21 +12,21 @@ Subject: [PATCH 7/7] USB Armory MkII support create mode 100644 arch/arm/boot/dts/imx6ull-usbarmory.dts diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile -index 235ad559acb2..ca79830160bd 100644 +index 05d8aef6e5d2..c6c76fa5047f 100644 --- a/arch/arm/boot/dts/Makefile +++ b/arch/arm/boot/dts/Makefile -@@ -694,6 +694,7 @@ dtb-$(CONFIG_SOC_IMX6UL) += \ +@@ -722,6 +722,7 @@ dtb-$(CONFIG_SOC_IMX6UL) += \ imx6ul-tx6ul-0010.dtb \ imx6ul-tx6ul-0011.dtb \ imx6ul-tx6ul-mainboard.dtb \ + imx6ul-usbarmory.dtb \ imx6ull-14x14-evk.dtb \ - imx6ull-colibri-emmc-eval-v3.dtb \ - imx6ull-colibri-eval-v3.dtb \ -@@ -704,6 +705,7 @@ dtb-$(CONFIG_SOC_IMX6UL) += \ - imx6ull-phytec-segin-ff-rdk-nand.dtb \ - imx6ull-phytec-segin-ff-rdk-emmc.dtb \ - imx6ull-phytec-segin-lc-rdk-nand.dtb \ + imx6ull-colibri-aster.dtb \ + imx6ull-colibri-emmc-aster.dtb \ +@@ -745,6 +746,7 @@ dtb-$(CONFIG_SOC_IMX6UL) += \ + imx6ull-phytec-tauri-nand.dtb \ + imx6ull-tqma6ull2-mba6ulx.dtb \ + imx6ull-tqma6ull2l-mba6ulx.dtb \ + imx6ull-usbarmory.dtb \ imx6ulz-14x14-evk.dtb \ imx6ulz-bsh-smm-m2.dtb @@ -557,5 +557,5 @@ index 000000000000..f74d0296d5f6 + status = "okay"; +}; -- -2.35.1 +2.37.0 diff --git a/libre/linux-libre/PKGBUILD b/libre/linux-libre/PKGBUILD index 082a3a6..a06752f 100644 --- a/libre/linux-libre/PKGBUILD +++ b/libre/linux-libre/PKGBUILD @@ -14,7 +14,7 @@ _replacesoldkernels=() # '%' gets replaced with kernel suffix _replacesoldmodules=() # '%' gets replaced with kernel suffix pkgbase=linux-libre -pkgver=6.1.5 +pkgver=6.3.3 pkgrel=1 pkgdesc='Linux-libre' rcnver=5.18.12 @@ -23,12 +23,26 @@ url='https://linux-libre.fsfla.org/' arch=(i686 x86_64 armv7h) license=(GPL2) makedepends=( - bc libelf pahole cpio perl tar xz - xmlto python-sphinx python-sphinx_rtd_theme graphviz imagemagick texlive-latexextra + bc + cpio + gettext + git + libelf + pahole + perl + tar + xz + + # htmldocs + graphviz + imagemagick + python-sphinx + texlive-latexextra + xmlto ) makedepends_armv7h=(uboot-tools vboot-utils dtc) # required by linux-libre-chromebook options=('!strip') -_srcname=linux-6.1 +_srcname=linux-6.3 source=( "https://linux-libre.fsfla.org/pub/linux-libre/releases/${_srcname##*-}-gnu/linux-libre-${_srcname##*-}-gnu.tar.xz"{,.sign} "https://linux-libre.fsfla.org/pub/linux-libre/releases/$pkgver-gnu/patch-${_srcname##*-}-gnu-$pkgver-gnu.xz"{,.sign} @@ -46,8 +60,7 @@ source=( 0002-fix-Atmel-maXTouch-touchscreen-support.patch # Arch Linux patches 0001-ZEN-Add-sysctl-and-CONFIG-to-disallow-unprivileged-C.patch - 0002-docs-Fix-the-docs-build-with-Sphinx-6.0.patch - 0003-Revert-drm-display-dp_mst-Move-all-payload-info-into.patch + 0002-drm-amd-display-Have-Payload-Properly-Created-After-.patch ) source_i686=( # avoid using zstd compression in ultra mode (exhausts virtual memory) @@ -55,7 +68,7 @@ source_i686=( ) source_armv7h=( # RCN patch (CM3 firmware deblobbed and bloatware removed) - "https://repo.parabola.nu/other/rcn-libre/patches/$rcnver/rcn-libre-$rcnver-$rcnrel.patch"{,.sig} + #"https://repo.parabola.nu/other/rcn-libre/patches/$rcnver/rcn-libre-$rcnver-$rcnrel.patch"{,.sig} # Arch Linux ARM patches 0001-ARM-atags-add-support-for-Marvell-s-u-boot.patch 0002-ARM-atags-fdt-retrieve-MAC-addresses-from-Marvell-bo.patch @@ -64,46 +77,44 @@ source_armv7h=( 0005-set-default-cubietruck-led-triggers.patch 0006-exynos4412-odroid-set-higher-minimum-buck2-regulator.patch 0007-USB-Armory-MkII-support.patch - # ChromiumOS patches + # ChromiumOS patch + # https://labs.parabola.nu/issues/2372 0001-CHROMIUM-block-partitions-efi-Add-support-for-IGNORE.patch ) validpgpkeys=( '474402C8C582DAFBE389C427BCB7CF877E7D47A7' # Alexandre Oliva '6DB9C4B4F0D8C0DC432CF6E4227CA7C556B2BA78' # David P. ) -sha512sums=('1791227e4eef3be119fcbdbf3c8d441ae77badb6565c4b918130328fa24711b09128d4aabb26cd2adf453726bcb4b30b8c5199794114050835e3875bea169224' - 'SKIP' - '309ce36c543c30fe2211368ea566d143b6b6fc766e509c3c0e9884618e9e71428f22d532dd8448a73c54d741795194afe4a04e6b2a5fccfd7de1f7fd5ad89f9d' - 'SKIP' - '13cb5bc42542e7b8bb104d5f68253f6609e463b6799800418af33eb0272cc269aaa36163c3e6f0aacbdaaa1d05e2827a4a7c4a08a029238439ed08b89c564bb3' - 'SKIP' - '7a3716bfe3b9f546da309c7492f3e08f8f506813afeb1c737a474c83313d5c313cf4582b65215c2cfce3b74d9d1021c96e8badafe8f6e5b01fe28d2b5c61ae78' - 'SKIP' - '267295aa0cea65684968420c68b32f1a66a22d018b9d2b2c1ef14267bcf4cb68aaf7099d073cbfefe6c25c8608bdcbbd45f7ac8893fdcecbf1e621abdfe9ecc1' - 'SKIP' - '21c65d7466740b30f060863732e2e80bcb451b15a8d4005015eb0cab87522b5c267c71815ac5f7cdf0394f39157b16b6d223a13cd30df2b6ae7092efd4ba26bf' - '092654fbb1b9f6c6d4eb16ada303b0d34874c65f9ca845b1c1a7c741ee972573a5ec52848bd08969a82c9f74105af674707c8bb7c44b00d84b6413f5342c695a' - '47d16ffc94510d4a8773146a46cfb35aca8cfdae38d17283334cd62d92de36250fbec90e9892357033398ecc7d970127b1a41b703a8372972422ca4af7c90c70' - '53103bf55b957b657039510527df0df01279dec59cda115a4d6454e4135025d4546167fa30bdc99107f232561c1e096d8328609ab5a876cf7017176f92ad3e0b' - 'f10af02f0cb2d31259d9633e1ba845f555f525789f750fc2ddc51bd18c5ff64fcdd242dae801623887f5ce5cdb5528bce890459f0fab9fd31a28868bb7f6bba5' - 'bb6718984a7357c9b00c37e4788480e5b8b75018c172ecc1441bc3fc5d2d42444eb5d8c7f9d2e3a7d6fed6d03acb565e3c0559486e494c40a7fe6bd0570c9ede' - '143dea30c6da00e504c99984a98a0eb2411f558fcdd9dfa7f607d6c14e9e7dffff9cb00121d9317044b07e3e210808286598c785ee854084b993ec9cb14d8232' - '02af4dd2a007e41db0c63822c8ab3b80b5d25646af1906dc85d0ad9bb8bbf5236f8e381d7f91cf99ed4b0978c50aee37cb9567cdeef65b7ec3d91b882852b1af' - 'b8fe56e14006ab866970ddbd501c054ae37186ddc065bb869cf7d18db8c0d455118d5bda3255fb66a0dde38b544655cfe9040ffe46e41d19830b47959b2fb168' - '5640d6f9226ef6c172a4d0b74fd32f2e3ad5b3fca8c75d1f07fe83c083aadc7d59273823b77d9d75a5539ec16bb7d4aba32e58bda991144d2773a7fad6848841' - 'ab6bf4664911dbe526dc611d53f9d2ba1a84d96ddb38befaa1b3bfad60e4371c2229cb620612894b28af29562494eedf8e3f63a792d2a63e33a3b8cd0076b000' - 'f74f8c6a6a6fe4159fc03f0ae8f12f661ee39e918d8a3a1abbd6d35538bab6807b5413136f032ac617e2882a71db9969fb14fe23c31a20d236350825ddfb5876') -sha512sums_i686=('bca15cc96f64c38adcd13a46752866b5b30555ac21e19b3f7afcd20fcb7ec585c9d990fe8f842f44d5f69d477d72867fe6a9102729f26f93f5a80b372e41ce85') -sha512sums_armv7h=('94c6243d23bc995dec3edcb1dd5cc7d5e7d30fec70fc32b9be5f3e7d934da7035e9152fea3cce58a53b0f35f29060bdef2a3a2dac3c46f520adf1088897362f9' - 'SKIP' - '8da996a42249672893fa532ccbd096347580a0dc1698c45e9c865646e2765789553b1bb42793e721de30aea70340fdc116d2e4a50580fef999ca5fc627aaf4c3' - '0e6ddc24011d77a2e422b642c4507317fc2d26b20f5649818a2f11acac165ccab2cf2e64ab50d44ce7affcfe12c2ef5158790e499058831e7995400b2087df78' - '5d2f228151148358b07744a9c09cf6e2420c4284735d4ce7dc925a1deb3970298cc95dd766ee13e094e2853847b016c3ebc2d61bb423e370b4bc33938367ebda' - 'a206c3dc678839831d72eefee997cbe1bb877af7f6f90dfe5cab0bd7d9686a3b13a2aba74c8fbe5533872e12306ac9ea1b5eede18ef3cf10b8d01361afd67e9c' - 'a1072dd808c63592178cc01ea3c36de946f277fb451b13c34f51a5ac134cde4a8a4d57487132af1c6d7b5820842cdda9dc4edb3da85d33bd02bf87a032c3263a' - '85b2e16a930b8066990c42f973d386dc3c6d62fdf3d1289bbb51df3df296c26f30051162fba49a42d38f71f05de926aa8c065097f14bd8e9f8e28a52949ead00' - '2e99582d8b670b6c6b27add14b60e957cbcf9cd6aae40491bd9dea6ac455c0ade0bbee21e3bdfb5e06ce83ad27c5a788404b05bf7ac93831ca18d2e60a67017c' - '5b77c587cf2ffb60acf1d9eb43330983548c7e81a53e0ffd2b04962a99441a0000d631ff77c245c7062afc2c8368d996a2456496d42dcb658f330e5083e5e029') +b2sums=('03c5869a2b432207208d002a3a8b55f42751dc2b50642fcd9ca982cc8da05c7965d359202e49e1418b0ff74307fdeb91d9f41f3293815bc4e508a43104ec1e92' + 'SKIP' + 'cff40934db0b5da1624718bab083fc7e99418ee1f134fbb5d52f47927e32198fdc5117d1e8464dc86f504ce8dc1ad924dff6eb87f7cf844ef7b35861aa2a40c8' + 'SKIP' + '73fee2ae5cb1ffd3e6584e56da86a8b1ff6c713aae54d77c0dab113890fc673dc5f300eb9ed93fb367b045ece8fa80304ff277fe61665eccf7b7ce24f0c045eb' + 'SKIP' + 'd02a1153a4285b32c774dca4560fe37907ccf30b8e487a681b717ed95ae9bed5988875c0a118938e5885ae9d2857e53a6f216b732b6fa3368e3c5fe08c86382c' + 'SKIP' + '580911af9431c066bbc072fd22d5e2ef65f12d8358cec5ff5a4f1b7deebb86cef6b5c1ad631f42350af72c51d44d2093c71f761234fb224a8b9dbb3b64b8201d' + 'SKIP' + '84f65302f45c83e28cb5204a9b6fcbf652dab3d535702b1fd84ff8af973de7e8edbe92ce58052c10c8bf4414856205785a88d76ac76eb524e36b7644d3f1f226' + 'aeb684b13d3ea869996f7af04211f2c35398441532ff8238885cb5ebd1c4ff22c6afaaf8d18794626af77d85345e7d8c89658504faed70afe634acc44be926e0' + '5760e0879cf71dfc1c9bdd557829f28437909e701fa566cc3575a52785c81ac70d634ec929833ac01aea111bbae6ba402add738dc86623b32bcc3b523d43f60f' + 'af69176b1117b94e56b043e97b0bd5873a2974a6a2fd52b102d0ffdca440ff68cfb241d6c4d4ef453cc8c220c236b739bad232e53fd500ce7672fa6e5ba87383' + 'f2d309c1d0a347539a8095223085691a9be228934b2258feb4872784f6cf6c2cc741426e4e755d63128ee57c284eddb13e0c719d4b5f8e101722e4cca4eb3ad5' + 'eeed12b2ab60c3d3aad598a1d44b4f23560d818e8fe1ef143f857c8e176652df53501b192ade7d4d915d425fff818b2a232d46bae0d3a0f46b8959e614e0ede2' + 'aaa4e28a31967cc3a7fe25a86ba35fdfa210cd8b1a9cc96298349cbf01d60cdf146ee519d6803d05b175873f1b3367e47194a178db7ed97c802e59b38f8c303c' + 'c2214154c36900e311531bfe68184f31639f5c50fed23bc3803a7f18439b7ff258552a39f02fed0ea92f10744e17a6c55cef0ef1a98187f978fe480fb3dddc14' + '0c7ceba7cd90087db3296610a07886f337910bad265a32c052d3a703e6eb8e53f355ab9948d72d366408d968d8ee7435084dd89bef5ed0b69355fd884c2cd468' + '25b35ceabee03a287f21e7de5907fa760ad63e2e5125ee2c42fb8e4427c5fca1bd62be0bef32a1d46b649b513bb3f892337cc1413768440fe9e9613c51d0f8e3' + '9c7f23cc063ab6c8878e2785bf415320df1e41687db3e35e99286416d59f4c923b1a8bcf6cd0e51d9e689b063c49451bb765d18b47b9139990c8f5b01710783b') +b2sums_i686=('165ab9dd8cedeaae5327accc1581c19cf0be55f923b03feb889cad3351b74c7c4cd3d3c206938e5152bfe1d947513dea8f630f8f5544099ec13d16d254725c40') +b2sums_armv7h=('73ecc5862c6b4aef7b163c1992004273fbf791b82c75a8602e3def311f682f2b866124c0bfde90d03c7c76bb8b5853bdb9daad6ee2ab0908f4145cda476b8286' + '15f7b70b5d153e9336006aba873a78f94d91b8df5e1939041f12e678bb9cfbdda2e362001068a07c044ce606cf0d4d2e625002df9c569c914f7ac248d4d3e8ad' + '6219cec826bc543000ab87cf35dcc713f0635519cf79e75888b213a5e2d1f728e59e70df7fd842dda6e40494bf9cafa9f87368cb75b338c5a157a0adcf583512' + '66d6cff292962c4c8bbea62b2240c4c53c0c514f9e99864be9244cb846c505e1bedd800ca1347b80883543035d20573b06796e5bacbace6e829880695ffca781' + 'e1d0949abbde146d68cddab53944c0391210fb4ac632a78788ec729dea834cb82698c8beef203608eee5323a07ecd566b9813552498e9ac659942060713c4549' + '56fdf81b439b6b94e63acfb18d61f90298dc4e29fc65efd4dcf41ae950e87f287f48b42b2be15f4ea0cf7a6d39df3c0ef882cf37b2474e91cc2985fb6cdd1089' + 'd00505c1ac57fd4b53bdb0d9a2172168a23d6082111695c679aeae58e8e749f5b2ef27ce1bc47b0d5fdd81fac792c57d9b45f125a3315b64297b146f727ac467' + '741ad7ffc9e8200657315fc4111066b2477cde35ecdc5e73976457f17106f80d148d86bf97b92c523fef1cc5a26ddb867d16330f592f2aa4d886be596bedc8df') _replacesarchkernel=("${_replacesarchkernel[@]/\%/${pkgbase#linux-libre}}") _replacesoldkernels=("${_replacesoldkernels[@]/\%/${pkgbase#linux-libre}}") @@ -118,6 +129,11 @@ export KBUILD_BUILD_HOST=parabola export KBUILD_BUILD_USER=$pkgbase export KBUILD_BUILD_TIMESTAMP="$(date -Ru${SOURCE_DATE_EPOCH:+d @$SOURCE_DATE_EPOCH})" +_make() { + test -s version + make KERNELRELEASE="$( localversion.10-pkgrel echo "${pkgbase#linux-libre}" > localversion.20-pkgname + make defconfig + make -s kernelrelease > version + make mrproper if [ "$CARCH" = "armv7h" ]; then local src_armv7h @@ -168,43 +186,54 @@ prepare() { echo "Setting config..." cp ../config.$CARCH .config - make olddefconfig + _make olddefconfig diff -u ../config.$CARCH .config || : - make -s kernelrelease > version echo "Prepared $pkgbase version $( Date: May 25 2023 04:42:17 +0000 Subject: [PATCH 25/33] [asciidoc]: rebuild for latest python --- diff --git a/libre/asciidoc/PKGBUILD b/libre/asciidoc/PKGBUILD index 81a5efd..2c36323 100644 --- a/libre/asciidoc/PKGBUILD +++ b/libre/asciidoc/PKGBUILD @@ -1,5 +1,6 @@ -# Maintainer (arch): Eli Schwartz # Maintainer (arch): Levente Polyak +# Maintainer (arch): Caleb Maclennan +# Contributor: Eli Schwartz # Contributor: Florian Pritz # Contributor: Chris Brannon # Contributor: Geoffroy Carrier @@ -32,7 +33,7 @@ pkgname=asciidoc pkgver=10.2.0 -pkgrel=1 +pkgrel=3 pkgrel+=.parabola1 pkgdesc='Text document format for short documents, articles, books and UNIX man pages' arch=('any') @@ -40,12 +41,7 @@ url='https://asciidoc.org/' license=('GPL') depends=('python' 'libxslt' 'docbook-xsl') checkdepends=('dblatex' 'graphviz' 'lilypond' 'python-pytest'{,-mock} 'source-highlight') -makedepends=('python-pip') -makedepends+=('python-setuptools') -makedepends=( ${makedepends[*]/python-pip/} ) # non-free - FSDG-unfit repositories - # FIXME: Parabola (will have|has) no 'pip' package ~since python 2 deprecated - # | python3 -m pip install --root /build/asciidoc/pkg/asciidoc . - # | /usr/bin/python3: No module named pip +makedepends=(python-{build,installer,wheel} python-setuptools) optdepends=('graphviz: graphviz-filter' 'lilypond: music-filter' 'imagemagick: music-filter' @@ -59,6 +55,10 @@ b2sums=('ed5db8fd1432b255e9c03e17805c26c76a42392c2ebeaf839b8c0aaaf38cd1a36d79b64 prepare() { cd ${pkgname}-${pkgver} + sed -i \ + -e '/^build: /a \\tpython3 -m build -wn' \ + -e '/pip install/{s#pip install --root#installer -d#;s#\.$#dist/*.whl#}' \ + Makefile.in # https://github.com/asciidoc-py/asciidoc-py/issues/234 autoconf } @@ -70,7 +70,6 @@ build() { --docdir /usr/share/doc/$pkgname \ --prefix /usr make build - make manpages } check() { From 29c6be1ddba414fabdf93afb7edaaa035a52c764 Mon Sep 17 00:00:00 2001 From: bill-auger Date: May 25 2023 04:42:20 +0000 Subject: [PATCH 26/33] [asciidoc]: remove package the blacklist reason (optdepends on blacklisted 'fop') no longer applies a liberated 'fop' was added to [libre] some time later probably 'asciidoc' could have been removed from [libre] then; though the liberation of 'fop' and the related 'java-batik' were not well documented --- diff --git a/libre/asciidoc/PKGBUILD b/libre/asciidoc/PKGBUILD deleted file mode 100644 index 2c36323..0000000 --- a/libre/asciidoc/PKGBUILD +++ /dev/null @@ -1,88 +0,0 @@ -# Maintainer (arch): Levente Polyak -# Maintainer (arch): Caleb Maclennan -# Contributor: Eli Schwartz -# Contributor: Florian Pritz -# Contributor: Chris Brannon -# Contributor: Geoffroy Carrier -# Contributor: Dan McGee -# Contributor: Jaroslaw Rosiek -# Contributor: Darwin Bautista -# Contributor: Daniel J Griffiths -# Contributor: André Silva -# Contributor: Andreas Grapentin -# Contributor: Denis 'GNUtoo' Carikli - - -# parabola changes and rationale: -# - Removed build dependency on blacklisted 'python-pip' (FIXME: fails to build) -# - Removed optional dependency on blacklisted 'fop' -# - Removed pip build support (FIXME: fails to build) - -# NOTE: This PKGBUILD is kept in-sync, as closely as possible, -# with arch{,arm,32} and parabola, for the sake of documentation and cleaner diffs. -# That also helps to identify which changes were made by Parabola vs upstream. -# Therefore, this PKGBUILD may declare blacklisted dependencies, non-free sources, -# or include code for anti-features; but those will be filtered-out subsequently. -# Any code which implements an anti-feature should be commented-out; -# and include an 'anti-feature' comment, for clarity. -# Any blacklisted dependencies and non-free sources should be filtered, -# and include a 'non-free' comment, for clarity. -# Without those over-rides, the resulting program may not be FSDG-fit. -# Do not circumvent those over-rides, if compiling for the Parabola repos. - - -pkgname=asciidoc -pkgver=10.2.0 -pkgrel=3 -pkgrel+=.parabola1 -pkgdesc='Text document format for short documents, articles, books and UNIX man pages' -arch=('any') -url='https://asciidoc.org/' -license=('GPL') -depends=('python' 'libxslt' 'docbook-xsl') -checkdepends=('dblatex' 'graphviz' 'lilypond' 'python-pytest'{,-mock} 'source-highlight') -makedepends=(python-{build,installer,wheel} python-setuptools) -optdepends=('graphviz: graphviz-filter' - 'lilypond: music-filter' - 'imagemagick: music-filter' - 'source-highlight: source-highlight-filter' - 'dblatex: pdf generation' - 'w3m: text generation' - 'lynx: alternative text generation') -source=("https://github.com/asciidoc-py/asciidoc-py/releases/download/$pkgver/$pkgname-$pkgver.tar.gz") -sha256sums=('237b2ba5c35c0ae7ccd4cd44ebf1d87c20b2695dae01798954416d492ef7fa0e') -b2sums=('ed5db8fd1432b255e9c03e17805c26c76a42392c2ebeaf839b8c0aaaf38cd1a36d79b645ca4474503181200924df91218eb0997dd82335a30d6a0a1b35eb5730') - -prepare() { - cd ${pkgname}-${pkgver} - sed -i \ - -e '/^build: /a \\tpython3 -m build -wn' \ - -e '/pip install/{s#pip install --root#installer -d#;s#\.$#dist/*.whl#}' \ - Makefile.in - # https://github.com/asciidoc-py/asciidoc-py/issues/234 - autoconf -} - -build() { - cd ${pkgname}-${pkgver} - # https://github.com/asciidoc-py/asciidoc-py/issues/234#issuecomment-1045970138 - ./configure \ - --docdir /usr/share/doc/$pkgname \ - --prefix /usr - make build -} - -check() { - cd ${pkgname}-${pkgver} - make test -} - -package() { - cd ${pkgname}-${pkgver} - make DESTDIR="${pkgdir}" install - make DESTDIR="${pkgdir}" docs - install -Dm0644 -t "$pkgdir/usr/share/man/man1/" doc/*.1 - # ascidocapi is deprecated, but still included in 10.x on a "provisional" basis - local _platlib="$(python -c 'import sysconfig; print(sysconfig.get_paths()["platlib"])')" - install -Dm0644 -t "${pkgdir}/${_platlib}/${pkgname}/" asciidoc/api.py -} From 21d8496b132d793b67680a62408369c50077426d Mon Sep 17 00:00:00 2001 From: bill-auger Date: May 25 2023 04:42:22 +0000 Subject: [PATCH 27/33] [your-freedom]: manual rebuild --- diff --git a/libre/your-freedom/PKGBUILD b/libre/your-freedom/PKGBUILD index 8f7a568..9ade258 100644 --- a/libre/your-freedom/PKGBUILD +++ b/libre/your-freedom/PKGBUILD @@ -12,8 +12,8 @@ pkgname=your-freedom -pkgver=20230329 -_gitver=e1445605cab99b9d31e4cee83a53726f158cabb4 +pkgver=20230520 +_gitver=18229b6990e3549939a8ebd01e9dd5a80a978066 pkgrel=1 pkgdesc="This meta-package conflicts with every known non-free Arch package, to ensure that your system is libre" arch=(any) @@ -24,7 +24,7 @@ makedepends=(librelib) install=${pkgname}.install source=(${pkgname}-blacklist-${_gitver}.txt::https://git.parabola.nu/blacklist.git/plain/blacklist.txt?id=${_gitver}) -sha256sums=('482ab9f030c22aeca9db9245a775cde4202a6cb6d70f3fc9581b0c178dfd1c9f') +sha256sums=('e4ef9ec15a05c14a0d917419d808b6abc6a0e70ee29873143805d2c676a9fd29') package() From 0cab0cd359d39027a53e89dd066085a7666873d1 Mon Sep 17 00:00:00 2001 From: bill-auger Date: May 25 2023 04:42:24 +0000 Subject: [PATCH 28/33] [gst-plugins-bad]: upgarde to v1.22.2 --- diff --git a/libre/gst-plugins-bad/PKGBUILD b/libre/gst-plugins-bad/PKGBUILD index f3b9125..d4f4891 100644 --- a/libre/gst-plugins-bad/PKGBUILD +++ b/libre/gst-plugins-bad/PKGBUILD @@ -24,6 +24,9 @@ # That also helps to identify which changes were made by Parabola vs upstream. # However, only the small sub-set of split-packages which require FSDG treatments # are compiled; and some noisy/irrelevant segments are deleted entirely. +# The result is a recipe which is extremely messy, tedious and brittle to merge, +# and tedious to maintain; but the alternative is worse (blacklisting and rebuilding +# all split-packages and many dependents, pinning all dependents to this version). # Therefore, this PKGBUILD may declare blacklisted dependencies, non-free sources, # or include code for anti-features; but those will be filtered-out subsequently. # Any code which implements an anti-feature should be commented-out; @@ -42,8 +45,9 @@ pkgname=( gst-plugin-wpe ) pkgname=( ${pkgname[*]/gst-plugin-opencv/} ) # FIXME: 'opencv' package FTBS - undefined reference to `cblas_{c,d,s,z}gemm' -pkgver=1.22.1 -pkgrel=2 +pkgver=1.22.2 +_prev_ver=1.22.1 # current version in parabola repos +pkgrel=1 _pkgver_i686=1.20.5 # NOTE: v1.20.5 fails to compile for i686 - after this moves ahead, _pkgrel_i686=3.0 # try to remove the LOCs with comment: # n/a in v1.20.5 [[ "${CARCH}" == i686 ]] && eval "pkgver=\$_pkgver_${CARCH}" # our different arches do not @@ -70,6 +74,9 @@ makedepends=( # gst-plugins-base wayland-protocols + # gst-plugins-good + # + # gst-plugins-bad opencv vulkan-icd-loader vulkan-headers vulkan-validation-layers shaderc libltc bluez-libs libavtp libbs2b bzip2 chromaprint libdca faac faad2 @@ -78,15 +85,30 @@ makedepends=( soundtouch spandsp libsrtp svt-hevc zvbi libnice webrtc-audio-processing wildmidi zxing-cpp zbar libxml2 gsm libopenmpt wpewebkit libldac libfreeaptx qrencode json-glib libva libxkbcommon-x11 + + # gst-plugins-ugly + # + + # gst-libav + # + + # gstreamer-vaapi + # + + # gst-python ) makedepends=( ${makedepends[*]/faac/} ) # non-free [[ "${CARCH}" == x86_64 ]] || makedepends=( ${makedepends[*]/svt-hevc/} ) # x86_64 only makedepends=( ${makedepends[*]/opencv/} ) # FIXME: 'opencv' package FTBS - undefined reference to `cblas_{c,d,s,z}gemm' makedepends+=( libdc1394 ) # ERROR: Dependency "libdc1394-2" not found, tried pkgconfig makedepends+=( openexr ) # ERROR: Dependency "openEXR" not found, tried pkgconfig +makedepends+=( gstreamer=${_prev_ver} # 'wpewebkit' -> 'gst-plugins-base-libs' -> 'gstreamer' + gst-plugins-base-libs=${_prev_ver} ) # (install these manually from archive) checkdepends=(xorg-server-xvfb) source=( "git+https://gitlab.freedesktop.org/gstreamer/gstreamer.git?signed#tag=$pkgver" + # NOTE: docs package is not applicable to 'gst-plugins-bad' + # NOTE: arch patches are not applicable to 'gst-plugins-bad' ) b2sums=('SKIP' ) From 4f731337790ac67651c5c9c62949a64e2e2d91d0 Mon Sep 17 00:00:00 2001 From: bill-auger Date: May 25 2023 04:42:27 +0000 Subject: [PATCH 29/33] [qt5-styleplugins]: rebuild against latest 'qt5-base' --- diff --git a/libre/qt5-styleplugins/PKGBUILD b/libre/qt5-styleplugins/PKGBUILD index 4391e79..3aebf4e 100644 --- a/libre/qt5-styleplugins/PKGBUILD +++ b/libre/qt5-styleplugins/PKGBUILD @@ -14,7 +14,7 @@ pkgver=5.0.0.20170311 # $_commit is the unreleased VCS tip from 2017 _commit=335dbece103e2cbf6c7cf819ab6672c2956b17b3 pkgdesc='Additional style plugins for Qt5' -pkgrel=40 +pkgrel=42 arch=('x86_64' 'aarch64') arch+=('armv7h' 'i686') url="https://github.com/qt/qtstyleplugins" @@ -78,7 +78,7 @@ prepare() { } build() { - # NOTE: armv7h FTBS + # NOTE: armv7h FTBS without specifying project file # Project ERROR: No module claims plugin type 'platformthemes' # Project ERROR: No module claims plugin type 'styles' local parabola_opts=( $(case "${CARCH}" in armv7h) echo qtstyleplugins.pro ;; esac) ) From 31e299c537b5c6c7611098dd947e34e5e2af7f83 Mon Sep 17 00:00:00 2001 From: bill-auger Date: May 25 2023 04:42:29 +0000 Subject: [PATCH 30/33] [qt5-webkit][python-pyqt5][qutebrowser]: rebuild against latest 'qt5-base' and 'python' --- diff --git a/libre/pyqt5/PKGBUILD b/libre/pyqt5/PKGBUILD index a5c3f39..32c42db 100644 --- a/libre/pyqt5/PKGBUILD +++ b/libre/pyqt5/PKGBUILD @@ -19,7 +19,7 @@ pkgname=('python-pyqt5') pkgdesc="A set of Python bindings for the Qt5 toolkit" pkgver=5.15.9 pkgrel=2 -pkgrel+=.parabola3 +pkgrel+=.parabola4 arch=('x86_64') arch+=('armv7h' 'i686') url="https://riverbankcomputing.com/software/pyqt/intro" diff --git a/libre/qt5-webkit/PKGBUILD b/libre/qt5-webkit/PKGBUILD index d0cfb6e..138f3ab 100644 --- a/libre/qt5-webkit/PKGBUILD +++ b/libre/qt5-webkit/PKGBUILD @@ -17,7 +17,7 @@ pkgname=qt5-webkit _pkgver=5.212.0-alpha4 pkgver=${_pkgver/-/} pkgrel=18 -pkgrel+=.parabola4 +pkgrel+=.parabola5 arch=(x86_64) arch+=(armv7h i686) url='https://github.com/qtwebkit/qtwebkit' diff --git a/libre/qutebrowser/PKGBUILD b/libre/qutebrowser/PKGBUILD index 4683757..c2b19c3 100644 --- a/libre/qutebrowser/PKGBUILD +++ b/libre/qutebrowser/PKGBUILD @@ -21,7 +21,7 @@ pkgname=qutebrowser pkgver=2.5.4 pkgrel=2 -pkgrel+=.parabola2 +pkgrel+=.parabola3 pkgdesc="A keyboard-driven, vim-like browser based on PyQt5" pkgdesc+=" and QtWebKit" arch=("any") From 8ba3d3dad1ffe8ce26ceeb7cc2f8e1b5b9483d56 Mon Sep 17 00:00:00 2001 From: bill-auger Date: May 25 2023 04:42:32 +0000 Subject: [PATCH 31/33] [kio]: upgrade to v5.106.0 --- diff --git a/nonprism/kio/PKGBUILD b/nonprism/kio/PKGBUILD index e971eb2..7a1d921 100644 --- a/nonprism/kio/PKGBUILD +++ b/nonprism/kio/PKGBUILD @@ -15,11 +15,11 @@ pkgname=kio -pkgver=5.105.0 +pkgver=5.106.0 pkgrel=1 pkgrel+=.parabola1 _pkgver_i686=5.105.0 -_pkgrel_i686=1.0.parabola1 +_pkgrel_i686=1.0.parabola2 eval "[[ \"\$_pkgver_${CARCH}\" ]] && pkgver=\$_pkgver_${CARCH}" # our different arches do not eval "[[ \"\$_pkgrel_${CARCH}\" ]] && pkgrel=\$_pkgrel_${CARCH}" # our different arches do not pkgdesc='Resource and network access abstraction' @@ -43,7 +43,7 @@ source+=(duckduckgo_html.desktop parabola-wiki.desktop searx.desktop yacy.desktop) -sha256sums=('1f971115d3cc488973f74222c9ae3722ac630fa8c02c00d4ba22eb03ceb8677d' +sha256sums=('ed2f976422169ff92d67c2c434ac894e22a0216d22567acacb62e87c5908ccb6' 'SKIP') sha256sums+=('31910ab7393e67609f15e04a57f6406f63e6dae58b01bce0787741bc5958f292' '40466a9dad7075f2525e9e024720da7d7b49a22892b6fca8b81cc0e6408d2f7d' From c8542ef85cc0bb31f64a04d98054f852361cd208 Mon Sep 17 00:00:00 2001 From: grizzlyuser Date: May 27 2023 01:21:10 +0000 Subject: [PATCH 32/33] libre: [iceweasel] Update to 113.0 with upstream changes --- diff --git a/libre/iceweasel/0001-Bug-1831691-Use-the-vendored-glean_parser-for-all-of.patch b/libre/iceweasel/0001-Bug-1831691-Use-the-vendored-glean_parser-for-all-of.patch new file mode 100644 index 0000000..3a7118e --- /dev/null +++ b/libre/iceweasel/0001-Bug-1831691-Use-the-vendored-glean_parser-for-all-of.patch @@ -0,0 +1,39 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: ahochheiden +Date: Sat, 6 May 2023 21:07:09 +0000 +Subject: [PATCH] Bug 1831691 - Use the vendored 'glean_parser' for all of + `mach` r=firefox-build-system-reviewers,glandium + +Differential Revision: https://phabricator.services.mozilla.com/D177340 +--- + python/sites/build.txt | 1 - + python/sites/mach.txt | 1 + + python/sites/python-test.txt | 1 - + 3 files changed, 1 insertion(+), 2 deletions(-) + +diff --git a/python/sites/build.txt b/python/sites/build.txt +index b43f7680d200..4e6f6c51d9ad 100644 +--- a/python/sites/build.txt ++++ b/python/sites/build.txt +@@ -1,2 +1 @@ +-vendored:third_party/python/glean_parser + pth:third_party/python/vsdownload +diff --git a/python/sites/mach.txt b/python/sites/mach.txt +index b9fafd0b9c59..a18691184312 100644 +--- a/python/sites/mach.txt ++++ b/python/sites/mach.txt +@@ -78,6 +78,7 @@ vendored:third_party/python/esprima + vendored:third_party/python/fluent.migrate + vendored:third_party/python/fluent.syntax + vendored:third_party/python/giturlparse ++vendored:third_party/python/glean_parser + vendored:third_party/python/gyp/pylib + vendored:third_party/python/idna + vendored:third_party/python/importlib_metadata +diff --git a/python/sites/python-test.txt b/python/sites/python-test.txt +index 48cdcd2b8f48..74889365a22b 100644 +--- a/python/sites/python-test.txt ++++ b/python/sites/python-test.txt +@@ -1,2 +1 @@ +-vendored:third_party/python/glean_parser + pypi:pytest==7.0.1 diff --git a/libre/iceweasel/9001-FSDG-sync-remote-settings-with-local-dump.patch b/libre/iceweasel/9001-FSDG-sync-remote-settings-with-local-dump.patch index 682618f..9c3323a 100644 --- a/libre/iceweasel/9001-FSDG-sync-remote-settings-with-local-dump.patch +++ b/libre/iceweasel/9001-FSDG-sync-remote-settings-with-local-dump.patch @@ -682,8 +682,8 @@ index b69f5ca39d..5cc577ea8f 100644 --- a/services/settings/RemoteSettingsClient.sys.mjs +++ b/services/settings/RemoteSettingsClient.sys.mjs @@ -11,6 +11,7 @@ const lazy = {}; - - ChromeUtils.defineESModuleGetters(lazy, { + ClientEnvironmentBase: + "resource://gre/modules/components-utils/ClientEnvironment.sys.mjs", Database: "resource://services-settings/Database.sys.mjs", + DeferredTask: "resource://gre/modules/DeferredTask.sys.mjs", RemoteSettingsWorker: @@ -791,9 +791,9 @@ index 5cc577ea8f..833400d047 100644 XPCOMUtils.defineLazyModuleGetters(lazy, { + CanonicalJSON: "resource://gre/modules/CanonicalJSON.jsm", - ClientEnvironmentBase: - "resource://gre/modules/components-utils/ClientEnvironment.jsm", IDBHelpers: "resource://services-settings/IDBHelpers.jsm", + KintoHttpClient: "resource://services-common/kinto-http-client.js", + ObjectUtils: "resource://gre/modules/ObjectUtils.jsm", @@ -1176,7 +1177,10 @@ export class RemoteSettingsClient extends EventEmitter { const old = oldById.get(r.id); if (old) { diff --git a/libre/iceweasel/9004-FSDG-misc.patch b/libre/iceweasel/9004-FSDG-misc.patch index 92a2869..2e74686 100644 --- a/libre/iceweasel/9004-FSDG-misc.patch +++ b/libre/iceweasel/9004-FSDG-misc.patch @@ -1172,10 +1172,10 @@ index 7d37d26..4ebbc06 100644 -diff --git a/browser/locales/en-US/browser/branding/brandings.ftl b/browser/locales/en-US/browser/branding/brandings.ftl +diff --git a/toolkit/locales/en-US/toolkit/branding/brandings.ftl b/toolkit/locales/en-US/toolkit/branding/brandings.ftl index a52cde5532..251acad0f8 100644 ---- a/browser/locales/en-US/browser/branding/brandings.ftl -+++ b/browser/locales/en-US/browser/branding/brandings.ftl +--- a/toolkit/locales/en-US/toolkit/branding/brandings.ftl ++++ b/toolkit/locales/en-US/toolkit/branding/brandings.ftl @@ -15,28 +15,28 @@ ## https://mozilla-l10n.github.io/styleguides/mozilla_general/#brands-copyright-and-trademark diff --git a/libre/iceweasel/PKGBUILD b/libre/iceweasel/PKGBUILD index 776d66c..4270eb9 100644 --- a/libre/iceweasel/PKGBUILD +++ b/libre/iceweasel/PKGBUILD @@ -70,7 +70,7 @@ pkgname=iceweasel epoch=1 -pkgver=112.0.2 +pkgver=113.0 pkgrel=1 pkgrel+=.parabola1 _brandingver=112.0 @@ -153,6 +153,7 @@ source=( https://archive.mozilla.org/pub/firefox/releases/$pkgver/source/firefox-$pkgver.source.tar.xz{,.asc} $pkgname.desktop identity-icons-brand.svg + 0001-Bug-1831691-Use-the-vendored-glean_parser-for-all-of.patch ) source=(${source[*]/identity-icons-brand.svg/}) # branding over-ride source+=( @@ -179,15 +180,16 @@ validpgpkeys+=( 'BFA8008A8265677063B11BF47171986E4B745536' # Andreas Grapentin '3954A7AB837D0EA9CFA9798925DB7D9B5A8D4B40' # bill-auger ) -sha256sums=('e6a4819a3b82b1ca6c45296e50e6c9ab653306eeb540e50ba8683e339565992e' +sha256sums=('7a266044cb9d0c63079b3453507ea0c80a23389f4cbf6a4f6fd15146c6072627' 'SKIP' - '9cdc2602661717712092d28bb494e5b48e518cb930898aca85eaf21f91f7ef58') + '9cdc2602661717712092d28bb494e5b48e518cb930898aca85eaf21f91f7ef58' + '1976c0c5e98b0f67e83de778a4fd7729de9b140efa47b77b5879ea2e907987e9') sha256sums+=('a44dc1e9f2d508203d1cacc2b5bb212c73eb04311da9a036560ff389d7b8e9e6' 'SKIP' - '87780f5c83dd961162c9f95170ff4077aed3a5febe4d5417dad10cbb6e6677c6' # 9001-FSDG-sync-remote-settings-with-local-dump.patch + '63245fa00363d8884aa2b62fbade557cbe72c5cb326303c7d3f7664e0e3e359c' # 9001-FSDG-sync-remote-settings-with-local-dump.patch '1e4d28bd87688334b20cce9213490111e004ea6bcf1654f550da8ebe6bdbf3ef' # 9002-FSDG-preference-defaults.patch '13b701372b6fb35b96a1d58853db64643feb9be061ebc461b41ceca5de8eea62' # 9003-FSDG-urihandlers.patch - 'b2b6bc72de4abb7accce7a8d71390f97da11ee19d3f004749ece090c9bd90812' # 9004-FSDG-misc.patch + '44eeea69361ee4b9e4814452ed7e59f1caf2280688316dfdfe3e8b0f5da35798' # 9004-FSDG-misc.patch '00cb44a91b42942f17258ad165810866ff123777b667a5691ea0745ba72f4332' # process-json-files.py '8e113fd2730be3fd11b2a24918dd62e8741513cf4dce9819d8eae358c5411adc') # vendor.js.in sha256sums_armv7h=('2d4d91f7e35d0860225084e37ec320ca6cae669f6c9c8fe7735cdbd542e3a7c9') @@ -196,15 +198,16 @@ sha256sums_i686=('2f0c81a38c4578f68f5456b618fe84a78974072821488173eb55e0e72287e3 'ed3bb281697af7c4353a34067ffb4b18a971d40757bef2d6af3c8bf2d28d42d1' '2fb39374fd3d80eea9e346032a2a4b2bc2e357dee7380855b24bcf19b1335d06' 'c3ce181fbb0142055aa6dd17f3cda2ba6a1e54d7a689a8c6e9cce76aa40e6544') -b2sums=('44f2fae6c7260a1a6cad24ee31bbd52bc7efad15ac5b9f64f4bceabda7a371f20a490512cee324e53373b9a96fd218572c1478b76e5931383dbef00cc25743aa' +b2sums=('1506901352ea84b8016080aa81a0f431b8620c64c0c54364ec56d1878b6413ad965c2d9f39a9bb06d2356c206702283400918b4fb0fa3dac380360f54e60b146' 'SKIP' - 'f86353bbba05d8994db34c6abb66094aa61d2c37c8599930dbe9d215413f0f718a1ce55a8f2d07a65074c3947e28fc80d44c925bd9be239a870f82d2a1803635') + 'f86353bbba05d8994db34c6abb66094aa61d2c37c8599930dbe9d215413f0f718a1ce55a8f2d07a65074c3947e28fc80d44c925bd9be239a870f82d2a1803635' + '4ac97b908afb915911212686e41c09137bfa909023dc6fa0808cb6cb12f2dcef9597f0d679c98ad1a6b110d11a92025435cd30dd7b87194428b693c555e2bae7') b2sums+=('8472a10e5e27cc82f1467dd6592dfee512cd165e39f23ebbb4c8e76bbf6fd8614a4c1f1d91d42046f773eb711f463ece1aa23e1b1882173290529c28b0f3b60a' 'SKIP' - 'f23515dbac37f7368f4038dee58c1206900285ce9a03bed79f858cc4f8d34aea1e2b858f209f63262842411f7c8b0b017836f0b84c708245d007831851e8d073' # 9001-FSDG-sync-remote-settings-with-local-dump.patch + 'ba9530d65871a84fdfd121c2ee13ce9f80d65e1f7cd23be7ea9fc232822601c9f7428c15e08e971f0d24791d93290945ecee55de99e6c2b64f8cdc6d2806b564' # 9001-FSDG-sync-remote-settings-with-local-dump.patch 'bdb08d681f6f17ae9f8e0bb37e23087a0401d4be26c91ead3eda4654362ad37c3b1cddf69596e2b2278f77e0fd45714b7dbb7a97aca35aae5417e916079d24bf' # 9002-FSDG-preference-defaults.patch '9e4ccfb8850d9f9a5222f5186b35f2ae7986b6c6d435de024b109a6fa01e65a1362664cfb6ea81621387cf33364cc8d3d466fae1bee24ab5fc7e23c4cb17bf2c' # 9003-FSDG-urihandlers.patch - '6908728072a69b7b9ba41b9b952fec90e835bc36ead1e6eb547a5a7985f763aea1709dbba77dc828a9f2e71e2abf2dbd7909115c66cdeb8d0a4942df60c2b978' # 9004-FSDG-misc.patch + '82224f03e7688daebed3b70959206d2aa4758212f2982e9847862617a5a4005be29493fcd44066604f421ebec6b8c94dcf0cfbf03d0c3d670f00d5192d2421d7' # 9004-FSDG-misc.patch '085c4631ec8cfdf5842068d882185c783e976b1fde74167bb71ef4d7db8c70c12844177b17e76f858ba3ce2a402848ac8fc19910dcbefd29887abfaf5faac5e4' # process-json-files.py '5302b6abcfec3155c578e0664e6a0ac921234c5912d74c4a9b0feb3a051ed4ef5f11b93ee37739a3a92fc6693683374f92ac9c3f560780f879c4249d0718157a') # vendor.js.in b2sums_armv7h=('6e5980e56343a23bce4fcda58f6abc8f2debca0c278c87b09e53abb17ff15849c26e8df3bbff2388985f8fe5a4e9be9982c602ef7159546f0ae335fca1000a41') @@ -338,6 +341,8 @@ prepare() { ## technical patching ## + # https://bugzilla.mozilla.org/show_bug.cgi?id=1831691 + patch -Np1 -i ../0001-Bug-1831691-Use-the-vendored-glean_parser-for-all-of.patch # arch-specific technical patching case ${CARCH} in From 29fc5985e1dbf2858667004a565b868f59bc8b69 Mon Sep 17 00:00:00 2001 From: bill-auger Date: May 27 2023 01:21:10 +0000 Subject: [PATCH 33/33] [iceweasel]: build with python 3.10, to support python-pydantic 1.9.2 NOTE: if that python-pydantic problem continues, we may need to package python-pydantic 1.9.2, built against the latest python --- diff --git a/libre/iceweasel/0001-Bug-1831691-Use-the-vendored-glean_parser-for-all-of.patch b/libre/iceweasel/0001-Bug-1831691-Use-the-vendored-glean_parser-for-all-of.patch deleted file mode 100644 index 3a7118e..0000000 --- a/libre/iceweasel/0001-Bug-1831691-Use-the-vendored-glean_parser-for-all-of.patch +++ /dev/null @@ -1,39 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: ahochheiden -Date: Sat, 6 May 2023 21:07:09 +0000 -Subject: [PATCH] Bug 1831691 - Use the vendored 'glean_parser' for all of - `mach` r=firefox-build-system-reviewers,glandium - -Differential Revision: https://phabricator.services.mozilla.com/D177340 ---- - python/sites/build.txt | 1 - - python/sites/mach.txt | 1 + - python/sites/python-test.txt | 1 - - 3 files changed, 1 insertion(+), 2 deletions(-) - -diff --git a/python/sites/build.txt b/python/sites/build.txt -index b43f7680d200..4e6f6c51d9ad 100644 ---- a/python/sites/build.txt -+++ b/python/sites/build.txt -@@ -1,2 +1 @@ --vendored:third_party/python/glean_parser - pth:third_party/python/vsdownload -diff --git a/python/sites/mach.txt b/python/sites/mach.txt -index b9fafd0b9c59..a18691184312 100644 ---- a/python/sites/mach.txt -+++ b/python/sites/mach.txt -@@ -78,6 +78,7 @@ vendored:third_party/python/esprima - vendored:third_party/python/fluent.migrate - vendored:third_party/python/fluent.syntax - vendored:third_party/python/giturlparse -+vendored:third_party/python/glean_parser - vendored:third_party/python/gyp/pylib - vendored:third_party/python/idna - vendored:third_party/python/importlib_metadata -diff --git a/python/sites/python-test.txt b/python/sites/python-test.txt -index 48cdcd2b8f48..74889365a22b 100644 ---- a/python/sites/python-test.txt -+++ b/python/sites/python-test.txt -@@ -1,2 +1 @@ --vendored:third_party/python/glean_parser - pypi:pytest==7.0.1 diff --git a/libre/iceweasel/PKGBUILD b/libre/iceweasel/PKGBUILD index 4270eb9..1ff1c6e 100644 --- a/libre/iceweasel/PKGBUILD +++ b/libre/iceweasel/PKGBUILD @@ -152,9 +152,7 @@ options=( source=( https://archive.mozilla.org/pub/firefox/releases/$pkgver/source/firefox-$pkgver.source.tar.xz{,.asc} $pkgname.desktop - identity-icons-brand.svg - 0001-Bug-1831691-Use-the-vendored-glean_parser-for-all-of.patch -) + identity-icons-brand.svg) source=(${source[*]/identity-icons-brand.svg/}) # branding over-ride source+=( https://repo.parabola.nu/other/iceweasel/${pkgname}_${_brandingver}-${_brandingrel}.branding.tar.xz{,.sig} @@ -182,8 +180,7 @@ validpgpkeys+=( ) sha256sums=('7a266044cb9d0c63079b3453507ea0c80a23389f4cbf6a4f6fd15146c6072627' 'SKIP' - '9cdc2602661717712092d28bb494e5b48e518cb930898aca85eaf21f91f7ef58' - '1976c0c5e98b0f67e83de778a4fd7729de9b140efa47b77b5879ea2e907987e9') + '9cdc2602661717712092d28bb494e5b48e518cb930898aca85eaf21f91f7ef58') sha256sums+=('a44dc1e9f2d508203d1cacc2b5bb212c73eb04311da9a036560ff389d7b8e9e6' 'SKIP' '63245fa00363d8884aa2b62fbade557cbe72c5cb326303c7d3f7664e0e3e359c' # 9001-FSDG-sync-remote-settings-with-local-dump.patch @@ -249,6 +246,7 @@ readonly _SHOULD_USE_GCC==$(case "${CARCH}" in armv7h) echo 1 ;; makedepends+=( python-pydantic=1.9.2 ) # dustbin - configure error: pydantic 1.10.4 has requirement typing-extensions>=4.2.0, but you have typing-extensions 3.10.0.0 makedepends+=( python-zstandard=0.19.0 ) # dustbin - configure error: zstandard<=0.19.0,>=0.11.1: Installed with unexpected version "0.20.0" +makedepends+=( python=3.10.10 ) # dustbin - to support 'python-pydantic' above case "${CARCH}" in armv7h) @@ -341,8 +339,6 @@ prepare() { ## technical patching ## - # https://bugzilla.mozilla.org/show_bug.cgi?id=1831691 - patch -Np1 -i ../0001-Bug-1831691-Use-the-vendored-glean_parser-for-all-of.patch # arch-specific technical patching case ${CARCH} in