Skip to content
This repository has been archived by the owner on Aug 18, 2022. It is now read-only.

Commit

Permalink
[media-tv/plex-media-server] Much faster (hopefully), smaller (mostly…
Browse files Browse the repository at this point in the history
  • Loading branch information
comio committed Sep 17, 2018
1 parent 95d376f commit f8a29d7
Show file tree
Hide file tree
Showing 3 changed files with 202 additions and 1 deletion.
3 changes: 3 additions & 0 deletions media-tv/plex-media-server/Manifest
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,14 @@ AUX systemd/plex-media-server.service 265 BLAKE2B 7634b0fe15052eac8c40f390157588
AUX virtualenv_start_pms.patch 839 BLAKE2B 20d6a53b40a2c714153bc7f04c2bbad568b75197cd450cb52129cc3718fad1db09f9fe2a92e8608e1e95b710e0b4af58a373650ab4017438b63fe61132f13d75 SHA512 55fb8f3234942d10c0d6d1820fbab48b8a9f26f069031946dae551cde8b7d18d61ef36ec994719d2519687dc75e5ec27205702395a8af112bda720b7a62072aa
DIST plexmediaserver_1.13.5.5332-21ab172de_amd64.deb 111528536 BLAKE2B ae0f10f3ad5ce72795ee9136c4049f33653080ece7268c59671fbb3f7dd54cb86cd97552288ee3f4e92c87d69f34c0f679912e2c2838e0e04be7a7b5f7f434d9 SHA512 46c441037718fc4ec91c4eefc9ab7f6fbf45d3f40d781b342d7563ce60e7949cfabaad9377e3dd4bd95d97760b48f9bbe61a5e6861bf43aac0debf50f304ecff
DIST plexmediaserver_1.13.5.5332-21ab172de_i386.deb 100253918 BLAKE2B aeaadb6e1972b50c27643bae87575bdd06826381bc7f9c1625209b1f89a4036908a134bc4012a340850096917c40d8feab50c565cade5559c2d9aaec4c709a01 SHA512 28fc2089d9d53c2e92b828880118d7382156e9315bbb9cd09187d44b3f7576e168e28195faed96f1ef85d30c7f820665f04b3e3527645c56a4c8e7ffaab362c0
DIST plexmediaserver_1.13.6.283-9e747cb50_amd64.deb 175773540 BLAKE2B 6fa915fa1d83637aa49032e7ead6d61af685620fac3756e4e30e96c882d0e1ea55bff04404d3f28c458c0c03132ecf3d95d45fe805c7b149881114c079d57bac SHA512 1c94b5ef72a182ba7343acf47fd825530e6c9218ddfd66dc1e95ae12d07153567b94324675c996fa7fa54d8de205941506691401e521ee393ccc249edb7e1b85
DIST plexmediaserver_1.13.6.283-9e747cb50_i386.deb 177171376 BLAKE2B d406fb275137966157d145bc778af22b4fe68fe658fa275b7ef6b8095d4e9f034c357f11a0c853f9010bbc8ee8215836c6b1abb421f9a609d959e4bd53abca71 SHA512 b7c78a3f9e00db7c364c23f796047755051e62030839d9a0624affd6274842df5ef8786d2765105b8f4f51909d434bc8282e7bdbd086d7d4a9fc0ad927de9318
DIST plexmediaserver_1.13.6.5339-115f087d6_amd64.deb 111277742 BLAKE2B 8bd17a9ce6f2b175d9d5be6451da52da3b32eaac618153a369a617382a7c30f86a3294ba35d0b47265daa98ed7ef7feeb0d7d99875daae7f98f3b2dbbf2922eb SHA512 fb4da93ddebfae1ef1f7046f6e7bb3935d7c625b3e616744d2295d14bf21761b281d8652ddff35fc4f9d6f910af88516101be4edf13445a0da618ff803019c63
DIST plexmediaserver_1.13.6.5339-115f087d6_i386.deb 100124696 BLAKE2B 5555d2684c9833dde84028ddb46c814386775c5a0789cc7971a2e221f5844334fffb8e2ce68a515e643f9f7c5addf5ef9c9e2b4cb8dd5578fc7c875b052a111c SHA512 7cf9db0c9f65129b8e345db4002d9aa939de6518f1e882ba7b218fdcbaafb8a522801c86e40531b852780dfa923ea115d32388e177286466ebdd523c4e9aad3f
DIST plexmediaserver_1.13.7.5369-93c9f1259_amd64.deb 111368104 BLAKE2B 4c687858543dfe1f212562be154ebf374af5a70603ddaac816401e797de3280b050ceb789954beb1f9151618a1e133f2833faa19401b4ddae0b2b229a690370d SHA512 1b2c38a08d5c6a0b7d17c75b131d61dda1e07156cbc27332a96edfca158baf41aa8d1d9e43ba38b2dc4f0f6e054a9dda50bfbb92e50e1a705f3207a2780ca899
DIST plexmediaserver_1.13.7.5369-93c9f1259_i386.deb 100156026 BLAKE2B c372028f03cd132cac09dc2edd9583278e42c4e37ae49fafec7570ec3cbcd3eb460c07f0b0f96caf298284233147661ef91d0ed1475be7d24f7b3e0f878685b9 SHA512 e124d27fc0037b86e2be9caff762030ff57aa67c575d9f2eb74f636029621f16e8c07fdeac2137018e4bcaeb652cb0320714c96e5cce689efef75f043ae4b4b2
EBUILD plex-media-server-1.13.5.5332.ebuild 5664 BLAKE2B 3fae456d02adabc12295cca46e121f7dc68c91dbecda360dbd3ae740ce71938cbef4bf08cb0032d4cc35427289d54daf968626fd7e2d4fd1a031682d00e2d622 SHA512 64d9e3f60e4807cce242e478b17c82ef6768d0bc2988da7c21a93b9602866c90b91491b7f777c065f762a0d382ff92e79e1f7a671f977292cbe38ff4f879ee6b
EBUILD plex-media-server-1.13.6.283.ebuild 5744 BLAKE2B f5fa97decc7d598c721b782ce185ecba28a3dca5bf1207c5c254fe4ae12ce73bcbe62afd798e4be257ddd79862a393f1634212a3d2b1c3061968852a6127d215 SHA512 37f9f387e39c0ab3b513af07439a7971ce2932822f4a22a32c727a33625f026197688e3941c23c03f50552e161e6808ba0f4cf62c41e58b71304be40c3ec450f
EBUILD plex-media-server-1.13.6.5339.ebuild 5666 BLAKE2B ac7430a7907b9323b008f0841bb46d10b37f010a7bdad27b76bbdffbeb16495bb904b12130b8c2799f18644a69c7a9a750a9766c9814dcf73c903fec3519930c SHA512 b3ec3d22789c7aed0a3bb99f221eeeba214b7654864774a83a5c26176146d556c4e374b18727582933d81c9522423adb0ebb91e2b4bff51ab474fcd97e0f7ee1
EBUILD plex-media-server-1.13.7.5369.ebuild 5726 BLAKE2B 42656cbeade371d92d017dc696243fd080dbd4bfa030d30323f96357bd5e1570a8dd4a9a35786a911c2779be13c1be16918c6297ad6f611abb0c989b5bafa534 SHA512 f2c9623265e8a933ef8e01ee6150cb23daf9f0ec1e8e0b94eb5afa91d204664b6438ed362d8fb37796ce080c84a5c2f033928b1d9fb1ef93988188609c06324d
MISC metadata.xml 835 BLAKE2B 9db26d47ea1fcf7f239ad919924c8c6e5f3e646ed66a5a3b61e02e9af2ed385a4e6789043c251bbd931bb7000bf7ef6b1483145dbc252b700a62aa49b14e00b2 SHA512 ac1ea4724db0eaaeb14b8fef47d9082eb12cc8ecd8f1a8987ae3311c04ebe11e79f34aec314536e27fb78bbfb42a59968aa2779676236855954cea59f26a78b3
194 changes: 194 additions & 0 deletions media-tv/plex-media-server/plex-media-server-1.13.6.283.ebuild
Original file line number Diff line number Diff line change
@@ -0,0 +1,194 @@
# Copyright 1999-2018 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2

EAPI=6

PYTHON_COMPAT=( python2_7 )
inherit eutils user systemd unpacker pax-utils python-single-r1

COMMIT="9e747cb50"

_APPNAME="plexmediaserver"
_USERNAME="plex"
_SHORTNAME="${_USERNAME}"
_FULL_VERSION="${PV}-${COMMIT}"

URI="https://downloads.plex.tv/plex-media-server-new"

DESCRIPTION="A free media library that is intended for use with a plex client."
HOMEPAGE="http://www.plex.tv/"
SRC_URI="
amd64? ( ${URI}/${_FULL_VERSION}/debian/plexmediaserver_${_FULL_VERSION}_amd64.deb )
x86? ( ${URI}/${_FULL_VERSION}/debian/plexmediaserver_${_FULL_VERSION}_i386.deb )
"

SLOT="0"
LICENSE="Plex"
RESTRICT="mirror bindist strip"
KEYWORDS="-* ~amd64 ~x86"
REQUIRED_USE="${PYTHON_REQUIRED_USE}"

IUSE="pax_kernel system-openssl avahi"

DEPEND="
pax_kernel? ( sys-apps/fix-gnustack )
dev-python/virtualenv[${PYTHON_USEDEP}]"

RDEPEND="
avahi? ( net-dns/avahi )
system-openssl? ( dev-libs/openssl:0 )
${PYTHON_DEPS}"

QA_DESKTOP_FILE="usr/share/applications/plexmediamanager.desktop"
QA_PREBUILT="*"
QA_MULTILIB_PATHS=(
"usr/lib/${_APPNAME}/.*"
"usr/lib/${_APPNAME}/Resources/Python/lib/python2.7/.*"
)

EXECSTACKED_BINS=( "${ED%/}/usr/lib/plexmediaserver/libgnsdk_dsp.so*" )
BINS_TO_PAX_MARK=(
"${ED%/}/usr/lib/plexmediaserver/Plex Script Host"
"${ED%/}/usr/lib/plexmediaserver/Plex Media Scanner"
)
BINS_TO_PAX_CREATE_FLAGS=( "${ED%/}/usr/lib/plexmediaserver/Resources/Python/bin/python" )

S="${WORKDIR}"
PATCHES=(
"${FILESDIR}/virtualenv_start_pms.patch"
"${FILESDIR}/plexmediamanager.desktop.patch"
)

pkg_setup() {
enewgroup ${_USERNAME}
enewuser ${_USERNAME} -1 /bin/bash /var/lib/${_APPNAME} "${_USERNAME},video"
python-single-r1_pkg_setup
}

src_unpack() {
unpack_deb ${A}
}

src_install() {
# Move the config to the correct place
local CONFIG_VANILLA="/etc/default/plexmediaserver"
local CONFIG_PATH="/etc/${_SHORTNAME}"
dodir "${CONFIG_PATH}"
insinto "${CONFIG_PATH}"
doins "${CONFIG_VANILLA#/}"
sed -e "s#${CONFIG_VANILLA}#${CONFIG_PATH}/${_APPNAME}#g" -i "${S}"/usr/sbin/start_pms || die

# Remove Debian specific files
rm -rf "usr/share/doc" || die

# Remove buggy openssl library
if use system-openssl; then
rm -f usr/lib/plexmediaserver/libssl.so.1.0.0 || die
fi

# 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
local LOGGING_DIR="/var/log/pms"
dodir "${LOGGING_DIR}"
chown "${_USERNAME}":"${_USERNAME}" "${ED%/}/${LOGGING_DIR}" || die
keepdir "${LOGGING_DIR}"

# Create default library folder with correct permissions
local DEFAULT_LIBRARY_DIR="/var/lib/${_APPNAME}"
dodir "${DEFAULT_LIBRARY_DIR}"
chown "${_USERNAME}":"${_USERNAME}" "${ED%/}/${DEFAULT_LIBRARY_DIR}" || die
keepdir "${DEFAULT_LIBRARY_DIR}"

# Install the OpenRC init/conf files depending on avahi.
if use avahi; then
doinitd "${FILESDIR}/init.d/${PN}"
else
cp "${FILESDIR}/init.d/${PN}" "${S}/${PN}";
sed -e '/depend/ s/^#*/#/' -i "${S}/${PN}"
sed -e '/need/ s/^#*/#/' -i "${S}/${PN}"
sed -e '1,/^}/s/^}/#}/' -i "${S}/${PN}"
doinitd "${S}/${PN}"
fi

doconfd "${FILESDIR}/conf.d/${PN}"

# Disabling due to Bug 644694
#_handle_multilib

# Mask Plex libraries so that revdep-rebuild doesn't try to rebuild them.
# Plex has its own precompiled libraries.
_mask_plex_libraries_revdep

# Install systemd service file
local INIT_NAME="${PN}.service"
local INIT="${FILESDIR}/systemd/${INIT_NAME}"
systemd_newunit "${INIT}" "${INIT_NAME}"

# Add PaX marking for hardened systems
if use pax_kernel; then
_remove_execstack_markings
_add_pax_markings
_add_pax_flags
fi

einfo "Configuring virtualenv"
virtualenv -v --no-pip --no-setuptools --no-wheel "${ED}"usr/lib/plexmediaserver/Resources/Python || die
pushd "${ED}"usr/lib/plexmediaserver/Resources/Python &>/dev/null || die
find . -type f -exec sed -i -e "s#${D}##g" {} + || die
popd &>/dev/null || die
}

pkg_postinst() {
einfo ""
elog "Plex Media Server is now installed. Please check the configuration file in /etc/${_SHORTNAME}/${_APPNAME} to verify the default settings."
elog "To start the Plex Server, run 'rc-config start plex-media-server', you will then be able to access your library at http://<ip>:32400/web/"
}

# Disabling the follow function due to Bug 644694.
# We shouldn't register plex libraries in global
# library path since this will cause other packages
# on the system to break.

# Finds out where the library directory is for this system
# and handles ldflags as to not break library dependencies
# during rebuilds.
_handle_multilib() {
# Prevent revdep-rebuild, @preserved-rebuild breakage
cat > "${T}"/66plex <<-EOF || die
LDPATH="${EPREFIX}/usr/$(get_libdir)/plexmediaserver"
EOF

doenvd "${T}"/66plex
}

# 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.
_mask_plex_libraries_revdep() {
dodir /etc/revdep-rebuild/
echo "SEARCH_DIRS_MASK=\"${EPREFIX}/usr/$(get_libdir)/plexmediaserver\"" > "${ED}"/etc/revdep-rebuild/80plexmediaserver
}

# Remove execstack flags from some libraries/executables
# so that it works in hardened setups.
_remove_execstack_markings() {
for f in "${EXECSTACKED_BINS[@]}"; do
# Unquoting 'f' so that expansion works.
fix-gnustack -f ${f} > /dev/null
done
}

# Add pax markings to some binaries so that they work on hardened setup.
_add_pax_markings() {
for f in "${BINS_TO_PAX_MARK[@]}"; do
pax-mark m "${f}"
done
}

# Create default PaX markings on virtualenvironment's pythin
_add_pax_flags() {
for f in "${BINS_TO_PAX_CREATE_FLAGS[@]}"; do
pax-mark c "${F}"
done
}
6 changes: 5 additions & 1 deletion profiles/package.mask
Original file line number Diff line number Diff line change
@@ -1 +1,5 @@
=media-tv/plex-media-server-1.12.2.4896
# Much faster (hopefully), smaller (mostly) and better PMS builds preview (1.13.6.283-9e747cb50)
#
# See https://forums.plex.tv/t/much-faster-hopefully-smaller-mostly-and-better-pms-builds-preview-1-13-6-283-9e747cb50/308294
#
=media-tv/plex-media-server-1.13.6.283

0 comments on commit f8a29d7

Please sign in to comment.