mirror of
https://github.com/gentoo-mirror/gentoo.git
synced 2026-09-24 17:09:10 -07:00
java-vm-2.eclass: use "eselect java-vm update" if available
Note that IDEPEND="app-eselect/eselect-java" is not absolutely perfect. This is for two reasons. First, IDEPEND is an EAPI 8 feature, while the java-vm-2.eclass currently also supports older EAPIs. However, in those older EAPIs there is no equivalent of IDEPEND. Furthermore, even with EAPIs supporting IDEPEND, while the install-time dependencies specified with IDEPEND are allowed to be called in pkg_preinst and pkg_postinst, the Package Manger Specification (PMS) stats that for the pkg_*rm phases, "ebuilds … must not rely on them being available" [1]. And the java-vm-2.eclass only calls "eselect java-vm update" in pkg_postrm. Therefore, a PMS adhering package manager is able to unmerge IDEPEND packages before any of the pkg_*rm phases are invoked. However, declaring an IDEPEND on eselect-java is the next best thing we can do. Also, a typical package manager will likely not pro-actively remove IDEPEND dependencies, so those are available in the pkg_*rm phases. And since there is no harm in stating the IDEPEND, we declare it. Thanks to Mike Gilbert (floppym) for valuable feedback. 1: PMS 2021-06-13 § 8.1 Dependency Classes - https://projects.gentoo.org/pms/8/pms.html#x1-720008.1 Closes: https://bugs.gentoo.org/853928 Signed-off-by: Florian Schmaus <flow@gentoo.org> Closes: https://github.com/gentoo/gentoo/pull/26069
This commit is contained in:
@@ -25,6 +25,7 @@ RDEPEND="
|
||||
"
|
||||
DEPEND="${RDEPEND}"
|
||||
BDEPEND="app-arch/unzip"
|
||||
IDEPEND="app-eselect/eselect-java"
|
||||
|
||||
if [[ ${EAPI} == 6 ]]; then
|
||||
DEPEND+=" ${BDEPEND}"
|
||||
@@ -88,14 +89,35 @@ java-vm-2_pkg_postinst() {
|
||||
xdg_desktop_database_update
|
||||
}
|
||||
|
||||
# @FUNCTION: has_eselect_java-vm_update
|
||||
# @INTERNAL
|
||||
# @DESCRIPTION:
|
||||
# Checks if an eselect-java version providing "eselect java-vm update"
|
||||
# is available.
|
||||
# @RETURN: 0 if >=app-eselect/eselect-java-0.5 is installed, 1 otherwise.
|
||||
has_eselect_java-vm_update() {
|
||||
local has_version_args="-b"
|
||||
if [[ ${EAPI} == 6 ]]; then
|
||||
has_version_args="--host-root"
|
||||
fi
|
||||
|
||||
has_version "${has_version_args}" ">=app-eselect/eselect-java-0.5"
|
||||
}
|
||||
|
||||
# @FUNCTION: java-vm-2_pkg_prerm
|
||||
# @DESCRIPTION:
|
||||
# default pkg_prerm
|
||||
#
|
||||
# Warn user if removing system-vm.
|
||||
# Does nothing if eselect-java-0.5 or newer is available. Otherwise,
|
||||
# warn user if removing system-vm.
|
||||
|
||||
java-vm-2_pkg_prerm() {
|
||||
if has_eselect_java-vm_update; then
|
||||
# We will potentially switch to a new Java system VM in
|
||||
# pkg_postrm().
|
||||
return
|
||||
fi
|
||||
|
||||
if [[ $(GENTOO_VM= java-config -f 2>/dev/null) == ${VMHANDLE} && -z ${REPLACED_BY_VERSION} ]]; then
|
||||
ewarn "It appears you are removing your system-vm! Please run"
|
||||
ewarn "\"eselect java-vm list\" to list available VMs, then use"
|
||||
@@ -108,10 +130,14 @@ java-vm-2_pkg_prerm() {
|
||||
# @DESCRIPTION:
|
||||
# default pkg_postrm
|
||||
#
|
||||
# Update mime database.
|
||||
# Invoke "eselect java-vm update" if eselect-java 0.5, or newer, is
|
||||
# available. Also update the mime database.
|
||||
|
||||
java-vm-2_pkg_postrm() {
|
||||
xdg_desktop_database_update
|
||||
if has_eselect_java-vm_update; then
|
||||
eselect java-vm update
|
||||
fi
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user