Dnia 9 czerwca 2016 14:19:43 CEST, NP-Hardass <np-hard...@gentoo.org> 
napisał(a):
>Greetings all,
>
>Sorry for the delay, had lots of recurrent hardware issues the last
>month or so.
>I will be adding this to the MATE project repo after I get your
>feedback, and then into Gentoo repo after I've had some users test out
>the new packages/eclass.
>
>Just a reminder/summary:
>There are 40-50 ebuilds in the MATE desktop environment, with a fair
>bit
>of overlap in the ebuild code, so I thought it best to create an eclass
>to handle that.  MATE is a fork of GNOME 2 so I used the gnome.org
>eclass as a reference for the mate-desktop.org eclass.  Additionally,
>there is much in MATE that is still very much in line with the gnome2
>eclass.  Rather than having to edit 40-50 ebuilds if we become
>divergent, I thought it more purdent to just create a separete mate_*
>namespace. For functions that are currently equivalent, my phase
>functions are stubs to the gnome2 phase functions.
>
>
>Thanks for taking the time to look these over and give your feedback.
>(Also, apologies for the thrown together email, I was having trouble
>getting git-send working to the mailing list)
>
>--
>NP-Hardass
>
>###############################################################################
>mate-desktop.org.eclass
>###############################################################################
>
>
># Copyright 1999-2016 Gentoo Foundation
># Distributed under the terms of the GNU General Public License v2
># $Id$
>
># @ECLASS: mate-desktop.org.eclass
># @MAINTAINER:
># m...@gentoo.org
># @AUTHOR:
># Authors: NP-Hardass <np-hard...@gentoo.org> based upon the gnome.org
>eclass.
># @BLURB: Helper eclass for mate-desktop.org hosted archives
># @DESCRIPTION:
># Provide a default SRC_URI and EGIT_REPO_URI for MATE packages as well
>as
># exporting some useful values like the MATE_BRANCH
>
># Old EAPIs are banned.
>case "${EAPI:-0}" in
>       5|6) ;;
>       *) die "EAPI=${EAPI} is not supported" ;;
>esac
>
>if [[ ${PV} == 9999 ]]; then
>       inherit git-r3
>else
>       inherit versionator
>fi
>
># Ensure availibility of xz-utils on old EAPIs
>if [[ "${EAPI:-0}" -lt "6" ]]; then

EAPI is not a number and must not be treated like a number.

>       DEPEND="app-arch/xz-utils"
>fi
>
># @ECLASS-VARIABLE: MATE_TARBALL_SUFFIX
># @INTERNAL
># @DESCRIPTION:
># All projects hosted on mate-desktop.org provide tarballs as tar.xz.
># Undefined in live ebuilds.
>[[ ${PV} != 9999 ]] && : ${MATE_TARBALL_SUFFIX:="xz"}

You should ask upstream to supply .tar.lz instead, so they don't harm their 
users.

>
># @ECLASS-VARIABLE: MATE_DESKTOP_ORG_PN
># @DESCRIPTION:
># Name of the package as hosted on mate-desktop.org.
># Leave unset if package name matches PN.
>: ${MATE_DESKTOP_ORG_PN:=$PN}
>
># @ECLASS-VARIABLE: MATE_DESKTOP_ORG_PV
># @DESCRIPTION:
># Package version string as listed on mate-desktop.org.
># Leave unset if package version string matches PV.
>: ${MATE_DESKTOP_ORG_PV:=$PV}
>
># @ECLASS-VARIABLE: MATE_BRANCH
># @DESCRIPTION:
># Major and minor numbers of the version number, unless live.
># If live ebuild, will be set to '9999'.
>if [[ ${PV} == 9999 ]]; then
>       : ${MATE_BRANCH:=9999}
>else
>       : ${MATE_BRANCH:=$(get_version_component_range 1-2)}
>fi

Unless I'm missing something, the 1-2 range will return 9999 in live version as 
well. Unless you are trying to avoid the inherit in the live ebuild -- then I 
don't think it's worth the extra code.

>
># Set SRC_URI or EGIT_REPO_URI based on whether live
>if [[ ${PV} == 9999 ]]; then
>       EGIT_REPO_URI="
>               https://github.com/mate-desktop/${MATE_DESKTOP_ORG_PN}.git
>               git://github.com/mate-desktop/${MATE_DESKTOP_ORG_PN}.git
>               http://github.com/mate-desktop/${MATE_DESKTOP_ORG_PN}.git

Does github actually support http?

>       "
>       SRC_URI=""
>else
>       
> SRC_URI="http://pub.mate-desktop.org/releases/${MATE_BRANCH}/${MATE_DESKTOP_ORG_PN}-${MATE_DESKTOP_ORG_PV}.tar.${MATE_TARBALL_SUFFIX}";
>fi
>
># Set HOMEPAGE for all ebuilds
>HOMEPAGE="http://mate-desktop.org";
>
># Set default SLOT for all ebuilds
>SLOT="0"

Don't do that. Ebuilds without explicit SLOT are less readable.

>
>
>###############################################################################
>mate.eclass
>###############################################################################
>
>
># Copyright 1999-2016 Gentoo Foundation
># Distributed under the terms of the GNU General Public License v2
># $Id$
>
># @ECLASS: mate.eclass
># @MAINTAINER:
># m...@gentoo.org
># @AUTHOR:
># Authors: NP-Hardass <np-hard...@gentoo.org> based upon the gnome2
># and autotools-utils eclasses
># @BLURB: Provides phases for MATE based packages.
># @DESCRIPTION:
># Exports portage base functions used by ebuilds written for packages
>using the
># MATE framework. Occassionally acts as a wrapper to gnome2 due to the
># fact that MATE is a GNOME fork. For additional functions, see
>gnome2-utils.eclass.
>
># Check EAPI only
>case "${EAPI:-0}" in
>       5|6) ;;
>       *) die "EAPI=${EAPI} is not supported" ;;
>esac
>
># Inherit happens below after declaration of GNOME2_LA_PUNT
>
># @ECLASS-VARIABLE: MATE_LA_PUNT
># @DESCRIPTION:
># Available values for MATE_LA_PUNT:
># - "no": will not clean any .la files
># - "yes": will run prune_libtool_files --modules
># - If it is not set, it will run prune_libtool_files
># MATE_LA_PUNT is a stub to GNOME2_LA_PUNT
>GNOME2_LA_PUNT=${MATE_LA_PUNT:-""}
>
>inherit gnome2 autotools mate-desktop.org
>
>case "${EAPI:-0}" in
>       5|6)
>               EXPORT_FUNCTIONS src_prepare src_configure src_install 
> pkg_preinst
>pkg_postinst pkg_postrm
>               ;;
>       *) die "EAPI=${EAPI} is not supported" ;;

It is already dead after the first check.

>esac
>
># Autotools requires our MATE m4 files
>DEPEND=">=mate-base/mate-common-${MATE_BRANCH}"
>
># @FUNCTION: python_cond_func_wrap
># @DESCRIPTION: Wraps a function for conditional python use, to run for
>each
># python implementation in the build directory.
>python_cond_func_wrap() {
>       if use python; then
>               python_foreach_impl run_in_build_dir "$@"
>       else
>               $@
>       fi
>}
>
># @ECLASS-VARIABLE: FORCE_AUTORECONF

Namespace needed.

># @DESCRIPTION:
># Available values for FORCE_AUTORECONF:
># - true: will always run eautoreconf
># - false: will default to automatic detect
># - If it is not set, it will default to false
>FORCE_AUTORECONF=${FORCE_AUTORECONF:-""}
>
># @FUNCTION: ematedocize
># @DESCRIPTION: A wrapper around mate-doc-common
>ematedocize() {
>       ebegin "Running mate-doc-common --copy"
>               mate-doc-common --copy || die
>       eend $?
>}
>
># @FUNCTION: want_mate_doc
># @DESCRIPTION:
># Returns true/false based on whether eautoreconf should call
># ematedocize
>want_mate_doc() {
>       grep -q USE_COMMON_DOC_BUILD autogen.sh

Did you really intend to match autogen.sh and not configure.ac or alike?

>}
>
># @FUNCTION: mate_src_prepare
># @DESCRIPTION:
># Call gnome2_src_prepare to handle environment setup and patching,
>then
># call eautoreconf if necessary
>mate_src_prepare() {
>       debug-print-function ${FUNCNAME} "$@"
>
>       local force_autoreconf=${FORCE_AUTORECONF:-false}
>       [[ ${PV} == 9999 ]] && force_autoreconf=true
>
>       gen_chksum() {
>               find '(' -name 'Makefile.am' \
>                       -o -name 'configure.ac' \
>                       -o -name 'configure.in' ')' \
>                       -exec cksum {} + | sort -k2
>       }
>
>       local chksum=$(gen_chksum)
>
>       gnome2_src_prepare "$@"
>
>       if ${force_autoreconf}

Don't execute random user-provided data.

> || [[ ${chksum} != $(gen_chksum) ]]; then
>               [[ want_mate_doc ]] && ematedocize

Missing ${}.

>               eautoreconf
>       fi
>}
>
># @FUNCTION: mate_src_configure
># @DESCRIPTION:
># MATE specific configure handling
># Stub to gnome2_src_configure()
>mate_src_configure() {
>       gnome2_src_configure "$@"
>}
>
># @FUNCTION: mate_src_install
># @DESCRIPTION:
># MATE specific install. Stub to gnome2_src_install
>mate_src_install() {
>       gnome2_src_install "$@"
>}
>
># @FUNCTION: mate_pkg_preinst
># @DESCRIPTION:
># Finds Icons, GConf and GSettings schemas for later handling in
>pkg_postinst
># Stub to gnome2_pkg_preinst
>mate_pkg_preinst() {
>       gnome2_pkg_preinst "$@"
>}
>
># @FUNCTION: mate_pkg_postinst
># @DESCRIPTION:
># Handle scrollkeeper, GConf, GSettings, Icons, desktop and mime
># database updates.
># Stub to gnome2_pkg_postinst
>mate_pkg_postinst() {
>       gnome2_pkg_postinst "$@"
>}
>
># @FUNCTION: mate_pkg_postrm
># @DESCRIPTION:
># Handle scrollkeeper, GSettings, Icons, desktop and mime database
>updates.
># Stub to gnome2_pkg_postrm
>mate_pkg_postrm() {
>       gnome2_pkg_postrm "$@"
>}


-- 
Best regards,
Michał Górny (by phone)

Reply via email to