guix-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

WIP pypy3.3 - tests still fail? Anyone see why?


From: Danny Milosavljevic
Subject: WIP pypy3.3 - tests still fail? Anyone see why?
Date: Fri, 7 Oct 2016 12:12:31 +0200

Hi,

here's a work-in-progress package for pypy3.3. It builds - but the tests fail. 
A build takes about 6 GB of RAM and about 9 hours.

Maybe someone can spot how to fix one of the tests (usually they don't find 
libraries etc). (I'll work it out eventually but I thought I'd ask)

Also if guix build does fail executing some test - can I continue there somehow?

What do we do about setupterm? Disable the test? If hydra builds it there's 
probably no terminal available, right? The test it just testing readline's 
history manipulation so it's not like it's using the terminal...
I've already disabled test_curses.

(define-public pypy3.3
  (package
    (name "pypy3.3")
    (version "5.2.0")
    (source (origin
              (method url-fetch)
              (uri (string-append "https://bitbucket.org/pypy/pypy/downloads/";
                                  "pypy3.3-v" version "-alpha1-src.tar.bz2"))
              (sha256
               (base32
                "09hllsxds9ck22m92gy0ii9rwgqdp1d51c2bjrs15sl2ih42yk1l"))
              (patches (search-patches "pypy3.3-fix-compiler.patch"))
              (file-name (string-append "pypy3.3-v"
                                        version
                                        "-alpha1-src.tar.bz2"))))
    (build-system gnu-build-system)
    ;; TODO libgc for the untranslated tests
    (native-inputs
     ;; Note: python2-minimal doesn't work because ctypes.c_long is missing.
     `(("python-2" ,python-2)
       ("pkg-config" ,pkg-config)
       ("tar" ,tar)
       ("gzip" ,gzip)))
    (inputs
     `( ; for some reason this is not needed. ("bash" ,bash) ; actually /bin/sh
       ("libffi" ,libffi)
       ("zlib" ,zlib)
       ("ncurses" ,ncurses)
       ("openssl" ,openssl)
       ("expat" ,expat)
       ("bzip2" ,bzip2)
       ("sqlite" ,sqlite)
       ("gdbm" ,gdbm)
       ("tcl" ,tcl)
       ("tk" ,tk)
       ("xz" ,xz))) ; lzma
    (arguments
      `( ;#:modules ((srfi srfi-1)
          ;         (guix build utils))
        #:phases (modify-phases %standard-phases
         (delete 'configure)
         (replace 'build
            (lambda* (#:key inputs #:allow-other-keys)
              ;; distutils is used to verify extensions.
              ;; However, distutils build_ext uses a compiler that can only
              ;; be specified via CC environment variable.
              ;; Should have been used by customize_compiler() but wasn't.
              ;; Therefore we patch as well (in addition to setting it here).
              (setenv "CC" "gcc")
              ;; TODO set CPPFLAGS to something useful.
              ;; TODO set LDFLAGS rpath and other stuff
              (setenv "CCSHARED" "-fPIC")
               ;; TODO set LDFLAGS -L for tcl, tk, sqlite and rpath (mostly for 
the verification)
              (substitute* '("rpython/rtyper/lltypesystem/ll2ctypes.py")
                ;; Python ctypes.util.find_library documentation specifies
                ;; that it returns a file path, however all the actual
                ;; implementation cases return a SONAME.
                ;; Pypy expects it to return a file path.
                ;; Therefore, hotpatch ctypes.util to disable SONAME
                ;; determination.
                (("    import ctypes.util") "    import ctypes.util
    ctypes.util._get_soname = lambda x: x"))
              (substitute* '("lib-python/3/subprocess.py")
                (("\"/bin/sh\"") (string-append "\"" (which "sh") "\"")))
              (substitute* '("lib-python/3/distutils/log.py") ; FIXME remove
                (("__init__.self, threshold=WARN.") "__init__(self, 
threshold=INFO)")
                (("_global_log.threshold = level") "_x = level"))
              (substitute* '("lib_pypy/_tkinter/tklib_build.py")
                (("/usr/include/tcl") (string-append (assoc-ref inputs "tcl") 
"/include"))
                (("'tcl' + _ver, 'tk' + _ver") "'tcl8.6', 'tk8.6'") ; FIXME 
dyna version
)
              (substitute* '("lib_pypy/_sqlite3_build.py")
                (("libraries=.'sqlite3.$") (string-append "libraries= 
['sqlite3'], "
                                                           "include_dirs='" 
(assoc-ref inputs "sqlite")  "/include', "
                                                           "library_dirs='" 
(assoc-ref inputs "sqlite") "/lib'")))
              ;; FIXME just use main Makefile
              (chdir "pypy/goal") ; FIXME error checking
              (and
                (zero? (system* "python" "../../rpython/bin/rpython"
                                "-Ojit" "targetpypystandalone")))))
         (replace 'check
            (lambda* (#:key inputs outputs #:allow-other-keys)
              (chdir "../..")
              (system* "pwd")
              (system* "ls") ; FIXME remove
              (display (getcwd))
              (setenv "LC_ALL" "en_US.utf8") ; make sure Python Unicode works
              (substitute* '("lib-python/3/test/test_shutil.py")
                ;; Make sure that the tests don't try to use uid / grp
                ;; (because we have no passwd entries in the container).
                (("UID_GID_SUPPORT = True") "UID_GID_SUPPORT = False")
                (("#!/bin/sh") (string-append "#!" (which "sh"))))
              (substitute* '("lib-python/3/test/test_posixpath.py")
                ;; Make sure that the tests don't try to use $HOME
                (("def test_expanduser") "
@unittest.skipIf(True, "Disabled on GNU Guix")
def test_expanduser"))
              (setenv "PYTHONPATH" (string-append (getcwd) ":"
                                                  (getcwd) "/lib_pypy:" ; for 
'_testcapi'
                                                  (getenv "PYTHONPATH")))
              (and
                ;; TODO: " ./pypy/test_all.py"
                ;;       "lib-python/2.7.0/test/test_complex.py"
                ;;       "--pypy=foobar"
                (zero? (system* "mkdir" "/tmp/pytest"))
                (zero? (system* "python" "-S", "testrunner/runner.py"
                                "--config=pypy/pytest-A.cfg" ; FIXME logfile is 
mandatory!
                                "--config=pypy/pytest-A.py"
                                "--logfile=/tmp/pytest/runner.log"
                                (string-append "--root=" (getcwd))
                                "--timeout=3600")) ; --config=~/machine-A_cfg.py
                (zero? (system* "python" "-S", "pypy/test_all.py"
                                "--pypy=pypy/goal/pypy-c" "--timeout=3600"
                                "lib-python"))
                (zero? (system* "python" "-S", "pypy/test_all.py"
                                "--pypy=pypy/goal/pypy-c"
                                "pypy/module/pypyjit/test"))
                (zero? (system* "pypy/goal/pypy-c" "pypy/test_all.py"
                                "pypy/module/pypyjit/test_pypy_c")))))
         (replace 'install
            (lambda* (#:key outputs #:allow-other-keys)
              (chdir "../tool/release")
              ; TODO package.py --archive-name foobar
              (zero? (system* "./package.py pypy-VER-PLATFORM")))))))
    (home-page "http://www.pypy.org/";)
    (synopsis "Python 3.3 JIT")
    (description "This package provides a Python 3.3 just-in-time compiler.")
    (license (list license:expat
                   license:psfl
                   license:asl2.0
                   license:gpl2+
                   license:bsd-2
                   license:bsd-3
                   (license:non-copyleft
                    "http://www.unicode.org/copyright.html";)))))

TODO:
        Make it find '_testcapi' which is in
./pypy3.3-v5.2.0-alpha1-src/lib_pypy/__pycache__/_pypy_testcapi.pypy3-52.pyc
./pypy3.3-v5.2.0-alpha1-src/lib_pypy/_testcapi.py
        Make it find sqlite (still).

FAIL lib-python/3/test/test_capi.py::unmodified
        can't find module '_testcapi'
FAIL lib-python/3/test/test_compileall.py::unmodified
        pyo vs. pyc
FAIL lib-python/3/test/test_ctypes.py::unmodified
        can't find module 'ctypes_test'
FAIL lib-python/3/test/test_decimal.py::unmodified
        MemoryError (MPD_Malloc_error) in test_context_subclassing, others.
        Invalid Operation in _eval_equation
FAIL lib-python/3/test/test_faulthandler.py::unmodified
        Traceback capturing
FAIL lib-python/3/test/test_imp.py::unmodified
        test_imp: test_load_dynamic_ImportError_path 'NoneType' object is not 
iterable
FAIL lib-python/3/test/test_keywordonlyarg.py::unmodified
        test.test_keywordonlyarg.KeywordOnlyArgTestCase
                Captured error message isn't nice
FAIL lib-python/3/test/test_numeric_tower.py::unmodified
        test_integers fails (equal hash: InvalidOperation)
        test_numeric_tower.ComparisonTest: MemoryError
FAIL lib-python/3/test/test_peepholer.py::unmodified
        test_binary_subscr_on_unicode IR
FAIL lib-python/3/test/test_posixpath.py::unmodified
        Fixed; skipping now
FAIL lib-python/3/test/test_readline.py::unmodified
        _minimal_curses.error: setupterm: could not find terminfo database
FAIL lib-python/3/test/test_runpy.py::unmodified
        Main recursion (overflow) test fails



reply via email to

[Prev in Thread] Current Thread [Next in Thread]