bintron-r1.eclass: a new take on installing electron
Signed-off-by: Alfred Wingate <parona@protonmail.com>
This commit is contained in:
parent
3bf51b9667
commit
2213df9dc5
162
eclass/bintron-r1.eclass
Normal file
162
eclass/bintron-r1.eclass
Normal file
@ -0,0 +1,162 @@
|
||||
# Copyright 2024 Gentoo Authors
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
|
||||
# @ECLASS: bintron-r1.eclass
|
||||
# @MAINTAINER:
|
||||
# src_prepare group
|
||||
# @AUTHOR:
|
||||
# Alfred Wingate <parona@protonmail.com>
|
||||
# @SUPPORTED_EAPIS: 8
|
||||
# @PROVIDES: chromium-2 xdg
|
||||
# @BLURB: Common configuration eclass for binary packages built with Electron
|
||||
# @DESCRIPTION:
|
||||
# This eclass is used in Electron packages ebuilds
|
||||
|
||||
case ${EAPI} in
|
||||
8) ;;
|
||||
*) die "${ECLASS}: EAPI ${EAPI:-0} not supported" ;;
|
||||
esac
|
||||
|
||||
if [[ ! ${_BINTRON_R1_ECLASS} ]]; then
|
||||
_BINTRON_R1_ECLASS=1
|
||||
|
||||
inherit chromium-2 xdg
|
||||
|
||||
IUSE="system-ffmpeg"
|
||||
|
||||
# musl support?
|
||||
RDEPEND="
|
||||
app-accessibility/at-spi2-core:2
|
||||
dev-libs/expat
|
||||
dev-libs/glib:2
|
||||
dev-libs/nspr
|
||||
dev-libs/nss
|
||||
media-libs/alsa-lib
|
||||
media-libs/mesa
|
||||
net-print/cups
|
||||
sys-apps/dbus
|
||||
sys-libs/glibc
|
||||
x11-libs/cairo
|
||||
x11-libs/gtk+:3
|
||||
x11-libs/libX11
|
||||
x11-libs/libXcomposite
|
||||
x11-libs/libXdamage
|
||||
x11-libs/libXext
|
||||
x11-libs/libXfixes
|
||||
x11-libs/libXrandr
|
||||
x11-libs/libdrm
|
||||
x11-libs/libxcb
|
||||
x11-libs/libxkbcommon
|
||||
x11-libs/pango
|
||||
system-ffmpeg? ( >=media-video/ffmpeg-4.3[chromium] )
|
||||
"
|
||||
BDEPEND="
|
||||
app-alternatives/gzip
|
||||
dev-util/patchelf
|
||||
"
|
||||
IDEPEND="
|
||||
sys-apps/file
|
||||
sys-apps/findutils
|
||||
"
|
||||
|
||||
# @VARIABLE: QA_PREBUILT
|
||||
# @INTERNAL
|
||||
# @DESCRIPTION:
|
||||
# QA variable
|
||||
|
||||
# @VARIABLE: QA_PRESTRIPPED
|
||||
# @INTERNAL
|
||||
# @DESCRIPTION:
|
||||
# QA variable
|
||||
|
||||
# The package will be already compiled,
|
||||
# also most likely the package will be pre-stripped too.
|
||||
QA_PREBUILT='*'
|
||||
QA_PRESTRIPPED='*'
|
||||
|
||||
# @ECLASS_VARIABLE: BINTRON_HOME
|
||||
# @DESCRIPTION:
|
||||
# Path where the package contents will we installed.
|
||||
: ${BINTRON_HOME:="/opt/${PN}/"}
|
||||
|
||||
# @ECLASS_VARIABLE: BINTRON_EXECUTABLES
|
||||
# @DESCRIPTION:
|
||||
# List of executable symlinks to create
|
||||
: ${BINTRON_EXECUTABLES:="${PN}"}
|
||||
|
||||
# @FUNCTION: bintron-r1_pkg_pretend
|
||||
# @DESCRIPTION:
|
||||
# Runs SUID and User namespace checks
|
||||
bintron-r1_pkg_pretend() {
|
||||
# see https://github.com/electron/electron/issues/17972
|
||||
chromium_suid_sandbox_check_kernel_config
|
||||
}
|
||||
|
||||
# @FUNCTION: bintron-r1_src_prepare
|
||||
# @DESCRIPTION:
|
||||
# Remove pak files.
|
||||
bintron-r1_src_prepare() {
|
||||
default
|
||||
|
||||
pushd locales >/dev/null || die "location change for language cleanup failed"
|
||||
chromium_remove_language_paks
|
||||
popd >/dev/null || die "location reset for language cleanup failed"
|
||||
|
||||
if [[ -d "${WORKDIR}/usr/share/doc/${PN}" ]]; then
|
||||
mv "${WORKDIR}/usr/share/doc/${PN}/" "${WORKDIR}/usr/share/doc/${PF}" || die
|
||||
fi
|
||||
|
||||
if [[ -e "${WORKDIR}/usr/share/doc/${PF}/changelog.gz" ]]; then
|
||||
pushd "${WORKDIR}/usr/share/doc/${PF}" >/dev/null || die
|
||||
unpack "${WORKDIR}"/usr/share/doc/${PF}/changelog.*
|
||||
rm "${WORKDIR}"/usr/share/doc/${PF}/changelog.*
|
||||
popd >/dev/null || die
|
||||
fi
|
||||
|
||||
if use system-ffmpeg; then
|
||||
rm libffmpeg.so || die
|
||||
|
||||
local file type
|
||||
for file in $(find .); do
|
||||
type=$(file -b --mime-type "${file}")
|
||||
case ${type} in
|
||||
application/x-sharedlib|application/x-pie-executable)
|
||||
patchelf --add-rpath /usr/$(get_libdir)/chromium ${file} || die
|
||||
;;
|
||||
esac
|
||||
done
|
||||
fi
|
||||
}
|
||||
|
||||
# @FUNCTION: bintron-r1_src_install
|
||||
# @DESCRIPTION:
|
||||
# Install
|
||||
bintron-r1_src_install() {
|
||||
insinto "${BINTRON_HOME}"
|
||||
|
||||
doins -r "${S}"/*
|
||||
|
||||
local file type
|
||||
for file in $(find .); do
|
||||
type=$(file -b --mime-type "${file}")
|
||||
|
||||
case ${type} in
|
||||
application/x-sharedlib|application/x-pie-executable|text/x-shellscript)
|
||||
fperms 0755 "${BINTRON_HOME}${file#./}"
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
for executable in ${BINTRON_EXECUTABLES[@]}; do
|
||||
dosym "${EPREFIX}${BINTRON_HOME%/}/${executable}" /usr/bin/${executable}
|
||||
done
|
||||
|
||||
if [[ -d ${WORKDIR}/usr/share ]]; then
|
||||
insinto /usr
|
||||
doins -r "${WORKDIR}"/usr/share
|
||||
fi
|
||||
}
|
||||
|
||||
fi
|
||||
|
||||
EXPORT_FUNCTIONS pkg_pretend src_prepare src_install
|
Loading…
Reference in New Issue
Block a user