From ffc7513c2b97c2368e90243da229048bea0d15cc Mon Sep 17 00:00:00 2001 From: Istvan Szenasi Date: Sat, 10 Aug 2024 22:57:39 +0200 Subject: [PATCH] app-emulation/x48ng: new package, HP48 emulator Signed-off-by: Istvan Szenasi --- app-emulation/x48ng/Manifest | 1 + .../files/x48ng-0_pre20240613-cflags.patch | 13 ++++ .../files/x48ng-0_pre20240613-luajit.patch | 15 +++++ .../files/x48ng-0_pre20240613-manpages.patch | 12 ++++ .../x48ng-0_pre20240613-setupscript.patch | 19 ++++++ app-emulation/x48ng/metadata.xml | 27 ++++++++ .../x48ng/x48ng-0_pre20240613.ebuild | 64 +++++++++++++++++++ 7 files changed, 151 insertions(+) create mode 100644 app-emulation/x48ng/Manifest create mode 100644 app-emulation/x48ng/files/x48ng-0_pre20240613-cflags.patch create mode 100644 app-emulation/x48ng/files/x48ng-0_pre20240613-luajit.patch create mode 100644 app-emulation/x48ng/files/x48ng-0_pre20240613-manpages.patch create mode 100644 app-emulation/x48ng/files/x48ng-0_pre20240613-setupscript.patch create mode 100644 app-emulation/x48ng/metadata.xml create mode 100644 app-emulation/x48ng/x48ng-0_pre20240613.ebuild diff --git a/app-emulation/x48ng/Manifest b/app-emulation/x48ng/Manifest new file mode 100644 index 0000000000..20d090d13b --- /dev/null +++ b/app-emulation/x48ng/Manifest @@ -0,0 +1 @@ +DIST x48ng-0_pre20240613.tar.gz 2636798 BLAKE2B f80ef1a89fbf6dcf157ec56f4be521fcb99655996bfc3b0b34de6885c82d47a037a8bbccce4992e8f5f5091b02561946428affc5856537be3f40483d9b73f909 SHA512 52cae6be049a0bb59ab5cf744cecdda9659c9ccb04ecf65a403a3a045bbafe95589d9dc75290849f1b8198032d8f4d7976275a3fcd9d99cd9c2766952eda7526 diff --git a/app-emulation/x48ng/files/x48ng-0_pre20240613-cflags.patch b/app-emulation/x48ng/files/x48ng-0_pre20240613-cflags.patch new file mode 100644 index 0000000000..ae6df00fbc --- /dev/null +++ b/app-emulation/x48ng/files/x48ng-0_pre20240613-cflags.patch @@ -0,0 +1,13 @@ +Keep original CFLAGS + +--- a/Makefile ++++ b/Makefile +@@ -31,7 +31,7 @@ WITH_SDL ?= yes + + OPTIM ?= 2 + +-CFLAGS = -std=c11 -g -O$(OPTIM) -I./src/ -D_GNU_SOURCE=1 -DVERSION_MAJOR=$(VERSION_MAJOR) -DVERSION_MINOR=$(VERSION_MINOR) -DPATCHLEVEL=$(PATCHLEVEL) ++CFLAGS += -std=c11 -g -O$(OPTIM) -I./src/ -D_GNU_SOURCE=1 -DVERSION_MAJOR=$(VERSION_MAJOR) -DVERSION_MINOR=$(VERSION_MINOR) -DPATCHLEVEL=$(PATCHLEVEL) + LIBS = -lm + + ### lua diff --git a/app-emulation/x48ng/files/x48ng-0_pre20240613-luajit.patch b/app-emulation/x48ng/files/x48ng-0_pre20240613-luajit.patch new file mode 100644 index 0000000000..f56dfc90d6 --- /dev/null +++ b/app-emulation/x48ng/files/x48ng-0_pre20240613-luajit.patch @@ -0,0 +1,15 @@ +Use luajit to avoid lua version specific pkg-config + +--- a/Makefile ++++ b/Makefile +@@ -35,8 +35,8 @@ CFLAGS = -std=c11 -g -O$(OPTIM) -I./src/ -D_GNU_SOURCE=1 -DVERSION_MAJOR=$(VERSI + LIBS = -lm + + ### lua +-CFLAGS += $(shell pkg-config --cflags lua) +-LIBS += $(shell pkg-config --libs lua) ++CFLAGS += $(shell pkg-config --cflags luajit) ++LIBS += $(shell pkg-config --libs luajit) + + ### debugger + CFLAGS += $(shell pkg-config --cflags readline) diff --git a/app-emulation/x48ng/files/x48ng-0_pre20240613-manpages.patch b/app-emulation/x48ng/files/x48ng-0_pre20240613-manpages.patch new file mode 100644 index 0000000000..7e08d79d91 --- /dev/null +++ b/app-emulation/x48ng/files/x48ng-0_pre20240613-manpages.patch @@ -0,0 +1,12 @@ +Don't zip man pages + +--- a/Makefile ++++ b/Makefile +@@ -180,7 +180,6 @@ install: all get-roms dist/config.lua + + install -m 755 -d -- $(DESTDIR)$(MANDIR)/man1 + sed "s|@VERSION@|$(VERSION_MAJOR).$(VERSION_MINOR).$(PATCHLEVEL)|g" dist/x48ng.man.1 > $(DESTDIR)$(MANDIR)/man1/x48ng.1 +- gzip -9 $(DESTDIR)$(MANDIR)/man1/x48ng.1 + + install -m 755 -d -- $(DESTDIR)$(DOCDIR) + cp -R AUTHORS LICENSE README* doc* romdump/ $(DESTDIR)$(DOCDIR) diff --git a/app-emulation/x48ng/files/x48ng-0_pre20240613-setupscript.patch b/app-emulation/x48ng/files/x48ng-0_pre20240613-setupscript.patch new file mode 100644 index 0000000000..6991387581 --- /dev/null +++ b/app-emulation/x48ng/files/x48ng-0_pre20240613-setupscript.patch @@ -0,0 +1,19 @@ +Replace the PREFIX placeholder to the /usr dir instead of the image dir + +--- a/Makefile ++++ b/Makefile +@@ -175,7 +175,7 @@ install: all get-roms dist/config.lua + install -c -m 755 dist/checkrom $(DESTDIR)$(PREFIX)/share/x48ng/checkrom + install -c -m 644 dist/hplogo.png $(DESTDIR)$(PREFIX)/share/x48ng/hplogo.png + cp -R dist/ROMs/ $(DESTDIR)$(PREFIX)/share/x48ng/ +- sed "s|@PREFIX@|$(PREFIX)|g" dist/setup-x48ng-home.sh > $(DESTDIR)$(PREFIX)/share/x48ng/setup-x48ng-home.sh ++ sed "s|@PREFIX@|/usr|g" dist/setup-x48ng-home.sh > $(DESTDIR)$(PREFIX)/share/x48ng/setup-x48ng-home.sh + chmod 755 $(DESTDIR)$(PREFIX)/share/x48ng/setup-x48ng-home.sh + + install -m 755 -d -- $(DESTDIR)$(MANDIR)/man1 +@@ -187,4 +187,4 @@ install: all get-roms dist/config.lua + install -c -m 644 dist/config.lua $(DESTDIR)$(DOCDIR)/config.lua + + install -m 755 -d -- $(DESTDIR)$(PREFIX)/share/applications +- sed "s|@PREFIX@|$(PREFIX)|g" dist/x48ng.desktop > $(DESTDIR)$(PREFIX)/share/applications/x48ng.desktop ++ sed "s|@PREFIX@|/usr|g" dist/x48ng.desktop > $(DESTDIR)$(PREFIX)/share/applications/x48ng.desktop diff --git a/app-emulation/x48ng/metadata.xml b/app-emulation/x48ng/metadata.xml new file mode 100644 index 0000000000..4b854a052c --- /dev/null +++ b/app-emulation/x48ng/metadata.xml @@ -0,0 +1,27 @@ + + + + + szeist@pm.me + + + This emulator is capable of providing a faithful replication of the + HP48. In order to do so, it requires a copy of the ROM software + from YOUR calculator. In order to avoid breaking copyright laws, + and upsetting HP, you MUST BE THE PROUD OWNER OF AN HP48 before + running this program. Of course you can run this program without a + copy of the ROM software in order to write trivial machine code + programs but you will not be able to access any of the calculator + functionality. + + Instructions on how to download a copy of the ROM are provided + later in this document. + + + X11 frontend + SDL fronted + + + gwenhael-le-moine/x48ng + + diff --git a/app-emulation/x48ng/x48ng-0_pre20240613.ebuild b/app-emulation/x48ng/x48ng-0_pre20240613.ebuild new file mode 100644 index 0000000000..5418df9d78 --- /dev/null +++ b/app-emulation/x48ng/x48ng-0_pre20240613.ebuild @@ -0,0 +1,64 @@ +# Copyright 1999-2024 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +DESCRIPTION="HP48 emulator" + +HOMEPAGE="https://github.com/gwenhael-le-moine/x48ng" + +GIT_COMMIT="c72a393498887f8628006d8a64fad31d23abd0d5" +SRC_URI="https://github.com/gwenhael-le-moine/x48ng/archive/${GIT_COMMIT}.tar.gz -> ${P}.tar.gz" +S="${WORKDIR}/${PN}-${GIT_COMMIT}" + +LICENSE="GPL-2" +SLOT="0" +KEYWORDS="~amd64" +IUSE="X sdl" + +RDEPEND="sys-libs/ncurses +dev-lang/luajit +sys-libs/readline +X? ( + x11-libs/libX11 + x11-libs/libXext +) +sdl? ( + =media-libs/libsdl-1.2* + media-libs/sdl-gfx +) +" +DEPEND="${RDEPEND}" + +PATCHES=( + "${FILESDIR}/x48ng-${PVR}-cflags.patch" + "${FILESDIR}/x48ng-${PVR}-luajit.patch" + "${FILESDIR}/x48ng-${PVR}-setupscript.patch" + "${FILESDIR}/x48ng-${PVR}-manpages.patch" +) + +src_compile() { + local conf + + if use X; then + conf+=" WITH_X11=yes" + else + conf+=" WITH_X11=no" + fi + + if use sdl; then + conf+=" WITH_SDL=yes" + else + conf+=" WITH_SDL=no" + fi + + emake ${conf} +} + +src_install() { + emake install PREFIX="${D}/usr" MANDIR="${D}/usr/share/man" DOCDIR="${D}/usr/share/doc/${P}" +} + +pkg_postinst() { + elog "Run /usr/share/x48ng/setup-x48ng-home.sh to setup your ~/.x48ng/. It sets up a HP 48GX with a 128KB card in port 1 and a 4MB card in port 2" +}