>>>>> On Sat, 06 Oct 2018, Mykyta Holubakha wrote: > Signed-off-by: Mykyta Holubakha <hiloba...@gmail.com>
> I'm proposing to add a new eclass: appimage.eclass, to facilitate > extraction off AppImage bundles. The rationale is that some upstreams > have migrated to distributing their proprietary software exclusively as > AppImage bundles. (for instance dev-util/staruml-bin). Ask upstream to use a friendlier package format? > An example ebuild can be seen at https://git.io/fx3Mg > I'd like to ask the following questions: > 1. Can I put myself and proxy-maint under @MAINTAINER (or do I need to > find a gentoo dev)? You should contact proxy-maintainers in any case, because somebody needs to commit it for you. > 2. Are we OK with executing AppImage bundles downloaded from the > Internet (an alternative would be to implement a proper extractor > program, which would unpack the images without executing them, and add > it to DEPENDs). These are ELF binaries unpacking an included ISO 9660 image, right? Not sure if it's a good idea to execute those in src_unpack. Won't they require external dependencies to run? I have also looked at staruml-bin-3.0.2.ebuild (your example above) and I believe that it is highly problematic from a license point of view. The distfile includes bundled LGPL libraries without including their source, which means that it cannot be distributed. > --- > eclass/appimage.eclass | 69 > ++++++++++++++++++++++++++++++++++++++++++++++++++ > 1 file changed, 69 insertions(+) > create mode 100644 eclass/appimage.eclass > diff --git a/eclass/appimage.eclass b/eclass/appimage.eclass > new file mode 100644 > index 00000000000..454bdedc07b > --- /dev/null > +++ b/eclass/appimage.eclass > @@ -0,0 +1,69 @@ > +# Copyright 2018 Gentoo Foundation This should be "Gentoo Authors" by the new copyright policy. > +# Distributed under the terms of the GNU General Public License v2 > + > +# @ECLASS: appimage.eclass > +# @MAINTAINER: > +# maintainer-wan...@gentoo.org > +# @AUTHOR: > +# Mykyta Holubakha <hiloba...@gmail.com> > +# @BLURB: convenience eclass for extracting AppImage bundles > +# @DESCRIPTION: > +# This eclass provides a src_unpack function to extract AppImage bundles > + > +case "${EAPI:-0}" in The quotes are not needed. > + 6|7) > + ;; > + *) > + die "EAPI ${EAPI:-0} is not supported" > + ;; > +esac > + > +EXPORT_FUNCTIONS src_unpack > + > +# @VARIABLE: APPIMAGE_EXTRACT_DIR > +# @DEFAULT_UNSET: squashfs_root @DEFAULT_UNSET doesn't take any parameters. > +# @DESCRIPTION: > +# This variable specifies the directory, in which the AppImage bundle > +# is expected to be extracted. > + > +# @VARIABLE: APPIMAGE_EXTRACT_DEST > +# @DEFAULT_UNSET: ${P} > +# @DESCRIPTION: > +# This variable specifies the directory, to which the extracted image > +# will be moved. > + > +# @FUNCTION: appimage_src_unpack > +# @DESCRIPTION: > +# Unpack all the AppImage bundles from ${A} (with .appimage extension). > +# Other files are passed to regular unpack. > +appimage_src_unpack() { > + debug-print-function ${FUNCNAME} "${@}" > + > + local extract_dir="${APPIMAGE_EXTRACT_DIR:-squashfs-root}" > + local extract_dest="${APPIMAGE_EXTRACT_DEST:-${P}}" > + > + local f > + for f in ${A} > + do > + case "${f}" in No quotes here. > + *.appimage|*.AppImage) > + cp "${DISTDIR}/${f}" "${WORKDIR}" Add "|| die". > + debug-print "${FUNCNAME}: unpacking bundle ${f} > to ${extract_dest}" > + chmod +x "${f}" \ > + || die "Failed to add execute > permissions to bundle" > + "${WORKDIR}/${f}" --appimage-help >/dev/null > 2>/dev/null \ > + || die "Invalid AppImage bundle" > + "${WORKDIR}/${f}" --appimage-extract >/dev/null > 2>/dev/null \ > + || die "Failed to extract AppImage > bundle" See above, presumably it would be better to use an external tool for extraction. > + rm -f "${f}" || die "Failed to remove bundle > copy" > + mv "${extract_dir}" "${extract_dest}" \ > + || die "Failed to move AppImage bundle > to destination" > + ;; > + *) > + debug-print "${FUNCNAME}: falling back to > unpack for ${f}" > + unpack "${f}" > + ;; > + esac > + done > +} > + > -- > 2.15.1
signature.asc
Description: PGP signature