From 49e5e31aabe16db2ee990d5e50701905ae2b4938 Mon Sep 17 00:00:00 2001 From: NP-Hardass Date: Thu, 8 Dec 2016 10:17:55 -0500 Subject: games-puzzle/sgt-puzzles: Large changeset, fixes #593480 Drop games eclass support Bump to EAPI=6 Rename binaries to avoid filename collisions Sort xdg menu entries In app help options Various ebuild improvements Package-Manager: portage-2.3.0 --- games-puzzle/sgt-puzzles/Manifest | 1 + .../files/sgt-puzzles-20161207-builtin-help.patch | 107 +++++++++++++++++++ .../sgt-puzzles/files/sgt-puzzles.directory | 4 + games-puzzle/sgt-puzzles/files/sgt-puzzles.menu | 18 ++++ .../sgt-puzzles/sgt-puzzles-20161207.ebuild | 114 +++++++++++++++++++++ .../sgt-puzzles/sgt-puzzles-99999999.ebuild | 67 ++++++------ 6 files changed, 281 insertions(+), 30 deletions(-) create mode 100644 games-puzzle/sgt-puzzles/files/sgt-puzzles-20161207-builtin-help.patch create mode 100644 games-puzzle/sgt-puzzles/files/sgt-puzzles.directory create mode 100644 games-puzzle/sgt-puzzles/files/sgt-puzzles.menu create mode 100644 games-puzzle/sgt-puzzles/sgt-puzzles-20161207.ebuild (limited to 'games-puzzle/sgt-puzzles') diff --git a/games-puzzle/sgt-puzzles/Manifest b/games-puzzle/sgt-puzzles/Manifest index 2550a33ad5c..c45233c4f26 100644 --- a/games-puzzle/sgt-puzzles/Manifest +++ b/games-puzzle/sgt-puzzles/Manifest @@ -1,2 +1,3 @@ DIST puzzles-20160315.c0bc13c.tar.gz 2838135 SHA256 fc557d3a1021a1e56ae63589d08788a8ccdfa1772e4c74cbbade5fefcf4e691f SHA512 9317ab26605982d5a97cec57596bd3e75cb1cb93b2bc14f6f295cf3950a759b21c5262e3eb04a3c3cda1d3d1cf4ff9477ee7fac9d310558567714e8e1cfc3496 WHIRLPOOL 7cc52ecabbfda7f71c64c02cc4ca434a20e637e25754d00b3f397318d0dd120aaf7ea19faafbb7eee259b7c2ca91e8e396d7667e4b1fa7fc6a153f15a69fb52f +DIST puzzles-20161207.b958129.tar.gz 2897516 SHA256 d8b93252c06a1fb25e0888e67b9e92a435a02fc746c89149e9cff77b44760ec3 SHA512 d937ebcf9aa7d4aa603a5ffec8bb2b3c533df855718288d380072b5e2518ed791eb5b23388c489e31decc9c25ef6a7b42b26fae5b76f1e75df246487d05a8d78 WHIRLPOOL 06f98af4e476421d3a6207f98de0851cdf4dae3446568c10808326acde24de8b54afb03c3667bef88ebdd3fba1d693993a64c0f2d6a2eeb8e43ff2ca32dc2c50 DIST sgt-puzzles-icons-20160315.tar.xz 715536 SHA256 9ddc1b6d02b3c3358a9bc6b17c7070650f794cf5f650f25b2ac7e5def6674447 SHA512 2fe2c02984eb8c36ac6fb4195be7895b336b84f40ce8baeb23dc8a32aca9937ccf1d33050b4da3cfba3c87e124ecbdd940ee4e990b37eabe8e2af897c2e23b57 WHIRLPOOL 17bdadc9519320bc88af27f2db7a9c243f04d80e524db51ad9398831185e2c66f2430006c324fa7d5b70ce156cb9df93d9405216053b32101b5f56035a60f6ac diff --git a/games-puzzle/sgt-puzzles/files/sgt-puzzles-20161207-builtin-help.patch b/games-puzzle/sgt-puzzles/files/sgt-puzzles-20161207-builtin-help.patch new file mode 100644 index 00000000000..a5c3a3695bd --- /dev/null +++ b/games-puzzle/sgt-puzzles/files/sgt-puzzles-20161207-builtin-help.patch @@ -0,0 +1,107 @@ +Based on http://sources.debian.net/patches/sgt-puzzles/20160429.b31155b-1/202_online-help.diff/ +Simply opens HTML help files with xdg-open + +Author: Ben Hutchings +Description: Add HTML-based online help + +This works along the same lines as the Windows implementation, +though we have to try a bit harder to find a help browser. + +--- a/gtk.c 2016-12-08 07:53:06.812409184 -0500 ++++ b/gtk.c 2016-12-08 07:58:06.426415886 -0500 +@@ -2,6 +2,10 @@ + * gtk.c: GTK front end for my puzzle collection. + */ + ++#ifndef _POSIX_C_SOURCE ++#define _POSIX_C_SOURCE 1 /* for PATH_MAX */ ++#endif ++ + #include + #include + #include +@@ -10,6 +14,9 @@ + #include + #include + #include ++#include ++#include ++#include + + #include + #include +@@ -2270,6 +2277,37 @@ + resize_fe(fe); + } + ++static void show_help(frontend *fe, const char *topic) ++{ ++ char path[PATH_MAX + 1]; ++ ++ sprintf(path, "%s/%s.html", HTMLDIR, topic); ++ if (access(path, R_OK) != 0) { ++ error_box(fe->window, "Help file could not be found"); ++ return; ++ } ++ ++ const char *argv[3]; ++ ++ argv[0] = "xdg-open"; ++ argv[1] = path; ++ argv[2] = NULL; ++ if (! g_spawn_async(NULL, (char **)argv, NULL, ++ G_SPAWN_SEARCH_PATH, ++ NULL, NULL, NULL, NULL)) ++ error_box(fe->window, "Failed to open help file"); ++} ++ ++static void menu_help_contents_event(GtkMenuItem *menuitem, gpointer data) ++{ ++ show_help((frontend *)data, "index"); ++} ++ ++static void menu_help_specific_event(GtkMenuItem *menuitem, gpointer data) ++{ ++ show_help((frontend *)data, thegame.htmlhelp_topic); ++} ++ + static void menu_about_event(GtkMenuItem *menuitem, gpointer data) + { + frontend *fe = (frontend *)data; +@@ -2590,6 +2628,25 @@ + menu = gtk_menu_new(); + gtk_menu_item_set_submenu(GTK_MENU_ITEM(menuitem), menu); + ++ menuitem = gtk_menu_item_new_with_label("Contents"); ++ gtk_container_add(GTK_CONTAINER(menu), menuitem); ++ g_signal_connect(G_OBJECT(menuitem), "activate", ++ G_CALLBACK(menu_help_contents_event), fe); ++ gtk_widget_show(menuitem); ++ ++ if (thegame.htmlhelp_topic) { ++ char *item; ++ assert(thegame.name); ++ item = snewn(9+strlen(thegame.name), char); /*ick*/ ++ sprintf(item, "Help on %s", thegame.name); ++ menuitem = gtk_menu_item_new_with_label(item); ++ sfree(item); ++ gtk_container_add(GTK_CONTAINER(menu), menuitem); ++ g_signal_connect(G_OBJECT(menuitem), "activate", ++ G_CALLBACK(menu_help_specific_event), fe); ++ gtk_widget_show(menuitem); ++ } ++ + menuitem = gtk_menu_item_new_with_label("About"); + gtk_container_add(GTK_CONTAINER(menu), menuitem); + g_signal_connect(G_OBJECT(menuitem), "activate", +--- a/Recipe ++++ b/Recipe +@@ -95,6 +95,7 @@ Puzzles.dmg: Puzzles + + !begin am + bin_PROGRAMS = $(GAMES) ++GTK_CFLAGS += -DHTMLDIR="\"$(htmldir)\"" + !end + !begin am_begin + GAMES = + diff --git a/games-puzzle/sgt-puzzles/files/sgt-puzzles.directory b/games-puzzle/sgt-puzzles/files/sgt-puzzles.directory new file mode 100644 index 00000000000..25aa1aefbf5 --- /dev/null +++ b/games-puzzle/sgt-puzzles/files/sgt-puzzles.directory @@ -0,0 +1,4 @@ +[Desktop Entry] +Type=Directory +Name=Puzzles +Icon=sgt-puzzles_map diff --git a/games-puzzle/sgt-puzzles/files/sgt-puzzles.menu b/games-puzzle/sgt-puzzles/files/sgt-puzzles.menu new file mode 100644 index 00000000000..ddcb2df5b6a --- /dev/null +++ b/games-puzzle/sgt-puzzles/files/sgt-puzzles.menu @@ -0,0 +1,18 @@ + + + Applications + + Games + + Puzzles + sgt-puzzles.directory + + + + sgt-puzzles + + + + + diff --git a/games-puzzle/sgt-puzzles/sgt-puzzles-20161207.ebuild b/games-puzzle/sgt-puzzles/sgt-puzzles-20161207.ebuild new file mode 100644 index 00000000000..7f49fa3ca3e --- /dev/null +++ b/games-puzzle/sgt-puzzles/sgt-puzzles-20161207.ebuild @@ -0,0 +1,114 @@ +# Copyright 1999-2016 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Id$ + +EAPI=6 + +inherit eutils gnome2-utils toolchain-funcs autotools + +if [[ ${PV} == "99999999" ]] ; then + inherit git-r3 + EGIT_REPO_URI="git://git.tartarus.org/simon/puzzles.git" + GENTOO_ICONS="20160315" + SRC_URI="https://dev.gentoo.org/~np-hardass/distfiles/${PN}/${PN}-icons-${GENTOO_ICONS}.tar.xz" + KEYWORDS="" +else + MAGIC=b958129 + SRC_URI="http://www.chiark.greenend.org.uk/~sgtatham/puzzles/puzzles-${PV}.${MAGIC}.tar.gz" + S=${WORKDIR}/puzzles-${PV}.${MAGIC} + KEYWORDS="~amd64 ~x86" +fi + +DESCRIPTION="Simon Tatham's Portable Puzzle Collection" +HOMEPAGE="http://www.chiark.greenend.org.uk/~sgtatham/puzzles/" + +LICENSE="MIT" +SLOT="0" +IUSE="+doc gtk3" + +COMMON_DEPEND=" + !gtk3? ( x11-libs/gtk+:2 ) + gtk3? ( x11-libs/gtk+:3 )" + +RDEPEND="${COMMON_DEPEND} + x11-misc/xdg-utils" # Used by builtin help patch + +DEPEND="${COMMON_DEPEND} + dev-lang/perl + virtual/pkgconfig + doc? ( >=app-doc/halibut-1.0 )" + +PATCHES=( "${FILESDIR}/${PN}-20161207-builtin-help.patch" ) + +src_unpack() { + default + if [[ ${PV} == "99999999" ]]; then + git-r3_src_unpack + fi +} + +src_prepare() { + default + + sed -i \ + -e 's/-O2 -Wall -Werror -ansi -pedantic -g//' \ + -e "s/libstr =/libstr = '\$(LDFLAGS) ' ./" \ + mkfiles.pl || die + ./mkfiles.pl || die + eautoreconf + + # Import icons from latest Gentoo tarball for live + if [[ ${PV} == "99999999" ]]; then + cp -R ../${PN}-icons/icons . || die + fi +} + +src_configure() { + econf \ + --program-prefix="${PN}_" \ + --with-gtk=$(usex gtk3 3 2) +} + +src_compile() { + emake CC="$(tc-getCC)" + if use doc ; then + halibut --text --html --info --pdf --ps puzzles.but || die + fi +} + +src_install() { + default + + local file name + for file in *.R ; do + [[ ${file} == "nullgame.R" ]] && continue + name=$(awk -F: '/exe:/ { print $3 }' "${file}") + file=${file%.R} + newicon -s 48 icons/${file}-48d24.png ${PN}_${file}.png + make_desktop_entry "${PN}_${file}" "${name}" "${PN}_${file}" "Game;LogicGame;${PN};" + done + + if use doc ; then + DOCS=( puzzles.{pdf,ps,txt} ) + HTML_DOCS=( *.html ) + einstalldocs + doinfo puzzles.info{,-1,-2,-3} + fi + + insinto /etc/xdg/menus/applications-merged + doins "${FILESDIR}/${PN}.menu" + insinto /usr/share/desktop-directories + doins "${FILESDIR}/${PN}.directory" +} + +pkg_preinst() { + gnome2_icon_savelist +} + +pkg_postinst() { + gnome2_icon_cache_update +} + +pkg_postrm() { + gnome2_icon_cache_update +} diff --git a/games-puzzle/sgt-puzzles/sgt-puzzles-99999999.ebuild b/games-puzzle/sgt-puzzles/sgt-puzzles-99999999.ebuild index 6f1a68daa7a..7f49fa3ca3e 100644 --- a/games-puzzle/sgt-puzzles/sgt-puzzles-99999999.ebuild +++ b/games-puzzle/sgt-puzzles/sgt-puzzles-99999999.ebuild @@ -2,49 +2,54 @@ # Distributed under the terms of the GNU General Public License v2 # $Id$ -EAPI=5 +EAPI=6 -inherit eutils gnome2-utils toolchain-funcs games autotools +inherit eutils gnome2-utils toolchain-funcs autotools if [[ ${PV} == "99999999" ]] ; then - EGIT_REPO_URI="git://git.tartarus.org/simon/puzzles.git" inherit git-r3 - SRC_URI="" + EGIT_REPO_URI="git://git.tartarus.org/simon/puzzles.git" + GENTOO_ICONS="20160315" + SRC_URI="https://dev.gentoo.org/~np-hardass/distfiles/${PN}/${PN}-icons-${GENTOO_ICONS}.tar.xz" KEYWORDS="" else - MAGIC=c0bc13c + MAGIC=b958129 SRC_URI="http://www.chiark.greenend.org.uk/~sgtatham/puzzles/puzzles-${PV}.${MAGIC}.tar.gz" S=${WORKDIR}/puzzles-${PV}.${MAGIC} KEYWORDS="~amd64 ~x86" fi -GENTOO_ICONS="20160315" -SRC_URI="${SRC_URI} - https://dev.gentoo.org/~np-hardass/distfiles/${PN}/${PN}-icons-${GENTOO_ICONS}.tar.xz -" - DESCRIPTION="Simon Tatham's Portable Puzzle Collection" HOMEPAGE="http://www.chiark.greenend.org.uk/~sgtatham/puzzles/" LICENSE="MIT" SLOT="0" -IUSE="doc gtk3 icons" +IUSE="+doc gtk3" -RDEPEND=" +COMMON_DEPEND=" !gtk3? ( x11-libs/gtk+:2 ) - gtk3? ( x11-libs/gtk+:3 ) -" -DEPEND="${RDEPEND} + gtk3? ( x11-libs/gtk+:3 )" + +RDEPEND="${COMMON_DEPEND} + x11-misc/xdg-utils" # Used by builtin help patch + +DEPEND="${COMMON_DEPEND} dev-lang/perl virtual/pkgconfig doc? ( >=app-doc/halibut-1.0 )" +PATCHES=( "${FILESDIR}/${PN}-20161207-builtin-help.patch" ) + src_unpack() { - [[ ${PV} == "99999999" ]] && git-r3_src_unpack - unpack ${A} + default + if [[ ${PV} == "99999999" ]]; then + git-r3_src_unpack + fi } src_prepare() { + default + sed -i \ -e 's/-O2 -Wall -Werror -ansi -pedantic -g//' \ -e "s/libstr =/libstr = '\$(LDFLAGS) ' ./" \ @@ -52,14 +57,16 @@ src_prepare() { ./mkfiles.pl || die eautoreconf - # Import icons from latest Gentoo tarball - if [[ ${PV} == "99999999" ]] || use icons; then + # Import icons from latest Gentoo tarball for live + if [[ ${PV} == "99999999" ]]; then cp -R ../${PN}-icons/icons . || die fi } src_configure() { - econf --with-gtk=$(usex gtk3 3 2) + econf \ + --program-prefix="${PN}_" \ + --with-gtk=$(usex gtk3 3 2) } src_compile() { @@ -70,35 +77,35 @@ src_compile() { } src_install() { - dodir "${GAMES_BINDIR}" - emake DESTDIR="${D}" bindir="${GAMES_BINDIR}" install - dodoc README + default local file name for file in *.R ; do [[ ${file} == "nullgame.R" ]] && continue name=$(awk -F: '/exe:/ { print $3 }' "${file}") file=${file%.R} - newicon -s 48 icons/${file}-48d24.png ${PN}-${file}.png - make_desktop_entry "${GAMES_BINDIR}/${file}" "${name}" "${PN}-${file}" + newicon -s 48 icons/${file}-48d24.png ${PN}_${file}.png + make_desktop_entry "${PN}_${file}" "${name}" "${PN}_${file}" "Game;LogicGame;${PN};" done if use doc ; then - dohtml *.html + DOCS=( puzzles.{pdf,ps,txt} ) + HTML_DOCS=( *.html ) + einstalldocs doinfo puzzles.info{,-1,-2,-3} - dodoc puzzles.pdf puzzles.ps puzzles.txt fi - prepgamesdirs + insinto /etc/xdg/menus/applications-merged + doins "${FILESDIR}/${PN}.menu" + insinto /usr/share/desktop-directories + doins "${FILESDIR}/${PN}.directory" } pkg_preinst() { - games_pkg_preinst gnome2_icon_savelist } pkg_postinst() { - games_pkg_postinst gnome2_icon_cache_update } -- cgit v1.2.1