<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>