From patchwork Tue Jun 10 11:55:01 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Dario Binacchi X-Patchwork-Id: 4165 Return-Path: X-Original-To: linux-amarula@patchwork.amarulasolutions.com Delivered-To: linux-amarula@patchwork.amarulasolutions.com Received: from mail-ed1-f70.google.com (mail-ed1-f70.google.com [209.85.208.70]) by ganimede.amarulasolutions.com (Postfix) with ESMTPS id D782F3F171 for ; Tue, 10 Jun 2025 13:55:08 +0200 (CEST) Received: by mail-ed1-f70.google.com with SMTP id 4fb4d7f45d1cf-606b62ce2d4sf4600676a12.3 for ; Tue, 10 Jun 2025 04:55:08 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1749556508; cv=pass; d=google.com; s=arc-20240605; b=CJs1KS+STrmgmrJA596sTVoAXqX/KKdgJ6dFpzsF6HSrQcfJUgwJf/xOcZnRqSeAa3 LCbMsVqSlrYH3JJvc19TRs1cg0LPTEmwFtxMX+3fEtJGxc7sJiKnn5U1Rfi2W3o0LObr O9qhpeclvltDKa4UrbKWoyT2MtEpFXG9aSKYzzGaEAxR/R6/ZogyJBOizMA+5KAiI2RN uzNb27HCExzTpVdGJ3Sstp9Awlnd95wmx7nax6NOrYHWMqPVJnsEOMsXrJEag7Eylq7z 7AmLBc13BtXFqENAxlbDoV92WUuPicfcSzVOjlsK3jX3S243hDMFrg+VIhss8OSUp+U4 IAYQ== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=list-unsubscribe:list-archive:list-help:list-post:list-id :mailing-list:precedence:mime-version:message-id:date:subject:cc:to :from:dkim-signature; bh=JhurouWb96ZVaNHeS37c3XH3bLGcVN5F7lwdm45lNNs=; fh=3UXg5SrAqtMVilhjusDldiWdfZ4cpMhulHDHrbUFsAk=; b=R8OsA/RoXvmg+h6PSVwCWOEHBOINw2jpEmPFT3juFVW9X4B99MPyx4dYZXY+wwReru 316xd3gI1GmcdWgoZA1GY5VqjRUNv4KYf1sRPJDOzcqFZHoP2IJ/LbrrWvQ5SQa3Z9iQ lugVEeTnkvtSLB+9tZkH59smmHNg7jqu+an27kIijw7uRLchvEFXJhXtdJaVzsE9JiCX t5yOcD0eI9f4rj6OEzXlt899l/KTpqaAZd3pLi4ZQCpwlUudXbmMKPXjo0OG4bNqx6Ry NcvC7AxZKZUMqlXLgSnI7W4WSX48xsF5ulQu57X+CiFXvAT/uMy3QkVPEnEymnW/8cbG m/hw==; darn=patchwork.amarulasolutions.com ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@amarulasolutions.com header.s=google header.b=mvYyt4sQ; spf=pass (google.com: domain of dario.binacchi@amarulasolutions.com designates 209.85.220.41 as permitted sender) smtp.mailfrom=dario.binacchi@amarulasolutions.com; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=amarulasolutions.com; dara=pass header.i=@amarulasolutions.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amarulasolutions.com; s=google; t=1749556508; x=1750161308; darn=patchwork.amarulasolutions.com; h=list-unsubscribe:list-archive:list-help:list-post:list-id :mailing-list:precedence:x-original-authentication-results :x-original-sender:mime-version:message-id:date:subject:cc:to:from :from:to:cc:subject:date:message-id:reply-to; bh=JhurouWb96ZVaNHeS37c3XH3bLGcVN5F7lwdm45lNNs=; b=eud7wS2XpM4uXa3mpb1sYnFm+OMhBSKtbpst+Wfj89XyONOkk12qwoRyL8Pab0D7HZ Oll3rvbZU/SMB198jxgJV+Z4prJuAKrcCehfAntd+8XhbetF9vpphlxelgxsvLX5Gy1/ Ywv9gaLMmPUPWrBSTvZo+XWGoVlnwBzyX4hMs= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1749556508; x=1750161308; h=list-unsubscribe:list-archive:list-help:list-post :x-spam-checked-in-group:list-id:mailing-list:precedence :x-original-authentication-results:x-original-sender:mime-version :message-id:date:subject:cc:to:from:x-beenthere:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=JhurouWb96ZVaNHeS37c3XH3bLGcVN5F7lwdm45lNNs=; b=NpXIriwMJ/3O89T/TTs9FfYH/5qnhZSZNaRnN+UvNPsEDbQXkd4B1SFXSJK+b9SMr4 eKnXKgzd6BEGr5C20aSQh+qpMRupB4WuFfEV4Sgm5xy7t1ydYSsySU5xLZjN92Zy4T5q 3o+9oG8IsPL3IKkZ9A93EBEtj3pljHmhgTFtJWfK6/qehYkGhBfDMz/2z/pyZQqvQWpO qFaNygOLQK/SiIgZgrLm+e2H4/th87emgwXTFxNFJXp/YJN0ZlkXImN8dPUgIEqBJ3UU abh321u3xmEdJepPAS9zchgOjFN2jtbJJvI1i+I/YZOUO3XWZhFgYPZxX7wdreIiMFBK vSLg== X-Forwarded-Encrypted: i=2; AJvYcCUL4CS8RP1Fu8Y9GCI2jNo/K4GoDVOqJsI59EPAQpQR6prjdQoTZ3QJA6wgo2pqn9PNHnhuWHKwC3p4XS4s@patchwork.amarulasolutions.com X-Gm-Message-State: AOJu0YxksDbL07boCLYmsBZG8L+QK53OEVWM9NXDiYJUbR227a9slhMa cU4PtsumeFbLlYNtaDscSiwKWFFWsKceM+sJoSBUMc1JZ3ggXj3Zh0gQc2rzSS9kEvCORw== X-Google-Smtp-Source: AGHT+IGFn7NFgFDc4MpLwzqOwuFdyLkHXhz3QFFW8UygHdjVnPNA7CUp66WBnno/TJyHcHp6T9jxRw== X-Received: by 2002:a05:6402:90c:b0:607:e77:f840 with SMTP id 4fb4d7f45d1cf-6077489881cmr14144039a12.26.1749556508146; Tue, 10 Jun 2025 04:55:08 -0700 (PDT) X-BeenThere: linux-amarula@amarulasolutions.com; h=AZMbMZfA8uYAuB9pjSqXNxNMXoIXcKfQC5IZOZ3wRPZAbsYuVw== Received: by 2002:a05:6402:350a:b0:605:d962:6349 with SMTP id 4fb4d7f45d1cf-60724133787ls4088221a12.0.-pod-prod-01-eu; Tue, 10 Jun 2025 04:55:06 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCVqL7HjOXFyS27OwjFI5SHAvmHOdAcAIbU/IXeQWmtqNzbsZZs7L4VPBaoZnbowNXGUbz01YHibnDR/h4oy@amarulasolutions.com X-Received: by 2002:a17:907:60d1:b0:ad1:e4e9:6b4f with SMTP id a640c23a62f3a-ade1aa8e7dcmr1679282766b.36.1749556505906; Tue, 10 Jun 2025 04:55:05 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1749556505; cv=none; d=google.com; s=arc-20240605; b=PHs1/6JnIYk+G7Zto9G8oFRlRMVYc6nihSvTrYdXFoqfNWvnNkd5XaIAzY864tQ6UT caBcitChA83TDcrIWNFrUrTRThPSbPtC32i4bv50HRuHH9BnR6UXwWPbMGsBUBqdtiuD kd/teKq4rEILshPLZ6w+7OUCvba/cNX8FY54iLcT4f5379I2AwQ/nUAdgNRv7Ks7ecWi /Kiy9ftq53jt4roKu/Gahw09kA/qG927RYoRFVcq0/TXBLbulH2oEDTPO141mEZPumak 50s+AL4yw8BqlaWj1pYmkHcA6dSI9LlgzvYgHOClNBjRB3kQsdButL9AnWgMZJC6j7WN udVg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:dkim-signature; bh=XOnTq5jo4XBticOFXqldLUBpU+eZ3rMJa00wUSnMRuI=; fh=ph/xB6egi23rd4PgmjGaMqtWYIeKAuBctIbPSBUM2Lw=; b=ltatxQZ8M6hO3PAkxbo/GCN/eFDz9LC2RG48VKQkzbga3ttEwfy3cCzbfMNg1pvSu3 HD1jnJc565xDlHePxzvZlg7Q0VR6Th+30/++VfShCJPW6B7rQIUPOSeV+LEaOTkk6WH7 eY9LlR44T2FW29Av60HWBtHnSApnFyWZ6m0Jj0qy2I4gWs/JaMZEDmn6khn1JXaiqYkS Qt7RQNgFVZDq+e7t5mqK+MuUjzVRVxykFUNo80gA7CAXGR+36O+s3kdE6vJILHFF85TB 7jKSxGyZBQgBGtvf12Gt18Pf38PMqvWEBQvhnkLeLfflhZZ6+lCazAYk4GxSjZG7QM0N XiZw==; dara=google.com ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@amarulasolutions.com header.s=google header.b=mvYyt4sQ; spf=pass (google.com: domain of dario.binacchi@amarulasolutions.com designates 209.85.220.41 as permitted sender) smtp.mailfrom=dario.binacchi@amarulasolutions.com; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=amarulasolutions.com; dara=pass header.i=@amarulasolutions.com Received: from mail-sor-f41.google.com (mail-sor-f41.google.com. [209.85.220.41]) by mx.google.com with SMTPS id a640c23a62f3a-ade1d5ff225sor427868266b.0.2025.06.10.04.55.05 for (Google Transport Security); Tue, 10 Jun 2025 04:55:05 -0700 (PDT) Received-SPF: pass (google.com: domain of dario.binacchi@amarulasolutions.com designates 209.85.220.41 as permitted sender) client-ip=209.85.220.41; X-Forwarded-Encrypted: i=1; AJvYcCX8IsFn2Eux3VU5FaZfgp/hXtJHJ7EBtdBTVfA441zobI4sxKg34/qJ3QlmpYgm4dxHL2ZKC4jBurfRAyVI@amarulasolutions.com X-Gm-Gg: ASbGnctE5d72dfRpD4CEQUBzDyYfe9YEuW9rtop07na9jlQK0KCaYP8rS5dz5YzE5ZG u1PZ8NvcoXc9+uc8KgTsH64bCs6gKSorq7opQx6iVhUiJkeqA3gNO1qLRXUIbnJniaibCRArBvZ KJwvRBfxagvRIs43Ulpyi+nyxqnAdp+I7oLNnDaIqo2X+nIY/NzDJJPARyRq6++y5hi4SiIeB8c R+J6CbZ5eruO8jQfQgmn79czzadwxgZMhXeHRwdYLaj+4NUlOpOKCBPuESQgXk/BwuGSZS+zvzh CWJA7gJ1EMRhvuu2GX/SQaNxIFvnMdwROd0lRnVAAEzRQCNzd8RRSQ9tgkMhbyjDJJej+M0NS+5 /bXqM0PMbjXIX/DetdDW9EOvhdNw= X-Received: by 2002:a17:906:f5a9:b0:ad8:8529:4f86 with SMTP id a640c23a62f3a-ade1ab5ebe0mr1592275966b.58.1749556505292; Tue, 10 Jun 2025 04:55:05 -0700 (PDT) Received: from dario-ThinkPad-T14s-Gen-2i.. ([2.196.40.179]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-ade1dc1c788sm718374266b.101.2025.06.10.04.55.04 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 10 Jun 2025 04:55:04 -0700 (PDT) From: Dario Binacchi To: buildroot@buildroot.org Cc: Dario Binacchi , linux-amarula@amarulasolutions.com Subject: [PATCH v4 1/2] package/pocketpy: new package Date: Tue, 10 Jun 2025 13:55:01 +0200 Message-ID: <20250610115502.2483804-1-dario.binacchi@amarulasolutions.com> X-Mailer: git-send-email 2.43.0 MIME-Version: 1.0 X-Original-Sender: dario.binacchi@amarulasolutions.com X-Original-Authentication-Results: mx.google.com; dkim=pass header.i=@amarulasolutions.com header.s=google header.b=mvYyt4sQ; spf=pass (google.com: domain of dario.binacchi@amarulasolutions.com designates 209.85.220.41 as permitted sender) smtp.mailfrom=dario.binacchi@amarulasolutions.com; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=amarulasolutions.com; dara=pass header.i=@amarulasolutions.com Content-Type: text/plain; charset="UTF-8" Precedence: list Mailing-list: list linux-amarula@amarulasolutions.com; contact linux-amarula+owners@amarulasolutions.com List-ID: X-Spam-Checked-In-Group: linux-amarula@amarulasolutions.com X-Google-Group-Id: 476853432473 List-Post: , List-Help: , List-Archive: List-Unsubscribe: , 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 --- Changes v3 -> v4: - Replace 0001-Fix-getchar-helper.patch with 0001-fix-371.patch. Changes v2 -> v3: - Add package/pocketpy/0001-Fix-getchar-helper.patch. - Add depends on !BR2_STATIC_LIBS for dlfcn.h Changes v1 -> v2: - mv staging commands under POCKETPY_INSTALL_STAGING_CMDS hook. DEVELOPERS | 1 + package/Config.in | 1 + package/pocketpy/0001-fix-371.patch | 73 +++++++++++++++++++++++++++++ package/pocketpy/Config.in | 9 ++++ package/pocketpy/pocketpy.hash | 3 ++ package/pocketpy/pocketpy.mk | 25 ++++++++++ 6 files changed, 112 insertions(+) create mode 100644 package/pocketpy/0001-fix-371.patch create mode 100644 package/pocketpy/Config.in create mode 100644 package/pocketpy/pocketpy.hash create mode 100644 package/pocketpy/pocketpy.mk diff --git a/DEVELOPERS b/DEVELOPERS index a7bb3bd83460..46d24afceb71 100644 --- a/DEVELOPERS +++ b/DEVELOPERS @@ -811,6 +811,7 @@ F: package/armadillo/ F: package/babeld/ F: package/iana-assignments/ F: package/inih/ +F: package/pocketpy/ F: package/sscep/ F: package/tinyinit/ F: package/ufs-utils/ diff --git a/package/Config.in b/package/Config.in index 579b5ffc87d5..9aad65488a6c 100644 --- a/package/Config.in +++ b/package/Config.in @@ -968,6 +968,7 @@ if BR2_STATIC_LIBS comment "External PHP extensions need a toolchain w/ dynamic library" endif endif + source "package/pocketpy/Config.in" source "package/python3/Config.in" if BR2_PACKAGE_PYTHON3 menu "External python modules" diff --git a/package/pocketpy/0001-fix-371.patch b/package/pocketpy/0001-fix-371.patch new file mode 100644 index 000000000000..6d9e324ba762 --- /dev/null +++ b/package/pocketpy/0001-fix-371.patch @@ -0,0 +1,73 @@ +From e2e3bdca6e79ce7be5607397c5f0152c28c7500b Mon Sep 17 00:00:00 2001 +From: blueloveTH +Date: Sat, 7 Jun 2025 02:19:55 +0800 +Subject: [PATCH] fix #371 + +Signed-off-by: Dario Binacchi +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 + diff --git a/package/pocketpy/Config.in b/package/pocketpy/Config.in new file mode 100644 index 000000000000..b0bd0cafe008 --- /dev/null +++ b/package/pocketpy/Config.in @@ -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 diff --git a/package/pocketpy/pocketpy.hash b/package/pocketpy/pocketpy.hash new file mode 100644 index 000000000000..aabd5f077a2b --- /dev/null +++ b/package/pocketpy/pocketpy.hash @@ -0,0 +1,3 @@ +# locally computed +sha256 5e07994d66311a6b5ac032cc5243aaabe3ab318946971e7fa1cd0614934efc81 pocketpy-2.0.8.tar.gz +sha256 d3a2bf8ca609a75941e980e62c13cf5a21aeaa4a2502822934d282fe7de5d319 LICENSE diff --git a/package/pocketpy/pocketpy.mk b/package/pocketpy/pocketpy.mk new file mode 100644 index 000000000000..20a8e9ad1e20 --- /dev/null +++ b/package/pocketpy/pocketpy.mk @@ -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))