Skip to content

Commit

Permalink
games-puzzle/sgt-puzzles: Large changeset, fixes #593480
Browse files Browse the repository at this point in the history
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
  • Loading branch information
NP-Hardass committed Dec 12, 2016
1 parent e2f8910 commit 49e5e31
Show file tree
Hide file tree
Showing 6 changed files with 281 additions and 30 deletions.
1 change: 1 addition & 0 deletions games-puzzle/sgt-puzzles/Manifest
Original file line number Diff line number Diff line change
@@ -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
107 changes: 107 additions & 0 deletions games-puzzle/sgt-puzzles/files/sgt-puzzles-20161207-builtin-help.patch
Original file line number Diff line number Diff line change
@@ -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 <[email protected]>
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 <stdio.h>
#include <assert.h>
#include <stdlib.h>
@@ -10,6 +14,9 @@
#include <string.h>
#include <errno.h>
#include <math.h>
+#include <limits.h>
+#include <unistd.h>
+#include <locale.h>

#include <sys/time.h>
#include <sys/resource.h>
@@ -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 =

4 changes: 4 additions & 0 deletions games-puzzle/sgt-puzzles/files/sgt-puzzles.directory
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
[Desktop Entry]
Type=Directory
Name=Puzzles
Icon=sgt-puzzles_map
18 changes: 18 additions & 0 deletions games-puzzle/sgt-puzzles/files/sgt-puzzles.menu
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
<!DOCTYPE Menu PUBLIC "-//freedesktop//DTD Menu 1.0//EN"
"http://www.freedesktop.org/standards/menu-spec/menu-1.0.dtd">
<Menu>
<Name>Applications</Name>
<Menu>
<Name>Games</Name>
<Menu>
<Name>Puzzles</Name>
<Directory>sgt-puzzles.directory</Directory>
<Include>
<And>
<All></All>
<Category>sgt-puzzles</Category>
</And>
</Include>
</Menu> <!-- End Puzzles -->
</Menu> <!-- End Games -->
</Menu> <!-- End Applications -->
114 changes: 114 additions & 0 deletions games-puzzle/sgt-puzzles/sgt-puzzles-20161207.ebuild
Original file line number Diff line number Diff line change
@@ -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
}
67 changes: 37 additions & 30 deletions games-puzzle/sgt-puzzles/sgt-puzzles-99999999.ebuild
Original file line number Diff line number Diff line change
Expand Up @@ -2,64 +2,71 @@
# 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) ' ./" \
mkfiles.pl || die
./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() {
Expand All @@ -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
}

Expand Down

0 comments on commit 49e5e31

Please sign in to comment.