Compare commits

...

2 Commits

Author SHA1 Message Date
d0aa052805 add longoverdue fork 2021-06-18 23:52:10 +02:00
bdd7c35a46 removed some unused packages 2021-06-18 23:45:09 +02:00
20 changed files with 20 additions and 2281 deletions

View File

@@ -1,204 +0,0 @@
# Maintainer: Thore Bödecker <foxxx0@archlinux.org>
# Contributor: Sébastien "Seblu" Luttringer <seblu@archlinux.org>
pkgbase='ceph'
pkgname=('ceph' 'ceph-libs')
pkgver=14.2.2
pkgrel=1
pkgdesc='Distributed, fault-tolerant storage platform delivering object, block, and file system'
arch=('x86_64')
url='https://ceph.com/'
license=('GPL')
makedepends=('bc' 'boost' 'boost-libs' 'cmake' 'cpio' 'crypto++' 'curl' 'cython'
'cython2' 'expat' 'fcgi' 'fuse2' 'gcc-libs' 'git' 'glibc' 'gperf' 'gperftools'
'gptfdisk' 'inetutils' 'jq' 'junit' 'keyutils' 'leveldb' 'libaio'
'libatomic_ops' 'libedit' 'libsystemd' 'libutil-linux' 'libxml2' 'lsb-release'
'lz4' 'ncurses' 'nss' 'parted' 'pcre' 'procps-ng' 'python-cherrypy'
'python-jinja' 'python-nose' 'python-pecan' 'python-pip' 'python-bcrypt'
'python-prettytable' 'python-pyopenssl' 'python-setuptools' 'python-routes'
'python-sphinx' 'python-tox' 'python-virtualenv' 'python-werkzeug' 'sed'
'snappy' 'socat' 'systemd' 'valgrind' 'xfsprogs' 'xmlstarlet' 'yasm'
'zlib' 'zstd' 'cunit' 'oath-toolkit' 'fontconfig')
options=('emptydirs')
source=("https://download.ceph.com/tarballs/${pkgbase}-${pkgver}.tar.gz"
'ceph.sysusers'
'boost-1.67.patch'
'remove-distro-version-detection.patch')
sha512sums=('1ce61fb75e331cca39aaa8c0498bbb3cb874edb22ea45a4c2d82171b5e0c7c4ab2b081674b77177d5e612a0efdfa01de10a4becc4a7ee0eed1b2b3d358a72dc1'
'4354001c1abd9a0c385ba7bd529e3638fb6660b6a88d4e49706d4ac21c81b8e829303a20fb5445730bdac18c4865efb10bc809c1cd56d743c12aa9a52e160049'
'b886c3f2b2a2b32d4033225b5f28cef98ca96e3f4fe2d04cfdbdb3141bbefd81895284abe9c9b75dcad156d54a93dc938bd8d9a45056b4de12855bbbdf0870ca'
'02c9e8fd3c23fb4c9c4c576ee6d06e8525ca31decfd964fb7231e73c98fe2987a483dda680969752186f0918f47d9af4fb09a4901e5319077f45d870906716da')
prepare() {
cd "${srcdir}/${pkgbase}-${pkgver}"
# apply patch from the source array (should be a pacman feature)
local filename
for filename in "${source[@]}"; do
if [[ "$filename" =~ \.patch$ ]]; then
msg2 "Applying patch ${filename##*/}"
patch -p1 -N -i "$srcdir/${filename##*/}"
fi
done
# remove tests that require root privileges
rm src/test/cli/ceph-authtool/cap*.t
# remove broken tests
rm src/test/cli/crushtool/build.t
rm -rf qa/btrfs
rm src/btrfs_ioc_test.c
# patch version script
# TODO this is unclean
perl -0777 -i -pe 's/(LIBRADOS_[0-9.]+) .*\}/$1 \{\}/gs' src/librados/librados.map
sed -i 's/local/global/g' src/librados/librados.map
# this test will try to perform btrfs operations when a btrfs mount
# is active on the build host, which will fail
if mount | grep 'type btrfs' &>/dev/null; then
sed -i '/run-tox-ceph-disk/d' src/test/CMakeLists.txt
fi
# fix python interpreter -> python
#for file in \
# src/ceph-create-keys \
# src/mount.fuse.ceph
#do
# sed -i 's|#!/usr/bin/env python|#!/usr/bin/env python|' "${file}"
#done
}
build() {
echo "${srcdir}/${pkgbase}-${pkgver}"
cd "${srcdir}/${pkgbase}-${pkgver}"
mkdir -p build
cd build
# experimental in luminous: (and currently broken with boost 1.66)
# RADOSGW_BEAST_FRONTEND
# -> disabled
cmake \
-DCMAKE_INSTALL_PREFIX=/usr \
-DCMAKE_INSTALL_SYSCONFDIR=/etc \
-DCMAKE_INSTALL_SBINDIR=/usr/bin \
-DCMAKE_INSTALL_LIBDIR=/usr/lib \
-DCMAKE_INSTALL_LIBEXECDIR=/usr/lib \
-DMGR_PYTHON_VERSION=3.7 \
-DENABLE_GIT_VERSION=ON \
-DWITH_PYTHON3=ON \
-DWITH_PYTHON2=OFF \
-DWITH_BABELTRACE=OFF \
-DWITH_CEPHFS=ON \
-DWITH_FUSE=ON \
-DWITH_LTTNG=OFF \
-DWITH_LZ4=ON \
-DWITH_MGR=ON \
-DWITH_NSS=ON \
-DPYTHON_INCLUDE_DIR=/usr/include/python3.7m \
-DWITH_RADOSGW=ON \
-DWITH_RADOSGW_BEAST_FRONTEND=ON \
-DWITH_RDMA=OFF \
-DWITH_SSL=ON \
-DWITH_SYSTEM_BOOST=ON \
-DWITH_SYSTEMD=ON \
-DWITH_TESTS=OFF \
-DWITH_XFS=ON \
-DENABLE_SHARED=ON \
-DWITH_MGR_DASHBOARD_FRONTEND=ON \
..
make all
}
check() {
cd "${srcdir}/${pkgbase}-${pkgver}/build"
export CTEST_PARALLEL_LEVEL="$(nproc)"
make check
# sometimes processes are not properly terminated...
for process in ceph-mon ceph-mgr ceph-osd; do
pkill -9 "$process" || true
done
}
package_ceph-libs() {
depends=('boost-libs' 'curl' 'glibc' 'keyutils' 'leveldb' 'libaio'
'libutil-linux' 'lz4' 'nss' 'python' 'xfsprogs' 'oath-toolkit')
cd "${srcdir}/${pkgbase}-${pkgver}/build"
# main install
make DESTDIR="$pkgdir" install
# remove stuff that goes into the ceph package
rm -rf "${pkgdir}"/usr/lib/{ceph/mgr,systemd,sysusers.d,tmpfiles.d}
rm -rf "${pkgdir}/usr/share"
rm -rf "${pkgdir}/usr/sbin"
rm -rf "${pkgdir}/usr/bin"
rm -rf "${pkgdir}/etc"
rm -rf "${pkgdir}/var"
}
package_ceph() {
depends=('ceph-libs' 'boost-libs' 'curl' 'fuse2' 'glibc' 'gperftools'
'keyutils' 'leveldb' 'libaio' 'libsystemd' 'libutil-linux' 'python-routes'
'lsb-release' 'ncurses' 'nss' 'python' 'python-cherrypy' 'python-bcrypt'
'python-jinja' 'python-mako' 'python-pecan' 'python-prettytable'
'python-pyopenssl' 'python-setuptools' 'python-pyjwt'
'python-webob' 'python-werkzeug' 'snappy' 'xfsprogs' 'python-requests')
cd "${srcdir}/${pkgbase}-${pkgver}/build"
# main install
make DESTDIR="$pkgdir" install
# remove stuff that is in the ceph-libs package
find "${pkgdir}/usr/lib" -maxdepth 1 -type f -delete
find "${pkgdir}/usr/lib" -maxdepth 1 -type l -delete
find "${pkgdir}/usr/lib/ceph" -maxdepth 1 -type f -delete
find "${pkgdir}/usr/lib/ceph" -maxdepth 1 -type l -delete
rm -rf "${pkgdir}"/usr/lib/{ceph/{compressor,crypto,erasure-code},python.7,rados-classes}
rm -rf "${pkgdir}/usr/include"
# install tmpfiles.d and sysusers.d stuff
install -Dm644 "${srcdir}/${pkgbase}-${pkgver}/systemd/ceph.tmpfiles.d" \
"${pkgdir}/usr/lib/tmpfiles.d/${pkgbase}.conf"
install -Dm644 "${srcdir}/ceph.sysusers" \
"${pkgdir}/usr/lib/sysusers.d/${pkgbase}.conf"
install -Dm644 "${srcdir}/${pkgbase}-${pkgver}/src/logrotate.conf" \
"${pkgdir}/etc/logrotate.d/${pkgbase}"
# remove debian init script
rm -rf "${pkgdir}/etc/init.d"
# fix sbin dir (cmake opt seems to have no effect)
mv "${pkgdir}"/usr/sbin/* "${pkgdir}/usr/bin/"
rm -rf "${pkgdir}/usr/sbin"
# remove drop.ceph.com ssh stuff
rm -f "${pkgdir}/usr/share/ceph/{{known_hosts,id_rsa}_drop.ceph.com,.pub}"
# fix bash completions path
install -d -m 755 "${pkgdir}/usr/share/bash-completion"
mv "$pkgdir"/{etc/bash_completion.d,usr/share/bash-completion/completions}
# fix EnvironmentFile location in systemd service files
sed -i 's|/etc/sysconfig/|/etc/conf.d/|g' "${pkgdir}"/usr/lib/systemd/system/*.service
# prepare some paths and set correct permissions
install -D -d -m750 -o 0 -g 340 "${pkgdir}/etc/ceph"
install -D -d -m750 -o 340 -g 340 "${pkgdir}/var/log/ceph"
install -D -d -m750 -o 340 -g 340 "${pkgdir}/var/lib/ceph"
install -D -d -m750 -o 340 -g 340 "${pkgdir}/var/lib/ceph/bootstrap-mds"
install -D -d -m750 -o 340 -g 340 "${pkgdir}/var/lib/ceph/bootstrap-osd"
install -D -d -m750 -o 340 -g 340 "${pkgdir}/var/lib/ceph/bootstrap-rgw"
install -D -d -m750 -o 340 -g 340 "${pkgdir}/var/lib/ceph/mon"
install -D -d -m750 -o 340 -g 340 "${pkgdir}/var/lib/ceph/mgr"
install -D -d -m750 -o 340 -g 340 "${pkgdir}/var/lib/ceph/osd"
}
# vim:set ts=2 sw=2 et:

View File

@@ -1,11 +0,0 @@
--- a/src/test/librbd/test_mock_Journal.cc 2018-06-03 01:56:35.407273176 +0300
+++ b/src/test/librbd/test_mock_Journal.cc 2018-06-03 01:56:29.800506081 +0300
@@ -1,6 +1,8 @@
// -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*-
// vim: ts=8 sw=2 smarttab
+#define BOOST_BIND_NO_PLACEHOLDERS
+
#include "test/librbd/test_mock_fixture.h"
#include "test/journal/mock/MockJournaler.h"
#include "test/librbd/test_support.h"

View File

@@ -1 +0,0 @@
u ceph 340 - /run/ceph

View File

@@ -1,260 +0,0 @@
--- a/src/test/CMakeLists.txt 2018-05-29 14:04:02.000000000 +0200
+++ b/src/test/CMakeLists.txt 2018-06-04 13:35:28.440465053 +0200
@@ -572,7 +572,6 @@ add_ceph_test(test_objectstore_memstore.
#add_ceph_test(test_pidfile.sh ${CMAKE_CURRENT_SOURCE_DIR}/test_pidfile.sh)
add_ceph_test(test_subman.sh ${CMAKE_CURRENT_SOURCE_DIR}/test_subman.sh)
-add_ceph_test(smoke.sh ${CMAKE_CURRENT_SOURCE_DIR}/smoke.sh)
add_ceph_test(unittest_bufferlist.sh ${CMAKE_SOURCE_DIR}/src/unittest_bufferlist.sh)
add_test(NAME run-tox-ceph-disk COMMAND bash ${CMAKE_SOURCE_DIR}/src/ceph-disk/run-tox.sh)
--- a/src/test/common/CMakeLists.txt 2018-05-29 14:04:02.000000000 +0200
+++ b/src/test/common/CMakeLists.txt 2018-06-04 13:36:33.340014839 +0200
@@ -41,13 +41,6 @@ add_executable(unittest_prioritized_queu
)
add_ceph_unittest(unittest_prioritized_queue)
-# unittest_mclock_priority_queue
-add_executable(unittest_mclock_priority_queue
- test_mclock_priority_queue.cc
- )
-add_ceph_unittest(unittest_mclock_priority_queue)
-target_link_libraries(unittest_mclock_priority_queue ceph-common dmclock)
-
# unittest_str_map
add_executable(unittest_str_map
test_str_map.cc
--- a/src/test/encoding/CMakeLists.txt 2018-05-29 14:04:02.000000000 +0200
+++ b/src/test/encoding/CMakeLists.txt 2018-06-04 13:37:22.693006351 +0200
@@ -1,4 +1,3 @@
# scripts
-add_ceph_test(check-generated.sh ${CMAKE_CURRENT_SOURCE_DIR}/check-generated.sh)
add_ceph_test(readable.sh ${CMAKE_CURRENT_SOURCE_DIR}/readable.sh)
--- a/src/test/run-cli-tests 2018-05-29 14:04:02.000000000 +0200
+++ b/src/test/run-cli-tests 2018-06-04 13:38:12.529328276 +0200
@@ -1,7 +1,7 @@
#!/bin/sh
set -e
-if ! command -v virtualenv >/dev/null; then
+if ! command -v virtualenv2 >/dev/null; then
echo "$0: virtualenv not installed, skipping python-using tests." 1>&2
exit 1
fi
@@ -30,7 +30,7 @@ if [ ! -e "$CRAM_BIN" ]; then
# patched cram to support that. See upstream ticket at
# https://bitbucket.org/brodie/cram/issue/9/allow-read-only-directories-for-t
# -- tv@inktank.com
- virtualenv "$VENV" && $VENV/bin/pip --log "$VENV"/log.txt install "$SRCDIR/downloads/cram-0.5.0ceph.2011-01-14.tar.gz"
+ virtualenv2 "$VENV" && $VENV/bin/pip --log "$VENV"/log.txt install "$SRCDIR/downloads/cram-0.5.0ceph.2011-01-14.tar.gz"
fi
SRCDIR_ABS="$(readlink -f "$SRCDIR")"
--- a/src/test/pybind/test_ceph_argparse.py 2017-09-26 18:27:07.000000000 +0200
+++ b/src/test/pybind/test_ceph_argparse.py 2017-10-08 16:50:49.060831801 +0200
@@ -1,4 +1,4 @@
-#!/usr/bin/env nosetests
+#!/usr/bin/env nosetests2
# -*- mode:python; tab-width:4; indent-tabs-mode:t; coding:utf-8 -*-
# vim: ts=4 sw=4 smarttab expandtab fileencoding=utf-8
#
--- a/src/test/pybind/test_ceph_daemon.py 2017-09-26 18:27:07.000000000 +0200
+++ b/src/test/pybind/test_ceph_daemon.py 2017-10-08 16:50:58.341131927 +0200
@@ -1,4 +1,4 @@
-#!/usr/bin/env nosetests
+#!/usr/bin/env nosetests2
# -*- mode:python; tab-width:4; indent-tabs-mode:t -*-
# vim: ts=4 sw=4 smarttab expandtab
#
--- a/qa/standalone/ceph-helpers.sh 2018-05-29 14:04:02.000000000 +0200
+++ b/qa/standalone/ceph-helpers.sh 2018-06-04 13:39:31.305450795 +0200
@@ -147,7 +147,7 @@ function teardown() {
kill_daemons $dir KILL
if [ `uname` != FreeBSD ] \
&& [ $(stat -f -c '%T' .) == "btrfs" ]; then
- __teardown_btrfs $dir
+ true
fi
local cores="no"
local pattern="$(sysctl -n $KERNCORE)"
@@ -183,12 +183,7 @@ function teardown() {
}
function __teardown_btrfs() {
- local btrfs_base_dir=$1
- local btrfs_root=$(df -P . | tail -1 | awk '{print $NF}')
- local btrfs_dirs=$(cd $btrfs_base_dir; sudo btrfs subvolume list -t . | awk '/^[0-9]/ {print $4}' | grep "$btrfs_base_dir/$btrfs_dir")
- for subvolume in $btrfs_dirs; do
- sudo btrfs subvolume delete $btrfs_root/$subvolume
- done
+ true
}
function test_teardown() {
--- a/src/ceph-disk/run-tox.sh 2018-05-29 14:04:02.000000000 +0200
+++ b/src/ceph-disk/run-tox.sh 2018-06-04 13:40:15.601811858 +0200
@@ -30,4 +30,4 @@ if [ -z $CEPH_BUILD_DIR ]; then
fi
source ${CEPH_DISK_VIRTUALENV}/bin/activate
-tox -c ${TOX_PATH}
+tox2 -c ${TOX_PATH}
--- a/qa/workunits/rbd/run_devstack_tempest.sh 2017-09-26 18:27:07.000000000 +0200
+++ b/qa/workunits/rbd/run_devstack_tempest.sh 2017-10-10 18:53:33.564468674 +0200
@@ -127,4 +127,4 @@
chmod -R o+rx ${STACK_OPT_PATH}/devstack/files
cd ${STACK_OPT_PATH}/tempest
-sudo -H -u ${TEMPEST_USER} tox -eall-plugin -- '(?!.*\[.*\bslow\b.*\])(^tempest\.(api|scenario)|(^cinder\.tests.tempest))' --concurrency=3
+sudo -H -u ${TEMPEST_USER} tox2 -eall-plugin -- '(?!.*\[.*\bslow\b.*\])(^tempest\.(api|scenario)|(^cinder\.tests.tempest))' --concurrency=3
--- a/src/test/filestore/TestFileStore.cc 2017-09-26 18:27:07.000000000 +0200
+++ b/src/test/filestore/TestFileStore.cc 2017-10-10 20:31:36.325983555 +0200
@@ -36,13 +36,6 @@
ASSERT_EQ(pm["filestore_backend"], "generic");
}
#if defined(__linux__)
- {
- map<string,string> pm;
- FileStore fs(g_ceph_context, "a", "b");
- TestFileStore::create_backend(fs, BTRFS_SUPER_MAGIC);
- fs.collect_metadata(&pm);
- ASSERT_EQ(pm["filestore_backend"], "btrfs");
- }
# ifdef HAVE_LIBXFS
{
map<string,string> pm;
--- a/src/test/cli/osdmaptool/ceph.conf.withracks 2017-09-26 18:27:07.000000000 +0200
+++ b/src/test/cli/osdmaptool/ceph.conf.withracks 2017-10-10 21:30:49.230389707 +0200
@@ -42,8 +42,8 @@
keyring = /mnt/osd.$id/keyring
osd data = /mnt/osd.$id
osd journal = /dev/disk/by-label/osd.$id.journal
- osd mkfs type = btrfs
- osd mount options btrfs = rw,noatime
+ osd mkfs type = xfs
+ osd mount options xfs = rw,noatime
devs = /dev/disk/by-label/osd.$id.data
; temp sage
debug osd = 20
--- a/src/spdk/test/iscsi_tgt/filesystem/filesystem.sh 2017-04-13 06:05:24.000000000 +0200
+++ b/src/spdk/test/iscsi_tgt/filesystem/filesystem.sh 2017-10-10 21:33:09.084930640 +0200
@@ -55,7 +55,7 @@
parted -s /dev/$dev mkpart primary '0%' '100%'
sleep 1
-for fstype in "ext4" "btrfs" "xfs"; do
+for fstype in "ext4" "xfs"; do
if [ "$fstype" == "ext4" ]; then
mkfs.${fstype} -F /dev/${dev}1
--- a/src/spdk/test/nvmf/filesystem/filesystem.sh 2017-04-13 06:05:24.000000000 +0200
+++ b/src/spdk/test/nvmf/filesystem/filesystem.sh 2017-10-10 21:33:26.258820759 +0200
@@ -49,7 +49,7 @@
timing_exit parted
sleep 1
- for fstype in "ext4" "btrfs" "xfs"; do
+ for fstype in "ext4" "xfs"; do
timing_enter $fstype
if [ $fstype = ext4 ]; then
force=-F
--- a/src/ceph.conf.twoosds 2017-09-26 18:27:07.000000000 +0200
+++ b/src/ceph.conf.twoosds 2017-10-10 21:34:13.160340506 +0200
@@ -72,8 +72,8 @@
; osd journal = /mnt/osd$id/journal
; osd journal size = 1000
osd journal = "/dev/disk/by-path/pci-0000:05:02.0-scsi-6:0:0:0"
- osd mkfs type = btrfs
- osd mount options btrfs = "flushoncommit,usertrans"
+ osd mkfs type = xfs
+ osd mount options xfs = "flushoncommit,usertrans"
; filestore max sync interval = 1
devs = "/dev/disk/by-path/pci-0000:05:01.0-scsi-2:0:0:0"
--- a/src/ceph-disk/tests/ceph-disk.sh 2017-09-26 18:27:07.000000000 +0200
+++ b/src/ceph-disk/tests/ceph-disk.sh 2017-10-10 21:35:26.386044372 +0200
@@ -74,8 +74,7 @@
kill_daemons $dir
if [ `uname` != FreeBSD ] && \
[ $(stat -f -c '%T' .) == "btrfs" ]; then
- rm -fr $dir/*/*db
- __teardown_btrfs $dir
+ true
fi
grep " $(pwd)/$dir/" < ${PROCDIR}/proc/mounts | while read mounted rest ; do
umount $mounted
--- a/qa/run_xfstests.sh 2017-09-26 18:27:07.000000000 +0200
+++ b/qa/run_xfstests.sh 2017-10-10 22:18:49.663141392 +0200
@@ -81,7 +81,7 @@
arg_count 1 $#
case "$1" in
- xfs|ext4|btrfs) return 0 ;;
+ xfs|ext4) return 0 ;;
*) return 1 ;;
esac
}
@@ -120,7 +120,7 @@
echo " -c or --count" >&2
echo " iteration count (1 or more)" >&2
echo " -f or --fs-type" >&2
- echo " one of: xfs, ext4, btrfs" >&2
+ echo " one of: xfs, ext4" >&2
echo " (default fs-type: xfs)" >&2
echo " -r or --randomize" >&2
echo " randomize test order" >&2
@@ -132,7 +132,7 @@
echo " name of file with list of tests to skip" >&2
echo " tests:" >&2
echo " list of test numbers, e.g.:" >&2
- echo " generic/001 xfs/008 shared/032 btrfs/009" >&2
+ echo " generic/001 xfs/008 shared/032" >&2
echo " or possibly an xfstests test group, e.g.:" >&2
echo " -g quick" >&2
echo " (default tests: -g auto)" >&2
@@ -235,7 +235,6 @@
case "${FSTYP}" in
xfs) options="-f" ;;
ext4) options="-F" ;;
- btrfs) options="-f" ;;
esac
"mkfs.${FSTYP}" ${options} "${dev}" ||
--- a/qa/run_xfstests-obsolete.sh 2017-09-26 18:27:07.000000000 +0200
+++ b/qa/run_xfstests-obsolete.sh 2017-10-10 22:19:27.027675395 +0200
@@ -125,7 +125,7 @@
arg_count 1 $#
case "$1" in
- xfs|ext4|btrfs) return 0 ;;
+ xfs|ext4) return 0 ;;
*) return 1 ;;
esac
}
@@ -157,7 +157,7 @@
echo " -c or --count" >&2
echo " iteration count (1 or more)" >&2
echo " -f or --fs-type" >&2
- echo " one of: xfs, ext4, btrfs" >&2
+ echo " one of: xfs, ext4" >&2
echo " (default fs-type: xfs)" >&2
echo " -s or --scratch-dev (REQUIRED)" >&2
echo " name of device used for scratch filesystem" >&2
@@ -262,7 +262,7 @@
# Filesystem-specific mkfs options--set if not supplied
export XFS_MKFS_OPTIONS="${XFS_MKFS_OPTIONS:--f -l su=65536}"
export EXT4_MKFS_OPTIONS="${EXT4_MKFS_OPTIONS:--F}"
-export BTRFS_MKFS_OPTION # No defaults
+unset BTRFS_MKFS_OPTION # No defaults
XFSTESTS_DIR="/var/lib/xfstests" # Where the tests live
@@ -348,7 +348,6 @@
case "${FSTYP}" in
xfs) options="${XFS_MKFS_OPTIONS}" ;;
ext4) options="${EXT4_MKFS_OPTIONS}" ;;
- btrfs) options="${BTRFS_MKFS_OPTIONS}" ;;
esac
"mkfs.${FSTYP}" ${options} "${dev}" ||

View File

@@ -1,11 +0,0 @@
--- a/CMakeLists.txt 2017-09-26 18:27:07.000000000 +0200
+++ b/CMakeLists.txt 2017-10-06 14:10:11.032378659 +0200
@@ -63,7 +63,7 @@
option(WITH_MANPAGE "Build man pages." ON)
if(WITH_MANPAGE)
find_program(SPHINX_BUILD
- sphinx-build)
+ sphinx-build2)
if(NOT SPHINX_BUILD)
message(FATAL_ERROR "Can't find sphinx-build.")
endif(NOT SPHINX_BUILD)

View File

@@ -1,10 +0,0 @@
--- a/src/common/util.cc 2018-05-29 14:04:02.000000000 +0200
+++ b/src/common/util.cc 2018-06-04 13:45:52.279495745 +0200
@@ -96,7 +96,6 @@ static bool os_release_parse(map<string,
static const map<string, string> kvm = {
{ "distro", "ID=" },
{ "distro_description", "PRETTY_NAME=" },
- { "distro_version", "VERSION_ID=" }
};
FILE *fp = fopen("/etc/os-release", "r");

View File

@@ -1,94 +0,0 @@
# Maintainer: Maxime Gauduin <alucryd@archlinux.org>
# Contributor: Ethan Skinner <aur@etskinner.com>
# Contributor: Grégoire Seux <grego_aur@familleseux.net>
# Contributor: Dean Galvin <deangalvin3@gmail.com>
# Contributor: NicoHood <archlinux@nicohood.de>
pkgname=home-assistant
pkgdesc='Open source home automation that puts local control and privacy first'
pkgver=2021.4.4
pkgrel=1
arch=(any)
url=https://home-assistant.io/
license=(APACHE)
depends=(
gcc
python-aiohttp
python-aiohttp-cors
python-astral
python-async-timeout
python-attrs
python-bcrypt
python-certifi
python-ciso8601
python-cryptography
python-defusedxml
python-httpx
python-jinja
python-mutagen
python-pillow
python-pip
python-pyjwt
python-pytz
python-requests
python-ruamel-yaml
python-slugify
python-sqlalchemy
python-voluptuous
python-voluptuous-serialize
python-yaml
python-yarl
python-zeroconf
python-awesomeversion
)
makedepends=(
git
python-setuptools
)
optdepends=(
'net-tools: Nmap host discovery'
'openzwave: Z-Wave integration'
'python-dtlssocket: Ikea Tradfri integration'
'python-lxml: Meteo France integration'
)
source=(
https://github.com/home-assistant/core/archive/refs/tags/$pkgver.tar.gz
home-assistant.service
home-assistant-astral2.2.patch
)
b2sums=('2956189043c794015a4e103fe16a93daaa6e5d4b4dcd9c464a77b14205ebf39d4d020a106a100931f4ba035d3081572360c6c28c8e8fca1453e44a3dcb73780e'
'0df7bbfdac09e37294ac27567e677855c72d13be3aefbd23e0a8f101cf2148302affbe9b6b586b893f77fc990f665d7b95f4916583680c06abd8f74b5cdf3da9'
'96260b3a42a1a5192ec4d701dbec0a1a6c2465337c3b450a22601144c2ef1a6bd616b8192ab100e36d7fa87f986464c723b3d136789132f78cb860980ea2f4bb')
prepare() {
cd core-$pkgver
patch -Np1 -i ../home-assistant-astral2.2.patch
# get scapy from git to avoid Python issue 42580
# sed 's|scapy==2.4.4|scapy @ git+https://github.com/secdev/scapy.git@46fa40fde4049ad7770481f8806c59640df24059|g' -i requirements_all.txt
# lift hard dep constraints, we'll deal with breaking changes ourselves
sed 's/==/>=/g' -i requirements.txt setup.py homeassistant/package_constraints.txt
# allow pip >= 20.3 to be used
sed 's/,<20.3//g' -i requirements.txt setup.py homeassistant/package_constraints.txt
# allow aiohttp >= 3.7.4 to be used
sed 's/3.7.4.post0/3.7.4/g' -i requirements.txt setup.py homeassistant/package_constraints.txt
# allow httpx >= 0.16.1 to be used
sed 's/0.17.1/0.16.1/g' -i requirements.txt setup.py homeassistant/package_constraints.txt
}
build() {
cd core-$pkgver
python setup.py build
}
package() {
cd core-$pkgver
python setup.py install --root="${pkgdir}" --prefix=/usr --optimize=1 --skip-build
install -Dm 644 ../home-assistant.service -t "${pkgdir}"/usr/lib/systemd/system/
}
# vim: ts=2 sw=2 et:

View File

@@ -1,291 +0,0 @@
From 9acf394811149c65087c7096c45c10cc0f73196a Mon Sep 17 00:00:00 2001
From: Giovanni Harting <539@idlegandalf.com>
Date: Mon, 22 Mar 2021 18:35:14 +0100
Subject: [PATCH] bump astral to 2.2
---
homeassistant/components/moon/sensor.py | 5 +--
homeassistant/components/sun/__init__.py | 20 +++++-----
homeassistant/helpers/sun.py | 50 +++++++++++++++---------
homeassistant/package_constraints.txt | 2 +-
requirements.txt | 2 +-
setup.py | 2 +-
6 files changed, 47 insertions(+), 34 deletions(-)
diff --git a/homeassistant/components/moon/sensor.py b/homeassistant/components/moon/sensor.py
index 4b373469cc..6213e218d2 100644
--- a/homeassistant/components/moon/sensor.py
+++ b/homeassistant/components/moon/sensor.py
@@ -1,5 +1,5 @@
"""Support for tracking the moon phases."""
-from astral import Astral
+from astral import moon
import voluptuous as vol
from homeassistant.components.sensor import PLATFORM_SCHEMA, SensorEntity
@@ -48,7 +48,6 @@ class MoonSensor(SensorEntity):
"""Initialize the moon sensor."""
self._name = name
self._state = None
- self._astral = Astral()
@property
def name(self):
@@ -87,4 +86,4 @@ class MoonSensor(SensorEntity):
async def async_update(self):
"""Get the time and updates the states."""
today = dt_util.as_local(dt_util.utcnow()).date()
- self._state = self._astral.moon_phase(today)
+ self._state = moon.phase(today)
diff --git a/homeassistant/components/sun/__init__.py b/homeassistant/components/sun/__init__.py
index dfe3b15c11..489eab6b5b 100644
--- a/homeassistant/components/sun/__init__.py
+++ b/homeassistant/components/sun/__init__.py
@@ -92,6 +92,7 @@ class Sun(Entity):
"""Initialize the sun."""
self.hass = hass
self.location = None
+ self.elevation = 0.0
self._state = self.next_rising = self.next_setting = None
self.next_dawn = self.next_dusk = None
self.next_midnight = self.next_noon = None
@@ -100,10 +101,11 @@ class Sun(Entity):
self._next_change = None
def update_location(_event):
- location = get_astral_location(self.hass)
+ location, elevation = get_astral_location(self.hass)
if location == self.location:
return
self.location = location
+ self.elevation = elevation
self.update_events()
update_location(None)
@@ -140,7 +142,7 @@ class Sun(Entity):
def _check_event(self, utc_point_in_time, sun_event, before):
next_utc = get_location_astral_event_next(
- self.location, sun_event, utc_point_in_time
+ self.location, self.elevation, sun_event, utc_point_in_time
)
if next_utc < self._next_change:
self._next_change = next_utc
@@ -169,7 +171,7 @@ class Sun(Entity):
)
self.location.solar_depression = -10
self._check_event(utc_point_in_time, "dawn", PHASE_SMALL_DAY)
- self.next_noon = self._check_event(utc_point_in_time, "solar_noon", None)
+ self.next_noon = self._check_event(utc_point_in_time, "noon", None)
self._check_event(utc_point_in_time, "dusk", PHASE_DAY)
self.next_setting = self._check_event(
utc_point_in_time, SUN_EVENT_SUNSET, PHASE_SMALL_DAY
@@ -180,9 +182,7 @@ class Sun(Entity):
self._check_event(utc_point_in_time, "dusk", PHASE_NAUTICAL_TWILIGHT)
self.location.solar_depression = "astronomical"
self._check_event(utc_point_in_time, "dusk", PHASE_ASTRONOMICAL_TWILIGHT)
- self.next_midnight = self._check_event(
- utc_point_in_time, "solar_midnight", None
- )
+ self.next_midnight = self._check_event(utc_point_in_time, "midnight", None)
self.location.solar_depression = "civil"
# if the event was solar midday or midnight, phase will now
@@ -190,7 +190,7 @@ class Sun(Entity):
# even in the day at the poles, so we can't rely on it.
# Need to calculate phase if next is noon or midnight
if self.phase is None:
- elevation = self.location.solar_elevation(self._next_change)
+ elevation = self.location.solar_elevation(self._next_change, self.elevation)
if elevation >= 10:
self.phase = PHASE_DAY
elif elevation >= 0:
@@ -222,9 +222,11 @@ class Sun(Entity):
"""Calculate the position of the sun."""
# Grab current time in case system clock changed since last time we ran.
utc_point_in_time = dt_util.utcnow()
- self.solar_azimuth = round(self.location.solar_azimuth(utc_point_in_time), 2)
+ self.solar_azimuth = round(
+ self.location.solar_azimuth(utc_point_in_time, self.elevation), 2
+ )
self.solar_elevation = round(
- self.location.solar_elevation(utc_point_in_time), 2
+ self.location.solar_elevation(utc_point_in_time, self.elevation), 2
)
_LOGGER.debug(
diff --git a/homeassistant/helpers/sun.py b/homeassistant/helpers/sun.py
index b3a37d238f..f9e9b0160f 100644
--- a/homeassistant/helpers/sun.py
+++ b/homeassistant/helpers/sun.py
@@ -2,7 +2,7 @@
from __future__ import annotations
import datetime
-from typing import TYPE_CHECKING
+from typing import TYPE_CHECKING, Optional, Tuple, Union
from homeassistant.const import SUN_EVENT_SUNRISE, SUN_EVENT_SUNSET
from homeassistant.core import HomeAssistant, callback
@@ -14,27 +14,32 @@ if TYPE_CHECKING:
DATA_LOCATION_CACHE = "astral_location_cache"
+ELEVATION_AGNOSTIC_EVENTS = ("noon", "midnight")
+
@callback
@bind_hass
-def get_astral_location(hass: HomeAssistant) -> astral.Location:
+def get_astral_location(
+ hass: HomeAssistantType,
+) -> Tuple["astral.location.Location", "astral.Elevation"]:
"""Get an astral location for the current Home Assistant configuration."""
- from astral import Location # pylint: disable=import-outside-toplevel
+ from astral import LocationInfo # pylint: disable=import-outside-toplevel
+ from astral.location import Location # pylint: disable=import-outside-toplevel
+ timezone = str(hass.config.time_zone)
latitude = hass.config.latitude
longitude = hass.config.longitude
- timezone = str(hass.config.time_zone)
elevation = hass.config.elevation
- info = ("", "", latitude, longitude, timezone, elevation)
+ info = ("", "", timezone, latitude, longitude)
# Cache astral locations so they aren't recreated with the same args
if DATA_LOCATION_CACHE not in hass.data:
hass.data[DATA_LOCATION_CACHE] = {}
if info not in hass.data[DATA_LOCATION_CACHE]:
- hass.data[DATA_LOCATION_CACHE][info] = Location(info)
+ hass.data[DATA_LOCATION_CACHE][info] = Location(LocationInfo(*info))
- return hass.data[DATA_LOCATION_CACHE][info]
+ return hass.data[DATA_LOCATION_CACHE][info], elevation
@callback
@@ -46,26 +51,31 @@ def get_astral_event_next(
offset: datetime.timedelta | None = None,
) -> datetime.datetime:
"""Calculate the next specified solar event."""
- location = get_astral_location(hass)
- return get_location_astral_event_next(location, event, utc_point_in_time, offset)
+ location, elevation = get_astral_location(hass)
+ return get_location_astral_event_next(
+ location, elevation, event, utc_point_in_time, offset
+ )
@callback
def get_location_astral_event_next(
- location: astral.Location,
+ location: "astral.location.Location",
+ elevation: "astral.Elevation",
event: str,
utc_point_in_time: datetime.datetime | None = None,
offset: datetime.timedelta | None = None,
) -> datetime.datetime:
"""Calculate the next specified solar event."""
- from astral import AstralError # pylint: disable=import-outside-toplevel
-
if offset is None:
offset = datetime.timedelta()
if utc_point_in_time is None:
utc_point_in_time = dt_util.utcnow()
+ kwargs = {"local": False}
+ if event not in ELEVATION_AGNOSTIC_EVENTS:
+ kwargs["observer_elevation"] = elevation
+
mod = -1
while True:
try:
@@ -73,13 +83,13 @@ def get_location_astral_event_next(
getattr(location, event)(
dt_util.as_local(utc_point_in_time).date()
+ datetime.timedelta(days=mod),
- local=False,
+ **kwargs,
)
+ offset
)
if next_dt > utc_point_in_time:
return next_dt
- except AstralError:
+ except ValueError:
pass
mod += 1
@@ -92,9 +102,7 @@ def get_astral_event_date(
date: datetime.date | datetime.datetime | None = None,
) -> datetime.datetime | None:
"""Calculate the astral event time for the specified date."""
- from astral import AstralError # pylint: disable=import-outside-toplevel
-
- location = get_astral_location(hass)
+ location, elevation = get_astral_location(hass)
if date is None:
date = dt_util.now().date()
@@ -102,9 +110,13 @@ def get_astral_event_date(
if isinstance(date, datetime.datetime):
date = dt_util.as_local(date).date()
+ kwargs = {"local": False}
+ if event not in ELEVATION_AGNOSTIC_EVENTS:
+ kwargs["observer_elevation"] = elevation
+
try:
- return getattr(location, event)(date, local=False) # type: ignore
- except AstralError:
+ return getattr(location, event)(date, **kwargs) # type: ignore
+ except ValueError:
# Event never occurs for specified date.
return None
diff --git a/homeassistant/package_constraints.txt b/homeassistant/package_constraints.txt
index c5f0ccde05..1214c04db5 100644
--- a/homeassistant/package_constraints.txt
+++ b/homeassistant/package_constraints.txt
@@ -3,8 +3,8 @@ PyNaCl==1.3.0
aiodiscover==1.3.3
aiohttp==3.7.4.post0
aiohttp_cors==0.7.0
-astral==1.10.1
async-upnp-client==0.16.0
+astral==2.2
async_timeout==3.0.1
attrs==20.3.0
awesomeversion==21.2.3
diff --git a/requirements.txt b/requirements.txt
index 5f633eaeb6..a3facbe5ab 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -2,7 +2,7 @@
# Home Assistant Core
aiohttp==3.7.4.post0
-astral==1.10.1
+astral==2.2
async_timeout==3.0.1
attrs==20.3.0
awesomeversion==21.2.3
diff --git a/setup.py b/setup.py
index 56e5639148..f74a913cb8 100755
--- a/setup.py
+++ b/setup.py
@@ -33,7 +33,7 @@ PACKAGES = find_packages(exclude=["tests", "tests.*"])
REQUIRES = [
"aiohttp==3.7.4.post0",
- "astral==1.10.1",
+ "astral==2.2",
"async_timeout==3.0.1",
"attrs==20.3.0",
"awesomeversion==21.2.3",
--
2.31.1

View File

@@ -1,28 +0,0 @@
[Unit]
Description=Home assistant
After=network.target
[Service]
Restart=on-failure
User=hass
Group=hass
DynamicUser=true
LogsDirectory=hass
StateDirectory=hass
ExecStart=/usr/bin/hass \
--config /var/lib/hass/ \
--log-file /var/log/hass/home-assistant.log \
--log-rotate-days 1 \
--runner
RestartForceExitStatus=100
AmbientCapabilities=
CapabilityBoundingSet=
LockPersonality=true
ProtectControlGroups=true
ProtectKernelModules=true
ProtectKernelTunables=true
[Install]
WantedBy=multi-user.target

View File

@@ -1,26 +0,0 @@
# Maintainer: Giovanni Harting <539@idlegandalf.com>
pkgname=lm4flash
pkgver=0.1.3
pkgrel=2
pkgdesc="Firmware flashing tool for Stellaris Launchpad ICDI"
arch=('x86_64' 'i686')
url="https://github.com/utzig/lm4tools"
license=('GPL')
depends=('libusb')
source=("https://github.com/utzig/lm4tools/archive/v${pkgver}.zip")
sha256sums=('ec4eb6e254fb8d4eb78edfaf302a823e7a37a920a7b95b037956c4a511faa486')
build() {
cd "${srcdir}/lm4tools-${pkgver}"
make
}
package() {
cd "${srcdir}/lm4tools-${pkgver}"
install -Dm755 "lm4flash/lm4flash" "${pkgdir}/usr/bin/lm4flash"
install -Dm755 "lmicdiusb/lmicdi" "${pkgdir}/usr/bin/lmicdi"
}

20
longoverdue/PKGBUILD Normal file
View File

@@ -0,0 +1,20 @@
# Maintainer: Giovanni Harting <539@idlegandalf.com>
# Contributor: Dan Elkouby <streetwalrus@codewalr.us>
pkgname=longoverdue-anonfunc
pkgver=0.5.4
pkgrel=1
pkgdesc="System service update management made easy"
arch=('any')
url="https://github.com/an0nfunc/$pkgname"
license=('MIT')
depends=('python' 'python-click' 'lsof')
source=("https://github.com/an0nfunc/longoverdue/archive/v$pkgver.tar.gz")
b2sums=('c4ff90c7945426cb7c52b658ec07ebc8548fde6454d6b034fb5fdc6a48ff131fad6e40be4acf15b74af471429259b106b4db966750974ac3c74b0a03d099991a')
package() {
cd "$srcdir/longoverdue-$pkgver"
install -Dm 644 longoverdue.hook $pkgdir/usr/share/libalpm/hooks/longoverdue.hook
install -Dm 755 longoverdue.py $pkgdir/usr/bin/longoverdue
}

View File

@@ -1,53 +0,0 @@
From 2f0dd1816d556eef8c4b691330d39f13e1ed93f0 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Michel=20D=C3=A4nzer?= <michel.daenzer@amd.com>
Date: Wed, 3 Jul 2019 11:53:56 +0200
Subject: [PATCH] Revert "present/scmd: Check that the flip and screen pixmap
pitches match"
This reverts commit ef91da2757050652c724f6e674e8b1acf5d0cb31.
I thought this couldn't work under any circumstances, but I was wrong,
and drivers are already checking for cases that really cannot work.
Fixes issue #839.
---
present/present_scmd.c | 8 +++-----
1 file changed, 3 insertions(+), 5 deletions(-)
diff --git a/present/present_scmd.c b/present/present_scmd.c
index 7c2f80997..8417d0925 100644
--- a/present/present_scmd.c
+++ b/present/present_scmd.c
@@ -78,7 +78,7 @@ present_check_flip(RRCrtcPtr crtc,
PresentFlipReason *reason)
{
ScreenPtr screen = window->drawable.pScreen;
- PixmapPtr screen_pixmap, window_pixmap;
+ PixmapPtr window_pixmap;
WindowPtr root = screen->root;
present_screen_priv_ptr screen_priv = present_screen_priv(screen);
@@ -99,9 +99,8 @@ present_check_flip(RRCrtcPtr crtc,
return FALSE;
/* Make sure the window hasn't been redirected with Composite */
- screen_pixmap = screen->GetScreenPixmap(screen);
window_pixmap = screen->GetWindowPixmap(window);
- if (window_pixmap != screen_pixmap &&
+ if (window_pixmap != screen->GetScreenPixmap(screen) &&
window_pixmap != screen_priv->flip_pixmap &&
window_pixmap != present_flip_pending_pixmap(screen))
return FALSE;
@@ -127,8 +126,7 @@ present_check_flip(RRCrtcPtr crtc,
window->drawable.x != pixmap->screen_x || window->drawable.y != pixmap->screen_y ||
#endif
window->drawable.width != pixmap->drawable.width ||
- window->drawable.height != pixmap->drawable.height ||
- pixmap->devKind != screen_pixmap->devKind) {
+ window->drawable.height != pixmap->drawable.height) {
return FALSE;
}
--
2.23.0

View File

@@ -1,57 +0,0 @@
From 17584285d296acaa80f131ca0e8b75eff675962b Mon Sep 17 00:00:00 2001
From: fafryd <dz1125.bug.tracker@gmail.com>
Date: Sun, 20 May 2018 14:30:43 +0200
Subject: [PATCH] v2 FS#58644
---
hw/xfree86/common/meson.build | 13 +++++++++++++
hw/xfree86/meson.build | 12 +++++++-----
2 files changed, 20 insertions(+), 5 deletions(-)
diff --git a/hw/xfree86/common/meson.build b/hw/xfree86/common/meson.build
index 514999ff6..0eff6e488 100644
--- a/hw/xfree86/common/meson.build
+++ b/hw/xfree86/common/meson.build
@@ -1,3 +1,16 @@
+if get_option('suid_wrapper')
+ x_sh = configure_file(
+ input: '../Xorg.sh.in',
+ output: 'Xorg',
+ configuration: conf_data,
+ )
+ install_data(
+ x_sh,
+ install_mode: 'rwxr-xr-x',
+ install_dir: join_paths(get_option('prefix'), get_option('bindir')),
+ )
+endif
+
srcs_xorg_common = [
'xf86fbBus.c',
'xf86noBus.c',
diff --git a/hw/xfree86/meson.build b/hw/xfree86/meson.build
index cacf56d4c..d1295d404 100644
--- a/hw/xfree86/meson.build
+++ b/hw/xfree86/meson.build
@@ -145,11 +145,13 @@ if get_option('suid_wrapper')
install_dir: get_option('libexecdir'),
# install_mode: ['r-sr-xr-x', 0, 0],
)
- configure_file(
- input: 'Xorg.sh.in',
- output: 'Xorg',
- configuration: conf_data,
- install_dir: join_paths(get_option('prefix'), get_option('bindir')),
+ meson.add_install_script(
+ 'sh', '-c',
+ 'chmod u+s @0@@1@/@2@'.format(
+ '${DESTDIR}',
+ join_paths(get_option('prefix'), get_option('libexecdir')),
+ 'Xorg.wrap'
+ )
)
endif
--
2.17.0

View File

@@ -1,24 +0,0 @@
From 9ed4ae9cf207360000742c09007a32ad144b52db Mon Sep 17 00:00:00 2001
From: fafryd <dz1125.bug.tracker@gmail.com>
Date: Fri, 25 May 2018 20:17:35 +0200
Subject: [PATCH] fix libshadow
---
hw/xfree86/dixmods/meson.build | 1 +
1 file changed, 1 insertion(+)
diff --git a/hw/xfree86/dixmods/meson.build b/hw/xfree86/dixmods/meson.build
index 835d23215..6bd8029b6 100644
--- a/hw/xfree86/dixmods/meson.build
+++ b/hw/xfree86/dixmods/meson.build
@@ -38,6 +38,7 @@ shared_module(
install: true,
install_dir: module_dir,
+ install_rpath: '$ORIGIN/./',
)
if build_glx
--
2.17.0

View File

@@ -1,237 +0,0 @@
# Maintainer: AndyRTR <andyrtr@archlinux.org>
# Maintainer: Jan de Groot <jgc@archlinux.org>
pkgbase=xorg-server
pkgname=('xorg-server' 'xorg-server-xephyr' 'xorg-server-xdmx' 'xorg-server-xvfb' 'xorg-server-xnest'
'xorg-server-xwayland' 'xorg-server-common' 'xorg-server-devel')
pkgver=1.20.5
pkgrel=4.1
arch=('x86_64')
license=('custom')
groups=('xorg')
url="https://xorg.freedesktop.org"
makedepends=('xorgproto' 'pixman' 'libx11' 'mesa' 'mesa-libgl' 'xtrans'
'libxkbfile' 'libxfont2' 'libpciaccess' 'libxv'
'libxmu' 'libxrender' 'libxi' 'libxaw' 'libdmx' 'libxtst' 'libxres'
'xorg-xkbcomp' 'xorg-util-macros' 'xorg-font-util' 'libepoxy'
'xcb-util' 'xcb-util-image' 'xcb-util-renderutil' 'xcb-util-wm' 'xcb-util-keysyms'
'libxshmfence' 'libunwind' 'systemd' 'wayland-protocols' 'egl-wayland' 'meson') # 'git')
source=(https://xorg.freedesktop.org/releases/individual/xserver/${pkgbase}-${pkgver}.tar.bz2{,.sig}
xserver-autobind-hotplug.patch
0001-v2-FS-58644.patch
0002-fix-libshadow-2.patch
0001-Revert-present-scmd-Check-that-the-flip-and-screen-p.patch
glvnd.patch
xvfb-run # with updates from FC master
xvfb-run.1
https://gitlab.freedesktop.org/xorg/xserver/commit/{7f962c70,37a36a6b,8b67ec7c,56c0a71f,b4231d69}.diff
)
validpgpkeys=('7B27A3F1A6E18CD9588B4AE8310180050905E40C'
'C383B778255613DFDB409D91DB221A6900000011'
'DD38563A8A8224537D1F90E45B8A2D50A0ECD0D3'
'995ED5C8A6138EB0961F18474C09DD83CAAA50B2')
sha512sums=('625f0626b122cf95600abe382c3217348999357a0e2d2443092f1b67cff1c98d7ef09303884ceaeac181e0555dc56b0d4d44bda45cc464dac2d9a50c5b32d631'
'SKIP'
'd84f4d63a502b7af76ea49944d1b21e2030dfd250ac1e82878935cf631973310ac9ba1f0dfedf10980ec6c7431d61b7daa4b7bbaae9ee477b2c19812c1661a22'
'74e1aa0c101e42f0f25349d305641873b3a79ab3b9bb2d4ed68ba8e392b4db2701fcbc35826531ee2667d3ee55673e4b4fecc2a9f088141af29ceb400f72f363'
'0c7f7e43a2ba2372509f4a35e33a8a87a2e631c7e630c9c7c67ecaad00453b52c31d9dc26d1852ecd2fe1cb8c02cb716c1f39a4723473c38a0ef6e559bead271'
'd60662f4eefeb64a034563cbfc36167466e0f4b0357d996bdb3462de14b2936420414e3527defe72af781d9fe9757e7486a43f952d8b7740b08815bc5df7b28f'
'0cdb9972af7fb215f0f2a7677cf05f0a35b7227a2953cb68a59d9947a02f6f1c128a080cf3e28d6c6295fc24d673cb258e29d6a976b8c924f73a797e5188452a'
'55bbf520333f6e818b0125b37179a7039b69a0d3d2242b80a08da003d94cbf6c1fb912d880abcce318a85d7947e3eff8fbc4cdf57d7118572e8ebc56c4569af6'
'de5e2cb3c6825e6cf1f07ca0d52423e17f34d70ec7935e9dd24be5fb9883bf1e03b50ff584931bd3b41095c510ab2aa44d2573fd5feaebdcb59363b65607ff22'
'85cde8ca13453ec84de6a70a96847e395fed73f9dd646d7c4a44fda71650cc7a7bee1c18befb6a014d93aafe7f72a1f4dcb3f7971c7304dbf2d46a3cc7440fb8'
'50b8c8916484ae57ffdd0b4b8212370b77d9781f7cc56ccb76961799adb9871faff0744747318689c62553db468baa02425b26e214a7f5f05d76639eb31b2290'
'98bf35bf345cc73c5316e3a63a021d273f5a7eab52288e6e10648377f3f788f142c550aef75cea50f3db7d8443df337d70fa1e89dd3c3ab837530996e1c26389'
'7670f7c481ebf930acbe5777b8e7fdbd25bc95437916048f5aacd93d41cc39a79230e2f52b500009af7451a48392f82427885a0837a5047a358046b905dbb734'
'bd3730f710767f7216825446ce27ac6fdb49ab7d9a9b5aaf7531322812d45aacd32bcbb6ac4f38160dcf1cba742354aa8918635da79964df87955b1395862a98')
prepare() {
cd "${pkgbase}-${pkgver}"
# patch from Fedora, not yet merged
patch -Np1 -i ../xserver-autobind-hotplug.patch
# Fix rootless xorg - FS#58644
# https://bugs.freedesktop.org/show_bug.cgi?id=106588
patch -Np1 -i ../0001-v2-FS-58644.patch
# Fix libshadow.so: libfb.so => not found - FS#58731
# https://bugs.freedesktop.org/show_bug.cgi?id=106656
patch -Np1 -i ../0002-fix-libshadow-2.patch
# fix FS#62973 - merged upstream
patch -Np1 -i ../0001-Revert-present-scmd-Check-that-the-flip-and-screen-p.patch
# fix building with libglvnd - partially merged upstream - FS#64228
patch -Np1 -i ../glvnd.patch
# PRIME offloading patches, see http://download.nvidia.com/XFree86/Linux-x86_64/435.21/README/primerenderoffload.html
patch -Np1 -i ../7f962c70.diff
patch -Np1 -i ../37a36a6b.diff
patch -Np1 -i ../8b67ec7c.diff
patch -Np1 -i ../56c0a71f.diff
patch -Np1 -i ../b4231d69.diff
}
build() {
# Since pacman 5.0.2-2, hardened flags are now enabled in makepkg.conf
# With them, module fail to load with undefined symbol.
# See https://bugs.archlinux.org/task/55102 / https://bugs.archlinux.org/task/54845
export CFLAGS=${CFLAGS/-fno-plt}
export CXXFLAGS=${CXXFLAGS/-fno-plt}
export LDFLAGS=${LDFLAGS/,-z,now}
arch-meson ${pkgbase}-$pkgver build \
-D os_vendor="Arch Linux" \
-D ipv6=true \
-D dmx=true \
-D xvfb=true \
-D xnest=true \
-D xcsecurity=true \
-D xorg=true \
-D xephyr=true \
-D xwayland=true \
-D xwayland_eglstream=true \
-D glamor=true \
-D udev=true \
-D systemd_logind=true \
-D suid_wrapper=true \
-D xkb_dir=/usr/share/X11/xkb \
-D xkb_output_dir=/var/lib/xkb
# Print config
meson configure build
ninja -C build
# fake installation to be seperated into packages
DESTDIR="${srcdir}/fakeinstall" ninja -C build install
}
_install() {
local src f dir
for src; do
f="${src#fakeinstall/}"
dir="${pkgdir}/${f%/*}"
install -m755 -d "${dir}"
mv -v "${src}" "${dir}/"
done
}
package_xorg-server-common() {
pkgdesc="Xorg server common files"
depends=(xkeyboard-config xorg-xkbcomp xorg-setxkbmap)
_install fakeinstall/usr/lib/xorg/protocol.txt
_install fakeinstall/usr/share/man/man1/Xserver.1
install -m644 -Dt "${pkgdir}/var/lib/xkb/" "${pkgbase}-${pkgver}"/xkb/README.compiled
# license
install -m644 -Dt "${pkgdir}/usr/share/licenses/${pkgname}" "${pkgbase}-${pkgver}"/COPYING
}
package_xorg-server() {
pkgdesc="Xorg X server"
depends=(libepoxy libxfont2 pixman xorg-server-common libunwind
dbus libgl xf86-input-libinput nettle
libpciaccess libdrm libxshmfence) # FS#52949
# see xorg-server-*/hw/xfree86/common/xf86Module.h for ABI versions - we provide major numbers that drivers can depend on
# and /usr/lib/pkgconfig/xorg-server.pc in xorg-server-devel pkg
provides=('X-ABI-VIDEODRV_VERSION=24.0' 'X-ABI-XINPUT_VERSION=24.1' 'X-ABI-EXTENSION_VERSION=10.0' 'x-server')
conflicts=('nvidia-utils<=331.20' 'glamor-egl' 'xf86-video-modesetting')
replaces=('glamor-egl' 'xf86-video-modesetting')
install=xorg-server.install
_install fakeinstall/usr/bin/{Xorg,cvt,gtf}
ln -s /usr/bin/Xorg "${pkgdir}/usr/bin/X"
_install fakeinstall/usr/lib/Xorg{,.wrap}
_install fakeinstall/usr/lib/xorg/modules/*
_install fakeinstall/usr/share/X11/xorg.conf.d/10-quirks.conf
_install fakeinstall/usr/share/man/man1/{Xorg,Xorg.wrap,cvt,gtf}.1
_install fakeinstall/usr/share/man/man4/{exa,fbdevhw,modesetting}.4
_install fakeinstall/usr/share/man/man5/{Xwrapper.config,xorg.conf,xorg.conf.d}.5
# distro specific files must be installed in /usr/share/X11/xorg.conf.d
install -m755 -d "${pkgdir}/etc/X11/xorg.conf.d"
# license
install -m644 -Dt "${pkgdir}/usr/share/licenses/${pkgname}" "${pkgbase}-${pkgver}"/COPYING
}
package_xorg-server-xephyr() {
pkgdesc="A nested X server that runs as an X application"
depends=(libxfont2 libgl libepoxy libunwind systemd-libs libxv pixman xorg-server-common
xcb-util-image xcb-util-renderutil xcb-util-wm xcb-util-keysyms
nettle libtirpc)
_install fakeinstall/usr/bin/Xephyr
_install fakeinstall/usr/share/man/man1/Xephyr.1
# license
install -m644 -Dt "${pkgdir}/usr/share/licenses/${pkgname}" "${pkgbase}-${pkgver}"/COPYING
}
package_xorg-server-xvfb() {
pkgdesc="Virtual framebuffer X server"
depends=(libxfont2 libunwind pixman xorg-server-common xorg-xauth libgl nettle)
_install fakeinstall/usr/bin/Xvfb
_install fakeinstall/usr/share/man/man1/Xvfb.1
install -m755 "${srcdir}/xvfb-run" "${pkgdir}/usr/bin/"
install -m644 "${srcdir}/xvfb-run.1" "${pkgdir}/usr/share/man/man1/" # outda
# license
install -m644 -Dt "${pkgdir}/usr/share/licenses/${pkgname}" "${pkgbase}-${pkgver}"/COPYING
}
package_xorg-server-xnest() {
pkgdesc="A nested X server that runs as an X application"
depends=(libxfont2 libxext pixman xorg-server-common nettle libtirpc)
_install fakeinstall/usr/bin/Xnest
_install fakeinstall/usr/share/man/man1/Xnest.1
# license
install -m644 -Dt "${pkgdir}/usr/share/licenses/${pkgname}" "${pkgbase}-${pkgver}"/COPYING
}
package_xorg-server-xdmx() {
pkgdesc="Distributed Multihead X Server and utilities"
depends=(libxfont2 libxi libxaw libxrender libdmx libxfixes
pixman xorg-server-common nettle)
_install fakeinstall/usr/bin/{Xdmx,dmx*,vdltodmx,xdmxconfig}
_install fakeinstall/usr/share/man/man1/{Xdmx,dmxtodmx,vdltodmx,xdmxconfig}.1
# license
install -m644 -Dt "${pkgdir}/usr/share/licenses/${pkgname}" "${pkgbase}-${pkgver}"/COPYING
}
package_xorg-server-xwayland() {
pkgdesc="run X clients under wayland"
depends=(libxfont2 libepoxy libunwind systemd-libs libgl pixman xorg-server-common
nettle libtirpc)
_install fakeinstall/usr/bin/Xwayland
# license
install -m644 -Dt "${pkgdir}/usr/share/licenses/${pkgname}" "${pkgbase}-${pkgver}"/COPYING
}
package_xorg-server-devel() {
pkgdesc="Development files for the X.Org X server"
depends=('xorgproto' 'mesa' 'libpciaccess'
# not technically required but almost every Xorg pkg needs it to build
'xorg-util-macros')
_install fakeinstall/usr/include/xorg/*
_install fakeinstall/usr/lib/pkgconfig/xorg-server.pc
_install fakeinstall/usr/share/aclocal/xorg-server.m4
# license
install -m644 -Dt "${pkgdir}/usr/share/licenses/${pkgname}" "${pkgbase}-${pkgver}"/COPYING
# make sure there are no files left to install
find fakeinstall -depth -print0 | xargs -0 rmdir
}

View File

@@ -1,181 +0,0 @@
From e6ef2b12404dfec7f23592a3524d2a63d9d25802 Mon Sep 17 00:00:00 2001
From: Marvin Schmidt <marv@exherbo.org>
Date: Tue, 24 Sep 2019 09:58:43 +0200
Subject: [PATCH] build: glx: Lower gl version to work with libglvnd
When using mesa with libglvnd support, mesa will no longer install the
gl, glx, egl pkg-config files but instead let libglvnd provide them.
libglvnd maintainers decided to change the versioning as it was
mesa-specific previously. Now the libraries have versions of the API
they expose[1].
This causes problems when building the X server:
checking for glproto >= 1.4.17 gl >= 9.2.0... no
configure: error: Package requirements (glproto >= 1.4.17 gl >= 9.2.0) were not met:
Requested 'gl >= 9.2.0' but version of gl is 1.2
Lower the version requirement to 1.2 to allow building against libglvnd
provided libraries
[1] https://github.com/NVIDIA/libglvnd/commit/0dfaea2bcb7cdcc785f95e244223bd004a2d7fba
---
configure.ac | 4 ++--
glx/meson.build | 2 +-
2 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/configure.ac b/configure.ac
index 03c2e367c..969090b94 100644
--- a/configure.ac
+++ b/configure.ac
@@ -760,7 +760,7 @@ LIBDRI="dri >= 7.8.0"
LIBDRM="libdrm >= 2.4.89"
LIBEGL="egl"
LIBGBM="gbm >= 10.2.0"
-LIBGL="gl >= 7.1.0"
+LIBGL="gl >= 1.2"
LIBXEXT="xext >= 1.0.99.4"
LIBXFONT="xfont2 >= 2.0.0"
LIBXI="xi >= 1.2.99.1"
@@ -1115,7 +1115,7 @@ case "$DRI2,$HAVE_DRI2PROTO" in
yes,yes | auto,yes)
AC_DEFINE(DRI2, 1, [Build DRI2 extension])
DRI2=yes
- LIBGL="gl >= 9.2.0"
+ LIBGL="gl >= 1.2"
SDK_REQUIRED_MODULES="$SDK_REQUIRED_MODULES $DRI2PROTO"
;;
esac
diff --git a/glx/meson.build b/glx/meson.build
index 7f9e549f0..745814336 100644
--- a/glx/meson.build
+++ b/glx/meson.build
@@ -39,7 +39,7 @@ if build_glx
common_dep,
dl_dep,
dependency('glproto', version: '>= 1.4.17'),
- dependency('gl', version: '>= 9.2.0'),
+ dependency('gl', version: '>= 1.2'),
],
c_args: [
glx_align64,
--
2.23.0
From c7486613b0dc586f93f6ba293d9b55c69995b05c Mon Sep 17 00:00:00 2001
From: Adam Jackson <ajax@redhat.com>
Date: Wed, 9 Oct 2019 15:17:47 -0400
Subject: [PATCH] meson: Fix another reference to "gl" 9.2.0
Previous commit e6ef2b12 missed a spot.
---
glx/meson.build | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/glx/meson.build b/glx/meson.build
index 745814336..d7a2aa468 100644
--- a/glx/meson.build
+++ b/glx/meson.build
@@ -74,7 +74,7 @@ if build_glx
common_dep,
dl_dep,
dependency('glproto', version: '>= 1.4.17'),
- dependency('gl', version: '>= 9.2.0'),
+ dependency('gl', version: '>= 1.2.0'),
],
)
--
2.23.0
From 3340ddf37743fdf197dfc16a97107435ff53c6e4 Mon Sep 17 00:00:00 2001
From: Adam Jackson <ajax@redhat.com>
Date: Wed, 9 Oct 2019 16:03:17 -0400
Subject: [PATCH] meson: Apparently 1.2 is < 1.2.0
Siiiigh.
---
glx/meson.build | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/glx/meson.build b/glx/meson.build
index d7a2aa468..1140522f6 100644
--- a/glx/meson.build
+++ b/glx/meson.build
@@ -74,7 +74,7 @@ if build_glx
common_dep,
dl_dep,
dependency('glproto', version: '>= 1.4.17'),
- dependency('gl', version: '>= 1.2.0'),
+ dependency('gl', version: '>= 1.2'),
],
)
--
2.23.0
diff --git a/glamor/glamor_egl.h b/glamor/glamor_egl.h
index 2f7566b24..af1c707d2 100644
--- a/glamor/glamor_egl.h
+++ b/glamor/glamor_egl.h
@@ -27,7 +27,7 @@
#ifndef GLAMOR_EGL_H
#define GLAMOR_EGL_H
-#define MESA_EGL_NO_X11_HEADERS
+#define EGL_NO_X11
#include <epoxy/gl.h>
#include <epoxy/egl.h>
#include <glamor_egl_ext.h>
diff --git a/glamor/glamor_priv.h b/glamor/glamor_priv.h
index 7d9a7d4fb..bcdaf4040 100644
--- a/glamor/glamor_priv.h
+++ b/glamor/glamor_priv.h
@@ -39,7 +39,7 @@
#include <epoxy/gl.h>
#ifdef GLAMOR_HAS_GBM
-#define MESA_EGL_NO_X11_HEADERS
+#define EGL_NO_X11
#include <epoxy/egl.h>
#endif
diff --git a/hw/xwayland/xwayland-glamor-eglstream.c b/hw/xwayland/xwayland-glamor-eglstream.c
index c62c0d2ac..e665b963e 100644
--- a/hw/xwayland/xwayland-glamor-eglstream.c
+++ b/hw/xwayland/xwayland-glamor-eglstream.c
@@ -32,7 +32,7 @@
#include "wayland-eglstream-client-protocol.h"
#include "wayland-eglstream-controller-client-protocol.h"
-#define MESA_EGL_NO_X11_HEADERS
+#define EGL_NO_X11
#include <glamor_egl.h>
#include <glamor.h>
#include <glamor_transform.h>
diff --git a/hw/xwayland/xwayland-glamor-gbm.c b/hw/xwayland/xwayland-glamor-gbm.c
index a211e0915..e28b65078 100644
--- a/hw/xwayland/xwayland-glamor-gbm.c
+++ b/hw/xwayland/xwayland-glamor-gbm.c
@@ -35,7 +35,7 @@
#include <xf86drm.h>
#include <drm_fourcc.h>
-#define MESA_EGL_NO_X11_HEADERS
+#define EGL_NO_X11
#include <gbm.h>
#include <glamor_egl.h>
diff --git a/hw/xwayland/xwayland-glamor.c b/hw/xwayland/xwayland-glamor.c
index 7ea6def61..587ef5ed0 100644
--- a/hw/xwayland/xwayland-glamor.c
+++ b/hw/xwayland/xwayland-glamor.c
@@ -25,7 +25,7 @@
#include "xwayland.h"
-#define MESA_EGL_NO_X11_HEADERS
+#define EGL_NO_X11
#include <glamor_egl.h>
#include <glamor.h>

View File

@@ -1,18 +0,0 @@
post_upgrade() {
if (( $(vercmp $2 1.16.0-3) < 0 )); then
post_install
fi
}
post_install() {
cat <<MSG
>>> xorg-server has now the ability to run without root rights with
the help of systemd-logind. xserver will fail to run if not launched
from the same virtual terminal as was used to log in.
Without root rights, log files will be in ~/.local/share/xorg/ directory.
Old behavior can be restored through Xorg.wrap config file.
See Xorg.wrap man page (man xorg.wrap).
MSG
}

View File

@@ -1,293 +0,0 @@
From 471289fa1dc359555ceed6302f7d9605ab6be3ea Mon Sep 17 00:00:00 2001
From: Dave Airlie <airlied@redhat.com>
Date: Mon, 2 Apr 2018 16:49:02 -0400
Subject: [PATCH] autobind GPUs to the screen
This is a modified version of a patch we've been carry-ing in Fedora and
RHEL for years now. This patch automatically adds secondary GPUs to the
master as output sink / offload source making e.g. the use of
slave-outputs just work, with requiring the user to manually run
"xrandr --setprovideroutputsource" before he can hookup an external
monitor to his hybrid graphics laptop.
There is one problem with this patch, which is why it was not upstreamed
before. What to do when a secondary GPU gets detected really is a policy
decission (e.g. one may want to autobind PCI GPUs but not USB ones) and
as such should be under control of the Desktop Environment.
Unconditionally adding autobinding support to the xserver will result
in races between the DE dealing with the hotplug of a secondary GPU
and the server itself dealing with it.
However we've waited for years for any Desktop Environments to actually
start doing some sort of autoconfiguration of secondary GPUs and there
is still not a single DE dealing with this, so I believe that it is
time to upstream this now.
To avoid potential future problems if any DEs get support for doing
secondary GPU configuration themselves, the new autobind functionality
is made optional. Since no DEs currently support doing this themselves it
is enabled by default. When DEs grow support for doing this themselves
they can disable the servers autobinding through the servers cmdline or a
xorg.conf snippet.
Signed-off-by: Dave Airlie <airlied@gmail.com>
[hdegoede@redhat.com: Make configurable, fix with nvidia, submit upstream]
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
---
hw/xfree86/common/xf86Config.c | 19 +++++++++++++++++++
hw/xfree86/common/xf86Globals.c | 2 ++
hw/xfree86/common/xf86Init.c | 20 ++++++++++++++++++++
hw/xfree86/common/xf86Priv.h | 1 +
hw/xfree86/common/xf86Privstr.h | 1 +
hw/xfree86/common/xf86platformBus.c | 4 ++++
hw/xfree86/man/Xorg.man | 7 +++++++
hw/xfree86/man/xorg.conf.man | 6 ++++++
randr/randrstr.h | 3 +++
randr/rrprovider.c | 22 ++++++++++++++++++++++
10 files changed, 85 insertions(+)
diff --git a/hw/xfree86/common/xf86Config.c b/hw/xfree86/common/xf86Config.c
index 2c1d335..d7d7c2e 100644
--- a/hw/xfree86/common/xf86Config.c
+++ b/hw/xfree86/common/xf86Config.c
@@ -643,6 +643,7 @@ typedef enum {
FLAG_DRI2,
FLAG_USE_SIGIO,
FLAG_AUTO_ADD_GPU,
+ FLAG_AUTO_BIND_GPU,
FLAG_MAX_CLIENTS,
FLAG_IGLX,
FLAG_DEBUG,
@@ -699,6 +700,8 @@ static OptionInfoRec FlagOptions[] = {
{0}, FALSE},
{FLAG_AUTO_ADD_GPU, "AutoAddGPU", OPTV_BOOLEAN,
{0}, FALSE},
+ {FLAG_AUTO_BIND_GPU, "AutoBindGPU", OPTV_BOOLEAN,
+ {0}, FALSE},
{FLAG_MAX_CLIENTS, "MaxClients", OPTV_INTEGER,
{0}, FALSE },
{FLAG_IGLX, "IndirectGLX", OPTV_BOOLEAN,
@@ -779,6 +782,22 @@ configServerFlags(XF86ConfFlagsPtr flagsconf, XF86OptionPtr layoutopts)
}
xf86Msg(from, "%sutomatically adding GPU devices\n",
xf86Info.autoAddGPU ? "A" : "Not a");
+
+ if (xf86AutoBindGPUDisabled) {
+ xf86Info.autoBindGPU = FALSE;
+ from = X_CMDLINE;
+ }
+ else if (xf86IsOptionSet(FlagOptions, FLAG_AUTO_BIND_GPU)) {
+ xf86GetOptValBool(FlagOptions, FLAG_AUTO_BIND_GPU,
+ &xf86Info.autoBindGPU);
+ from = X_CONFIG;
+ }
+ else {
+ from = X_DEFAULT;
+ }
+ xf86Msg(from, "%sutomatically binding GPU devices\n",
+ xf86Info.autoBindGPU ? "A" : "Not a");
+
/*
* Set things up based on the config file information. Some of these
* settings may be overridden later when the command line options are
diff --git a/hw/xfree86/common/xf86Globals.c b/hw/xfree86/common/xf86Globals.c
index e890f05..7b27b4c 100644
--- a/hw/xfree86/common/xf86Globals.c
+++ b/hw/xfree86/common/xf86Globals.c
@@ -131,6 +131,7 @@ xf86InfoRec xf86Info = {
#else
.autoAddGPU = FALSE,
#endif
+ .autoBindGPU = TRUE,
};
const char *xf86ConfigFile = NULL;
@@ -191,6 +192,7 @@ Bool xf86FlipPixels = FALSE;
Gamma xf86Gamma = { 0.0, 0.0, 0.0 };
Bool xf86AllowMouseOpenFail = FALSE;
+Bool xf86AutoBindGPUDisabled = FALSE;
#ifdef XF86VIDMODE
Bool xf86VidModeDisabled = FALSE;
diff --git a/hw/xfree86/common/xf86Init.c b/hw/xfree86/common/xf86Init.c
index ea42ec9..ec255b6 100644
--- a/hw/xfree86/common/xf86Init.c
+++ b/hw/xfree86/common/xf86Init.c
@@ -76,6 +76,7 @@
#include "xf86DDC.h"
#include "xf86Xinput.h"
#include "xf86InPriv.h"
+#include "xf86Crtc.h"
#include "picturestr.h"
#include "randrstr.h"
#include "glxvndabi.h"
@@ -237,6 +238,19 @@ xf86PrivsElevated(void)
return PrivsElevated();
}
+static void
+xf86AutoConfigOutputDevices(void)
+{
+ int i;
+
+ if (!xf86Info.autoBindGPU)
+ return;
+
+ for (i = 0; i < xf86NumGPUScreens; i++)
+ RRProviderAutoConfigGpuScreen(xf86ScrnToScreen(xf86GPUScreens[i]),
+ xf86ScrnToScreen(xf86Screens[0]));
+}
+
static void
TrapSignals(void)
{
@@ -770,6 +784,8 @@ InitOutput(ScreenInfo * pScreenInfo, int argc, char **argv)
for (i = 0; i < xf86NumGPUScreens; i++)
AttachUnboundGPU(xf86Screens[0]->pScreen, xf86GPUScreens[i]->pScreen);
+ xf86AutoConfigOutputDevices();
+
xf86VGAarbiterWrapFunctions();
if (sigio_blocked)
input_unlock();
@@ -1278,6 +1294,10 @@ ddxProcessArgument(int argc, char **argv, int i)
xf86Info.iglxFrom = X_CMDLINE;
return 0;
}
+ if (!strcmp(argv[i], "-noautoBindGPU")) {
+ xf86AutoBindGPUDisabled = TRUE;
+ return 1;
+ }
/* OS-specific processing */
return xf86ProcessArgument(argc, argv, i);
diff --git a/hw/xfree86/common/xf86Priv.h b/hw/xfree86/common/xf86Priv.h
index 4fe2b5f..6566622 100644
--- a/hw/xfree86/common/xf86Priv.h
+++ b/hw/xfree86/common/xf86Priv.h
@@ -46,6 +46,7 @@
extern _X_EXPORT const char *xf86ConfigFile;
extern _X_EXPORT const char *xf86ConfigDir;
extern _X_EXPORT Bool xf86AllowMouseOpenFail;
+extern _X_EXPORT Bool xf86AutoBindGPUDisabled;
#ifdef XF86VIDMODE
extern _X_EXPORT Bool xf86VidModeDisabled;
diff --git a/hw/xfree86/common/xf86Privstr.h b/hw/xfree86/common/xf86Privstr.h
index 21c2e1f..6c71863 100644
--- a/hw/xfree86/common/xf86Privstr.h
+++ b/hw/xfree86/common/xf86Privstr.h
@@ -98,6 +98,7 @@ typedef struct {
Bool autoAddGPU;
const char *debug;
+ Bool autoBindGPU;
} xf86InfoRec, *xf86InfoPtr;
/* ISC's cc can't handle ~ of UL constants, so explicitly type cast them. */
diff --git a/hw/xfree86/common/xf86platformBus.c b/hw/xfree86/common/xf86platformBus.c
index cef47da..913a324 100644
--- a/hw/xfree86/common/xf86platformBus.c
+++ b/hw/xfree86/common/xf86platformBus.c
@@ -49,6 +49,7 @@
#include "Pci.h"
#include "xf86platformBus.h"
#include "xf86Config.h"
+#include "xf86Crtc.h"
#include "randrstr.h"
int platformSlotClaimed;
@@ -665,6 +666,9 @@ xf86platformAddDevice(int index)
}
/* attach unbound to 0 protocol screen */
AttachUnboundGPU(xf86Screens[0]->pScreen, xf86GPUScreens[i]->pScreen);
+ if (xf86Info.autoBindGPU)
+ RRProviderAutoConfigGpuScreen(xf86ScrnToScreen(xf86GPUScreens[i]),
+ xf86ScrnToScreen(xf86Screens[0]));
RRResourcesChanged(xf86Screens[0]->pScreen);
RRTellChanged(xf86Screens[0]->pScreen);
diff --git a/hw/xfree86/man/Xorg.man b/hw/xfree86/man/Xorg.man
index 13a9dc3..745f986 100644
--- a/hw/xfree86/man/Xorg.man
+++ b/hw/xfree86/man/Xorg.man
@@ -283,6 +283,13 @@ is a comma separated list of directories to search for
server modules. This option is only available when the server is run
as root (i.e, with real-uid 0).
.TP 8
+.B \-noautoBindGPU
+Disable automatically setting secondary GPUs up as output sinks and offload
+sources. This is equivalent to setting the
+.B AutoBindGPU
+xorg.conf(__filemansuffix__) file option. To
+.B false.
+.TP 8
.B \-nosilk
Disable Silken Mouse support.
.TP 8
diff --git a/hw/xfree86/man/xorg.conf.man b/hw/xfree86/man/xorg.conf.man
index 9589262..8d51e06 100644
--- a/hw/xfree86/man/xorg.conf.man
+++ b/hw/xfree86/man/xorg.conf.man
@@ -672,6 +672,12 @@ Enabled by default.
If this option is disabled, then no GPU devices will be added from the udev
backend. Enabled by default. (May need to be disabled to setup Xinerama).
.TP 7
+.BI "Option \*qAutoBindGPU\*q \*q" boolean \*q
+If enabled then secondary GPUs will be automatically set up as output-sinks and
+offload-sources. Making e.g. laptop outputs connected only to the secondary
+GPU directly available for use without needing to run
+"xrandr --setprovideroutputsource". Enabled by default.
+.TP 7
.BI "Option \*qLog\*q \*q" string \*q
This option controls whether the log is flushed and/or synced to disk after
each message.
diff --git a/randr/randrstr.h b/randr/randrstr.h
index f94174b..092d726 100644
--- a/randr/randrstr.h
+++ b/randr/randrstr.h
@@ -1039,6 +1039,9 @@ RRProviderLookup(XID id, RRProviderPtr *provider_p);
extern _X_EXPORT void
RRDeliverProviderEvent(ClientPtr client, WindowPtr pWin, RRProviderPtr provider);
+extern _X_EXPORT void
+RRProviderAutoConfigGpuScreen(ScreenPtr pScreen, ScreenPtr masterScreen);
+
/* rrproviderproperty.c */
extern _X_EXPORT void
diff --git a/randr/rrprovider.c b/randr/rrprovider.c
index e4bc2bf..e04c18f 100644
--- a/randr/rrprovider.c
+++ b/randr/rrprovider.c
@@ -485,3 +485,25 @@ RRDeliverProviderEvent(ClientPtr client, WindowPtr pWin, RRProviderPtr provider)
WriteEventsToClient(client, 1, (xEvent *) &pe);
}
+
+void
+RRProviderAutoConfigGpuScreen(ScreenPtr pScreen, ScreenPtr masterScreen)
+{
+ rrScrPrivPtr pScrPriv = rrGetScrPriv(pScreen);
+ rrScrPrivPtr masterPriv = rrGetScrPriv(masterScreen);
+ RRProviderPtr provider = pScrPriv->provider;
+ RRProviderPtr master_provider = masterPriv->provider;
+
+ if (!provider || !master_provider)
+ return;
+
+ if ((provider->capabilities & RR_Capability_SinkOutput) &&
+ (master_provider->capabilities & RR_Capability_SourceOutput)) {
+ pScrPriv->rrProviderSetOutputSource(pScreen, provider, master_provider);
+ RRInitPrimeSyncProps(pScreen);
+ }
+
+ if ((provider->capabilities & RR_Capability_SourceOffload) &&
+ (master_provider->capabilities & RR_Capability_SinkOffload))
+ pScrPriv->rrProviderSetOffloadSink(pScreen, provider, master_provider);
+}
--
2.16.2

View File

@@ -1,200 +0,0 @@
#!/bin/sh
# --- T2-COPYRIGHT-NOTE-BEGIN ---
# This copyright note is auto-generated by ./scripts/Create-CopyPatch.
#
# T2 SDE: package/.../xorg-server/xvfb-run.sh
# Copyright (C) 2005 The T2 SDE Project
# Copyright (C) XXXX - 2005 Debian
#
# More information can be found in the files COPYING and README.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; version 2 of the License. A copy of the
# GNU General Public License can be found in the file COPYING.
# --- T2-COPYRIGHT-NOTE-END ---
# $Id$
# from: http://necrotic.deadbeast.net/xsf/XFree86/trunk/debian/local/xvfb-run
# This script starts an instance of Xvfb, the "fake" X server, runs a command
# with that server available, and kills the X server when done. The return
# value of the command becomes the return value of this script.
#
# If anyone is using this to build a Debian package, make sure the package
# Build-Depends on xvfb, xbase-clients, and xfonts-base.
set -e
PROGNAME=xvfb-run
SERVERNUM=99
AUTHFILE=
ERRORFILE=/dev/null
STARTWAIT=3
XVFBARGS="-screen 0 640x480x24"
LISTENTCP="-nolisten tcp"
XAUTHPROTO=.
# Query the terminal to establish a default number of columns to use for
# displaying messages to the user. This is used only as a fallback in the event
# the COLUMNS variable is not set. ($COLUMNS can react to SIGWINCH while the
# script is running, and this cannot, only being calculated once.)
DEFCOLUMNS=$(stty size 2>/dev/null | awk '{print $2}') || true
if ! expr "$DEFCOLUMNS" : "[[:digit:]]\+$" >/dev/null 2>&1; then
DEFCOLUMNS=80
fi
# Display a message, wrapping lines at the terminal width.
message () {
echo "$PROGNAME: $*" | fmt -t -w ${COLUMNS:-$DEFCOLUMNS}
}
# Display an error message.
error () {
message "error: $*" >&2
}
# Display a usage message.
usage () {
if [ -n "$*" ]; then
message "usage error: $*"
fi
cat <<EOF
Usage: $PROGNAME [OPTION ...] COMMAND
Run COMMAND (usually an X client) in a virtual X server environment.
Options:
-a --auto-servernum try to get a free server number, starting at
--server-num (deprecated, use --auto-display
instead)
-d --auto-display use the X server to find a display number
automatically
-e FILE --error-file=FILE file used to store xauth errors and Xvfb
output (default: $ERRORFILE)
-f FILE --auth-file=FILE file used to store auth cookie
(default: ./.Xauthority)
-h --help display this usage message and exit
-n NUM --server-num=NUM server number to use (default: $SERVERNUM)
-l --listen-tcp enable TCP port listening in the X server
-p PROTO --xauth-protocol=PROTO X authority protocol name to use
(default: xauth command's default)
-s ARGS --server-args=ARGS arguments (other than server number and
"-nolisten tcp") to pass to the Xvfb server
(default: "$XVFBARGS")
-w DELAY --wait=DELAY delay in seconds to wait for Xvfb to start
before running COMMAND (default: $STARTWAIT)
EOF
}
# Find a free server number by looking at .X*-lock files in /tmp.
find_free_servernum() {
# Sadly, the "local" keyword is not POSIX. Leave the next line commented in
# the hope Debian Policy eventually changes to allow it in /bin/sh scripts
# anyway.
#local i
i=$SERVERNUM
while [ -f /tmp/.X$i-lock ]; do
i=$(($i + 1))
done
echo $i
}
# Parse the command line.
ARGS=$(getopt --options +ade:f:hn:lp:s:w: \
--long auto-servernum,error-file:auth-file:,help,server-num:,listen-tcp,xauth-protocol:,server-args:,wait: \
--name "$PROGNAME" -- "$@")
GETOPT_STATUS=$?
if [ $GETOPT_STATUS -ne 0 ]; then
error "internal error; getopt exited with status $GETOPT_STATUS"
exit 6
fi
eval set -- "$ARGS"
while :; do
case "$1" in
-a|--auto-servernum) SERVERNUM=$(find_free_servernum) ;;
-d|--auto-display) AUTO_DISPLAY=1 ;;
-e|--error-file) ERRORFILE="$2"; shift ;;
-f|--auth-file) AUTHFILE="$2"; shift ;;
-h|--help) SHOWHELP="yes" ;;
-n|--server-num) SERVERNUM="$2"; shift ;;
-l|--listen-tcp) LISTENTCP="" ;;
-p|--xauth-protocol) XAUTHPROTO="$2"; shift ;;
-s|--server-args) XVFBARGS="$2"; shift ;;
-w|--wait) STARTWAIT="$2"; shift ;;
--) shift; break ;;
*) error "internal error; getopt permitted \"$1\" unexpectedly"
exit 6
;;
esac
shift
done
if [ "$SHOWHELP" ]; then
usage
exit 0
fi
if [ -z "$*" ]; then
usage "need a command to run" >&2
exit 2
fi
if ! type xauth >/dev/null; then
error "xauth command not found"
exit 3
fi
# Set up the temp dir for the pid and X authorization file
XVFB_RUN_TMPDIR="$(mktemp --directory --tmpdir $PROGNAME.XXXXXX)"
# If the user did not specify an X authorization file to use, set up a temporary
# directory to house one.
if [ -z "$AUTHFILE" ]; then
AUTHFILE=$(mktemp -p "$XVFB_RUN_TMPDIR" Xauthority.XXXXXX)
fi
# Start Xvfb.
MCOOKIE=$(mcookie)
if [ -z "$AUTO_DISPLAY" ]; then
# Old style using a pre-computed SERVERNUM
XAUTHORITY=$AUTHFILE Xvfb ":$SERVERNUM" $XVFBARGS $LISTENTCP >>"$ERRORFILE" \
2>&1 &
XVFBPID=$!
else
# New style using Xvfb to provide a free display
PIDFILE=$(mktemp -p "$XVFB_RUN_TMPDIR" pid.XXXXXX)
SERVERNUM=$(XAUTHORITY=$AUTHFILE Xvfb -displayfd 1 $XVFBARGS $LISTENTCP \
2>"$ERRORFILE" & echo $! > $PIDFILE)
XVFBPID=$(cat $PIDFILE)
fi
sleep "$STARTWAIT"
XAUTHORITY=$AUTHFILE xauth source - << EOF >>"$ERRORFILE" 2>&1
add :$SERVERNUM $XAUTHPROTO $MCOOKIE
EOF
# Start the command and save its exit status.
set +e
DISPLAY=:$SERVERNUM XAUTHORITY=$AUTHFILE "$@" 2>&1
RETVAL=$?
set -e
# Kill Xvfb now that the command has exited.
kill $XVFBPID
# Clean up.
XAUTHORITY=$AUTHFILE xauth remove ":$SERVERNUM" >"$ERRORFILE" 2>&1
if [ -n "$XVFB_RUN_TMPDIR" ]; then
if ! rm -r "$XVFB_RUN_TMPDIR"; then
error "problem while cleaning up temporary directory"
exit 5
fi
fi
# Return the executed command's exit status.
exit $RETVAL
# vim:set ai et sts=4 sw=4 tw=80:

View File

@@ -1,282 +0,0 @@
.\" $Id: xvfb-run.1 2138 2005-01-17 23:40:27Z branden $
.\"
.\" Copyright 1998-2004 Branden Robinson <branden@debian.org>.
.\"
.\" This is free software; you may redistribute it and/or modify
.\" it under the terms of the GNU General Public License as
.\" published by the Free Software Foundation; either version 2,
.\" or (at your option) any later version.
.\"
.\" This is distributed in the hope that it will be useful, but
.\" WITHOUT ANY WARRANTY; without even the implied warranty of
.\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
.\" GNU General Public License for more details.
.\"
.\" You should have received a copy of the GNU General Public License with
.\" the Debian operating system, in /usr/share/common-licenses/GPL; if
.\" not, write to the Free Software Foundation, Inc., 59 Temple Place,
.\" Suite 330, Boston, MA 02111-1307 USA
.\"
.\" We need the URL macro from groff's www macro package, but also want
.\" things to work all right for people who don't have it. So we define
.\" our own URL macro and let the www macro package override it if it's
.\" available.
.de URL
\\$2 \(laURL: \\$1 \(ra\\$3
..
.if \n[.g] .mso www.tmac
.TH xvfb\-run 1 "2004\-11\-12" "Debian Project"
.SH NAME
xvfb\-run \- run specified X client or command in a virtual X server environment
.SH SYNOPSIS
.B xvfb\-run
[
.I options
]
.I command
.SH DESCRIPTION
.B xvfb\-run
is a wrapper for the
.BR Xvfb (1x)
command which simplifies the task of running commands (typically an X
client, or a script containing a list of clients to be run) within a virtual
X server environment.
.PP
.B xvfb\-run
sets up an X authority file (or uses an existing user\-specified one),
writes a cookie to it (see
.BR xauth (1x))
and then starts the
.B Xvfb
X server as a background process.
The process ID of
.B Xvfb
is stored for later use.
The specified
.I command
is then run using the X display corresponding to the
.B Xvfb
server
just started and the X authority file created earlier.
.PP
When the
.I command
exits, its status is saved, the
.B Xvfb
server is killed (using the process ID stored earlier), the X authority
cookie removed, and the authority file deleted (if the user did not specify
one to use).
.B xvfb\-run
then exits with the exit status of
.IR command .
.PP
.B xvfb\-run
requires the
.B xauth
command to function.
.SH OPTIONS
.TP
.B \-a\fR,\fB \-\-auto\-servernum
Try to get a free server number, starting at 99, or the argument to
.BR \-\-server\-num .
.TP
.BI \-e\ file \fR,\fB\ \-\-error\-file= file
Store output from
.B xauth
and
.B Xvfb
in
.IR file .
The default is
.IR /dev/null .
.TP
.BI \-f\ file \fR,\fB\ \-\-auth\-file= file
Store X authentication data in
.IR file .
By default, a temporary directory called
.IR xvfb\-run. PID
(where PID is the process ID of
.B xvfb\-run
itself) is created in the directory specified by the environment variable
.B TMPDIR
(or
.I /tmp
if that variable is null or unset), and the
.BR tempfile (1)
command is used to create a file in that temporary directory called
.IR Xauthority .
.TP
.B \-h\fR,\fB \-\-help
Display a usage message and exit.
.TP
.BI \-n\ servernumber \fR,\fB\ \-\-server\-num= servernumber
Use
.I servernumber
as the server number (but see the
.B \-a\fR,\fB \-\-auto\-servernum
option above).
The default is 99.
.TP
.B \-l\fR,\fB \-\-listen\-tcp
Enable TCP port listening in the X server.
For security reasons (to avoid denial\-of\-service attacks or exploits),
TCP port listening is disabled by default.
.TP
.BI \-p\ protocolname \fR,\fB\ \-\-xauth\-protocol= protocolname
Use
.I protocolname
as the X authority protocol to use.
The default is \(oq.\(cq, which
.B xauth
interprets as its own default protocol, which is MIT\-MAGIC\-COOKIE\-1.
.TP
.BI \-s\ arguments \fR,\fB\ \-\-server\-args= arguments
Pass
.I arguments
to the
.B Xvfb
server.
Be careful to quote any whitespace characters that may occur within
.I arguments
to prevent them from regarded as separators for
.BR xvfb\-run 's
own arguments.
Also, note that specification of \(oq\-nolisten tcp\(cq in
.I arguments
may override the function of
.BR xvfb\-run 's
own
.B \-l\fR,\fB \-\-listen\-tcp
option, and that specification of the server number (e.g., \(oq:1\(cq) may
be ignored because of the way the X server parses its argument list.
Use the
.B xvfb\-run
option
.BI \-n\ servernumber \fR,\fB\ \-\-server\-num= servernumber
to achieve the latter function.
The default is \(oq\-screen 0 640x480x8\(cq.
.TP
.BI \-w\ delay \fR,\fB\ \-\-wait= delay
Wait
.I delay
seconds after launching
.B Xvfb
before attempting to start the specified command.
The default is 3.
.SH ENVIRONMENT
.TP
.B COLUMNS
indicates the width of the terminal device in character cells.
This value is used for formatting diagnostic messages.
If not set, the terminal is queried using
.BR stty (1)
to determine its width.
If that fails, a value of \(oq80\(cq is assumed.
.TP
.B TMPDIR
specifies the directory in which to place
.BR xvfb\-run 's
temporary directory for storage of the X authority file; only used if the
.B \-f
or
.B \-\-auth\-file
options are not specified.
.SH "OUTPUT FILES"
.PP
Unless the
.B \-f
or
.B \-\-auth\-file
options are specified, a temporary
directory and file within it are created (and deleted) to store the X
authority cookies used by the
.B Xvfb
server and client(s) run under it.
See
.BR tempfile (1).
If \-f or \-\-auth\-file are used, then the specified X authority file is
only written to, not created or deleted (though
.B xauth
creates an authority file itself if told to use use that does not already
exist).
.PP
An error file with a user\-specified name is also created if the
.B \-e
or
.B \-\-error\-file
options are specifed; see above.
.SH "EXIT STATUS"
.B xvfb\-run
uses its exit status as well as output to standard error to communicate
diagnostics.
The exit status of \(oq1\(cq is not used, and should be interpreted as failure
of the specified command.
.TP
0
.B xvfb\-run
only uses this exit status if the
.B \-h\fR,\fB \-\-help
option is given.
In all other situations, this may be interpreted as success of the specified
command.
.TP
2
No command to run was specified.
.TP
3
The
.B xauth
command is not available.
.TP
4
The temporary directory that was going to be used already exists; since
.B xvfb\-run
produces a uniquely named directory, this may indicate an attempt by another
process on the system to exploit a temporary file race condition.
.TP
5
A problem was encountered while cleaning up the temporary directory.
.TP
6
A problem was encountered while using
.BR getopt (1)
to parse the command\-line arguments.
.SH EXAMPLES
.TP
.B xvfb\-run \-\-auto\-servernum \-\-server\-num=1 xlogo
runs the
.BR xlogo (1x)
demonstration client inside the
.B Xvfb
X server on the first available server number greater than or equal to 1.
.TP
.B xvfb\-run \-\-server\-args="\-screen 0 1024x768x24" ico \-faces
runs the
.BR ico (1x)
demonstration client (and passes it the
.B \-faces
argument) inside the
.B Xvfb
X server, configured with a root window of 1024 by 768 pixels and a color
depth of 24 bits.
.PP
Note that the demo X clients used in the above examples will not exit on
their own, so they will have to be killed before
.B xvfb\-run
will exit.
.SH BUGS
See
.URL "http://bugs.debian.org/xvfb" "the Debian Bug Tracking System" .
If you wish to report a bug in
.BR xvfb\-run ,
please use the
.BR reportbug (1)
command.
.SH AUTHOR
.B xfvb\-run
was written by Branden Robinson and Jeff Licquia with sponsorship from
Progeny Linux Systems.
.SH "SEE ALSO"
.BR Xvfb (1x),
.BR xauth (1x)
.\" vim:set et tw=80: