commit:     71de81b880d7349ce048fa3e11ba0da762f70bb7
Author:     Joe Kappus <joe <AT> wt <DOT> gd>
AuthorDate: Sun Feb  5 09:57:10 2023 +0000
Commit:     Sam James <sam <AT> gentoo <DOT> org>
CommitDate: Fri Feb 17 06:22:24 2023 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=71de81b8

media-tv/plex-media-server: readd hardened support, initscript, fix version 
reporting

These changes will bring us in line with plex-overlay.

- start_pms is hacky and removed, we shouldn't ship it.
- the service
- we had pax marking, someone removed it, but it was requested before so 
readding.
- openrc and systemd support
- Lift mirror restriction (again): https://bugs.gentoo.org/600696

Co-authored-by: Sam James <sam <AT> cmpct.info>
Signed-off-by: Joe Kappus <joe <AT> wt.gd>
Signed-off-by: Sam James <sam <AT> gentoo.org>

 .../files/plex-media-server.conf.d                 |  8 +++
 .../files/plex-media-server.init.d                 | 16 +++++
 .../files/plex-media-server.service.patch          | 10 +++
 .../plex-media-server-1.30.2.6563-r1.ebuild        | 84 ++++++++++++++++++++++
 4 files changed, 118 insertions(+)

diff --git a/media-tv/plex-media-server/files/plex-media-server.conf.d 
b/media-tv/plex-media-server/files/plex-media-server.conf.d
new file mode 100644
index 000000000000..bd683b0063b9
--- /dev/null
+++ b/media-tv/plex-media-server/files/plex-media-server.conf.d
@@ -0,0 +1,8 @@
+# Config file for /etc/init.d/plex-media-server
+
+PLEX_PIDFILE="/var/run/plex-media-server.pid"
+PLEX_OUTLOG="/var/log/pms/out.log"
+PLEX_ERRLOG="/var/log/pms/err.log"
+PLEX_USER="plex"
+# PLEX_SCRIPT="/usr/sbin/start_pms"
+PLEX_SCRIPT="/usr/lib/plexmediaserver/Plex Media Server"

diff --git a/media-tv/plex-media-server/files/plex-media-server.init.d 
b/media-tv/plex-media-server/files/plex-media-server.init.d
new file mode 100644
index 000000000000..26f3941a3b0e
--- /dev/null
+++ b/media-tv/plex-media-server/files/plex-media-server.init.d
@@ -0,0 +1,16 @@
+#!/sbin/openrc-run
+
+start() {
+       ebegin "Starting Plex Media Server"
+       start-stop-daemon -S -m -p ${PLEX_PIDFILE} -1 ${PLEX_OUTLOG} -2 
${PLEX_ERRLOG} --quiet -u ${PLEX_USER} -N -5 -b --exec "${PLEX_SCRIPT}"
+       eend $?
+}
+
+stop() {
+       ebegin "Stopping Plex Media Server"
+       kill -- -`cat ${PLEX_PIDFILE}`
+
+       # Remove stale pid file since this is a dirty solution
+       rm ${PLEX_PIDFILE}
+       eend $?
+}

diff --git a/media-tv/plex-media-server/files/plex-media-server.service.patch 
b/media-tv/plex-media-server/files/plex-media-server.service.patch
new file mode 100644
index 000000000000..a2bf14ed30cd
--- /dev/null
+++ b/media-tv/plex-media-server/files/plex-media-server.service.patch
@@ -0,0 +1,10 @@
+--- ./usr/lib/plexmediaserver/lib/plexmediaserver.service.old  2020-11-22 
18:18:21.258165393 +0100
++++ ./usr/lib/plexmediaserver/lib/plexmediaserver.service      2020-11-22 
18:18:35.864602444 +0100
+@@ -27,5 +27,6 @@
+ export PLEX_MEDIA_SERVER_INFO_VENDOR="$(grep ^NAME= /etc/os-release | awk -F= 
"{print \\$2}" | tr -d \\" )"; \
+ export PLEX_MEDIA_SERVER_INFO_DEVICE="PC"; \
+ export PLEX_MEDIA_SERVER_INFO_MODEL="$(uname -m)"; \
+-export PLEX_MEDIA_SERVER_INFO_PLATFORM_VERSION="$(grep ^VERSION= 
/etc/os-release | awk -F= "{print \\$2}" | tr -d \\" )"; \
++export GENTOO_PROFILE="`readlink /etc/portage/make.profile`"; \
++export 
PLEX_MEDIA_SERVER_INFO_PLATFORM_VERSION="$${GENTOO_PROFILE#.*/profiles/}"; \
+ exec "/usr/lib/plexmediaserver/Plex Media Server"'

diff --git a/media-tv/plex-media-server/plex-media-server-1.30.2.6563-r1.ebuild 
b/media-tv/plex-media-server/plex-media-server-1.30.2.6563-r1.ebuild
new file mode 100644
index 000000000000..e95da8c48f94
--- /dev/null
+++ b/media-tv/plex-media-server/plex-media-server-1.30.2.6563-r1.ebuild
@@ -0,0 +1,84 @@
+# Copyright 1999-2023 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit readme.gentoo-r1 systemd unpacker pax-utils
+
+MY_PV="${PV}-3d4dc0cce"
+MY_URI="https://downloads.plex.tv/plex-media-server-new";
+
+DESCRIPTION="Free media library that is intended for use with a plex client"
+HOMEPAGE="https://www.plex.tv/";
+SRC_URI="
+       amd64? ( ${MY_URI}/${MY_PV}/debian/plexmediaserver_${MY_PV}_amd64.deb )
+       arm64? ( ${MY_URI}/${MY_PV}/debian/plexmediaserver_${MY_PV}_arm64.deb )
+       x86? ( ${MY_URI}/${MY_PV}/debian/plexmediaserver_${MY_PV}_i386.deb )
+"
+S="${WORKDIR}"
+
+LICENSE="Plex"
+SLOT="0"
+KEYWORDS="-* ~amd64 ~arm64 ~x86"
+RESTRICT="bindist"
+
+DEPEND="
+       acct-group/plex
+       acct-user/plex"
+RDEPEND="${DEPEND}"
+
+PATCHES=(
+       "${FILESDIR}/${PN}.service.patch"
+)
+
+QA_DESKTOP_FILE="usr/share/applications/plexmediamanager.desktop"
+QA_PREBUILT="*"
+QA_MULTILIB_PATHS=(
+       "usr/lib/plexmediaserver/lib/.*"
+       "usr/lib/plexmediaserver/Resources/Python/lib/python2.7/.*"
+       
"usr/lib/plexmediaserver/Resources/Python/lib/python2.7/lib-dynload/_hashlib.so"
+)
+
+BINS_TO_PAX_MARK=(
+       "${ED}/usr/lib/plexmediaserver/Plex Script Host"
+       "${ED}/usr/lib/plexmediaserver/Plex Media Scanner"
+)
+
+src_install() {
+       # Remove Debian specific files
+       rm -r "usr/share/doc" || die
+
+       # Copy main files over to image and preserve permissions so it is 
portable
+       cp -rp usr/ "${ED}" || die
+
+       # Make sure the logging directory is created
+       keepdir /var/log/pms
+       fowners plex:plex /var/log/pms
+
+       keepdir /var/lib/plexmediaserver
+       fowners plex:plex /var/lib/plexmediaserver
+
+       # Install the OpenRC init/conf files
+       newinitd "${FILESDIR}/${PN}.init.d" ${PN}
+       newconfd "${FILESDIR}/${PN}.conf.d" ${PN}
+
+       # Install systemd service file
+       systemd_newunit 
"${ED}"/usr/lib/plexmediaserver/lib/plexmediaserver.service "${PN}.service"
+
+       # Add pax markings to some binaries so that they work on hardened setup
+       local f
+       for f in "${BINS_TO_PAX_MARK[@]}"; do
+               pax-mark m "${f}"
+       done
+
+       # Adds the precompiled plex libraries to the revdep-rebuild's mask list
+       # so it doesn't try to rebuild libraries that can't be rebuilt.
+       insinto /etc/revdep-rebuild
+       doins "${FILESDIR}"/80plexmediaserver
+
+       readme.gentoo_create_doc
+}
+
+pkg_postinst() {
+       readme.gentoo_print_elog
+}

Reply via email to