<pre style='margin:0'>
Ken (kencu) pushed a commit to branch master
in repository macports-ports.
</pre>
<p><a href="https://github.com/macports/macports-ports/commit/b3a763cc455baaf25ad27def4aca950caee0ed4c">https://github.com/macports/macports-ports/commit/b3a763cc455baaf25ad27def4aca950caee0ed4c</a></p>
<pre style="white-space: pre; background: #F8F8F8">The following commit(s) were added to refs/heads/master by this push:
<span style='display:block; white-space:pre;color:#404040;'> new b3a763cc455 boost181: enable context/coroutine on PPC32
</span>b3a763cc455 is described below
<span style='display:block; white-space:pre;color:#808000;'>commit b3a763cc455baaf25ad27def4aca950caee0ed4c
</span>Author: Evan Miller <emmiller@gmail.com>
AuthorDate: Tue Dec 27 21:37:05 2022 -0500
<span style='display:block; white-space:pre;color:#404040;'> boost181: enable context/coroutine on PPC32
</span><span style='display:block; white-space:pre;color:#404040;'>
</span><span style='display:block; white-space:pre;color:#404040;'> See: https://github.com/boostorg/context/pull/215
</span><span style='display:block; white-space:pre;color:#404040;'> See: https://github.com/macports/macports-ports/pull/16407
</span><span style='display:block; white-space:pre;color:#404040;'> Closes: https://trac.macports.org/ticket/64978
</span>---
devel/boost181/Portfile | 17 ++-
devel/boost181/files/patch-boost-context-asm.diff | 120 ++++++++++++++++++++++
2 files changed, 133 insertions(+), 4 deletions(-)
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/devel/boost181/Portfile b/devel/boost181/Portfile
</span><span style='display:block; white-space:pre;color:#808080;'>index 51e62e0dce0..5bef0dffc9d 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/devel/boost181/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/devel/boost181/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -106,6 +106,11 @@ patchfiles-append patch-export_serialization_explicit_template_instantiations.di
</span> # p64, p32).
patchfiles-append patch-revert-lib-name-tagged.diff
<span style='display:block; white-space:pre;background:#e0ffe0;'>+# Fix the context-switching code on PPC32. 10.4 and 10.5 lack makecontext/
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# swapcontext (provided by ucontext.h), so they require functioning ASM code.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# https://github.com/boostorg/context/pull/215
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+patchfiles-append patch-boost-context-asm.diff
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span> # Availability.h -> AvailabilityMacros.h on Tiger
# The attempted fix:
# https://github.com/boostorg/core/commit/128d9314d6f814930400c46c9afd34399d19132b
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -173,13 +178,17 @@ if {[string match *gcc* ${configure.compiler}]} {
</span> configure.args-append --with-toolset=gcc
}
<span style='display:block; white-space:pre;background:#ffe0e0;'>-# makecontext/swapcontext introduced in 10.6
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-# In 10.6.x Rosetta they do not work: https://trac.macports.org/ticket/64978
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# Boost's PPC32 ASM code in the context module was only recently fixed (see
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# patch above). PPC64 is still broken, and the Fiber module won't compile with
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# GCC7. Conditionally disable pending further investigation.
</span> platform darwin {
<span style='display:block; white-space:pre;background:#ffe0e0;'>- if {${os.major} < 10 || (${os.major} == 10 && ${build_arch} eq "ppc")} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {${build_arch} eq "ppc64"} {
</span> configure.args-append --without-libraries=context \
--without-libraries=coroutine
}
<span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {${build_arch} eq "ppc"} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ configure.args-append --without-libraries=fiber
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span> }
configure.universal_args
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -366,7 +375,7 @@ subport ${name}-numpy {
</span>
if {$subport eq $name} {
<span style='display:block; white-space:pre;background:#ffe0e0;'>- revision 3
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ revision 4
</span>
patchfiles-append patch-disable-numpy-extension.diff
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/devel/boost181/files/patch-boost-context-asm.diff b/devel/boost181/files/patch-boost-context-asm.diff
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..2f7ad0032f5
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/devel/boost181/files/patch-boost-context-asm.diff
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,120 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Fix some call convention bugs on PPC32
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Upstream PR: https://github.com/boostorg/context/pull/215
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- libs/context/build/Jamfile.v2.orig
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ libs/context/build/Jamfile.v2
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -331,6 +331,7 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ : asm/make_ppc32_sysv_macho_gas.S
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ asm/jump_ppc32_sysv_macho_gas.S
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ asm/ontop_ppc32_sysv_macho_gas.S
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ asm/tail_ppc32_sysv_elf_gas.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ : <abi>sysv
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ <address-model>32
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ <architecture>power
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- libs/context/src/asm/make_ppc32_sysv_macho_gas.S.orig
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ libs/context/src/asm/make_ppc32_sysv_macho_gas.S
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -85,11 +85,12 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ clrrwi r3, r3, 4
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ; reserve space for context-data on context-stack
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- ; including 64 byte of linkage + parameter area (R1 16 == 0)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ ; including 64 byte of linkage + parameter area (R1 % 16 == 0)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ subi r3, r3, 336
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ; third arg of make_fcontext() == address of context-function
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- stw r5, 240(r3)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ ; store as trampoline's R31
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ stw r5, 224(r3)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ; set back-chain to zero
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ li r0, 0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -106,12 +107,15 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ; load LR
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ mflr r0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ; jump to label 1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- bl l1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-l1:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ bcl 20, 31, L1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++L1:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ; load LR into R4
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ mflr r4
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ ; compute abs address of trampoline, use as PC
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ addi r5, r4, lo16(Ltrampoline - L1)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ stw r5, 240(r3)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ; compute abs address of label finish
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- addi r4, r4, lo16((finish - .) + 4)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ addi r4, r4, lo16(Lfinish - L1)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ; restore LR
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ mtlr r0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ; save address of finish as return-address for context-function
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -123,15 +127,28 @@ l1:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ blr ; return pointer to context-data
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-finish:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- ; save return address into R0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- mflr r0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- ; save return address on stack, set up stack frame
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- stw r0, 4(r1)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- ; allocate stack space, R1 16 == 0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- stwu r1, -16(r1)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++Ltrampoline:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ ; We get R31 = context-function, R3 = address of transfer_t,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ ; but we need to pass R3:R4 = transfer_t.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ mtctr r31
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ lwz r4, 4(r3)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ lwz r3, 0(r3)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ bctr
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++Lfinish:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ ; load address of _exit into CTR
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ bcl 20, 31, L2
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++L2:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ mflr r4
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ addis r4, r4, ha16(Lexitp - L2)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ lwz r4, lo16(Lexitp - L2)(r4)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ mtctr r4
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ; exit code is zero
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ li r3, 0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ; exit application
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- bl _exit
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ bctr
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++.const_data
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++.align 2
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++Lexitp:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ .long __exit
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- libs/context/src/asm/ontop_ppc32_sysv_macho_gas.S.orig
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ libs/context/src/asm/ontop_ppc32_sysv_macho_gas.S
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -177,7 +177,7 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ lwz r29, 216(r1) ; restore R29
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ lwz r30, 220(r1) ; restore R30
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ lwz r31, 224(r1) ; restore R31
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- lwz r4, 228(r1) ; restore hidden
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ lwz r3, 228(r1) ; restore hidden
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ; restore CR
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ lwz r0, 232(r1)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -190,12 +190,12 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ; adjust stack
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ addi r1, r1, 244
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- ; return transfer_t
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- stw r7, 0(r4)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- stw r5, 4(r4)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- ; restore CTR
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- mtctr r6
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- ; jump to ontop-function
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- bctr
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ ; Need to pass ontop_fcontext_tail(
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ ; hidden R3,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ ; R4 = ignore,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ ; R5 = data,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ ; R6 = ontop-function,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ ; R7 = fcontext_t
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ ; )
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ ; All of these registers are correctly set at this point
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ b _ontop_fcontext_tail
</span></pre><pre style='margin:0'>
</pre>