diff --git a/dev-libs/libphonenumber/Manifest b/dev-libs/libphonenumber/Manifest
new file mode 100644
index 0000000..e0ec256
--- /dev/null
+++ b/dev-libs/libphonenumber/Manifest
@@ -0,0 +1 @@
+DIST libphonenumber-8.12.28.tar.gz 10989980 BLAKE2B b4bf0593ea9d9756297767e5250cc932347cc60f0b9e59f5fe9e82d1394455bf205b9da20231f8a6697100283f67fc2303d7d444719fc9505a109774a1c7a38a SHA512 e1526ae9e9468a4879a148616e155f42259a795b90d4bab193857a6099e773febf4ef8cf521fad5c64b0f1d59d482fe71223fedfb1eac982ec90c90d792e43d6
diff --git a/dev-libs/libphonenumber/libphonenumber-8.12.28.ebuild b/dev-libs/libphonenumber/libphonenumber-8.12.28.ebuild
new file mode 100644
index 0000000..38c7b33
--- /dev/null
+++ b/dev-libs/libphonenumber/libphonenumber-8.12.28.ebuild
@@ -0,0 +1,33 @@
+# Copyright 2021 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+inherit cmake
+
+DESCRIPTION="library for parsing, formatting, and validating international phone numbers"
+HOMEPAGE="https://github.com/google/libphonenumber"
+SRC_URI="https://github.com/google/${PN}/archive/v${PV}.tar.gz -> ${P}.tar.gz"
+
+KEYWORDS="~amd64 ~arm ~arm64 ~x86"
+
+LICENSE="Apache-2.0"
+
+SLOT="0"
+IUSE=""
+
+DEPEND="dev-libs/icu
+ dev-libs/protobuf
+ dev-libs/boost
+"
+RDEPEND="${DEPEND}"
+
+BDEPEND="dev-cpp/gtest
+ virtual/jdk
+"
+
+RESTRICT+=" test" # bug 668872
+
+CMAKE_USE_DIR=${S}/cpp
+
+CMAKE_MAKEFILE_GENERATOR=emake
diff --git a/dev-libs/libphonenumber/metadata.xml b/dev-libs/libphonenumber/metadata.xml
new file mode 100644
index 0000000..e99e71b
--- /dev/null
+++ b/dev-libs/libphonenumber/metadata.xml
@@ -0,0 +1,14 @@
+
+
+
+
+ gjdijkman@gjdwebserver.nl
+ Gerben Jan Dijkman
+
+
+ Google's common Java, C++ and JavaScript library for parsing, formatting, and validating international phone numbers.
+
+
+ https://github.com/google/libphonenumber
+
+
diff --git a/dev-libs/properties-cpp/metadata.xml b/dev-libs/properties-cpp/metadata.xml
new file mode 100644
index 0000000..27a7b12
--- /dev/null
+++ b/dev-libs/properties-cpp/metadata.xml
@@ -0,0 +1,15 @@
+
+
+
+
+ gjdijkman@gjdwebserver.nl
+ Gerben Jan Dijkman
+
+
+ process-cpp is a simple header-only implementation of properties and signals. It is meant to be used for developing low-level system services.
+
+
+ https://github.com/lib-cpp/properties-cpp
+ https://github.com/lib-cpp/properties-cpp/issues
+
+
diff --git a/gnome-extra/authenticator/authenticator-4.0.3.ebuild b/gnome-extra/authenticator/authenticator-4.0.3.ebuild
index b2841fe..cf8c3b5 100644
--- a/gnome-extra/authenticator/authenticator-4.0.3.ebuild
+++ b/gnome-extra/authenticator/authenticator-4.0.3.ebuild
@@ -4,7 +4,7 @@
EAPI=7
VALA_USE_DEPEND="vapigen"
-inherit vala meson gnome2-utils git-r3 xdg
+inherit vala meson gnome2-utils xdg
DESCRIPTION="Simple application for generating Two-Factor Authentication Codes."
HOMEPAGE="https://gitlab.gnome.org/World/Authenticator"
diff --git a/gnome-extra/authenticator/metadata.xml b/gnome-extra/authenticator/metadata.xml
new file mode 100644
index 0000000..be6935e
--- /dev/null
+++ b/gnome-extra/authenticator/metadata.xml
@@ -0,0 +1,15 @@
+
+
+
+
+ gjdijkman@gjdwebserver.nl
+ Gerben Jan Dijkman
+
+
+ Generate Two-Factor Codes.
+
+
+ https://gitlab.gnome.org/World/Authenticator
+ https://gitlab.gnome.org/World/Authenticator/-/issues
+
+
diff --git a/gnome-extra/iio-sensor-proxy/Manifest b/gnome-extra/iio-sensor-proxy/Manifest
new file mode 100644
index 0000000..86adb40
--- /dev/null
+++ b/gnome-extra/iio-sensor-proxy/Manifest
@@ -0,0 +1 @@
+DIST iio-sensor-proxy-3.1.tar.gz 63372 BLAKE2B 2ecae89796e72184d19c00f88cd2f2cde18307d47ed17e4c836fdd02604847c165fcc56250ecf85fddba99c8ff72b1bb2209fa2a16a4fbc4dbe9d021761524a3 SHA512 cd5891db3929dc1487c3da7d64ba62d4106c09889ba73a100fe4b5cda15470e00ece71a61042a6bdd1f9896a78a8460acff5bcd8fc794401aa1013481cf47fb1
diff --git a/gnome-extra/iio-sensor-proxy/iio-sensor-proxy-3.1.ebuild b/gnome-extra/iio-sensor-proxy/iio-sensor-proxy-3.1.ebuild
new file mode 100644
index 0000000..d713e9d
--- /dev/null
+++ b/gnome-extra/iio-sensor-proxy/iio-sensor-proxy-3.1.ebuild
@@ -0,0 +1,47 @@
+# Copyright 1999-2021 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+inherit gnome2-utils meson systemd udev
+
+DESCRIPTION="IIO sensors to D-Bus proxy"
+HOMEPAGE="https://gitlab.freedesktop.org/hadess/iio-sensor-proxy/"
+SRC_URI="https://gitlab.freedesktop.org/hadess/iio-sensor-proxy/-/archive/${PV}/${P}.tar.gz"
+
+LICENSE="GPL-3"
+SLOT="0"
+KEYWORDS="~amd64 ~arm64"
+RESTRICT="test"
+IUSE="+systemd"
+
+RDEPEND="
+ dev-libs/glib:*
+ gnome-base/gnome-common
+ dev-libs/libgudev
+ systemd? (
+ !sys-apps/openrc
+ sys-apps/systemd
+ )
+ virtual/udev
+"
+
+DEPEND="
+ ${RDEPEND}
+ dev-util/gtk-doc-am
+ virtual/pkgconfig
+"
+
+src_install() {
+ meson_src_install
+}
+
+pkg_postinst() {
+ xdg_pkg_postinst
+ gnome2_schemas_update
+}
+
+pkg_postrm() {
+ xdg_pkg_postrm
+ gnome2_schemas_update
+}
diff --git a/gnome-extra/iio-sensor-proxy/metadata.xml b/gnome-extra/iio-sensor-proxy/metadata.xml
new file mode 100644
index 0000000..068b9fe
--- /dev/null
+++ b/gnome-extra/iio-sensor-proxy/metadata.xml
@@ -0,0 +1,15 @@
+
+
+
+
+ gjdijkman@gjdwebserver.nl
+ Gerben Jan Dijkman
+
+
+ Proxies sensor devices (accelerometers, light sensors, compass) to applications through D-Bus
+
+
+ https://gitlab.freedesktop.org/hadess/iio-sensor-proxy/
+ https://gitlab.freedesktop.org/hadess/iio-sensor-proxy/-/issues
+
+
diff --git a/gnome-extra/portfolio/Manifest b/gnome-extra/portfolio/Manifest
new file mode 100644
index 0000000..76dd69e
--- /dev/null
+++ b/gnome-extra/portfolio/Manifest
@@ -0,0 +1 @@
+DIST portfolio-0.9.10.tar.gz 406682 BLAKE2B 988619fc37d7215e923959a3155c2268e6d61c93d7b1e3ece9f3ce1ea1afa45930f44ad4cd85cba71c018c18939f7585a48ab84e908359efdf378fdb646dd02c SHA512 5182c88bc5d00f8f307cf6c23f636a1e4d9fdd79e662cd6a1cb90c80380b9108df0fe5f07f6dd79df40fa14a57dbeeafb324a83961e399d07b5c6bef0007558d
diff --git a/gnome-extra/portfolio/metadata.xml b/gnome-extra/portfolio/metadata.xml
new file mode 100644
index 0000000..ddd4468
--- /dev/null
+++ b/gnome-extra/portfolio/metadata.xml
@@ -0,0 +1,15 @@
+
+
+
+
+ gjdijkman@gjdwebserver.nl
+ Gerben Jan Dijkman
+
+
+ A minimalist file manager for those who want to use Linux mobile devices.
+
+
+ https://github.com/tchx84/Portfolio
+ https://github.com/tchx84/Portfolio/issues
+
+
diff --git a/gnome-extra/portfolio/portfolio-0.9.10.ebuild b/gnome-extra/portfolio/portfolio-0.9.10.ebuild
new file mode 100644
index 0000000..9ba4756
--- /dev/null
+++ b/gnome-extra/portfolio/portfolio-0.9.10.ebuild
@@ -0,0 +1,48 @@
+# Copyright 1999-2021 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+PYTHON_COMPAT=( python3_{8..10} )
+
+inherit gnome2-utils meson python-single-r1 xdg
+
+DESCRIPTION="A minimalist file manager for those who want to use Linux mobile devices"
+HOMEPAGE="https://github.com/tchx84/Portfolio"
+SRC_URI="https://github.com/tchx84/Portfolio/archive/v${PV}.tar.gz -> ${P}.tar.gz"
+
+LICENSE="GPL-3"
+SLOT="0"
+KEYWORDS="~amd64 ~arm64"
+RESTRICT="test"
+
+REQUIRED_USE="${PYTHON_REQUIRED_USE}"
+
+RDEPEND="
+ ${PYTHON_DEPS}
+ gui-libs/libhandy
+ x11-libs/gtk+
+"
+
+S="${WORKDIR}"/Portfolio-"${PV}"
+
+src_prepare() {
+ default
+ # shebang fixing craziness
+ sed -i -e 's|\@PYTHON\@|/usr/bin/python|' src/dev.tchx84.Portfolio.in
+}
+
+src_install() {
+ meson_src_install
+ python_optimize "${ED}"/usr/lib/
+}
+
+pkg_postinst() {
+ xdg_pkg_postinst
+ gnome2_schemas_update
+}
+
+pkg_postrm() {
+ xdg_pkg_postrm
+ gnome2_schemas_update
+}
diff --git a/net-im/cawbird/cawbird-1.4.1.ebuild b/net-im/cawbird/cawbird-1.4.1.ebuild
index fbd8b4e..a8b7d79 100644
--- a/net-im/cawbird/cawbird-1.4.1.ebuild
+++ b/net-im/cawbird/cawbird-1.4.1.ebuild
@@ -41,25 +41,21 @@ BDEPEND="
S="${WORKDIR}/$PN-${PV}"
src_configure() {
-
local emesonargs=(
-Dconsumer_key_base64=VmY5dG9yRFcyWk93MzJEZmhVdEk5Y3NMOA==
-Dconsumer_secret_base64=MThCRXIxbWRESDQ2Y0podzVtVU13SGUyVGlCRXhPb3BFRHhGYlB6ZkpybG5GdXZaSjI=
)
meson_src_configure
-
}
src_install() {
-
meson_src_install
-
}
pkg_postinst() {
- gnome2_schemas_update
+ xdg_icon_cache_update
}
pkg_postrm() {
- gnome2_schemas_update
+ xdg_icon_cache_update
}
diff --git a/net-im/cawbird/metadata.xml b/net-im/cawbird/metadata.xml
new file mode 100644
index 0000000..4f14ca4
--- /dev/null
+++ b/net-im/cawbird/metadata.xml
@@ -0,0 +1,17 @@
+
+
+
+
+ gjdijkman@gjdwebserver.nl
+ Gerben Jan Dijkman
+
+
+ Cawbird is a fork of the Corebird Twitter client from Baedert, which became unsupported after Twitter disabled the streaming API.
+
+ Cawbird works with the new APIs and includes a few fixes and modifications that have historically been patched in to IBBoard's custom Corebird build on his personal Open Build Service account.
+
+
+ https://github.com/IBBoard/cawbird
+ https://github.com/IBBoard/cawbird/issues
+
+
diff --git a/net-im/chatty/Manifest b/net-im/chatty/Manifest
new file mode 100644
index 0000000..fbffcc1
--- /dev/null
+++ b/net-im/chatty/Manifest
@@ -0,0 +1 @@
+DIST chatty-0.3.3.tar.gz 458463 BLAKE2B 4f07af0162742f8779bac2af89ea5288cb4dacf4f135d452620ad5e3362450fbd3861ec96b74f4a1dfac4d3065dfe9b5beb780453aec7f6f6746adad0b6f4a03 SHA512 d075faad5760f0892facad6637e8142f1a9c467d7f7a71e64ac7c6379dbff967ebb4da74a4327c97c0b4fc07e4f5d184e43470300f29a94779c648cb0f4686e8
diff --git a/net-im/chatty/chatty-0.3.1.ebuild b/net-im/chatty/chatty-0.3.1.ebuild
deleted file mode 100644
index 65e5344..0000000
--- a/net-im/chatty/chatty-0.3.1.ebuild
+++ /dev/null
@@ -1,44 +0,0 @@
-# Copyright 2020 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-
-inherit meson gnome2-utils xdg git-r3
-
-DESCRIPTION="Messaging client"
-HOMEPAGE="https://source.puri.sm/Librem5/chatty"
-EGIT_REPO_URI="https://source.puri.sm/Librem5/${PN}.git"
-
-LICENSE="GPL-3"
-SLOT="0"
-IUSE=""
-KEYWORDS="~amd64 ~arm64 ~arm ~x86"
-
-if [[ ${PV} != 9999 ]]; then
- EGIT_COMMIT="tags/v${PV}"
-else
- KEYWORDS=""
-fi
-
-
-DEPEND="gnome-extra/evolution-data-server[phonenumber]
- dev-libs/feedbackd
- gui-libs/libhandy
- x11-plugins/purple-mm-sms
- dev-libs/olm
- dev-libs/libphonenumber
- x11-libs/gtk+:3
- net-im/jabber-base
-"
-RDEPEND="${DEPEND}"
-BDEPEND="${DEPEND}"
-
-pkg_postinst() {
- xdg_pkg_postinst
- gnome2_schemas_update
-}
-
-pkg_postrm() {
- xdg_pkg_postrm
- gnome2_schemas_update
-}
diff --git a/net-im/chatty/chatty-0.3.3.ebuild b/net-im/chatty/chatty-0.3.3.ebuild
index 65e5344..8fb7fdb 100644
--- a/net-im/chatty/chatty-0.3.3.ebuild
+++ b/net-im/chatty/chatty-0.3.3.ebuild
@@ -3,24 +3,20 @@
EAPI=7
-inherit meson gnome2-utils xdg git-r3
+inherit meson gnome2-utils xdg
+
+COMMIT="501805ee4e013470c1c9eb17e930f9fe914e3671"
DESCRIPTION="Messaging client"
HOMEPAGE="https://source.puri.sm/Librem5/chatty"
-EGIT_REPO_URI="https://source.puri.sm/Librem5/${PN}.git"
+SRC_URI="https://source.puri.sm/Librem5/chatty/-/archive//${COMMIT}.tar.gz -> ${P}.tar.gz"
+
LICENSE="GPL-3"
SLOT="0"
IUSE=""
KEYWORDS="~amd64 ~arm64 ~arm ~x86"
-if [[ ${PV} != 9999 ]]; then
- EGIT_COMMIT="tags/v${PV}"
-else
- KEYWORDS=""
-fi
-
-
DEPEND="gnome-extra/evolution-data-server[phonenumber]
dev-libs/feedbackd
gui-libs/libhandy
diff --git a/net-im/chatty/metadata.xml b/net-im/chatty/metadata.xml
new file mode 100644
index 0000000..aaf92b5
--- /dev/null
+++ b/net-im/chatty/metadata.xml
@@ -0,0 +1,15 @@
+
+
+
+
+ gjdijkman@gjdwebserver.nl
+ Gerben Jan Dijkman
+
+
+ XMPP and SMS messaging via libpurple and Modemmanager.
+
+
+ https://source.puri.sm/Librem5/chatty
+ https://source.puri.sm/Librem5/chatty/-/issues
+
+
diff --git a/net-misc/eg25-manager/Manifest b/net-misc/eg25-manager/Manifest
new file mode 100644
index 0000000..bdacf58
--- /dev/null
+++ b/net-misc/eg25-manager/Manifest
@@ -0,0 +1 @@
+DIST eg25-manager-0.3.0.tar.gz 43914 BLAKE2B 10509e124e4801407d2082448a9bdeb34a08075b16409e2dad1918abd7a7f02e355c8da97c3a9f3b307347ad530ce0f2ce6a1d229c602fa01f85f578469f9e8e SHA512 2b0d706c893744529e035e8dc70b381362e39ddd2be705e346f0fd88e4907093e59b30800ad5ecb90638338b25bb51308349fb26de2c786197aeed8c1fa9c68a
diff --git a/net-misc/eg25-manager/eg25-manager-0.3.0.ebuild b/net-misc/eg25-manager/eg25-manager-0.3.0.ebuild
index ca9e66a..54b50b2 100644
--- a/net-misc/eg25-manager/eg25-manager-0.3.0.ebuild
+++ b/net-misc/eg25-manager/eg25-manager-0.3.0.ebuild
@@ -3,36 +3,25 @@
EAPI=7
-inherit meson git-r3 systemd
+inherit meson systemd
+
+COMMIT="73e16f76994b1d3c587796a35766cc668e30c0cd"
DESCRIPTION="Daemon for managing the Quectel EG25 modem"
HOMEPAGE="https://gitlab.com/mobian1/devices/eg25-manager"
-
+SRC_URI="https://gitlab.com/mobian1/devices/eg25-manager/-/archive/${COMMIT}.tar.gz -> ${P}.tar.gz"
KEYWORDS="~arm64"
-
-EGIT_REPO_URI="${HOMEPAGE}.git"
-
-if [[ ${PV} != 9999 ]]; then
- EGIT_COMMIT="73e16f76994b1d3c587796a35766cc668e30c0cd"
-else
- KEYWORDS=""
-fi
-
LICENSE="GPL-3"
SLOT="0"
-DEPEND="
- dev-libs/libgpiod
- virtual/libusb:1
- net-misc/modemmanager
- "
-RDEPEND="${DEPEND}"
+RDEPEND="
+ dev-libs/libgpiod
+ virtual/libusb:1
+ net-misc/modemmanager
+"
-PATCHES=(
- # ${FILESDIR}/11.patch
- # ${FILESDIR}/12.patch
-)
+S="${WORKDIR}/${PN}-${COMMIT}"
src_install() {
meson_src_install
diff --git a/net-misc/eg25-manager/files/0001-suspend-add-boot-timer.patch b/net-misc/eg25-manager/files/0001-suspend-add-boot-timer.patch
deleted file mode 100644
index 7f59592..0000000
--- a/net-misc/eg25-manager/files/0001-suspend-add-boot-timer.patch
+++ /dev/null
@@ -1,297 +0,0 @@
-From b8d269cf2f5aed4ca0e0bcb9702b65897fda18bc Mon Sep 17 00:00:00 2001
-From: Dylan Van Assche
-Date: Sat, 6 Feb 2021 07:52:32 +0100
-Subject: [PATCH] suspend: add boot timer
-
-The EG25 modem needs at least 2 minutes after indicating 'RDY'
-to be fully operational. If the modem is suspended before that,
-calls or texts may not be seen by the userspace.
-This mostly occurs when a full reboot or poweroff/poweron
-sequence of the phone is performed.
-
-:
----
- src/at.c | 4 +-
- src/manager.c | 5 +-
- src/manager.h | 4 +-
- src/suspend.c | 126 +++++++++++++++++++++++++++++++++++++++-----------
- src/suspend.h | 2 +-
- 5 files changed, 108 insertions(+), 33 deletions(-)
-
-diff --git a/src/at.c b/src/at.c
-index 39a857a..661098a 100644
---- a/src/at.c
-+++ b/src/at.c
-@@ -202,8 +202,10 @@ static gboolean modem_response(gint fd,
-
- g_message("Response: [%s]", response);
-
-- if (strcmp(response, "RDY") == 0)
-+ if (strcmp(response, "RDY") == 0) {
-+ suspend_inhibit(manager, TRUE, TRUE);
- manager->modem_state = EG25_STATE_STARTED;
-+ }
- else if (strstr(response, "ERROR"))
- retry_at_command(manager);
- else if (strstr(response, "OK"))
-diff --git a/src/manager.c b/src/manager.c
-index 6445e0f..912a095 100644
---- a/src/manager.c
-+++ b/src/manager.c
-@@ -178,7 +178,7 @@ void modem_suspend_post(struct EG25Manager *manager)
- {
- gpio_sequence_suspend(manager);
- g_message("suspend sequence is over, drop inhibitor");
-- suspend_inhibit(manager, FALSE);
-+ suspend_inhibit(manager, FALSE, FALSE);
- }
-
- void modem_resume_pre(struct EG25Manager *manager)
-@@ -205,7 +205,8 @@ int main(int argc, char *argv[])
-
- memset(&manager, 0, sizeof(manager));
- manager.at_fd = -1;
-- manager.suspend_inhibit_fd = -1;
-+ manager.delay_inhibit_fd = -1;
-+ manager.block_inhibit_fd = -1;
-
- opt_context = g_option_context_new ("- Power management for the Quectel EG25 modem");
- g_option_context_add_main_entries (opt_context, options, NULL);
-diff --git a/src/manager.h b/src/manager.h
-index f6351be..21b3b67 100644
---- a/src/manager.h
-+++ b/src/manager.h
-@@ -43,8 +43,10 @@ struct EG25Manager {
- MMModem *mm_modem;
-
- GDBusProxy *suspend_proxy;
-- int suspend_inhibit_fd;
-+ int delay_inhibit_fd;
-+ int block_inhibit_fd;
- guint suspend_timer;
-+ guint boot_timer;
-
- GUdevClient *udev;
-
-diff --git a/src/suspend.c b/src/suspend.c
-index 4b1a026..622cf00 100644
---- a/src/suspend.c
-+++ b/src/suspend.c
-@@ -13,9 +13,10 @@
-
- #include
-
--#define SD_NAME "org.freedesktop.login1"
--#define SD_PATH "/org/freedesktop/login1"
--#define SD_INTERFACE "org.freedesktop.login1.Manager"
-+#define SD_NAME "org.freedesktop.login1"
-+#define SD_PATH "/org/freedesktop/login1"
-+#define SD_INTERFACE "org.freedesktop.login1.Manager"
-+#define FULL_BOOT_DELAY 120
-
- static gboolean check_modem_resume(struct EG25Manager *manager)
- {
-@@ -26,18 +27,28 @@ static gboolean check_modem_resume(struct EG25Manager *manager)
- return FALSE;
- }
-
--static gboolean drop_inhibitor(struct EG25Manager *manager)
-+static gboolean drop_inhibitor(struct EG25Manager *manager, gboolean block)
- {
-- if (manager->suspend_inhibit_fd >= 0) {
-- g_message("dropping systemd sleep inhibitor");
-- close(manager->suspend_inhibit_fd);
-- manager->suspend_inhibit_fd = -1;
-- return TRUE;
-+ if (block) {
-+ if (manager->block_inhibit_fd >= 0) {
-+ g_message("dropping systemd sleep block inhibitor");
-+ close(manager->block_inhibit_fd);
-+ manager->block_inhibit_fd = -1;
-+ return TRUE;
-+ }
-+ }
-+ else {
-+ if (manager->delay_inhibit_fd >= 0) {
-+ g_message("dropping systemd sleep delay inhibitor");
-+ close(manager->delay_inhibit_fd);
-+ manager->delay_inhibit_fd = -1;
-+ return TRUE;
-+ }
- }
- return FALSE;
- }
-
--static void inhibit_done(GObject *source,
-+static void inhibit_done_delay(GObject *source,
- GAsyncResult *result,
- gpointer user_data)
- {
-@@ -54,27 +65,81 @@ static void inhibit_done(GObject *source,
- if (!fd_list || g_unix_fd_list_get_length(fd_list) != 1)
- g_warning("didn't get a single fd back");
-
-- manager->suspend_inhibit_fd = g_unix_fd_list_get(fd_list, 0, NULL);
-+ manager->delay_inhibit_fd = g_unix_fd_list_get(fd_list, 0, NULL);
-
-- g_message("inhibitor fd is %d", manager->suspend_inhibit_fd);
-+ g_message("inhibitor sleep fd is %d", manager->delay_inhibit_fd);
- g_object_unref(fd_list);
- g_variant_unref(res);
- }
- }
-
--static void take_inhibitor(struct EG25Manager *manager)
-+static void inhibit_done_block(GObject *source,
-+ GAsyncResult *result,
-+ gpointer user_data)
-+{
-+ GDBusProxy *suspend_proxy = G_DBUS_PROXY(source);
-+ struct EG25Manager *manager = user_data;
-+ g_autoptr (GError) error = NULL;
-+ GVariant *res;
-+ GUnixFDList *fd_list;
-+
-+ res = g_dbus_proxy_call_with_unix_fd_list_finish(suspend_proxy, &fd_list, result, &error);
-+ if (!res) {
-+ g_warning("inhibit failed: %s", error->message);
-+ } else {
-+ if (!fd_list || g_unix_fd_list_get_length(fd_list) != 1)
-+ g_warning("didn't get a single fd back");
-+
-+ manager->block_inhibit_fd = g_unix_fd_list_get(fd_list, 0, NULL);
-+
-+ g_message("inhibitor block fd is %d", manager->block_inhibit_fd);
-+ g_object_unref(fd_list);
-+ g_variant_unref(res);
-+ }
-+}
-+
-+/*
-+ * After the EG25 modem sends 'RDY', it takes up to 2 minutes before all
-+ * capabilities are operational. If the modem is suspended before that,
-+ * calls and texts may be not recognized properly.
-+ */
-+static gboolean modem_fully_booted(struct EG25Manager *manager)
-+{
-+ g_message("Modem is up for %d seconds and fully ready", FULL_BOOT_DELAY);
-+ manager->boot_timer = 0;
-+ drop_inhibitor(manager, TRUE);
-+
-+ return FALSE;
-+}
-+
-+static void take_inhibitor(struct EG25Manager *manager, gboolean block)
- {
- GVariant *variant_arg;
-
-- if(manager->suspend_inhibit_fd != -1)
-- drop_inhibitor(manager);
-+ if (block) {
-+ if(manager->block_inhibit_fd != -1)
-+ drop_inhibitor(manager, TRUE);
-
-- variant_arg = g_variant_new ("(ssss)", "sleep", "eg25manager",
-- "eg25manager needs to prepare modem for sleep", "delay");
-+ variant_arg = g_variant_new ("(ssss)", "sleep", "eg25manager",
-+ "eg25manager needs to wait for modem to be fully booted", "block");
-
-- g_message("taking systemd sleep inhibitor");
-- g_dbus_proxy_call_with_unix_fd_list(manager->suspend_proxy, "Inhibit", variant_arg,
-- 0, G_MAXINT, NULL, NULL, inhibit_done, manager);
-+ g_message("taking systemd sleep block inhibitor");
-+ g_dbus_proxy_call_with_unix_fd_list(manager->suspend_proxy, "Inhibit", variant_arg,
-+ 0, G_MAXINT, NULL, NULL, inhibit_done_block, manager);
-+ g_message("scheduling block inhibitor release");
-+ manager->boot_timer = g_timeout_add_seconds(FULL_BOOT_DELAY, G_SOURCE_FUNC(modem_fully_booted), manager);
-+ }
-+ else {
-+ if(manager->delay_inhibit_fd != -1)
-+ drop_inhibitor(manager, FALSE);
-+
-+ variant_arg = g_variant_new ("(ssss)", "sleep", "eg25manager",
-+ "eg25manager needs to prepare modem for sleep", "delay");
-+
-+ g_message("taking systemd sleep delay inhibitor");
-+ g_dbus_proxy_call_with_unix_fd_list(manager->suspend_proxy, "Inhibit", variant_arg,
-+ 0, G_MAXINT, NULL, NULL, inhibit_done_delay, manager);
-+ }
- }
-
- static void signal_cb(GDBusProxy *proxy,
-@@ -97,7 +162,7 @@ static void signal_cb(GDBusProxy *proxy,
- modem_suspend_pre(manager);
- } else {
- g_message("system is resuming");
-- take_inhibitor(manager);
-+ take_inhibitor(manager, FALSE);
- modem_resume_pre(manager);
- if (manager->mm_modem) {
- /*
-@@ -126,10 +191,10 @@ static void name_owner_cb(GObject *object,
-
- owner = g_dbus_proxy_get_name_owner(proxy);
- if (owner) {
-- take_inhibitor(manager);
-+ take_inhibitor(manager, FALSE);
- g_free(owner);
- } else {
-- drop_inhibitor(manager);
-+ drop_inhibitor(manager, FALSE);
- }
- }
-
-@@ -151,7 +216,7 @@ static void on_proxy_acquired(GObject *object,
-
- owner = g_dbus_proxy_get_name_owner(manager->suspend_proxy);
- if (owner) {
-- take_inhibitor(manager);
-+ take_inhibitor(manager, FALSE);
- g_free(owner);
- }
- }
-@@ -167,21 +232,26 @@ void suspend_init(struct EG25Manager *manager)
-
- void suspend_destroy(struct EG25Manager *manager)
- {
-- drop_inhibitor(manager);
-+ drop_inhibitor(manager, FALSE);
-+ drop_inhibitor(manager, TRUE);
- if (manager->suspend_timer) {
- g_source_remove(manager->suspend_timer);
- manager->suspend_timer = 0;
- }
-+ if (manager->boot_timer) {
-+ g_source_remove(manager->boot_timer);
-+ manager->boot_timer = 0;
-+ }
- if (manager->suspend_proxy) {
- g_object_unref(manager->suspend_proxy);
- manager->suspend_proxy = NULL;
- }
- }
-
--void suspend_inhibit(struct EG25Manager *manager, gboolean inhibit)
-+void suspend_inhibit(struct EG25Manager *manager, gboolean inhibit, gboolean block)
- {
- if (inhibit)
-- take_inhibitor(manager);
-+ take_inhibitor(manager, block);
- else
-- drop_inhibitor(manager);
-+ drop_inhibitor(manager, block);
- }
-diff --git a/src/suspend.h b/src/suspend.h
-index 39832aa..e82eeff 100644
---- a/src/suspend.h
-+++ b/src/suspend.h
-@@ -11,4 +11,4 @@
- void suspend_init (struct EG25Manager *data);
- void suspend_destroy (struct EG25Manager *data);
-
--void suspend_inhibit (struct EG25Manager *data, gboolean inhibit);
-+void suspend_inhibit (struct EG25Manager *data, gboolean inhibit, gboolean block);
---
-GitLab
-
-
diff --git a/net-misc/eg25-manager/files/10.patch b/net-misc/eg25-manager/files/10.patch
deleted file mode 100644
index ea5925b..0000000
--- a/net-misc/eg25-manager/files/10.patch
+++ /dev/null
@@ -1,57 +0,0 @@
-From 04eed2496d2a02bb23b4eae91be0264417fb28c6 Mon Sep 17 00:00:00 2001
-From: Biktor
-Date: Wed, 24 Feb 2021 12:32:46 +0100
-Subject: [PATCH] Set URC config to 'all' instead of 'usbat' dquote> When using
- a custom kernel, if this setting is set to 'usbat' only, no RING urc is
- reported on any interface. Changing QURCCFG to 'all' makes the modem report
- RINGs on all supported interfaces, making receiving calls possible when using
- a custom firmware
-
----
- data/pine64,pinephone-1.0.toml | 2 +-
- data/pine64,pinephone-1.1.toml | 2 +-
- data/pine64,pinephone-1.2.toml | 2 +-
- 3 files changed, 3 insertions(+), 3 deletions(-)
-
-diff --git a/data/pine64,pinephone-1.0.toml b/data/pine64,pinephone-1.0.toml
-index c0e9192..7287298 100644
---- a/data/pine64,pinephone-1.0.toml
-+++ b/data/pine64,pinephone-1.0.toml
-@@ -39,7 +39,7 @@ configure = [
- { cmd = "QCFG", subcmd = "urc/ri/smsincoming", expect = "\"pulse\",2000" },
- { cmd = "QCFG", subcmd = "urc/ri/other", expect = "\"off\",1" },
- { cmd = "QCFG", subcmd = "urc/delay", expect = "1" },
-- { cmd = "QURCCFG", subcmd = "urcport", expect = "\"usbat\"" },
-+ { cmd = "QURCCFG", subcmd = "urcport", expect = "\"all\"" },
- { cmd = "QGPS", value = "1" },
- { cmd = "QSCLK", value = "1" },
- { cmd = "QCFG", subcmd = "urc/cache", value = "0" }
-diff --git a/data/pine64,pinephone-1.1.toml b/data/pine64,pinephone-1.1.toml
-index c0e9192..7287298 100644
---- a/data/pine64,pinephone-1.1.toml
-+++ b/data/pine64,pinephone-1.1.toml
-@@ -39,7 +39,7 @@ configure = [
- { cmd = "QCFG", subcmd = "urc/ri/smsincoming", expect = "\"pulse\",2000" },
- { cmd = "QCFG", subcmd = "urc/ri/other", expect = "\"off\",1" },
- { cmd = "QCFG", subcmd = "urc/delay", expect = "1" },
-- { cmd = "QURCCFG", subcmd = "urcport", expect = "\"usbat\"" },
-+ { cmd = "QURCCFG", subcmd = "urcport", expect = "\"all\"" },
- { cmd = "QGPS", value = "1" },
- { cmd = "QSCLK", value = "1" },
- { cmd = "QCFG", subcmd = "urc/cache", value = "0" }
-diff --git a/data/pine64,pinephone-1.2.toml b/data/pine64,pinephone-1.2.toml
-index 566ac80..2effb30 100644
---- a/data/pine64,pinephone-1.2.toml
-+++ b/data/pine64,pinephone-1.2.toml
-@@ -32,7 +32,7 @@ configure = [
- { cmd = "QCFG", subcmd = "risignaltype", expect = "\"physical\"" },
- { cmd = "QCFG", subcmd = "ims", expect = "1" },
- { cmd = "QCFG", subcmd = "apready", expect = "1,0,500" },
-- { cmd = "QURCCFG", subcmd = "urcport", expect = "\"usbat\"" },
-+ { cmd = "QURCCFG", subcmd = "urcport", expect = "\"all\"" },
- { cmd = "QGPS", value = "1" },
- { cmd = "QSCLK", value = "1" },
- { cmd = "QCFG", subcmd = "urc/cache", value = "0" }
---
-GitLab
-
diff --git a/net-misc/eg25-manager/files/11.patch b/net-misc/eg25-manager/files/11.patch
deleted file mode 100644
index 21cf06d..0000000
--- a/net-misc/eg25-manager/files/11.patch
+++ /dev/null
@@ -1,49 +0,0 @@
-From d40bb283101fd9cf702e4944865aebef52c34185 Mon Sep 17 00:00:00 2001
-From: Djhg2000
-Date: Thu, 4 Mar 2021 20:08:12 +0100
-Subject: [PATCH] Add a 60ms delay before PWRKEY sequence
-
-This brings the power on sequence in line with the EG25-G Hardware Design
-datasheet, which states we need to wait at least 30 ms after VBAT becomes stable
-before pulling PWRKEY low (first action of the power on sequene).
-
-After this change the sequence becomes as follows:
-- Set RESET_N high
-- Wait 60 ms (double 30 ms)
-- Execute PWRKEY sequence
-
-60 ms was choosen because we don't know when VBAT becomes stable, but it should
-be much less than an additional 30 ms. Empirical evidence suggests PinePhone
-units with a healthy battery do not see serious side effects from not doing
-this, while the modem will fail to boot and/or throw random errors on boot with
-a worn out battery.
----
- src/manager.c | 5 +++++
- 1 file changed, 5 insertions(+)
-
-diff --git a/src/manager.c b/src/manager.c
-index aaa3905..a992572 100644
---- a/src/manager.c
-+++ b/src/manager.c
-@@ -27,6 +27,9 @@
- #define EG25_DATADIR "/usr/share/eg25-manager"
- #endif
-
-+// Delay between setting GPIO and PWRKEY sequence (60ms)
-+#define MODEM_POWERON_DELAY 60000
-+
- static gboolean quit_app(struct EG25Manager *manager)
- {
- int i;
-@@ -86,6 +89,8 @@ static gboolean modem_start(struct EG25Manager *manager)
-
- if (should_boot) {
- g_message("Starting modem...");
-+ // Modem might crash on boot (especially with worn battery) if we don't delay here
-+ usleep(MODEM_POWERON_DELAY);
- gpio_sequence_poweron(manager);
- manager->modem_state = EG25_STATE_POWERED;
- } else {
---
-GitLab
-
diff --git a/net-misc/eg25-manager/files/12.patch b/net-misc/eg25-manager/files/12.patch
deleted file mode 100644
index e4fbd43..0000000
--- a/net-misc/eg25-manager/files/12.patch
+++ /dev/null
@@ -1,65 +0,0 @@
-From 84a0ae603df95311a5d5cae9ca04b69fd6784827 Mon Sep 17 00:00:00 2001
-From: Bhushan Shah
-Date: Fri, 26 Mar 2021 13:56:37 +0530
-Subject: [PATCH] udev: use the udev rules directly to set attr
-
-We don't need complicated script for this, we can just set required
-attributes using udev rules.
----
- udev/80-modem-eg25.rules | 6 +++++-
- udev/eg25-configure-usb | 21 ---------------------
- udev/meson.build | 1 -
- 3 files changed, 5 insertions(+), 23 deletions(-)
- delete mode 100755 udev/eg25-configure-usb
-
-diff --git a/udev/80-modem-eg25.rules b/udev/80-modem-eg25.rules
-index 0ea9e6f..fc3b78f 100644
---- a/udev/80-modem-eg25.rules
-+++ b/udev/80-modem-eg25.rules
-@@ -1 +1,5 @@
--ACTION=="add", SUBSYSTEM=="tty", ATTRS{idVendor}=="2c7c", ATTRS{idProduct}=="0125", ENV{MINOR}=="0", RUN+="/usr/bin/eg25-configure-usb %p"
-+ACTION=="add", SUBSYSTEM=="usb", DRIVERS=="usb", ATTRS{idVendor}=="2c7c", ATTRS{idProduct}=="0125", ATTR{power/control}="auto"
-+ACTION=="add", SUBSYSTEM=="usb", DRIVERS=="usb", ATTRS{idVendor}=="2c7c", ATTRS{idProduct}=="0125", ATTR{power/autosuspend_delay_ms}="3000"
-+ACTION=="add", SUBSYSTEM=="usb", DRIVERS=="usb", ATTRS{idVendor}=="2c7c", ATTRS{idProduct}=="0125", ATTR{power/wakeup}="enabled"
-+ACTION=="add", SUBSYSTEM=="usb", DRIVERS=="usb", ATTRS{idVendor}=="2c7c", ATTRS{idProduct}=="0125", ATTR{avoid_reset_quirk}="1"
-+ACTION=="add", SUBSYSTEM=="usb", DRIVERS=="usb", ATTRS{idVendor}=="2c7c", ATTRS{idProduct}=="0125", ATTR{power/persist}="0"
-diff --git a/udev/eg25-configure-usb b/udev/eg25-configure-usb
-deleted file mode 100755
-index 9972af7..0000000
---- a/udev/eg25-configure-usb
-+++ /dev/null
-@@ -1,21 +0,0 @@
--#!/bin/sh
--
--DEVPATH=/sys/$1
--USB_ID=
--
--[ -d ${DEVPATH} ] || exit 1
--
--while [ ! "${USB_ID}" ]; do
-- if [ -f ${DEVPATH}/avoid_reset_quirk ]; then
-- USB_ID=$(basename ${DEVPATH})
-- break
-- fi
-- DEVPATH=$(dirname ${DEVPATH})
--done
--
--# Avoid USB resets
--echo "auto" > /sys/bus/usb/devices/${USB_ID}/power/control
--echo "3000" > /sys/bus/usb/devices/${USB_ID}/power/autosuspend_delay_ms
--echo "enabled" > /sys/bus/usb/devices/${USB_ID}/power/wakeup
--echo "1" > /sys/bus/usb/devices/${USB_ID}/avoid_reset_quirk
--echo "0" > /sys/bus/usb/devices/${USB_ID}/power/persist
-diff --git a/udev/meson.build b/udev/meson.build
-index fe558fc..1488660 100644
---- a/udev/meson.build
-+++ b/udev/meson.build
-@@ -4,5 +4,4 @@
- # SPDX-License-Identifier: GPL-3.0-or-later
- #
-
--install_data ('eg25-configure-usb', install_dir: bindir)
- install_data ('80-modem-eg25.rules', install_dir: udevrulesdir)
---
-GitLab
-
diff --git a/net-misc/eg25-manager/files/6.patch b/net-misc/eg25-manager/files/6.patch
deleted file mode 100644
index 77c9a51..0000000
--- a/net-misc/eg25-manager/files/6.patch
+++ /dev/null
@@ -1,895 +0,0 @@
-From 09c0ddfbb81f15bf732b9a5af15eee9eb1be848b Mon Sep 17 00:00:00 2001
-From: Oliver Smith
-Date: Mon, 8 Feb 2021 10:29:56 +0530
-Subject: [PATCH 1/5] src: add ofono-iface
-
-Start work on new ofono interface. So far, this detects ofono on dbus
-and complains if both mm and ofono are running.
----
- src/manager.c | 10 ++++++++
- src/manager.h | 8 ++++++
- src/meson.build | 1 +
- src/mm-iface.c | 7 ++++++
- src/ofono-iface.c | 62 +++++++++++++++++++++++++++++++++++++++++++++++
- src/ofono-iface.h | 12 +++++++++
- 6 files changed, 100 insertions(+)
- create mode 100644 src/ofono-iface.c
- create mode 100644 src/ofono-iface.h
-
-diff --git a/src/manager.c b/src/manager.c
-index aaa3905..7e43e62 100644
---- a/src/manager.c
-+++ b/src/manager.c
-@@ -8,6 +8,7 @@
- #include "gpio.h"
- #include "manager.h"
- #include "mm-iface.h"
-+#include "ofono-iface.h"
- #include "suspend.h"
- #include "udev.h"
-
-@@ -35,6 +36,7 @@ static gboolean quit_app(struct EG25Manager *manager)
-
- at_destroy(manager);
- mm_iface_destroy(manager);
-+ ofono_iface_destroy(manager);
- suspend_destroy(manager);
- udev_destroy(manager);
-
-@@ -131,6 +133,13 @@ void modem_reset(struct EG25Manager *manager)
- if (manager->reset_timer)
- return;
-
-+ /* If we are managing the modem through lets say ofono, we should not
-+ * reset the modem based on the availability of USB ID
-+ * TODO: Improve ofono plugin and add support for fetching USB ID
-+ */
-+ if (manager->modem_iface != MODEM_IFACE_MODEMMANAGER)
-+ return;
-+
- if (manager->modem_recovery_timer) {
- g_source_remove(manager->modem_recovery_timer);
- manager->modem_recovery_timer = 0;
-@@ -305,6 +314,7 @@ int main(int argc, char *argv[])
- at_init(&manager, toml_table_in(toml_config, "at"));
- gpio_init(&manager, toml_table_in(toml_config, "gpio"));
- mm_iface_init(&manager, toml_table_in(toml_config, "mm-iface"));
-+ ofono_iface_init(&manager);
- suspend_init(&manager, toml_table_in(toml_config, "suspend"));
- udev_init(&manager, toml_table_in(toml_config, "udev"));
-
-diff --git a/src/manager.h b/src/manager.h
-index 48ff237..5ed9e75 100644
---- a/src/manager.h
-+++ b/src/manager.h
-@@ -27,6 +27,12 @@ enum EG25State {
- EG25_STATE_FINISHING
- };
-
-+enum ModemIface {
-+ MODEM_IFACE_NONE = 0,
-+ MODEM_IFACE_MODEMMANAGER,
-+ MODEM_IFACE_OFONO
-+};
-+
- struct EG25Manager {
- GMainLoop *loop;
- guint reset_timer;
-@@ -41,9 +47,11 @@ struct EG25Manager {
- enum EG25State modem_state;
- gchar *modem_usb_id;
-
-+ enum ModemIface modem_iface;
- guint mm_watch;
- MMManager *mm_manager;
- MMModem *mm_modem;
-+ guint ofono_watch;
-
- GDBusProxy *suspend_proxy;
- int suspend_delay_fd;
-diff --git a/src/meson.build b/src/meson.build
-index 0d10362..7429950 100644
---- a/src/meson.build
-+++ b/src/meson.build
-@@ -11,6 +11,7 @@ executable (
- 'gpio.c', 'gpio.h',
- 'manager.c', 'manager.h',
- 'mm-iface.c', 'mm-iface.h',
-+ 'ofono-iface.c', 'ofono-iface.h',
- 'suspend.c', 'suspend.h',
- 'toml.c', 'toml.h',
- 'udev.c', 'udev.h',
-diff --git a/src/mm-iface.c b/src/mm-iface.c
-index 8afe2ea..e1e3726 100644
---- a/src/mm-iface.c
-+++ b/src/mm-iface.c
-@@ -163,6 +163,13 @@ static void mm_appeared_cb(GDBusConnection *connection,
- {
- g_message("ModemManager appeared on D-Bus");
-
-+ if (manager->modem_iface != MODEM_IFACE_NONE) {
-+ g_critical("Modem interface already found!");
-+ g_critical("Make sure to only run either of ModemManager or oFono.");
-+ return;
-+ }
-+ manager->modem_iface = MODEM_IFACE_MODEMMANAGER;
-+
- mm_manager_new(connection, G_DBUS_OBJECT_MANAGER_CLIENT_FLAGS_NONE,
- NULL, (GAsyncReadyCallback)mm_manager_new_cb, manager);
- }
-diff --git a/src/ofono-iface.c b/src/ofono-iface.c
-new file mode 100644
-index 0000000..d9051a3
---- /dev/null
-+++ b/src/ofono-iface.c
-@@ -0,0 +1,62 @@
-+/*
-+ * Copyright (C) 2020 Oliver Smith
-+ *
-+ * SPDX-License-Identifier: GPL-3.0-or-later
-+ */
-+
-+#include "ofono-iface.h"
-+
-+#include
-+
-+// #include
-+#define OFONO_SERVICE "org.ofono"
-+
-+static void ofono_appeared_cb(GDBusConnection *connection,
-+ const gchar *name,
-+ const gchar *name_owner,
-+ struct EG25Manager *manager)
-+{
-+ g_message("oFono appeared on D-Bus");
-+
-+ if (manager->modem_iface != MODEM_IFACE_NONE) {
-+ g_critical("Modem interface already found!");
-+ g_critical("Make sure to only run either of ModemManager or oFono.");
-+ return;
-+ }
-+ manager->modem_iface = MODEM_IFACE_OFONO;
-+
-+ /* now connect to oFono! */
-+}
-+
-+static void ofono_vanished_cb(GDBusConnection *connection,
-+ const gchar *name,
-+ struct EG25Manager *manager)
-+{
-+ g_message("oFono vanished from D-Bus");
-+
-+ if (manager->modem_iface == MODEM_IFACE_OFONO) {
-+ manager->modem_iface = MODEM_IFACE_NONE;
-+ ofono_iface_destroy(manager);
-+ }
-+}
-+
-+void ofono_iface_init(struct EG25Manager *manager)
-+{
-+ manager->ofono_watch = g_bus_watch_name(G_BUS_TYPE_SYSTEM, OFONO_SERVICE,
-+ G_BUS_NAME_WATCHER_FLAGS_AUTO_START,
-+ (GBusNameAppearedCallback)ofono_appeared_cb,
-+ (GBusNameVanishedCallback)ofono_vanished_cb,
-+ manager, NULL);
-+}
-+
-+void ofono_iface_destroy(struct EG25Manager *manager)
-+{
-+ if (manager->modem_usb_id) {
-+ g_free(manager->modem_usb_id);
-+ manager->modem_usb_id = NULL;
-+ }
-+ if (manager->ofono_watch != 0) {
-+ g_bus_unwatch_name(manager->ofono_watch);
-+ manager->ofono_watch = 0;
-+ }
-+}
-diff --git a/src/ofono-iface.h b/src/ofono-iface.h
-new file mode 100644
-index 0000000..fd3766e
---- /dev/null
-+++ b/src/ofono-iface.h
-@@ -0,0 +1,12 @@
-+/*
-+ * Copyright (C) 2020 Oliver Smith
-+ *
-+ * SPDX-License-Identifier: GPL-3.0-or-later
-+ */
-+
-+#pragma once
-+
-+#include "manager.h"
-+
-+void ofono_iface_init(struct EG25Manager *data);
-+void ofono_iface_destroy(struct EG25Manager *data);
---
-GitLab
-
-
-From a3952107f5950535dd10d8c48ae807f3f4ec207e Mon Sep 17 00:00:00 2001
-From: Bhushan Shah
-Date: Thu, 11 Mar 2021 11:58:46 +0530
-Subject: [PATCH 2/5] src: watch ofono service for new modem
-
-If system is using ofono, use ofono dbus service to figure out the
-modem's USB id.
----
- src/libgdbofono/dbus-introspect.sh | 11 ++
- src/libgdbofono/manager.xml | 13 ++
- src/libgdbofono/meson.build | 50 ++++++
- src/libgdbofono/modem-full.xml | 249 +++++++++++++++++++++++++++++
- src/libgdbofono/modem.xml | 37 +++++
- src/manager.h | 4 +
- src/meson.build | 4 +
- src/ofono-iface.c | 100 +++++++++++-
- 8 files changed, 467 insertions(+), 1 deletion(-)
- create mode 100755 src/libgdbofono/dbus-introspect.sh
- create mode 100644 src/libgdbofono/manager.xml
- create mode 100644 src/libgdbofono/meson.build
- create mode 100644 src/libgdbofono/modem-full.xml
- create mode 100644 src/libgdbofono/modem.xml
-
-diff --git a/src/libgdbofono/dbus-introspect.sh b/src/libgdbofono/dbus-introspect.sh
-new file mode 100755
-index 0000000..5a851ad
---- /dev/null
-+++ b/src/libgdbofono/dbus-introspect.sh
-@@ -0,0 +1,11 @@
-+#!/bin/bash
-+
-+DEST="$1"
-+OBJ_PATH="$2"
-+METHOD="$3"
-+shift 3
-+
-+dbus-send "$@" --print-reply --dest="$DEST" "$OBJ_PATH" "$METHOD" | \
-+ grep -v '^method return' | \
-+ sed -e 's/^[[:space:]]\+string "' \
-+ -e 's_"__'
-diff --git a/src/libgdbofono/manager.xml b/src/libgdbofono/manager.xml
-new file mode 100644
-index 0000000..13e9d56
---- /dev/null
-+++ b/src/libgdbofono/manager.xml
-@@ -0,0 +1,13 @@
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-diff --git a/src/libgdbofono/meson.build b/src/libgdbofono/meson.build
-new file mode 100644
-index 0000000..98eb9a3
---- /dev/null
-+++ b/src/libgdbofono/meson.build
-@@ -0,0 +1,50 @@
-+#
-+# Copyright (C) 2018 Purism SPC
-+#
-+# This file is part of Calls.
-+#
-+# Calls 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, either version 3 of the License, or
-+# (at your option) any later version.
-+#
-+# Calls 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
-+# along with Calls. If not, see .
-+#
-+# Author: Bob Ham
-+#
-+# SPDX-License-Identifier: GPL-3.0-or-later
-+#
-+
-+
-+gnome = import('gnome')
-+dbus_interfaces = ['manager', 'modem']
-+
-+gdbofono_src = []
-+gdbofono_headers = []
-+foreach iface: dbus_interfaces
-+ src = gnome.gdbus_codegen(
-+ 'gdbo-' + iface,
-+ iface + '.xml',
-+ interface_prefix: 'org.ofono.',
-+ namespace: 'GDBO'
-+ )
-+ gdbofono_src += src
-+ gdbofono_headers += src[1]
-+endforeach
-+
-+gdbofono_deps = [
-+ dependency('gio-2.0'),
-+ dependency('gio-unix-2.0'),
-+]
-+
-+gdbofono_lib = static_library(
-+ 'gdbofono',
-+ gdbofono_src,
-+ dependencies: gdbofono_deps
-+)
-diff --git a/src/libgdbofono/modem-full.xml b/src/libgdbofono/modem-full.xml
-new file mode 100644
-index 0000000..5319672
---- /dev/null
-+++ b/src/libgdbofono/modem-full.xml
-@@ -0,0 +1,249 @@
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-diff --git a/src/libgdbofono/modem.xml b/src/libgdbofono/modem.xml
-new file mode 100644
-index 0000000..c02d250
---- /dev/null
-+++ b/src/libgdbofono/modem.xml
-@@ -0,0 +1,37 @@
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-diff --git a/src/manager.h b/src/manager.h
-index 5ed9e75..ec5550b 100644
---- a/src/manager.h
-+++ b/src/manager.h
-@@ -10,6 +10,7 @@
- #include
- #include
- #include
-+#include
-
- #include "toml.h"
-
-@@ -51,7 +52,10 @@ struct EG25Manager {
- guint mm_watch;
- MMManager *mm_manager;
- MMModem *mm_modem;
-+
- guint ofono_watch;
-+ GDBOManager *ofono_manager;
-+ GDBusConnection *ofono_connection;
-
- GDBusProxy *suspend_proxy;
- int suspend_delay_fd;
-diff --git a/src/meson.build b/src/meson.build
-index 7429950..6a9f52d 100644
---- a/src/meson.build
-+++ b/src/meson.build
-@@ -4,6 +4,9 @@
- # SPDX-License-Identifier: GPL-3.0-or-later
- #
-
-+
-+subdir('libgdbofono')
-+
- executable (
- 'eg25manager',
- [
-@@ -17,5 +20,6 @@ executable (
- 'udev.c', 'udev.h',
- ],
- dependencies : mgr_deps,
-+ link_with: gdbofono_lib,
- install : true
- )
-diff --git a/src/ofono-iface.c b/src/ofono-iface.c
-index d9051a3..00bf665 100644
---- a/src/ofono-iface.c
-+++ b/src/ofono-iface.c
-@@ -8,14 +8,91 @@
-
- #include
-
-+#include
-+#include
-+
- // #include
- #define OFONO_SERVICE "org.ofono"
-
-+static void modem_added_cb(GDBOManager *manager_proxy,
-+ const gchar *path,
-+ GVariant *properties,
-+ struct EG25Manager *manager)
-+{
-+ GVariant *modem_path;
-+ /*
-+ gdbo_modem_proxy_new(manager->ofono_connection,
-+ G_DBUS_PROXY_FLAGS_NONE,
-+ g_dbus_proxy_get_name(G_DBUS_PROXY(manager_proxy)),
-+ path,
-+ NULL,
-+ (GAsyncReadyCallback) modem_proxy_new_cb,
-+ manager);
-+ */
-+ g_debug("Adding ofono modem '%s'", path);
-+
-+ if (manager->modem_state == EG25_STATE_RESUMING) {
-+ if (manager->modem_recovery_timer) {
-+ g_source_remove(manager->modem_recovery_timer);
-+ manager->modem_recovery_timer = 0;
-+ }
-+ modem_resume_post(manager);
-+ manager->modem_state = EG25_STATE_CONFIGURED;
-+ }
-+
-+ if (manager->modem_state < EG25_STATE_ACQUIRED)
-+ manager->modem_state = EG25_STATE_ACQUIRED;
-+
-+ if (manager->modem_state < EG25_STATE_CONFIGURED)
-+ modem_configure(manager);
-+
-+ modem_path = g_variant_lookup_value(properties, "SystemPath", G_VARIANT_TYPE_STRING);
-+ if (manager->modem_usb_id)
-+ g_free(manager->modem_usb_id);
-+ manager->modem_usb_id = g_strdup(strrchr(g_variant_dup_string(modem_path, NULL), '/') + 1);
-+}
-+
-+static void modem_removed_cb(GDBOManager *manager_proxy,
-+ const gchar *path,
-+ struct EG25Manager *manager)
-+{
-+}
-+
-+static void get_modems_cb(GDBOManager *manager_proxy,
-+ GAsyncResult *res,
-+ struct EG25Manager *manager)
-+{
-+ gboolean ok;
-+ GVariant *modems;
-+ GVariantIter *modems_iter = NULL;
-+ g_autoptr(GError) error = NULL;
-+
-+ const gchar *path;
-+ GVariant *properties;
-+
-+ ok = gdbo_manager_call_get_modems_finish(manager_proxy, &modems,
-+ res, &error);
-+ if (!ok) {
-+ g_warning("Error getting modems from ofono manager: %s", error->message);
-+ return;
-+ }
-+
-+ g_variant_get(modems, "a(oa{sv})", &modems_iter);
-+ while(g_variant_iter_loop(modems_iter, "(&o@a{sv})", &path, &properties)) {
-+ g_debug("Got modem object path '%s'", path);
-+ modem_added_cb(manager_proxy, path, properties, manager);
-+ }
-+ g_variant_iter_free(modems_iter);
-+ g_variant_unref(modems);
-+}
-+
- static void ofono_appeared_cb(GDBusConnection *connection,
- const gchar *name,
- const gchar *name_owner,
- struct EG25Manager *manager)
- {
-+ GError *error = NULL;
-+
- g_message("oFono appeared on D-Bus");
-
- if (manager->modem_iface != MODEM_IFACE_NONE) {
-@@ -23,9 +100,30 @@ static void ofono_appeared_cb(GDBusConnection *connection,
- g_critical("Make sure to only run either of ModemManager or oFono.");
- return;
- }
-+ /* now connect to oFono! */
-+ manager->ofono_connection = connection;
-+ manager->ofono_manager = gdbo_manager_proxy_new_sync(connection,
-+ G_DBUS_PROXY_FLAGS_NONE,
-+ OFONO_SERVICE,
-+ "/",
-+ NULL,
-+ &error);
-+ if (!manager->ofono_manager) {
-+ g_critical("Error creating ofono object manager proxy: %s", error->message);
-+ return;
-+ }
-+
- manager->modem_iface = MODEM_IFACE_OFONO;
-
-- /* now connect to oFono! */
-+ g_signal_connect(manager->ofono_manager, "modem-added",
-+ G_CALLBACK(modem_added_cb), manager);
-+ g_signal_connect(manager->ofono_manager, "modem-removed",
-+ G_CALLBACK(modem_removed_cb), manager);
-+
-+ gdbo_manager_call_get_modems(manager->ofono_manager,
-+ NULL,
-+ (GAsyncReadyCallback) get_modems_cb,
-+ manager);
- }
-
- static void ofono_vanished_cb(GDBusConnection *connection,
---
-GitLab
-
-
-From 9c4f5669fc6b76eac280f165aab972552f2df824 Mon Sep 17 00:00:00 2001
-From: Bhushan Shah
-Date: Thu, 11 Mar 2021 12:13:04 +0530
-Subject: [PATCH 3/5] at: if we are using ofono, don't query modem manager for
- state
-
----
- src/at.c | 14 +++++++++-----
- 1 file changed, 9 insertions(+), 5 deletions(-)
-
-diff --git a/src/at.c b/src/at.c
-index 4b5cd62..32138d0 100644
---- a/src/at.c
-+++ b/src/at.c
-@@ -76,12 +76,16 @@ static gboolean send_at_command(struct EG25Manager *manager)
-
- g_message("Sending command: %s", g_strstrip(command));
- } else if (manager->modem_state < EG25_STATE_CONFIGURED) {
-- MMModemState modem_state = mm_modem_get_state(manager->mm_modem);
--
-- if (manager->mm_modem && modem_state >= MM_MODEM_STATE_REGISTERED)
-- modem_update_state(manager, modem_state);
-- else
-+ if (manager->modem_iface == MODEM_IFACE_MODEMMANAGER) {
-+ MMModemState modem_state = mm_modem_get_state(manager->mm_modem);
-+
-+ if (manager->mm_modem && modem_state >= MM_MODEM_STATE_REGISTERED)
-+ modem_update_state(manager, modem_state);
-+ else
-+ manager->modem_state = EG25_STATE_CONFIGURED;
-+ } else {
- manager->modem_state = EG25_STATE_CONFIGURED;
-+ }
- } else if (manager->modem_state == EG25_STATE_SUSPENDING) {
- modem_suspend_post(manager);
- } else if (manager->modem_state == EG25_STATE_RESETTING) {
---
-GitLab
-
-
-From 742172a9129a3c11c2825d323f8f98730f7533db Mon Sep 17 00:00:00 2001
-From: Bhushan Shah
-Date: Thu, 11 Mar 2021 13:08:21 +0530
-Subject: [PATCH 4/5] suspend: if we are using ofono, mark modem as resumed
- immediately
-
----
- src/suspend.c | 5 ++++-
- 1 file changed, 4 insertions(+), 1 deletion(-)
-
-diff --git a/src/suspend.c b/src/suspend.c
-index 256636e..b82ca7e 100644
---- a/src/suspend.c
-+++ b/src/suspend.c
-@@ -170,11 +170,14 @@ static void signal_cb(GDBusProxy *proxy,
- g_message("system is resuming");
- take_inhibitor(manager, FALSE);
- modem_resume_pre(manager);
-- if (manager->mm_modem) {
-+ if (manager->mm_modem || manager->modem_iface == MODEM_IFACE_OFONO) {
- /*
- * On some systems ModemManager doesn't handle suspend/resume, so
- * we still have a valid/managed modem when resuming. In this case,
- * do the whole resume sequence immediately.
-+ *
-+ * If modem is managed by ofono, we also do resume sequence immediately
-+ * as ofono handles resuming from sleep itself.
- */
- manager->modem_state = EG25_STATE_CONFIGURED;
- modem_resume_post(manager);
---
-GitLab
-
-
-From 87ff1e0a5a6f379528e1e581372e9d60d35e044f Mon Sep 17 00:00:00 2001
-From: Bhushan Shah
-Date: Thu, 11 Mar 2021 14:22:50 +0530
-Subject: [PATCH 5/5] ofono-iface: add spdx copyright info
-
----
- src/ofono-iface.c | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/src/ofono-iface.c b/src/ofono-iface.c
-index 00bf665..caf32dd 100644
---- a/src/ofono-iface.c
-+++ b/src/ofono-iface.c
-@@ -1,5 +1,6 @@
- /*
- * Copyright (C) 2020 Oliver Smith
-+ * Copyright (C) 2021 Bhushan Shah
- *
- * SPDX-License-Identifier: GPL-3.0-or-later
- */
---
-GitLab
-
diff --git a/net-misc/eg25-manager/files/eg25-manager.service b/net-misc/eg25-manager/files/eg25-manager.service
index 21030cd..f791027 100644
--- a/net-misc/eg25-manager/files/eg25-manager.service
+++ b/net-misc/eg25-manager/files/eg25-manager.service
@@ -6,6 +6,24 @@ Before=ModemManager.service
Type=simple
ExecStart=/usr/bin/eg25manager
Restart=on-failure
+ProtectControlGroups=true
+ProtectHome=true
+ProtectKernelTunables=true
+ProtectSystem=strict
+RestrictSUIDSGID=true
+PrivateTmp=true
+ProtectedKernelModules=true
+MemoryDenyWriteExecute=true
+PrivateMounts=true
+NoNewPrivileges=true
+CapabilityBoundingSet=
+ProtectProc=true
+ProtectDevices=true
+DeviceAllow=/dev/ttyS2
+LockPersonality=true
+PrivateNetwork=true
+ProtectClock=true
+ProtectKernelLog=true
[Install]
WantedBy=multi-user.target
diff --git a/net-misc/eg25-manager/metadata.xml b/net-misc/eg25-manager/metadata.xml
new file mode 100644
index 0000000..bcbaf9c
--- /dev/null
+++ b/net-misc/eg25-manager/metadata.xml
@@ -0,0 +1,15 @@
+
+
+
+
+ gjdijkman@gjdwebserver.nl
+ Gerben Jan Dijkman
+
+
+ Manager daemon for the Quectel EG25 mobile broadband modem.
+
+
+ https://gitlab.com/mobian1/devices/eg25-manager
+ https://gitlab.com/mobian1/devices/eg25-manager/-/issues
+
+
diff --git a/net-voip/gnome-calls/metadata.xml b/net-voip/gnome-calls/metadata.xml
new file mode 100644
index 0000000..ee32d2a
--- /dev/null
+++ b/net-voip/gnome-calls/metadata.xml
@@ -0,0 +1,15 @@
+
+
+
+
+ gjdijkman@gjdwebserver.nl
+ Gerben Jan Dijkman
+
+
+ A phone dialer and call handler.
+
+
+ https://gitlab.gnome.org/GNOME/calls
+ https://gitlab.gnome.org/GNOME/calls/-/issues
+
+
diff --git a/x11-libs/libadwaita/metadata.xml b/x11-libs/libadwaita/metadata.xml
new file mode 100644
index 0000000..d820096
--- /dev/null
+++ b/x11-libs/libadwaita/metadata.xml
@@ -0,0 +1,15 @@
+
+
+
+
+ gjdijkman@gjdwebserver.nl
+ Gerben Jan Dijkman
+
+
+ Building blocks for modern GNOME applications.
+
+
+ https://gitlab.gnome.org/GNOME/libadwaita
+ https://gitlab.gnome.org/GNOME/libadwaita/-/issues
+
+
diff --git a/x11-misc/squeekboard/metadata.xml b/x11-misc/squeekboard/metadata.xml
index b372191..b37bbbe 100644
--- a/x11-misc/squeekboard/metadata.xml
+++ b/x11-misc/squeekboard/metadata.xml
@@ -1,5 +1,15 @@
-
+
-
+
+ gjdijkman@gjdwebserver.nl
+ Gerben Jan Dijkman
+
+
+ The final Librem5 keyboard.
+
+
+ https://source.puri.sm/Librem5/squeekboard
+ https://source.puri.sm/Librem5/squeekboard/-/issues
+
diff --git a/x11-plugins/purple-mm-sms/Manifest b/x11-plugins/purple-mm-sms/Manifest
new file mode 100644
index 0000000..fbf762f
--- /dev/null
+++ b/x11-plugins/purple-mm-sms/Manifest
@@ -0,0 +1 @@
+DIST purple-mm-sms-v0.1.7.tar.gz 18981 BLAKE2B 7cfccc75bce3f05d8a88f80ac523effd1ca9473e468687b215f79ac37e87e351188e52444b0226adf645c45513c788f6cc01f43e0b079bd36fb22b54facb8f46 SHA512 438482ca8a58b71401d0077e4a9c1b845d66cd49ba2282c9c113bcf241efc59b7140f7c2c07dcc448b379c598a5f743bedd5701deb533e919348fc41e7e4c754
diff --git a/x11-plugins/purple-mm-sms/metadata.xml b/x11-plugins/purple-mm-sms/metadata.xml
new file mode 100644
index 0000000..181bd39
--- /dev/null
+++ b/x11-plugins/purple-mm-sms/metadata.xml
@@ -0,0 +1,15 @@
+
+
+
+
+ gjdijkman@gjdwebserver.nl
+ Gerben Jan Dijkman
+
+
+ Purple SMS plugin using ModemManager.
+
+
+ https://source.puri.sm/Librem5/purple-mm-sms
+ https://source.puri.sm/Librem5/purple-mm-sms/-/issues
+
+
diff --git a/x11-plugins/purple-mm-sms/purple-mm-sms-0.1.7.ebuild b/x11-plugins/purple-mm-sms/purple-mm-sms-0.1.7.ebuild
new file mode 100644
index 0000000..defb9e6
--- /dev/null
+++ b/x11-plugins/purple-mm-sms/purple-mm-sms-0.1.7.ebuild
@@ -0,0 +1,21 @@
+# Copyright 1999-2021 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+DESCRIPTION="Purple SMS plugin using ModemManager"
+HOMEPAGE="https://source.puri.sm/Librem5/purple-mm-sms"
+SRC_URI="https://source.puri.sm/Librem5/${PN}/-/archive/v${PV}/${PN}-v${PV}.tar.gz"
+
+LICENSE="GPL-3"
+SLOT="0"
+KEYWORDS="~amd64 ~arm64"
+
+DEPEND="
+ net-misc/modemmanager
+ net-im/pidgin
+"
+
+RDEPEND="${DEPEND}"
+
+S="${WORKDIR}/${PN}-v${PV}"
diff --git a/x11-themes/sound-theme-librem5/Manifest b/x11-themes/sound-theme-librem5/Manifest
new file mode 100644
index 0000000..e6ed286
--- /dev/null
+++ b/x11-themes/sound-theme-librem5/Manifest
@@ -0,0 +1 @@
+DIST sound-theme-librem5-v0.1.0.tar.gz 478867 BLAKE2B 1621e0f9a2a7ba3e295edc199b0f64957f1d734f3edffd2878bc037e0e2fadfb5fe3b7d882349d06a3147af6165c68d0269b6b706742334295ef0b791627b982 SHA512 348031406e0393f9c67c1ea99e5b250ae985f736cc5b1ce79c959134605bfc79bf875ec10abfe324077d0129df09041e5b574273df7d142af8d8bc5604a12406
diff --git a/x11-themes/sound-theme-librem5/metadata.xml b/x11-themes/sound-theme-librem5/metadata.xml
new file mode 100644
index 0000000..4300f78
--- /dev/null
+++ b/x11-themes/sound-theme-librem5/metadata.xml
@@ -0,0 +1,15 @@
+
+
+
+
+ gjdijkman@gjdwebserver.nl
+ Gerben Jan Dijkman
+
+
+ Sound theme for the librem 5.
+
+
+ https://source.puri.sm/Librem5/sound-theme-librem5
+ https://source.puri.sm/Librem5/sound-theme-librem5/-/issues
+
+
diff --git a/x11-themes/sound-theme-librem5/sound-theme-librem5-0.1.0.ebuild b/x11-themes/sound-theme-librem5/sound-theme-librem5-0.1.0.ebuild
new file mode 100644
index 0000000..e212961
--- /dev/null
+++ b/x11-themes/sound-theme-librem5/sound-theme-librem5-0.1.0.ebuild
@@ -0,0 +1,25 @@
+# Copyright 1999-2021 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+DESCRIPTION="Sound theme for the Librem 5/PinePhone"
+HOMEPAGE="https://source.puri.sm/Librem5/sound-theme-librem5"
+SRC_URI="https://source.puri.sm/Librem5/sound-theme-librem5/-/archive/v${PV}/${PN}-v${PV}.tar.gz"
+
+LICENSE="GPL-2 LGPL-2 CC-BY-3.0 CC-BY-SA-2.0"
+SLOT="0"
+KEYWORDS="~amd64 ~arm64"
+
+DEPEND="
+ sys-devel/gettext
+ dev-libs/glib:2
+ >=dev-util/intltool-0.40
+"
+
+S="${WORKDIR}/${PN}-v${PV}"
+
+src_install() {
+ insinto /usr/share/sounds/
+ doins -r librem5
+}
diff --git a/x11-wm/phoc/Manifest b/x11-wm/phoc/Manifest
new file mode 100644
index 0000000..90083ee
--- /dev/null
+++ b/x11-wm/phoc/Manifest
@@ -0,0 +1,2 @@
+DIST phoc-v0.8.0.tar.gz 144611 BLAKE2B f5ad96a3917ccd849f73e427077e08a19ce4109b639519239fbecb7183d19579e791ecc7628b22fd8632f6f47a55279860d3c6af3eb25d42115b7343c89611cb SHA512 b2cc687852385d4010c22e01ea65870dcc71f4a6a53782a615df11641ce5cc4b29add7afefd5560b95d03fe045b6ffa7387b68dfe114828cd62bdae9424e692d
+DIST wlroots-0.12.0.tar.gz 476936 BLAKE2B 4129c87a148085f95f4cee6973308d79ab3f8b024247287a68dadd6729da8a5f8cc1e4ada63c15477a2c8e8258032440afe4a21a26f947143d17c87b0ca8a1a4 SHA512 560eae30932b777c1f07fb44592d5601c5d10ef74b31b6b9e4166a14caadab2bfa88d39282f159785d4c7f22f78d204f9bb7fab65d58afaf14b72a8486f9b415
diff --git a/x11-wm/phoc/files/0001-seat-Don-t-notify-on-key-release.patch b/x11-wm/phoc/files/0001-seat-Don-t-notify-on-key-release.patch
new file mode 100644
index 0000000..a292800
--- /dev/null
+++ b/x11-wm/phoc/files/0001-seat-Don-t-notify-on-key-release.patch
@@ -0,0 +1,27 @@
+From 63d8f9ceb0d2336db4276e717aabe427153b76bb Mon Sep 17 00:00:00 2001
+From: Arnaud Ferraris
+Date: Sat, 6 Jun 2020 02:24:37 +0200
+Subject: [PATCH 1/2] seat: Don't notify on key release
+
+---
+ src/seat.c | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+diff --git a/src/seat.c b/src/seat.c
+index b04fed1..679a3f5 100644
+--- a/src/seat.c
++++ b/src/seat.c
+@@ -30,8 +30,9 @@ static void handle_keyboard_key(struct wl_listener *listener, void *data) {
+ PhocKeyboard *keyboard =
+ wl_container_of(listener, keyboard, keyboard_key);
+ PhocDesktop *desktop = server->desktop;
+- wlr_idle_notify_activity(desktop->idle, keyboard->seat->seat);
+ struct wlr_event_keyboard_key *event = data;
++ if (event->state == WLR_KEY_PRESSED)
++ wlr_idle_notify_activity(desktop->idle, keyboard->seat->seat);
+ phoc_keyboard_handle_key(keyboard, event);
+ }
+
+--
+2.26.2
+
diff --git a/x11-wm/phoc/files/0002-seat-inhibit-touch-events-when-in-power-save-mode-or.patch b/x11-wm/phoc/files/0002-seat-inhibit-touch-events-when-in-power-save-mode-or.patch
new file mode 100644
index 0000000..5f02f4a
--- /dev/null
+++ b/x11-wm/phoc/files/0002-seat-inhibit-touch-events-when-in-power-save-mode-or.patch
@@ -0,0 +1,112 @@
+From c6aeee2009a2ee4647fd74da0fc3bd87f61a70fd Mon Sep 17 00:00:00 2001
+From: Arnaud Ferraris
+Date: Sat, 6 Jun 2020 02:52:10 +0200
+Subject: [PATCH 2/2] seat: inhibit touch events when in power save mode or
+ blank display
+
+---
+ src/desktop.c | 2 ++
+ src/output.c | 3 +++
+ src/seat.c | 6 ++++++
+ src/server.c | 1 +
+ src/server.h | 1 +
+ 5 files changed, 13 insertions(+)
+
+diff --git a/src/desktop.c b/src/desktop.c
+index 8fbb98e..40b2492 100644
+--- a/src/desktop.c
++++ b/src/desktop.c
+@@ -703,6 +703,7 @@ phoc_desktop_new (struct roots_config *c
+ void
+ phoc_desktop_toggle_output_blank (PhocDesktop *self)
+ {
++ PhocServer *server = phoc_server_get_default ();
+ PhocOutput *output;
+
+ wl_list_for_each(output, &self->outputs, link) {
+@@ -710,6 +711,7 @@ phoc_desktop_toggle_output_blank (PhocDe
+
+ wlr_output_enable (output->wlr_output, enable);
+ wlr_output_commit (output->wlr_output);
++ server->active = enable;
+ if (enable)
+ phoc_output_damage_whole(output);
+ }
+diff --git a/src/output.c b/src/output.c
+index c03889f..045cbc0 100644
+--- a/src/output.c
++++ b/src/output.c
+@@ -928,6 +928,7 @@ handle_output_manager_test (struct wl_li
+ void
+ phoc_output_handle_output_power_manager_set_mode (struct wl_listener *listener, void *data)
+ {
++ PhocServer *server = phoc_server_get_default ();
+ struct wlr_output_power_v1_set_mode_event *event = data;
+ PhocOutput *self;
+ bool enable = true;
+@@ -951,6 +952,8 @@ phoc_output_handle_output_power_manager_
+ if (enable == self->wlr_output->enabled)
+ return;
+
++ server->active = enable;
++
+ wlr_output_enable (self->wlr_output, enable);
+ if (!wlr_output_commit (self->wlr_output)) {
+ g_warning ("Failed to commit power mode change to %d for %p", enable, self);
+diff --git a/src/seat.c b/src/seat.c
+index 679a3f5..2a4c007 100644
+--- a/src/seat.c
++++ b/src/seat.c
+@@ -178,6 +178,8 @@ static void handle_touch_down(struct wl_listener *listener, void *data) {
+ struct roots_cursor *cursor =
+ wl_container_of(listener, cursor, touch_down);
+ PhocDesktop *desktop = server->desktop;
++ if (!server->active)
++ return;
+ wlr_idle_notify_activity(desktop->idle, cursor->seat->seat);
+ struct wlr_event_touch_down *event = data;
+ roots_cursor_handle_touch_down(cursor, event);
+@@ -188,6 +190,8 @@ static void handle_touch_up(struct wl_listener *listener, void *data) {
+ struct roots_cursor *cursor =
+ wl_container_of(listener, cursor, touch_up);
+ PhocDesktop *desktop = server->desktop;
++ if (!server->active)
++ return;
+ wlr_idle_notify_activity(desktop->idle, cursor->seat->seat);
+ struct wlr_event_touch_up *event = data;
+ roots_cursor_handle_touch_up(cursor, event);
+@@ -198,6 +202,8 @@ static void handle_touch_motion(struct wl_listener *listener, void *data) {
+ struct roots_cursor *cursor =
+ wl_container_of(listener, cursor, touch_motion);
+ PhocDesktop *desktop = server->desktop;
++ if (!server->active)
++ return;
+ wlr_idle_notify_activity(desktop->idle, cursor->seat->seat);
+ struct wlr_event_touch_motion *event = data;
+ roots_cursor_handle_touch_motion(cursor, event);
+diff --git a/src/server.c b/src/server.c
+index 838841b..41452cf 100644
+--- a/src/server.c
++++ b/src/server.c
+@@ -276,6 +276,7 @@ phoc_server_setup (PhocServer *self, const char *config_path,
+ phoc_startup_session (self);
+
+ self->inited = TRUE;
++ self->active = TRUE;
+ return TRUE;
+ }
+
+diff --git a/src/server.h b/src/server.h
+index 9501432..532b064 100644
+--- a/src/server.h
++++ b/src/server.h
+@@ -37,6 +37,7 @@ struct _PhocServer {
+ PhocInput *input;
+ PhocServerDebugFlags debug_flags;
+ gboolean inited;
++ gboolean active;
+
+ /* The session */
+ gchar *session;
+--
+2.26.2
diff --git a/x11-wm/phoc/metadata.xml b/x11-wm/phoc/metadata.xml
new file mode 100644
index 0000000..d495e34
--- /dev/null
+++ b/x11-wm/phoc/metadata.xml
@@ -0,0 +1,15 @@
+
+
+
+
+ gjdijkman@gjdwebserver.nl
+ Gerben Jan Dijkman
+
+
+ Wayland compositor for mobile phones like the Librem 5.
+
+
+ https://source.puri.sm/Librem5/phoc
+ https://source.puri.sm/Librem5/phoc/-/issues
+
+
diff --git a/x11-wm/phoc/phoc-0.8.0.ebuild b/x11-wm/phoc/phoc-0.8.0.ebuild
new file mode 100644
index 0000000..cda542c
--- /dev/null
+++ b/x11-wm/phoc/phoc-0.8.0.ebuild
@@ -0,0 +1,89 @@
+# Copyright 1999-2021 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+inherit meson vala xdg
+
+MY_PV="v${PV}"
+MY_P="${PN}-${MY_PV}"
+# 0.13.0 does not work atm
+WL_PV="0.12.0"
+WL_P="wlroots-${WL_PV}"
+
+DESCRIPTION="Wlroots based Phone compositor"
+HOMEPAGE="https://source.puri.sm/Librem5/phoc"
+
+# we don't use the version on gentoo because it breaks
+# the phoc installation. we follow method used in archlinuxarm
+SRC_URI="
+ https://source.puri.sm/Librem5/phoc/-/archive/${MY_PV}/${MY_P}.tar.gz
+ https://github.com/swaywm/wlroots/releases/download/${WL_PV}/${WL_P}.tar.gz
+"
+
+LICENSE="GPL-3"
+SLOT="0"
+KEYWORDS="~amd64 ~arm64"
+IUSE="+introspection +systemd test"
+RESTRICT="!test? ( test )"
+
+RDEPEND="
+ dev-libs/glib
+ dev-libs/gobject-introspection
+ dev-libs/libinput
+ dev-libs/wayland
+ dev-libs/wayland-protocols
+ gnome-base/gnome-desktop
+ systemd? (
+ !sys-apps/openrc
+ sys-apps/systemd
+ )
+ x11-libs/libdrm
+ x11-libs/pixman
+ x11-libs/xcb-util
+ x11-libs/xcb-util-wm
+ x11-wm/mutter
+"
+
+BDEPEND="
+ dev-util/ctags
+ dev-util/meson
+ virtual/pkgconfig
+ x11-base/xorg-server
+"
+
+PATCHES=(
+ "${FILESDIR}/0001-seat-Don-t-notify-on-key-release.patch"
+ "${FILESDIR}/0002-seat-inhibit-touch-events-when-in-power-save-mode-or.patch"
+)
+
+S="${WORKDIR}/${MY_P}"
+
+src_prepare() {
+ default
+ rm -r "${S}"/subprojects/wlroots || die "Failed to remove bundled wlroots"
+ cp -r "${WORKDIR}/${WL_P}" "${S}"/subprojects/wlroots || die "Failed to copy right version of wlroots"
+}
+
+src_configure() {
+ local emesonargs=(
+ -Ddefault_library=shared
+ -Dtests=false
+ -Dwlroots:logind-provider=systemd
+ -Dwlroots:libseat=disabled
+ )
+ meson_src_configure
+}
+
+src_install() {
+ DESTDIR="${D}" meson_src_install
+# dobin "${S}"/helpers/scale-to-fit
+}
+
+pkg_postinst() {
+ xdg_pkg_postinst
+}
+
+pkg_postrm() {
+ xdg_pkg_postrm
+}