[PATCH 0/2] xdg-utils && gnome2-utils EAPI 7 work

classic Classic list List threaded Threaded
7 messages Options
Reply | Threaded
Open this post in threaded view
|

[PATCH 0/2] xdg-utils && gnome2-utils EAPI 7 work

Marty E. Plummer
Just some simple changes to the eclasses to handle the fact that
${EROOT} no longer comes with a trailing / on EAPI 7 and use BDEPEND
where applicable. Better ideas and suggestions are greatly appreciated.

Marty E. Plummer (2):
  xdg-utils.eclass: make EAPI 7 ready
  gnome2-utils.eclass: make EAPI 7 ready

 eclass/xdg-utils.eclass    | 10 ++++-----
 eclass/gnome2-utils.eclass | 43 +++++++++++++++++++-------------------
 2 files changed, 27 insertions(+), 26 deletions(-)

--
2.17.1


Reply | Threaded
Open this post in threaded view
|

[PATCH 2/2] xdg-utils.eclass: make EAPI 7 ready

Marty E. Plummer
Use ${EROOT%/} whereever possible, as the tools and directories which
are used with it are already prefixed with a /

Signed-off-by: Marty E. Plummer <[hidden email]>
Package-Manager: Portage-2.3.40, Repoman-2.3.9
---
 eclass/xdg-utils.eclass | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/eclass/xdg-utils.eclass b/eclass/xdg-utils.eclass
index ac075185d8e..8dba5ed6861 100644
--- a/eclass/xdg-utils.eclass
+++ b/eclass/xdg-utils.eclass
@@ -15,7 +15,7 @@
 #  * XDG mime information database management
 
 case "${EAPI:-0}" in
- 0|1|2|3|4|5|6) ;;
+ 0|1|2|3|4|5|6|7) ;;
  *) die "EAPI=${EAPI} is not supported" ;;
 esac
 
@@ -66,7 +66,7 @@ xdg_environment_reset() {
 # Updates the .desktop files database.
 # Generates a list of mimetypes linked to applications that can handle them
 xdg_desktop_database_update() {
- local updater="${EROOT}${DESKTOP_DATABASE_UPDATE_BIN}"
+ local updater="${EROOT%/}${DESKTOP_DATABASE_UPDATE_BIN}"
 
  if [[ ${EBUILD_PHASE} != post* ]] ; then
  die "xdg_desktop_database_update must be used in pkg_post* phases."
@@ -78,7 +78,7 @@ xdg_desktop_database_update() {
  fi
 
  ebegin "Updating .desktop files database"
- "${updater}" -q "${EROOT}${DESKTOP_DATABASE_DIR}"
+ "${updater}" -q "${EROOT%/}${DESKTOP_DATABASE_DIR}"
  eend $?
 }
 
@@ -87,7 +87,7 @@ xdg_desktop_database_update() {
 # Update the mime database.
 # Creates a general list of mime types from several sources
 xdg_mimeinfo_database_update() {
- local updater="${EROOT}${MIMEINFO_DATABASE_UPDATE_BIN}"
+ local updater="${EROOT%/}${MIMEINFO_DATABASE_UPDATE_BIN}"
 
  if [[ ${EBUILD_PHASE} != post* ]] ; then
  die "xdg_mimeinfo_database_update must be used in pkg_post* phases."
@@ -99,6 +99,6 @@ xdg_mimeinfo_database_update() {
  fi
 
  ebegin "Updating shared mime info database"
- "${updater}" "${EROOT}${MIMEINFO_DATABASE_DIR}"
+ "${updater}" "${EROOT%/}${MIMEINFO_DATABASE_DIR}"
  eend $?
 }
--
2.17.1


Reply | Threaded
Open this post in threaded view
|

[PATCH 1/2] gnome2-utils.eclass: make EAPI 7 ready

Marty E. Plummer
In reply to this post by Marty E. Plummer
Use ${EROOT%/} whereever possible, as most of the directories and files
used in conjunction with it have a leading /; add missing leading /
where apropriate. Put sys-apps/sed into BDEPEND if EAPI 7, as it need to
be executable on CBUILD.

Signed-off-by: Marty E. Plummer <[hidden email]>
Package-Manager: Portage-2.3.40, Repoman-2.3.9
---
 eclass/gnome2-utils.eclass | 43 +++++++++++++++++++-------------------
 1 file changed, 22 insertions(+), 21 deletions(-)

diff --git a/eclass/gnome2-utils.eclass b/eclass/gnome2-utils.eclass
index 65076ae2d61..4204dac2956 100644
--- a/eclass/gnome2-utils.eclass
+++ b/eclass/gnome2-utils.eclass
@@ -18,7 +18,7 @@
 inherit eutils xdg-utils
 
 case "${EAPI:-0}" in
- 0|1|2|3|4|5|6) ;;
+ 0|1|2|3|4|5|6|7) ;;
  *) die "EAPI=${EAPI} is not supported" ;;
 esac
 
@@ -82,8 +82,9 @@ esac
 # @DESCRIPTION:
 # List of gdk-pixbuf loaders provided by the package
 
-DEPEND=">=sys-apps/sed-4"
-
+# sed needs to be executable on the build system
+BDEPEND=">=sys-apps/sed-4"
+[[ ${EAPI:-0} == [0123456] ]] && DEPEND="${BDEPEND}"
 
 # @FUNCTION: gnome2_environment_reset
 # @DESCRIPTION:
@@ -101,7 +102,7 @@ gnome2_environment_reset() {
  # Ensure we don't rely on dconf/gconf while building, bug #511946
  export GSETTINGS_BACKEND="memory"
 
- if has ${EAPI:-0} 6; then
+ if has ${EAPI:-0} 6 7; then
  # Try to cover the packages honoring this variable, bug #508124
  export GST_INSPECT="$(type -P true)"
 
@@ -129,7 +130,7 @@ gnome2_gconf_savelist() {
 # This function should be called from pkg_postinst.
 gnome2_gconf_install() {
  has ${EAPI:-0} 0 1 2 && ! use prefix && EROOT="${ROOT}"
- local updater="${EROOT}${GCONFTOOL_BIN}"
+ local updater="${EROOT%/}${GCONFTOOL_BIN}"
 
  if [[ ! -x "${updater}" ]]; then
  debug-print "${updater} is not executable"
@@ -149,9 +150,9 @@ gnome2_gconf_install() {
 
  local F
  for F in ${GNOME2_ECLASS_SCHEMAS}; do
- if [[ -e "${EROOT}${F}" ]]; then
+ if [[ -e "${EROOT%/}${F}" ]]; then
  debug-print "Installing schema: ${F}"
- "${updater}" --makefile-install-rule "${EROOT}${F}" 1>/dev/null
+ "${updater}" --makefile-install-rule "${EROOT%/}${F}" 1>/dev/null
  fi
  done
 
@@ -170,7 +171,7 @@ gnome2_gconf_install() {
 # database.
 gnome2_gconf_uninstall() {
  has ${EAPI:-0} 0 1 2 && ! use prefix && EROOT="${ROOT}"
- local updater="${EROOT}${GCONFTOOL_BIN}"
+ local updater="${EROOT%/}${GCONFTOOL_BIN}"
 
  if [[ ! -x "${updater}" ]]; then
  debug-print "${updater} is not executable"
@@ -189,9 +190,9 @@ gnome2_gconf_uninstall() {
 
  local F
  for F in ${GNOME2_ECLASS_SCHEMAS}; do
- if [[ -e "${EROOT}${F}" ]]; then
+ if [[ -e "${EROOT%/}${F}" ]]; then
  debug-print "Uninstalling gconf schema: ${F}"
- "${updater}" --makefile-uninstall-rule "${EROOT}${F}" 1>/dev/null
+ "${updater}" --makefile-uninstall-rule "${EROOT%/}${F}" 1>/dev/null
  fi
  done
 
@@ -224,7 +225,7 @@ gnome2_icon_savelist() {
 # This function should be called from pkg_postinst and pkg_postrm.
 gnome2_icon_cache_update() {
  has ${EAPI:-0} 0 1 2 && ! use prefix && EROOT="${ROOT}"
- local updater="${EROOT}${GTK_UPDATE_ICON_CACHE}"
+ local updater="${EROOT%/}${GTK_UPDATE_ICON_CACHE}"
 
  if [[ ! -x "${updater}" ]] ; then
  debug-print "${updater} is not executable"
@@ -339,7 +340,7 @@ gnome2_scrollkeeper_savelist() {
 # This function should be called from pkg_postinst and pkg_postrm.
 gnome2_scrollkeeper_update() {
  has ${EAPI:-0} 0 1 2 && ! use prefix && EROOT="${ROOT}"
- local updater="${EROOT}${SCROLLKEEPER_UPDATE_BIN}"
+ local updater="${EROOT%/}${SCROLLKEEPER_UPDATE_BIN}"
 
  if [[ ! -x "${updater}" ]] ; then
  debug-print "${updater} is not executable"
@@ -352,7 +353,7 @@ gnome2_scrollkeeper_update() {
  fi
 
  ebegin "Updating scrollkeeper database ..."
- "${updater}" -q -p "${EROOT}${SCROLLKEEPER_DIR}"
+ "${updater}" -q -p "${EROOT%/}${SCROLLKEEPER_DIR}"
  eend $?
 }
 
@@ -376,7 +377,7 @@ gnome2_schemas_savelist() {
 # This function should be called from pkg_postinst and pkg_postrm.
 gnome2_schemas_update() {
  has ${EAPI:-0} 0 1 2 && ! use prefix && EROOT="${ROOT}"
- local updater="${EROOT}${GLIB_COMPILE_SCHEMAS}"
+ local updater="${EROOT%/}${GLIB_COMPILE_SCHEMAS}"
 
  if [[ ! -x ${updater} ]]; then
  debug-print "${updater} is not executable"
@@ -407,10 +408,10 @@ gnome2_gdk_pixbuf_savelist() {
 # This function should be called from pkg_postinst and pkg_postrm.
 gnome2_gdk_pixbuf_update() {
  has ${EAPI:-0} 0 1 2 && ! use prefix && EROOT="${ROOT}"
- local updater="${EROOT}/usr/bin/${CHOST}-gdk-pixbuf-query-loaders"
+ local updater="${EROOT%/}/usr/bin/${CHOST}-gdk-pixbuf-query-loaders"
 
  if [[ ! -x ${updater} ]]; then
- updater="${EROOT}/usr/bin/gdk-pixbuf-query-loaders"
+ updater="${EROOT%/}/usr/bin/gdk-pixbuf-query-loaders"
  fi
 
  if [[ ! -x ${updater} ]]; then
@@ -427,7 +428,7 @@ gnome2_gdk_pixbuf_update() {
  local tmp_file=$(emktemp)
  ${updater} 1> "${tmp_file}" &&
  chmod 0644 "${tmp_file}" &&
- cp -f "${tmp_file}" "${EROOT}usr/$(get_libdir)/gdk-pixbuf-2.0/2.10.0/loaders.cache" &&
+ cp -f "${tmp_file}" "${EROOT%/}/usr/$(get_libdir)/gdk-pixbuf-2.0/2.10.0/loaders.cache" &&
  rm "${tmp_file}" # don't replace this with mv, required for SELinux support
  eend $?
 }
@@ -441,7 +442,7 @@ gnome2_query_immodules_gtk2() {
  [[ ! -x ${updater} ]] && updater=${EPREFIX}/usr/bin/gtk-query-immodules-2.0
 
  ebegin "Updating gtk2 input method module cache"
- GTK_IM_MODULE_FILE="${EROOT}usr/$(get_libdir)/gtk-2.0/2.10.0/immodules.cache" \
+ GTK_IM_MODULE_FILE="${EROOT%/}/usr/$(get_libdir)/gtk-2.0/2.10.0/immodules.cache" \
  "${updater}" --update-cache
  eend $?
 }
@@ -455,7 +456,7 @@ gnome2_query_immodules_gtk3() {
  [[ ! -x ${updater} ]] && updater=${EPREFIX}/usr/bin/gtk-query-immodules-3.0
 
  ebegin "Updating gtk3 input method module cache"
- GTK_IM_MODULE_FILE="${EROOT}usr/$(get_libdir)/gtk-3.0/3.0.0/immodules.cache" \
+ GTK_IM_MODULE_FILE="${EROOT%/}/usr/$(get_libdir)/gtk-3.0/3.0.0/immodules.cache" \
  "${updater}" --update-cache
  eend $?
 }
@@ -467,10 +468,10 @@ gnome2_query_immodules_gtk3() {
 # This function should be called from pkg_postinst and pkg_postrm.
 gnome2_giomodule_cache_update() {
  has ${EAPI:-0} 0 1 2 && ! use prefix && EROOT="${ROOT}"
- local updater="${EROOT}/usr/bin/${CHOST}-gio-querymodules"
+ local updater="${EROOT%/}/usr/bin/${CHOST}-gio-querymodules"
 
  if [[ ! -x ${updater} ]]; then
- updater="${EROOT}/usr/bin/gio-querymodules"
+ updater="${EROOT%/}/usr/bin/gio-querymodules"
  fi
 
  if [[ ! -x ${updater} ]]; then
--
2.17.1


Reply | Threaded
Open this post in threaded view
|

Re: [PATCH 1/2] gnome2-utils.eclass: make EAPI 7 ready

Ulrich Mueller-2
>>>>> On Sun, 17 Jun 2018, Marty E Plummer wrote:

> Signed-off-by: Marty E. Plummer <[hidden email]>

Please don't yet use Signed-off-by. Our policy on this (GLEP 76) is
still a draft and subject to change.
 
> -DEPEND=">=sys-apps/sed-4"
> -
> +# sed needs to be executable on the build system
> +BDEPEND=">=sys-apps/sed-4"
> +[[ ${EAPI:-0} == [0123456] ]] && DEPEND="${BDEPEND}"

These >=sed-4 dependencies are a relic from the time when there was a
sed-3. It left the tree in 2003 though.

So I suggest to remove this build-time dependency altogether.

Ulrich

attachment0 (501 bytes) Download Attachment
Reply | Threaded
Open this post in threaded view
|

Re: [PATCH 1/2] gnome2-utils.eclass: make EAPI 7 ready

Mart Raudsepp-2
Ühel kenal päeval, E, 18.06.2018 kell 08:01, kirjutas Ulrich Mueller:

> > > > > > On Sun, 17 Jun 2018, Marty E Plummer wrote:
> > Signed-off-by: Marty E. Plummer <[hidden email]>
>
> Please don't yet use Signed-off-by. Our policy on this (GLEP 76) is
> still a draft and subject to change.
>  
> > -DEPEND=">=sys-apps/sed-4"
> > -
> > +# sed needs to be executable on the build system
> > +BDEPEND=">=sys-apps/sed-4"
> > +[[ ${EAPI:-0} == [0123456] ]] && DEPEND="${BDEPEND}"
>
> These >=sed-4 dependencies are a relic from the time when there was a
> sed-3. It left the tree in 2003 though.
>
> So I suggest to remove this build-time dependency altogether.
I prefer being explicit, but that's probably a lost "battle" for sed,
so, OK, we can remove it instead.

Otherwise as a generic question for EAPI-7 support in other eclasses:
Doesn't this case leak a BDEPEND variable to ebuilds for lower EAPIs,
as there's no "unset BDEPEND" for the lower EAPIs. And is that OK?


I have various changes still in my TODO queue to both these eclasses,
and I need to get to those soon. So I suggest to wait with any pushing
of these to be done together, so metadata is invalidated only once.
I also would welcome help making these changes, to reduce the time
delta where these EAPI-7 support wouldn't be pushed due to this. If it
becomes unreasonably delayed, so ebuilds want to start using EAPI-7 for
these cases, then I guess it can be pushed once fixed up. But yeah, I
need the other changes within 1-2 weeks to start moving GNOME 3.26 to
tree.
That's about putting icon cache stuff to xdg-utils and xdg instead of
gnome* (Qt uses it too), some magic to avoid double calls if possible,
and some other changes that come out of gnome overlay gnome-
meson.eclass review (with the goal of perhaps not needing it in most
cases when combining with "inherit meson xdg" instead)


Mart

signature.asc (1000 bytes) Download Attachment
Reply | Threaded
Open this post in threaded view
|

Re: [PATCH 1/2] gnome2-utils.eclass: make EAPI 7 ready

Ulrich Mueller-2
>>>>> On Mon, 18 Jun 2018, Mart Raudsepp wrote:

> Ühel kenal päeval, E, 18.06.2018 kell 08:01, kirjutas Ulrich Mueller:
>> > > > > > On Sun, 17 Jun 2018, Marty E Plummer wrote:
>> > Signed-off-by: Marty E. Plummer <[hidden email]>
>>
>> Please don't yet use Signed-off-by. Our policy on this (GLEP 76) is
>> still a draft and subject to change.
>>
>> > -DEPEND=">=sys-apps/sed-4"
>> > -
>> > +# sed needs to be executable on the build system
>> > +BDEPEND=">=sys-apps/sed-4"
>> > +[[ ${EAPI:-0} == [0123456] ]] && DEPEND="${BDEPEND}"
>>
>> These >=sed-4 dependencies are a relic from the time when there
>> was a sed-3. It left the tree in 2003 though.
>>
>> So I suggest to remove this build-time dependency altogether.

> I prefer being explicit, but that's probably a lost "battle" for sed,
> so, OK, we can remove it instead.

sed is guaranteed to be available in the ebuild environment (as well
as bash, patch, and find):
https://projects.gentoo.org/pms/7/pms.html#x1-11800012.1.1

So in this special case the dependency is entirely redundant.

> Otherwise as a generic question for EAPI-7 support in other eclasses:
> Doesn't this case leak a BDEPEND variable to ebuilds for lower EAPIs,
> as there's no "unset BDEPEND" for the lower EAPIs. And is that OK?

IMHO it is not OK. Also "unset BDEPEND" in global scope is not
entirely clean, because BDEPEND is just a normal variable in older
EAPIs, and could be used by an ebuild.

For the eclasses that I have updated, I have done something along
these lines:

    DEPEND="cat-foo/bar"
    case ${EAPI:-0} in
        0|1|2|3|4|5|6) ;;
        *) BDEPEND="${DEPEND}"; DEPEND="" ;;
    esac

It simply assigns DEPEND in older EAPIs, and in EAPI 7 it assigns
BDEPEND. The additional DEPEND="" assignment should not harm, because
DEPEND is treated specially by the package manager and accumulated
across eclasses.

Ulrich

attachment0 (501 bytes) Download Attachment
Reply | Threaded
Open this post in threaded view
|

Re: [PATCH 1/2] gnome2-utils.eclass: make EAPI 7 ready

Pacho Ramos
In reply to this post by Marty E. Plummer
El dom, 17-06-2018 a las 19:47 -0500, Marty E. Plummer escribió:

> Use ${EROOT%/} whereever possible, as most of the directories and files
> used in conjunction with it have a leading /; add missing leading /
> where apropriate. Put sys-apps/sed into BDEPEND if EAPI 7, as it need to
> be executable on CBUILD.
>
> Signed-off-by: Marty E. Plummer <[hidden email]>
> Package-Manager: Portage-2.3.40, Repoman-2.3.9
> ---
>  eclass/gnome2-utils.eclass | 43 +++++++++++++++++++-------------------
>  1 file changed, 22 insertions(+), 21 deletions(-)
>

We would need to handle:
https://bugs.gentoo.org/615144#c12

to not need to workaround it in gimp ebuild (or any other using their customized
"DEPRECATED" macros) forever

I have also just seen this bug about needing to use EROOT in some tools:
https://bugs.gentoo.org/611030