mirror of
https://gitlab.com/buildroot.org/buildroot.git
synced 2026-09-30 22:11:59 -09:00
package/pocketpy: new package
It is a portable Python 3.x interpreter, written in C11. It has no dependencies other than the C standard library, which can be easily integrated into your C/C++ project Signed-off-by: Dario Binacchi <dario.binacchi@amarulasolutions.com> Signed-off-by: Romain Naour <romain.naour@smile.fr>
This commit is contained in:
committed by
Romain Naour
parent
c41f953ab9
commit
669f28ac0b
@@ -810,6 +810,7 @@ F: package/armadillo/
|
|||||||
F: package/babeld/
|
F: package/babeld/
|
||||||
F: package/iana-assignments/
|
F: package/iana-assignments/
|
||||||
F: package/inih/
|
F: package/inih/
|
||||||
|
F: package/pocketpy/
|
||||||
F: package/sscep/
|
F: package/sscep/
|
||||||
F: package/tinyinit/
|
F: package/tinyinit/
|
||||||
F: package/ufs-utils/
|
F: package/ufs-utils/
|
||||||
|
|||||||
@@ -969,6 +969,7 @@ if BR2_STATIC_LIBS
|
|||||||
comment "External PHP extensions need a toolchain w/ dynamic library"
|
comment "External PHP extensions need a toolchain w/ dynamic library"
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
|
source "package/pocketpy/Config.in"
|
||||||
source "package/python3/Config.in"
|
source "package/python3/Config.in"
|
||||||
if BR2_PACKAGE_PYTHON3
|
if BR2_PACKAGE_PYTHON3
|
||||||
menu "External python modules"
|
menu "External python modules"
|
||||||
|
|||||||
73
package/pocketpy/0001-fix-371.patch
Normal file
73
package/pocketpy/0001-fix-371.patch
Normal file
@@ -0,0 +1,73 @@
|
|||||||
|
From e2e3bdca6e79ce7be5607397c5f0152c28c7500b Mon Sep 17 00:00:00 2001
|
||||||
|
From: blueloveTH <blueloveth@foxmail.com>
|
||||||
|
Date: Sat, 7 Jun 2025 02:19:55 +0800
|
||||||
|
Subject: [PATCH] fix #371
|
||||||
|
|
||||||
|
Signed-off-by: Dario Binacchi <dario.binacchi@amarulasolutions.com>
|
||||||
|
Upstream: backport from https://github.com/pocketpy/pocketpy/commit/70e824a6b695e963621664589d1d00aeb182c018
|
||||||
|
---
|
||||||
|
include/pocketpy/pocketpy.h | 2 +-
|
||||||
|
src/interpreter/vm.c | 6 ++++--
|
||||||
|
src/public/modules.c | 2 +-
|
||||||
|
3 files changed, 6 insertions(+), 4 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/include/pocketpy/pocketpy.h b/include/pocketpy/pocketpy.h
|
||||||
|
index a44faa41a922..a6cb4f658f73 100644
|
||||||
|
--- a/include/pocketpy/pocketpy.h
|
||||||
|
+++ b/include/pocketpy/pocketpy.h
|
||||||
|
@@ -69,7 +69,7 @@ typedef struct py_Callbacks {
|
||||||
|
/// Used by `print` to output a string.
|
||||||
|
void (*print)(const char*);
|
||||||
|
/// Used by `input` to get a character.
|
||||||
|
- int (*getchar)();
|
||||||
|
+ int (*getchr)();
|
||||||
|
} py_Callbacks;
|
||||||
|
|
||||||
|
/// Native function signature.
|
||||||
|
diff --git a/src/interpreter/vm.c b/src/interpreter/vm.c
|
||||||
|
index 2bae82740ac7..2da28fa80730 100644
|
||||||
|
--- a/src/interpreter/vm.c
|
||||||
|
+++ b/src/interpreter/vm.c
|
||||||
|
@@ -29,6 +29,8 @@ static char* pk_default_importfile(const char* path) {
|
||||||
|
|
||||||
|
static void pk_default_print(const char* data) { printf("%s", data); }
|
||||||
|
|
||||||
|
+static int pk_default_getchr() { return getchar(); }
|
||||||
|
+
|
||||||
|
static void py_TypeInfo__ctor(py_TypeInfo* self,
|
||||||
|
py_Name name,
|
||||||
|
py_Type index,
|
||||||
|
@@ -67,7 +69,7 @@ void VM__ctor(VM* self) {
|
||||||
|
|
||||||
|
self->callbacks.importfile = pk_default_importfile;
|
||||||
|
self->callbacks.print = pk_default_print;
|
||||||
|
- self->callbacks.getchar = getchar;
|
||||||
|
+ self->callbacks.getchr = pk_default_getchr;
|
||||||
|
|
||||||
|
self->last_retval = *py_NIL();
|
||||||
|
self->curr_exception = *py_NIL();
|
||||||
|
@@ -810,7 +812,7 @@ int py_replinput(char* buf, int max_size) {
|
||||||
|
printf(">>> ");
|
||||||
|
|
||||||
|
while(true) {
|
||||||
|
- int c = pk_current_vm->callbacks.getchar();
|
||||||
|
+ int c = pk_current_vm->callbacks.getchr();
|
||||||
|
if(c == EOF) return -1;
|
||||||
|
|
||||||
|
if(c == '\n') {
|
||||||
|
diff --git a/src/public/modules.c b/src/public/modules.c
|
||||||
|
index 3efb362701e2..cdfd5549461a 100644
|
||||||
|
--- a/src/public/modules.c
|
||||||
|
+++ b/src/public/modules.c
|
||||||
|
@@ -205,7 +205,7 @@ static bool builtins_input(int argc, py_Ref argv) {
|
||||||
|
c11_sbuf buf;
|
||||||
|
c11_sbuf__ctor(&buf);
|
||||||
|
while(true) {
|
||||||
|
- int c = pk_current_vm->callbacks.getchar();
|
||||||
|
+ int c = pk_current_vm->callbacks.getchr();
|
||||||
|
if(c == '\n' || c == '\r') break;
|
||||||
|
if(c == EOF) break;
|
||||||
|
c11_sbuf__write_char(&buf, c);
|
||||||
|
--
|
||||||
|
2.43.0
|
||||||
|
|
||||||
9
package/pocketpy/Config.in
Normal file
9
package/pocketpy/Config.in
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
config BR2_PACKAGE_POCKETPY
|
||||||
|
bool "pocketpy"
|
||||||
|
depends on BR2_INSTALL_LIBSTDCPP
|
||||||
|
depends on !BR2_STATIC_LIBS # dlfcn.h
|
||||||
|
help
|
||||||
|
pocketpy is a portable Python 3.x interpreter,
|
||||||
|
written in C11.
|
||||||
|
|
||||||
|
https://github.com/pocketpy/pocketpy
|
||||||
3
package/pocketpy/pocketpy.hash
Normal file
3
package/pocketpy/pocketpy.hash
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
# locally computed
|
||||||
|
sha256 5e07994d66311a6b5ac032cc5243aaabe3ab318946971e7fa1cd0614934efc81 pocketpy-2.0.8.tar.gz
|
||||||
|
sha256 d3a2bf8ca609a75941e980e62c13cf5a21aeaa4a2502822934d282fe7de5d319 LICENSE
|
||||||
25
package/pocketpy/pocketpy.mk
Normal file
25
package/pocketpy/pocketpy.mk
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
################################################################################
|
||||||
|
#
|
||||||
|
# pocketpy
|
||||||
|
#
|
||||||
|
################################################################################
|
||||||
|
|
||||||
|
POCKETPY_VERSION = 2.0.8
|
||||||
|
POCKETPY_SITE = $(call github,pocketpy,pocketpy,v$(POCKETPY_VERSION))
|
||||||
|
POCKETPY_LICENSE = MIT
|
||||||
|
POCKETPY_LICENSE_FILES = LICENSE
|
||||||
|
POCKETPY_INSTALL_STAGING = YES
|
||||||
|
|
||||||
|
POCKETPY_CONF_OPTS = -DPK_BUILD_SHARED_LIB=ON
|
||||||
|
|
||||||
|
define POCKETPY_INSTALL_TARGET_CMDS
|
||||||
|
$(INSTALL) -D -m 0755 $(@D)/libpocketpy.so* $(TARGET_DIR)/usr/lib
|
||||||
|
endef
|
||||||
|
|
||||||
|
define POCKETPY_INSTALL_STAGING_CMDS
|
||||||
|
$(INSTALL) -D -m 0755 $(@D)/libpocketpy.so* $(STAGING_DIR)/usr/lib
|
||||||
|
$(INSTALL) -m 755 -d $(STAGING_DIR)/usr/include/pocketpy
|
||||||
|
cp -r $(@D)/include/* $(STAGING_DIR)/usr/include/pocketpy
|
||||||
|
endef
|
||||||
|
|
||||||
|
$(eval $(cmake-package))
|
||||||
Reference in New Issue
Block a user