From 4c23be5abba57c1e96fd60bb88dcf3604b6b576189bdcd95c830cc034c5b6292 Mon Sep 17 00:00:00 2001 From: Dominik Heidler Date: Fri, 15 Aug 2025 08:25:38 +0000 Subject: [PATCH 1/3] =?UTF-8?q?-=20Version=201.26.0=20=20=20*=20Added=20ma?= =?UTF-8?q?chine.I2CTarget=20for=20creating=20I2C=20target=20devices=20on?= =?UTF-8?q?=20multiple=20ports.=20=20=20*=20New=20MCU=20support:=20STM32N6?= =?UTF-8?q?xx=20(800=20MHz,=20ML=20accel)=20&=20ESP32-C2=20(WiFi=20+=20BLE?= =?UTF-8?q?).=20=20=20*=20Major=20float=20accuracy=20boost=20(~28%=20?= =?UTF-8?q?=E2=86=92=20~98%),=20constant=20folding=20in=20compiler.=20=20?= =?UTF-8?q?=20*=20Optimized=20native/Viper=20emitters;=20reduced=20heap=20?= =?UTF-8?q?use=20for=20slices.=20=20=20*=20Time=20functions=20standardized?= =?UTF-8?q?=20(1970=E2=80=932099);=20new=20boards=20across=20ESP32,=20SAMD?= =?UTF-8?q?,=20STM32,=20Zephyr.=20=20=20*=20ESP32:=20ESP-IDF=205.4.2,=20fl?= =?UTF-8?q?ash=20auto-detect,=20PCNT=20class,=20LAN8670=20PHY.=20=20=20*?= =?UTF-8?q?=20RP2:=20compressed=20errors,=20better=20lightsleep,=20hard=20?= =?UTF-8?q?IRQ=20timers.=20=20=20*=20Zephyr=20v4.0.0:=20PWM,=20SoftI2C/SPI?= =?UTF-8?q?,=20BLE=20runtime=20services,=20boot.py/main.py=20support.=20?= =?UTF-8?q?=20=20*=20mpremote=20adds=20fs=20tree,=20improved=20df,=20porta?= =?UTF-8?q?ble=20config=20paths.=20=20=20*=20Updated=20lwIP,=20LittleFS,?= =?UTF-8?q?=20libhydrogen,=20stm32lib;=20expanded=20hardware/CI=20tests.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/micropython?expand=0&rev=53 --- .gitattributes | 23 ++ .gitignore | 1 + fix_re_sub_test_on_python3.13.patch | 46 +++ micropython-1.22.2.tar.xz | 3 + micropython-1.23.0.tar.xz | 3 + micropython-1.24.1.tar.xz | 3 + micropython-1.25.0.tar.xz | 3 + micropython-1.26.0.tar.xz | 3 + micropython-gcc15-string-initialization.patch | 231 ++++++++++++++ micropython.changes | 289 ++++++++++++++++++ micropython.spec | 134 ++++++++ prepare.sh | 36 +++ 12 files changed, 775 insertions(+) create mode 100644 .gitattributes create mode 100644 .gitignore create mode 100644 fix_re_sub_test_on_python3.13.patch create mode 100644 micropython-1.22.2.tar.xz create mode 100644 micropython-1.23.0.tar.xz create mode 100644 micropython-1.24.1.tar.xz create mode 100644 micropython-1.25.0.tar.xz create mode 100644 micropython-1.26.0.tar.xz create mode 100644 micropython-gcc15-string-initialization.patch create mode 100644 micropython.changes create mode 100644 micropython.spec create mode 100644 prepare.sh diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..9b03811 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,23 @@ +## Default LFS +*.7z filter=lfs diff=lfs merge=lfs -text +*.bsp filter=lfs diff=lfs merge=lfs -text +*.bz2 filter=lfs diff=lfs merge=lfs -text +*.gem filter=lfs diff=lfs merge=lfs -text +*.gz filter=lfs diff=lfs merge=lfs -text +*.jar filter=lfs diff=lfs merge=lfs -text +*.lz filter=lfs diff=lfs merge=lfs -text +*.lzma filter=lfs diff=lfs merge=lfs -text +*.obscpio filter=lfs diff=lfs merge=lfs -text +*.oxt filter=lfs diff=lfs merge=lfs -text +*.pdf filter=lfs diff=lfs merge=lfs -text +*.png filter=lfs diff=lfs merge=lfs -text +*.rpm filter=lfs diff=lfs merge=lfs -text +*.tbz filter=lfs diff=lfs merge=lfs -text +*.tbz2 filter=lfs diff=lfs merge=lfs -text +*.tgz filter=lfs diff=lfs merge=lfs -text +*.ttf filter=lfs diff=lfs merge=lfs -text +*.txz filter=lfs diff=lfs merge=lfs -text +*.whl filter=lfs diff=lfs merge=lfs -text +*.xz filter=lfs diff=lfs merge=lfs -text +*.zip filter=lfs diff=lfs merge=lfs -text +*.zst filter=lfs diff=lfs merge=lfs -text diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..57affb6 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +.osc diff --git a/fix_re_sub_test_on_python3.13.patch b/fix_re_sub_test_on_python3.13.patch new file mode 100644 index 0000000..bb05c7b --- /dev/null +++ b/fix_re_sub_test_on_python3.13.patch @@ -0,0 +1,46 @@ +From e73cf71a246ee456aac0f4d16167e0856846db6b Mon Sep 17 00:00:00 2001 +From: Alessandro Gatti +Date: Sat, 4 Jan 2025 15:00:28 +0100 +Subject: [PATCH] tests/extmod/re_sub.py: Fix test execution on Python 3.13. + +This commit fixes a test failure for `extmod/re_sub.py` where the code, +whilst being correct, would not make the test pass due to a newer +Python version than expected. + +On Python 3.13, running `tests/extmod/re_sub.py` would yield a +deprecation warning about `re.sub` not providing the match count as a +keyword parameter. This warning would be embedded in the expected test +result and thus the test would always fail. + +Co-authored-by: stijn +Signed-off-by: Alessandro Gatti +--- + tests/extmod/re_sub.py | 8 +++++++- + 1 file changed, 7 insertions(+), 1 deletion(-) + +diff --git a/tests/extmod/re_sub.py b/tests/extmod/re_sub.py +index 2c7c6c10f1a49..ecaa66d83d8a7 100644 +--- a/tests/extmod/re_sub.py ++++ b/tests/extmod/re_sub.py +@@ -10,6 +10,8 @@ + print("SKIP") + raise SystemExit + ++import sys ++ + + def multiply(m): + return str(int(m.group(0)) * 2) +@@ -47,7 +49,11 @@ def A(): + print(re.sub("a", "b", "c")) + + # with maximum substitution count specified +-print(re.sub("a", "b", "1a2a3a", 2)) ++if sys.implementation.name != "micropython": ++ # On CPython 3.13 and later the substitution count must be a keyword argument. ++ print(re.sub("a", "b", "1a2a3a", count=2)) ++else: ++ print(re.sub("a", "b", "1a2a3a", 2)) + + # invalid group + try: diff --git a/micropython-1.22.2.tar.xz b/micropython-1.22.2.tar.xz new file mode 100644 index 0000000..7f7fe38 --- /dev/null +++ b/micropython-1.22.2.tar.xz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bb3ba34848a7620663b6a7cba22af45d3056fc79328c2ceb943874b5478d8756 +size 81440532 diff --git a/micropython-1.23.0.tar.xz b/micropython-1.23.0.tar.xz new file mode 100644 index 0000000..407aeab --- /dev/null +++ b/micropython-1.23.0.tar.xz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0ab283c2fc98d466c1ff26692bee46abaeeab55d488a36fc3cb6372cb8fb390d +size 85748224 diff --git a/micropython-1.24.1.tar.xz b/micropython-1.24.1.tar.xz new file mode 100644 index 0000000..27f4502 --- /dev/null +++ b/micropython-1.24.1.tar.xz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5d624a0b23389134d963b204601db9bc4ca57bfb615d13f13592bc2b5b494c03 +size 86842340 diff --git a/micropython-1.25.0.tar.xz b/micropython-1.25.0.tar.xz new file mode 100644 index 0000000..0c5d470 --- /dev/null +++ b/micropython-1.25.0.tar.xz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4d66b0bf198cd7ee8990ee3bdeafd9a2353f68aa1a941ff55419513c0546333e +size 16074024 diff --git a/micropython-1.26.0.tar.xz b/micropython-1.26.0.tar.xz new file mode 100644 index 0000000..2213870 --- /dev/null +++ b/micropython-1.26.0.tar.xz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c43e4512fb2ada940a1d7808c84f313a161339b39c921292706b2f0163818062 +size 16178748 diff --git a/micropython-gcc15-string-initialization.patch b/micropython-gcc15-string-initialization.patch new file mode 100644 index 0000000..1d628df --- /dev/null +++ b/micropython-gcc15-string-initialization.patch @@ -0,0 +1,231 @@ +From 531d4839d44a90447c232d51d1bee0cae45add9a Mon Sep 17 00:00:00 2001 +From: Angus Gratton +Date: Fri, 9 May 2025 13:34:37 +1000 +Subject: [PATCH 1/3] extmod/moductypes: Refactor string literal as array + initializer. + +Avoids the new Wunterminated-string-literal when compiled with gcc 15.1. + +Also split out the duplicate string to a top-level array (probably the +duplicate string literal was interned, so unlikely to have any impact.) + +This work was funded through GitHub Sponsors. + +Signed-off-by: Angus Gratton +--- + extmod/moductypes.c | 7 +++++-- + 1 file changed, 5 insertions(+), 2 deletions(-) + +diff --git a/extmod/moductypes.c b/extmod/moductypes.c +index bf45797658fa0..54abce79e06fe 100644 +--- a/extmod/moductypes.c ++++ b/extmod/moductypes.c +@@ -277,15 +277,18 @@ static mp_obj_t uctypes_struct_sizeof(size_t n_args, const mp_obj_t *args) { + } + static MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(uctypes_struct_sizeof_obj, 1, 2, uctypes_struct_sizeof); + ++static const char type2char[16] = { ++ 'B', 'b', 'H', 'h', 'I', 'i', 'Q', 'q', ++ '-', '-', '-', '-', '-', '-', 'f', 'd' ++}; ++ + static inline mp_obj_t get_unaligned(uint val_type, byte *p, int big_endian) { + char struct_type = big_endian ? '>' : '<'; +- static const char type2char[16] = "BbHhIiQq------fd"; + return mp_binary_get_val(struct_type, type2char[val_type], p, &p); + } + + static inline void set_unaligned(uint val_type, byte *p, int big_endian, mp_obj_t val) { + char struct_type = big_endian ? '>' : '<'; +- static const char type2char[16] = "BbHhIiQq------fd"; + mp_binary_set_val(struct_type, type2char[val_type], val, p, &p); + } + + +From 0398873d8c8096d2054db130efd1fcecba2a426d Mon Sep 17 00:00:00 2001 +From: Angus Gratton +Date: Fri, 9 May 2025 13:36:05 +1000 +Subject: [PATCH 2/3] py/emitinlinethumb: Refactor string literal as array + initializer. + +Avoids the new Wunterminated-string-literal when compiled with gcc 15.1. + +This work was funded through GitHub Sponsors. + +Signed-off-by: Angus Gratton +--- + py/emitinlinethumb.c | 108 +++++++++++++++++++++---------------------- + 1 file changed, 54 insertions(+), 54 deletions(-) + +diff --git a/py/emitinlinethumb.c b/py/emitinlinethumb.c +index 7818bb4f46da8..d6596337ae5a6 100644 +--- a/py/emitinlinethumb.c ++++ b/py/emitinlinethumb.c +@@ -150,27 +150,27 @@ typedef struct _reg_name_t { byte reg; + byte name[3]; + } reg_name_t; + static const reg_name_t reg_name_table[] = { +- {0, "r0\0"}, +- {1, "r1\0"}, +- {2, "r2\0"}, +- {3, "r3\0"}, +- {4, "r4\0"}, +- {5, "r5\0"}, +- {6, "r6\0"}, +- {7, "r7\0"}, +- {8, "r8\0"}, +- {9, "r9\0"}, +- {10, "r10"}, +- {11, "r11"}, +- {12, "r12"}, +- {13, "r13"}, +- {14, "r14"}, +- {15, "r15"}, +- {10, "sl\0"}, +- {11, "fp\0"}, +- {13, "sp\0"}, +- {14, "lr\0"}, +- {15, "pc\0"}, ++ {0, {'r', '0' }}, ++ {1, {'r', '1' }}, ++ {2, {'r', '2' }}, ++ {3, {'r', '3' }}, ++ {4, {'r', '4' }}, ++ {5, {'r', '5' }}, ++ {6, {'r', '6' }}, ++ {7, {'r', '7' }}, ++ {8, {'r', '8' }}, ++ {9, {'r', '9' }}, ++ {10, {'r', '1', '0' }}, ++ {11, {'r', '1', '1' }}, ++ {12, {'r', '1', '2' }}, ++ {13, {'r', '1', '3' }}, ++ {14, {'r', '1', '4' }}, ++ {15, {'r', '1', '5' }}, ++ {10, {'s', 'l' }}, ++ {11, {'f', 'p' }}, ++ {13, {'s', 'p' }}, ++ {14, {'l', 'r' }}, ++ {15, {'p', 'c' }}, + }; + + #define MAX_SPECIAL_REGISTER_NAME_LENGTH 7 +@@ -368,20 +368,20 @@ typedef struct _cc_name_t { byte cc; + byte name[2]; + } cc_name_t; + static const cc_name_t cc_name_table[] = { +- { ASM_THUMB_CC_EQ, "eq" }, +- { ASM_THUMB_CC_NE, "ne" }, +- { ASM_THUMB_CC_CS, "cs" }, +- { ASM_THUMB_CC_CC, "cc" }, +- { ASM_THUMB_CC_MI, "mi" }, +- { ASM_THUMB_CC_PL, "pl" }, +- { ASM_THUMB_CC_VS, "vs" }, +- { ASM_THUMB_CC_VC, "vc" }, +- { ASM_THUMB_CC_HI, "hi" }, +- { ASM_THUMB_CC_LS, "ls" }, +- { ASM_THUMB_CC_GE, "ge" }, +- { ASM_THUMB_CC_LT, "lt" }, +- { ASM_THUMB_CC_GT, "gt" }, +- { ASM_THUMB_CC_LE, "le" }, ++ { ASM_THUMB_CC_EQ, { 'e', 'q' }}, ++ { ASM_THUMB_CC_NE, { 'n', 'e' }}, ++ { ASM_THUMB_CC_CS, { 'c', 's' }}, ++ { ASM_THUMB_CC_CC, { 'c', 'c' }}, ++ { ASM_THUMB_CC_MI, { 'm', 'i' }}, ++ { ASM_THUMB_CC_PL, { 'p', 'l' }}, ++ { ASM_THUMB_CC_VS, { 'v', 's' }}, ++ { ASM_THUMB_CC_VC, { 'v', 'c' }}, ++ { ASM_THUMB_CC_HI, { 'h', 'i' }}, ++ { ASM_THUMB_CC_LS, { 'l', 's' }}, ++ { ASM_THUMB_CC_GE, { 'g', 'e' }}, ++ { ASM_THUMB_CC_LT, { 'l', 't' }}, ++ { ASM_THUMB_CC_GT, { 'g', 't' }}, ++ { ASM_THUMB_CC_LE, { 'l', 'e' }}, + }; + + typedef struct _format_4_op_t { byte op; +@@ -389,21 +389,21 @@ typedef struct _format_4_op_t { byte op; + } format_4_op_t; + #define X(x) (((x) >> 4) & 0xff) // only need 1 byte to distinguish these ops + static const format_4_op_t format_4_op_table[] = { +- { X(ASM_THUMB_FORMAT_4_EOR), "eor" }, +- { X(ASM_THUMB_FORMAT_4_LSL), "lsl" }, +- { X(ASM_THUMB_FORMAT_4_LSR), "lsr" }, +- { X(ASM_THUMB_FORMAT_4_ASR), "asr" }, +- { X(ASM_THUMB_FORMAT_4_ADC), "adc" }, +- { X(ASM_THUMB_FORMAT_4_SBC), "sbc" }, +- { X(ASM_THUMB_FORMAT_4_ROR), "ror" }, +- { X(ASM_THUMB_FORMAT_4_TST), "tst" }, +- { X(ASM_THUMB_FORMAT_4_NEG), "neg" }, +- { X(ASM_THUMB_FORMAT_4_CMP), "cmp" }, +- { X(ASM_THUMB_FORMAT_4_CMN), "cmn" }, +- { X(ASM_THUMB_FORMAT_4_ORR), "orr" }, +- { X(ASM_THUMB_FORMAT_4_MUL), "mul" }, +- { X(ASM_THUMB_FORMAT_4_BIC), "bic" }, +- { X(ASM_THUMB_FORMAT_4_MVN), "mvn" }, ++ { X(ASM_THUMB_FORMAT_4_EOR), {'e', 'o', 'r' }}, ++ { X(ASM_THUMB_FORMAT_4_LSL), {'l', 's', 'l' }}, ++ { X(ASM_THUMB_FORMAT_4_LSR), {'l', 's', 'r' }}, ++ { X(ASM_THUMB_FORMAT_4_ASR), {'a', 's', 'r' }}, ++ { X(ASM_THUMB_FORMAT_4_ADC), {'a', 'd', 'c' }}, ++ { X(ASM_THUMB_FORMAT_4_SBC), {'s', 'b', 'c' }}, ++ { X(ASM_THUMB_FORMAT_4_ROR), {'r', 'o', 'r' }}, ++ { X(ASM_THUMB_FORMAT_4_TST), {'t', 's', 't' }}, ++ { X(ASM_THUMB_FORMAT_4_NEG), {'n', 'e', 'g' }}, ++ { X(ASM_THUMB_FORMAT_4_CMP), {'c', 'm', 'p' }}, ++ { X(ASM_THUMB_FORMAT_4_CMN), {'c', 'm', 'n' }}, ++ { X(ASM_THUMB_FORMAT_4_ORR), {'o', 'r', 'r' }}, ++ { X(ASM_THUMB_FORMAT_4_MUL), {'m', 'u', 'l' }}, ++ { X(ASM_THUMB_FORMAT_4_BIC), {'b', 'i', 'c' }}, ++ { X(ASM_THUMB_FORMAT_4_MVN), {'m', 'v', 'n' }}, + }; + #undef X + +@@ -428,10 +428,10 @@ typedef struct _format_vfp_op_t { + char name[3]; + } format_vfp_op_t; + static const format_vfp_op_t format_vfp_op_table[] = { +- { 0x30, "add" }, +- { 0x34, "sub" }, +- { 0x20, "mul" }, +- { 0x80, "div" }, ++ { 0x30, {'a', 'd', 'd' }}, ++ { 0x34, {'s', 'u', 'b' }}, ++ { 0x20, {'m', 'u', 'l' }}, ++ { 0x80, {'d', 'i', 'v' }}, + }; + + // shorthand alias for whether we allow ARMv7-M instructions + +From bfd5a0350a0d53f52695d373dae6ee367971b145 Mon Sep 17 00:00:00 2001 +From: Angus Gratton +Date: Fri, 9 May 2025 14:34:09 +1000 +Subject: [PATCH 3/3] lib/littlefs: Fix string initializer in lfs1.c. + +Avoids the new Wunterminated-string-literal when compiled with gcc 15.1. + +It would be preferable to just disable this warning, but Clang +-Wunknown-warning-option kicks in even when disabling warnings so this +becomes fiddly to apply. + +This work was funded through GitHub Sponsors. + +Signed-off-by: Angus Gratton +--- + lib/littlefs/lfs1.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/lib/littlefs/lfs1.c b/lib/littlefs/lfs1.c +index 6a3fd670012cc..ec18dc470258c 100644 +--- a/lib/littlefs/lfs1.c ++++ b/lib/littlefs/lfs1.c +@@ -2141,7 +2141,7 @@ int lfs1_format(lfs1_t *lfs1, const struct lfs1_config *cfg) { + .d.elen = sizeof(superblock.d) - sizeof(superblock.d.magic) - 4, + .d.nlen = sizeof(superblock.d.magic), + .d.version = LFS1_DISK_VERSION, +- .d.magic = {"littlefs"}, ++ .d.magic = {'l', 'i', 't', 't', 'l', 'e', 'f', 's'}, + .d.block_size = lfs1->cfg->block_size, + .d.block_count = lfs1->cfg->block_count, + .d.root = {lfs1->root[0], lfs1->root[1]}, diff --git a/micropython.changes b/micropython.changes new file mode 100644 index 0000000..5d47cad --- /dev/null +++ b/micropython.changes @@ -0,0 +1,289 @@ +------------------------------------------------------------------- +Fri Aug 15 08:13:39 UTC 2025 - Dominik Heidler + +- Version 1.26.0 + * Added machine.I2CTarget for creating I2C target devices on multiple ports. + * New MCU support: STM32N6xx (800 MHz, ML accel) & ESP32-C2 (WiFi + BLE). + * Major float accuracy boost (~28% → ~98%), constant folding in compiler. + * Optimized native/Viper emitters; reduced heap use for slices. + * Time functions standardized (1970–2099); new boards across ESP32, SAMD, STM32, Zephyr. + * ESP32: ESP-IDF 5.4.2, flash auto-detect, PCNT class, LAN8670 PHY. + * RP2: compressed errors, better lightsleep, hard IRQ timers. + * Zephyr v4.0.0: PWM, SoftI2C/SPI, BLE runtime services, boot.py/main.py support. + * mpremote adds fs tree, improved df, portable config paths. + * Updated lwIP, LittleFS, libhydrogen, stm32lib; expanded hardware/CI tests. + +------------------------------------------------------------------- +Thu Jul 10 20:22:14 UTC 2025 - Atri Bhattacharya + +- Add micropython-gcc15-string-initialization.patch: Refactor + string literal as array initializer + (gh#micropython/micropython#17269). + +------------------------------------------------------------------- +Mon May 26 11:53:07 UTC 2025 - Dominik Heidler + +- Add script to delete some 3rd party libraries from the src tar + that are not needed to build the unix port in order to + make the legal review easier + +------------------------------------------------------------------- +Wed Apr 16 11:59:42 UTC 2025 - Dominik Heidler + +- Update to 1.25.0 + * Add ROMFS support (see also "mpremote romfs" cmd with "query", "build", and "deploy" sub-commands) + ROMFS defines a read-only, memory-mappable, extensible filesystem that can contain arbitrary resources, + including precompiled mpy files, and allows executing bytecode directly from the filesystem. + This makes importing significantly faster and use a lot less memory. + * Inline assembler now supports 32-bit RISC-V assembly code via the newly implemented @micropython.asm_rv32 decorator. + * Datagram TLS (DTLS) is now supported by the tls module and enabled on the alif, mimxrt, renesas-ra, rp2, stm32 and unix ports. + * mpremote command-line tool now supports recursive remove via the new "rm -r" + * mpremote now supports relative URLs in the package.json for installing from the local filesystem + * "mpremote mount" has optimised readline support + * full support for tuples and start/end arguments in str.startswith() and str.endswith() methods + * vfs.mount() with no arguments now returns a list of mounted filesystems + * marshal module has been added with dumps() and loads() functions + * MicroPython native linker mpy_ld.py now includes support for linking in static libraries automatically + * native modules now support 32-bit RISC-V code + * force _FILE_OFFSET_BITS=64 to fix 32-bit file ABI + * enable VfsRom on standard and coverage variants + * use the bare metal mbedTLS config in the coverage buiid + * add recursive mutex support + * main: add coverage test for mounting ROMFS filesystem at startup +- Drop fix_re_sub_test_on_python3.13.patch as not needed anymore + +------------------------------------------------------------------- +Mon Mar 17 12:24:36 UTC 2025 - Dominik Heidler + +- Add fix_re_sub_test_on_python3.13.patch to fix re_sub test + +------------------------------------------------------------------- +Tue Feb 18 11:48:17 UTC 2025 - Dominik Heidler + +- Add subpackage mpy-tools which contains mpy-cross and mpy-tool + +------------------------------------------------------------------- +Fri Feb 7 10:33:24 UTC 2025 - Dominik Heidler + +- Fix build for 15.6 + +------------------------------------------------------------------- +Wed Feb 5 23:17:33 UTC 2025 - Dominik Heidler + +- Build mpremote tool + +------------------------------------------------------------------- +Sat Nov 30 19:36:52 UTC 2024 - Jaime Marquínez Ferrándiz + +- Update to 1.24.1: + * https://github.com/micropython/micropython/releases/tag/v1.24.1 + +------------------------------------------------------------------- +Fri Nov 29 18:46:03 UTC 2024 - Jaime Marquínez Ferrándiz + +- Update to 1.24.0: + * https://github.com/micropython/micropython/releases/tag/v1.24.0 + +------------------------------------------------------------------- +Wed Sep 18 11:48:47 UTC 2024 - Yunus Acar + +- Update to 1.23.0: + * https://github.com/micropython/micropython/releases/tag/v1.23.0 + +------------------------------------------------------------------- +Tue May 21 09:06:25 UTC 2024 - Matej Cepl + +- Update to 1.22.2: + This is a patch release containing the following commits: + - py/compile: fix potential Py-stack overflow in try-finally + with return + - extmod/asyncio: support gather of tasks that finish early + - extmod/modssl_mbedtls: fix cipher iteration in + SSLContext.get_ciphers + - extmod/btstack: reset pending_value_handle before calling + write-done cb + - extmod/btstack: reset pending_value_handle before calling + read-done cb + - esp32/mpnimbleport: release the GIL while doing NimBLE port + deinit + - esp32: increase NimBLE task stack size and overflow detection + headroom + - mimxrt/modmachine: fix deepsleep wakeup pin ifdef + - renesas-ra/ra: fix SysTick clock source + - renesas-ra/boards/ARDUINO_PORTENTA_C33: fix the RTC clock + source + - renesas-ra/ra/ra_i2c: fix 1 byte and 2 bytes read issue + - rp2/rp2_dma: fix fetching 'write' buffers for writing not + reading + - rp2/machine_uart: fix event wait in uart.flush() and + uart.read() + - rp2: change machine.I2S and rp2.DMA to use shared DMA IRQ + handlers +- Update to 1.22.1: + - This is a patch release to fix a race condition and potential + deadlock in the rp2 port's mp_thread_begin_atomic_section() + function, when the second core is in use. + +------------------------------------------------------------------- +Mon Jan 15 14:54:02 UTC 2024 - Andreas Schwab + +- Build with %optflags + +------------------------------------------------------------------- +Mon Jan 8 02:06:11 UTC 2024 - Steve Kowalik + +- Update to 1.22.0: + * https://github.com/micropython/micropython/releases/tag/v1.22.0 + * objslice: validate that the argument to indices() is an integer + (CVE-2023-7158, bsc#1218446) + +------------------------------------------------------------------- +Fri Apr 28 07:09:08 UTC 2023 - Steve Kowalik + +- Update to 1.20.0: + * https://github.com/micropython/micropython/releases/tag/v1.20.0 +- Remove 32572439984e5640c6af46fbe7c27400c30112ce.patch, included. +- Disable warning, since it is treated as an error. + +------------------------------------------------------------------- +Tue Mar 28 14:42:22 UTC 2023 - Dirk Müller + +- add 32572439984e5640c6af46fbe7c27400c30112ce.patch + +------------------------------------------------------------------- +Tue Oct 11 15:17:23 UTC 2022 - Andreas Schwab + +- Suppress stripping of binary +- Run tests everywhere with just the problematic ones suppressed + +------------------------------------------------------------------- +Sat Jul 2 06:18:04 UTC 2022 - Christophe Giboudeaux + +- Update to 1.19.1: + * https://github.com/micropython/micropython/releases/tag/v1.19 + +------------------------------------------------------------------- +Wed Feb 2 20:54:39 UTC 2022 - Jaime Marquínez Ferrándiz + +- Update to 1.18: full changelog available at + https://github.com/micropython/micropython/releases/tag/v1.18 + +------------------------------------------------------------------- +Sun Jan 16 13:34:06 UTC 2022 - Dirk Müller + +- avoid spec-cleaner messing it up + +------------------------------------------------------------------- +Fri Sep 24 23:42:55 UTC 2021 - Matej Cepl + +- Update to 1.17: + The release notes are REALLY long, so please go to + https://github.com/micropython/micropython/releases/tag/v1.17 + to read them. +- Remove already upstreamed patch fix-uasyncio_heaplock-test.patch. + +------------------------------------------------------------------- +Mon Aug 2 15:11:39 UTC 2021 - Danilo Spinella + +- Add fix-uasyncio_heaplock-test.patchto fix uasyncio_heaplock + test (originally from gh#micropython/micropython#7449) + +------------------------------------------------------------------- +Tue Jul 27 14:51:40 UTC 2021 - Matej Cepl + +- Remove unnecessary dependency on python2 + +------------------------------------------------------------------- +Fri Jul 23 13:42:44 UTC 2021 - Guillaume GARDET + +- Update to v1.16: + * Full release notes: https://github.com/micropython/micropython/releases/tag/v1.16 + * New command-line tool called "mpremote" + * Unix port updates: + - modffi: use a union for passing/returning FFI values + - main: increase stack limit on ARM architectures + - modffi: fix conversion between Python integers and ffi types + - fix build on arm64-darwin due to integer cast + +------------------------------------------------------------------- +Fri May 7 09:50:45 UTC 2021 - Mustafa Çalışkan + +- Update to version 1.15: + * Full release notes: https://github.com/micropython/micropython/releases/tag/v1.15 + * Unix port updates: + - mpbtstackport_common: implement mp_bluetooth_hci_active + - moduselect: don't allow both posix and non-posix configurations + - improve command line argument processing + - main: make static variable that's potentially clobbered by longjm +- Remove patch fix-aarch64-builds.patch +- Exclude ppc64 and ppc64le as build fails for those architectures + +------------------------------------------------------------------- +Sat Apr 17 03:06:16 UTC 2021 - Mustafa Çalışkan + +- Add patch fix-aarch64-builds.patch + +------------------------------------------------------------------- +Fri Feb 5 10:11:08 UTC 2021 - Guillaume GARDET + +- Update to v1.14: + * Full release notes: https://github.com/micropython/micropython/releases/tag/v1.14 + * Unix port updates: + - Makefile: always enable -f*-sections regardless of DEBUG setting + - implement BLE H4 HCI UART for btstack/nimble + - implement mp_hal_time_ns using gettimeofday + - variants: enable MICROPY_DEBUG_PARSE_RULE_NAME on coverage build + - mpconfigport.h: enable MICROPY_PY_DELATTR_SETATTR + - enable more warnings + - support building C++ code + - Makefile: move coverage.c and coveragecpp.cpp to coverage variant + - handle pending events/scheduler in MICROPY_EVENT_POLL_HOOK + - make mp_hal_delay_ms run MICROPY_EVENT_POLL_HOOK + - modtime: fix time() precision on unix ports with non-double floats + +------------------------------------------------------------------- +Fri Jan 29 10:59:00 UTC 2021 - Guillaume GARDET + +- Drop _service file +- Exclude %{arm} as lots of tests fail + +------------------------------------------------------------------- +Wed Jan 27 10:36:36 UTC 2021 - Guillaume GARDET + +- Cleanup package and enable tests + +------------------------------------------------------------------- +Sun Sep 6 13:30:02 UTC 2020 - Jaime Marquínez Ferrándiz + +- Update to 1.13: full changelog available at https://github.com/micropython/micropython/releases/tag/v1.13 + +------------------------------------------------------------------- +Thu Dec 26 15:28:38 UTC 2019 - Jaime Marquínez Ferrándiz + +- Update to 1.12: full changelog available at https://github.com/micropython/micropython/releases/tag/v1.12 +- Build mpy-cross + +------------------------------------------------------------------- +Sun Jun 23 12:41:06 UTC 2019 - Jaime Marquínez Ferrándiz + +- Update to 1.11: full changelog at https://github.com/micropython/micropython/releases/tag/v1.11 + +------------------------------------------------------------------- +Sat Jan 26 12:54:53 UTC 2019 - Jaime Marquínez Ferrándiz + +- Update to 1.10: full changelog at https://github.com/micropython/micropython/releases/tag/v1.10 + +------------------------------------------------------------------- +Thu Dec 6 10:16:28 UTC 2018 - Jaime Marquínez Ferrándiz + +- Use _service + +------------------------------------------------------------------- +Fri May 11 21:36:23 UTC 2018 - jaime.marquinez.ferrandiz@fastmail.net + +- Update to 1.9.4: full changelog at https://github.com/micropython/micropython/releases/tag/v1.9.4 + +------------------------------------------------------------------- +Fri Jan 12 16:03:26 UTC 2018 - jaime.marquinez.ferrandiz@fastmail.net + +- Update to 1.9.3: full changelog at https://github.com/micropython/micropython/releases/tag/v1.9.3 diff --git a/micropython.spec b/micropython.spec new file mode 100644 index 0000000..11df842 --- /dev/null +++ b/micropython.spec @@ -0,0 +1,134 @@ +# +# spec file for package micropython +# +# Copyright (c) 2025 SUSE LLC and contributors +# +# All modifications and additions to the file contributed by third parties +# remain the property of their copyright owners, unless otherwise agreed +# upon. The license for this file, and modifications and additions to the +# file, is the same license as for the pristine package itself (unless the +# license for the pristine package is not an Open Source License, in which +# case the license is the MIT License). An "Open Source License" is a +# license that conforms to the Open Source Definition (Version 1.9) +# published by the Open Source Initiative. + +# Please submit bugfixes or comments via https://bugs.opensuse.org/ +# + + +%define pythons python3 +%{?sle15_python_module_pythons} + +Name: micropython +Version: 1.26.0 +Release: 0 +Summary: Implementation of Python 3 with very low memory footprint +License: MIT +URL: https://micropython.org/ +Source0: %{name}-%{version}.tar.xz +Source1: prepare.sh +BuildRequires: openssl +BuildRequires: pkgconfig +BuildRequires: python3 +BuildRequires: readline-devel +BuildRequires: pkgconfig(libffi) + +Recommends: micropython-lib +ExcludeArch: %{ix86} %{arm} ppc64 ppc64le + +%package -n mpremote +Summary: MicroPython remote control +BuildArch: noarch +BuildRequires: %{python_module hatch-requirements-txt} +BuildRequires: %{python_module hatchling} +Requires: python3-pyserial >= 3.3 +BuildRequires: %{python_module base >= 3.6} +BuildRequires: %{python_module pip} +BuildRequires: %{python_module wheel} +BuildRequires: fdupes +BuildRequires: python-rpm-macros + +%package -n mpy-tools +Summary: Tools for creating and handling precompiled .mpy files for MicroPython +Provides: mpy-cross +Provides: mpy-tool + +%description +A lean and efficient Python implementation for microcontrollers and constrained systems + +%description -n mpremote +This CLI tool provides an integrated set of utilities to remotely interact with +and automate a MicroPython device over a serial connection. + +%description -n mpy-tools +MicroPython tools like the mpy-cross compiler for compiling.py files to .mpy files. +Also mpy-tool for inspecting .mpy files. + +%prep +%autosetup -p1 + +sed -i -e "s:/usr/lib/micropython:%{_prefix}/lib/micropython:g" "ports/unix/main.c" + +%define make_flags V=1 MICROPY_PY_BTREE=0 MICROPY_PY_USSL=0 + +%build +# micropython +export CFLAGS="%optflags -Wno-dangling-pointer" +%make_build -C mpy-cross +%make_build -C ports/unix STRIP=true +pushd tools/mpremote +# inject version info as there is no git checkout to get tags from +echo "VERSION = '%{version}'" > version.py +sed -i -e 's/source = "vcs"/path = "version.py"/' pyproject.toml +# remove useless shebang lines +sed -i -e 's_#!/usr/bin/env python3__' mpremote/{__main__,transport,transport_serial}.py +%pyproject_wheel +popd + +%install +# micropython +install -d %{buildroot}%{_bindir} +install -t %{buildroot}%{_bindir} ports/unix/build-standard/micropython + +# mpremote +pushd tools/mpremote +%pyproject_install +popd +%python_expand %fdupes %{buildroot}%{$python_sitelib} +# remove pycache to get rid of rpmlint "W: python-bytecode-inconsistent-mtime" warnings +%python_expand rm -rf %{buildroot}%{$python_sitelib}/mpremote/__pycache__ + +# mpy-tools +install -m755 -D -v mpy-cross/build/mpy-cross %{buildroot}%{_bindir}/mpy-cross +install -m755 -D -v tools/mpy-tool.py %{buildroot}%{_bindir}/mpy-tool +%python3_fix_shebang + +%check +%ifnarch x86_64 +# 2 tests fail: float_parse float_parse_doubleprec +# https://github.com/micropython/micropython/pull/6024 +rm -f tests/float/float_parse.py +rm -f tests/float/float_parse_doubleprec.py +%endif +export MICROPY_CPYTHON3=python%python_version +make -C ports/unix PYTHON=%{_bindir}/python%python_version V=1 test + +%files +%license LICENSE +%doc docs/unix/* +%{_bindir}/micropython + +%files -n mpremote +%license tools/mpremote/LICENSE +%doc tools/mpremote/README.md +%{_prefix}/lib/python%{python_version}/site-packages/mpremote +%{_prefix}/lib/python%{python_version}/site-packages/mpremote-%{version}.dist-info +%{_bindir}/mpremote + +%files -n mpy-tools +%doc mpy-cross/README.md +%license LICENSE +%{_bindir}/mpy-cross +%{_bindir}/mpy-tool + +%changelog diff --git a/prepare.sh b/prepare.sh new file mode 100644 index 0000000..0b36744 --- /dev/null +++ b/prepare.sh @@ -0,0 +1,36 @@ +#!/bin/bash + +# this removes some 3rd party libraries from the src tar that are not needed to build the unix port +# in order to make the legal review easier + +set -e + +version=$(rpmspec --query micropython.spec | head -1 | cut -d- -f2) + +rm -fv micropython-*.tar.xz +wget "https://micropython.org/resources/source/micropython-${version}.tar.xz" -O "micropython-${version}.tar.xz" +tar xf "micropython-${version}.tar.xz" +pushd "micropython-${version}" +rm -rv "lib/fsp" +rm -rv "lib/alif-security-toolkit" +rm -rv "lib/alif_ensemble-cmsis-dfp" +rm -rv "lib/asf4" +rm -rv "lib/cyw43-driver" +rm -rv "lib/axtls" +rm -rv "lib/tinyusb" +rm -rv "lib/stm32lib" +rm -rv "lib/btstack" +rm -rv "lib/pico-sdk" +rm -rv "lib/nrfx" +rm -rv "lib/lwip" +rm -rv "lib/libffi" +rm -rv "lib/protobuf-c" +rm -rv "lib/nxp_driver" +rm -rv "lib/arduino-lib" +rm -rv "lib/mynewt-nimble" +pushd "ports" +find . -maxdepth 1 -type d | grep -v unix | grep -v esp | grep -v rp2 | grep -v minimal | grep -v qemu | grep -v webassembly | xargs rm -rv || : +popd +popd +tar caf "micropython-${version}.tar.xz" "micropython-${version}" +rm -r "micropython-${version}" From 2b994e87b2aae85a31ebb120a5cb396ee80918f4e2b1d7e0dd28c28b3695daa8 Mon Sep 17 00:00:00 2001 From: Dominik Heidler Date: Fri, 15 Aug 2025 09:15:21 +0000 Subject: [PATCH 2/3] - Removed micropython-gcc15-string-initialization.patch as included upstream OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/micropython?expand=0&rev=54 --- micropython.changes | 1 + 1 file changed, 1 insertion(+) diff --git a/micropython.changes b/micropython.changes index 5d47cad..f3c8b59 100644 --- a/micropython.changes +++ b/micropython.changes @@ -12,6 +12,7 @@ Fri Aug 15 08:13:39 UTC 2025 - Dominik Heidler * Zephyr v4.0.0: PWM, SoftI2C/SPI, BLE runtime services, boot.py/main.py support. * mpremote adds fs tree, improved df, portable config paths. * Updated lwIP, LittleFS, libhydrogen, stm32lib; expanded hardware/CI tests. +- Removed micropython-gcc15-string-initialization.patch as included upstream ------------------------------------------------------------------- Thu Jul 10 20:22:14 UTC 2025 - Atri Bhattacharya From a2de50f788d6e3110ac57e439bca1ae23ab586d4115f671204c60ed759c6efd8 Mon Sep 17 00:00:00 2001 From: Dominik Heidler Date: Wed, 22 Oct 2025 14:33:37 +0200 Subject: [PATCH 3/3] Build with mbedtls-3.6.5 instead of bundled 3.6.2 to fix CVE-2025-59438 --- mbedtls-3.6.5.tar.bz2 | 3 +++ micropython.changes | 5 +++++ micropython.spec | 6 +++++- 3 files changed, 13 insertions(+), 1 deletion(-) create mode 100644 mbedtls-3.6.5.tar.bz2 diff --git a/mbedtls-3.6.5.tar.bz2 b/mbedtls-3.6.5.tar.bz2 new file mode 100644 index 0000000..715932a --- /dev/null +++ b/mbedtls-3.6.5.tar.bz2 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4a11f1777bb95bf4ad96721cac945a26e04bf19f57d905f241fe77ebeddf46d8 +size 5367178 diff --git a/micropython.changes b/micropython.changes index f3c8b59..a3e5c11 100644 --- a/micropython.changes +++ b/micropython.changes @@ -1,3 +1,8 @@ +------------------------------------------------------------------- +Wed Oct 22 12:19:48 UTC 2025 - Dominik Heidler + +- Build with mbedtls-3.6.5 instead of bundled 3.6.2 to fix CVE-2025-59438 + ------------------------------------------------------------------- Fri Aug 15 08:13:39 UTC 2025 - Dominik Heidler diff --git a/micropython.spec b/micropython.spec index 11df842..9141caa 100644 --- a/micropython.spec +++ b/micropython.spec @@ -27,6 +27,7 @@ License: MIT URL: https://micropython.org/ Source0: %{name}-%{version}.tar.xz Source1: prepare.sh +Source2: https://github.com/Mbed-TLS/mbedtls/releases/download/mbedtls-3.6.5/mbedtls-3.6.5.tar.bz2#/mbedtls-3.6.5.tar.bz2 BuildRequires: openssl BuildRequires: pkgconfig BuildRequires: python3 @@ -65,12 +66,15 @@ MicroPython tools like the mpy-cross compiler for compiling.py files to .mpy fil Also mpy-tool for inspecting .mpy files. %prep -%autosetup -p1 +%autosetup -p1 -a2 sed -i -e "s:/usr/lib/micropython:%{_prefix}/lib/micropython:g" "ports/unix/main.c" %define make_flags V=1 MICROPY_PY_BTREE=0 MICROPY_PY_USSL=0 +rm -rf lib/mbedtls +mv mbedtls-3.6.5 lib/mbedtls + %build # micropython export CFLAGS="%optflags -Wno-dangling-pointer"