[cctbxbb] bootstrap.py on windows

richard.gildea at diamond.ac.uk richard.gildea at diamond.ac.uk
Fri Apr 7 07:17:42 PDT 2017


Hi Rob,

I think you should be able to add pages yourself to the wiki, please let us know if that isn't that case, and I'm sure Markus can fix it so you can:

https://github.com/cctbx/cctbx_project/wiki

Cheers,

Richard

Dr Richard Gildea
Data Analysis Scientist
Tel: +441235 77 8078

Diamond Light Source Ltd.
Diamond House
Harwell Science & Innovation Campus
Didcot
Oxfordshire
OX11 0DE
________________________________
From: cctbxbb-bounces at phenix-online.org [cctbxbb-bounces at phenix-online.org] on behalf of R.D. Oeffner [rdo20 at cam.ac.uk]
Sent: 07 April 2017 15:13
To: horst.puschmann at gmail.com
Cc: cctbx mailing list
Subject: Re: [cctbxbb] bootstrap.py on windows


Hi Horst,

As far as I can tell your build platform is not configured properly. Git has to be installed before running bootstrap. The old documents on how to build on windows are very out of date. I have attached some new notes to that effect.



Markus and Richard,

Do you think these could go on the wiki somewhere obvious to people wanting to build CCTBX on Windows. The source is in rst format if that is any good for the wiki.

Rob





On 07/04/2017 13:46, Horst Puschmann wrote:

Hello Rob,

It turns out that the bootstrap script does not include the git repository. So there is nothing to 'git pull' on. With Luc's help (Thank you, Luc!) we got everything going up to the point where libtbx.scons failed.

c:\cctbx_17\build>bin\libtbx.scons -j4 TERSE=1
[...]
c:\cctbx_17\base\hdf5-1.8.16\include\H5public.h(158) : error C2371: 'ssize_t' :
redefinition; different basic types
        c:\cctbx_17\base\bin\python\include\pyconfig.h(205) : see declaration of
 'ssize_t'
scons: *** [cbflib\pycbf\pycbf_wrap.obj] Error 2
Compiling cbflib\src\cbf_compress.obj

Luc suggested to fun bin\libtbx.configure --only smtbx iotbx (the only things I am interested in right now) -- but it exits with

  Copying to lib: "c:\cctbx_17\modules\cbflib\pycbf\pycbf.py"
Processing: "c:\cctbx_17\modules\cctbx_project\iotbx\libtbx_refresh.py"
  Using fable to convert iotbx\pdb\hybrid_36_f.f
    Writing: iotbx\pdb\hybrid_36_fem.cpp
This script is only applicable to Linux - exiting.
Done.


Luc pinpointed the problem down to:

the problem is, I believe, in libtbx/auto_build/regenerate_module_files.py

at line 146


I guess I better leave it at that right now!

Greetings
Horst


On 6 April 2017 at 16:21, R.D. Oeffner <rdo20 at cam.ac.uk<mailto:rdo20 at cam.ac.uk>> wrote:

Hi Horst,

I encountered this error too and committed a fix half an hour ago to cctbx_project\cbflib_adaptbx\msvc_include\unistd.h. If you git pull cctbx_project and build with libtbx.scons again it should compile.

Rob



On 06/04/2017 15:54, Horst Puschmann wrote:

Hello Rob,

This works fine -- Thank You!

... but then something goes wrong in the compilation:

pycbf_wrap.c
c:\cctbx_17\base\hdf5-1.8.16\include\H5public.h(158) : error C2371: 'ssize_t' :
redefinition; different basic types
        c:\cctbx_17\base\bin\python\include\pyconfig.h(205) : see declaration of
 'ssize_t'
scons: *** [cbflib\pycbf\pycbf_wrap.obj] Error 2
scons: building terminated because of errors.
usr+sys time: 9.47 seconds
wall clock time: 4 minutes 22.11 seconds (262.11 seconds total)
Process failed with return code 2

;)

Horst

On 6 April 2017 at 14:37, R.D. Oeffner <rdo20 at cam.ac.uk<mailto:rdo20 at cam.ac.uk>> wrote:

Hi Horst,

I just committed a fix to bootstrap.py to allow anonymous build. If you get it with:

curl https://raw.githubusercontent.com/cctbx/cctbx_project/master/libtbx/auto_build/bootstrap.py > bootstrap.py

and then do the build with:

C:\Python27\python.exe bootstrap.py --builder=cctbx

this works for me. I did not encounter the RuntimeError you mentioned.

Let me know if it doesn't work,



Rob





On 06/04/2017 12:28, Horst Puschmann wrote:

Hello Rob,

Yes, this is the command I am using:

C:\Python27\python.exe bootstrap.py --builder=cctbx

Everything works fine (and I don't think it's too slow!) -- but that last call to python can not work, since it calls a directory:

    raise RuntimeError("Could not run %s: File not found" % executable)
RuntimeError: Could not run base\bin\python: File not found

if it called

base\bin\python\python instead, it would work.

Of course, I don't know what might not work after that step....

Horst


On 6 April 2017 at 12:17, R.D. Oeffner <rdo20 at cam.ac.uk<mailto:rdo20 at cam.ac.uk>> wrote:

Hi Horst and Markus,

Horst are you using a command line such as:

C:\Python\python.exe bootstrap.py --builder=cctbx

I realise this is broken because I never tested rigorously for anonymous builds of CCTBX on Windows. Am in the process of fixing this.

Markus you are correct that the roundabout way to get hot packages from CCI is because rsync does not exist on Windows. With Git installed on windows curl and a few other Unix tools do exist. This was a quick solution for making a Windows build Phenix, Dials and CCTBX where it has been running smoothly since August last year. The Robocopy calls for deleting files is a solution, albeit cumbersome for deleting very long file paths on Windows (>255 characters). Pythons shutil.rmtree() will fail in such cases. File deletion on Windows is always much slower than on UNIX by design.

Making bootstrap.py and Buildbot work on Windows has been taken up a lot of work given that Buildbot seems to has been designed in denial of the existence of Windows and Microsoft until recently have been in denial of open source solutions.



Rob



On 06/04/2017 10:50, markus.gerstel at diamond.ac.uk<mailto:markus.gerstel at diamond.ac.uk> wrote:

Hi Horst, Rob

I had a brief look at the bootstrap script. If I understand it correctly only authenticated access is allowed at the moment due to the unique way the download archives are constructed.

I am not entirely sure why the sequence to download the 'hot' packages (I did not venture further into the bootstrap process) consists of
 * ssh'ing to CCI servers
 * creating a TAR archive
 * downloading said archive via SCP
 * unpacking the archive
instead of going down the conventional route of
 * downloading the default TAR archive via HTTP (yes, they're called .gz because someone was lazy, but they are .tar.gz files)
 * unpacking the archive

I suspect that this is due to the absence of CURL on Windows machines combined with how the bootstrap script is intertwined with the buildbot testing system. Internally, the bootstrap script uses an "_add_curl" call to download files. When run within the buildbot testing system this presumably gets replaced by an actual call to the 'curl' program, which doesn't exist on Windows, and so would fail. However, when you run bootstrap.py directly _add_curl actually uses an internal downloading routine, which works.
(If true, this would simply be one more example of why buildbot determining the layout of bootstrap is both limiting and dangerous. The solution for that of course would be to install CURL for Windows (and/or replace buildbot))

So I guess the two lines in add_module, https://github.com/cctbx/cctbx_project/blob/master/libtbx/auto_build/bootstrap.py#L1124
    if self.isPlatformWindows():
       tarurl, arxname, dirpath = MODULES.get_module(module)().get_tarauthenticated(auth=self.get_auth())
could be removed along with all references to tarauthenticated?

As Horst already said there is more going wrong here. The ROBOCOPY calls are *incredibly* slow for something that could/should be done in pure python instead (shutil.rmtree?). The ssl 'workaround' uses internal methods, which are not available on older versions of Python.

The error at the end is presumably that the python interpreter is called python.exe on Windows?

-Markus


-----Original Message-----
From: cctbxbb-bounces at phenix-online.org<mailto:cctbxbb-bounces at phenix-online.org> [mailto:cctbxbb-bounces at phenix-online.org<mailto:cctbxbb-bounces at phenix-online.org>] On Behalf Of R. D. Oeffner
Sent: 06 April 2017 10:18
To: horst.puschmann at gmail.com<mailto:horst.puschmann at gmail.com>; cctbxbb at phenix-online.org<mailto:cctbxbb at phenix-online.org>
Subject: Re: [cctbxbb] bootstrap.py on windows

Dear Horst,

I'll look into that. FYI you can also get Windows builds of CCTBX. See email below. You may have to resort using bundles from a few days ago because the two last nightly builds on windows are broken.

Rob

-----Original Message-----
From: R. D. Oeffner
Sent: Sunday, March 19, 2017 3:49 PM
To: Billy Poon ; nwmoriarty at lbl.gov<mailto:nwmoriarty at lbl.gov>
Subject: Re: Windows builds for cctbx

There should now be CCTBX builds for Windows in the most recent folders on http://cci.lbl.gov/cctbx_build . They are just the sources and the build directory zipped into an archive and does not include an installation program like the graphical Phenix installer for Windows. Presumably people wanting to use only CCTBX are sufficiently computer savvy to cope with this.

Rob


--
Robert Oeffner, Ph.D.
Research Associate, The Read Group
Department of Haematology,
Cambridge Institute for Medical Research University of Cambridge Cambridge Biomedical Campus Wellcome Trust/MRC Building Hills Road Cambridge CB2 0XY

www.cimr.cam.ac.uk/investigators/read/index.html<http://www.cimr.cam.ac.uk/investigators/read/index.html>
tel: +44(0)1223 763234<tel:+44%201223%20763234>
mobile: +44(0)7712 887162<tel:+44%207712%20887162>
-----Original Message-----
From: Horst Puschmann
Sent: Thursday, April 6, 2017 9:59 AM
To: cctbxbb at phenix-online.org<mailto:cctbxbb at phenix-online.org>
Subject: [cctbxbb] bootstrap.py on windows


Hello

I am trying to install the cctbx on a Windows 7 64 bit machine using the
following bootstrap.py file:

https://raw.githubusercontent.com/cctbx/cctbx_project/master/libtbx/auto_build/bootstrap.py

The script will fail, unless I comment out lines 1101 and 1102:

    #if self.isPlatformWindows():
      #tarurl, arxname, dirpath =
MODULES.get_module(module)().get_tarauthenticated(auth=self.get_auth())

If it tries to execute the commented lines, the error will be "KeyError:
'cciuser' in line 590"

After commenting this out, it will fail in line 271, with "AttributeError:
'module' object has no attribute '_create_unverified_context'"

I can get round that with disabling line 247:

      if sys.platform == "win32":

(i.e. change this to       if sys.platform == "xxx":)


After that, things start downloading. All appears well until the same thing
happens again in another bootstrap.py file in
\modules\cctbx_project\libtbx\auto_build\bootstrap.py

If I disable *that*, it goes further but fails finally with

===== Running in build: run configure.py
Traceback (most recent call last):
  File "bootstrap.py", line 2113, in <module>
    run()
  File "bootstrap.py", line 2108, in run
    enable_shared=options.enable_shared,
  File "bootstrap.py", line 1036, in run
    i.run()
  File "bootstrap.py", line 189, in run
    raise RuntimeError("Could not run %s: File not found" % executable)
RuntimeError: Could not run base\bin\python: File not found


I guess the automatic tests haven't picked this up, because no
authentication is needed, maybe?

Greetings
Horst

Virus-free. www.avg.com<http://www.avg.com>





_______________________________________________
cctbxbb mailing list
cctbxbb at phenix-online.org<mailto:cctbxbb at phenix-online.org>
http://phenix-online.org/mailman/listinfo/cctbxbb

_______________________________________________
cctbxbb mailing list
cctbxbb at phenix-online.org<mailto:cctbxbb at phenix-online.org>
http://phenix-online.org/mailman/listinfo/cctbxbb










-- 
This e-mail and any attachments may contain confidential, copyright and or privileged material, and are for the use of the intended addressee only. If you are not the intended addressee or an authorised recipient of the addressee please notify us of receipt by returning the e-mail and do not use, copy, retain, distribute or disclose the information in or attached to the e-mail.
Any opinions expressed within this e-mail are those of the individual and not necessarily of Diamond Light Source Ltd. 
Diamond Light Source Ltd. cannot guarantee that this e-mail or any attachments are free from viruses and we cannot accept liability for any damage which you may sustain as a result of software viruses which may be transmitted in or with the message.
Diamond Light Source Limited (company no. 4375679). Registered in England and Wales with its registered office at Diamond House, Harwell Science and Innovation Campus, Didcot, Oxfordshire, OX11 0DE, United Kingdom




More information about the cctbxbb mailing list