* [gentoo-commits] repo/proj/guru:dev commit in: sys-boot/osk-sdl/files/, sys-boot/osk-sdl/
@ 2021-06-25 19:04 Marco Scardovi
0 siblings, 0 replies; only message in thread
From: Marco Scardovi @ 2021-06-25 19:04 UTC (permalink / raw
To: gentoo-commits
commit: 489930e0c504439316323b1e20abe3244c9ad9b7
Author: Marco Scardovi <marco <AT> scardovi <DOT> com>
AuthorDate: Fri Jun 25 19:04:36 2021 +0000
Commit: Marco Scardovi <marco <AT> scardovi <DOT> com>
CommitDate: Fri Jun 25 19:04:36 2021 +0000
URL: https://gitweb.gentoo.org/repo/proj/guru.git/commit/?id=489930e0
sys-boot/osk-sdl: add new package
Package-Manager: Portage-3.0.20, Repoman-3.0.3
Signed-off-by: Marco Scardovi <marco <AT> scardovi.com>
sys-boot/osk-sdl/Manifest | 1 +
sys-boot/osk-sdl/files/module-setup.sh | 29 +++++++++++++++
sys-boot/osk-sdl/files/osk-sdl-pp.conf | 2 +
sys-boot/osk-sdl/files/osk-sdl-pp.path | 21 +++++++++++
sys-boot/osk-sdl/files/osk-sdl-pp.service | 21 +++++++++++
sys-boot/osk-sdl/files/osk-sdl.sh | 49 ++++++++++++++++++++++++
sys-boot/osk-sdl/metadata.xml | 8 ++++
sys-boot/osk-sdl/osk-sdl-0.64.ebuild | 62 +++++++++++++++++++++++++++++++
8 files changed, 193 insertions(+)
diff --git a/sys-boot/osk-sdl/Manifest b/sys-boot/osk-sdl/Manifest
new file mode 100644
index 000000000..907091802
--- /dev/null
+++ b/sys-boot/osk-sdl/Manifest
@@ -0,0 +1 @@
+DIST osk-sdl-0.64.tar.gz 37851 BLAKE2B dc297a0b1879f7b64bceb3032275b30f10072c50a2e2ddd985e94136ebf2308819fe71ca831fcc05d413c5e74f8ab955d920cc63bd90529e0c45fd3b6aae44db SHA512 0da985e1e8d0352f53f661dd4f7f6243a8f9b48279297f4ea3b120aa239c733411a83d324b58d152cafd9c2e7a791a36506afec6449e141c6445f0420bb9fd6b
diff --git a/sys-boot/osk-sdl/files/module-setup.sh b/sys-boot/osk-sdl/files/module-setup.sh
new file mode 100644
index 000000000..f27d34582
--- /dev/null
+++ b/sys-boot/osk-sdl/files/module-setup.sh
@@ -0,0 +1,29 @@
+#!/bin/bash
+
+# called by dracut
+check() {
+ return 0
+}
+
+# called by dracut
+depends() {
+ echo drm crypt
+ return 0
+}
+
+# called by dracut
+install() {
+ inst_multiple "/etc/osk.conf" \
+ "/usr/share/glvnd/egl_vendor.d/50_mesa.json" \
+ "/usr/share/fonts/dejavu/DejaVuSans.ttf" \
+ osk-sdl
+ inst_simple $moddir/osk-sdl.sh /usr/bin/osk-sdl.sh
+ inst_simple $moddir/osk-sdl-pp.service ${systemdsystemunitdir}/osk-sdl-pp.service
+ inst_simple $moddir/osk-sdl-pp.path ${systemdsystemunitdir}/osk-sdl-pp.path
+ systemctl -q --root "$initdir" add-wants sysinit.target osk-sdl-pp.path
+ # mesa cogl libglvnd
+ equery f mesa cogl libglvnd | grep ".so$" | while read -r so; do
+ inst ${so}
+ done
+
+}
diff --git a/sys-boot/osk-sdl/files/osk-sdl-pp.conf b/sys-boot/osk-sdl/files/osk-sdl-pp.conf
new file mode 100644
index 000000000..bc5ec8bf0
--- /dev/null
+++ b/sys-boot/osk-sdl/files/osk-sdl-pp.conf
@@ -0,0 +1,2 @@
+# dracut config, need osk-sdl for encrypted root, uncomment the following line to enable it in initramfs
+#add_dracutmodules+=" osk-sdl "
diff --git a/sys-boot/osk-sdl/files/osk-sdl-pp.path b/sys-boot/osk-sdl/files/osk-sdl-pp.path
new file mode 100644
index 000000000..5a386bdaf
--- /dev/null
+++ b/sys-boot/osk-sdl/files/osk-sdl-pp.path
@@ -0,0 +1,21 @@
+# SPDX-License-Identifier: LGPL-2.1-or-later
+#
+# This file is part of systemd.
+#
+# systemd is free software; you can redistribute it and/or modify it
+# under the terms of the GNU Lesser General Public License as published by
+# the Free Software Foundation; either version 2.1 of the License, or
+# (at your option) any later version.
+
+[Unit]
+Description=Run on screen keyboard to unlock root dev path watch
+DefaultDependencies=no
+Conflicts=shutdown.target emergency.service
+Before=systemd-ask-password-console.service systemd-ask-password-plymouth.service systemd-fsck-root.service paths.target shutdown.target
+
+[Path]
+PathExists=/dev/null
+# touch screen
+#PathExists=/dev/input/by-path/platform-1c2ac00.i2c-event
+# video
+PathExists=/dev/dri/renderD128/
diff --git a/sys-boot/osk-sdl/files/osk-sdl-pp.service b/sys-boot/osk-sdl/files/osk-sdl-pp.service
new file mode 100644
index 000000000..e5445b7cc
--- /dev/null
+++ b/sys-boot/osk-sdl/files/osk-sdl-pp.service
@@ -0,0 +1,21 @@
+# SPDX-License-Identifier: LGPL-2.1-or-later
+#
+# This file is part of systemd.
+#
+# systemd is free software; you can redistribute it and/or modify it
+# under the terms of the GNU Lesser General Public License as published by
+# the Free Software Foundation; either version 2.1 of the License, or
+# (at your option) any later version.
+
+[Unit]
+Description=Run on screen keyboard to unlock root
+DefaultDependencies=no
+Conflicts=shutdown.target
+After=systemd-modules-load.service systemd-udevd.service
+Before=systemd-ask-password-console.service systemd-ask-password-plymouth.service systemd-fsck-root.service
+ConditionPathExists=!/dev/mapper/root
+
+[Service]
+Type=oneshot
+ExecStart=/usr/bin/osk-sdl.sh
+RemainAfterExit=true
diff --git a/sys-boot/osk-sdl/files/osk-sdl.sh b/sys-boot/osk-sdl/files/osk-sdl.sh
new file mode 100755
index 000000000..36cba93e8
--- /dev/null
+++ b/sys-boot/osk-sdl/files/osk-sdl.sh
@@ -0,0 +1,49 @@
+#!/bin/bash
+# stolen from postmarket
+# https://gitlab.com/postmarketOS/pmaports/-/blob/master/main/postmarketos-mkinitfs/init_functions.sh
+find_crypt_partition() {
+ # The partition layout is one of the following:
+ # a) boot, root partitions on sdcard
+ # b) boot, root partition on the "system" partition (which has its
+ # own partition header! so we have partitions on partitions!)
+ #
+ # mount_subpartitions() must get executed before calling
+ # find_root_partition(), so partitions from b) also get found.
+
+ # Short circuit all autodetection logic if pmos_root= is supplied
+ # on the kernel cmdline
+ # shellcheck disable=SC2013
+ for x in $(cat /proc/cmdline); do
+ [ "$x" = "${x#cryptroot=}" ] && continue
+ DEVICE="${x#cryptroot=}"
+ done
+ echo "$DEVICE"
+}
+
+setup_directfb_tslib() {
+ # Set up directfb and tslib
+ # Note: linux_input module is disabled since it will try to take over
+ # the touchscreen device from tslib (e.g. on the N900)
+ export SDL_VIDEO_DRIVER="kmsdrm"
+ export SDL_RENDER_DRIVER="software"
+ #export DFBARGS="system=fbdev,no-cursor,disable-module=linux_input"
+ # shellcheck disable=SC2154
+ if [ -n "$deviceinfo_dev_touchscreen" ]; then
+ export TSLIB_TSDEVICE="$deviceinfo_dev_touchscreen"
+ fi
+}
+
+start_onscreen_keyboard() {
+ setup_directfb_tslib
+ sleep 1 # wait for dev settle
+ /usr/bin/osk-sdl -n root -d "$partition" -c /etc/osk.conf
+ unset DFBARGS
+ unset TSLIB_TSDEVICE
+}
+
+unlock_root_partition() {
+ partition="$(find_crypt_partition)"
+ start_onscreen_keyboard
+}
+
+unlock_root_partition
diff --git a/sys-boot/osk-sdl/metadata.xml b/sys-boot/osk-sdl/metadata.xml
new file mode 100644
index 000000000..144c8091c
--- /dev/null
+++ b/sys-boot/osk-sdl/metadata.xml
@@ -0,0 +1,8 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer type="person">
+ <email>marco@scardovi.com</email>
+ <name>Marco Scardovi</name>
+ </maintainer>
+</pkgmetadata>
diff --git a/sys-boot/osk-sdl/osk-sdl-0.64.ebuild b/sys-boot/osk-sdl/osk-sdl-0.64.ebuild
new file mode 100644
index 000000000..1f8daa085
--- /dev/null
+++ b/sys-boot/osk-sdl/osk-sdl-0.64.ebuild
@@ -0,0 +1,62 @@
+# Copyright 1999-2021 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+inherit meson
+
+COMMIT="69fb2d943a8664d5a587c967ac828f9ed5acd7ce"
+
+DESCRIPTION="Lightweight On-Screen-Keyboard based on SDL2"
+HOMEPAGE="https://gitlab.com/postmarketOS/osk-sdl"
+SRC_URI="https://gitlab.com/postmarketOS/osk-sdl/-/archive/${COMMIT}.tar.gz -> ${P}.tar.gz"
+
+LICENSE="GPL-3"
+SLOT="0"
+KEYWORDS="~amd64 ~arm64"
+IUSE="test"
+RESTRICT="!test? ( test )"
+
+RDEPEND="
+ app-portage/gentoolkit
+ media-libs/cogl
+ media-fonts/dejavu
+ media-libs/libglvnd
+ media-libs/libsdl2[kms,haptic]
+ media-libs/mesa
+ media-libs/sdl2-ttf
+ sys-fs/cryptsetup
+ sys-kernel/dracut
+"
+
+BDEPEND="
+ app-text/scdoc
+ test? ( x11-misc/xvfb-run )
+"
+
+S="${WORKDIR}/${PN}-${COMMIT}"
+
+src_prepare() {
+ default
+ sed -e s/ttf-dejavu/dejavu/ -i osk.conf || die "Failed to sed"
+}
+
+src_install() {
+ meson_src_install
+ insinto /etc
+ doins osk.conf
+ insinto /etc/dracut.conf.d/
+ doins "${FILESDIR}"/osk-sdl-pp.conf
+ insinto /usr/lib/dracut/modules.d/50osk-sdl
+ doins "${FILESDIR}"/osk-sdl-pp.path
+ doins "${FILESDIR}"/osk-sdl-pp.service
+ exeinto /usr/lib/dracut/modules.d/50osk-sdl
+ doexe "${FILESDIR}"/module-setup.sh
+ doexe "${FILESDIR}"/osk-sdl.sh
+}
+
+pkg_postinst() {
+ einfo "For more info on how to test osk-sdl, and how to report problems, see: ${HOMEPAGE}"
+ einfo "To use osk-sdl to unlock encrypted root at bootime, check osk-sdl-pp.conf in /etc/dracut.conf.d"
+ einfo "and add these boot option 'root=/dev/mapper/root cryptroot=/dev/path/to/encrypted_partition' "
+}
^ permalink raw reply related [flat|nested] only message in thread
only message in thread, other threads:[~2021-06-25 19:04 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2021-06-25 19:04 [gentoo-commits] repo/proj/guru:dev commit in: sys-boot/osk-sdl/files/, sys-boot/osk-sdl/ Marco Scardovi
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox