On 01/12 08:13, George Koehler wrote:
> On Fri, 11 Jan 2019 19:38:31 +0100
> Jeremie Courreges-Anglas <j...@wxcvbn.org> wrote:
> 
> > make test on sparc64:
> > 
> >   Finished tests in 7349.921578s, 2.7481 tests/s, 310.4749 assertions/s.
> >   20198 tests, 2281966 assertions, 65 failures, 18 errors, 113 skips
> > 
> > Lots of errors due to missing symbol '__guard_local' in the JIT tests.
> > Thoughts?
> 
> On my powerpc:
> 
> Finished tests in 6145.605596s, 3.2864 tests/s, 371.8192 assertions/s.        
>  
> 20197 tests, 2285054 assertions, 64 failures, 16 errors, 112 skips            
>  
> 
> I built the port with the patch-random_c and MESSAGE-main changes and
> JCA's patch-addr2line_c.  The build used base-gcc.  There are some
> usual test failures like webrick failing basic auth (no DES crypt in
> crypt(3)) and SSLv3 failing (no SSLv3 in LibreSSL), but most failures
> are from TestJIT because of "undefined symbol '__guard_local'".
> 
> The JIT is experimental and I don't need it.  I was running Ruby trunk
> on amd64 but not enabling the JIT.
> 
> I find that --jit-verbose=2 shows the cc commands.  I also need
> --jit-wait, or 'puts 123' would finish without using the JIT.  Notice
> that Ruby is running /usr/ports/pobj/ruby-2.6.0/bin/cc, but this cc
> won't exist after I clean the build, or when I pkg_add ruby%2.6
> without using ports.
> 
> ghostborough$ arch   
> OpenBSD.powerpc
> ghostborough$ ruby26 --jit-verbose=2 --jit-wait -e 'puts 123'                 
>  
> MJIT: CC defaults to /usr/ports/pobj/ruby-2.6.0/bin/cc                        
>  
> MJIT: tmp_dir is /tmp                                                         
>  
> Creating precompiled header                                                   
>  
> Starting process: /usr/ports/pobj/ruby-2.6.0/bin/cc 
> /usr/ports/pobj/ruby-2.6.0/b
> in/cc -w -Wfatal-errors -fPIC -shared -w -pipe -O3 -o 
> /tmp/_ruby_mjit_hp40346u0.
> h.gch /usr/local/include/ruby-2.6/powerpc-openbsd/rb_mjit_min_header-2.6.0.h  
>  
> start compilation: block in 
> <module:RbConfig>@/usr/local/lib/ruby/2.6/powerpc-op
> enbsd/rbconfig.rb:275 -> /tmp/_ruby_mjit_p40346u0.c                           
>  
> Starting process: /usr/ports/pobj/ruby-2.6.0/bin/cc 
> /usr/ports/pobj/ruby-2.6.0/b
> in/cc -w -Wfatal-errors -fPIC -shared -w -pipe -O3 -o 
> /tmp/_ruby_mjit_p40346u0.o
>  /tmp/_ruby_mjit_p40346u0.c -c -L/usr/local/lib -nostartfiles -nodefaultlibs 
> -no
> stdlib                                                                        
>  
> Starting process: /usr/ports/pobj/ruby-2.6.0/bin/cc 
> /usr/ports/pobj/ruby-2.6.0/b
> in/cc -shared -Wfatal-errors -fPIC -shared -w -pipe -O3 -o 
> /tmp/_ruby_mjit_p4034
> 6u0.so /tmp/_ruby_mjit_p40346u0.o -L/usr/local/lib -nostartfiles 
> -nodefaultlibs
> -nostdlib                                                                     
>  
> ruby26:/tmp/_ruby_mjit_p40346u0.so: undefined symbol '__guard_local'          
>  
> MJIT warning: failure in loading code from '/tmp/_ruby_mjit_p40346u0.so': 
> Cannot
>  load specified object                                                        
>  
> ...
> (It enters an infinite loop trying to compile the object.)

Thank you very much for the testing and analysis.  I can confirm the JIT
compilation problems on amd64 because it uses the cached cc path (before
it would even get to the __guard_local issues on gcc).

Below is a new Makefile that will use dist patches pulled from Ruby's
SVN to handle the random.c and addr2line.c issues, as well as an
additional significant regression.  I tested that it also builds with
CC=/usr/bin/gcc.

I will keep working on the JIT issues to see if I can fix them and get
something that works with both base clang and gcc.

Thanks,
Jeremy

# $OpenBSD: Makefile,v 1.4 2018/03/31 21:12:45 jeremy Exp $

VERSION =               2.6.0
DISTNAME =              ruby-${VERSION}
SHARED_LIBS =           ruby26  0.0
NEXTVER =               2.7

MASTER_SITES0 =         
https://svn.ruby-lang.org/cgi-bin/viewvc.cgi/branches/ruby_2_6/
PATCHFILES =            
ruby26-lib-net-protocol.patch{lib/net/protocol.rb?r1=66799\&r2=66798\&pathrev=66799\&view=patch}:0
 \
                        
ruby26-addr2line.patch{addr2line.c?r1=66800\&r2=66799\&pathrev=66800\&view=patch}:0
 \
                        
ruby26-random.patch{random.c?r1=66729\&r2=66728\&pathrev=66729\&view=patch}:0
PATCH_DIST_STRIP =      -p2

PSEUDO_FLAVORS=         no_ri_docs bootstrap
# Do not build the RI docs on slow arches
.if ${MACHINE_ARCH:Malpha} || ${MACHINE_ARCH:Marm} || ${MACHINE_ARCH:Mhppa}
FLAVOR?=                no_ri_docs bootstrap
.else
FLAVOR?=
.endif

MULTI_PACKAGES =        -main -gdbm -ri_docs
.include <bsd.port.arch.mk>

.if ${BUILD_PACKAGES:M-ri_docs}
ALL_TARGET +=           rdoc
INSTALL_TARGET +=       install-doc
.endif

# Remove after 2.6.1
BUILD_DEPENDS = archivers/gtar
TAR =           gtar

WANTLIB-main += curses

post-extract:
        ${POST_EXTRACT}

pre-configure:
        ${FIX_RIPPER}

pre-install:
        ${PRE_INSTALL}

post-install:
        ${FIX_RBCONFIG}

# 20197 tests, 2280714 assertions, 4 failures, 4 errors, 75 skips
do-test:
        -cd ${WRKSRC} && make test-sample
        -cd ${WRKSRC} && make btest-ruby
        -cd ${WRKSRC} && make test-spec SPECOPTS="-f s"
        cd ${WRKSRC} && make test-all TESTOPTS="-v -q"

.include <bsd.port.mk>

Reply via email to