newt: Add new package

From the README:
Newt is a programming library for color text mode, widget based user
interfaces.  Newt can be used to add stacked windows, entry widgets,
checkboxes, radio buttons, labels, plain text fields, scrollbars,
etc., to text mode user interfaces.  Newt is based on the slang library.

Adapted from the old packages feed:
https://git.openwrt.org/?p=openwrt/svn-archive/packages.git;a=tree;f=libs/newt

Signed-off-by: Jeffery To <jeffery.to@gmail.com>
This commit is contained in:
Jeffery To 2019-04-30 20:35:13 +08:00
parent 46a658748d
commit 80c95fc082
5 changed files with 222 additions and 0 deletions

128
libs/newt/Makefile Normal file
View file

@ -0,0 +1,128 @@
#
# Copyright (C) 2006-2011 OpenWrt.org
# Copyright (C) 2011 SMBPhone Inc.
# Copyright (C) 2019 Jeffery To
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
#
include $(TOPDIR)/rules.mk
PKG_NAME:=newt
PKG_VERSION:=0.52.20
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://releases.pagure.org/newt
PKG_HASH:=8d66ba6beffc3f786d4ccfee9d2b43d93484680ef8db9397a4fb70b5adbb6dbc
PKG_LICENSE:=LGPL-2.0
PKG_LICENSE_FILES:=COPYING
PKG_CPE_ID:=cpe:/a:fedorahosted:newt
PKG_MAINTAINER:=Jeffery To <jeffery.to@gmail.com>
PKG_BUILD_PARALLEL:=1
PKG_INSTALL:=1
include $(INCLUDE_DIR)/package.mk
include ../../lang/python/python3-package.mk
define Package/newt/Default
TITLE:=Newt
URL:=https://pagure.io/newt
endef
define Package/newt/Default/description
Newt is a programming library for color text mode, widget based user
interfaces. Newt can be used to add stacked windows, entry widgets,
checkboxes, radio buttons, labels, plain text fields, scrollbars, etc.,
to text mode user interfaces. Newt is based on the slang library.
endef
define Package/libnewt
$(call Package/newt/Default)
SECTION:=libs
CATEGORY:=Libraries
TITLE+= library
DEPENDS:=+libslang2
endef
define Package/libnewt/description
$(call Package/newt/Default/description)
endef
define Package/whiptail
$(call Package/newt/Default)
SECTION:=utils
CATEGORY:=Utilities
TITLE:=Display dialog boxes from shell scripts
DEPENDS:=+libnewt +libpopt +libslang2
endef
define Package/whiptail/description
A lightweight replacement for the dialog command (dialog boxes from shell
scripts), based on libnewt.
endef
define Package/python3-newt
$(call Package/newt/Default)
SECTION:=lang
CATEGORY:=Languages
SUBMENU:=Python
TITLE+= module for Python
DEPENDS:=+libnewt +python3-light
VARIANT:=python3
endef
define Package/python3-newt/description
$(call Package/newt/Default/description)
This is the Newt module for Python 3.
endef
TARGET_CFLAGS+= $(FPIC)
CONFIGURE_ARGS+= \
--enable-largefile \
--with-python \
--without-tcl \
--without-gpm-support \
--with-colorsfile=/etc/newt/palette
CONFIGURE_VARS+= PYTHONVERS="python$(PYTHON3_VERSION)"
MAKE_VARS+= PYTHON_CONFIG_PATH="$(STAGING_DIR)/usr/bin"
Build/Compile=$(call Build/Compile/Default,)
define Build/InstallDev
$(INSTALL_DIR) $(1)/usr/include
$(CP) $(PKG_INSTALL_DIR)/usr/include/newt.h $(1)/usr/include/
$(INSTALL_DIR) $(1)/usr/lib
$(CP) $(PKG_INSTALL_DIR)/usr/lib/libnewt.{a,so*} $(1)/usr/lib/
$(INSTALL_DIR) $(1)/usr/lib/pkgconfig
$(CP) $(PKG_INSTALL_DIR)/usr/lib/pkgconfig/libnewt.pc $(1)/usr/lib/pkgconfig/
endef
define Package/libnewt/install
$(INSTALL_DIR) $(1)/usr/lib
$(CP) $(PKG_INSTALL_DIR)/usr/lib/libnewt.so* $(1)/usr/lib/
endef
define Package/whiptail/install
$(INSTALL_DIR) $(1)/usr/bin
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/whiptail $(1)/usr/bin/
endef
# Don't install files from usr/bin
Py3Package/python3-newt/install:=:
$(eval $(call BuildPackage,libnewt))
$(eval $(call BuildPackage,whiptail))
$(eval $(call Py3Package,python3-newt))
$(eval $(call BuildPackage,python3-newt))
$(eval $(call BuildPackage,python3-newt-src))

View file

@ -0,0 +1,10 @@
--- a/configure
+++ b/configure
@@ -3957,7 +3957,6 @@ if test "x$with_python" = "xno"; then
$as_echo "skipped" >&6; }
PYTHONVERS=
else
- PYTHONVERS=$(ls /usr/include/python*/Python.h 2> /dev/null | sed 's|.*\(python[0-9]*\.[0-9]*\).*|\1|g' | tr '\n' ' ')
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $PYTHONVERS" >&5
$as_echo "$PYTHONVERS" >&6; }
fi

View file

@ -0,0 +1,25 @@
--- a/Makefile.in
+++ b/Makefile.in
@@ -84,12 +84,7 @@ showkey: showkey.o $(LIBNEWT)
_snack.$(SOEXT): snack.c $(LIBNEWTSH)
@[ -n "$(PYTHONVERS)" ] && for ver in $(PYTHONVERS); do \
- pyconfig=$$ver-config; \
- if ! $$pyconfig --cflags > /dev/null 2>&1 && \
- python-config --cflags > /dev/null 2>&1; then \
- echo $$pyconfig not found, using python-config; \
- pyconfig=python-config; \
- fi; \
+ pyconfig=$(PYTHON_CONFIG_PATH)/$$ver-config; \
mkdir -p $$ver; \
PCFLAGS=`$$pyconfig --cflags`; \
PIFLAGS=`$$pyconfig --includes`; \
@@ -109,7 +104,7 @@ whiptcl.$(SOEXT): $(WHIPTCLOBJS) $(LIBNE
$(CC) -shared $(SHCFLAGS) $(LDFLAGS) -o whiptcl.$(SOEXT) $(WHIPTCLOBJS) -L. -lnewt $(LIBTCL) -lpopt $(LIBS)
$(LIBNEWT): $(LIBOBJS)
- ar rv $@ $^
+ $(AR) rv $@ $^
newt.o $(SHAREDDIR)/newt.o: newt.c Makefile

View file

@ -0,0 +1,24 @@
Author: Alastair McKinstry <mckinstry@debian.org>
Description: newtInit() should only be called once
Bug-Debian: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=557960
Forwarded: no
Last-Updated: 2014-06-11
--- a/snack.c
+++ b/snack.c
@@ -377,10 +377,15 @@ static snackWidget * snackWidgetNew (voi
}
static PyObject * initScreen(PyObject * s, PyObject * args) {
+ static int init_newt = 1;
suspend.cb = NULL;
suspend.data = NULL;
newtInit();
+ if (init_newt) {
+ newtInit();
+ init_newt = 0;
+ }
newtCls();
Py_INCREF(Py_None);

View file

@ -0,0 +1,35 @@
Author: Thomas Viehmann <tv@beamnet.de>
Description: Fix for python memory handling
Bug-Debian: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=445392
Last-Updated: 2014-06-11
Forwarded: no
--- a/snack.c
+++ b/snack.c
@@ -366,7 +366,7 @@ static PyTypeObject snackWidgetType = {
static snackWidget * snackWidgetNew (void) {
snackWidget * widget;
- widget = PyObject_NEW(snackWidget, &snackWidgetType);
+ widget = PyObject_New(snackWidget, &snackWidgetType);
if (!widget)
return NULL;
@@ -937,7 +937,7 @@ static snackForm * formCreate(PyObject *
if (help == Py_None)
help = NULL;
- form = PyObject_NEW(snackForm, &snackFormType);
+ form = PyObject_New(snackForm, &snackFormType);
form->fo = newtForm(NULL, help, 0);
return form;
@@ -949,7 +949,7 @@ static snackGrid * gridCreate(PyObject *
if (!PyArg_ParseTuple(args, "ii", &cols, &rows)) return NULL;
- grid = PyObject_NEW(snackGrid, &snackGridType);
+ grid = PyObject_New(snackGrid, &snackGridType);
grid->grid = newtCreateGrid(cols, rows);
return grid;