From d405e01853bb5bb0e916479ac02a7de450daa688 Mon Sep 17 00:00:00 2001 From: Robert Izzard <r.izzard@surrey.ac.uk> Date: Mon, 11 Nov 2019 18:53:57 +0000 Subject: [PATCH] update dockerfile to point back to master add binary_c_install_legacy to docs --- doc/binary_c2.html | 2067 ++++++++------- doc/binary_c2.lyx | 109 + doc/binary_c2.pdf | Bin 962338 -> 963550 bytes docker/Dockerfile | 14 +- docker/build.log | 6270 ++++++++++++++++---------------------------- docker/build.sh | 11 +- 6 files changed, 3460 insertions(+), 5011 deletions(-) diff --git a/doc/binary_c2.html b/doc/binary_c2.html index 8e6c3baa2..d434a2eb3 100644 --- a/doc/binary_c2.html +++ b/doc/binary_c2.html @@ -353,276 +353,276 @@ Warning: <em><i>binary_c</i></em> is always under development, so details are li <div class='lyxtoc-3'><a href='#magicparlabel-868' class='tocentry'>4.4 Configuring and building <i>binary_c</i></a> </div> -<div class='lyxtoc-3'><a href='#magicparlabel-1193' class='tocentry'>4.5 Testing <i>binary_c</i></a> +<div class='lyxtoc-3'><a href='#magicparlabel-1218' class='tocentry'>4.5 Testing <i>binary_c</i></a> </div> -<div class='lyxtoc-3'><a href='#magicparlabel-1236' class='tocentry'>4.6 Directory structure</a> +<div class='lyxtoc-3'><a href='#magicparlabel-1261' class='tocentry'>4.6 Directory structure</a> </div> -<div class='lyxtoc-3'><a href='#magicparlabel-1279' class='tocentry'>4.7 Building binary_grid2: the population synthesis module</a> +<div class='lyxtoc-3'><a href='#magicparlabel-1304' class='tocentry'>4.7 Building binary_grid2: the population synthesis module</a> </div> -<div class='lyxtoc-3'><a href='#magicparlabel-1766' class='tocentry'>4.8 <em><i>binary_grid2</i></em> backends</a> +<div class='lyxtoc-3'><a href='#magicparlabel-1791' class='tocentry'>4.8 <em><i>binary_grid2</i></em> backends</a> </div> </div> -<div class='lyxtoc-2'><a href='#magicparlabel-2026' class='tocentry'>5 Evolving single and binary stars</a> +<div class='lyxtoc-2'><a href='#magicparlabel-2051' class='tocentry'>5 Evolving single and binary stars</a> -<div class='lyxtoc-3'><a href='#magicparlabel-2029' class='tocentry'>5.1 Running</a> +<div class='lyxtoc-3'><a href='#magicparlabel-2054' class='tocentry'>5.1 Running</a> </div> </div> -<div class='lyxtoc-2'><a href='#magicparlabel-2180' class='tocentry'>6 Making populations of stars with <i>binary_grid2</i></a> +<div class='lyxtoc-2'><a href='#magicparlabel-2205' class='tocentry'>6 Making populations of stars with <i>binary_grid2</i></a> -<div class='lyxtoc-3'><a href='#magicparlabel-2200' class='tocentry'>6.1 Introduction</a> +<div class='lyxtoc-3'><a href='#magicparlabel-2225' class='tocentry'>6.1 Introduction</a> </div> -<div class='lyxtoc-3'><a href='#magicparlabel-2223' class='tocentry'>6.2 Aims: what the grid does and why</a> +<div class='lyxtoc-3'><a href='#magicparlabel-2248' class='tocentry'>6.2 Aims: what the grid does and why</a> </div> -<div class='lyxtoc-3'><a href='#magicparlabel-2225' class='tocentry'>6.3 Grid dimensions</a> +<div class='lyxtoc-3'><a href='#magicparlabel-2250' class='tocentry'>6.3 Grid dimensions</a> </div> -<div class='lyxtoc-3'><a href='#magicparlabel-2238' class='tocentry'>6.4 What to do with the grid</a> +<div class='lyxtoc-3'><a href='#magicparlabel-2263' class='tocentry'>6.4 What to do with the grid</a> </div> -<div class='lyxtoc-3'><a href='#magicparlabel-2247' class='tocentry'>6.5 Grid setup (in theory)</a> +<div class='lyxtoc-3'><a href='#magicparlabel-2272' class='tocentry'>6.5 Grid setup (in theory)</a> </div> -<div class='lyxtoc-3'><a href='#magicparlabel-2268' class='tocentry'>6.6 Data parsing</a> +<div class='lyxtoc-3'><a href='#magicparlabel-2293' class='tocentry'>6.6 Data parsing</a> </div> -<div class='lyxtoc-3'><a href='#magicparlabel-2280' class='tocentry'>6.7 Running grids of stars</a> +<div class='lyxtoc-3'><a href='#magicparlabel-2305' class='tocentry'>6.7 Running grids of stars</a> </div> -<div class='lyxtoc-3'><a href='#magicparlabel-2421' class='tocentry'>6.8 Important Subroutines in your grid script</a> +<div class='lyxtoc-3'><a href='#magicparlabel-2446' class='tocentry'>6.8 Important Subroutines in your grid script</a> </div> -<div class='lyxtoc-3'><a href='#magicparlabel-2456' class='tocentry'>6.9 Your <em>grid script </em>and coupling your population synthesis to <em><i>binary_c</i>/nucsyn</em></a> +<div class='lyxtoc-3'><a href='#magicparlabel-2481' class='tocentry'>6.9 Your <em>grid script </em>and coupling your population synthesis to <em><i>binary_c</i>/nucsyn</em></a> </div> -<div class='lyxtoc-3'><a href='#magicparlabel-2718' class='tocentry'>6.10 Save your data – or process on the fly?</a> +<div class='lyxtoc-3'><a href='#magicparlabel-2743' class='tocentry'>6.10 Save your data – or process on the fly?</a> </div> -<div class='lyxtoc-3'><a href='#magicparlabel-2749' class='tocentry'>6.11 Flexigrid</a> +<div class='lyxtoc-3'><a href='#magicparlabel-2774' class='tocentry'>6.11 Flexigrid</a> </div> -<div class='lyxtoc-3'><a href='#magicparlabel-2771' class='tocentry'>6.12 Setup in your grid script</a> +<div class='lyxtoc-3'><a href='#magicparlabel-2796' class='tocentry'>6.12 Setup in your grid script</a> </div> -<div class='lyxtoc-3'><a href='#magicparlabel-2871' class='tocentry'>6.13 3D grid example</a> +<div class='lyxtoc-3'><a href='#magicparlabel-2896' class='tocentry'>6.13 3D grid example</a> </div> -<div class='lyxtoc-3'><a href='#magicparlabel-2927' class='tocentry'>6.14 Viewing The (Automatically Generated) Gridcode </a> +<div class='lyxtoc-3'><a href='#magicparlabel-2952' class='tocentry'>6.14 Viewing The (Automatically Generated) Gridcode </a> </div> -<div class='lyxtoc-3'><a href='#magicparlabel-2955' class='tocentry'>6.15 Error handling</a> +<div class='lyxtoc-3'><a href='#magicparlabel-2980' class='tocentry'>6.15 Error handling</a> </div> -<div class='lyxtoc-3'><a href='#magicparlabel-2979' class='tocentry'>6.16 Flexigrid variable options</a> +<div class='lyxtoc-3'><a href='#magicparlabel-3004' class='tocentry'>6.16 Flexigrid variable options</a> </div> -<div class='lyxtoc-3'><a href='#magicparlabel-3026' class='tocentry'>6.17 Flexigrid loop structure</a> +<div class='lyxtoc-3'><a href='#magicparlabel-3051' class='tocentry'>6.17 Flexigrid loop structure</a> </div> -<div class='lyxtoc-3'><a href='#magicparlabel-3086' class='tocentry'>6.18 <i>binary_grid</i> with <em>HTCondor</em></a> +<div class='lyxtoc-3'><a href='#magicparlabel-3111' class='tocentry'>6.18 <i>binary_grid</i> with <em>HTCondor</em></a> </div> -<div class='lyxtoc-3'><a href='#magicparlabel-3515' class='tocentry'>6.19 Binary_grid with <em>slurm</em></a> +<div class='lyxtoc-3'><a href='#magicparlabel-3540' class='tocentry'>6.19 Binary_grid with <em>slurm</em></a> </div> -<div class='lyxtoc-3'><a href='#magicparlabel-3644' class='tocentry'>6.20 Initial distributions (IMF etc.) </a> +<div class='lyxtoc-3'><a href='#magicparlabel-3669' class='tocentry'>6.20 Initial distributions (IMF etc.) </a> </div> -<div class='lyxtoc-3'><a href='#magicparlabel-3665' class='tocentry'>6.21 Grid spacings</a> +<div class='lyxtoc-3'><a href='#magicparlabel-3690' class='tocentry'>6.21 Grid spacings</a> </div> -<div class='lyxtoc-3'><a href='#magicparlabel-3675' class='tocentry'>6.22 The <span class='math'>\binarygrid</span> +<div class='lyxtoc-3'><a href='#magicparlabel-3700' class='tocentry'>6.22 The <span class='math'>\binarygrid</span> thread model</a> </div> -<div class='lyxtoc-3'><a href='#magicparlabel-3836' class='tocentry'>6.23 Debugging, benchmarking and advanced topics</a> +<div class='lyxtoc-3'><a href='#magicparlabel-3861' class='tocentry'>6.23 Debugging, benchmarking and advanced topics</a> </div> -<div class='lyxtoc-3'><a href='#magicparlabel-4038' class='tocentry'>6.24 Future Plans</a> +<div class='lyxtoc-3'><a href='#magicparlabel-4063' class='tocentry'>6.24 Future Plans</a> </div> -<div class='lyxtoc-3'><a href='#magicparlabel-4042' class='tocentry'>6.25 Cookbook</a> +<div class='lyxtoc-3'><a href='#magicparlabel-4067' class='tocentry'>6.25 Cookbook</a> </div> -<div class='lyxtoc-3'><a href='#magicparlabel-4253' class='tocentry'>6.26 FAQ</a> +<div class='lyxtoc-3'><a href='#magicparlabel-4278' class='tocentry'>6.26 FAQ</a> </div> -<div class='lyxtoc-3'><a href='#magicparlabel-4357' class='tocentry'>6.27 Multi-core scaling</a> +<div class='lyxtoc-3'><a href='#magicparlabel-4382' class='tocentry'>6.27 Multi-core scaling</a> </div> -<div class='lyxtoc-3'><a href='#magicparlabel-4365' class='tocentry'>6.28 Testing Setup</a> +<div class='lyxtoc-3'><a href='#magicparlabel-4390' class='tocentry'>6.28 Testing Setup</a> </div> -<div class='lyxtoc-3'><a href='#magicparlabel-4415' class='tocentry'>6.29 Results</a> +<div class='lyxtoc-3'><a href='#magicparlabel-4440' class='tocentry'>6.29 Results</a> </div> -<div class='lyxtoc-3'><a href='#magicparlabel-4472' class='tocentry'>6.30 Conclusions</a> +<div class='lyxtoc-3'><a href='#magicparlabel-4497' class='tocentry'>6.30 Conclusions</a> </div> </div> -<div class='lyxtoc-2'><a href='#magicparlabel-4557' class='tocentry'>7 <em><i>binary_c</i> </em>API</a> +<div class='lyxtoc-2'><a href='#magicparlabel-4582' class='tocentry'>7 <em><i>binary_c</i> </em>API</a> -<div class='lyxtoc-3'><a href='#magicparlabel-4561' class='tocentry'>7.1 Naming conventions</a> +<div class='lyxtoc-3'><a href='#magicparlabel-4586' class='tocentry'>7.1 Naming conventions</a> </div> -<div class='lyxtoc-3'><a href='#magicparlabel-4681' class='tocentry'>7.2 Using the API</a> +<div class='lyxtoc-3'><a href='#magicparlabel-4706' class='tocentry'>7.2 Using the API</a> </div> -<div class='lyxtoc-3'><a href='#magicparlabel-4914' class='tocentry'>7.3 Standard functions</a> +<div class='lyxtoc-3'><a href='#magicparlabel-4939' class='tocentry'>7.3 Standard functions</a> </div> -<div class='lyxtoc-3'><a href='#magicparlabel-5161' class='tocentry'>7.4 Extension functions</a> +<div class='lyxtoc-3'><a href='#magicparlabel-5186' class='tocentry'>7.4 Extension functions</a> </div> -<div class='lyxtoc-3'><a href='#magicparlabel-5211' class='tocentry'>7.5 API Examples</a> +<div class='lyxtoc-3'><a href='#magicparlabel-5236' class='tocentry'>7.5 API Examples</a> </div> </div> -<div class='lyxtoc-2'><a href='#magicparlabel-5431' class='tocentry'>8 Code description and internals</a> +<div class='lyxtoc-2'><a href='#magicparlabel-5456' class='tocentry'>8 Code description and internals</a> -<div class='lyxtoc-3'><a href='#magicparlabel-5434' class='tocentry'>8.1 History</a> +<div class='lyxtoc-3'><a href='#magicparlabel-5459' class='tocentry'>8.1 History</a> </div> -<div class='lyxtoc-3'><a href='#magicparlabel-5496' class='tocentry'>8.2 How the <em><i>binary_c</i></em> code works</a> +<div class='lyxtoc-3'><a href='#magicparlabel-5521' class='tocentry'>8.2 How the <em><i>binary_c</i></em> code works</a> </div> -<div class='lyxtoc-3'><a href='#magicparlabel-5504' class='tocentry'>8.3 Memory management in <span class='math'>binary_c</i></span> +<div class='lyxtoc-3'><a href='#magicparlabel-5529' class='tocentry'>8.3 Memory management in <span class='math'>binary_c</i></span> </a> </div> -<div class='lyxtoc-3'><a href='#magicparlabel-5877' class='tocentry'>8.4 Output</a> +<div class='lyxtoc-3'><a href='#magicparlabel-5902' class='tocentry'>8.4 Output</a> </div> -<div class='lyxtoc-3'><a href='#magicparlabel-5957' class='tocentry'>8.5 Debugging <span class='math'>binary_c</i></span> +<div class='lyxtoc-3'><a href='#magicparlabel-5982' class='tocentry'>8.5 Debugging <span class='math'>binary_c</i></span> </a> </div> -<div class='lyxtoc-3'><a href='#magicparlabel-6250' class='tocentry'>8.6 Events</a> +<div class='lyxtoc-3'><a href='#magicparlabel-6275' class='tocentry'>8.6 Events</a> </div> -<div class='lyxtoc-3'><a href='#magicparlabel-6505' class='tocentry'>8.7 Timestepping</a> +<div class='lyxtoc-3'><a href='#magicparlabel-6530' class='tocentry'>8.7 Timestepping</a> </div> -<div class='lyxtoc-3'><a href='#magicparlabel-6584' class='tocentry'>8.8 Code layout, header files, flow</a> +<div class='lyxtoc-3'><a href='#magicparlabel-6609' class='tocentry'>8.8 Code layout, header files, flow</a> </div> -<div class='lyxtoc-3'><a href='#magicparlabel-6986' class='tocentry'>8.9 nucsyn</a> +<div class='lyxtoc-3'><a href='#magicparlabel-7011' class='tocentry'>8.9 nucsyn</a> </div> -<div class='lyxtoc-3'><a href='#magicparlabel-7325' class='tocentry'>8.10 Coding style</a> +<div class='lyxtoc-3'><a href='#magicparlabel-7350' class='tocentry'>8.10 Coding style</a> </div> -<div class='lyxtoc-3'><a href='#magicparlabel-7387' class='tocentry'>8.11 Control scripts</a> +<div class='lyxtoc-3'><a href='#magicparlabel-7412' class='tocentry'>8.11 Control scripts</a> </div> </div> -<div class='lyxtoc-2'><a href='#magicparlabel-7407' class='tocentry'>9 Advanced Configuration</a> +<div class='lyxtoc-2'><a href='#magicparlabel-7432' class='tocentry'>9 Advanced Configuration</a> -<div class='lyxtoc-3'><a href='#magicparlabel-7426' class='tocentry'>9.1 Meson configuation</a> +<div class='lyxtoc-3'><a href='#magicparlabel-7451' class='tocentry'>9.1 Meson configuation</a> </div> -<div class='lyxtoc-3'><a href='#magicparlabel-7444' class='tocentry'>9.2 <i>binary_c</i>-config</a> +<div class='lyxtoc-3'><a href='#magicparlabel-7469' class='tocentry'>9.2 <i>binary_c</i>-config</a> </div> -<div class='lyxtoc-3'><a href='#magicparlabel-7537' class='tocentry'>9.3 Makefile -D…</a> +<div class='lyxtoc-3'><a href='#magicparlabel-7562' class='tocentry'>9.3 Makefile -D…</a> </div> -<div class='lyxtoc-3'><a href='#magicparlabel-7567' class='tocentry'>9.4 binary_c_code_options.h</a> +<div class='lyxtoc-3'><a href='#magicparlabel-7592' class='tocentry'>9.4 binary_c_code_options.h</a> </div> -<div class='lyxtoc-3'><a href='#magicparlabel-7606' class='tocentry'>9.5 binary_c_parameters.h</a> +<div class='lyxtoc-3'><a href='#magicparlabel-7631' class='tocentry'>9.5 binary_c_parameters.h</a> </div> -<div class='lyxtoc-3'><a href='#magicparlabel-7770' class='tocentry'>9.6 nucsyn/nucsyn_parameters.h</a> +<div class='lyxtoc-3'><a href='#magicparlabel-7795' class='tocentry'>9.6 nucsyn/nucsyn_parameters.h</a> </div> </div> -<div class='lyxtoc-2'><a href='#magicparlabel-7864' class='tocentry'>10 <em><i>binary_c</i> </em>software development cycle</a> +<div class='lyxtoc-2'><a href='#magicparlabel-7889' class='tocentry'>10 <em><i>binary_c</i> </em>software development cycle</a> -<div class='lyxtoc-3'><a href='#magicparlabel-7868' class='tocentry'>10.1 The git revolution</a> +<div class='lyxtoc-3'><a href='#magicparlabel-7893' class='tocentry'>10.1 The git revolution</a> </div> -<div class='lyxtoc-3'><a href='#magicparlabel-7891' class='tocentry'>10.2 The master(trunk)–branch model</a> +<div class='lyxtoc-3'><a href='#magicparlabel-7916' class='tocentry'>10.2 The master(trunk)–branch model</a> </div> </div> -<div class='lyxtoc-2'><a href='#magicparlabel-7976' class='tocentry'>11 Cookbook</a> +<div class='lyxtoc-2'><a href='#magicparlabel-8001' class='tocentry'>11 Cookbook</a> -<div class='lyxtoc-3'><a href='#magicparlabel-7977' class='tocentry'>11.1 How to log output</a> +<div class='lyxtoc-3'><a href='#magicparlabel-8002' class='tocentry'>11.1 How to log output</a> </div> -<div class='lyxtoc-3'><a href='#magicparlabel-7991' class='tocentry'>11.2 How to find which source files contain a string</a> +<div class='lyxtoc-3'><a href='#magicparlabel-8016' class='tocentry'>11.2 How to find which source files contain a string</a> </div> -<div class='lyxtoc-3'><a href='#magicparlabel-8015' class='tocentry'>11.3 How to build with debugging output</a> +<div class='lyxtoc-3'><a href='#magicparlabel-8040' class='tocentry'>11.3 How to build with debugging output</a> </div> -<div class='lyxtoc-3'><a href='#magicparlabel-8049' class='tocentry'>11.4 How to check for NaNs (not a numbers)</a> +<div class='lyxtoc-3'><a href='#magicparlabel-8074' class='tocentry'>11.4 How to check for NaNs (not a numbers)</a> </div> -<div class='lyxtoc-3'><a href='#magicparlabel-8071' class='tocentry'>11.5 How to exit <em><i>binary_c</i></em></a> +<div class='lyxtoc-3'><a href='#magicparlabel-8096' class='tocentry'>11.5 How to exit <em><i>binary_c</i></em></a> </div> -<div class='lyxtoc-3'><a href='#magicparlabel-8094' class='tocentry'>11.6 How to debug segfaults</a> +<div class='lyxtoc-3'><a href='#magicparlabel-8119' class='tocentry'>11.6 How to debug segfaults</a> </div> -<div class='lyxtoc-3'><a href='#magicparlabel-8135' class='tocentry'>11.7 How to debug memory leaks</a> +<div class='lyxtoc-3'><a href='#magicparlabel-8160' class='tocentry'>11.7 How to debug memory leaks</a> </div> -<div class='lyxtoc-3'><a href='#magicparlabel-8174' class='tocentry'>11.8 How to show the arguments that <em>tbse</em> would use, but do not evolve a star</a> +<div class='lyxtoc-3'><a href='#magicparlabel-8199' class='tocentry'>11.8 How to show the arguments that <em>tbse</em> would use, but do not evolve a star</a> </div> -<div class='lyxtoc-3'><a href='#magicparlabel-8180' class='tocentry'>11.9 How to run a star which has the arguments in a file</a> +<div class='lyxtoc-3'><a href='#magicparlabel-8205' class='tocentry'>11.9 How to run a star which has the arguments in a file</a> </div> -<div class='lyxtoc-3'><a href='#magicparlabel-8186' class='tocentry'>11.10 How to use profile guided optimization (PGO)</a> +<div class='lyxtoc-3'><a href='#magicparlabel-8211' class='tocentry'>11.10 How to use profile guided optimization (PGO)</a> </div> -<div class='lyxtoc-3'><a href='#magicparlabel-8211' class='tocentry'>11.11 How to get help</a> +<div class='lyxtoc-3'><a href='#magicparlabel-8236' class='tocentry'>11.11 How to get help</a> </div> -<div class='lyxtoc-3'><a href='#magicparlabel-8226' class='tocentry'>11.12 How to add a parameter</a> +<div class='lyxtoc-3'><a href='#magicparlabel-8251' class='tocentry'>11.12 How to add a parameter</a> </div> -<div class='lyxtoc-3'><a href='#magicparlabel-8245' class='tocentry'>11.13 How to build on a Mac</a> +<div class='lyxtoc-3'><a href='#magicparlabel-8270' class='tocentry'>11.13 How to build on a Mac</a> </div> -<div class='lyxtoc-3'><a href='#magicparlabel-8247' class='tocentry'>11.14 How to build as a shared library</a> +<div class='lyxtoc-3'><a href='#magicparlabel-8272' class='tocentry'>11.14 How to build as a shared library</a> </div> -<div class='lyxtoc-3'><a href='#magicparlabel-8253' class='tocentry'>11.15 How to calculate stellar yields or population statistics</a> +<div class='lyxtoc-3'><a href='#magicparlabel-8278' class='tocentry'>11.15 How to calculate stellar yields or population statistics</a> </div> -<div class='lyxtoc-3'><a href='#magicparlabel-8299' class='tocentry'>11.16 <em>bash</em> autocompletion of <i>binary_c</i> arguments</a> +<div class='lyxtoc-3'><a href='#magicparlabel-8324' class='tocentry'>11.16 <em>bash</em> autocompletion of <i>binary_c</i> arguments</a> </div> -<div class='lyxtoc-3'><a href='#magicparlabel-8329' class='tocentry'>11.17 How to find the <em>git</em> revision and <em>git</em> URL</a> +<div class='lyxtoc-3'><a href='#magicparlabel-8354' class='tocentry'>11.17 How to find the <em>git</em> revision and <em>git</em> URL</a> </div> </div> -<div class='lyxtoc-2'><a href='#magicparlabel-8365' class='tocentry'>12 Changelog</a> +<div class='lyxtoc-2'><a href='#magicparlabel-8390' class='tocentry'>12 Changelog</a> </div> -<div class='lyxtoc-2'><a href='#magicparlabel-8393' class='tocentry'>13 Acknowledgements</a> +<div class='lyxtoc-2'><a href='#magicparlabel-8418' class='tocentry'>13 Acknowledgements</a> </div> -<div class='lyxtoc-2'><a href='#magicparlabel-8400' class='tocentry'>A Grid options (<em>grid_options</em> hash)</a> +<div class='lyxtoc-2'><a href='#magicparlabel-8425' class='tocentry'>A Grid options (<em>grid_options</em> hash)</a> </div> -<div class='lyxtoc-2'><a href='#magicparlabel-8457' class='tocentry'>B Binary_c/nucsyn options (<em>bse_options</em> hash)</a> +<div class='lyxtoc-2'><a href='#magicparlabel-8482' class='tocentry'>B Binary_c/nucsyn options (<em>bse_options</em> hash)</a> </div> </div> </div> @@ -1109,12 +1109,12 @@ $ tbse</pre><br /> <div class="standard" id='magicparlabel-578'>In order to obtain an account, you need to do the following, in order</div> -<ol class="enumerate" id='magicparlabel-579'><li class="enumerate_item">Try to log in at <a href="https://gitlab.eps.surrey.ac.uk/ri0005/<i>binary_c</i>">https://gitlab.eps.surrey.ac.uk/ri0005/<i>binary_c</i></a> using your Gmail account by clicking on the <img style='width:1.2em;' src='images/2.png' alt='image: 8_tmp_binary_c_lyx_images_1.png' /> +<ol class="enumerate" id='magicparlabel-579'><li class="enumerate_item">Try to log in at <a href="https://gitlab.eps.surrey.ac.uk/ri0005/<i>binary_c</i>">https://gitlab.eps.surrey.ac.uk/ri0005/<i>binary_c</i></a> using your Gmail account by clicking on the <img style='width:1.2em;' src='images/2.png' alt='image: 8_tmp_binary_c_lyx_images_3.png' /> . You will be told <em>your account is locked!</em> This poorly-worded message means you have to…</li> <li class="enumerate_item">Email me at r.izzard@surrey.ac.uk and tell me your account is “locked”. I will then email IT support, who will unlock your account.</li> <li class="enumerate_item">IT support should then tell me your account is unlocked so I should then be able to tell you. However, IT support have been known to unlock accounts and <em>not </em>let me know, so please keep trying. If you find you <em>can </em>access the gitlab server (i.e. you can log in) but get a “404 The page could not be found or you don't have permission to view it” error when trying to view <a href="https://gitlab.eps.surrey.ac.uk/ri0005/<i>binary_c</i>">https://gitlab.eps.surrey.ac.uk/ri0005/<i>binary_c</i></a>, then I can probably fix the problem. But you have to tell me, so keep trying to log in :)</li> <li class="enumerate_item">This may take some time: please do hot hold your breath, <em>it is most unwise.</em></li> -<li class="enumerate_item">Once you have confirmation from me (or before, if you are impatient) go back to the website, please click on the <img style='width:1.2em;' src='images/3.png' alt='image: 9_tmp_binary_c_lyx_images_2.png' /> +<li class="enumerate_item">Once you have confirmation from me (or before, if you are impatient) go back to the website, please click on the <img style='width:1.2em;' src='images/3.png' alt='image: 9_tmp_binary_c_lyx_images_4.png' /> to sign in, and grab the code. If everything works, great! If not, I may have to talk with IT support, yet again.</li> </ol> <div class="standard" style='text-align: center;' id='magicparlabel-584'><div class='Boxed' style='width: 75%; '><div class="plain_layout" id='magicparlabel-588'>If you do not know me, it would really help me – and those who fund <em><span class='math'>binary_c</i></span> @@ -1317,24 +1317,63 @@ $ ninja libbinary_c_symlink</pre><br /> </div> <div class="standard" id='magicparlabel-1022'>This makes the <span class="flex_file"><i>libbinary_c.so</i></span> shared library which can be used, for example, by the <span class="flex_programminglanguage">C</span> backend to <i>binary_grid</i><em>2</em>, or to access <i>binary_c</i> through its <em>API</em> functions. The <span class="flex_args">libbinary_c_symlink</span> build sets up a symbolic link in the <i>binary_c</i> <span class="flex_file">src</span> directory which allows <i>binary_grid</i><em>2 </em>to function.</div> -<h4 class="subsubsection" id='magicparlabel-1039'><span class="subsubsection_label">4.4.6</span> Alternative compiler</h4> -<div class="standard" id='magicparlabel-1040'>You can build with another compiler, e.g.<em> <span class="flex_software">clang</span></em>, by setting the <span class="flex_envvar">CC</span> environment variable. If you have not yet made a builddir, do the following.</div> +<h4 class="subsubsection" id='magicparlabel-1039'><span class="subsubsection_label">4.4.6</span> Building <i>binary_c</i> and <i>libbinary_c</i>, and installing them for <math xmlns="http://www.w3.org/1998/Math/MathML"><mstyle mathvariant='sans-serif-italic' mathsize='85%'> + <mrow> + <mrow> + <mstyle mathvariant='normal'> + <mstyle mathvariant='italic'> + <mrow><mi>b</mi><mi>i</mi><mi>n</mi><mi>a</mi><mi>r</mi><mi>y</mi>_<mi>g</mi><mi>r</mi><mi>i</mi><mi>d</mi> + </mrow> + </mstyle> + </mstyle><mn>2</mn> + </mrow> + </mrow></mstyle></math></h4> +<div class="standard" id='magicparlabel-1040'>You can build and install both <i>binary_c</i> and <i>libbinary_c</i> in locations which are compatible with legacy builds and <math xmlns="http://www.w3.org/1998/Math/MathML"><mstyle mathvariant='sans-serif-italic' mathsize='85%'> + <mrow> + <mrow> + <mstyle mathvariant='normal'> + <mstyle mathvariant='italic'> + <mrow><mi>b</mi><mi>i</mi><mi>n</mi><mi>a</mi><mi>r</mi><mi>y</mi>_<mi>g</mi><mi>r</mi><mi>i</mi><mi>d</mi> + </mrow> + </mstyle> + </mstyle><mn>2</mn> + </mrow> + </mrow></mstyle></math> with one command:</div> + +<div class="standard" id='magicparlabel-1041'><br /> +<pre class\s*='listings bash'>$ cd builddir +$ ninja binary_c_install_legacy</pre><br /> +This puts a copy of the <span class="flex_file"><i>binary_c</i></span> executable in the root <i>binary_c</i> directory, and copies the shared library file <span class="flex_file"><i>libbinary_c.so</i></span> to the <span class="flex_file">src</span> directory, i.e. the locations <math xmlns="http://www.w3.org/1998/Math/MathML"><mstyle mathvariant='sans-serif-italic' mathsize='85%'> + <mrow> + <mrow> + <mstyle mathvariant='normal'> + <mstyle mathvariant='italic'> + <mrow><mi>b</mi><mi>i</mi><mi>n</mi><mi>a</mi><mi>r</mi><mi>y</mi>_<mi>g</mi><mi>r</mi><mi>i</mi><mi>d</mi> + </mrow> + </mstyle> + </mstyle><mn>2</mn> + </mrow> + </mrow></mstyle></math> expects.</div> + +<div class="standard" id='magicparlabel-1059'>After doing the above, you can remove the <span class="flex_file">builddir</span> completely.</div> +<h4 class="subsubsection" id='magicparlabel-1064'><span class="subsubsection_label">4.4.7</span> Alternative compiler</h4> +<div class="standard" id='magicparlabel-1065'>You can build with another compiler, e.g.<em> <span class="flex_software">clang</span></em>, by setting the <span class="flex_envvar">CC</span> environment variable. If you have not yet made a builddir, do the following.</div> -<div class="standard" id='magicparlabel-1049'><br /> +<div class="standard" id='magicparlabel-1074'><br /> <pre class\s*='listings bash'>$ export CC=clang $ meson builddir --buildtype release $ cd builddir $ ninja</pre><br /> </div> -<h4 class="subsubsection" id='magicparlabel-1057'><span class="subsubsection_label">4.4.7</span> Existing builddir</h4> -<div class="standard" id='magicparlabel-1058'>If you already have a <span class="flex_file">builddir</span>, instead of deleting it, do the following,<br /> +<h4 class="subsubsection" id='magicparlabel-1082'><span class="subsubsection_label">4.4.8</span> Existing builddir</h4> +<div class="standard" id='magicparlabel-1083'>If you already have a <span class="flex_file">builddir</span>, instead of deleting it, do the following,<br /> <pre class\s*='listings bash'>$ export CC=clang $ cd builddir $ meson --reconfigure --buildtype release $ ninja</pre><br /> </div> -<h4 class="subsubsection" id='magicparlabel-1070'><span class="subsubsection_label">4.4.8</span> Debugging build</h4> -<div class="standard" id='magicparlabel-1071'>To enable full debugging, run, from within <span class="flex_file">builddir</span>,<b><span style='font-family:monospace;font-size: 18px;'><br /> +<h4 class="subsubsection" id='magicparlabel-1095'><span class="subsubsection_label">4.4.9</span> Debugging build</h4> +<div class="standard" id='magicparlabel-1096'>To enable full debugging, run, from within <span class="flex_file">builddir</span>,<b><span style='font-family:monospace;font-size: 18px;'><br /> <pre class\s*='listings bash'>$ meson builddir --buildtype debug $ ninja</pre><br /> </span></b>or just <b><span style='font-family:monospace;font-size: 18px;'><br /> @@ -1342,27 +1381,27 @@ $ ninja</pre><br /> $ cd builddir $ ninja</pre><br /> </span></b>because <span class="flex_args">debug</span> is the default <span class="flex_args">buildtype</span>. You require debugging to use <span class="flex_software">gdb</span>, <span class="flex_software">valgrind</span>, etc. as well as <span class="flex_software">libbacktrace</span>.</div> -<h4 class="subsubsection" id='magicparlabel-1107'><span class="subsubsection_label">4.4.9</span> Accurate floating point build</h4> -<div class="standard" id='magicparlabel-1108'>Binary_c generally does not require perfect floating-point accuracy and uses <span class="flex_cflags">-ffast-math</span> for extra speed, but you can turn on <span class="flex_software">gcc</span>'s various flags to improve accuracy with <b><span style='font-family:monospace;font-size: 18px;'><br /> +<h4 class="subsubsection" id='magicparlabel-1132'><span class="subsubsection_label">4.4.10</span> Accurate floating point build</h4> +<div class="standard" id='magicparlabel-1133'>Binary_c generally does not require perfect floating-point accuracy and uses <span class="flex_cflags">-ffast-math</span> for extra speed, but you can turn on <span class="flex_software">gcc</span>'s various flags to improve accuracy with <b><span style='font-family:monospace;font-size: 18px;'><br /> <pre class\s*='listings bash'>$ meson builddir -Daccurate=true</pre><br /> </span></b></div> -<h4 class="subsubsection" id='magicparlabel-1121'><span class="subsubsection_label">4.4.10</span> Generic build, e.g. for <em>HTCondor</em></h4> -<div class="standard" id='magicparlabel-1122'>You may wish to build a generic version of <i>binary_c</i> which is not tied to the CPU architecture or operating system on which you are building, e.g. if your <i>binary_c</i> is required for use on the many machines of an <span class="flex_software">HTCondor</span><em> </em>or <span class="flex_software">Slurm</span> grid. Try <b><span style='font-family:monospace;font-size: 18px;'><br /> +<h4 class="subsubsection" id='magicparlabel-1146'><span class="subsubsection_label">4.4.11</span> Generic build, e.g. for <em>HTCondor</em></h4> +<div class="standard" id='magicparlabel-1147'>You may wish to build a generic version of <i>binary_c</i> which is not tied to the CPU architecture or operating system on which you are building, e.g. if your <i>binary_c</i> is required for use on the many machines of an <span class="flex_software">HTCondor</span><em> </em>or <span class="flex_software">Slurm</span> grid. Try <b><span style='font-family:monospace;font-size: 18px;'><br /> <pre class\s*='listings bash'>$ meson builddir -Dgeneric=true</pre><br /> </span></b></div> -<h4 class="subsubsection" id='magicparlabel-1135'><span class="subsubsection_label">4.4.11</span> Libraries for <i>binary_c</i></h4> -<div class="standard" id='magicparlabel-1136'><i>binary_c</i> uses <a href="https://gitlab.eps.surrey.ac.uk/ri0005/libmemoize">libmemoize</a> and <a href="https://gitlab.eps.surrey.ac.uk/ri0005/librinterpolate">librinterpolate</a>, written by RGI, and RGI's customized <i>GNU</i> Scientific Library (at <a href="https://gitlab.eps.surrey.ac.uk/ri0005/GSL-RGI">this link</a>). These should really just be installed locally, but there are internal versions inside <i>binary_c</i> just in case you cannot install them, and a standard system <span class="flex_software">GSL</span> should work.</div> +<h4 class="subsubsection" id='magicparlabel-1160'><span class="subsubsection_label">4.4.12</span> Libraries for <i>binary_c</i></h4> +<div class="standard" id='magicparlabel-1161'><i>binary_c</i> uses <a href="https://gitlab.eps.surrey.ac.uk/ri0005/libmemoize">libmemoize</a> and <a href="https://gitlab.eps.surrey.ac.uk/ri0005/librinterpolate">librinterpolate</a>, written by RGI, and RGI's customized <i>GNU</i> Scientific Library (at <a href="https://gitlab.eps.surrey.ac.uk/ri0005/GSL-RGI">this link</a>). These should really just be installed locally, but there are internal versions inside <i>binary_c</i> just in case you cannot install them, and a standard system <span class="flex_software">GSL</span> should work.</div> -<div class="standard" id='magicparlabel-1141'>You should make sure <span class="flex_software">Meson</span> knows about the locations of your libraries. Usually it is sufficient to set their locations (i.e. the directories in which they reside) in the environment variables <span class="flex_envvar">LIBRARY_PATH</span> (for compilation) and <span class="flex_envvar">LD_LIBRARY_PATH</span> (at runtime). For example, to point to the directories <span class="flex_file">$HOME/lib</span> and <span class="flex_file">$HOME/otherlibs</span>, using <span class="flex_software">bash</span>, <b><span style='font-family:monospace;font-size: 18px;'><br /> +<div class="standard" id='magicparlabel-1166'>You should make sure <span class="flex_software">Meson</span> knows about the locations of your libraries. Usually it is sufficient to set their locations (i.e. the directories in which they reside) in the environment variables <span class="flex_envvar">LIBRARY_PATH</span> (for compilation) and <span class="flex_envvar">LD_LIBRARY_PATH</span> (at runtime). For example, to point to the directories <span class="flex_file">$HOME/lib</span> and <span class="flex_file">$HOME/otherlibs</span>, using <span class="flex_software">bash</span>, <b><span style='font-family:monospace;font-size: 18px;'><br /> <pre class\s*='listings bash'>$ export LIBRARY_PATH=$HOME/lib:$HOME/otherlibs $ export LD_LIBRARY_PATH=$HOME/lib:$HOME/otherlibs</pre><br /> </span></b></div> -<h4 class="subsubsection" id='magicparlabel-1171'><span class="subsubsection_label">4.4.12</span> Extra libraries</h4> -<div class="standard" id='magicparlabel-1172'>A number of external libraries can be used, particularly during debugging. These include <span class="flex_software">libiberty</span>, <span class="flex_software">libbfd</span> (part of <span class="flex_software">gcc</span>) and <em><span class="flex_software">libbacktrace</span></em>. The latter is particularly useful, and I recommend installing it if you want to do any serious debugging. You can download <span class="flex_software">libbacktrace</span> from <a href="https://github.com/ianlancetaylor/libbacktrace">https://github.com/ianlancetaylor/libbacktrace</a>.</div> -<h3 class="subsection" id='magicparlabel-1193'><span class="subsection_label">4.5</span> Testing <i>binary_c</i></h3> -<div class="standard" id='magicparlabel-1194'>Run the <span class="flex_scriptinglanguage">bash</span> script to “test binary star evolution” which is located in the main <i>binary_c</i> directory, called,</div> +<h4 class="subsubsection" id='magicparlabel-1196'><span class="subsubsection_label">4.4.13</span> Extra libraries</h4> +<div class="standard" id='magicparlabel-1197'>A number of external libraries can be used, particularly during debugging. These include <span class="flex_software">libiberty</span>, <span class="flex_software">libbfd</span> (part of <span class="flex_software">gcc</span>) and <em><span class="flex_software">libbacktrace</span></em>. The latter is particularly useful, and I recommend installing it if you want to do any serious debugging. You can download <span class="flex_software">libbacktrace</span> from <a href="https://github.com/ianlancetaylor/libbacktrace">https://github.com/ianlancetaylor/libbacktrace</a>.</div> +<h3 class="subsection" id='magicparlabel-1218'><span class="subsection_label">4.5</span> Testing <i>binary_c</i></h3> +<div class="standard" id='magicparlabel-1219'>Run the <span class="flex_scriptinglanguage">bash</span> script to “test binary star evolution” which is located in the main <i>binary_c</i> directory, called,</div> -<div class="standard" id='magicparlabel-1199'><br /> +<div class="standard" id='magicparlabel-1224'><br /> <pre class\s*='listings bash'>$ tbse</pre><br /> You should see some output. <br /> @@ -1370,11 +1409,11 @@ You should see some output. Note: You may have to symbolically link the executable to make this work. You can do this manually by going into the builddir and running<b><span style='font-family:monospace;font-size: 18px;'><br /> <pre class\s*='listings bash'>$ ninja binary_c_symlink</pre><br /> </span></b></div> -<h4 class="subsubsection" id='magicparlabel-1208'><span class="subsubsection_label">4.5.1</span> tbse commands<div id="subsec_tbse_commands"></div> +<h4 class="subsubsection" id='magicparlabel-1233'><span class="subsubsection_label">4.5.1</span> tbse commands<div id="subsec_tbse_commands"></div> </h4> -<div class="standard" id='magicparlabel-1209'><span class="flex_bashscript">tbse</span><em> </em>can take extra arguments, which are often passed to <em><i>binary_c</i></em> directly or are directives to perform special tasks.</div> +<div class="standard" id='magicparlabel-1234'><span class="flex_bashscript">tbse</span><em> </em>can take extra arguments, which are often passed to <em><i>binary_c</i></em> directly or are directives to perform special tasks.</div> -<dl class='description' id='magicparlabel-1214'><dt class="description_label">tbse echo</dt> +<dl class='description' id='magicparlabel-1239'><dt class="description_label">tbse echo</dt> <dd class="description_item"> This outputs (to <em>stdout</em>) the arguments that would have been sent to <em><i>binary_c</i></em>.</dd> <dt class="description_label">tbse_echolines</dt> <dd class="description_item"> As <em>tbse echo</em> but in a single line of output. Newlines are converted to <span style='font-family:monospace;font-size: 18px;'>\n</span>.</dd> @@ -1419,40 +1458,40 @@ Note: You may have to symbolically link the executable to make this work. You ca <dt class="description_label">tbse clip</dt> <dd class="description_item"> Runs <i>binary_c</i> and saves the output to the clipboard (requires <em>xclip</em>).</dd> </dl> -<h3 class="subsection" id='magicparlabel-1236'><span class="subsection_label">4.6</span> Directory structure</h3> +<h3 class="subsection" id='magicparlabel-1261'><span class="subsection_label">4.6</span> Directory structure</h3> -<ul class="itemize" id='magicparlabel-1237'><li class="itemize_item">The <span class="flex_file">src</span> directory, which holds all the <span style='font-family:monospace;font-size: 18px;'>.c</span> files</li> +<ul class="itemize" id='magicparlabel-1262'><li class="itemize_item">The <span class="flex_file">src</span> directory, which holds all the <span style='font-family:monospace;font-size: 18px;'>.c</span> files</li> <li class="itemize_item"><span class="flex_file">src/doc</span> contains documentation</li> <li class="itemize_item"><span class="flex_file">src/perl</span> contains the <span class="flex_scriptinglanguage">Perl</span> scripts e.g.<span style='font-family:monospace;font-size: 18px;'> </span><span class="flex_file">grid.pl</span><span style='font-family:monospace;font-size: 18px;'> </span>as well as latest <em><i>binary_grid</i></em> and helper modules, as well as some useful scripts. Please see the installation guide for help on installing these components.</li> <li class="itemize_item"><span class="flex_file">unit_tests</span> contains some test components (likely to be updated in later versions)</li> <li class="itemize_item"><span class="flex_file">builddir</span> contains the <span class="flex_software">Meson</span>/<span class="flex_software">Ninja</span> build information. You can delete this at any time, but you will have to rebuild everything from scratch.</li> </ul> -<div class="standard" id='magicparlabel-1278'><br /> +<div class="standard" id='magicparlabel-1303'><br /> </div> -<h3 class="subsection" id='magicparlabel-1279'><span class="subsection_label">4.7</span> Building binary_grid2: the population synthesis module</h3> -<div class="standard" id='magicparlabel-1280'>This section describes in some detail the installation of <em><i>binary_grid2</i></em>. Note that sometimes you will require the latest version of pieces of software, in particular <span class="flex_scriptinglanguage">Perl</span> which should be at least version 5.16. I show you how to do this <em>without</em> requiring root permissions on your machine. Should you require packages to be installed that require root permission, you can always set up <em><i>binary_c</i></em> and <em><i>binary_grid</i></em> on a <em>virtual machine</em> which runs as a guest on your operating system, I do this with <span class="flex_software">Virtualbox</span> (<a href="https://www.virtualbox.org/">https://www.virtualbox.org/</a>). This would be my advice if you are running on a non-standard operating system, e.g.<em> </em><span class="flex_os">Windows</span>. You will have the root password for your virtual machine, so there are never permissions problems.</div> +<h3 class="subsection" id='magicparlabel-1304'><span class="subsection_label">4.7</span> Building binary_grid2: the population synthesis module</h3> +<div class="standard" id='magicparlabel-1305'>This section describes in some detail the installation of <em><i>binary_grid2</i></em>. Note that sometimes you will require the latest version of pieces of software, in particular <span class="flex_scriptinglanguage">Perl</span> which should be at least version 5.16. I show you how to do this <em>without</em> requiring root permissions on your machine. Should you require packages to be installed that require root permission, you can always set up <em><i>binary_c</i></em> and <em><i>binary_grid</i></em> on a <em>virtual machine</em> which runs as a guest on your operating system, I do this with <span class="flex_software">Virtualbox</span> (<a href="https://www.virtualbox.org/">https://www.virtualbox.org/</a>). This would be my advice if you are running on a non-standard operating system, e.g.<em> </em><span class="flex_os">Windows</span>. You will have the root password for your virtual machine, so there are never permissions problems.</div> -<div class="standard" id='magicparlabel-1293'>You will need some basic tools installed to make everything work: <span class="flex_scriptinglanguage">bash</span>, <span class="flex_software">subversion</span>, <span class="flex_scriptinglanguage">Perl</span>, <span class="flex_software">gmake</span>, <span class="flex_software">wget</span>, <span class="flex_software">gcc</span>. These are available on all good operating systems, and come by default – or after a simple install – with most flavours of <span class="flex_os">Linux</span>/<span class="flex_os">Unix</span> and <span class="flex_os">MacOS</span>.</div> +<div class="standard" id='magicparlabel-1318'>You will need some basic tools installed to make everything work: <span class="flex_scriptinglanguage">bash</span>, <span class="flex_software">subversion</span>, <span class="flex_scriptinglanguage">Perl</span>, <span class="flex_software">gmake</span>, <span class="flex_software">wget</span>, <span class="flex_software">gcc</span>. These are available on all good operating systems, and come by default – or after a simple install – with most flavours of <span class="flex_os">Linux</span>/<span class="flex_os">Unix</span> and <span class="flex_os">MacOS</span>.</div> -<div class="standard" id='magicparlabel-1330'>Some <span class="flex_scriptinglanguage">Perl</span><em> </em>modules also require some other system libraries and development files. It is difficult to know exactly what these would be for every operating system. You may have to use a web search to find out, but that's fine because you are smart!</div> -<h4 class="subsubsection" id='magicparlabel-1335'><span class="subsubsection_label">4.7.1</span> Get the latest <span class="flex_scriptinglanguage">Perl</span> with<em> perlbrew</em></h4> -<div class="standard" id='magicparlabel-1340'>I highly recommend that you install the latest version of <span class="flex_scriptinglanguage">Perl</span><em> </em>using <span class="flex_software">perlbrew</span> and install modules using <span class="flex_software">cpanm</span><em>.</em> I describe how to do this below, but also please see <a href="http://perlbrew.pl/">http://perlbrew.pl/</a> and <a href="http://perlbrew.pl/Perlbrew-and-Friends.html ">http://perlbrew.pl/Perlbrew-and-Friends.html </a>for further instructions and documentation.</div> -<h4 class="subsubsection" id='magicparlabel-1353'><span class="subsubsection_label">4.7.2</span> Installing <em><i>binary_c</i></em></h4> -<div class="standard" id='magicparlabel-1354'>Please see Sec. <a href="#subsec_Building">4.4</a> above for details about how to install <i>binary_c</i>. </div> -<h4 class="subsubsection" id='magicparlabel-1355'><span class="subsubsection_label">4.7.3</span> Installing <em><i>binary_grid2</i></em></h4> -<div class="standard" id='magicparlabel-1356'><div id="subsec_installing_binary_grid"></div> +<div class="standard" id='magicparlabel-1355'>Some <span class="flex_scriptinglanguage">Perl</span><em> </em>modules also require some other system libraries and development files. It is difficult to know exactly what these would be for every operating system. You may have to use a web search to find out, but that's fine because you are smart!</div> +<h4 class="subsubsection" id='magicparlabel-1360'><span class="subsubsection_label">4.7.1</span> Get the latest <span class="flex_scriptinglanguage">Perl</span> with<em> perlbrew</em></h4> +<div class="standard" id='magicparlabel-1365'>I highly recommend that you install the latest version of <span class="flex_scriptinglanguage">Perl</span><em> </em>using <span class="flex_software">perlbrew</span> and install modules using <span class="flex_software">cpanm</span><em>.</em> I describe how to do this below, but also please see <a href="http://perlbrew.pl/">http://perlbrew.pl/</a> and <a href="http://perlbrew.pl/Perlbrew-and-Friends.html ">http://perlbrew.pl/Perlbrew-and-Friends.html </a>for further instructions and documentation.</div> +<h4 class="subsubsection" id='magicparlabel-1378'><span class="subsubsection_label">4.7.2</span> Installing <em><i>binary_c</i></em></h4> +<div class="standard" id='magicparlabel-1379'>Please see Sec. <a href="#subsec_Building">4.4</a> above for details about how to install <i>binary_c</i>. </div> +<h4 class="subsubsection" id='magicparlabel-1380'><span class="subsubsection_label">4.7.3</span> Installing <em><i>binary_grid2</i></em></h4> +<div class="standard" id='magicparlabel-1381'><div id="subsec_installing_binary_grid"></div> </div> -<div class="standard" id='magicparlabel-1357'><em><i>binary_grid2</i></em> is written in <span class="flex_scriptinglanguage"><span class="flex_scriptinglanguage">Perl</span> </span> (<a href="http://www.perl.org/">http://www.perl.org/</a>) which is available on almost every modern operating system, although to my knowledge <em><i>binary_grid2</i></em> has never been tested on anything other than <span class="flex_os">Linux</span> (<a href="http://www.linux.org/">http://www.linux.org/</a>), <span class="flex_os">Solaris</span> and <span class="flex_os">MacOS</span>.</div> +<div class="standard" id='magicparlabel-1382'><em><i>binary_grid2</i></em> is written in <span class="flex_scriptinglanguage"><span class="flex_scriptinglanguage">Perl</span> </span> (<a href="http://www.perl.org/">http://www.perl.org/</a>) which is available on almost every modern operating system, although to my knowledge <em><i>binary_grid2</i></em> has never been tested on anything other than <span class="flex_os">Linux</span> (<a href="http://www.linux.org/">http://www.linux.org/</a>), <span class="flex_os">Solaris</span> and <span class="flex_os">MacOS</span>.</div> -<div class="standard" id='magicparlabel-1378'>The newest <em><i>binary_grid2</i></em> uses features from the latest <span class="flex_scriptinglanguage">Perl</span> (5.16 or above, currently testing on 5.29.8) so you'll need a recent <span class="flex_scriptinglanguage">Perl</span> to be installed. Unfortunately most versions of <span class="flex_os">Linux</span> run an older <span class="flex_scriptinglanguage">Perl</span> without support for many of the required features. You will also need to have the latest versions of a number of <span class="flex_scriptinglanguage">Perl</span> modules which come from either from the online resource <em>CPAN</em><div class="foot"><span class="foot_label">4</span><div class="foot_inner"><div class="plain_layout" id='magicparlabel-1402'><em>Comprehensive Perl Archive Network</em></div> +<div class="standard" id='magicparlabel-1403'>The newest <em><i>binary_grid2</i></em> uses features from the latest <span class="flex_scriptinglanguage">Perl</span> (5.16 or above, currently testing on 5.29.8) so you'll need a recent <span class="flex_scriptinglanguage">Perl</span> to be installed. Unfortunately most versions of <span class="flex_os">Linux</span> run an older <span class="flex_scriptinglanguage">Perl</span> without support for many of the required features. You will also need to have the latest versions of a number of <span class="flex_scriptinglanguage">Perl</span> modules which come from either from the online resource <em>CPAN</em><div class="foot"><span class="foot_label">4</span><div class="foot_inner"><div class="plain_layout" id='magicparlabel-1427'><em>Comprehensive Perl Archive Network</em></div> </div></div> (<a href="http://www.cpan.org/">http://www.cpan.org/</a>) or as part of the <em><i>binary_c</i></em> package.</div> -<div class="standard" id='magicparlabel-1403'>My recommendation is to use <em><b>perlbrew</b> </em>to make your own <span class="flex_scriptinglanguage">Perl</span> and <span class="flex_software">cpanminus</span> (the command is <span class="flex_software">cpanm</span>) to install the modules.</div> +<div class="standard" id='magicparlabel-1428'>My recommendation is to use <em><b>perlbrew</b> </em>to make your own <span class="flex_scriptinglanguage">Perl</span> and <span class="flex_software">cpanminus</span> (the command is <span class="flex_software">cpanm</span>) to install the modules.</div> -<div class="standard" id='magicparlabel-1416'>You can find <span class="flex_software">perlbrew</span> at <a href="http://perlbrew.pl/">http://perlbrew.pl/</a> : please follow the instructions on that page to install the latest <span class="flex_scriptinglanguage">Perl</span> on your system if you do not trust my instructions below. Typically do the following, but remember you <em>must</em> install <span class="flex_software">perlbrew</span> with <span class="flex_cflags">-Dusethreads</span> otherwise <span class="flex_scriptinglanguage">Perl</span> will not use threads and you will lose the multi-CPU features of <em><i>binary_grid</i></em>2. Please note that I assume you are using the <span class="flex_software">bash</span> shell.</div> +<div class="standard" id='magicparlabel-1441'>You can find <span class="flex_software">perlbrew</span> at <a href="http://perlbrew.pl/">http://perlbrew.pl/</a> : please follow the instructions on that page to install the latest <span class="flex_scriptinglanguage">Perl</span> on your system if you do not trust my instructions below. Typically do the following, but remember you <em>must</em> install <span class="flex_software">perlbrew</span> with <span class="flex_cflags">-Dusethreads</span> otherwise <span class="flex_scriptinglanguage">Perl</span> will not use threads and you will lose the multi-CPU features of <em><i>binary_grid</i></em>2. Please note that I assume you are using the <span class="flex_software">bash</span> shell.</div> -<ol class="enumerate" id='magicparlabel-1441'><li class="enumerate_item"><br /> +<ol class="enumerate" id='magicparlabel-1466'><li class="enumerate_item"><br /> <pre class\s*='listings bash'>$ wget --no-check-certificate -O - http://install.perlbrew.pl | bash</pre><br /> or <br /> <pre class\s*='listings bash'>$ curl -kL http://install.perlbrew.pl | bash</pre><br /> @@ -1462,7 +1501,7 @@ If you have problems with <span class="flex_software">wget</span>, try removing You can use <span class="flex_cflags">-march=native -mtune=native</span> if you are quite sure you will not use this version of <span class="flex_scriptinglanguage">Perl</span> , or its modules, on a machine with a different architecture. If you are building for use with an <span class="flex_software">HTCondor</span> grid or on a shared (e.g. <em><span class="flex_software">NFS</span></em>) filesystem which is used on many different machines, I highly recommend using the <span class="flex_args">generic</span> option. <br /> -Note that the final <em>8</em> should be replaced by the number of CPUs you wish to use for the build (it is an option passed to <em>make</em>). Note also that <span class="flex_cflags">-Duseshrplib</span> may no longer be required. I have recently added <span class="flex_cflags">–thread-multi –64bitall</span> so if you have trouble, please remove these and try again. <div class="foot"><span class="foot_label">5</span><div class="foot_inner"><div class="plain_layout" id='magicparlabel-1506'>In <span class="flex_scriptinglanguage">Perl</span> 5.27.5 there is a (known) bug in the test routines which may (or may not) stop your installation. For this reason the <span class="flex_cflags">--notest</span> flag if set. Remove this if you want testing back (also, it is slow).</div> +Note that the final <em>8</em> should be replaced by the number of CPUs you wish to use for the build (it is an option passed to <em>make</em>). Note also that <span class="flex_cflags">-Duseshrplib</span> may no longer be required. I have recently added <span class="flex_cflags">–thread-multi –64bitall</span> so if you have trouble, please remove these and try again. <div class="foot"><span class="foot_label">5</span><div class="foot_inner"><div class="plain_layout" id='magicparlabel-1531'>In <span class="flex_scriptinglanguage">Perl</span> 5.27.5 there is a (known) bug in the test routines which may (or may not) stop your installation. For this reason the <span class="flex_cflags">--notest</span> flag if set. Remove this if you want testing back (also, it is slow).</div> </div></div>The installation process can take a long time, go and have lunch… then:</li> <li class="enumerate_item">Do what <span class="flex_software">perlbrew</span> suggests with your <span class="flex_file">.bashrc</span> (or whatever shell initialization script you use) to fix the <span class="flex_envvar">PERLBREW_PATH</span>.</li> <li class="enumerate_item">Restart your shell (e.g. close your terminal and open a new one, or just run <span class="flex_scriptinglanguage">bash</span> again) to update your environment and <span class="flex_envvar">$PATH</span>.</li> @@ -1493,9 +1532,9 @@ If you have a previous version of <span class="flex_scriptinglanguage">Perl</spa <pre class\s*='listings bash'>$ perlbrew install-cpanm </pre><br /> </li> </ol> -<div class="standard" id='magicparlabel-1592'>Now you have the latest <span class="flex_scriptinglanguage">Perl</span> and <span class="flex_software">cpanm</span> installed, you can start to install the modules needed for <em><i>binary_grid</i></em>2. (Un?)fortunately, there are many of them, so I have made a script to do it for you</div> +<div class="standard" id='magicparlabel-1617'>Now you have the latest <span class="flex_scriptinglanguage">Perl</span> and <span class="flex_software">cpanm</span> installed, you can start to install the modules needed for <em><i>binary_grid</i></em>2. (Un?)fortunately, there are many of them, so I have made a script to do it for you</div> -<ol class="enumerate" id='magicparlabel-1601'><li class="enumerate_item">From the <span class="flex_file"><i>binary_c</i></span> directory, go to <span class="flex_file">src/perl</span> with <br /> +<ol class="enumerate" id='magicparlabel-1626'><li class="enumerate_item">From the <span class="flex_file"><i>binary_c</i></span> directory, go to <span class="flex_file">src/perl</span> with <br /> <pre class\s*='listings bash'>$ cd src/perl</pre><br /> </li> <li class="enumerate_item">Run the install script which uses <span class="flex_software">cpanminus</span> to install the modules @@ -1528,10 +1567,10 @@ If you <em>do</em> have trouble, try <br /> <pre class\s*='listings bash'>$ export PERL5LIB=$HOME/perl5/perlbrew/perls/5.29.8/lib/site_perl/5.29.8</pre><br /> (or similar).</li> </ol> -<div class="standard" id='magicparlabel-1676'>Now you should have everything installed and be able to run a <em><i>binary_grid</i></em> script.</div> -<h4 class="subsubsection" id='magicparlabel-1677'><span class="subsubsection_label">4.7.4</span> Troubleshooting <em><span class="flex_scriptinglanguage"><em>Perl</em></span></em></h4> +<div class="standard" id='magicparlabel-1701'>Now you should have everything installed and be able to run a <em><i>binary_grid</i></em> script.</div> +<h4 class="subsubsection" id='magicparlabel-1702'><span class="subsubsection_label">4.7.4</span> Troubleshooting <em><span class="flex_scriptinglanguage"><em>Perl</em></span></em></h4> -<dl class='description' id='magicparlabel-1682'><dt class="description_label">Module not found</dt> +<dl class='description' id='magicparlabel-1707'><dt class="description_label">Module not found</dt> <dd class="description_item"> Check the <span class="flex_envvar">PERL5LIB</span> environment variable. When it is empty, <span class="flex_software">cpanm</span>/<span class="flex_software">perlbrew</span> should find your modules automatically, <em>if</em> they are installed correctly by <span class="flex_software">cpanm</span> (in the <span class="flex_file">site_perl</span> directory, see above). You can try installing modules again with <br /> <pre class\s*='listings bash'>$ cpanm --force --reinstall</pre><br /> to force a reinstallation, and with <span class="flex_args">-v</span> for extra logging.</dd> @@ -1558,22 +1597,22 @@ I also recommend <span class="flex_cflags">-Dcccdlflags=-fPIC</span><span style= <pre class\s*='listings bash'>$ perlbrew list-modules | perlbrew exec --with 5.xx.yy cpanm</pre><br /> </dd> </dl> -<h3 class="subsection" id='magicparlabel-1766'><span class="subsection_label">4.8</span> <em><i>binary_grid2</i></em> backends<div id="subsec_binary_grid2_backends"></div> +<h3 class="subsection" id='magicparlabel-1791'><span class="subsection_label">4.8</span> <em><i>binary_grid2</i></em> backends<div id="subsec_binary_grid2_backends"></div> </h3> -<div class="standard" id='magicparlabel-1767'>The “backend” of <em><i>binary_c</i></em> is a set of interface code between <em><i>binary_c</i></em> and <i>binary_grid</i><em>2</em>. To understand what a backend is, please see <a href="https://en.wikipedia.org/wiki/Front_and_back_ends">https://en.wikipedia.org/wiki/Front_and_back_ends</a>. There are two backends – <span class="flex_scriptinglanguage">Perl</span> and <span class="flex_programminglanguage">C</span> – corresponding to the two different ways <em><i>binary_c</i></em> can talk to <i>binary_grid</i>. You should always use the <span class="flex_programminglanguage">C</span> backend if at all possible: it is faster and has more features, and the <span class="flex_scriptinglanguage">Perl</span> backend will be deprecated at some point.</div> -<h4 class="subsubsection" id='magicparlabel-1784'><span class="subsubsection_label">4.8.1</span> <span class="flex_programminglanguage">C</span> backend</h4> -<div class="standard" id='magicparlabel-1789'>New to <em><i>binary_grid2</i></em> is the<em> </em><span class="flex_programminglanguage">C</span> backend. This features simpler code and uses <em><i>binary_c</i></em>'s <em>API</em> to access data directly, hence it is a lot faster than the <span class="flex_scriptinglanguage">Perl</span> backend, and scales better on multi-core architectures. The down side is that installation is more difficult, especially if you have multiple projects.</div> +<div class="standard" id='magicparlabel-1792'>The “backend” of <em><i>binary_c</i></em> is a set of interface code between <em><i>binary_c</i></em> and <i>binary_grid</i><em>2</em>. To understand what a backend is, please see <a href="https://en.wikipedia.org/wiki/Front_and_back_ends">https://en.wikipedia.org/wiki/Front_and_back_ends</a>. There are two backends – <span class="flex_scriptinglanguage">Perl</span> and <span class="flex_programminglanguage">C</span> – corresponding to the two different ways <em><i>binary_c</i></em> can talk to <i>binary_grid</i>. You should always use the <span class="flex_programminglanguage">C</span> backend if at all possible: it is faster and has more features, and the <span class="flex_scriptinglanguage">Perl</span> backend will be deprecated at some point.</div> +<h4 class="subsubsection" id='magicparlabel-1809'><span class="subsubsection_label">4.8.1</span> <span class="flex_programminglanguage">C</span> backend</h4> +<div class="standard" id='magicparlabel-1814'>New to <em><i>binary_grid2</i></em> is the<em> </em><span class="flex_programminglanguage">C</span> backend. This features simpler code and uses <em><i>binary_c</i></em>'s <em>API</em> to access data directly, hence it is a lot faster than the <span class="flex_scriptinglanguage">Perl</span> backend, and scales better on multi-core architectures. The down side is that installation is more difficult, especially if you have multiple projects.</div> -<div class="standard" id='magicparlabel-1798'>If you see errors like:</div> +<div class="standard" id='magicparlabel-1823'>If you see errors like:</div> -<div class="standard" id='magicparlabel-1799'><b><br /> +<div class="standard" id='magicparlabel-1824'><b><br /> <pre class ='listings'>perl: symbol lookup error: /.../perl5/perlbrew/perls/perl-5.29.8/lib/site_perl/5.29.8/x86_64-linux-thread-multi/auto/<i>binary_grid</i>/C/C.so: undefined symbol: new_system</pre><br /> </b>then you have failed to build the shared library as is required when using the <span class="flex_programminglanguage">C</span> backend. <br /> To make the <span class="flex_programminglanguage">C</span> backend work, you have to <em>first</em> build <span class="flex_file"><i>libbinary_c.so</i></span> and <em>then</em> install <em><i>binary_grid2</i></em>. In summary:</div> -<ol class="enumerate" id='magicparlabel-1816'><li class="enumerate_item">Build <em><i>binary_c</i></em> as normal <br /> +<ol class="enumerate" id='magicparlabel-1841'><li class="enumerate_item">Build <em><i>binary_c</i></em> as normal <br /> <pre class\s*='listings bash'>$ make</pre><br /> </li> <li class="enumerate_item">Make the shared library, <em><i>libbinary_c.so</i></em> <br /> @@ -1583,11 +1622,11 @@ To make the <span class="flex_programminglanguage">C</span> backend work, you ha <pre class\s*='listings bash'>$ ./install_modules.pl Histogram <i>binary_grid</i></pre><br /> </li> </ol> -<div class="standard" id='magicparlabel-1831'>Because this module is written partly in <span class="flex_programminglanguage">C</span> and partly in <span class="flex_scriptinglanguage">Perl</span> , everything has to work perfectly or it will crash (usually with a segmentation fault). The shared library file <span class="flex_file"><i>libbinary_c.so</i></span><em> </em>must match with <em><i>binary_grid2</i></em> <b>at compile time</b>, and if you change anything in <em><i>binary_c</i></em> you probably have to follow the above instructions to reinstall the <span class="flex_programminglanguage">C</span> backend. </div> +<div class="standard" id='magicparlabel-1856'>Because this module is written partly in <span class="flex_programminglanguage">C</span> and partly in <span class="flex_scriptinglanguage">Perl</span> , everything has to work perfectly or it will crash (usually with a segmentation fault). The shared library file <span class="flex_file"><i>libbinary_c.so</i></span><em> </em>must match with <em><i>binary_grid2</i></em> <b>at compile time</b>, and if you change anything in <em><i>binary_c</i></em> you probably have to follow the above instructions to reinstall the <span class="flex_programminglanguage">C</span> backend. </div> -<div class="standard" id='magicparlabel-1848'>You can change the name of the shared library by setting the environment variable <span style='font-family:monospace;font-size: 18px;'>BINARY_GRID2_LIB</span> to the name of the library, and pointing <span class="flex_envvar">BINARY_C</span> to your <em><i>binary_c</i></em> tree. Then rebuild, e.g., assuming you already have a <span class="flex_file">builddir</span>,</div> +<div class="standard" id='magicparlabel-1873'>You can change the name of the shared library by setting the environment variable <span style='font-family:monospace;font-size: 18px;'>BINARY_GRID2_LIB</span> to the name of the library, and pointing <span class="flex_envvar">BINARY_C</span> to your <em><i>binary_c</i></em> tree. Then rebuild, e.g., assuming you already have a <span class="flex_file">builddir</span>,</div> -<div class="standard" id='magicparlabel-1857'><br /> +<div class="standard" id='magicparlabel-1882'><br /> <pre class\s*='listings bash'>$ export BINARY_GRID2_LIB=binary_c_custom $ export BINARY_C=$HOME/<i>binary_c</i> $ cd builddir @@ -1599,13 +1638,13 @@ $ $ cpanm <i>binary_grid2</i>.tar.gz</pre><br /> </div> -<div class="standard" id='magicparlabel-1870'>The <em><i>binary_grid2</i></em> module respects the <span class="flex_envvar">BINARY_GRID2_LIB</span> environment variable. </div> +<div class="standard" id='magicparlabel-1895'>The <em><i>binary_grid2</i></em> module respects the <span class="flex_envvar">BINARY_GRID2_LIB</span> environment variable. </div> -<div class="standard" id='magicparlabel-1875'>I do not yet know how to have custom <span class="flex_programminglanguage">C</span> backend modules with different shared libraries. It is quite possible that you could use the <span class="flex_envvar">PERL_INLINE_DIRECTORY</span> environment variable to have multiple builds, and point to the appropriate one. Please read <a href="http://search.cpan.org/~ingy/Inline-0.44/Inline.pod">http://search.cpan.org/~ingy/Inline-0.44/Inline.pod</a> especially the section <em>The Inline DIRECTORY</em> for instructions on how it is best to set up production code for multiple projects. Let RGI know if it works, so better instructions can be put in here.</div> +<div class="standard" id='magicparlabel-1900'>I do not yet know how to have custom <span class="flex_programminglanguage">C</span> backend modules with different shared libraries. It is quite possible that you could use the <span class="flex_envvar">PERL_INLINE_DIRECTORY</span> environment variable to have multiple builds, and point to the appropriate one. Please read <a href="http://search.cpan.org/~ingy/Inline-0.44/Inline.pod">http://search.cpan.org/~ingy/Inline-0.44/Inline.pod</a> especially the section <em>The Inline DIRECTORY</em> for instructions on how it is best to set up production code for multiple projects. Let RGI know if it works, so better instructions can be put in here.</div> -<div class="standard" id='magicparlabel-1884'>There are a number of environment variables which can be set when installing <em><i>binary_grid2</i></em>'s <em>C</em> backend:</div> +<div class="standard" id='magicparlabel-1909'>There are a number of environment variables which can be set when installing <em><i>binary_grid2</i></em>'s <em>C</em> backend:</div> -<dl class='description' id='magicparlabel-1885'><dt class="description_label">BINARY_C</dt> +<dl class='description' id='magicparlabel-1910'><dt class="description_label">BINARY_C</dt> <dd class="description_item"> The directory in which your <i>binary_c</i> source tree lives. From this, the <span class="flex_file">src</span> directory is at <span class="flex_file"><span class="flex_envvar">$BINARY_C</span>/src</span></dd> <dt class="description_label">BINARY_GRID2_LIB</dt> <dd class="description_item"> The name of the shared library. Usually this is <em>'<i>binary_c</i></em>'.</dd> @@ -1628,14 +1667,14 @@ $ cpanm <i>binary_grid2</i>.tar.gz</pre><br /> <dt class="description_label">BINARY_GRID2_DEBUG</dt> <dd class="description_item"> If non-zero, is used at the debugging flag when building the <span class="flex_perlmodule">binary_grid::C</span> backend.</dd> </dl> -<h4 class="subsubsection" id='magicparlabel-1940'><span class="subsubsection_label">4.8.2</span> The <i>C</i> backend with multiple versions of <em><i>binary_c</i></em></h4> -<div class="standard" id='magicparlabel-1941'>You may well have several branches, each of which uses a different <em><i>binary_c</i></em> setup (e.g. one with <span class="flex_cmacro">NUCSYN</span>, one without). However, using <span class="flex_software">cpanm</span> the <span class="flex_perlmodule">binary_grid::C</span> module is installed only <em>once</em> and cannot possibly thus work with all your branches. (The reason is that in each branch the various structures used by <em><i>binary_c</i></em> will be of different sizes in memory, so trying to access them from an incompatible version will likely give you a segmentation fault.)</div> +<h4 class="subsubsection" id='magicparlabel-1965'><span class="subsubsection_label">4.8.2</span> The <i>C</i> backend with multiple versions of <em><i>binary_c</i></em></h4> +<div class="standard" id='magicparlabel-1966'>You may well have several branches, each of which uses a different <em><i>binary_c</i></em> setup (e.g. one with <span class="flex_cmacro">NUCSYN</span>, one without). However, using <span class="flex_software">cpanm</span> the <span class="flex_perlmodule">binary_grid::C</span> module is installed only <em>once</em> and cannot possibly thus work with all your branches. (The reason is that in each branch the various structures used by <em><i>binary_c</i></em> will be of different sizes in memory, so trying to access them from an incompatible version will likely give you a segmentation fault.)</div> -<div class="standard" id='magicparlabel-1954'>There is a solution. Make two directories containing your <em><i>binary_c</i></em> trees. You can either check out new copies of your git branches, or use “git archive” to copy a tree. In each tree, build a local copy of the <em><i>binary_grid</i></em> modules using <span class="flex_scriptinglanguage">Perl</span>'s <span class="flex_perlmodule">local::lib</span> and use this when calling your <span class="flex_scriptinglanguage">Perl</span> grid script.</div> +<div class="standard" id='magicparlabel-1979'>There is a solution. Make two directories containing your <em><i>binary_c</i></em> trees. You can either check out new copies of your git branches, or use “git archive” to copy a tree. In each tree, build a local copy of the <em><i>binary_grid</i></em> modules using <span class="flex_scriptinglanguage">Perl</span>'s <span class="flex_perlmodule">local::lib</span> and use this when calling your <span class="flex_scriptinglanguage">Perl</span> grid script.</div> -<div class="standard" id='magicparlabel-1967'>Note: it is important to set <span class="flex_envvar">BINARY_C</span> prior to the rebuild, this points to your <i>binary_c</i> directory (as checked out using <em>git</em>), because the <i>binary_grid</i> module looks in these locations for source code (which is different from tree to tree). So, from within the tree directory, run the following:</div> +<div class="standard" id='magicparlabel-1992'>Note: it is important to set <span class="flex_envvar">BINARY_C</span> prior to the rebuild, this points to your <i>binary_c</i> directory (as checked out using <em>git</em>), because the <i>binary_grid</i> module looks in these locations for source code (which is different from tree to tree). So, from within the tree directory, run the following:</div> -<div class="standard" id='magicparlabel-1972'><br /> +<div class="standard" id='magicparlabel-1997'><br /> <pre class\s*='listings bash'>$ export BINARY_C=”path_to_tree” # you have to set this to the git checkout directory $ PERL_LIBDIR=”path_to_binary_grid_perl_module” # you have to set this $ @@ -1654,34 +1693,34 @@ $ # run your grid $ perl -Mlocal::lib=$PER_MODDIR your_grid_script.pl ... $ </pre><br /> </div> -<h4 class="subsubsection" id='magicparlabel-1993'><span class="subsubsection_label">4.8.3</span> Perl backend</h4> -<div class="standard" id='magicparlabel-1994'><b>Warning: the <span class="flex_scriptinglanguage">Perl</span> backend will soon be deprecated.</b></div> +<h4 class="subsubsection" id='magicparlabel-2018'><span class="subsubsection_label">4.8.3</span> Perl backend</h4> +<div class="standard" id='magicparlabel-2019'><b>Warning: the <span class="flex_scriptinglanguage">Perl</span> backend will soon be deprecated.</b></div> -<div class="standard" id='magicparlabel-1999'>In <em><i>binary_grid</i> </em>version 1, the only backend available was the <span class="flex_scriptinglanguage">Perl</span> backend which communicates with <em><i>binary_c</i></em> via a set of <span class="flex_os">Unix</span> pipes. This is portable and flexible, and hence for many years was the default. It does not, however, scale very well in multi-CPU architectures (mostly because of the bandwidth required for the pipes). In <em><i>binary_grid2</i></em> a pure <span class="flex_scriptinglanguage">Perl</span> module is also provided, both for backwards compatibility and because the code is well tested and stable. The <span class="flex_scriptinglanguage">Perl</span> backend is installed by default with <em><i>binary_grid2</i> </em>although the <span class="flex_programminglanguage">C</span><em> </em>backend will replace it eventually.</div> +<div class="standard" id='magicparlabel-2024'>In <em><i>binary_grid</i> </em>version 1, the only backend available was the <span class="flex_scriptinglanguage">Perl</span> backend which communicates with <em><i>binary_c</i></em> via a set of <span class="flex_os">Unix</span> pipes. This is portable and flexible, and hence for many years was the default. It does not, however, scale very well in multi-CPU architectures (mostly because of the bandwidth required for the pipes). In <em><i>binary_grid2</i></em> a pure <span class="flex_scriptinglanguage">Perl</span> module is also provided, both for backwards compatibility and because the code is well tested and stable. The <span class="flex_scriptinglanguage">Perl</span> backend is installed by default with <em><i>binary_grid2</i> </em>although the <span class="flex_programminglanguage">C</span><em> </em>backend will replace it eventually.</div> -<div class="standard" id='magicparlabel-2020'>It is a simple matter of changing the <span class="flex_perlcode">prog</span> grid variable if you want to use a different version of <em><i>binary_c</i></em> with each grid script.</div> +<div class="standard" id='magicparlabel-2045'>It is a simple matter of changing the <span class="flex_perlcode">prog</span> grid variable if you want to use a different version of <em><i>binary_c</i></em> with each grid script.</div> -<div class="standard" id='magicparlabel-2025'><br /> +<div class="standard" id='magicparlabel-2050'><br /> </div> -<h2 class="section" id='magicparlabel-2026'><span class="section_label">5</span> Evolving single and binary stars</h2> -<div class="standard" id='magicparlabel-2027'><div id="sec_Simple_Use"></div> +<h2 class="section" id='magicparlabel-2051'><span class="section_label">5</span> Evolving single and binary stars</h2> +<div class="standard" id='magicparlabel-2052'><div id="sec_Simple_Use"></div> This section describes how to run <em><i>binary_c</i></em> on one stellar system, be it single or binary. The web home of <i>binary_c</i> is <a href="http://personal.ph.surrey.ac.uk/~ri0005/<i>binary_c</i>.html">http://personal.ph.surrey.ac.uk/~ri0005/<i>binary_c</i>.html</a>. The online binary-star simulator is at <a href="http://personal.ph.surrey.ac.uk/~ri0005/cgi-bin/binary5.cgi">http://personal.ph.surrey.ac.uk/~ri0005/cgi-bin/binary5.cgi</a>. If these should move, you can use your favourite web-search engine to locate the code.</div> -<div class="standard" id='magicparlabel-2028'>You should consider joining the mailing lists (see Sec. <a href="#subsec_mailing_lists">1.3</a>).</div> -<h3 class="subsection" id='magicparlabel-2029'><span class="subsection_label">5.1</span> Running</h3> -<div class="standard" id='magicparlabel-2030'><div id="subsec_Running"></div> +<div class="standard" id='magicparlabel-2053'>You should consider joining the mailing lists (see Sec. <a href="#subsec_mailing_lists">1.3</a>).</div> +<h3 class="subsection" id='magicparlabel-2054'><span class="subsection_label">5.1</span> Running</h3> +<div class="standard" id='magicparlabel-2055'><div id="subsec_Running"></div> </div> -<div class="standard" id='magicparlabel-2031'>A <span class="flex_scriptinglanguage">bash</span> script called <span class="flex_file">tbse</span> is provided to run one single or binary star system. Run it with +<div class="standard" id='magicparlabel-2056'>A <span class="flex_scriptinglanguage">bash</span> script called <span class="flex_file">tbse</span> is provided to run one single or binary star system. Run it with <br /> <br /> <pre class\s*='listings bash'>$ ./tbse</pre><br /> </div> -<div class="standard" id='magicparlabel-2044'>from the <em><i>binary_c</i></em> directory (you can omit the <span class="flex_file">.</span> if it is in your <span class="flex_envvar">PATH</span>). The script sets a number of <span class="flex_scriptinglanguage">bash</span> variables (in capital letters) which are then passed to <i>binary_c</i>. In general, the capitalized <span class="flex_scriptinglanguage">bash</span><em> </em>variable corresponds to the same variable in <i>binary_c</i> in lower case. For example,</div> +<div class="standard" id='magicparlabel-2069'>from the <em><i>binary_c</i></em> directory (you can omit the <span class="flex_file">.</span> if it is in your <span class="flex_envvar">PATH</span>). The script sets a number of <span class="flex_scriptinglanguage">bash</span> variables (in capital letters) which are then passed to <i>binary_c</i>. In general, the capitalized <span class="flex_scriptinglanguage">bash</span><em> </em>variable corresponds to the same variable in <i>binary_c</i> in lower case. For example,</div> -<div class="standard" id='magicparlabel-2061'><br /> +<div class="standard" id='magicparlabel-2086'><br /> <pre class ='listings'># Initial primary mass M1=6 # Initial secondary mass @@ -1696,7 +1735,7 @@ METALLICITY=0.02 MAX_EVOLUTION_TIME=16000</pre><br /> </div> -<div class="standard" id='magicparlabel-2077'>Many parameters are not just simple numbers, they are choices of algorithms. You can replace the numerical algorithm number, as usually defined by a macro in a header file, with the macro itself. For example, the following two are equivalent because the macro <span class="flex_cmacro">MAGNETIC_BRAKING_ALGORITHM_HURLEY_2002</span> is defined to be <span class="flex_cvar">0</span>,<br /> +<div class="standard" id='magicparlabel-2102'>Many parameters are not just simple numbers, they are choices of algorithms. You can replace the numerical algorithm number, as usually defined by a macro in a header file, with the macro itself. For example, the following two are equivalent because the macro <span class="flex_cmacro">MAGNETIC_BRAKING_ALGORITHM_HURLEY_2002</span> is defined to be <span class="flex_cvar">0</span>,<br /> <pre class ='listings'>MAGNETIC_BRAKING_ALGORITHM=0 MAGNETIC_BRAKING_ALGORITHM=MAGNETIC_BRAKING_ALGORITHM_HURLEY_2002</pre><br /> similarly, you can use <span class="flex_cmacro">True</span> and <span class="flex_cmacro">False</span> (or <span class="flex_cmacro">t</span>, <span class="flex_cmacro">T</span>, <span class="flex_cmacro">true</span>, etc.) to represent <span class="flex_cvar">1</span> and <span class="flex_cvar">0</span> respectively,<br /> @@ -1704,13 +1743,13 @@ similarly, you can use <span class="flex_cmacro">True</span> and <span class="fl PRE_MAIN_SEQUENCE_FIT_LOBES=False</pre><br /> </div> -<div class="standard" id='magicparlabel-2124'>A simple output log is sent to the file defined in <span class="flex_cmacro">LOG_FILENAME</span> which is <span class="flex_file">/tmp/c_log2.dat</span> by default. What gets output to the screen depends on what options you select (see section <a href="#subsec_Advanced_Configuration">9</a>).</div> +<div class="standard" id='magicparlabel-2149'>A simple output log is sent to the file defined in <span class="flex_cmacro">LOG_FILENAME</span> which is <span class="flex_file">/tmp/c_log2.dat</span> by default. What gets output to the screen depends on what options you select (see section <a href="#subsec_Advanced_Configuration">9</a>).</div> -<div class="standard" id='magicparlabel-2133'>Run <br /> +<div class="standard" id='magicparlabel-2158'>Run <br /> <pre class\s*='listings bash'>$ tbse help</pre><br /> to obtain general help for <span class="flex_file">tbse</span> or read Section <a href="#subsec_tbse_commands">4.5.1</a> to see more options.</div> -<div class="standard" id='magicparlabel-2142'>Use<br /> +<div class="standard" id='magicparlabel-2167'>Use<br /> <pre class\s*='listings bash'>$ ./<i>binary_c</i> help </pre><br /> for general <i>binary_c</i> help, or <br /> <pre class\s*='listings bash'>$ ./<i>binary_c</i> help <string></pre><br /> @@ -1729,12 +1768,12 @@ MAGNETIC_BRAKING_ALGORITHM_RAPPAPORT_1983 = 3 </pre><br /> </div> -<div class="standard" id='magicparlabel-2170'>Do <em>not</em> use <span class="flex_file">tbse</span> to run many stars in a stellar population! This is amazingly inefficient: you'll waste a huge amount of time just loading <span class="flex_scriptinglanguage">bash</span> and saving your data.</div> +<div class="standard" id='magicparlabel-2195'>Do <em>not</em> use <span class="flex_file">tbse</span> to run many stars in a stellar population! This is amazingly inefficient: you'll waste a huge amount of time just loading <span class="flex_scriptinglanguage">bash</span> and saving your data.</div> -<div class="standard" id='magicparlabel-2179'><br /> +<div class="standard" id='magicparlabel-2204'><br /> </div> -<h2 class="section" id='magicparlabel-2180'><span class="section_label">6</span> Making populations of stars with <i>binary_grid2</i></h2> -<div class="standard" id='magicparlabel-2181'><div id="subsec_Running_a_grid"></div> +<h2 class="section" id='magicparlabel-2205'><span class="section_label">6</span> Making populations of stars with <i>binary_grid2</i></h2> +<div class="standard" id='magicparlabel-2206'><div id="subsec_Running_a_grid"></div> You <em>could</em> run many stars by directly calling <em><i>binary_c</i></em> with the appropriate arguments or making many <span class="flex_file">tbse</span><em> </em>scripts. This is <em><b>very</b></em> <em><b>inefficient</b></em>. Instead, <em><i>binary_c</i></em> can be controlled by a <span class="flex_scriptinglanguage">Perl</span> script, e.g. <span class="flex_file">grid.pl</span>, which uses a library of functions in the <em><math xmlns="http://www.w3.org/1998/Math/MathML"><mstyle mathvariant='sans-serif-italic' mathsize='85%'> <mrow> <mrow> @@ -1747,8 +1786,8 @@ You <em>could</em> run many stars by directly calling <em><i>binary_c</i></em> w </mrow> </mrow></mstyle></math></em> <span class="flex_scriptinglanguage">Perl</span> module to run the stars on a grid for you.</div> -<h3 class="subsection" id='magicparlabel-2200'><span class="subsection_label">6.1</span> Introduction</h3> -<div class="standard" id='magicparlabel-2201'>The <em><span class='math'>\binarygrid</span> +<h3 class="subsection" id='magicparlabel-2225'><span class="subsection_label">6.1</span> Introduction</h3> +<div class="standard" id='magicparlabel-2226'>The <em><span class='math'>\binarygrid</span> </em> software has been developed over the last ten years or so by Robert Izzard with help from many people around the world. It is designed to work with the <em><span class='math'>binary_c</i></span> </em> stellar evolution code, based on <em>BSE</em> of <a href='#LyXCite-2002MNRAS_329_897H'><span class="bib-abbrvciteauthor">Hurley et al.</span></a> (<span class="bib-year">2002</span>), but should work with any suitably prepared stellar evolution code. In 2011 and 2012, the old <em><span class='math'>\binarygrid</span> </em> code was replaced with the <em>flexigrid</em> – this document is the guide to the <em>flexigrid</em> version of software. In 2016 a new <em><span class='math'>\binarygrid</span> @@ -1756,14 +1795,14 @@ You <em>could</em> run many stars by directly calling <em><i>binary_c</i></em> w code. In the future, only the (faster, simpler) <span class="flex_programminglanguage">C</span> backend will be supported. In the following, <em><span class='math'>\binarygrid</span> </em>implies <em><span class='math'>\binarygrid</span> 2</em>, although there may be parts of the documentation which require an update to the newer version (please let RGI know if you find an example).</div> -<h3 class="subsection" id='magicparlabel-2223'><span class="subsection_label">6.2</span> Aims: what the grid does and why</h3> -<div class="standard" id='magicparlabel-2224'><div id="sec_aims"></div> +<h3 class="subsection" id='magicparlabel-2248'><span class="subsection_label">6.2</span> Aims: what the grid does and why</h3> +<div class="standard" id='magicparlabel-2249'><div id="sec_aims"></div> Binary population synthesis is a glorified form of accountancy, without the huge pay but with of course much more fun! It involves modelling perhaps millions of binary stars in a population to pick out those few that contribute to the population of scientific interest. The rate of formation, or number of these stars, or some other property of them can then be examined in a <em>quantitative</em> and <em>statistical</em> manner. This manual explains how the <em><span class='math'>\binarygrid</span> </em>module – part of the <em><span class='math'>binary_c</i></span> </em> code package – can be used to model populations of single and binary stars. This guide is <em>only</em> concerned with the details of running grids of models, not about the details of the models themselves.</div> -<h3 class="subsection" id='magicparlabel-2225'><span class="subsection_label">6.3</span> Grid dimensions<div id="subsec_Grid_dimensions"></div> +<h3 class="subsection" id='magicparlabel-2250'><span class="subsection_label">6.3</span> Grid dimensions<div id="subsec_Grid_dimensions"></div> </h3> -<div class="standard" id='magicparlabel-2226'>There are many parameters which can be set before running a stellar model. The most important, for single stars, are the stellar mass <math xmlns="http://www.w3.org/1998/Math/MathML"><mstyle mathvariant='sans-serif-italic' mathsize='85%'> +<div class="standard" id='magicparlabel-2251'>There are many parameters which can be set before running a stellar model. The most important, for single stars, are the stellar mass <math xmlns="http://www.w3.org/1998/Math/MathML"><mstyle mathvariant='sans-serif-italic' mathsize='85%'> <mrow><mi>M</mi> </mrow></mstyle></math> and metallicity <math xmlns="http://www.w3.org/1998/Math/MathML"><mstyle mathvariant='sans-serif-italic' mathsize='85%'> <mrow><mi>Z</mi> @@ -1775,7 +1814,7 @@ Binary population synthesis is a glorified form of accountancy, without the huge <mrow><mi>Z</mi> </mrow></mstyle></math>. </div> -<div class="standard" id='magicparlabel-2227'>The situation is more complicated in binaries because instead of just <math xmlns="http://www.w3.org/1998/Math/MathML"><mstyle mathvariant='sans-serif-italic' mathsize='85%'> +<div class="standard" id='magicparlabel-2252'>The situation is more complicated in binaries because instead of just <math xmlns="http://www.w3.org/1998/Math/MathML"><mstyle mathvariant='sans-serif-italic' mathsize='85%'> <mrow><mi>M</mi> </mrow></mstyle></math> there are two stellar masses <math xmlns="http://www.w3.org/1998/Math/MathML"><mstyle mathvariant='sans-serif-italic' mathsize='85%'> <mrow> @@ -1801,7 +1840,7 @@ Binary population synthesis is a glorified form of accountancy, without the huge <mrow><mi>e</mi> </mrow></mstyle></math>. To run a population of binary stars then requires a grid of models in four dimensions. Often the eccentricity is ignored because close binaries – which are the ones in which you may be interested – tend to circularise rapidly. This reduces the problem to three dimensions.</div> -<div class="standard" id='magicparlabel-2228'>The number of stars on each side of the grid, i.e. the <em>resolution</em> <math xmlns="http://www.w3.org/1998/Math/MathML"><mstyle mathvariant='sans-serif-italic' mathsize='85%'> +<div class="standard" id='magicparlabel-2253'>The number of stars on each side of the grid, i.e. the <em>resolution</em> <math xmlns="http://www.w3.org/1998/Math/MathML"><mstyle mathvariant='sans-serif-italic' mathsize='85%'> <mrow><mi>n</mi> </mrow></mstyle></math>, roughly determines the total runtime of your simulation. In single stars this is just <math xmlns="http://www.w3.org/1998/Math/MathML"><mstyle mathvariant='sans-serif-italic' mathsize='85%'> <mrow> @@ -1864,11 +1903,11 @@ Binary population synthesis is a glorified form of accountancy, without the huge </mstyle> </mrow> </mrow></mstyle></math>. </div> -<div class='float-figure'><div class="plain_layout" style='text-align: center;' id='magicparlabel-2232'><img style='width:45%;' src='images/4.png' alt='image: 10_tmp_binary_c_lyx_images_3.png' /> -<img style='width:45%;' src='images/5.png' alt='image: 11_tmp_binary_c_lyx_images_4.png' /> +<div class='float-figure'><div class="plain_layout" style='text-align: center;' id='magicparlabel-2257'><img style='width:45%;' src='images/4.png' alt='image: 10_tmp_binary_c_lyx_images_1.png' /> +<img style='width:45%;' src='images/5.png' alt='image: 11_tmp_binary_c_lyx_images_2.png' /> </div> -<div class="plain_layout" id='magicparlabel-2233'><span class='float-caption-Standard float-caption float-caption-standard'>Figure 1: <div id="fig_grid_size"></div> +<div class="plain_layout" id='magicparlabel-2258'><span class='float-caption-Standard float-caption float-caption-standard'>Figure 1: <div id="fig_grid_size"></div> The relative size of the single- and binary-star grids. In single stars only one mass is required, <math xmlns="http://www.w3.org/1998/Math/MathML"><mstyle mathvariant='sans-serif-italic' mathsize='85%'> <mrow> <msub subscriptshift="0.2ex"> @@ -1936,17 +1975,17 @@ The relative size of the single- and binary-star grids. In single stars only one </mrow></mstyle></math> PC.</span></div> </div> -<h3 class="subsection" id='magicparlabel-2238'><span class="subsection_label">6.4</span> What to do with the grid<div id="subsec_What_to_do"></div> +<h3 class="subsection" id='magicparlabel-2263'><span class="subsection_label">6.4</span> What to do with the grid<div id="subsec_What_to_do"></div> </h3> -<div class="standard" id='magicparlabel-2239'>What do we do once the grid of stars is set up? In most cases this involves adding up some statistics related to each star on the grid. There are two approaches which are commonly used, constant star formation and a starburst. The one that suits you depends on what you are trying to calculate and to which observations you hope to compare.</div> -<h4 class="subsubsection" id='magicparlabel-2240'><span class="subsubsection_label">6.4.1</span> Constant star formation rate</h4> -<div class="standard" id='magicparlabel-2241'>In this case the formation rate or (perhaps <math xmlns="http://www.w3.org/1998/Math/MathML"><mstyle mathvariant='sans-serif-italic' mathsize='85%'> +<div class="standard" id='magicparlabel-2264'>What do we do once the grid of stars is set up? In most cases this involves adding up some statistics related to each star on the grid. There are two approaches which are commonly used, constant star formation and a starburst. The one that suits you depends on what you are trying to calculate and to which observations you hope to compare.</div> +<h4 class="subsubsection" id='magicparlabel-2265'><span class="subsubsection_label">6.4.1</span> Constant star formation rate</h4> +<div class="standard" id='magicparlabel-2266'>In this case the formation rate or (perhaps <math xmlns="http://www.w3.org/1998/Math/MathML"><mstyle mathvariant='sans-serif-italic' mathsize='85%'> <mrow> <mrow><mi> δ </mi><mi>t</mi> </mrow> </mrow></mstyle></math>-weighted) probabilities for each star corresponding to those in which you are interested are simply added up. This is why I say it is like accountancy! Because the rate of star formation is assumed to be <em>constant</em> the evolution time of the stellar evolution is irrelevant. A hybrid scheme can also be used, you might only consider stars older than a given age (e.g. for halo stars).</div> -<h4 class="subsubsection" id='magicparlabel-2242'><span class="subsubsection_label">6.4.2</span> Starburst</h4> -<div class="standard" id='magicparlabel-2243'>All stars form at time zero and you add up the (probably <math xmlns="http://www.w3.org/1998/Math/MathML"><mstyle mathvariant='sans-serif-italic' mathsize='85%'> +<h4 class="subsubsection" id='magicparlabel-2267'><span class="subsubsection_label">6.4.2</span> Starburst</h4> +<div class="standard" id='magicparlabel-2268'>All stars form at time zero and you add up the (probably <math xmlns="http://www.w3.org/1998/Math/MathML"><mstyle mathvariant='sans-serif-italic' mathsize='85%'> <mrow> <mrow><mi> δ </mi><mi>t</mi> </mrow> @@ -1955,16 +1994,16 @@ The relative size of the single- and binary-star grids. In single stars only one </div> -<div class="standard" id='magicparlabel-2244'>The statistic you wish to add up is usually output from <em><span class='math'>binary_c</i></span> +<div class="standard" id='magicparlabel-2269'>The statistic you wish to add up is usually output from <em><span class='math'>binary_c</i></span> . </em>Your “grid script” runs each star in your population, takes the output of <em><span class='math'>binary_c</i></span> </em> and adds up the statistic. You can generate single numbers, histograms or arbitrarily complicated statistical constructs for comparison with observations. You can choose whether to do the calculations on the fly or save the progenitor information for later data processing.</div> -<div class="standard" id='magicparlabel-2245'>The grid script can be used on multi-CPU machines and handles the administrative issues regarding parallel processing.</div> +<div class="standard" id='magicparlabel-2270'>The grid script can be used on multi-CPU machines and handles the administrative issues regarding parallel processing.</div> -<div class="standard" id='magicparlabel-2246'><br /> +<div class="standard" id='magicparlabel-2271'><br /> </div> -<h3 class="subsection" id='magicparlabel-2247'><span class="subsection_label">6.5</span> Grid setup (in theory)</h3> -<div class="standard" id='magicparlabel-2248'><div id="sec_grid_setup_theory"></div> +<h3 class="subsection" id='magicparlabel-2272'><span class="subsection_label">6.5</span> Grid setup (in theory)</h3> +<div class="standard" id='magicparlabel-2273'><div id="sec_grid_setup_theory"></div> This section presents the <em>theory</em> behind the setup of a grid in <math xmlns="http://www.w3.org/1998/Math/MathML"><mstyle mathvariant='sans-serif-italic' mathsize='85%'> <mrow><mi>M</mi> </mrow></mstyle></math>, for single stars, or <math xmlns="http://www.w3.org/1998/Math/MathML"><mstyle mathvariant='sans-serif-italic' mathsize='85%'> @@ -2011,7 +2050,7 @@ This section presents the <em>theory</em> behind the setup of a grid in <math xm </mrow> </mrow></mstyle></math>. This is rather subjective but you can chose the bounds of your grid to reflect the stars in which your interest lies.</div> -<div class="standard" id='magicparlabel-2249'>Each star in the grid represents a <em>phase volume</em>. This means that a star of mass <math xmlns="http://www.w3.org/1998/Math/MathML"><mstyle mathvariant='sans-serif-italic' mathsize='85%'> +<div class="standard" id='magicparlabel-2274'>Each star in the grid represents a <em>phase volume</em>. This means that a star of mass <math xmlns="http://www.w3.org/1998/Math/MathML"><mstyle mathvariant='sans-serif-italic' mathsize='85%'> <mrow><mi>M</mi> </mrow></mstyle></math> represents stars which, in reality, have masses <math xmlns="http://www.w3.org/1998/Math/MathML"><mstyle mathvariant='sans-serif-italic' mathsize='85%'> <mrow> @@ -2035,7 +2074,7 @@ This section presents the <em>theory</em> behind the setup of a grid in <math xm </mrow> </mrow></mstyle></math> decreased) until your “answer” converges.</div> -<div class="standard" id='magicparlabel-2250'>One concept which must be grasped is that the bounds of the <em>grid</em> are not necessarily the bounds of the <em>initial distributions</em> you will be using (e.g. the initial mass function, IMF). This is a critical point which can lead to confusion, it is best explained with an example. Say you wish to calculate the ratio of type II to type Ib/c supernovae. You would do this by adding up the number of stars that explode as type IIs and divide by the number of stars that explode as type Ib/cs. You <em>could</em> do this with a grid from <math xmlns="http://www.w3.org/1998/Math/MathML"><mstyle mathvariant='sans-serif-italic' mathsize='85%'> +<div class="standard" id='magicparlabel-2275'>One concept which must be grasped is that the bounds of the <em>grid</em> are not necessarily the bounds of the <em>initial distributions</em> you will be using (e.g. the initial mass function, IMF). This is a critical point which can lead to confusion, it is best explained with an example. Say you wish to calculate the ratio of type II to type Ib/c supernovae. You would do this by adding up the number of stars that explode as type IIs and divide by the number of stars that explode as type Ib/cs. You <em>could</em> do this with a grid from <math xmlns="http://www.w3.org/1998/Math/MathML"><mstyle mathvariant='sans-serif-italic' mathsize='85%'> <mrow><mn>0.1</mn> </mrow></mstyle></math> to <math xmlns="http://www.w3.org/1998/Math/MathML"><mstyle mathvariant='sans-serif-italic' mathsize='85%'> <mrow> @@ -2177,11 +2216,11 @@ This section presents the <em>theory</em> behind the setup of a grid in <math xm </mrow> </mrow></mstyle></math>. Note that the <em>grid</em> has changed, but the result has not. This is because the initial distributions have fixed bounds independent of the grid bounds. See Section <a href="#sec_initial_dists">6.20</a> for more details on initial distributions. </div> -<div class="standard" id='magicparlabel-2251'>This process requires some knowledge in advance, which you may not have. In that case, run a low resolution grid, find suitable grid bounds and then repeat at higher resolution until you are happy. The downside to the process is that you may well miss small parts of the parameter space which contain interesting systems. In practice this is often a compromise worth making and, if in doubt, test your model runs at low resolution but then crank the resolution to the maximum you think is possible for the final model run.</div> +<div class="standard" id='magicparlabel-2276'>This process requires some knowledge in advance, which you may not have. In that case, run a low resolution grid, find suitable grid bounds and then repeat at higher resolution until you are happy. The downside to the process is that you may well miss small parts of the parameter space which contain interesting systems. In practice this is often a compromise worth making and, if in doubt, test your model runs at low resolution but then crank the resolution to the maximum you think is possible for the final model run.</div> -<div class="standard" id='magicparlabel-2252'>Another advantage of choosing the grid bounds is that sub-grids can be run on different computers or CPU cores and the results combined. This is discussed further in Section <a href="#sec_The_Thread_Model">6.22</a>.</div> -<h4 class="subsubsection" id='magicparlabel-2253'><span class="subsubsection_label">6.5.1</span> Phase Volume</h4> -<div class="standard" id='magicparlabel-2254'><div id="subsec_phase_volume"></div> +<div class="standard" id='magicparlabel-2277'>Another advantage of choosing the grid bounds is that sub-grids can be run on different computers or CPU cores and the results combined. This is discussed further in Section <a href="#sec_The_Thread_Model">6.22</a>.</div> +<h4 class="subsubsection" id='magicparlabel-2278'><span class="subsubsection_label">6.5.1</span> Phase Volume</h4> +<div class="standard" id='magicparlabel-2279'><div id="subsec_phase_volume"></div> Given a chosen set of these distributions a logarithmic grid is set up in one-dimensional <math xmlns="http://www.w3.org/1998/Math/MathML"><mstyle mathvariant='sans-serif-italic' mathsize='85%'> <mrow><mi>M</mi> </mrow></mstyle></math> space for single stars or in 3D <math xmlns="http://www.w3.org/1998/Math/MathML"><mstyle mathvariant='sans-serif-italic' mathsize='85%'> @@ -2210,7 +2249,7 @@ Given a chosen set of these distributions a logarithmic grid is set up in one-di </mrow> </mrow></mstyle></math> where </div> -<div class="standard" id='magicparlabel-2255'><math display="block" xmlns="http://www.w3.org/1998/Math/MathML"><mstyle mathvariant='sans-serif-italic' mathsize='85%'> +<div class="standard" id='magicparlabel-2280'><math display="block" xmlns="http://www.w3.org/1998/Math/MathML"><mstyle mathvariant='sans-serif-italic' mathsize='85%'> <mtable> <mtr> <mtd> @@ -2360,11 +2399,11 @@ Given a chosen set of these distributions a logarithmic grid is set up in one-di </mrow> </mrow></mstyle></math> for binary stars.</div> -<div class="standard" id='magicparlabel-2256'>The probability of existence of star <math xmlns="http://www.w3.org/1998/Math/MathML"><mstyle mathvariant='sans-serif-italic' mathsize='85%'> +<div class="standard" id='magicparlabel-2281'>The probability of existence of star <math xmlns="http://www.w3.org/1998/Math/MathML"><mstyle mathvariant='sans-serif-italic' mathsize='85%'> <mrow><mi>i</mi> </mrow></mstyle></math> is given by</div> -<div class="standard" id='magicparlabel-2257'><math display="block" xmlns="http://www.w3.org/1998/Math/MathML"><mstyle mathvariant='sans-serif-italic' mathsize='85%'> +<div class="standard" id='magicparlabel-2282'><math display="block" xmlns="http://www.w3.org/1998/Math/MathML"><mstyle mathvariant='sans-serif-italic' mathsize='85%'> <mtable> <mtr> <mtd> @@ -2394,7 +2433,7 @@ Given a chosen set of these distributions a logarithmic grid is set up in one-di <mrow><mo> Ψ </mo> </mrow></mstyle></math> is discussed in Section <a href="#sec_initial_dists">6.20</a>. </div> -<div class="standard" id='magicparlabel-2258'>The probability, <math xmlns="http://www.w3.org/1998/Math/MathML"><mstyle mathvariant='sans-serif-italic' mathsize='85%'> +<div class="standard" id='magicparlabel-2283'>The probability, <math xmlns="http://www.w3.org/1998/Math/MathML"><mstyle mathvariant='sans-serif-italic' mathsize='85%'> <mrow> <mrow><mi> δ </mi> <msub subscriptshift="0.2ex"> @@ -2431,8 +2470,8 @@ Given a chosen set of these distributions a logarithmic grid is set up in one-di </msub> </mrow> </mrow></mstyle></math>. You have to be careful to calculate the appropriate statistics for comparison with the observations.</div> -<h4 class="subsubsection" id='magicparlabel-2259'><span class="subsubsection_label">6.5.2</span> Grid loops</h4> -<div class="standard" id='magicparlabel-2260'><div id="subsec_grid_loops"></div> +<h4 class="subsubsection" id='magicparlabel-2284'><span class="subsubsection_label">6.5.2</span> Grid loops</h4> +<div class="standard" id='magicparlabel-2285'><div id="subsec_grid_loops"></div> In binary systems, the secondary mass <math xmlns="http://www.w3.org/1998/Math/MathML"><mstyle mathvariant='sans-serif-italic' mathsize='85%'> <mrow> <msub subscriptshift="0.2ex"> @@ -2455,7 +2494,7 @@ In binary systems, the secondary mass <math xmlns="http://www.w3.org/1998/Math/M <mrow><mi>P</mi> </mrow></mstyle></math>, may depend on both. This means that usually the grid must be constructed in a series of nested loops:</div> -<div class="standard" id='magicparlabel-2261'><div id="eq_grid_loops"></div> +<div class="standard" id='magicparlabel-2286'><div id="eq_grid_loops"></div> <math display="block" xmlns="http://www.w3.org/1998/Math/MathML"><mstyle mathvariant='sans-serif-italic' mathsize='85%'> <mtable> <mtr> @@ -2660,8 +2699,8 @@ In binary systems, the secondary mass <math xmlns="http://www.w3.org/1998/Math/M </mrow> </msub> </mrow></mstyle></math>.</div> -<h4 class="subsubsection" id='magicparlabel-2262'><span class="subsubsection_label">6.5.3</span> Resolution</h4> -<div class="standard" id='magicparlabel-2263'><div id="subsec_resolution"></div> +<h4 class="subsubsection" id='magicparlabel-2287'><span class="subsubsection_label">6.5.3</span> Resolution</h4> +<div class="standard" id='magicparlabel-2288'><div id="subsec_resolution"></div> The choice of grid resolution depends very much on the problem you wish to address and what you are trying to calculate. As a general rule, assuming you are modelling stars from <math xmlns="http://www.w3.org/1998/Math/MathML"><mstyle mathvariant='sans-serif-italic' mathsize='85%'> <mrow> <mrow> @@ -2720,9 +2759,9 @@ The choice of grid resolution depends very much on the problem you wish to addre </msub> </mrow></mstyle></math>) dimension. </div> -<div class="standard" id='magicparlabel-2264'>However, before rushing off to run millions of stars, run some low-resolution test models and gradually increase the number of stars. The best way to determine the required resolution is simply the brute force method: keep increasing the resolution until your answers converge.</div> +<div class="standard" id='magicparlabel-2289'>However, before rushing off to run millions of stars, run some low-resolution test models and gradually increase the number of stars. The best way to determine the required resolution is simply the brute force method: keep increasing the resolution until your answers converge.</div> -<div class="standard" id='magicparlabel-2265'>You can roughly estimate the <em>statistical </em>error by counting the number of stars that satisfy your criterion (say <math xmlns="http://www.w3.org/1998/Math/MathML"><mstyle mathvariant='sans-serif-italic' mathsize='85%'> +<div class="standard" id='magicparlabel-2290'>You can roughly estimate the <em>statistical </em>error by counting the number of stars that satisfy your criterion (say <math xmlns="http://www.w3.org/1998/Math/MathML"><mstyle mathvariant='sans-serif-italic' mathsize='85%'> <mrow><mi>k</mi> </mrow></mstyle></math> stars) and then use Poisson statistics (i.e. the error on a value <math xmlns="http://www.w3.org/1998/Math/MathML"><mstyle mathvariant='sans-serif-italic' mathsize='85%'> <mrow><mi>x</mi> @@ -2734,20 +2773,20 @@ The choice of grid resolution depends very much on the problem you wish to addre </mrow> </mrow></mstyle></math>). <b>Be warned that this is <em>not</em> the error due to the use of a grid.</b> If your data calculation binning is <em>over</em>-resolved you may see problems with artefacts and aliasing. These may or may not affect your results. If in doubt, increase the resolution until the problem goes away (if it goes away!). In some cases this may not be possible because your computer is not fast enough. You could always buy a time machine… but then you wouldn't be doing astrophysics!</div> -<div class="standard" id='magicparlabel-2266'>Overall resolution is often not your only concern: perhaps you want more stars in a certain region of the parameter space. Well, with the flexigrid and its spacing_functions module you can define your own grid spacing function which as flexible as you like (see Sections <a href="#sec_flexigrid">6.11</a> and <a href="#sec_The_spacing_functions_module">6.21</a>). </div> +<div class="standard" id='magicparlabel-2291'>Overall resolution is often not your only concern: perhaps you want more stars in a certain region of the parameter space. Well, with the flexigrid and its spacing_functions module you can define your own grid spacing function which as flexible as you like (see Sections <a href="#sec_flexigrid">6.11</a> and <a href="#sec_The_spacing_functions_module">6.21</a>). </div> -<div class="standard" id='magicparlabel-2267'><br /> +<div class="standard" id='magicparlabel-2292'><br /> </div> -<h3 class="subsection" id='magicparlabel-2268'><span class="subsection_label">6.6</span> Data parsing</h3> -<div class="standard" id='magicparlabel-2269'><div id="sec_data_parsing"></div> +<h3 class="subsection" id='magicparlabel-2293'><span class="subsection_label">6.6</span> Data parsing</h3> +<div class="standard" id='magicparlabel-2294'><div id="sec_data_parsing"></div> Before you actually run your own population synthesis grid you have to think about what you want to discover from your stellar models. A few standard cases are outlined here. It is vital to decide what you want in advance, because often data analysis takes up a large chunk of CPU time when evolving a population. While <em><span class='math'>\binarygrid</span> 2</em> is a great advance over earlier versions of <span class='math'>\binarygrid</span> in this regard, it is still good to be <em>efficient</em>.</div> -<div class="standard" id='magicparlabel-2270'>This section describes the theory, the practical aspects of combining<em> <span class='math'>binary_c</i></span> +<div class="standard" id='magicparlabel-2295'>This section describes the theory, the practical aspects of combining<em> <span class='math'>binary_c</i></span> </em>with your grid script are described in the following, e.g. Section <a href="#sec_grid_pl">6.9</a>.</div> -<h4 class="subsubsection" id='magicparlabel-2271'><span class="subsubsection_label">6.6.1</span> Rates of things</h4> -<div class="standard" id='magicparlabel-2272'><div id="subsec_rates_of_things"></div> +<h4 class="subsubsection" id='magicparlabel-2296'><span class="subsubsection_label">6.6.1</span> Rates of things</h4> +<div class="standard" id='magicparlabel-2297'><div id="subsec_rates_of_things"></div> The simplest thing to calculate is the rate of formation of some type of star, or alternatively the rate of stellar death (e.g. the supernova rate), merger rate, etc. These are <em>events </em>which have no duration so the important thing to log is the <em>time at which the event happened</em>,<em> <math xmlns="http://www.w3.org/1998/Math/MathML"><mstyle mathvariant='sans-serif-italic' mathsize='85%'> <mrow> <msub subscriptshift="0.2ex"> @@ -2766,7 +2805,7 @@ The simplest thing to calculate is the rate of formation of some type of star, o </msub> </mrow></mstyle></math>.</div> -<div class="standard" id='magicparlabel-2273'>You will probably want to count the number of systems that explode in a given time bin, i.e. between time <math xmlns="http://www.w3.org/1998/Math/MathML"><mstyle mathvariant='sans-serif-italic' mathsize='85%'> +<div class="standard" id='magicparlabel-2298'>You will probably want to count the number of systems that explode in a given time bin, i.e. between time <math xmlns="http://www.w3.org/1998/Math/MathML"><mstyle mathvariant='sans-serif-italic' mathsize='85%'> <mrow><mi>t</mi> </mrow></mstyle></math> and <math xmlns="http://www.w3.org/1998/Math/MathML"><mstyle mathvariant='sans-serif-italic' mathsize='85%'> <mrow> @@ -2801,7 +2840,7 @@ The simplest thing to calculate is the rate of formation of some type of star, o <mrow><mi>S</mi> </mrow></mstyle></math> (and its associated uncertainty) cancels out.</div> -<div class="standard" id='magicparlabel-2274'>This is all correct for a starburst at time <math xmlns="http://www.w3.org/1998/Math/MathML"><mstyle mathvariant='sans-serif-italic' mathsize='85%'> +<div class="standard" id='magicparlabel-2299'>This is all correct for a starburst at time <math xmlns="http://www.w3.org/1998/Math/MathML"><mstyle mathvariant='sans-serif-italic' mathsize='85%'> <mrow> <mrow><mi>t</mi><mo>=</mo><mn>0</mn> </mrow> @@ -2809,11 +2848,11 @@ The simplest thing to calculate is the rate of formation of some type of star, o <mrow><mi>t</mi> </mrow></mstyle></math>) or use a pre-existing code such as RGI's Galactic Chemical Evolution (<em>GCE</em>) code. The latter has the advantage that it already exists and is well tested. You will, however, have to ask RGI about it because it is not (yet) a part of the standard<em> <span class='math'>binary_c</i></span> </em>distribution. </div> -<h4 class="subsubsection" id='magicparlabel-2275'><span class="subsubsection_label">6.6.2</span> Numbers of things</h4> -<div class="standard" id='magicparlabel-2276'><div id="subsec_numbers_of_things"></div> +<h4 class="subsubsection" id='magicparlabel-2300'><span class="subsubsection_label">6.6.2</span> Numbers of things</h4> +<div class="standard" id='magicparlabel-2301'><div id="subsec_numbers_of_things"></div> </div> -<div class="standard" id='magicparlabel-2277'>Alternatively, perhaps you wish to calculate the number of stars of a certain type e.g. the number of carbon stars or the number of K-type stars. In this case you have to count both the probability of the existence of the star <math xmlns="http://www.w3.org/1998/Math/MathML"><mstyle mathvariant='sans-serif-italic' mathsize='85%'> +<div class="standard" id='magicparlabel-2302'>Alternatively, perhaps you wish to calculate the number of stars of a certain type e.g. the number of carbon stars or the number of K-type stars. In this case you have to count both the probability of the existence of the star <math xmlns="http://www.w3.org/1998/Math/MathML"><mstyle mathvariant='sans-serif-italic' mathsize='85%'> <mrow> <msub subscriptshift="0.2ex"> <mrow><mi>p</mi> @@ -2849,7 +2888,7 @@ The simplest thing to calculate is the rate of formation of some type of star, o </mrow> </mrow></mstyle></math> if the star is interesting to you, but zero otherwise.</div> -<div class="standard" id='magicparlabel-2278'>As in the previous example, if <math xmlns="http://www.w3.org/1998/Math/MathML"><mstyle mathvariant='sans-serif-italic' mathsize='85%'> +<div class="standard" id='magicparlabel-2303'>As in the previous example, if <math xmlns="http://www.w3.org/1998/Math/MathML"><mstyle mathvariant='sans-serif-italic' mathsize='85%'> <mrow><mi>S</mi> </mrow></mstyle></math> is not simply a constant things get tricky. But usually a constant star formation rate is “good enough” for e.g. Galactic stellar population studies of anything but the youngest stars. In other cases a starburst is more appropriate and you will have to factor in a check on the time <math xmlns="http://www.w3.org/1998/Math/MathML"><mstyle mathvariant='sans-serif-italic' mathsize='85%'> <mrow><mi>t</mi> @@ -2861,36 +2900,36 @@ The simplest thing to calculate is the rate of formation of some type of star, o </mover> </mrow></mstyle></math> to match the present-day age of the population. </div> -<div class="standard" id='magicparlabel-2279'><br /> +<div class="standard" id='magicparlabel-2304'><br /> </div> -<h3 class="subsection" id='magicparlabel-2280'><span class="subsection_label">6.7</span> Running grids of stars</h3> -<div class="standard" id='magicparlabel-2281'><div id="sec_grid_setup_practice"></div> +<h3 class="subsection" id='magicparlabel-2305'><span class="subsection_label">6.7</span> Running grids of stars</h3> +<div class="standard" id='magicparlabel-2306'><div id="sec_grid_setup_practice"></div> You run a grid of stars using a combination of the <em><i>binary_grid2</i></em> module and a chosen backend (see Section <a href="#subsec_binary_grid2_backends">4.8</a>).</div> -<dl class='description' id='magicparlabel-2282'><dt class="description_label"><i>binary_grid2</i></dt> +<dl class='description' id='magicparlabel-2307'><dt class="description_label"><i>binary_grid2</i></dt> <dd class="description_item"> is the code which sets out the parameter space, and defines the (object oriented) interface to your stellar population. </dd> <dt class="description_label">the backend</dt> <dd class="description_item"> is the code that connects your <span class='math'>\binarygrid</span> 2 stellar population to the stellar evolution code (usually<em> <span class='math'>binary_c</i></span> </em>). As of V2.00 there is a <span class="flex_programminglanguage">C</span> and a <span class="flex_scriptinglanguage">Perl</span> backend. Please use the <span class="flex_programminglanguage">C</span> backend, the <span class="flex_scriptinglanguage">Perl</span> backend is for backwards compatibility reasons and testing only, and the <span class="flex_programminglanguage">C</span> version is <em>much</em> more efficient.</dd> </dl> -<div class="standard" id='magicparlabel-2304'>For details on how the grid is set up, and how it is multithreaded, please see Section <a href="#sec_flexigrid">6.11</a>.</div> -<h4 class="subsubsection" id='magicparlabel-2305'><span class="subsubsection_label">6.7.1</span> Your <em>grid script</em></h4> -<div class="standard" id='magicparlabel-2306'>You load the<em> <span class='math'>\binarygrid</span> +<div class="standard" id='magicparlabel-2329'>For details on how the grid is set up, and how it is multithreaded, please see Section <a href="#sec_flexigrid">6.11</a>.</div> +<h4 class="subsubsection" id='magicparlabel-2330'><span class="subsubsection_label">6.7.1</span> Your <em>grid script</em></h4> +<div class="standard" id='magicparlabel-2331'>You load the<em> <span class='math'>\binarygrid</span> 2 </em>module from your <em>grid</em> <em>script</em> (see Sec. <a href="#sec_grid_pl">6.9</a> for full details). This is a<em> </em><span class="flex_scriptinglanguage">Perl</span> script which contains the definition of both your population synthesis grid and your input physics. Do not make this yourself: instead, use the template script in the <span class="flex_file">src/perl/scripts2</span> directory of the<em> <span class='math'>binary_c</i></span> </em>tree and modify appropriately (Sec. <a href="#sec_grid_pl">6.9</a>). The most appropriate starting place is the script <span class="flex_file">src/perl/scripts2/template.pl</span> which is a basic grid that can be adapted.</div> -<h4 class="subsubsection" id='magicparlabel-2319'><span class="subsubsection_label">6.7.2</span> The <em><i>binary_grid2</i></em> Module</h4> -<div class="standard" id='magicparlabel-2320'><div id="subsec_the_binary_grid_perl_module"></div> +<h4 class="subsubsection" id='magicparlabel-2344'><span class="subsubsection_label">6.7.2</span> The <em><i>binary_grid2</i></em> Module</h4> +<div class="standard" id='magicparlabel-2345'><div id="subsec_the_binary_grid_perl_module"></div> </div> -<div class="standard" id='magicparlabel-2321'>The <em><span class='math'>\binarygrid</span> +<div class="standard" id='magicparlabel-2346'>The <em><span class='math'>\binarygrid</span> 2</em> module contains all the code to set up, manage and run your stellar grid(s). The internal workings should be (almost) transparent to you, the user, and the process is as automated as possible. You still have to do something, of course, and – most importantly – decide on input physics.</div> -<h4 class="subsubsection" id='magicparlabel-2322'><span class="subsubsection_label">6.7.3</span> <span class='math'>\binarygrid</span> +<h4 class="subsubsection" id='magicparlabel-2347'><span class="subsubsection_label">6.7.3</span> <span class='math'>\binarygrid</span> 2 objects</h4> -<div class="standard" id='magicparlabel-2323'>You should make <span class='math'>\binarygrid</span> +<div class="standard" id='magicparlabel-2348'>You should make <span class='math'>\binarygrid</span> 2 objects, each of which is one of your stellar populations. You can have multiple populations in the same grid (they are independent) but usually you just want one. Make a new one with code like the following:</div> -<div class="standard" id='magicparlabel-2324'><br /> +<div class="standard" id='magicparlabel-2349'><br /> <pre class ='listings Perl'># number of computational threads to launch my $nthreads = rob_misc::ncpus(); @@ -2903,12 +2942,12 @@ my $population = <i>binary_grid2</i>->new( </pre><br /> </div> -<div class="standard" id='magicparlabel-2338'>You can now access the object, <span class="flex_perlcode">$population</span>, through the various methods of the <span class='math'>\binarygrid</span> +<div class="standard" id='magicparlabel-2363'>You can now access the object, <span class="flex_perlcode">$population</span>, through the various methods of the <span class='math'>\binarygrid</span> 2 module.</div> -<h4 class="subsubsection" id='magicparlabel-2343'><span class="subsubsection_label">6.7.4</span> Variables</h4> -<div class="standard" id='magicparlabel-2344'>You can set variables:</div> +<h4 class="subsubsection" id='magicparlabel-2368'><span class="subsubsection_label">6.7.4</span> Variables</h4> +<div class="standard" id='magicparlabel-2369'>You can set variables:</div> -<ul class="itemize" id='magicparlabel-2345'><li class="itemize_item">When defining the object, as shown above.</li> +<ul class="itemize" id='magicparlabel-2370'><li class="itemize_item">When defining the object, as shown above.</li> <li class="itemize_item">With calls the <span style='font-family:monospace;font-size: 18px;'>set</span> method, e.g.,<br /> <pre class ='listings Perl'>$population->set( vb=>1, # turn on verbose logging (can be 0,1,2...) @@ -2921,12 +2960,12 @@ $population->{_bse_options}->{metallicity} = 0.004;</pre><br /> This method is <b>not recommended unless you know exactly what you are doing.</b></li> <li class="itemize_item">Calls to object methods which are <em>undefined</em> are passed to the <span class="flex_perlcode">AUTOLOAD</span> method which issues a warning. This usually indicates a typo or mistake on your part.</li> </ul> -<h4 class="subsubsection" id='magicparlabel-2365'><span class="subsubsection_label">6.7.5</span> Important Subroutines in <em><i>binary_grid</i></em></h4> -<div class="standard" id='magicparlabel-2366'><div id="subsec_subs_in_binary_grid"></div> +<h4 class="subsubsection" id='magicparlabel-2390'><span class="subsubsection_label">6.7.5</span> Important Subroutines in <em><i>binary_grid</i></em></h4> +<div class="standard" id='magicparlabel-2391'><div id="subsec_subs_in_binary_grid"></div> A few <span class='math'>\binarygrid</span> 2 methods are used often</div> -<dl class='description' id='magicparlabel-2367'><dt class="description_label">parse args</dt> +<dl class='description' id='magicparlabel-2392'><dt class="description_label">parse args</dt> <dd class="description_item"> This scans the command line arguments to your script and sets any variables thus defined as <span class="flex_perlcode"><variable>=<value></span> pairs.</dd> <dt class="description_label">set</dt> <dd class="description_item"> Sets a list of variables in <span class="flex_perlcode"><variable> => <value></span> pairs.</dd> @@ -2945,11 +2984,11 @@ If the grid variable <span class="flex_perlcode">return_array_refs</span><em> </ <dt class="description_label">results</dt> <dd class="description_item"> Returns (a reference to) the hash containing the results of the evolution. At the end of the evolution of your population you can acquire statistics through this hash reference.</dd> </dl> -<h3 class="subsection" id='magicparlabel-2421'><span class="subsection_label">6.8</span> Important Subroutines in your grid script</h3> -<div class="standard" id='magicparlabel-2422'><div id="subsec_subs_in_your_script"></div> +<h3 class="subsection" id='magicparlabel-2446'><span class="subsection_label">6.8</span> Important Subroutines in your grid script</h3> +<div class="standard" id='magicparlabel-2447'><div id="subsec_subs_in_your_script"></div> </div> -<h4 class="subsubsection" id='magicparlabel-2423'><span class="subsubsection_label">6.8.1</span> <em>parse_data </em>(required)</h4> -<div class="standard" id='magicparlabel-2424'>You have to write a function to parse the data which comes from your <span class='math'>\binarygrid</span> +<h4 class="subsubsection" id='magicparlabel-2448'><span class="subsubsection_label">6.8.1</span> <em>parse_data </em>(required)</h4> +<div class="standard" id='magicparlabel-2449'>You have to write a function to parse the data which comes from your <span class='math'>\binarygrid</span> 2 object and return when there is no more data. <br /> @@ -2987,10 +3026,10 @@ An example function is the following. </pre><br /> </div> -<div class="standard" id='magicparlabel-2455'><br /> +<div class="standard" id='magicparlabel-2480'><br /> </div> -<h3 class="subsection" id='magicparlabel-2456'><span class="subsection_label">6.9</span> Your <em>grid script </em>and coupling your population synthesis to <em><i>binary_c</i>/nucsyn</em></h3> -<div class="standard" id='magicparlabel-2457'><div id="sec_grid_pl"></div> +<h3 class="subsection" id='magicparlabel-2481'><span class="subsection_label">6.9</span> Your <em>grid script </em>and coupling your population synthesis to <em><i>binary_c</i>/nucsyn</em></h3> +<div class="standard" id='magicparlabel-2482'><div id="sec_grid_pl"></div> This describes what you should do in your grid script in order to make the <em>flexigrid </em>work. Learn about the <em>flexigrid</em> in Section <a href="#sec_flexigrid">6.11</a>. <br /> @@ -3004,19 +3043,19 @@ Before you start: you should copy the <span class="flex_perlscript">grid-flexigr <br /> </div> -<h4 class="subsubsection" id='magicparlabel-2474'><span class="subsubsection_label">6.9.1</span> Logging in <em><i>binary_c</i></em></h4> -<div class="standard" id='magicparlabel-2475'><div id="subsec_logging_in_binary_c"></div> +<h4 class="subsubsection" id='magicparlabel-2499'><span class="subsubsection_label">6.9.1</span> Logging in <em><i>binary_c</i></em></h4> +<div class="standard" id='magicparlabel-2500'><div id="subsec_logging_in_binary_c"></div> </div> -<div class="standard" id='magicparlabel-2476'>When <em><span class='math'>binary_c</i></span> +<div class="standard" id='magicparlabel-2501'>When <em><span class='math'>binary_c</i></span> </em> is run for one star with the <span class="flex_bashscript">tbse</span> script the output is dumped to the screen (known in <span class="flex_os">UNIX</span> as <span class="flex_cvar">stdout</span>). A standard build of <em><span class='math'>binary_c</i></span> </em> outputs very little information because it does not know what you wish to know (this is a <em>known unknown</em>). Every line that is output is expensive in terms of CPU time, and CPU time is critical when running millions of stars. This means you have to think carefully about what you will output from <em><span class='math'>binary_c</i></span> </em> and when. Too much information slows things down, too little is useless – you have to decide.</div> -<div class="standard" id='magicparlabel-2489'>You may want to choose whether to output one line of information every <em><span class='math'>binary_c</i></span> +<div class="standard" id='magicparlabel-2514'>You may want to choose whether to output one line of information every <em><span class='math'>binary_c</i></span> </em> timestep. This should be done either in your grid script by setting <span class="flex_perlscript">C_auto_logging</span> or <span class="flex_perlcode">C_logging_code</span> or manually in the <span class="flex_sourcefile">src/logging/log_every_timestep.c</span> subroutine which is called every timestep.</div> -<ul class="itemize" id='magicparlabel-2502'><li class="itemize_item"><em><b>C_auto_logging</b></em> This is the recommended route to logging when coupling <span class='math'>binary_c</i></span> +<ul class="itemize" id='magicparlabel-2527'><li class="itemize_item"><em><b>C_auto_logging</b></em> This is the recommended route to logging when coupling <span class='math'>binary_c</i></span> to <span class='math'>\binarygrid</span> but only works for simple variables that are inside stardata. In your grid script, do something like the following to set <span class="flex_perlscript">C_auto_logging</span>. This is a hash of headers (in this case MY_STELLAR_DATA) which correspond to lines of output from <span class='math'>binary_c</i></span> which are then prefixed with the header. Following this is a set of numerical data items, in the case below time, mass of star 0 (the primary star), the system probability and the timestep. All the items are assumed to be floating point variables, and are processed with the <span class="flex_cvar">%g</span> format statement so that (small) integers are output as integers.<br /> @@ -3053,12 +3092,12 @@ Before you start: you should copy the <span class="flex_perlscript">grid-flexigr </pre><br /> </li> </ul> -<div class="standard" id='magicparlabel-2564'>The string <span class="flex_cmacro">MY_STELLAR_DATA</span> is critical: this is the <em>header</em> that is recognised by your <span class="flex_perlscript">parse_data</span> function as <span class="flex_perlcode">$header</span> and on the basis of which your <span class="flex_perlcode">parse_data</span> function decides how to act and save data for later statistical analysis, output, plotting, etc.</div> +<div class="standard" id='magicparlabel-2589'>The string <span class="flex_cmacro">MY_STELLAR_DATA</span> is critical: this is the <em>header</em> that is recognised by your <span class="flex_perlscript">parse_data</span> function as <span class="flex_perlcode">$header</span> and on the basis of which your <span class="flex_perlcode">parse_data</span> function decides how to act and save data for later statistical analysis, output, plotting, etc.</div> -<div class="standard" id='magicparlabel-2581'>You should have a think (and consult Section <a href="#sec_data_parsing">6.6</a>) to determine whether you want to output either the probability (<span class="flex_cvar">stardata->model.probability</span>) or both the probability and timestep<div class="foot"><span class="foot_label">6</span><div class="foot_inner"><div class="plain_layout" id='magicparlabel-2589'>Do not use stardata->model.dt or stardata->model.dtm: use the local variable dt.</div> +<div class="standard" id='magicparlabel-2606'>You should have a think (and consult Section <a href="#sec_data_parsing">6.6</a>) to determine whether you want to output either the probability (<span class="flex_cvar">stardata->model.probability</span>) or both the probability and timestep<div class="foot"><span class="foot_label">6</span><div class="foot_inner"><div class="plain_layout" id='magicparlabel-2614'>Do not use stardata->model.dt or stardata->model.dtm: use the local variable dt.</div> </div></div> (<span class="flex_cvar">dt</span> in years, or <span class="flex_cvar">dtm</span> in megayears). Often it is the number of stars in a particular phase that you want to count, in which case you want to add up the product: <span class="flex_cvar">stardata-> model.probability*dt</span>, which is set up for you as the local variable <span class="flex_cvar">dtp</span>. If you are counting the rate of an event, e.g. supernovae, then the probability alone is more likely to be what you want.</div> -<h4 class="subsubsection" id='magicparlabel-2606'><span class="subsubsection_label">6.9.2</span> Adding things up</h4> -<div class="standard" id='magicparlabel-2607'><div id="subsec_adding_things_up"></div> +<h4 class="subsubsection" id='magicparlabel-2631'><span class="subsubsection_label">6.9.2</span> Adding things up</h4> +<div class="standard" id='magicparlabel-2632'><div id="subsec_adding_things_up"></div> The <span class="flex_perlcode">$h</span> hash pointer in <span class="flex_perlscript">parse_data</span> is where you should put data which you later want to analyse. You should scan for the appropriate header, e.g.<span style='font-family:monospace;font-size: 18px;'> </span><span class="flex_cvar">MY_STELLAR_DATA</span>, and then act on the rest of the data. An example <span style='font-family:monospace;font-size: 18px;'>parse_data</span> function corresponding to the above <span style='font-family:monospace;font-size: 18px;'>Printf</span> statement is (assuming <span class="flex_perlcode">return_array_refs</span> is set to <span class="flex_perlcode">1</span>)<br /> <pre class ='listings Perl'>sub parse_data { @@ -3096,8 +3135,8 @@ The <span class="flex_perlcode">$h</span> hash pointer in <span class="flex_perl } }</pre><br /> </div> -<h4 class="subsubsection" id='magicparlabel-2666'><span class="subsubsection_label">6.9.3</span> Joining the results</h4> -<div class="standard" id='magicparlabel-2667'>The <span class="flex_perlcode">$results</span> hash pointer in <span class="flex_perlcode">parse_data</span> is unique to its thread: it does not contain your final result, just the part of it corresponding to the population of stars which ran on that thread. You have to add up the results by joining the various threads at the end of the run. In practice this is done automatically by <span class='math'>\binarygrid</span> +<h4 class="subsubsection" id='magicparlabel-2691'><span class="subsubsection_label">6.9.3</span> Joining the results</h4> +<div class="standard" id='magicparlabel-2692'>The <span class="flex_perlcode">$results</span> hash pointer in <span class="flex_perlcode">parse_data</span> is unique to its thread: it does not contain your final result, just the part of it corresponding to the population of stars which ran on that thread. You have to add up the results by joining the various threads at the end of the run. In practice this is done automatically by <span class='math'>\binarygrid</span> 2 in combination with some <span class="flex_scriptinglanguage">Perl</span> wizardry. You can, however, override this yourself by writing your own join function, which should be set in the following manner: <br /> @@ -3105,7 +3144,7 @@ The <span class="flex_perlcode">$h</span> hash pointer in <span class="flex_perl <pre class ='listings Perl'>$binary_grid::grid_options{'threads_join_function_pointer'}=\&join_thread;</pre><br /> </div> -<div class="standard" id='magicparlabel-2684'><b>Beware that joining large hashes may require a lot of RAM. </b>If you are running <math xmlns="http://www.w3.org/1998/Math/MathML"><mstyle mathvariant='sans-serif-italic' mathsize='85%'> +<div class="standard" id='magicparlabel-2709'><b>Beware that joining large hashes may require a lot of RAM. </b>If you are running <math xmlns="http://www.w3.org/1998/Math/MathML"><mstyle mathvariant='sans-serif-italic' mathsize='85%'> <mrow><mi>N</mi> </mrow></mstyle></math> threads which each uses <math xmlns="http://www.w3.org/1998/Math/MathML"><mstyle mathvariant='sans-serif-italic' mathsize='85%'> <mrow><mi>M</mi> @@ -3119,10 +3158,10 @@ The <span class="flex_perlcode">$h</span> hash pointer in <span class="flex_perl <mi>M</mi> </mrow> </mrow></mstyle></math> MB to join the data (probably a bit more). If you have trouble, say on a cluster, you might consider saving the results hash from each thread to a file, then joining the results on another machine. When running on <span class="flex_software">condor</span> or <span class="flex_software">slurm</span>, this is done automatically if you postpone the join.</div> -<h4 class="subsubsection" id='magicparlabel-2693'><span class="subsubsection_label">6.9.4</span> Outputting the results</h4> -<div class="standard" id='magicparlabel-2694'>At the end of the grid script you should output the results, usually by writing an <em>output</em> subroutine and calling it. An example is the following which outputs to <span class="flex_cvar">stdout</span>, but you could of course open files and save your output to them.</div> +<h4 class="subsubsection" id='magicparlabel-2718'><span class="subsubsection_label">6.9.4</span> Outputting the results</h4> +<div class="standard" id='magicparlabel-2719'>At the end of the grid script you should output the results, usually by writing an <em>output</em> subroutine and calling it. An example is the following which outputs to <span class="flex_cvar">stdout</span>, but you could of course open files and save your output to them.</div> -<div class="standard" id='magicparlabel-2699'><br /> +<div class="standard" id='magicparlabel-2724'><br /> <pre class ='listings Perl'>sub output { my $population = shift; @@ -3139,10 +3178,10 @@ The <span class="flex_perlcode">$h</span> hash pointer in <span class="flex_perl } </pre><br /> </div> -<h3 class="subsection" id='magicparlabel-2718'><span class="subsection_label">6.10</span> Save your data – or process on the fly?</h3> -<div class="standard" id='magicparlabel-2719'>Before running a grid you have to make the big decision: do you save your data or process it all on the fly? Above I have shown you the latter, and there is good reason to teach this first and use this method preferably. That said, there are advantages and disadvantages to both, as described below.</div> -<h4 class="subsubsection" id='magicparlabel-2720'><span class="subsubsection_label">6.10.1</span> Saving data </h4> -<div class="standard" id='magicparlabel-2721'><div id="subsec_saving_data"></div> +<h3 class="subsection" id='magicparlabel-2743'><span class="subsection_label">6.10</span> Save your data – or process on the fly?</h3> +<div class="standard" id='magicparlabel-2744'>Before running a grid you have to make the big decision: do you save your data or process it all on the fly? Above I have shown you the latter, and there is good reason to teach this first and use this method preferably. That said, there are advantages and disadvantages to both, as described below.</div> +<h4 class="subsubsection" id='magicparlabel-2745'><span class="subsubsection_label">6.10.1</span> Saving data </h4> +<div class="standard" id='magicparlabel-2746'><div id="subsec_saving_data"></div> In this case you run a grid and tag the initial parameters of each system of interest (i.e. the <math xmlns="http://www.w3.org/1998/Math/MathML"><mstyle mathvariant='sans-serif-italic' mathsize='85%'> <mrow> <msub subscriptshift="0.2ex"> @@ -3180,7 +3219,7 @@ In this case you run a grid and tag the initial parameters of each system of int </mrow></mstyle></math>). <em>You save these initial parameters into a large datafile </em>(possibly in a binary format)<em>.</em> The big advantage of this technique is that you can rerun the saved grid <em>from the datafile, </em>possibly<em> </em>without running <em><span class='math'>binary_c</i></span> </em> again, and with a different initial distribution function (e.g. initial mass function) or very slightly different physics (on the assumption that changing the physics will not change the systems which were saved). </div> -<div class="standard" id='magicparlabel-2722'>You could save, as well as the initial parameters of the systems, the time spent in the phase of interest, <math xmlns="http://www.w3.org/1998/Math/MathML"><mstyle mathvariant='sans-serif-italic' mathsize='85%'> +<div class="standard" id='magicparlabel-2747'>You could save, as well as the initial parameters of the systems, the time spent in the phase of interest, <math xmlns="http://www.w3.org/1998/Math/MathML"><mstyle mathvariant='sans-serif-italic' mathsize='85%'> <mrow> <mrow><mo> Δ </mo><mi>t</mi> </mrow> @@ -3204,7 +3243,7 @@ In this case you run a grid and tag the initial parameters of each system of int </mrow> </mrow></mstyle></math> which is your required “number of stars”. You can either </div> -<ol class="enumerate" id='magicparlabel-2723'><li class="enumerate_item">Change <math xmlns="http://www.w3.org/1998/Math/MathML"><mstyle mathvariant='sans-serif-italic' mathsize='85%'> +<ol class="enumerate" id='magicparlabel-2748'><li class="enumerate_item">Change <math xmlns="http://www.w3.org/1998/Math/MathML"><mstyle mathvariant='sans-serif-italic' mathsize='85%'> <mrow> <msub subscriptshift="0.2ex"> <mrow><mi>p</mi> @@ -3225,14 +3264,14 @@ In this case you run a grid and tag the initial parameters of each system of int </mrow></mstyle></math> and some physics, which requires rerunning of <span class='math'>binary_c</i></span> . This is slower, but still faster than running the full grid.</li> </ol> -<div class="standard" id='magicparlabel-2725'>Saving the progenitor data set is a very useful way of saving time after an initial high-resolution grid run.</div> +<div class="standard" id='magicparlabel-2750'>Saving the progenitor data set is a very useful way of saving time after an initial high-resolution grid run.</div> -<div class="standard" id='magicparlabel-2726'>You may want to consider converting your saved data from <span class="flex_software">ASCII</span> to binary format, particularly if you will be processing it repeatedly. This can save a lot of time, but it renders your data very difficult to read, and it is hard to make such code truly backwards compatible. If someone comes to look at your results in ten years' time, will you remember exactly what is going on? Sacrificing clarity for speed is not necessarily a good thing.</div> -<h4 class="subsubsection" id='magicparlabel-2731'><span class="subsubsection_label">6.10.2</span> On the fly data processing</h4> -<div class="standard" id='magicparlabel-2732'><div id="subsec_on_the_fly"></div> +<div class="standard" id='magicparlabel-2751'>You may want to consider converting your saved data from <span class="flex_software">ASCII</span> to binary format, particularly if you will be processing it repeatedly. This can save a lot of time, but it renders your data very difficult to read, and it is hard to make such code truly backwards compatible. If someone comes to look at your results in ten years' time, will you remember exactly what is going on? Sacrificing clarity for speed is not necessarily a good thing.</div> +<h4 class="subsubsection" id='magicparlabel-2756'><span class="subsubsection_label">6.10.2</span> On the fly data processing</h4> +<div class="standard" id='magicparlabel-2757'><div id="subsec_on_the_fly"></div> </div> -<div class="standard" id='magicparlabel-2733'>If you do not want to recalculate your answer with different initial functions, you might be better off calculating the results you require “on the fly”. This means you do your data processing <em>in your grid script</em>. The main advantages to this are speed and data storage. For example, if you have <math xmlns="http://www.w3.org/1998/Math/MathML"><mstyle mathvariant='sans-serif-italic' mathsize='85%'> +<div class="standard" id='magicparlabel-2758'>If you do not want to recalculate your answer with different initial functions, you might be better off calculating the results you require “on the fly”. This means you do your data processing <em>in your grid script</em>. The main advantages to this are speed and data storage. For example, if you have <math xmlns="http://www.w3.org/1998/Math/MathML"><mstyle mathvariant='sans-serif-italic' mathsize='85%'> <mrow> <mrow><mn>1</mn> <msup> @@ -3254,7 +3293,7 @@ In this case you run a grid and tag the initial parameters of each system of int </mrow> </mrow></mstyle></math> lines of data – this might be a lot of data.</div> -<div class="standard" id='magicparlabel-2734'>In some cases you <em>must</em> do this. If you are looking at data which is time dependent then you will have <math xmlns="http://www.w3.org/1998/Math/MathML"><mstyle mathvariant='sans-serif-italic' mathsize='85%'> +<div class="standard" id='magicparlabel-2759'>In some cases you <em>must</em> do this. If you are looking at data which is time dependent then you will have <math xmlns="http://www.w3.org/1998/Math/MathML"><mstyle mathvariant='sans-serif-italic' mathsize='85%'> <mrow> <mrow><mn>1</mn> <msup> @@ -3327,15 +3366,15 @@ In this case you run a grid and tag the initial parameters of each system of int </mrow></mstyle></math>. The time it takes to process all this data may be longer than the time to <em>rerun</em> <em><span class='math'>binary_c</i></span> </em>for each system, especially if your data storage is non-local (e.g. on an <em>NFS</em> (network) partition). </div> -<div class="standard" id='magicparlabel-2735'>You can save some space by outputting data every, say, Myr, but this may not be the time resolution you require to catch systems of interest.</div> +<div class="standard" id='magicparlabel-2760'>You can save some space by outputting data every, say, Myr, but this may not be the time resolution you require to catch systems of interest.</div> -<div class="standard" id='magicparlabel-2736'>You can increase the speed of your run by using the <span class="flex_programminglanguage">C</span> backend and setting <span class="flex_perlcode">return_array_refs</span> to <span class="flex_perlcode">1</span>.<br /> +<div class="standard" id='magicparlabel-2761'>You can increase the speed of your run by using the <span class="flex_programminglanguage">C</span> backend and setting <span class="flex_perlcode">return_array_refs</span> to <span class="flex_perlcode">1</span>.<br /> </div> -<h3 class="subsection" id='magicparlabel-2749'><span class="subsection_label">6.11</span> Flexigrid</h3> -<div class="standard" id='magicparlabel-2750'><div id="sec_flexigrid"></div> +<h3 class="subsection" id='magicparlabel-2774'><span class="subsection_label">6.11</span> Flexigrid</h3> +<div class="standard" id='magicparlabel-2775'><div id="sec_flexigrid"></div> As of summer 2011, the “flexi<em>grid</em>” was developed. This is an attempt to replace much of the old, rigid grid framework with a new, dynamic and flexible API. The key concepts are the following:</div> -<ul class="itemize" id='magicparlabel-2751'><li class="itemize_item">When a <em>flexigrid</em> is run, it sets up <math xmlns="http://www.w3.org/1998/Math/MathML"><mstyle mathvariant='sans-serif-italic' mathsize='85%'> +<ul class="itemize" id='magicparlabel-2776'><li class="itemize_item">When a <em>flexigrid</em> is run, it sets up <math xmlns="http://www.w3.org/1998/Math/MathML"><mstyle mathvariant='sans-serif-italic' mathsize='85%'> <mrow><mi>n</mi> </mrow></mstyle></math> concurrently running <em>threads</em>. Each of these is fed with stars until the population is complete. Because of this, <em>flexigrid</em> is designed specifically to work on the latest multi-core CPUs on shared-memory machines (which are the typical PCs of the early 21st century). It scales quite well if you use the <span class="flex_programminglanguage">C</span> backend, less well with the <em>Perl</em> backend on more than a few CPUs.</li> <li class="itemize_item"><em>Flexigrid</em> sets up its <math xmlns="http://www.w3.org/1998/Math/MathML"><mstyle mathvariant='sans-serif-italic' mathsize='85%'> @@ -3361,13 +3400,13 @@ As of summer 2011, the “flexi<em>grid</em>” was developed. This is a <li class="itemize_item">Probabilities are calculated more efficiently and flexibly by the <span class="flex_perlmodule">distribution_functions</span> module.</li> <li class="itemize_item">Grid spacings are calculated with the <span class="flex_perlmodule">spacing_functions</span> module.</li> </ul> -<h3 class="subsection" id='magicparlabel-2771'><span class="subsection_label">6.12</span> Setup in your grid script</h3> -<div class="standard" id='magicparlabel-2772'><div id="subsec_setup_grid_script"></div> +<h3 class="subsection" id='magicparlabel-2796'><span class="subsection_label">6.12</span> Setup in your grid script</h3> +<div class="standard" id='magicparlabel-2797'><div id="subsec_setup_grid_script"></div> </div> -<div class="standard" id='magicparlabel-2773'>You need to do a few things to define the variables which describe your grid. </div> -<h4 class="subsubsection" id='magicparlabel-2774'><span class="subsubsection_label">6.12.1</span> Grid variables: 1D example</h4> -<div class="standard" id='magicparlabel-2775'>Setting up which variables you use is best defined by example. Let's start with <math xmlns="http://www.w3.org/1998/Math/MathML"><mstyle mathvariant='sans-serif-italic' mathsize='85%'> +<div class="standard" id='magicparlabel-2798'>You need to do a few things to define the variables which describe your grid. </div> +<h4 class="subsubsection" id='magicparlabel-2799'><span class="subsubsection_label">6.12.1</span> Grid variables: 1D example</h4> +<div class="standard" id='magicparlabel-2800'>Setting up which variables you use is best defined by example. Let's start with <math xmlns="http://www.w3.org/1998/Math/MathML"><mstyle mathvariant='sans-serif-italic' mathsize='85%'> <mrow> <msub subscriptshift="0.2ex"> <mrow><mi>M</mi> @@ -3392,7 +3431,7 @@ Next, use your <em><span class='math'>\binarygrid</span> </div> -<div class="standard" id='magicparlabel-2788'><br /> +<div class="standard" id='magicparlabel-2813'><br /> <pre class ='listings Perl'> # Mass 1 my $mmin=0.1; my $mmax=80.0; @@ -3411,9 +3450,9 @@ Next, use your <em><span class='math'>\binarygrid</span> );</pre><br /> </div> -<div class="standard" id='magicparlabel-2808'>What does this mean?</div> +<div class="standard" id='magicparlabel-2833'>What does this mean?</div> -<ol class='lyxlist' id='magicparlabel-2809'><li class="labeling_item"><span class='lyxlist'>name string</span> +<ol class='lyxlist' id='magicparlabel-2834'><li class="labeling_item"><span class='lyxlist'>name string</span> This is the variable name. It should be parsable in <span class="flex_scriptinglanguage">Perl</span>, e.g. in the above case it is expanded to <span class="flex_perlcode">$lnm1</span> in the gridcode.</li> <li class="labeling_item"><span class='lyxlist'>longname string</span> This is a long (human-readable) name used in logging. It should contain no spaces (use underscores).</li> @@ -3466,11 +3505,11 @@ Next, use your <em><span class='math'>\binarygrid</span> <li class="labeling_item"><span class='lyxlist'>dphasevol expression</span> <em> </em>This defines the contribution to the phase volume of each stellar system from this variable. In general this is just <span class="flex_perlcode">$dlnm1</span> (i.e. should be <span class="flex_perlcode">$dname</span>) but you can set it to whatever you like. </li> </ol> -<h3 class="subsection" id='magicparlabel-2871'><span class="subsection_label">6.13</span> 3D grid example</h3> -<div class="standard" id='magicparlabel-2872'><div id="subsec_3d_grid_example"></div> +<h3 class="subsection" id='magicparlabel-2896'><span class="subsection_label">6.13</span> 3D grid example</h3> +<div class="standard" id='magicparlabel-2897'><div id="subsec_3d_grid_example"></div> </div> -<div class="standard" id='magicparlabel-2873'>The next step is to set up the further grid variables. Usually these are <math xmlns="http://www.w3.org/1998/Math/MathML"><mstyle mathvariant='sans-serif-italic' mathsize='85%'> +<div class="standard" id='magicparlabel-2898'>The next step is to set up the further grid variables. Usually these are <math xmlns="http://www.w3.org/1998/Math/MathML"><mstyle mathvariant='sans-serif-italic' mathsize='85%'> <mrow> <msub subscriptshift="0.2ex"> <mrow><mi>M</mi> @@ -3482,7 +3521,7 @@ Next, use your <em><span class='math'>\binarygrid</span> <mrow><mi>a</mi> </mrow></mstyle></math>, as defined in the code below.</div> -<div class="standard" id='magicparlabel-2874'><br /> +<div class="standard" id='magicparlabel-2899'><br /> <pre class ='listings Perl'> my $resolution = { m1 => 10, q => 10, @@ -3533,34 +3572,34 @@ my \$eccentricity = 0.0; 'dphasevol'=>'$dln10per' );</pre><br /> </div> -<h3 class="subsection" id='magicparlabel-2927'><span class="subsection_label">6.14</span> Viewing The (Automatically Generated) Gridcode </h3> -<div class="standard" id='magicparlabel-2928'><div id="subsec_viewing_the_gridcode"></div> +<h3 class="subsection" id='magicparlabel-2952'><span class="subsection_label">6.14</span> Viewing The (Automatically Generated) Gridcode </h3> +<div class="standard" id='magicparlabel-2953'><div id="subsec_viewing_the_gridcode"></div> </div> -<div class="standard" id='magicparlabel-2929'>When you evolve your <span class='math'>\binarygrid</span> +<div class="standard" id='magicparlabel-2954'>When you evolve your <span class='math'>\binarygrid</span> 2 object, the<span style='font-family:monospace;font-size: 18px;'> </span><span class="flex_perlcode">flexigrid</span> is run. First the grid code is generated, then this processed by <span class="flex_scriptinglanguage">Perl</span>'s <span class="flex_perlcode">eval()</span>.</div> -<div class="standard" id='magicparlabel-2942'>You can find the grid code in the file <span class="flex_file">/tmp/gridcode</span> where <span class="flex_file">/tmp</span> can be changed, e.g. with,<br /> +<div class="standard" id='magicparlabel-2967'>You can find the grid code in the file <span class="flex_file">/tmp/gridcode</span> where <span class="flex_file">/tmp</span> can be changed, e.g. with,<br /> <pre class ='listings Perl'>$population->set(tmp=>”/directory/of/your/choice”);</pre><br /> </div> -<h3 class="subsection" id='magicparlabel-2955'><span class="subsection_label">6.15</span> Error handling</h3> -<div class="standard" id='magicparlabel-2956'><div id="subsec_flexigrid_error_handling"></div> +<h3 class="subsection" id='magicparlabel-2980'><span class="subsection_label">6.15</span> Error handling</h3> +<div class="standard" id='magicparlabel-2981'><div id="subsec_flexigrid_error_handling"></div> </div> -<div class="standard" id='magicparlabel-2957'>Things do go wrong. Usually when this happens, the threads will be shut down and your grid script will exit, telling you as much as it can about the error. </div> +<div class="standard" id='magicparlabel-2982'>Things do go wrong. Usually when this happens, the threads will be shut down and your grid script will exit, telling you as much as it can about the error. </div> -<div class="standard" id='magicparlabel-2958'>When running with the <span class="flex_programminglanguage">C</span> backend, the grid will crash. If you have built <span class="flex_file"><i>libbinary_c.so</i></span> with debugging (e.g. <span class="flex_command">configure debug</span>) you should see a stack trace so that you can debug the crash. With the <span class="flex_scriptinglanguage">Perl</span> backend this is more difficult, but you should see an error message. Beware that if the <span class="flex_scriptinglanguage">Perl</span> backend crashes at the wrong place, there may be zombie processes hanging around, or worse: processes that eat your CPU time. Please check for these when testing your code! </div> -<h3 class="subsection" id='magicparlabel-2979'><span class="subsection_label">6.16</span> Flexigrid variable options</h3> -<div class="standard" id='magicparlabel-2980'><div id="subsec_flexigrid_variable_options"></div> +<div class="standard" id='magicparlabel-2983'>When running with the <span class="flex_programminglanguage">C</span> backend, the grid will crash. If you have built <span class="flex_file"><i>libbinary_c.so</i></span> with debugging (e.g. <span class="flex_command">configure debug</span>) you should see a stack trace so that you can debug the crash. With the <span class="flex_scriptinglanguage">Perl</span> backend this is more difficult, but you should see an error message. Beware that if the <span class="flex_scriptinglanguage">Perl</span> backend crashes at the wrong place, there may be zombie processes hanging around, or worse: processes that eat your CPU time. Please check for these when testing your code! </div> +<h3 class="subsection" id='magicparlabel-3004'><span class="subsection_label">6.16</span> Flexigrid variable options</h3> +<div class="standard" id='magicparlabel-3005'><div id="subsec_flexigrid_variable_options"></div> </div> -<div class="standard" id='magicparlabel-2981'><b>FIXME! This is out of date.</b></div> +<div class="standard" id='magicparlabel-3006'><b>FIXME! This is out of date.</b></div> -<div class="standard" id='magicparlabel-2982'>Note that any <em>code</em> is executed in the context of the flexigrid <span class="flex_perlcode">eval</span> call, so you should prepend calls to subroutines with <span class="flex_perlmodule">main::</span> or <span class="flex_perlmodule">module_name::</span> or, if they are part of <span class='math'>\binarygrid</span> +<div class="standard" id='magicparlabel-3007'>Note that any <em>code</em> is executed in the context of the flexigrid <span class="flex_perlcode">eval</span> call, so you should prepend calls to subroutines with <span class="flex_perlmodule">main::</span> or <span class="flex_perlmodule">module_name::</span> or, if they are part of <span class='math'>\binarygrid</span> 2, <span class="flex_perlcode">$self</span> to access them through the <span class='math'>\binarygrid</span> 2 object.</div> -<ol class='lyxlist' id='magicparlabel-2999'><li class="labeling_item"><span class='lyxlist'>condition code</span> +<ol class='lyxlist' id='magicparlabel-3024'><li class="labeling_item"><span class='lyxlist'>condition code</span> The loop is executed only if <em>condition</em> is true. </li> <li class="labeling_item"><span class='lyxlist'>dphasevol expression</span> <em> </em>This defines the contribution to the phase volume from this variable.</li> @@ -3591,15 +3630,15 @@ my \$eccentricity = 0.0; <li class="labeling_item"><span class='lyxlist'>spacingfunc func</span> <em> </em>This defines the spacing function which should be in the <span class="flex_perlmodule">spacing_functions</span> Perl module. </li> </ol> -<div class="standard" id='magicparlabel-3025'><br /> +<div class="standard" id='magicparlabel-3050'><br /> </div> -<h3 class="subsection" id='magicparlabel-3026'><span class="subsection_label">6.17</span> Flexigrid loop structure</h3> -<div class="standard" id='magicparlabel-3027'><div id="subsec_flexigrid_loop_structure"></div> +<h3 class="subsection" id='magicparlabel-3051'><span class="subsection_label">6.17</span> Flexigrid loop structure</h3> +<div class="standard" id='magicparlabel-3052'><div id="subsec_flexigrid_loop_structure"></div> </div> -<div class="standard" id='magicparlabel-3028'>Each loop is logically structured as follows:</div> +<div class="standard" id='magicparlabel-3053'>Each loop is logically structured as follows:</div> -<ul class="itemize" id='magicparlabel-3029'><li class="itemize_item">setup <span class="flex_perlcode">%fvar</span> (min, max, initial grid spacing <math xmlns="http://www.w3.org/1998/Math/MathML"><mstyle mathvariant='sans-serif-italic' mathsize='85%'> +<ul class="itemize" id='magicparlabel-3054'><li class="itemize_item">setup <span class="flex_perlcode">%fvar</span> (min, max, initial grid spacing <math xmlns="http://www.w3.org/1998/Math/MathML"><mstyle mathvariant='sans-serif-italic' mathsize='85%'> <mrow><mi> δ </mi> </mrow></mstyle></math> from the <em>spacing_functions, </em>type=<em>grid</em> or <em>edge</em>)</li> <li class="itemize_item">calculate the resolution (with an <span class="flex_perlcode">eval</span><em> </em>call)</li> @@ -3629,28 +3668,28 @@ my \$eccentricity = 0.0; <li class="itemize_item"><span style='font-family:monospace;font-size: 18px;'>}</span> (close the loop)</li> <li class="itemize_item">execute <span class="flex_perlcode">postloopcode</span></li> </ul> -<div class="standard" id='magicparlabel-3084'>Only the innermost loop contains the calls to push commands onto the thread queue.</div> +<div class="standard" id='magicparlabel-3109'>Only the innermost loop contains the calls to push commands onto the thread queue.</div> -<div class="standard" id='magicparlabel-3085'><br /> +<div class="standard" id='magicparlabel-3110'><br /> </div> -<h3 class="subsection" id='magicparlabel-3086'><span class="subsection_label">6.18</span> <i>binary_grid</i> with <em>HTCondor<div id="sec_Working_with_HTCondor"></div> +<h3 class="subsection" id='magicparlabel-3111'><span class="subsection_label">6.18</span> <i>binary_grid</i> with <em>HTCondor<div id="sec_Working_with_HTCondor"></div> </em></h3> -<div class="standard" id='magicparlabel-3087'>The <span class="flex_software">HTCondor</span> system allows you to distribute your computing of stellar populations over many PCs and hence greatly increase your available computing power. In the following we define the following terms:</div> +<div class="standard" id='magicparlabel-3112'>The <span class="flex_software">HTCondor</span> system allows you to distribute your computing of stellar populations over many PCs and hence greatly increase your available computing power. In the following we define the following terms:</div> -<dl class='description' id='magicparlabel-3092'><dt class="description_label">Launching</dt> +<dl class='description' id='magicparlabel-3117'><dt class="description_label">Launching</dt> <dd class="description_item"> jobs means sending a grid of stars to be run on a remote PC by submitting an <span class="flex_software">HTCondor</span> script.</dd> <dt class="description_label">Joining</dt> <dd class="description_item"> jobs means taking all the data that you have generated on remote PCs and making your final dataset. By default, <em><span class='math'>\binarygrid</span> </em> tries to join the data when all the jobs have finished. However, this places a considerable load on the machine in question (often far greater, especially in terms of memory, than running a single job). You may want to load a local machine, or one which has faster access to the data store (e.g. if it is an <em>NFS </em>mountpoint). Use the <span class="flex_perlcode">condor_postpone_join</span><span style='font-family:monospace;font-size: 18px;'> </span>variable to postpone the join in this manner (see below).</dd> </dl> -<ul class="itemize" id='magicparlabel-3102'><li class="itemize_item">You need to decide how many condor jobs to run (<span class="flex_perlcode">condor_njobs</span>). This is a tradeoff between how many <em>HTCondor</em> slots you have available (probably this is the number of cores you have available on your PCs), how much disk space you want to take up, and how long you would like to wait in the joining process (which scales linearly with the number of jobs). In general, joining is fast compared to running large stellar populations, so the joining is irrelevant. Thus, you want to set this to the number of slots available, unless there is some limit set by your administrator, or you are short of disk space (the amount of disk space you require is linear in the number of slots you use).</li> +<ul class="itemize" id='magicparlabel-3127'><li class="itemize_item">You need to decide how many condor jobs to run (<span class="flex_perlcode">condor_njobs</span>). This is a tradeoff between how many <em>HTCondor</em> slots you have available (probably this is the number of cores you have available on your PCs), how much disk space you want to take up, and how long you would like to wait in the joining process (which scales linearly with the number of jobs). In general, joining is fast compared to running large stellar populations, so the joining is irrelevant. Thus, you want to set this to the number of slots available, unless there is some limit set by your administrator, or you are short of disk space (the amount of disk space you require is linear in the number of slots you use).</li> <li class="itemize_item">You will need to set a <span class="flex_perlcode">condor_dir</span> directory which stores the <span class="flex_software">HTCondor</span> scripts, logs, <span class="flex_cvar">stdout</span>, <span class="flex_cvar">stderr</span>, status and the data which is to be joined. This directory must be accessible to <em>all the compute nodes </em>(e.g. mounted as an <em>NFS</em> partition).</li> <li class="itemize_item">The data that is to be joined is stored in your <span class="flex_perlcode">condor_dir</span> directory. There are <span class="flex_perlcode">condor_njobs</span> of these files, one for each job. Together they contain your raw population data (prior to <span style='font-family:monospace;font-size: 18px;'>output()</span> being called).</li> <li class="itemize_item">The generated scripts are actually called from wrapper scripts (appended with <span class="flex_file">.wrap</span>) which catch errors. See below for more details.</li> </ul> -<dl class='description' id='magicparlabel-3138'><dt class="description_label">Binary_c</dt> +<dl class='description' id='magicparlabel-3163'><dt class="description_label">Binary_c</dt> <dd class="description_item"> You should configure <span class='math'>binary_c</i></span> to use generic flags by running,<br /> <pre class\s*='listings bash'>$ ./configure generic</pre><br /> @@ -3664,9 +3703,9 @@ You will need to completely rebuild <span class='math'>binary_c</i></span> .so on the <span class="flex_software">HTCondor</span> submission machine after setting <span class="flex_envvar">ARCHFLAGS</span> and (perhaps) each time you change <span class='math'>binary_c</i></span> . If you do not, you will suffer from (seemingly random) segmentation faults.</dd> </dl> -<div class="standard" id='magicparlabel-3159'>Other parameters include:</div> +<div class="standard" id='magicparlabel-3184'>Other parameters include:</div> -<dl class='description' id='magicparlabel-3160'><dt class="description_label">condor_memory</dt> +<dl class='description' id='magicparlabel-3185'><dt class="description_label">condor_memory</dt> <dd class="description_item"> The amount of RAM allocated to your run. Since each job uses only one CPU at a time, this is generally small (less than 1GB) however there may be occasions where you require more.</dd> <dt class="description_label">condor_universe</dt> <dd class="description_item"> This must be <span class="flex_args">vanilla</span>. I have not tried to compile all the required tools using <span class="flex_software">HTCondor</span>'s compiler.</dd> @@ -3690,17 +3729,17 @@ Other, less common, options are <span class="flex_perlcode">join_datafiles</span <dt class="description_label">condor_resubmit_finished</dt> <dd class="description_item"> Please see section <a href="#subsec_Rerunning_your_jobs">6.18.4</a>.</dd> </dl> -<h4 class="subsubsection" id='magicparlabel-3226'><span class="subsubsection_label">6.18.1</span> Modifying your grid script for HTCondor<div id="subsec_Modifying_your_grid"></div> +<h4 class="subsubsection" id='magicparlabel-3251'><span class="subsubsection_label">6.18.1</span> Modifying your grid script for HTCondor<div id="subsec_Modifying_your_grid"></div> </h4> -<div class="standard" id='magicparlabel-3227'>You need to:</div> +<div class="standard" id='magicparlabel-3252'>You need to:</div> -<ol class="enumerate" id='magicparlabel-3228'><li class="enumerate_item">load in the <span class="flex_perlmodule">binary_grid::condor</span> module</li> +<ol class="enumerate" id='magicparlabel-3253'><li class="enumerate_item">load in the <span class="flex_perlmodule">binary_grid::condor</span> module</li> <li class="enumerate_item">set some parameters and </li> <li class="enumerate_item">modify the call to your <span style='font-family:monospace;font-size: 18px;'>output</span> function. </li> </ol> -<div class="standard" id='magicparlabel-3235'>The following is a basic example.</div> +<div class="standard" id='magicparlabel-3260'>The following is a basic example.</div> -<div class="standard" id='magicparlabel-3236'><br /> +<div class="standard" id='magicparlabel-3261'><br /> <pre class ='listings Perl'>#!/usr/bin/env perl use strict; # recommended use 5.16.0; # recommended @@ -3743,29 +3782,29 @@ output($population) if($population->output_allowed()); # the rest of the script remains unchanged </pre><br /> </div> -<h4 class="subsubsection" id='magicparlabel-3281'><span class="subsubsection_label">6.18.2</span> Launching your jobs<div id="subsec_Launching_your_jobs"></div> +<h4 class="subsubsection" id='magicparlabel-3306'><span class="subsubsection_label">6.18.2</span> Launching your jobs<div id="subsec_Launching_your_jobs"></div> </h4> -<div class="standard" id='magicparlabel-3282'>Once your grid script is modified, you just have to run it on a PC which is allowed to submit jobs using <span class="flex_perlcode">condor_submit</span>. </div> +<div class="standard" id='magicparlabel-3307'>Once your grid script is modified, you just have to run it on a PC which is allowed to submit jobs using <span class="flex_perlcode">condor_submit</span>. </div> -<div class="standard" id='magicparlabel-3287'>If you want the script to sometimes run condor (e.g. if you are on the condor submit machine), and sometimes not (e.g. you are on your personal PC or laptop), set <span class="flex_args">condor=>0</span> in the above example, and run with <span class="flex_args">condor=1</span> as an argument <em>only </em>on the condor submit machine.</div> +<div class="standard" id='magicparlabel-3312'>If you want the script to sometimes run condor (e.g. if you are on the condor submit machine), and sometimes not (e.g. you are on your personal PC or laptop), set <span class="flex_args">condor=>0</span> in the above example, and run with <span class="flex_args">condor=1</span> as an argument <em>only </em>on the condor submit machine.</div> -<div class="standard" id='magicparlabel-3296'><br /> +<div class="standard" id='magicparlabel-3321'><br /> <pre class\s*='listings bash'>$ mygridscript.pl condor=1</pre><br /> </div> -<h4 class="subsubsection_" id='magicparlabel-3301'>Job IDs<div id="subsec_Job_IDs"></div> +<h4 class="subsubsection_" id='magicparlabel-3326'>Job IDs<div id="subsec_Job_IDs"></div> </h4> -<div class="standard" id='magicparlabel-3302'>Each job is given an ID string, <span style='font-family:monospace;font-size: 18px;'>x.y</span>, where <span style='font-family:monospace;font-size: 18px;'>x</span> is a counter which ranges from <span style='font-family:monospace;font-size: 18px;'>0</span> to <span style='font-family:monospace;font-size: 18px;'>y-1</span>, where <span style='font-family:monospace;font-size: 18px;'>y</span> is the number of jobs to be launched (<span class="flex_args">condor_njobs</span>). The files in the various subdirectories that control your jobs are named <span style='font-family:monospace;font-size: 18px;'>x.y</span>. </div> +<div class="standard" id='magicparlabel-3327'>Each job is given an ID string, <span style='font-family:monospace;font-size: 18px;'>x.y</span>, where <span style='font-family:monospace;font-size: 18px;'>x</span> is a counter which ranges from <span style='font-family:monospace;font-size: 18px;'>0</span> to <span style='font-family:monospace;font-size: 18px;'>y-1</span>, where <span style='font-family:monospace;font-size: 18px;'>y</span> is the number of jobs to be launched (<span class="flex_args">condor_njobs</span>). The files in the various subdirectories that control your jobs are named <span style='font-family:monospace;font-size: 18px;'>x.y</span>. </div> -<div class="standard" id='magicparlabel-3307'>Please note: <b>if you change </b><span class="flex_perlcode">condor_njobs</span><b> or </b><span class="flex_perlcode">condor_dir</span><b> then you are also changing your job IDs. If you make changes to these variables and then try to join your data after postponing the join, things will break.</b> Please see Section <a href="#subsec_Joining_your_jobs">6.18.5</a>.</div> -<h4 class="subsubsection" id='magicparlabel-3316'><span class="subsubsection_label">6.18.3</span> Status of your jobs<div id="subsec_Status_of_your_jobs"></div> +<div class="standard" id='magicparlabel-3332'>Please note: <b>if you change </b><span class="flex_perlcode">condor_njobs</span><b> or </b><span class="flex_perlcode">condor_dir</span><b> then you are also changing your job IDs. If you make changes to these variables and then try to join your data after postponing the join, things will break.</b> Please see Section <a href="#subsec_Joining_your_jobs">6.18.5</a>.</div> +<h4 class="subsubsection" id='magicparlabel-3341'><span class="subsubsection_label">6.18.3</span> Status of your jobs<div id="subsec_Status_of_your_jobs"></div> </h4> -<ul class="itemize" id='magicparlabel-3317'><li class="itemize_item">You can use the <span class="flex_command">condor_q</span> command and its various options to enquire about the status of your jobs.</li> +<ul class="itemize" id='magicparlabel-3342'><li class="itemize_item">You can use the <span class="flex_command">condor_q</span> command and its various options to enquire about the status of your jobs.</li> <li class="itemize_item">You can also use the <span class="flex_file">condor_dir/status</span> files which are used by <span class='math'>\binarygrid</span> to monitor the status of your jobs. These have the values:</li> </ul> -<dl class='description' id='magicparlabel-3327'><dt class="description_label">submitted</dt> +<dl class='description' id='magicparlabel-3352'><dt class="description_label">submitted</dt> <dd class="description_item"> The job is submitted and will (hopefully) soon be run.</dd> <dt class="description_label">running</dt> <dd class="description_item"> The job is currently running (and a crash has not been detected).</dd> @@ -3774,11 +3813,11 @@ output($population) if($population->output_allowed()); <dt class="description_label">crash n</dt> <dd class="description_item"> The job crashed with exit code <em>n.</em></dd> </dl> -<h4 class="subsubsection" id='magicparlabel-3331'><span class="subsubsection_label">6.18.4</span> Rerunning your jobs<div id="subsec_Rerunning_your_jobs"></div> +<h4 class="subsubsection" id='magicparlabel-3356'><span class="subsubsection_label">6.18.4</span> Rerunning your jobs<div id="subsec_Rerunning_your_jobs"></div> </h4> -<div class="standard" id='magicparlabel-3332'>Sometimes you would like to rerun your jobs, especially if some of them fail to run and you later fix the bug. Four variables allow you to restart a job, depending on its current status.</div> +<div class="standard" id='magicparlabel-3357'>Sometimes you would like to rerun your jobs, especially if some of them fail to run and you later fix the bug. Four variables allow you to restart a job, depending on its current status.</div> -<dl class='description' id='magicparlabel-3333'><dt class="description_label">condor_resubmit_submitted</dt> +<dl class='description' id='magicparlabel-3358'><dt class="description_label">condor_resubmit_submitted</dt> <dd class="description_item"> If this is <span style='font-family:monospace;font-size: 18px;'>1</span> and a job status is <span style='font-family:monospace;font-size: 18px;'>submitted</span>, it is resubmitted. </dd> <dt class="description_label">condor_resubmit_running</dt> <dd class="description_item"> If this is <span style='font-family:monospace;font-size: 18px;'>1</span> and a job status is <span style='font-family:monospace;font-size: 18px;'>running</span>, it is resubmitted.</dd> @@ -3787,27 +3826,27 @@ output($population) if($population->output_allowed()); <dt class="description_label">condor_resubmit_finished</dt> <dd class="description_item"> If this is <span style='font-family:monospace;font-size: 18px;'>1</span> and a job status is <span style='font-family:monospace;font-size: 18px;'>finished</span>, it is resubmitted.</dd> </dl> -<div class="standard" id='magicparlabel-3337'>By default, all the <span class="flex_perlcode">condor_resubmit_*</span> variables are <span style='font-family:monospace;font-size: 18px;'>0</span>, so jobs that have already been started are not resubmitted.</div> -<h4 class="subsubsection" id='magicparlabel-3342'><span class="subsubsection_label">6.18.5</span> Joining your jobs<div id="subsec_Joining_your_jobs"></div> +<div class="standard" id='magicparlabel-3362'>By default, all the <span class="flex_perlcode">condor_resubmit_*</span> variables are <span style='font-family:monospace;font-size: 18px;'>0</span>, so jobs that have already been started are not resubmitted.</div> +<h4 class="subsubsection" id='magicparlabel-3367'><span class="subsubsection_label">6.18.5</span> Joining your jobs<div id="subsec_Joining_your_jobs"></div> </h4> -<div class="standard" id='magicparlabel-3343'>If you postponed the join of your jobs with <span class="flex_perlcode">condor_postpone_join</span> set to <span class="flex_perlcode">1</span>, you have to join them in order to finish your population calculations. You can either:</div> +<div class="standard" id='magicparlabel-3368'>If you postponed the join of your jobs with <span class="flex_perlcode">condor_postpone_join</span> set to <span class="flex_perlcode">1</span>, you have to join them in order to finish your population calculations. You can either:</div> -<ul class="itemize" id='magicparlabel-3352'><li class="itemize_item">Rerun your script with <span class="flex_args">condor_command=join</span> appended to the command line. This automatically locates the list of files require, joins them and calls <span class="flex_perlcode">output()</span>. This is the simplest, and recommended, way to do it.</li> +<ul class="itemize" id='magicparlabel-3377'><li class="itemize_item">Rerun your script with <span class="flex_args">condor_command=join</span> appended to the command line. This automatically locates the list of files require, joins them and calls <span class="flex_perlcode">output()</span>. This is the simplest, and recommended, way to do it.</li> <li class="itemize_item">Locate the <span class="flex_file">condor_dir/scripts/joincmd</span> file and run the command in it to join the data and call <span class="flex_perlcode">output()</span>.</li> </ul> -<div class="standard" id='magicparlabel-3370'>You <b>must not change</b> <span class="flex_perlcode">condor_njobs</span><b> or <span style='font-family:monospace;font-size: 18px;'>condor_dir </span>prior to joining your jobs</b>. This is because these variables are used to construct job IDs. See section <a href="#subsec_Job_IDs">6.18.2</a> for more details.</div> -<h4 class="subsubsection" id='magicparlabel-3375'><span class="subsubsection_label">6.18.6</span> Debugging <em>HTCondor</em> jobs<div id="subsec_Debugging_HTCondor_jobs"></div> +<div class="standard" id='magicparlabel-3395'>You <b>must not change</b> <span class="flex_perlcode">condor_njobs</span><b> or <span style='font-family:monospace;font-size: 18px;'>condor_dir </span>prior to joining your jobs</b>. This is because these variables are used to construct job IDs. See section <a href="#subsec_Job_IDs">6.18.2</a> for more details.</div> +<h4 class="subsubsection" id='magicparlabel-3400'><span class="subsubsection_label">6.18.6</span> Debugging <em>HTCondor</em> jobs<div id="subsec_Debugging_HTCondor_jobs"></div> </h4> -<div class="standard" id='magicparlabel-3376'>All the <span class="flex_software">HTCondor</span> logs, <span class="flex_cvar">stdout</span> and <span class="flex_cvar">stderr</span> from your jobs are stored in the <span class="flex_file">condor_dir</span>. I cannot guide you on how <span class="flex_software">HTCondor</span> works or what its error codes mean, I suggest you look at their website for these instructions. However, you can check the log files to see whether a job that has stopped has crashed (as opposed to having been <em>evicted</em>). </div> +<div class="standard" id='magicparlabel-3401'>All the <span class="flex_software">HTCondor</span> logs, <span class="flex_cvar">stdout</span> and <span class="flex_cvar">stderr</span> from your jobs are stored in the <span class="flex_file">condor_dir</span>. I cannot guide you on how <span class="flex_software">HTCondor</span> works or what its error codes mean, I suggest you look at their website for these instructions. However, you can check the log files to see whether a job that has stopped has crashed (as opposed to having been <em>evicted</em>). </div> -<div class="standard" id='magicparlabel-3397'>When a job crashes and the crash has been caught by<em> </em><span class='math'>\binarygrid</span> +<div class="standard" id='magicparlabel-3422'>When a job crashes and the crash has been caught by<em> </em><span class='math'>\binarygrid</span> 's wrapper script (this is usually the case), its status file contains crashed <em>n</em> where <em>n</em> is the crashed exit code from <span class='math'>binary_c</i></span> .</div> -<h4 class="subsubsection" id='magicparlabel-3398'><span class="subsubsection_label">6.18.7</span> “Random” segmentation faults (segfaults)</h4> -<div class="standard" id='magicparlabel-3399'>Sometimes you may find that the grid does not start. This looks like a random segmentation fault (such faults are almost never random). The most common cause is that your <span class='math'>\binarygrid</span> +<h4 class="subsubsection" id='magicparlabel-3423'><span class="subsubsection_label">6.18.7</span> “Random” segmentation faults (segfaults)</h4> +<div class="standard" id='magicparlabel-3424'>Sometimes you may find that the grid does not start. This looks like a random segmentation fault (such faults are almost never random). The most common cause is that your <span class='math'>\binarygrid</span> <span class="flex_scriptinglanguage">Perl</span> module must be reinstalled after you recompile <span class="flex_file"><i>libbinary_c.so</i></span>.</div> -<ul class="itemize" id='magicparlabel-3408'><li class="itemize_item">Recompile <span style='font-family:monospace;font-size: 18px;'><span class='math'>libbinary_c</i></span> +<ul class="itemize" id='magicparlabel-3433'><li class="itemize_item">Recompile <span style='font-family:monospace;font-size: 18px;'><span class='math'>libbinary_c</i></span> : <br /> @@ -3822,11 +3861,11 @@ output($population) if($population->output_allowed()); <pre class\s*='listings bash'>$ cpanm <i>binary_grid</i> --force -v</pre><br /> </li> </ul> -<h4 class="subsubsection" id='magicparlabel-3418'><span class="subsubsection_label">6.18.8</span> <span style='font-family:monospace;font-size: 18px;'>SIGILL</span> – Error code 4</h4> -<div class="standard" id='magicparlabel-3419'>If you find “Error code 4”, a <span class="flex_cvar">SIGILL</span>, is occurring, then you have a problem because it turns out that your build of either <span class='math'>libbinary_c</i></span>, <em><span class='math'>binary_c</i></span> +<h4 class="subsubsection" id='magicparlabel-3443'><span class="subsubsection_label">6.18.8</span> <span style='font-family:monospace;font-size: 18px;'>SIGILL</span> – Error code 4</h4> +<div class="standard" id='magicparlabel-3444'>If you find “Error code 4”, a <span class="flex_cvar">SIGILL</span>, is occurring, then you have a problem because it turns out that your build of either <span class='math'>libbinary_c</i></span>, <em><span class='math'>binary_c</i></span> </em> or <span class="flex_scriptinglanguage">Perl</span> (and its modules) is incompatible with the architecture on one of your slots. This problem can overcome by:</div> -<ul class="itemize" id='magicparlabel-3428'><li class="itemize_item">Setting the <span class="flex_envvar">ARCHFLAGS</span> environment variable, e.g. +<ul class="itemize" id='magicparlabel-3453'><li class="itemize_item">Setting the <span class="flex_envvar">ARCHFLAGS</span> environment variable, e.g. <br /> <br /> @@ -3837,34 +3876,34 @@ then run <br /> .</li> <li class="itemize_item">Replacing the <span class="flex_args">mtune</span> and <span class="flex_args">march</span> flags in your <span class="flex_software">Perlbrew</span> build with the above “generic” flags. To do this: -<ul class="itemize" id='magicparlabel-3454'><li class="itemize_item">Move (or remove) your <span class="flex_file">perlbrew</span><em> </em>and <span class="flex_file">perl5</span><em> </em>directories. </li> +<ul class="itemize" id='magicparlabel-3479'><li class="itemize_item">Move (or remove) your <span class="flex_file">perlbrew</span><em> </em>and <span class="flex_file">perl5</span><em> </em>directories. </li> <li class="itemize_item">Reinstall <span class="flex_scriptinglanguage">Perl</span> and <em><b>all</b></em> its modules. </li> <li class="itemize_item">If in doubt, check that the <span class="flex_perlmodule">binary_grid::C</span> module has the generic flags set rather than anything else. (If you are reading this documentation, then your version is fixed.)</li> </ul> </li></ul> -<div class="standard" id='magicparlabel-3473'>Note that using the above flags slows <span class='math'>binary_c</i></span> +<div class="standard" id='magicparlabel-3498'>Note that using the above flags slows <span class='math'>binary_c</i></span> but hopefully not by too much.</div> -<h4 class="subsubsection" id='magicparlabel-3474'><span class="subsubsection_label">6.18.9</span> Timeouts</h4> -<div class="standard" id='magicparlabel-3475'><em><span class='math'>binary_c</i></span> +<h4 class="subsubsection" id='magicparlabel-3499'><span class="subsubsection_label">6.18.9</span> Timeouts</h4> +<div class="standard" id='magicparlabel-3500'><em><span class='math'>binary_c</i></span> </em>automatically stops if <span class="flex_cmacro">TIMEOUT_SECONDS</span> (defined in <em><span class="flex_file">code_options.h</span></em>) have passed without a call to the <span class="flex_cfunction">reset_timeout()</span> function. This may happen if the host machine locks up for some reason, or if the network fails to write a file. There is not much I can do about this, but you could always set <span class="flex_cmacro">TIMEOUT_SECONDS</span> to <span class="flex_cmacro">0</span>, or comment out <span class="flex_cvar">CATCH_SIGVTALRM</span>. You will have to rebuild <span class='math'>libbinary_c</i></span> /<span class='math'>binary_c</i></span> if you do this.</div> -<h4 class="subsubsection_" id='magicparlabel-3500'>Checkpointing<div id="subsec_Checkpointing"></div> +<h4 class="subsubsection_" id='magicparlabel-3525'>Checkpointing<div id="subsec_Checkpointing"></div> </h4> -<div class="standard" id='magicparlabel-3501'>At one point there was an option to stop and start <span class='math'>\binarygrid</span>, however this has not been used in a long time. Because your jobs are running in the <em>vanilla</em> universe, they cannot be checkpointed by <span class="flex_software">HTCondor</span>. This might be considered a disadvantage, and annoying because checkpointing is one of the big features of <span class="flex_software">HTCondor</span>. However, I would disagree with this assessment. Your jobs will, if split onto enough PCs, not (each) take long to run. This means that should the <span class="flex_software">HTCondor</span> grid go down (e.g. there is a power cut) you can simply restart when it is up and your runtime will be delayed only by as long as one script takes to run (typically an hour or two if you have not too many stars in your population and you have plenty of compute machines). This is probably less time than your power cut. It is simply not worth my while programming in more features to deal with such a situation when the solution is so cheap.</div> +<div class="standard" id='magicparlabel-3526'>At one point there was an option to stop and start <span class='math'>\binarygrid</span>, however this has not been used in a long time. Because your jobs are running in the <em>vanilla</em> universe, they cannot be checkpointed by <span class="flex_software">HTCondor</span>. This might be considered a disadvantage, and annoying because checkpointing is one of the big features of <span class="flex_software">HTCondor</span>. However, I would disagree with this assessment. Your jobs will, if split onto enough PCs, not (each) take long to run. This means that should the <span class="flex_software">HTCondor</span> grid go down (e.g. there is a power cut) you can simply restart when it is up and your runtime will be delayed only by as long as one script takes to run (typically an hour or two if you have not too many stars in your population and you have plenty of compute machines). This is probably less time than your power cut. It is simply not worth my while programming in more features to deal with such a situation when the solution is so cheap.</div> -<div class="standard" id='magicparlabel-3514'><br /> +<div class="standard" id='magicparlabel-3539'><br /> </div> -<h3 class="subsection" id='magicparlabel-3515'><span class="subsection_label">6.19</span> Binary_grid with <em>slurm<div id="sec_Working_with_slurm"></div> +<h3 class="subsection" id='magicparlabel-3540'><span class="subsection_label">6.19</span> Binary_grid with <em>slurm<div id="sec_Working_with_slurm"></div> </em></h3> -<div class="standard" id='magicparlabel-3516'><span class="flex_software">Slurm</span> is a distributed computing system similar to <span class="flex_software">HTCondor</span>. <em><span class='math'>\binarygrid</span> +<div class="standard" id='magicparlabel-3541'><span class="flex_software">Slurm</span> is a distributed computing system similar to <span class="flex_software">HTCondor</span>. <em><span class='math'>\binarygrid</span> </em>2 has a dedicated <span class="flex_software">slurm</span> module which you can load simply with:<br /> <pre class ='listings Perl'>use binary_grid2; use binary_grid::C; use binary_grid::slurm;</pre><br /> </div> -<div class="standard" id='magicparlabel-3535'>After setting up your population as usual, just insert some <em><span class="flex_software">slurm</span></em>-specific parameters<br /> +<div class="standard" id='magicparlabel-3560'>After setting up your population as usual, just insert some <em><span class="flex_software">slurm</span></em>-specific parameters<br /> <pre class ='listings Perl'># set up slurm $population->set( slurm=>1, # use slurm if 1 @@ -3880,21 +3919,21 @@ $population->set( );</pre><br /> </div> -<div class="standard" id='magicparlabel-3556'>Hopefully the options are obvious, but you will need to set them all.</div> +<div class="standard" id='magicparlabel-3581'>Hopefully the options are obvious, but you will need to set them all.</div> -<ul class="itemize" id='magicparlabel-3557'><li class="itemize_item">The <span class="flex_perlcode">slurm_dir</span> is a space that needs to be writable by all the nodes of your <span class="flex_software">slurm</span> setup. The <em>partition</em> is a queue name which you will have to find out from your local <span class="flex_software">slurm</span> setup (e.g. with <span class="flex_command">sinfo</span> or <em><span class="flex_command">squeue</span></em>). The <em>jobname</em> should be set to something sensible so you can identify your jobs.</li> +<ul class="itemize" id='magicparlabel-3582'><li class="itemize_item">The <span class="flex_perlcode">slurm_dir</span> is a space that needs to be writable by all the nodes of your <span class="flex_software">slurm</span> setup. The <em>partition</em> is a queue name which you will have to find out from your local <span class="flex_software">slurm</span> setup (e.g. with <span class="flex_command">sinfo</span> or <em><span class="flex_command">squeue</span></em>). The <em>jobname</em> should be set to something sensible so you can identify your jobs.</li> <li class="itemize_item"><span class="flex_perlcode">slurm_time</span> is the maximum time your job has to run (<span class="flex_perlcode">0</span> means infinite).</li> <li class="itemize_item"><span class="flex_perlcode">slurm_use_all_node_CPUs</span> should be set to <span class="flex_perlcode">1</span> if you are running the default setup where each <span class="flex_software">slurm</span> job gets a single node and all its CPUs.</li> <li class="itemize_item"><span class="flex_perlcode">slurm_control_CPUs</span> is the number of CPUs belonging to the control script, i.e. if you set this to <span class="flex_perlcode">1</span> then one of the CPUs is <em>not</em> given to calculations but rather to the <span class="flex_scriptinglanguage">Perl</span> grid. It is safe to leave this at zero.</li> </ul> -<div class="standard" id='magicparlabel-3613'>One big advantage of <span class="flex_software">slurm</span> compared to <span class="flex_software">HTCondor</span> is that <span class="flex_software">slurm</span> has array jobs which make it easy to set up a grid of models (the details are handled internally by the <span class="flex_software">slurm</span> module and all CPUs are used by default). </div> +<div class="standard" id='magicparlabel-3638'>One big advantage of <span class="flex_software">slurm</span> compared to <span class="flex_software">HTCondor</span> is that <span class="flex_software">slurm</span> has array jobs which make it easy to set up a grid of models (the details are handled internally by the <span class="flex_software">slurm</span> module and all CPUs are used by default). </div> -<div class="standard" id='magicparlabel-3630'>Please note that the <span class="flex_software">slurm</span> module has only been tested with <span class="flex_perlmodule"><i>binary_grid2</i></span> and <span class="flex_perlmodule">binary_grid::C</span>.</div> +<div class="standard" id='magicparlabel-3655'>Please note that the <span class="flex_software">slurm</span> module has only been tested with <span class="flex_perlmodule"><i>binary_grid2</i></span> and <span class="flex_perlmodule">binary_grid::C</span>.</div> -<div class="standard" id='magicparlabel-3643'><br /> +<div class="standard" id='magicparlabel-3668'><br /> </div> -<h3 class="subsection" id='magicparlabel-3644'><span class="subsection_label">6.20</span> Initial distributions (IMF etc.) </h3> -<div class="standard" id='magicparlabel-3645'><div id="sec_initial_dists"></div> +<h3 class="subsection" id='magicparlabel-3669'><span class="subsection_label">6.20</span> Initial distributions (IMF etc.) </h3> +<div class="standard" id='magicparlabel-3670'><div id="sec_initial_dists"></div> The initial distributions of stellar masses, mass ratios, separations and periods are handled by the <span class="flex_perlmodule">distribution_functions</span> <span class="flex_scriptinglanguage">Perl</span> module. The general idea is that given a set of stellar parameters <math xmlns="http://www.w3.org/1998/Math/MathML"><mstyle mathvariant='sans-serif-italic' mathsize='85%'> <mrow> <msub subscriptshift="0.2ex"> @@ -3947,7 +3986,7 @@ The initial distributions of stellar masses, mass ratios, separations and period <mrow><mi>i</mi> </mrow></mstyle></math> is calculated from </div> -<div class="standard" id='magicparlabel-3654'><div id="eq_prob_eq"></div> +<div class="standard" id='magicparlabel-3679'><div id="eq_prob_eq"></div> <math display="block" xmlns="http://www.w3.org/1998/Math/MathML"><mstyle mathvariant='sans-serif-italic' mathsize='85%'> <mtable> <mtr> @@ -4158,12 +4197,12 @@ The initial distributions of stellar masses, mass ratios, separations and period </mrow> </mrow></mstyle></math>.</div> -<div class="standard" id='magicparlabel-3655'>There are many forms for each initial distributions and they depend on which authors you believe and/or which stars you are looking at (e.g. low- or high-mass stars). There is no one true answer – yet!</div> -<h4 class="subsubsection" id='magicparlabel-3656'><span class="subsubsection_label">6.20.1</span> Predefined functions in the distribution_functions module</h4> -<div class="standard" id='magicparlabel-3657'><div id="subsec_distribution_functions_predefined_functions"></div> +<div class="standard" id='magicparlabel-3680'>There are many forms for each initial distributions and they depend on which authors you believe and/or which stars you are looking at (e.g. low- or high-mass stars). There is no one true answer – yet!</div> +<h4 class="subsubsection" id='magicparlabel-3681'><span class="subsubsection_label">6.20.1</span> Predefined functions in the distribution_functions module</h4> +<div class="standard" id='magicparlabel-3682'><div id="subsec_distribution_functions_predefined_functions"></div> </div> -<dl class='description' id='magicparlabel-3658'><dt class="description_label">const(<math xmlns="http://www.w3.org/1998/Math/MathML"><mstyle mathvariant='sans-serif-italic' mathsize='85%'> +<dl class='description' id='magicparlabel-3683'><dt class="description_label">const(<math xmlns="http://www.w3.org/1998/Math/MathML"><mstyle mathvariant='sans-serif-italic' mathsize='85%'> <mrow><mi>a</mi> </mrow></mstyle></math>,<math xmlns="http://www.w3.org/1998/Math/MathML"><mstyle mathvariant='sans-serif-italic' mathsize='85%'> <mrow><mi>b</mi> @@ -4405,13 +4444,13 @@ The initial distributions of stellar masses, mass ratios, separations and period <mrow><mi>x</mi> </mrow></mstyle></math>.</dd> </dl> -<div class="standard" id='magicparlabel-3664'><br /> +<div class="standard" id='magicparlabel-3689'><br /> </div> -<h3 class="subsection" id='magicparlabel-3665'><span class="subsection_label">6.21</span> Grid spacings</h3> -<div class="standard" id='magicparlabel-3666'><div id="sec_The_spacing_functions_module"></div> +<h3 class="subsection" id='magicparlabel-3690'><span class="subsection_label">6.21</span> Grid spacings</h3> +<div class="standard" id='magicparlabel-3691'><div id="sec_The_spacing_functions_module"></div> The <span class="flex_perlmodule">spacing_functions</span><em> </em>module is used to set up the grid spacings. At the moment there are only a few functions, but you can add your own of course.</div> -<dl class='description' id='magicparlabel-3671'><dt class="description_label">const(<math xmlns="http://www.w3.org/1998/Math/MathML"><mstyle mathvariant='sans-serif-italic' mathsize='85%'> +<dl class='description' id='magicparlabel-3696'><dt class="description_label">const(<math xmlns="http://www.w3.org/1998/Math/MathML"><mstyle mathvariant='sans-serif-italic' mathsize='85%'> <mrow> <msub subscriptshift="0.2ex"> <mrow><mi>x</mi> @@ -4544,22 +4583,22 @@ The <span class="flex_perlmodule">spacing_functions</span><em> </em>module is us <mrow><mi>t</mi> </mrow></mstyle></math>. See Sec. <a href="#Recipe_time_resolved_mass_grid">6.25.3</a> for an example of its use.</dd> </dl> -<div class="standard" id='magicparlabel-3674'><br /> +<div class="standard" id='magicparlabel-3699'><br /> </div> -<h3 class="subsection" id='magicparlabel-3675'><span class="subsection_label">6.22</span> The <span class='math'>\binarygrid</span> +<h3 class="subsection" id='magicparlabel-3700'><span class="subsection_label">6.22</span> The <span class='math'>\binarygrid</span> thread model</h3> -<div class="standard" id='magicparlabel-3676'><div id="sec_The_Thread_Model"></div> +<div class="standard" id='magicparlabel-3701'><div id="sec_The_Thread_Model"></div> CPUs used to be simple devices that did one job at a time. No more: every CPU these days has multiple <em>cores</em> which can run simultaneously while sharing system resources (e.g. RAM, disk). <span class='math'>\binarygrid</span> takes advantage of this by splitting the workload of running stars over a parameter space into multiple <em>threads</em> which run concurrently, thus speeding up execution of the grid.</div> -<div class="standard" id='magicparlabel-3677'>Note: you should <em>not</em> call <span class="flex_perlcode">flexigrid</span> directly with <span class='math'>\binarygrid</span> +<div class="standard" id='magicparlabel-3702'>Note: you should <em>not</em> call <span class="flex_perlcode">flexigrid</span> directly with <span class='math'>\binarygrid</span> 2: instead call <br /> <pre class ='listings'>$population->evolve();</pre><br /> </div> -<div class="standard" id='magicparlabel-3686'>When you call <span class="flex_perlcode">$population->evolve()</span> it sends a single argument to <span class="flex_perlcode">flexigrid()</span>: the number of child threads. Let's say you launch <span class="flex_perlcode">flexigrid(4);</span><em> </em>then the parent thread launches four children which are managed in a thread queue (using <span class="flex_scriptinglanguage">Perl</span>'s <span class="flex_perlmodule">Thread::Queue</span> module). Each star you want to run is placed in the queue and the threads pull them off one by one until the parameter space is complete.</div> -<h4 class="subsubsection" id='magicparlabel-3707'><span class="subsubsection_label">6.22.1</span> Thread resources</h4> -<div class="standard" id='magicparlabel-3708'><div id="subsec_thread_resources"></div> +<div class="standard" id='magicparlabel-3711'>When you call <span class="flex_perlcode">$population->evolve()</span> it sends a single argument to <span class="flex_perlcode">flexigrid()</span>: the number of child threads. Let's say you launch <span class="flex_perlcode">flexigrid(4);</span><em> </em>then the parent thread launches four children which are managed in a thread queue (using <span class="flex_scriptinglanguage">Perl</span>'s <span class="flex_perlmodule">Thread::Queue</span> module). Each star you want to run is placed in the queue and the threads pull them off one by one until the parameter space is complete.</div> +<h4 class="subsubsection" id='magicparlabel-3732'><span class="subsubsection_label">6.22.1</span> Thread resources</h4> +<div class="standard" id='magicparlabel-3733'><div id="subsec_thread_resources"></div> Each thread stores its results in a <em>hash table </em>(marked by <span class="flex_perlcode">%</span> in <em>Perl</em>, see <br /> @@ -4568,7 +4607,7 @@ Each thread stores its results in a <em>hash table </em>(marked by <span class=" <a href="http://www.perltutorial.org/perl-hash.aspx">http://www.perltutorial.org/perl-hash.aspx</a>, if you know about <span class="flex_scriptinglanguage">Python</span><em> </em>dictionaries, these are pretty much the same). This is like an array, which is probably familiar to you from other programming languages e.g. <em>C</em>, <em>C++</em> and <em>FORTRAN</em>, but instead of using numbers (e.g. 0, 1, 2…) as indices, it uses <em>keys</em> instead which can be any scalar, i.e. strings or numbers. Hashes can be nested, e.g. as hashes of hashes or hashes of arrays or arrays of hashes etc. This concept is very powerful because it allows you to store the results of your population synthesis in a <em>single hash table.</em> Because hashes can be nested, a single table can store <em>everything</em> you can throw at it. </div> -<div class="standard" id='magicparlabel-3717'>Each thread has its own hash, usually accessed (e.g. in <em><span class="flex_perlcode">parse_bse</span></em>) through the variable +<div class="standard" id='magicparlabel-3742'>Each thread has its own hash, usually accessed (e.g. in <em><span class="flex_perlcode">parse_bse</span></em>) through the variable <br /> <span class="flex_perlcode">$population->results</span> where <span class="flex_perlcode">$population</span> is your <em><span class='math'>\binarygrid</span> @@ -4576,14 +4615,14 @@ Each thread stores its results in a <em>hash table </em>(marked by <span class=" <pre class ='listings Perl'>$h=$population->results();</pre><br /> into which you put your data in <span style='font-family:monospace;font-size: 18px;'>$h</span> and it is propagated where it is required.</div> -<div class="standard" id='magicparlabel-3742'>When the threads finish they are <em>joined</em> together – in this process, the thread's<em> </em>results hash is added to a global hash which ends up in your <span class="flex_perlcode">$population</span> object. The mechanism to do this is automatically included in <span class='math'>\binarygrid</span>, you do not usually have to do anything yourself. At the end of the grid, the<em> </em><span class="flex_perlcode">$population->results</span> hash contains the sum of the population synthesis over all the stars you have run.</div> +<div class="standard" id='magicparlabel-3767'>When the threads finish they are <em>joined</em> together – in this process, the thread's<em> </em>results hash is added to a global hash which ends up in your <span class="flex_perlcode">$population</span> object. The mechanism to do this is automatically included in <span class='math'>\binarygrid</span>, you do not usually have to do anything yourself. At the end of the grid, the<em> </em><span class="flex_perlcode">$population->results</span> hash contains the sum of the population synthesis over all the stars you have run.</div> -<div class="standard" id='magicparlabel-3751'>Beware that the default hash join function <em>only </em>knows how to add up scalars, arrays and hashes. It cannot know how to add a hash to an array. I cannot think of a case where this would be a problem unless you make your results hash structure depend on thread number. I cannot think of a reason why you would do this.</div> -<h4 class="subsubsection" id='magicparlabel-3752'><span class="subsubsection_label">6.22.2</span> CPU load and thread number</h4> -<div class="standard" id='magicparlabel-3753'><div id="subsec_CPU_load"></div> +<div class="standard" id='magicparlabel-3776'>Beware that the default hash join function <em>only </em>knows how to add up scalars, arrays and hashes. It cannot know how to add a hash to an array. I cannot think of a case where this would be a problem unless you make your results hash structure depend on thread number. I cannot think of a reason why you would do this.</div> +<h4 class="subsubsection" id='magicparlabel-3777'><span class="subsubsection_label">6.22.2</span> CPU load and thread number</h4> +<div class="standard" id='magicparlabel-3778'><div id="subsec_CPU_load"></div> </div> -<dl class='description' id='magicparlabel-3754'><dt class="description_label">C backend</dt> +<dl class='description' id='magicparlabel-3779'><dt class="description_label">C backend</dt> <dd class="description_item"> Using the <em>C</em> backend, the number of threads scales well with CPU usage and runtime, tested up to 8 threads (or 16 with hyperthreading, which obviously isn't really a valid test given how dodgy hyperthreading is). <b>It is highly recommended to use the <i>C</i> backend for greatly increased performance.</b></dd> <dt class="description_label">Perl backend</dt> <dd class="description_item"> It is not obviously clear how many threads you should launch even if you know the number of CPUs in your system. If your <span class='math'>binary_c</i></span> @@ -4601,12 +4640,12 @@ will not have much processing to do and you may as well launch as many threads a </mrow> </mrow></mstyle></math> threads for the fastest possible grid.</dd> </dl> -<div class="standard" id='magicparlabel-3756'>The best option is to experiment with a limited (low-resolution) parameter space and gradually increase the number of stars while changing the number of threads. This is, in any case, good practice for debugging your newly programmed code. When debugging, use <em>only one thread.</em></div> -<h4 class="subsubsection" id='magicparlabel-3757'><span class="subsubsection_label">6.22.3</span> Memory usage</h4> -<div class="standard" id='magicparlabel-3758'><div id="subsec_memory_usage"></div> +<div class="standard" id='magicparlabel-3781'>The best option is to experiment with a limited (low-resolution) parameter space and gradually increase the number of stars while changing the number of threads. This is, in any case, good practice for debugging your newly programmed code. When debugging, use <em>only one thread.</em></div> +<h4 class="subsubsection" id='magicparlabel-3782'><span class="subsubsection_label">6.22.3</span> Memory usage</h4> +<div class="standard" id='magicparlabel-3783'><div id="subsec_memory_usage"></div> Each thread stores its data in its own hash, so the more threads you have the more memory you will use. If you are not saving much data, this will not bother you, but obviously if you save a lot of high-resolution data you may start to use a lot of RAM. </div> -<div class="standard" id='magicparlabel-3759'>You should bin your hash keys to save RAM: consider this example. If you save the luminosity at each timestep, you will end up with hashes with keys (e.g.) 1.0, 1.0001, 1.0002, 1.0003 etc. Very quickly – in seconds! – you will have more data than you or your RAM can handle. Instead, bin your data and use logarithms when you can. Binary_grid has a bin_data function for this, e.g. <br /> +<div class="standard" id='magicparlabel-3784'>You should bin your hash keys to save RAM: consider this example. If you save the luminosity at each timestep, you will end up with hashes with keys (e.g.) 1.0, 1.0001, 1.0002, 1.0003 etc. Very quickly – in seconds! – you will have more data than you or your RAM can handle. Instead, bin your data and use logarithms when you can. Binary_grid has a bin_data function for this, e.g. <br /> <pre class ='listings Perl'>$logL=bin_data(log10($L),0.1);</pre><br /> bins the logarithm of <span style='font-family:monospace;font-size: 18px;'>$L</span> (e.g. the luminosity) to the nearest <math xmlns="http://www.w3.org/1998/Math/MathML"><mstyle mathvariant='sans-serif-italic' mathsize='85%'> <mrow> @@ -4618,7 +4657,7 @@ Each thread stores its data in its own hash, so the more threads you have the mo </mrow> </mrow></mstyle></math>. </div> -<div class="standard" id='magicparlabel-3764'>Remember that if each thread uses <math xmlns="http://www.w3.org/1998/Math/MathML"><mstyle mathvariant='sans-serif-italic' mathsize='85%'> +<div class="standard" id='magicparlabel-3789'>Remember that if each thread uses <math xmlns="http://www.w3.org/1998/Math/MathML"><mstyle mathvariant='sans-serif-italic' mathsize='85%'> <mrow><mi>N</mi> </mrow></mstyle></math> megabytes of RAM and you have <math xmlns="http://www.w3.org/1998/Math/MathML"><mstyle mathvariant='sans-serif-italic' mathsize='85%'> <mrow><mi>n</mi> @@ -4632,12 +4671,12 @@ Each thread stores its data in its own hash, so the more threads you have the mo <mrow><mo><</mo><mn>2</mn><mi>n</mi><mi>N</mi> </mrow> </mrow></mstyle></math>, your grid may fail at the thread join step if there is not sufficient RAM. In the case of an <span class="flex_software">HTCondor</span> or <span class="flex_software">slurm</span> grid, your data files are preserved and you can simply rerun the final grid join step on a machine with more memory.</div> -<h4 class="subsubsection" id='magicparlabel-3773'><span class="subsubsection_label">6.22.4</span> <span style='font-family:monospace;font-size: 18px;'>threadinfo</span> variables</h4> -<div class="standard" id='magicparlabel-3774'><div id="subsec_thread_variables"></div> +<h4 class="subsubsection" id='magicparlabel-3798'><span class="subsubsection_label">6.22.4</span> <span style='font-family:monospace;font-size: 18px;'>threadinfo</span> variables</h4> +<div class="standard" id='magicparlabel-3799'><div id="subsec_thread_variables"></div> Each thread sets its own copy of the<span style='font-family:monospace;font-size: 18px;'> </span><span class="flex_perlcode">_threadinfo</span> hash inside the<em> <span class='math'>\binarygrid2</span> </em>object, containing information relevant only to the thread. Most of this is used internally but you have access to it (do not change it unless you know what you are doing!).</div> -<ol class='lyxlist' id='magicparlabel-3779'><li class="labeling_item"><span class='lyxlist'>evcode_pid</span> +<ol class='lyxlist' id='magicparlabel-3804'><li class="labeling_item"><span class='lyxlist'>evcode_pid</span> <span class='math'>binary_c</i></span> process id associated with this thread (only for <span class="flex_scriptinglanguage">Perl</span><em> </em>backend)</li> <li class="labeling_item"><span class='lyxlist'>cmd</span> @@ -4672,17 +4711,17 @@ Each thread sets its own copy of the<span style='font-family:monospace;font-size <li class="labeling_item"><span class='lyxlist'>thread_prev_complaint</span> Thread timer (from <span class="flex_perlcode">time()</span>): this is the time the thread last registered a complaint about taking too long</li> </ol> -<div class="standard" id='magicparlabel-3835'><br /> +<div class="standard" id='magicparlabel-3860'><br /> </div> -<h3 class="subsection" id='magicparlabel-3836'><span class="subsection_label">6.23</span> Debugging, benchmarking and advanced topics</h3> -<div class="standard" id='magicparlabel-3837'><div id="sec_debugging"></div> +<h3 class="subsection" id='magicparlabel-3861'><span class="subsection_label">6.23</span> Debugging, benchmarking and advanced topics</h3> +<div class="standard" id='magicparlabel-3862'><div id="sec_debugging"></div> This section provides a summary of debugging options and suggestions for ways to fix your code (or<em> <span class='math'>\binarygrid</span> </em>!). </div> -<h4 class="subsubsection" id='magicparlabel-3838'><span class="subsubsection_label">6.23.1</span> Debugging options</h4> -<div class="standard" id='magicparlabel-3839'>The following <span class='math'>\binarygrid</span> +<h4 class="subsubsection" id='magicparlabel-3863'><span class="subsubsection_label">6.23.1</span> Debugging options</h4> +<div class="standard" id='magicparlabel-3864'>The following <span class='math'>\binarygrid</span> 2 object variables affect debugging:</div> -<ul class="itemize" id='magicparlabel-3840'><li class="itemize_item"><span class="flex_perlcode">vb</span> +<ul class="itemize" id='magicparlabel-3865'><li class="itemize_item"><span class="flex_perlcode">vb</span> <br /> See Section <a href="#subsec_Verbosity">6.23.2</a> below.</li> @@ -4792,9 +4831,9 @@ See Section <a href="#subsec_Verbosity">6.23.2</a> below.</li> </mrow></mstyle></math>, and the values contain the appropriate data. Again, this is accessible from <span class="flex_perlcode">parse_bse</span>. </li> <li class="itemize_item">Use the <span class="flex_perlcode">timeout</span> feature if your code is freezing. This is <em>not</em> the same as fixing your problem, but you may be able to stop the code from using all your CPU when it freezes! (Note that this uses <span class="flex_os">Unix</span> signals to test for timeouts: it may not work e.g. with the <span class="flex_software">HTCondor</span>/<span class="flex_software">slurm</span> queueing system).</li> </ul> -<h4 class="subsubsection" id='magicparlabel-3919'><span class="subsubsection_label">6.23.2</span> Verbosity<div id="subsec_Verbosity"></div> +<h4 class="subsubsection" id='magicparlabel-3944'><span class="subsubsection_label">6.23.2</span> Verbosity<div id="subsec_Verbosity"></div> </h4> -<div class="standard" id='magicparlabel-3920'><span style='font-family:monospace;font-size: 18px;'>vb</span> controls the amount of grid output to the screen, usually lines showing the number of stars evolved, the total number in the grid, the current time, <math xmlns="http://www.w3.org/1998/Math/MathML"><mstyle mathvariant='sans-serif-italic' mathsize='85%'> +<div class="standard" id='magicparlabel-3945'><span style='font-family:monospace;font-size: 18px;'>vb</span> controls the amount of grid output to the screen, usually lines showing the number of stars evolved, the total number in the grid, the current time, <math xmlns="http://www.w3.org/1998/Math/MathML"><mstyle mathvariant='sans-serif-italic' mathsize='85%'> <mrow> <msub subscriptshift="0.2ex"> <mrow><mi>M</mi> @@ -4820,13 +4859,13 @@ See Section <a href="#subsec_Verbosity">6.23.2</a> below.</li> <mrow>% </mrow></mstyle></math> grid completion, estimated time until arrival (finish) i.e. <em>ETA</em>, <em>tpr</em> (time per run), <em>ETF</em> (estimated time at which it will finish) and memory usage. If set to 1 it shows output every second or every <span style='font-family:monospace;font-size: 18px;'>nmod</span> models. </div> -<div class="standard" id='magicparlabel-3921'>If <span style='font-family:monospace;font-size: 18px;'>vb</span> is set to <span style='font-family:monospace;font-size: 18px;'>2</span> then more output, showing the arguments sent to <span class='math'>binary_c</i></span>, will be dumped onto the screen for each model. This is only useful for small grids, for large grids it will overwhelm you. It is possible to set <span style='font-family:monospace;font-size: 18px;'>vb=3</span> for even more output. +<div class="standard" id='magicparlabel-3946'>If <span style='font-family:monospace;font-size: 18px;'>vb</span> is set to <span style='font-family:monospace;font-size: 18px;'>2</span> then more output, showing the arguments sent to <span class='math'>binary_c</i></span>, will be dumped onto the screen for each model. This is only useful for small grids, for large grids it will overwhelm you. It is possible to set <span style='font-family:monospace;font-size: 18px;'>vb=3</span> for even more output. <br /> Note that as of <em><span class='math'>\binarygrid</span> </em> 0.18 it is impossible to set <span style='font-family:monospace;font-size: 18px;'>vb</span> from inside your script if you are using the two-stage bootstrapping (which you really should, see Section <a href="#subsec_Two_stage_bootstrapping">6.23.4</a> below): it <em>must</em> be sent on the command line that runs your script.</div> -<div class="standard" id='magicparlabel-3922'>Inside <span class="flex_perlmodule"><i>binary_grid2</i>.pm</span> are many <span class="flex_perlcode">vbout(<math xmlns="http://www.w3.org/1998/Math/MathML"><mstyle mathvariant='sans-serif-italic' mathsize='85%'> +<div class="standard" id='magicparlabel-3947'>Inside <span class="flex_perlmodule"><i>binary_grid2</i>.pm</span> are many <span class="flex_perlcode">vbout(<math xmlns="http://www.w3.org/1998/Math/MathML"><mstyle mathvariant='sans-serif-italic' mathsize='85%'> <mrow><mi>n</mi> </mrow></mstyle></math>,…);</span> statements. These control the verbose output from<em> <span class='math'>\binarygrid</span> 2</em>, such that the statement is output to the screen <em>only if </em><span style='font-family:monospace;font-size: 18px;'>vb</span><em><math xmlns="http://www.w3.org/1998/Math/MathML"><mstyle mathvariant='sans-serif-italic' mathsize='85%'> @@ -4834,52 +4873,52 @@ Note that as of <em><span class='math'>\binarygrid</span> <mrow><mo> ≥ </mo><mi>n</mi> </mrow> </mrow></mstyle></math></em>. If you want to insert new verbose statements, please use this format!</div> -<h4 class="subsubsection" id='magicparlabel-3931'><span class="subsubsection_label">6.23.3</span> Benchmarking with subroutine timers<div id="subsec_Subroutine_timers"></div> +<h4 class="subsubsection" id='magicparlabel-3956'><span class="subsubsection_label">6.23.3</span> Benchmarking with subroutine timers<div id="subsec_Subroutine_timers"></div> </h4> -<div class="standard" id='magicparlabel-3932'><b>Warning:timers have not been tested with <i>binary_grid2</i></b></div> +<div class="standard" id='magicparlabel-3957'><b>Warning:timers have not been tested with <i>binary_grid2</i></b></div> -<div class="standard" id='magicparlabel-3933'>If your grid is running slowly, you can use subroutine timers by first setting:</div> +<div class="standard" id='magicparlabel-3958'>If your grid is running slowly, you can use subroutine timers by first setting:</div> -<div class="standard" id='magicparlabel-3934'><br /> +<div class="standard" id='magicparlabel-3959'><br /> <pre class ='listings Perl'>$population->timers=1;</pre><br /> <span style='font-family:monospace;font-size: 18px;'> </span>and then make a list of subroutines you would like to time:</div> -<div class="standard" id='magicparlabel-3939'><br /> +<div class="standard" id='magicparlabel-3964'><br /> <pre class ='listings Perl'>$population->timer_subroutines=['main::parse_bse','binary_out','print_binary_in'];</pre><br /> Note that a default subroutine list is used (see <span class="flex_file"><i>binary_grid2</i>.pm</span>) which includes most of the subroutines in <span class='math'>\binarygrid</span> . To see the results of the subroutine timing, put a call to</div> -<div class="standard" id='magicparlabel-3948'><br /> +<div class="standard" id='magicparlabel-3973'><br /> <pre class ='listings Perl'>output_binary_grid_timers();</pre><br /> in your script before it exits.</div> -<div class="standard" id='magicparlabel-3953'>There is considerable overhead in activating subroutine timers, so your grid will run possibly up to twice as slow as normal. Timers should <em>not</em> be used for production code, but are very useful if you want to know what is slowing you down.</div> +<div class="standard" id='magicparlabel-3978'>There is considerable overhead in activating subroutine timers, so your grid will run possibly up to twice as slow as normal. Timers should <em>not</em> be used for production code, but are very useful if you want to know what is slowing you down.</div> -<div class="standard" id='magicparlabel-3954'>Note that some subroutines are designed to sit and wait for something to happen (e.g. <em>binary_out</em>) and these will therefore use up a lot of time. This is normal: I have gone to great length to make these functions as fast as possible (while keeping debugging and code-crash checking) – if you can make them faster, great, but this will be difficult if you want stability and error-checking.</div> -<h4 class="subsubsection" id='magicparlabel-3955'><span class="subsubsection_label">6.23.4</span> Two-stage bootstrapping<div id="subsec_Two_stage_bootstrapping"></div> +<div class="standard" id='magicparlabel-3979'>Note that some subroutines are designed to sit and wait for something to happen (e.g. <em>binary_out</em>) and these will therefore use up a lot of time. This is normal: I have gone to great length to make these functions as fast as possible (while keeping debugging and code-crash checking) – if you can make them faster, great, but this will be difficult if you want stability and error-checking.</div> +<h4 class="subsubsection" id='magicparlabel-3980'><span class="subsubsection_label">6.23.4</span> Two-stage bootstrapping<div id="subsec_Two_stage_bootstrapping"></div> </h4> -<div class="standard" id='magicparlabel-3956'><b>Warning: bootstrapping is no longer of much concern in <em><i>binary_grid2</i></em>, even though it still works for some of the module code. The backend modules are <em>not </em>bootstrapped because it is simply impossible to do so.</b></div> +<div class="standard" id='magicparlabel-3981'><b>Warning: bootstrapping is no longer of much concern in <em><i>binary_grid2</i></em>, even though it still works for some of the module code. The backend modules are <em>not </em>bootstrapped because it is simply impossible to do so.</b></div> -<div class="standard" id='magicparlabel-3957'>As of version 0.18 of <span class='math'>\binarygrid</span> +<div class="standard" id='magicparlabel-3982'>As of version 0.18 of <span class='math'>\binarygrid</span> and hence inherited in <span class='math'>\binarygrid</span> 2, the <span class='math'>\binarygrid</span> 2 module is loaded using a two-stage bootstrap technique. The aim of this is to reduce the overhead of using verbose debugging statements (and the like) in the <em><span class='math'>\binarygrid</span> </em>code by removing unnecessary code at runtime <em>prior to compilation</em>. Perl is a superb language for doing this by means of its <span class="flex_perlcode">eval</span> command. Roughly, when you load <span class="flex_file"><i>binary_grid2</i>.pm</span> the following happens:</div> -<ol class="enumerate" id='magicparlabel-3966'><li class="enumerate_item">The module loads a few basic subroutines, including <span class="flex_perlcode">parse_args</span> to check the command line arguments, especially to look for a <span class="flex_args">vb=n</span> switch that controls verbosity.</li> +<ol class="enumerate" id='magicparlabel-3991'><li class="enumerate_item">The module loads a few basic subroutines, including <span class="flex_perlcode">parse_args</span> to check the command line arguments, especially to look for a <span class="flex_args">vb=n</span> switch that controls verbosity.</li> <li class="enumerate_item">The variable <span class="flex_perlcode">$binary_grid_code</span> is set up: this contains most of the module code. This is then filtered to remove <span class="flex_perlcode">vbout()</span> and <span class="flex_perlcode">verbose_output()</span> statements that would never output anything, based on your choice of the <span class="flex_perlcode">vb</span> <span class="flex_perlcode">grid_option</span> (as given in the arguments to your script). Note that the useless code is <em>completely removed</em> rather than left to always do nothing.</li> <li class="enumerate_item">The <span class="flex_perlcode">$binary_grid_code</span> is <span class="flex_perlcode">eval</span>d, i.e. compiled at runtime.</li> </ol> -<div class="standard" id='magicparlabel-4005'>This <em>bootstrapping</em> eliminates the overhead of calls to the vbout subroutine, and its check of the <span style='font-family:monospace;font-size: 18px;'>vb</span> variable. You may think this overhead is small, but it really is not. The reason is that the arguments to a <span class="flex_software">Perl</span> subroutine are evaluated <em>prior </em>to the call. This often makes sense, but if the arguments are (say) long lists that need joining, this takes valuable CPU time – and for nothing!</div> +<div class="standard" id='magicparlabel-4030'>This <em>bootstrapping</em> eliminates the overhead of calls to the vbout subroutine, and its check of the <span style='font-family:monospace;font-size: 18px;'>vb</span> variable. You may think this overhead is small, but it really is not. The reason is that the arguments to a <span class="flex_software">Perl</span> subroutine are evaluated <em>prior </em>to the call. This often makes sense, but if the arguments are (say) long lists that need joining, this takes valuable CPU time – and for nothing!</div> -<div class="standard" id='magicparlabel-4010'>Benchmarking tests with subroutine timers (see Section <a href="#subsec_Subroutine_timers">6.23.3</a>) show a considerable saving by using this technique, sometimes up to a factor of two in runtime. Bootstrapping is set to be on by default, but can be disabled by setting +<div class="standard" id='magicparlabel-4035'>Benchmarking tests with subroutine timers (see Section <a href="#subsec_Subroutine_timers">6.23.3</a>) show a considerable saving by using this technique, sometimes up to a factor of two in runtime. Bootstrapping is set to be on by default, but can be disabled by setting <br /> <br /> <pre class ='listings Perl'>$binary_grid::grid_options{binary_grid_code_filtering}=0;</pre><br /> </div> -<div class="standard" id='magicparlabel-4015'>If you have problems, e.g. the <span class="flex_perlcode">eval()</span><em> </em>step fails, you should be able to spot this at module installation time (e.g.<em> </em><span class="flex_software">cpanm</span> will fail). Alternatively, you can set +<div class="standard" id='magicparlabel-4040'>If you have problems, e.g. the <span class="flex_perlcode">eval()</span><em> </em>step fails, you should be able to spot this at module installation time (e.g.<em> </em><span class="flex_software">cpanm</span> will fail). Alternatively, you can set <br /> <span class="flex_perlcode">$binary_grid::grid_options{pre_filter_file}</span> and @@ -4887,27 +4926,27 @@ in your script before it exits.</div> <span class="flex_perlcode">$binary_grid::grid_options{post_filter_file}</span> to dump the contents of <span class="flex_perlcode">$binary_grid_code</span> to files, which you can then diff to determine what went wrong. </div> -<div class="standard" id='magicparlabel-4036'>Note that, if you use the bootstrapping – which you really should! – you <em>must</em> set <span style='font-family:monospace;font-size: 18px;'>vb</span> in the arguments to your script. Any later settings (e.g. setting the variable manually inside your script) will be ignored.</div> +<div class="standard" id='magicparlabel-4061'>Note that, if you use the bootstrapping – which you really should! – you <em>must</em> set <span style='font-family:monospace;font-size: 18px;'>vb</span> in the arguments to your script. Any later settings (e.g. setting the variable manually inside your script) will be ignored.</div> -<div class="standard" id='magicparlabel-4037'><br /> +<div class="standard" id='magicparlabel-4062'><br /> </div> -<h3 class="subsection" id='magicparlabel-4038'><span class="subsection_label">6.24</span> Future Plans</h3> -<div class="standard" id='magicparlabel-4039'><div id="sec_future_plans"></div> +<h3 class="subsection" id='magicparlabel-4063'><span class="subsection_label">6.24</span> Future Plans</h3> +<div class="standard" id='magicparlabel-4064'><div id="sec_future_plans"></div> </div> -<ul class="itemize" id='magicparlabel-4040'><li class="itemize_item">A graphical frontend would be good! Please write one for me.</li> +<ul class="itemize" id='magicparlabel-4065'><li class="itemize_item">A graphical frontend would be good! Please write one for me.</li> </ul> -<div class="standard" id='magicparlabel-4041'><br /> +<div class="standard" id='magicparlabel-4066'><br /> </div> -<h3 class="subsection" id='magicparlabel-4042'><span class="subsection_label">6.25</span> Cookbook</h3> -<div class="standard" id='magicparlabel-4043'><div id="sec_Cookbook"></div> +<h3 class="subsection" id='magicparlabel-4067'><span class="subsection_label">6.25</span> Cookbook</h3> +<div class="standard" id='magicparlabel-4068'><div id="sec_Cookbook"></div> This section contains some examples of how to use <i>binary_grid</i>, so refers to old code (which I have updated where I can). I will fill this in for<b> <span class='math'>\binarygrid2</span> </b>at some point.</div> -<h4 class="subsubsection" id='magicparlabel-4044'><span class="subsubsection_label">6.25.1</span> Star Formation History</h4> -<div class="standard" id='magicparlabel-4045'><div id="Recipe_SFR"></div> +<h4 class="subsubsection" id='magicparlabel-4069'><span class="subsubsection_label">6.25.1</span> Star Formation History</h4> +<div class="standard" id='magicparlabel-4070'><div id="Recipe_SFR"></div> You may not want to use a constant star formation rate (SFR). If you can live with all your models having the same input physics (i.e. metallicity, etc.) you can easily fold in a star formation history (SFH).</div> -<ol class="enumerate" id='magicparlabel-4046'><li class="enumerate_item">Make sure you know the <em>time</em> at each output of <span class='math'>binary_c</i></span>, let's call this <span style='font-family:monospace;font-size: 18px;'>$t</span>.</li> +<ol class="enumerate" id='magicparlabel-4071'><li class="enumerate_item">Make sure you know the <em>time</em> at each output of <span class='math'>binary_c</i></span>, let's call this <span style='font-family:monospace;font-size: 18px;'>$t</span>.</li> <li class="enumerate_item">You also need <math xmlns="http://www.w3.org/1998/Math/MathML"><mstyle mathvariant='sans-serif-italic' mathsize='85%'> <mrow> <mrow><mi>d</mi><mi>t</mi><mo> × </mo><mi>p</mi> @@ -4917,9 +4956,9 @@ You may not want to use a constant star formation rate (SFR). If you can live wi <pre class ='listings Perl'>$dtp *= SFR($binary_grid::bse_options{'max_evolution_time'}-$t);</pre><br /> </span></li> </ol> -<div class="standard" id='magicparlabel-4061'>You have to write the SFR function yourself, e.g.,</div> +<div class="standard" id='magicparlabel-4086'>You have to write the SFR function yourself, e.g.,</div> -<div class="standard" id='magicparlabel-4062'><br /> +<div class="standard" id='magicparlabel-4087'><br /> <pre class ='listings Perl'>sub SFR { # SFR as a function of Galactic age in Myr @@ -4930,7 +4969,7 @@ You may not want to use a constant star formation rate (SFR). If you can live wi }</pre><br /> </div> -<div class="standard" id='magicparlabel-4074'>How does this work? What you're passing into the SFR function is <math xmlns="http://www.w3.org/1998/Math/MathML"><mstyle mathvariant='sans-serif-italic' mathsize='85%'> +<div class="standard" id='magicparlabel-4099'>How does this work? What you're passing into the SFR function is <math xmlns="http://www.w3.org/1998/Math/MathML"><mstyle mathvariant='sans-serif-italic' mathsize='85%'> <mrow> <mrow> <msub subscriptshift="0.2ex"> @@ -4958,26 +4997,26 @@ You may not want to use a constant star formation rate (SFR). If you can live wi </msub> </mrow></mstyle></math> ago.</div> -<div class="standard" id='magicparlabel-4075'>This does not describe the overall normalization, e.g. if you want <math xmlns="http://www.w3.org/1998/Math/MathML"><mstyle mathvariant='sans-serif-italic' mathsize='85%'> +<div class="standard" id='magicparlabel-4100'>This does not describe the overall normalization, e.g. if you want <math xmlns="http://www.w3.org/1998/Math/MathML"><mstyle mathvariant='sans-serif-italic' mathsize='85%'> <mrow><mi>N</mi> </mrow></mstyle></math> stars in total. You have to add up the statistic appropriate to <math xmlns="http://www.w3.org/1998/Math/MathML"><mstyle mathvariant='sans-serif-italic' mathsize='85%'> <mrow><mi>N</mi> </mrow></mstyle></math> (i.e. the number of stars seen <em>now</em>) and apply this to your results.</div> -<h4 class="subsubsection" id='magicparlabel-4076'><span class="subsubsection_label">6.25.2</span> Aliasing</h4> -<div class="standard" id='magicparlabel-4077'><div id="Recipe_aliasing"></div> +<h4 class="subsubsection" id='magicparlabel-4101'><span class="subsubsection_label">6.25.2</span> Aliasing</h4> +<div class="standard" id='magicparlabel-4102'><div id="Recipe_aliasing"></div> You output your histogram but it's all spiky and noisy! What's wrong? The simple answer is that you don't have enough stars on your grid for the bin width of your histogram. (See e.g. <br /> <a href="http://en.wikipedia.org/wiki/Nyquist-Shannon_sampling_theorem">http://en.wikipedia.org/wiki/Nyquist-Shannon_sampling_theorem</a>) Solutions are:</div> -<ol class="enumerate" id='magicparlabel-4078'><li class="enumerate_item">More stars</li> +<ol class="enumerate" id='magicparlabel-4103'><li class="enumerate_item">More stars</li> <li class="enumerate_item">Wider bins</li> </ol> -<div class="standard" id='magicparlabel-4080'>Now, I hear you cry that your old Monte Carlo code gives a lovely smooth histogram. Yes, for the same number of stars, it might. But it might also give you worse spikes. With a MC code you can never guarantee resolution, and in the limit of a large number of stars the result is the same. At least with a grid-based solution you can <em>see</em> the spikes so you <em>know </em>the limit of your resolution. With an MC code you're just playing dice (see the FAQ <a href="#FAQ_why_not_MC_">6.26.1</a>).</div> +<div class="standard" id='magicparlabel-4105'>Now, I hear you cry that your old Monte Carlo code gives a lovely smooth histogram. Yes, for the same number of stars, it might. But it might also give you worse spikes. With a MC code you can never guarantee resolution, and in the limit of a large number of stars the result is the same. At least with a grid-based solution you can <em>see</em> the spikes so you <em>know </em>the limit of your resolution. With an MC code you're just playing dice (see the FAQ <a href="#FAQ_why_not_MC_">6.26.1</a>).</div> -<div class="standard" id='magicparlabel-4081'>Usually I just run with more stars. See also Recipe <a href="#Recipe_SFR">6.25.1</a> above.</div> -<h4 class="subsubsection" id='magicparlabel-4082'><span class="subsubsection_label">6.25.3</span> Time-resolved mass grid</h4> -<div class="standard" id='magicparlabel-4083'><div id="Recipe_time_resolved_mass_grid"></div> +<div class="standard" id='magicparlabel-4106'>Usually I just run with more stars. See also Recipe <a href="#Recipe_SFR">6.25.1</a> above.</div> +<h4 class="subsubsection" id='magicparlabel-4107'><span class="subsubsection_label">6.25.3</span> Time-resolved mass grid</h4> +<div class="standard" id='magicparlabel-4108'><div id="Recipe_time_resolved_mass_grid"></div> Some problems require a more carefully spaced grid than the simple <math xmlns="http://www.w3.org/1998/Math/MathML"><mstyle mathvariant='sans-serif-italic' mathsize='85%'> <mrow> <mrow><mo> ln </mo><mi>M</mi> @@ -5033,7 +5072,7 @@ Some problems require a more carefully spaced grid than the simple <math xmlns=" <mrow><mi>t</mi> </mrow></mstyle></math> is large. </div> -<div class="standard" id='magicparlabel-4084'>We could just set a normal log-mass grid and have a very large resolution. A smarter alternative is to set up the grid to <em>enforce </em><math xmlns="http://www.w3.org/1998/Math/MathML"><mstyle mathvariant='sans-serif-italic' mathsize='85%'> +<div class="standard" id='magicparlabel-4109'>We could just set a normal log-mass grid and have a very large resolution. A smarter alternative is to set up the grid to <em>enforce </em><math xmlns="http://www.w3.org/1998/Math/MathML"><mstyle mathvariant='sans-serif-italic' mathsize='85%'> <mrow> <mrow><mi> δ </mi><mi>M</mi><mo>=</mo><mi>f</mi><mo> × </mo><mi> δ </mi><mi>t</mi><mo>/</mo><mo form='prefix' fence='true' stretchy='true' symmetric='true'>(</mo> @@ -5058,9 +5097,9 @@ Some problems require a more carefully spaced grid than the simple <math xmlns=" </mrow> </mrow></mstyle></math> grid, are available in <em><i>binary_grid</i></em> via the <em>spacing_functions </em>module.</div> -<div class="standard" id='magicparlabel-4085'>In the HRD project with Peter Anders, I use the following:</div> +<div class="standard" id='magicparlabel-4110'>In the HRD project with Peter Anders, I use the following:</div> -<div class="standard" id='magicparlabel-4086'><br /> +<div class="standard" id='magicparlabel-4111'><br /> <pre class ='listings Perl'># Mass 1 $binary_grid::grid_options{'flexigrid'}{'grid variable '.$nvar++}= { @@ -5097,7 +5136,7 @@ $binary_grid::grid_options{'flexigrid'}{'grid variable '.$nvar++}= };</pre><br /> </div> -<div class="standard" id='magicparlabel-4124'>The key line is <span class="flex_perlcode">time_adaptive_mass_grid_log10_step=>0.05</span> which specifies that I want (<math xmlns="http://www.w3.org/1998/Math/MathML"><mstyle mathvariant='sans-serif-italic' mathsize='85%'> +<div class="standard" id='magicparlabel-4149'>The key line is <span class="flex_perlcode">time_adaptive_mass_grid_log10_step=>0.05</span> which specifies that I want (<math xmlns="http://www.w3.org/1998/Math/MathML"><mstyle mathvariant='sans-serif-italic' mathsize='85%'> <mrow> <msub subscriptshift="0.2ex"> <mrow><mo> log </mo> @@ -5114,8 +5153,8 @@ $binary_grid::grid_options{'flexigrid'}{'grid variable '.$nvar++}= </mstyle> </mrow> </mrow></mstyle></math>. Note how I set up the <span class="flex_perlcode">$const_dt_opts</span> anonymous hash of options and then send it via the spacing function with the option '<span class="flex_perlcode">reset</span>'. This sets up a list of masses which are just returned for each call to <span class="flex_perlcode">const_dt()</span> with the '<span class="flex_perlcode">next</span>' parameter. Calling <span class="flex_perlcode">const_dt()</span> with the '<span class="flex_perlcode">resolution</span>' parameter just returns the number of masses in the list, which is trivially the resolution.</div> -<h4 class="subsubsection" id='magicparlabel-4153'><span class="subsubsection_label">6.25.4</span> Single and binary stars combined</h4> -<div class="standard" id='magicparlabel-4154'><div id="Recipe_Single_and_binary_stars"></div> +<h4 class="subsubsection" id='magicparlabel-4178'><span class="subsubsection_label">6.25.4</span> Single and binary stars combined</h4> +<div class="standard" id='magicparlabel-4179'><div id="Recipe_Single_and_binary_stars"></div> You can set up a grid containing both single and binary stars quite easily. The following code defines a grid variable “<em>duplicity</em>” which is either <span class="flex_perlcode">0</span> or <span class="flex_perlcode">1</span>, and sets the <span class="flex_perlcode">grid_option</span> “binary” appropriately. Deeper nested grid variables can then depend on the duplicity and choose, through the <em>condition </em>variable, whether to execute grids over <math xmlns="http://www.w3.org/1998/Math/MathML"><mstyle mathvariant='sans-serif-italic' mathsize='85%'> <mrow> <msub subscriptshift="0.2ex"> @@ -5126,7 +5165,7 @@ You can set up a grid containing both single and binary stars quite easily. The </msub> </mrow></mstyle></math> and beyond.</div> -<div class="standard" id='magicparlabel-4167'><br /> +<div class="standard" id='magicparlabel-4192'><br /> <pre class ='listings Perl'># duplicity $binary_grid::grid_options{'flexigrid'}{'grid variable '.$nvar++}= { @@ -5140,45 +5179,45 @@ $binary_grid::grid_options{'flexigrid'}{'grid variable '.$nvar++}= 'noprobdist'=>1, };</pre><br /> </div> -<h4 class="subsubsection" id='magicparlabel-4183'><span class="subsubsection_label">6.25.5</span> Snapshots: I want to stop a grid and restart later</h4> -<div class="standard" id='magicparlabel-4184'><div id="subsec_snapshotting"></div> +<h4 class="subsubsection" id='magicparlabel-4208'><span class="subsubsection_label">6.25.5</span> Snapshots: I want to stop a grid and restart later</h4> +<div class="standard" id='magicparlabel-4209'><div id="subsec_snapshotting"></div> The ability to stop and restart the grid is called <em>snapshotting</em>. Note that while this currently works, it assumes that you:</div> -<ol class="enumerate" id='magicparlabel-4185'><li class="enumerate_item">Use the identical grid script to restart</li> +<ol class="enumerate" id='magicparlabel-4210'><li class="enumerate_item">Use the identical grid script to restart</li> <li class="enumerate_item">Do not change any of your installation (<span class='math'>binary_c</i></span>, <span class='math'>\binarygrid</span> etc.) between stopping and restarting, </li> </ol> -<div class="standard" id='magicparlabel-4187'>thus snapshotting is quite limited in its functionality but it might save your data when your computer is about to die.</div> -<h4 class="subsubsection" id='magicparlabel-4188'><span class="subsubsection_label">6.25.6</span> Suspending the grid</h4> -<div class="standard" id='magicparlabel-4189'><em><span class='math'>\binarygrid</span> +<div class="standard" id='magicparlabel-4212'>thus snapshotting is quite limited in its functionality but it might save your data when your computer is about to die.</div> +<h4 class="subsubsection" id='magicparlabel-4213'><span class="subsubsection_label">6.25.6</span> Suspending the grid</h4> +<div class="standard" id='magicparlabel-4214'><em><span class='math'>\binarygrid</span> </em> looks in files, defined in <span class="flex_perlcode">$binary_grid::grid_options{'suspend_files'}=[…]</span>, and if one exists, it executes its snapshot code. To make one exist, use the <span class="flex_scriptinglanguage">Unix</span> command <span class="flex_command">touch</span><em> </em>e.g. </div> -<div class="standard" id='magicparlabel-4202'><br /> +<div class="standard" id='magicparlabel-4227'><br /> <pre class ='listings'>touch /tmp/force_binary_c_suspend</pre><br /> </div> -<div class="standard" id='magicparlabel-4207'>This joins all the current threads and saves their data in one file so you can restart it later. It may take some time to join all the threads, so please be patient. By default, <i>binary_grid</i> looks at the files <span class="flex_file">/tmp/force_binary_c_suspend</span> and <span class="flex_perlcode">./force_binary_c_suspend</span> (although you can add your own with <span class="flex_perlcode">push(@$binary_grid::grid_options{'suspend_files'}, “new filename”);)</span></div> +<div class="standard" id='magicparlabel-4232'>This joins all the current threads and saves their data in one file so you can restart it later. It may take some time to join all the threads, so please be patient. By default, <i>binary_grid</i> looks at the files <span class="flex_file">/tmp/force_binary_c_suspend</span> and <span class="flex_perlcode">./force_binary_c_suspend</span> (although you can add your own with <span class="flex_perlcode">push(@$binary_grid::grid_options{'suspend_files'}, “new filename”);)</span></div> -<div class="standard" id='magicparlabel-4220'>The saved file name is defined in <span class="flex_perlcode">$binary_grid::grid_options{'snapshot_file'}</span> (default <span style='font-family:monospace;font-size: 18px;'>'</span><span class="flex_file">/tmp/<i>binary_c</i>-snapshot</span><span style='font-family:monospace;font-size: 18px;'>'</span>).</div> +<div class="standard" id='magicparlabel-4245'>The saved file name is defined in <span class="flex_perlcode">$binary_grid::grid_options{'snapshot_file'}</span> (default <span style='font-family:monospace;font-size: 18px;'>'</span><span class="flex_file">/tmp/<i>binary_c</i>-snapshot</span><span style='font-family:monospace;font-size: 18px;'>'</span>).</div> -<div class="standard" id='magicparlabel-4229'>All the above <span class="flex_file">/tmp/</span> are actually <span class="flex_perlcode">$binary_grid::grid_options{tmp}</span> so you can define your own location for all the files (which is probably more secure, because then you can prevent anyone from touching the file and stopping your grid).</div> -<h4 class="subsubsection" id='magicparlabel-4238'><span class="subsubsection_label">6.25.7</span> Restarting the grid</h4> -<div class="standard" id='magicparlabel-4239'>If <span class="flex_perlcode">$binary_grid::grid_options{starting_snapshot_file}</span> is defined, it is used to load in a previously saved snapshot and the grid is restarted. You can usually just load this on the command line, e.g. by running your grid script as</div> +<div class="standard" id='magicparlabel-4254'>All the above <span class="flex_file">/tmp/</span> are actually <span class="flex_perlcode">$binary_grid::grid_options{tmp}</span> so you can define your own location for all the files (which is probably more secure, because then you can prevent anyone from touching the file and stopping your grid).</div> +<h4 class="subsubsection" id='magicparlabel-4263'><span class="subsubsection_label">6.25.7</span> Restarting the grid</h4> +<div class="standard" id='magicparlabel-4264'>If <span class="flex_perlcode">$binary_grid::grid_options{starting_snapshot_file}</span> is defined, it is used to load in a previously saved snapshot and the grid is restarted. You can usually just load this on the command line, e.g. by running your grid script as</div> -<div class="standard" id='magicparlabel-4244'><span class="flex_perlcode">./src/perl/scripts/my_grid_script.pl starting_snapshot_file=my_snapshot_file</span></div> -<h4 class="subsubsection" id='magicparlabel-4249'><span class="subsubsection_label">6.25.8</span> World Domination</h4> -<div class="standard" id='magicparlabel-4250'><div id="subsec_World_Domination"></div> +<div class="standard" id='magicparlabel-4269'><span class="flex_perlcode">./src/perl/scripts/my_grid_script.pl starting_snapshot_file=my_snapshot_file</span></div> +<h4 class="subsubsection" id='magicparlabel-4274'><span class="subsubsection_label">6.25.8</span> World Domination</h4> +<div class="standard" id='magicparlabel-4275'><div id="subsec_World_Domination"></div> </div> -<div class="standard" id='magicparlabel-4251'>I'm working on it. I have started to brew my own beer, does that count?</div> +<div class="standard" id='magicparlabel-4276'>I'm working on it. I have started to brew my own beer, does that count?</div> -<div class="standard" id='magicparlabel-4252'><br /> +<div class="standard" id='magicparlabel-4277'><br /> </div> -<h3 class="subsection" id='magicparlabel-4253'><span class="subsection_label">6.26</span> FAQ</h3> -<div class="standard" id='magicparlabel-4254'><div id="sec_FAQ"></div> +<h3 class="subsection" id='magicparlabel-4278'><span class="subsection_label">6.26</span> FAQ</h3> +<div class="standard" id='magicparlabel-4279'><div id="sec_FAQ"></div> Frequently asked questions. </div> -<h4 class="subsubsection" id='magicparlabel-4255'><span class="subsubsection_label">6.26.1</span> Why not Monte Carlo?</h4> -<div class="standard" id='magicparlabel-4256'><div id="FAQ_why_not_MC_"></div> +<h4 class="subsubsection" id='magicparlabel-4280'><span class="subsubsection_label">6.26.1</span> Why not Monte Carlo?</h4> +<div class="standard" id='magicparlabel-4281'><div id="FAQ_why_not_MC_"></div> The alternative to running a grid is a Monte Carlo method, where you throw systems in according to some initial distribution and a random number generator. In the high number limit this should give the <em>same</em> <em>result </em>as a grid. However, in the low-number limit, the results are probably going to be different, and this is when you test your code. The big advantage of a grid is that you have a good handle on <em>errors</em> due to the finite resolution of your sampling of the initial distribution(s) without the smearing out of a Monte Carlo approach. Furthermore, MC may accidentally miss part of the initial parameter space (it is, after all, random) which you know is covered by a grid approach (at least to within a known error e.g. <math xmlns="http://www.w3.org/1998/Math/MathML"><mstyle mathvariant='sans-serif-italic' mathsize='85%'> <mrow> <mrow><mi> δ </mi><mo> ln </mo> @@ -5199,9 +5238,9 @@ The alternative to running a grid is a Monte Carlo method, where you throw syste </msub> </mrow></mstyle></math>, but on the other hand these might be the systems of particular interest to you!</div> -<div class="standard" id='magicparlabel-4257'><b>Update: there is a monte carlo option to the flexigrid. It is not well tested, but could work for you if you really need it.</b></div> -<h4 class="subsubsection" id='magicparlabel-4258'><span class="subsubsection_label">6.26.2</span> Why MC SN kicks?</h4> -<div class="standard" id='magicparlabel-4259'><div id="FAQ_WhyMCSNkicks_"></div> +<div class="standard" id='magicparlabel-4282'><b>Update: there is a monte carlo option to the flexigrid. It is not well tested, but could work for you if you really need it.</b></div> +<h4 class="subsubsection" id='magicparlabel-4283'><span class="subsubsection_label">6.26.2</span> Why MC SN kicks?</h4> +<div class="standard" id='magicparlabel-4284'><div id="FAQ_WhyMCSNkicks_"></div> Traditionally supernova (and white dwarf) kicks have had their velocity chosen in a Monte-Carlo way, rather than on a grid. This was left as-is because there are four dimensions for each kick, which – given a coarse grid of <math xmlns="http://www.w3.org/1998/Math/MathML"><mstyle mathvariant='sans-serif-italic' mathsize='85%'> <mrow> <mrow><mn>10</mn><mo> × </mo><mn>10</mn><mo> × </mo><mn>10</mn><mo> × </mo><mn>10</mn> @@ -5229,37 +5268,37 @@ Traditionally supernova (and white dwarf) kicks have had their velocity chosen i </mrow></mstyle></math>, but probably not <math xmlns="http://www.w3.org/1998/Math/MathML"><mstyle mathvariant='sans-serif-italic' mathsize='85%'> <mrow><mi>a</mi> </mrow></mstyle></math>.</div> -<h4 class="subsubsection" id='magicparlabel-4260'><span class="subsubsection_label">6.26.3</span> Zombie <i>binary_c</i> processes </h4> -<div class="standard" id='magicparlabel-4261'><div id="FAQ_Zombie_binary_c"></div> +<h4 class="subsubsection" id='magicparlabel-4285'><span class="subsubsection_label">6.26.3</span> Zombie <i>binary_c</i> processes </h4> +<div class="standard" id='magicparlabel-4286'><div id="FAQ_Zombie_binary_c"></div> </div> -<div class="standard" id='magicparlabel-4262'><b>This section is only relevant if you use the <em>Perl </em>backend.</b></div> +<div class="standard" id='magicparlabel-4287'><b>This section is only relevant if you use the <em>Perl </em>backend.</b></div> -<div class="standard" id='magicparlabel-4263'>When the grid exits abnormally, or is killed, a <em><span class='math'>binary_c</i></span> +<div class="standard" id='magicparlabel-4288'>When the grid exits abnormally, or is killed, a <em><span class='math'>binary_c</i></span> </em>process may be left behind in an infinite loop state and as such will take up your precious CPU time. You will have to kill it manually <em>if you are sure it is not doing anything with another grid process! </em>(Be careful and do <em>not</em> do “killall <i>binary_c</i>” as root…)</div> -<h4 class="subsubsection" id='magicparlabel-4264'><span class="subsubsection_label">6.26.4</span> Zombie Perl processes </h4> -<div class="standard" id='magicparlabel-4265'><b>This section is only relevant if you use the <em>Perl </em>backend.</b></div> +<h4 class="subsubsection" id='magicparlabel-4289'><span class="subsubsection_label">6.26.4</span> Zombie Perl processes </h4> +<div class="standard" id='magicparlabel-4290'><b>This section is only relevant if you use the <em>Perl </em>backend.</b></div> -<div class="standard" id='magicparlabel-4266'><div id="FAQ_Zombie_perl"></div> +<div class="standard" id='magicparlabel-4291'><div id="FAQ_Zombie_perl"></div> These should die naturally when the grid finishes and the Perl script exits. They are harmless and have never been seen to consume CPU time.</div> -<h4 class="subsubsection" id='magicparlabel-4267'><span class="subsubsection_label">6.26.5</span> Setting functions and/or function pointers </h4> -<div class="standard" id='magicparlabel-4268'><div id="FAQ_functions_and_pointers"></div> +<h4 class="subsubsection" id='magicparlabel-4292'><span class="subsubsection_label">6.26.5</span> Setting functions and/or function pointers </h4> +<div class="standard" id='magicparlabel-4293'><div id="FAQ_functions_and_pointers"></div> </div> -<div class="standard" id='magicparlabel-4269'><b>Please set function pointers, not function names, especially with the <i>C</i> backend. I may remove this functionality in future, however convenient it once was. Function names will definitely not work with the <i>C</i> backend.</b></div> +<div class="standard" id='magicparlabel-4294'><b>Please set function pointers, not function names, especially with the <i>C</i> backend. I may remove this functionality in future, however convenient it once was. Function names will definitely not work with the <i>C</i> backend.</b></div> -<div class="standard" id='magicparlabel-4270'>In the good old days you had to set up function pointers, e.g. <span class="flex_perlcode">\&parse_bse</span>, manually when setting up your grid. However, in the latest version of <em><span class="flex_perlcode">flexigrid()</span></em>, this is set automatically (from <span class="flex_perlcode">\&main::parse_bse</span>). However, you can override the settings. </div> +<div class="standard" id='magicparlabel-4295'>In the good old days you had to set up function pointers, e.g. <span class="flex_perlcode">\&parse_bse</span>, manually when setting up your grid. However, in the latest version of <em><span class="flex_perlcode">flexigrid()</span></em>, this is set automatically (from <span class="flex_perlcode">\&main::parse_bse</span>). However, you can override the settings. </div> -<div class="standard" id='magicparlabel-4283'>As an example, if you want to set the <span class="flex_perlcode">parse_bse_function_pointer</span>, just set<span style='font-family:monospace;font-size: 18px;'> <br /> +<div class="standard" id='magicparlabel-4308'>As an example, if you want to set the <span class="flex_perlcode">parse_bse_function_pointer</span>, just set<span style='font-family:monospace;font-size: 18px;'> <br /> <pre class ='listings Perl'>$binary_grid::grid_options{parse_bse_function}='my_parse_bse';</pre><br /> </span>where <span class="flex_perlcode">my_parse_bse</span> is your new function name. <br /> This will automatically be converted into <span class="flex_perlcode">\&main::my_parse_bse</span> at runtime.</div> -<div class="standard" id='magicparlabel-4300'>This process is applied to any <span class="flex_perlcode">grid_option</span> whose key ends in <span class="flex_perlcode">_function</span>. These include </div> +<div class="standard" id='magicparlabel-4325'>This process is applied to any <span class="flex_perlcode">grid_option</span> whose key ends in <span class="flex_perlcode">_function</span>. These include </div> -<ul class="itemize" id='magicparlabel-4309'><li class="itemize_item"><span class="flex_perlcode">thread_precreate_function</span></li> +<ul class="itemize" id='magicparlabel-4334'><li class="itemize_item"><span class="flex_perlcode">thread_precreate_function</span></li> <li class="itemize_item"><span class="flex_perlcode">threads_entry_function</span></li> <li class="itemize_item"><span class="flex_perlcode">threads_flush_function</span></li> <li class="itemize_item"><span class="flex_perlcode">thread_postrun_function</span></li> @@ -5267,25 +5306,25 @@ This will automatically be converted into <span class="flex_perlcode">\&main <li class="itemize_item"><span class="flex_perlcode">threads_join_function</span></li> <li class="itemize_item"><span class="flex_perlcode">thread_postjoin_function</span></li> </ul> -<div class="standard" id='magicparlabel-4344'>These are all <span class="flex_perlcode">undef</span> by default, so are ignored (unless you override them with function names), except +<div class="standard" id='magicparlabel-4369'>These are all <span class="flex_perlcode">undef</span> by default, so are ignored (unless you override them with function names), except <br /> <span class="flex_perlcode">threads_join_function</span> which is set to <span class="flex_perlcode">binary_grid::join_flexigrid_thread</span> as usual.</div> -<h3 class="subsection" id='magicparlabel-4357'><span class="subsection_label">6.27</span> Multi-core scaling</h3> -<div class="standard" id='magicparlabel-4360'>The <i>binary_grid</i> software is used to run <i>binary_c</i>, and other stellar evolution codes, on either a single CPU or a grid of machines, e.g. with its <span class="flex_software">HTCondor</span> extension module. It is important to know whether <span class='math'>\binarygrid</span> +<h3 class="subsection" id='magicparlabel-4382'><span class="subsection_label">6.27</span> Multi-core scaling</h3> +<div class="standard" id='magicparlabel-4385'>The <i>binary_grid</i> software is used to run <i>binary_c</i>, and other stellar evolution codes, on either a single CPU or a grid of machines, e.g. with its <span class="flex_software">HTCondor</span> extension module. It is important to know whether <span class='math'>\binarygrid</span> scales appropriately to running on <math xmlns="http://www.w3.org/1998/Math/MathML"><mstyle mathvariant='sans-serif-italic' mathsize='85%'> <mrow><mi>N</mi> </mrow></mstyle></math> CPUs. This document answers this question by looking at <em>CPU-bound </em>and <em>IO-bound</em> jobs. In conclusion: it scales very well.<em> </em></div> -<h3 class="subsection" id='magicparlabel-4365'><span class="subsection_label">6.28</span> Testing Setup</h3> -<div class="standard" id='magicparlabel-4366'>It is not ideal to use <span class='math'>binary_c</i></span> +<h3 class="subsection" id='magicparlabel-4390'><span class="subsection_label">6.28</span> Testing Setup</h3> +<div class="standard" id='magicparlabel-4391'>It is not ideal to use <span class='math'>binary_c</i></span> as an evolution code. Instead, a <span class="flex_scriptinglanguage">Perl</span> script called <br /> -<span class="flex_file">./src/perl/scripts-flexigrid/<i>binary_c</i>-dummy.pl</span> was developed<div class="foot"><span class="foot_label">7</span><div class="foot_inner"><div class="plain_layout" id='magicparlabel-4378'>All files are relative to my<em> <span class='math'>binary_c</i></span> +<span class="flex_file">./src/perl/scripts-flexigrid/<i>binary_c</i>-dummy.pl</span> was developed<div class="foot"><span class="foot_label">7</span><div class="foot_inner"><div class="plain_layout" id='magicparlabel-4403'>All files are relative to my<em> <span class='math'>binary_c</i></span> </em>branch – or maybe the trunk if I have time to merge it!</div> </div></div>. This has the following features:</div> -<ol class="enumerate" id='magicparlabel-4379'><li class="enumerate_item">It can output <em><math xmlns="http://www.w3.org/1998/Math/MathML"><mstyle mathvariant='sans-serif-italic' mathsize='85%'> +<ol class="enumerate" id='magicparlabel-4404'><li class="enumerate_item">It can output <em><math xmlns="http://www.w3.org/1998/Math/MathML"><mstyle mathvariant='sans-serif-italic' mathsize='85%'> <mrow> <msub subscriptshift="0.2ex"> <mrow><mi>n</mi> @@ -5310,18 +5349,18 @@ This will automatically be converted into <span class="flex_perlcode">\&main </mrow> </msub> </mrow></mstyle></math> stars, both are free parameters. This simulates I/O limited runs.</li> -<li class="enumerate_item">It simulates CPU burn (“spin” mode<div class="foot"><span class="foot_label">8</span><div class="foot_inner"><div class="plain_layout" id='magicparlabel-4384'>A <span class="flex_perlcode">while{}</span> loop until a specified time has lapsed.</div> -</div></div>) or can simply “sleep” (with no CPU activity<div class="foot"><span class="foot_label">9</span><div class="foot_inner"><div class="plain_layout" id='magicparlabel-4392'>A call to the <span class="flex_perlmodule">Time::HiRes</span> <span style='font-family:monospace;font-size: 18px;'>sleep</span> function.</div> +<li class="enumerate_item">It simulates CPU burn (“spin” mode<div class="foot"><span class="foot_label">8</span><div class="foot_inner"><div class="plain_layout" id='magicparlabel-4409'>A <span class="flex_perlcode">while{}</span> loop until a specified time has lapsed.</div> +</div></div>) or can simply “sleep” (with no CPU activity<div class="foot"><span class="foot_label">9</span><div class="foot_inner"><div class="plain_layout" id='magicparlabel-4417'>A call to the <span class="flex_perlmodule">Time::HiRes</span> <span style='font-family:monospace;font-size: 18px;'>sleep</span> function.</div> </div></div>) for a specified time <math xmlns="http://www.w3.org/1998/Math/MathML"><mstyle mathvariant='sans-serif-italic' mathsize='85%'> <mrow> <mrow><mi> δ </mi><mi>t</mi> </mrow> </mrow></mstyle></math>.</li> </ol> -<div class="standard" id='magicparlabel-4397'>By using this dummy script instead of <span class='math'>binary_c</i></span> +<div class="standard" id='magicparlabel-4422'>By using this dummy script instead of <span class='math'>binary_c</i></span> we control the CPU and I/O usage precisely without relying on a complicated, and difficult to predict, piece of code to do it for us.</div> -<h4 class="subsubsection" id='magicparlabel-4398'><span class="subsubsection_label">6.28.1</span> Multithread overhead</h4> -<div class="standard" id='magicparlabel-4399'>The <em><span class='math'>\binarygrid</span> +<h4 class="subsubsection" id='magicparlabel-4423'><span class="subsubsection_label">6.28.1</span> Multithread overhead</h4> +<div class="standard" id='magicparlabel-4424'>The <em><span class='math'>\binarygrid</span> </em> software is designed to speed up running a full parameter space by splitting the work into <math xmlns="http://www.w3.org/1998/Math/MathML"><mstyle mathvariant='sans-serif-italic' mathsize='85%'> <mrow><mi>N</mi> </mrow></mstyle></math> threads (or <math xmlns="http://www.w3.org/1998/Math/MathML"><mstyle mathvariant='sans-serif-italic' mathsize='85%'> @@ -5364,7 +5403,7 @@ This will automatically be converted into <span class="flex_perlcode">\&main </mrow> </mrow></mstyle></math>. The runtime of this grid is then subtracted from the runtime of the true grid to accurately calculate the runtime of the grid while it is doing useful work.</div> -<div class="standard" id='magicparlabel-4408'>When the grid resolution is large, e.g. <math xmlns="http://www.w3.org/1998/Math/MathML"><mstyle mathvariant='sans-serif-italic' mathsize='85%'> +<div class="standard" id='magicparlabel-4433'>When the grid resolution is large, e.g. <math xmlns="http://www.w3.org/1998/Math/MathML"><mstyle mathvariant='sans-serif-italic' mathsize='85%'> <mrow> <mrow> <msub subscriptshift="0.2ex"> @@ -5379,16 +5418,16 @@ This will automatically be converted into <span class="flex_perlcode">\&main </msub><mo> ≳ </mo><mn>1000</mn> </mrow> </mrow></mstyle></math>, the overhead cost is negligible. It is really only useful to subtract it to obtain more precise results and work with fewer stars.</div> -<h4 class="subsubsection" id='magicparlabel-4409'><span class="subsubsection_label">6.28.2</span> PC setup</h4> -<div class="standard" id='magicparlabel-4410'>The tests were run on the <em>klaipeda2 </em>machine at the Argelander Institute for Astronomy (AIfA). This is a 16-core (<math xmlns="http://www.w3.org/1998/Math/MathML"><mstyle mathvariant='sans-serif-italic' mathsize='85%'> +<h4 class="subsubsection" id='magicparlabel-4434'><span class="subsubsection_label">6.28.2</span> PC setup</h4> +<div class="standard" id='magicparlabel-4435'>The tests were run on the <em>klaipeda2 </em>machine at the Argelander Institute for Astronomy (AIfA). This is a 16-core (<math xmlns="http://www.w3.org/1998/Math/MathML"><mstyle mathvariant='sans-serif-italic' mathsize='85%'> <mrow> <mrow><mn>4</mn><mo> × </mo> </mrow> </mrow></mstyle></math> quad-core AMD Opteron 8378) machine with CPU speeds of 2.4GHz (4800 bogomips), 512KB cache and 64GB (shared) RAM. Mostly the cores were empty, occasionally only 15 were available. This has a negligible effect on the results.</div> -<div class="standard" id='magicparlabel-4411'>A few smaller scale tests were carried out on <em>aibn36</em> at the AIfA. This is a 4-core AMD Phenom II X4 945 running at 3GHz (6027 bogomips) with 8GB RAM. This machine was often multitasking with (background) jobs and a full KDE desktop running in the foreground. </div> -<h4 class="subsubsection" id='magicparlabel-4412'><span class="subsubsection_label">6.28.3</span> Score</h4> -<div class="standard" id='magicparlabel-4413'>Each test run has an associated <em>score </em>which is defined as, <math display="block" xmlns="http://www.w3.org/1998/Math/MathML"><mstyle mathvariant='sans-serif-italic' mathsize='85%'> +<div class="standard" id='magicparlabel-4436'>A few smaller scale tests were carried out on <em>aibn36</em> at the AIfA. This is a 4-core AMD Phenom II X4 945 running at 3GHz (6027 bogomips) with 8GB RAM. This machine was often multitasking with (background) jobs and a full KDE desktop running in the foreground. </div> +<h4 class="subsubsection" id='magicparlabel-4437'><span class="subsubsection_label">6.28.3</span> Score</h4> +<div class="standard" id='magicparlabel-4438'>Each test run has an associated <em>score </em>which is defined as, <math display="block" xmlns="http://www.w3.org/1998/Math/MathML"><mstyle mathvariant='sans-serif-italic' mathsize='85%'> <mtable> <mtr> <mtd> @@ -5465,19 +5504,19 @@ This will automatically be converted into <span class="flex_perlcode">\&main </msub> </mrow></mstyle></math> is the number of threads used.</div> -<div class="standard" id='magicparlabel-4414'>A score of <math xmlns="http://www.w3.org/1998/Math/MathML"><mstyle mathvariant='sans-serif-italic' mathsize='85%'> +<div class="standard" id='magicparlabel-4439'>A score of <math xmlns="http://www.w3.org/1998/Math/MathML"><mstyle mathvariant='sans-serif-italic' mathsize='85%'> <mrow><mn>1.0</mn> </mrow></mstyle></math> is considered <em>perfect scaling.</em> Higher scores are <em>bad scaling</em> and occasionally scores slightly less than <math xmlns="http://www.w3.org/1998/Math/MathML"><mstyle mathvariant='sans-serif-italic' mathsize='85%'> <mrow><mn>1.0</mn> </mrow></mstyle></math> are seen. If <span class='math'>\binarygrid</span> does its job properly, the score should be around 1.0.</div> -<h3 class="subsection" id='magicparlabel-4415'><span class="subsection_label">6.29</span> Results</h3> -<h4 class="subsubsection" id='magicparlabel-4416'><span class="subsubsection_label">6.29.1</span> No CPU (sleep mode <math xmlns="http://www.w3.org/1998/Math/MathML"><mstyle mathvariant='sans-serif-italic' mathsize='85%'> +<h3 class="subsection" id='magicparlabel-4440'><span class="subsection_label">6.29</span> Results</h3> +<h4 class="subsubsection" id='magicparlabel-4441'><span class="subsubsection_label">6.29.1</span> No CPU (sleep mode <math xmlns="http://www.w3.org/1998/Math/MathML"><mstyle mathvariant='sans-serif-italic' mathsize='85%'> <mrow> <mrow><mi> δ </mi><mi>t</mi><mo>=</mo><mn>0</mn> </mrow> </mrow></mstyle></math>)</h4> -<div class="standard" id='magicparlabel-4417'>When measuring runtimes in “sleep” mode it is trivial to test the pure grid and I/O overheads, as the sleep time can be set to zero (i.e. no “runtime” at all for <span class='math'>binary_c</i></span> +<div class="standard" id='magicparlabel-4442'>When measuring runtimes in “sleep” mode it is trivial to test the pure grid and I/O overheads, as the sleep time can be set to zero (i.e. no “runtime” at all for <span class='math'>binary_c</i></span> ). <em>By definition</em> these runs are I/O limited because there is no CPU use associated with “stellar evolution”. Figure <a href="#fig_Timing_tests_klaipeda_dt0">2</a> shows the results. The scaling is <em>not good </em>with scores above 1.0 for all but the runs with <math xmlns="http://www.w3.org/1998/Math/MathML"><mstyle mathvariant='sans-serif-italic' mathsize='85%'> <mrow> <mrow> @@ -5494,9 +5533,9 @@ This will automatically be converted into <span class="flex_perlcode">\&main </mrow> </mrow></mstyle></math>. The tests on aibn36 show similar results (Fig. <a href="#fig_Timing_tests_aibn36_dt0">3</a>). </div> -<div class="standard" id='magicparlabel-4418'>The poor results suggest that I/O limited runs do not perfect well when large numbers of threads are employed. Using two threads is still a <em>lot</em> faster than using just one, but after that there is no improvement. </div> +<div class="standard" id='magicparlabel-4443'>The poor results suggest that I/O limited runs do not perfect well when large numbers of threads are employed. Using two threads is still a <em>lot</em> faster than using just one, but after that there is no improvement. </div> -<div class="standard" id='magicparlabel-4419'>The results can be understood if we consider that our I/O limited jobs <em>run at the maximum possible bandwidth of the CPU</em>. If the <span class='math'>\binarygrid</span> +<div class="standard" id='magicparlabel-4444'>The results can be understood if we consider that our I/O limited jobs <em>run at the maximum possible bandwidth of the CPU</em>. If the <span class='math'>\binarygrid</span> software <em>already maximises</em> its use of the I/O resources of the machine when running two threads, then running three or more will <em>never </em>result in reduced runtime. This describes the behaviour we see perfectly and is a limitation of the PC rather than <em><span class='math'>\binarygrid</span> </em>. The runtime then depends linearly on the product <math xmlns="http://www.w3.org/1998/Math/MathML"><mstyle mathvariant='sans-serif-italic' mathsize='85%'> <mrow> @@ -5525,10 +5564,10 @@ This will automatically be converted into <span class="flex_perlcode">\&main </mrow></mstyle></math>, as clearly shown in Figs. <a href="#fig_Timing_tests_klaipeda_dt0">2</a> and <a href="#fig_Timing_tests_aibn36_dt0">3</a>.</div> -<div class='float-figure'><div class="plain_layout" style='text-align: center;' id='magicparlabel-4424'><img style='width:85%;' src='images/6.png' alt='image: 12_tmp_binary_c_lyx_images_5.png' /> +<div class='float-figure'><div class="plain_layout" style='text-align: center;' id='magicparlabel-4449'><img style='width:85%;' src='images/6.png' alt='image: 12_tmp_binary_c_lyx_images_5.png' /> </div> -<div class="plain_layout" id='magicparlabel-4425'><span class='float-caption-Standard float-caption float-caption-standard'>Figure 2: Timing tests for <math xmlns="http://www.w3.org/1998/Math/MathML"><mstyle mathvariant='sans-serif-italic' mathsize='85%'> +<div class="plain_layout" id='magicparlabel-4450'><span class='float-caption-Standard float-caption float-caption-standard'>Figure 2: Timing tests for <math xmlns="http://www.w3.org/1998/Math/MathML"><mstyle mathvariant='sans-serif-italic' mathsize='85%'> <mrow> <mrow><mi> δ </mi><mi>t</mi><mo>=</mo><mn>0</mn> </mrow> @@ -5537,10 +5576,10 @@ This will automatically be converted into <span class="flex_perlcode">\&main </div> -<div class='float-figure'><div class="plain_layout" style='text-align: center;' id='magicparlabel-4434'><img style='width:85%;' src='images/7.png' alt='image: 13_tmp_binary_c_lyx_images_6.png' /> +<div class='float-figure'><div class="plain_layout" style='text-align: center;' id='magicparlabel-4459'><img style='width:85%;' src='images/7.png' alt='image: 13_tmp_binary_c_lyx_images_6.png' /> </div> -<div class="plain_layout" id='magicparlabel-4435'><span class='float-caption-Standard float-caption float-caption-standard'>Figure 3: Timing tests for <math xmlns="http://www.w3.org/1998/Math/MathML"><mstyle mathvariant='sans-serif-italic' mathsize='85%'> +<div class="plain_layout" id='magicparlabel-4460'><span class='float-caption-Standard float-caption float-caption-standard'>Figure 3: Timing tests for <math xmlns="http://www.w3.org/1998/Math/MathML"><mstyle mathvariant='sans-serif-italic' mathsize='85%'> <mrow> <mrow><mi> δ </mi><mi>t</mi><mo>=</mo><mn>0</mn> </mrow> @@ -5548,12 +5587,12 @@ This will automatically be converted into <span class="flex_perlcode">\&main </span></div> </div> -<h4 class="subsubsection" id='magicparlabel-4440'><span class="subsubsection_label">6.29.2</span> 1.0s runs (sleep mode <math xmlns="http://www.w3.org/1998/Math/MathML"><mstyle mathvariant='sans-serif-italic' mathsize='85%'> +<h4 class="subsubsection" id='magicparlabel-4465'><span class="subsubsection_label">6.29.2</span> 1.0s runs (sleep mode <math xmlns="http://www.w3.org/1998/Math/MathML"><mstyle mathvariant='sans-serif-italic' mathsize='85%'> <mrow> <mrow><mi> δ </mi><mi>t</mi><mo>=</mo><mn>1.0</mn> </mrow> </mrow></mstyle></math>)</h4> -<div class="standard" id='magicparlabel-4441'>Next up are sleep mode runs with <math xmlns="http://www.w3.org/1998/Math/MathML"><mstyle mathvariant='sans-serif-italic' mathsize='85%'> +<div class="standard" id='magicparlabel-4466'>Next up are sleep mode runs with <math xmlns="http://www.w3.org/1998/Math/MathML"><mstyle mathvariant='sans-serif-italic' mathsize='85%'> <mrow> <mrow><mi> δ </mi><mi>t</mi><mo>=</mo><mn>1.0</mn> <mstyle mathvariant='normal'><mi>s</mi> @@ -5564,10 +5603,10 @@ This will automatically be converted into <span class="flex_perlcode">\&main <mrow><mn>1.0</mn> </mrow></mstyle></math> are <em>always</em> achieved, showing the <span class='math'>\binarygrid</span> does an excellent job in this case.</div> -<div class='float-figure'><div class="plain_layout" style='text-align: center;' id='magicparlabel-4445'><img style='width:85%;' src='images/8.png' alt='image: 14_tmp_binary_c_lyx_images_7.png' /> +<div class='float-figure'><div class="plain_layout" style='text-align: center;' id='magicparlabel-4470'><img style='width:85%;' src='images/8.png' alt='image: 14_tmp_binary_c_lyx_images_7.png' /> </div> -<div class="plain_layout" id='magicparlabel-4446'><span class='float-caption-Standard float-caption float-caption-standard'>Figure 4: Timing tests for <math xmlns="http://www.w3.org/1998/Math/MathML"><mstyle mathvariant='sans-serif-italic' mathsize='85%'> +<div class="plain_layout" id='magicparlabel-4471'><span class='float-caption-Standard float-caption float-caption-standard'>Figure 4: Timing tests for <math xmlns="http://www.w3.org/1998/Math/MathML"><mstyle mathvariant='sans-serif-italic' mathsize='85%'> <mrow> <mrow><mi> δ </mi><mi>t</mi><mo>=</mo><mn>1</mn> </mrow> @@ -5575,12 +5614,12 @@ This will automatically be converted into <span class="flex_perlcode">\&main </span></div> </div> -<h4 class="subsubsection" id='magicparlabel-4451'><span class="subsubsection_label">6.29.3</span> 1.0s runs (spin mode <math xmlns="http://www.w3.org/1998/Math/MathML"><mstyle mathvariant='sans-serif-italic' mathsize='85%'> +<h4 class="subsubsection" id='magicparlabel-4476'><span class="subsubsection_label">6.29.3</span> 1.0s runs (spin mode <math xmlns="http://www.w3.org/1998/Math/MathML"><mstyle mathvariant='sans-serif-italic' mathsize='85%'> <mrow> <mrow><mi> δ </mi><mi>t</mi><mo>=</mo><mn>1.0</mn> </mrow> </mrow></mstyle></math>)</h4> -<div class="standard" id='magicparlabel-4452'>With no I/O (Fig. <a href="#fig_Timing_tests_klaipeda_spin_dt1_Nlines0">5</a>), i.e. <math xmlns="http://www.w3.org/1998/Math/MathML"><mstyle mathvariant='sans-serif-italic' mathsize='85%'> +<div class="standard" id='magicparlabel-4477'>With no I/O (Fig. <a href="#fig_Timing_tests_klaipeda_spin_dt1_Nlines0">5</a>), i.e. <math xmlns="http://www.w3.org/1998/Math/MathML"><mstyle mathvariant='sans-serif-italic' mathsize='85%'> <mrow> <mrow> <msub subscriptshift="0.2ex"> @@ -5600,10 +5639,10 @@ This will automatically be converted into <span class="flex_perlcode">\&main <mrow><mo> ≳ </mo><mn>100</mn> </mrow> </mrow></mstyle></math>). With 10 stars and 32 threads, the tests are pretty much meaningless in any case because 22 threads do no work at all! </div> -<div class='float-figure'><div class="plain_layout" style='text-align: center;' id='magicparlabel-4456'><img style='width:85%;' src='images/9.png' alt='image: 15_tmp_binary_c_lyx_images_8.png' /> +<div class='float-figure'><div class="plain_layout" style='text-align: center;' id='magicparlabel-4481'><img style='width:85%;' src='images/9.png' alt='image: 15_tmp_binary_c_lyx_images_8.png' /> </div> -<div class="plain_layout" id='magicparlabel-4457'><span class='float-caption-Standard float-caption float-caption-standard'>Figure 5: Timing tests for <math xmlns="http://www.w3.org/1998/Math/MathML"><mstyle mathvariant='sans-serif-italic' mathsize='85%'> +<div class="plain_layout" id='magicparlabel-4482'><span class='float-caption-Standard float-caption float-caption-standard'>Figure 5: Timing tests for <math xmlns="http://www.w3.org/1998/Math/MathML"><mstyle mathvariant='sans-serif-italic' mathsize='85%'> <mrow> <mrow><mi> δ </mi><mi>t</mi><mo>=</mo><mn>1</mn> </mrow> @@ -5612,7 +5651,7 @@ This will automatically be converted into <span class="flex_perlcode">\&main </div> -<div class="standard" id='magicparlabel-4462'>With large amounts of I/O (<math xmlns="http://www.w3.org/1998/Math/MathML"><mstyle mathvariant='sans-serif-italic' mathsize='85%'> +<div class="standard" id='magicparlabel-4487'>With large amounts of I/O (<math xmlns="http://www.w3.org/1998/Math/MathML"><mstyle mathvariant='sans-serif-italic' mathsize='85%'> <mrow> <mrow> <msub subscriptshift="0.2ex"> @@ -5642,10 +5681,10 @@ This will automatically be converted into <span class="flex_perlcode">\&main </mrow> </mrow></mstyle></math><em>.</em> Again <span class='math'>\binarygrid</span> does a great job.</div> -<div class='float-figure'><div class="plain_layout" style='text-align: center;' id='magicparlabel-4466'><img style='width:95%;' src='images/10.png' alt='image: 16_tmp_binary_c_lyx_images_9.png' /> +<div class='float-figure'><div class="plain_layout" style='text-align: center;' id='magicparlabel-4491'><img style='width:95%;' src='images/10.png' alt='image: 16_tmp_binary_c_lyx_images_9.png' /> </div> -<div class="plain_layout" id='magicparlabel-4467'><span class='float-caption-Standard float-caption float-caption-standard'>Figure 6: Timing tests for <math xmlns="http://www.w3.org/1998/Math/MathML"><mstyle mathvariant='sans-serif-italic' mathsize='85%'> +<div class="plain_layout" id='magicparlabel-4492'><span class='float-caption-Standard float-caption float-caption-standard'>Figure 6: Timing tests for <math xmlns="http://www.w3.org/1998/Math/MathML"><mstyle mathvariant='sans-serif-italic' mathsize='85%'> <mrow> <mrow><mi> δ </mi><mi>t</mi><mo>=</mo><mn>1</mn> </mrow> @@ -5667,44 +5706,44 @@ This will automatically be converted into <span class="flex_perlcode">\&main </span></div> </div> -<h3 class="subsection" id='magicparlabel-4472'><span class="subsection_label">6.30</span> Conclusions</h3> -<div class="standard" id='magicparlabel-4473'><em><span class='math'>\binarygrid</span> +<h3 class="subsection" id='magicparlabel-4497'><span class="subsection_label">6.30</span> Conclusions</h3> +<div class="standard" id='magicparlabel-4498'><em><span class='math'>\binarygrid</span> </em>does an excellent job of scaling to the number of CPUs available on multi-core architectures. The only exception is when a) the runtime is very short and b) the amount of data I/O is very large.</div> -<div class="standard" id='magicparlabel-4474'>How can we improve this situation? Naturally, the first choice is the limit the amount of output from <span class='math'>binary_c</i></span> +<div class="standard" id='magicparlabel-4499'>How can we improve this situation? Naturally, the first choice is the limit the amount of output from <span class='math'>binary_c</i></span> whenever possible. A first step is to for the user to choose what output is <em>truly necessary </em>for their project and only output this. However, this is not always a trivial question to answer. At some level, the CPU and I/O bus of the machine has limited bandwidth, and if it is this that is the bottleneck there is little that can be done <em>except </em>buy better machines or just wait.</div> -<div class="standard" id='magicparlabel-4475'>To investigate whether Perl is the problem, I wrote a new function <span class="flex_perlcode">tbse_lines</span> which, instead of returning data line by line (as traditional calls to <span class="flex_perlcode">tbse_line</span> do) takes the data for each star, bundles it in an array and then sends this back instead (as an array reference). In my tests this actually <em>costs more time</em> than simply sending data line by line, probably because there is overhead involved in setting up an array and returning it. I will leave this in <span class='math'>\binarygrid</span> +<div class="standard" id='magicparlabel-4500'>To investigate whether Perl is the problem, I wrote a new function <span class="flex_perlcode">tbse_lines</span> which, instead of returning data line by line (as traditional calls to <span class="flex_perlcode">tbse_line</span> do) takes the data for each star, bundles it in an array and then sends this back instead (as an array reference). In my tests this actually <em>costs more time</em> than simply sending data line by line, probably because there is overhead involved in setting up an array and returning it. I will leave this in <span class='math'>\binarygrid</span> (as of version 0.24) for you to try.</div> -<div class="standard" id='magicparlabel-4484'>Other updates to <span class='math'>\binarygrid</span> +<div class="standard" id='magicparlabel-4509'>Other updates to <span class='math'>\binarygrid</span> version 0.24 include the complete removal of support for separate <span class="flex_cvar">stdout</span> and <span class="flex_cvar">stderr</span> streams from the evolution code. I used to handle these streams separately, but if either stream buffer should fill then there would be deadlock. This could happen, for example, if there were a lot of errors so the <span class="flex_cvar">stderr</span> buffer fills before <span class="flex_cvar">stdout</span> is checked again. See also <a href="http://perl.plover.com/FAQs/Buffering.html">http://perl.plover.com/FAQs/Buffering.html</a>.</div> -<div class="standard" id='magicparlabel-4501'>The latest grid <em>should</em> be faster because it combines <span class="flex_cvar">stdout</span> and <span class="flex_cvar">stderr</span>. Instead of having to flush the <span class="flex_cvar">stderr</span> buffer for each <span class="flex_cvar">stdout</span> read, it now just blocks on the combined <span class="flex_cvar">stdout</span>/<span class="flex_cvar">stderr</span>. The downside is that the user must detect errors:<em> <span class='math'>\binarygrid</span> +<div class="standard" id='magicparlabel-4526'>The latest grid <em>should</em> be faster because it combines <span class="flex_cvar">stdout</span> and <span class="flex_cvar">stderr</span>. Instead of having to flush the <span class="flex_cvar">stderr</span> buffer for each <span class="flex_cvar">stdout</span> read, it now just blocks on the combined <span class="flex_cvar">stdout</span>/<span class="flex_cvar">stderr</span>. The downside is that the user must detect errors:<em> <span class='math'>\binarygrid</span> </em>can no longer do it. This is generally not a problem because the user only cares about their own lines of data, prefixed with the appropriate header string (e.g. in <span class="flex_perlcode">parse_bse()</span>).</div> -<div class="standard" id='magicparlabel-4530'>I have also considered whether it is the<em> </em>use of pipes to communicate to/from the evolution code that slows down <em><i>binary_grid</i></em> in an I/O dominated case. One way to test this would be to compress the returned data and send it in (say) <span class="flex_software">7zipped</span> or <span class="flex_software">bzipped</span> chunks of data instead of raw <em>ASCII</em> as at present. However, the overhead required for the compression slows down the data transfer so much that this seems to be a non-starter. I tried to compress the array provided by <span class="flex_perlscript">tbse_lines</span> with <span class="flex_perlmodule">Compress::Zlib::memGzip</span> and, while it works, it slowed the test grid – with lots of I/O! – by more than 30%. Perhaps there is a smarter way to do this, but I haven't found it yet. If you're interested, find the <span class="flex_perlcode">tbse_compressed_lines()</span> function in <em><span class='math'>\binarygrid</span> +<div class="standard" id='magicparlabel-4555'>I have also considered whether it is the<em> </em>use of pipes to communicate to/from the evolution code that slows down <em><i>binary_grid</i></em> in an I/O dominated case. One way to test this would be to compress the returned data and send it in (say) <span class="flex_software">7zipped</span> or <span class="flex_software">bzipped</span> chunks of data instead of raw <em>ASCII</em> as at present. However, the overhead required for the compression slows down the data transfer so much that this seems to be a non-starter. I tried to compress the array provided by <span class="flex_perlscript">tbse_lines</span> with <span class="flex_perlmodule">Compress::Zlib::memGzip</span> and, while it works, it slowed the test grid – with lots of I/O! – by more than 30%. Perhaps there is a smarter way to do this, but I haven't found it yet. If you're interested, find the <span class="flex_perlcode">tbse_compressed_lines()</span> function in <em><span class='math'>\binarygrid</span> .</em></div> -<div class="standard" id='magicparlabel-4551'>Of course, none of this matters if you don't use <em><span class='math'>\binarygrid</span> +<div class="standard" id='magicparlabel-4576'>Of course, none of this matters if you don't use <em><span class='math'>\binarygrid</span> </em> the way it's designed. Sure, you can save your million-line data file to disk and reprocess it, but <em>nothing</em> will be faster than processing data on the fly. Also, when using <em><span class="flex_software">HTCondor</span></em>, remember to be smart and join the threads on the machine containing the data rather than across an NFS mountpoint on a PC in another building. Nothing I do in programming <em><span class='math'>\binarygrid</span> </em> better can make up stupid user decisions…</div> -<div class="standard" id='magicparlabel-4556'><br /> +<div class="standard" id='magicparlabel-4581'><br /> </div> -<h2 class="section" id='magicparlabel-4557'><span class="section_label">7</span> <em><i>binary_c</i> </em>API</h2> -<div class="standard" id='magicparlabel-4560'>The following describes functions in the <em><i>binary_c</i></em> <em>C</em> API. These functions are provided for access to <em><i>binary_c</i></em> through its shared library interface, <i>libbinary_c.so</i>, which is used by (for example) <em><i>binary_grid2</i> </em>with its <em>C</em> backend.</div> -<h3 class="subsection" id='magicparlabel-4561'><span class="subsection_label">7.1</span> Naming conventions</h3> +<h2 class="section" id='magicparlabel-4582'><span class="section_label">7</span> <em><i>binary_c</i> </em>API</h2> +<div class="standard" id='magicparlabel-4585'>The following describes functions in the <em><i>binary_c</i></em> <em>C</em> API. These functions are provided for access to <em><i>binary_c</i></em> through its shared library interface, <i>libbinary_c.so</i>, which is used by (for example) <em><i>binary_grid2</i> </em>with its <em>C</em> backend.</div> +<h3 class="subsection" id='magicparlabel-4586'><span class="subsection_label">7.1</span> Naming conventions</h3> -<ul class="itemize" id='magicparlabel-4562'><li class="itemize_item">Names of functions in the <span class='math'>binary_c</i></span> +<ul class="itemize" id='magicparlabel-4587'><li class="itemize_item">Names of functions in the <span class='math'>binary_c</i></span> API start with binary_c_</li> <li class="itemize_item">Functions are declared with the attribute <span class="flex_cmacro">binary_c_API_function</span></li> <li class="itemize_item">The <span class='math'>binary_c</i></span> structure types -<ul class="itemize" id='magicparlabel-4569'><li class="itemize_item"><span class="flex_cstruct">stardata_t</span></li> +<ul class="itemize" id='magicparlabel-4594'><li class="itemize_item"><span class="flex_cstruct">stardata_t</span></li> <li class="itemize_item"><span class="flex_cstruct">star_t</span></li> <li class="itemize_item"><span class="flex_cstruct">preferences_t</span></li> <li class="itemize_item"><span class="flex_cstruct">store_t</span></li> @@ -5713,9 +5752,9 @@ This will automatically be converted into <span class="flex_perlcode">\&main <li class="itemize_item"><span class="flex_cstruct">common_t</span></li> <li class="itemize_item">etc.</li> </ul> -<div class="standard" id='magicparlabel-4605'>should be declared in external code as</div> +<div class="standard" id='magicparlabel-4630'>should be declared in external code as</div> -<ul class="itemize" id='magicparlabel-4606'><li class="itemize_item"><span class="flex_cstruct">libbinary_c_stardata_t</span></li> +<ul class="itemize" id='magicparlabel-4631'><li class="itemize_item"><span class="flex_cstruct">libbinary_c_stardata_t</span></li> <li class="itemize_item"><span class="flex_cstruct">libbinary_c_star_t</span></li> <li class="itemize_item"><span class="flex_cstruct">libbinary_c_preferences_t</span></li> <li class="itemize_item"><span class="flex_cstruct">libbinary_c_store_t</span></li> @@ -5724,29 +5763,29 @@ This will automatically be converted into <span class="flex_perlcode">\&main <li class="itemize_item"><span class="flex_cstruct">libbinary_c_common_t</span></li> <li class="itemize_item"><span class="flex_cstruct">libbinary_c_…</span></li> </ul> -<div class="standard" id='magicparlabel-4646'>This avoids name clashes with the functions of other libraries.</div> +<div class="standard" id='magicparlabel-4671'>This avoids name clashes with the functions of other libraries.</div> </li></ul> -<h4 class="subsubsection" id='magicparlabel-4647'><span class="subsubsection_label">7.1.1</span> <i>binary_c</i> macros</h4> -<div class="standard" id='magicparlabel-4648'><em>Binary_c</em> defines the following:</div> +<h4 class="subsubsection" id='magicparlabel-4672'><span class="subsubsection_label">7.1.1</span> <i>binary_c</i> macros</h4> +<div class="standard" id='magicparlabel-4673'><em>Binary_c</em> defines the following:</div> -<dl class='description' id='magicparlabel-4649'><dt class="description_label"><span class="flex_cmacro">RESTRICT</span></dt> +<dl class='description' id='magicparlabel-4674'><dt class="description_label"><span class="flex_cmacro">RESTRICT</span></dt> <dd class="description_item"> This is set to <span class="flex_cmacro">__restrict__</span> or a suitable equivalent when available (this depends on the compiler). </dd> <dt class="description_label"><span class="flex_cmacro">binary_c_API_function</span></dt> <dd class="description_item"> This is set to <span class="flex_cmacro">__attribute__ ((visibility("default")))</span> which is standard for exporting functions to shared libraries with <span class="flex_software">gcc</span> (and presumably <span class="flex_software">clang</span>). I have not yet investigated the equivalent for other compilers.</dd> </dl> -<h4 class="subsubsection" id='magicparlabel-4675'><span class="subsubsection_label">7.1.2</span> <i>binary_c</i> headers</h4> -<div class="standard" id='magicparlabel-4676'>Most <em><span class='math'>binary_c</i></span> +<h4 class="subsubsection" id='magicparlabel-4700'><span class="subsubsection_label">7.1.2</span> <i>binary_c</i> headers</h4> +<div class="standard" id='magicparlabel-4701'>Most <em><span class='math'>binary_c</i></span> </em> headers are loaded through <span class="flex_headerfile"><i>binary_c</i>.h</span>. While it slows compilation to include <em>all</em> the headers, the convenience (and imposed structure) of having just one file to access headers overrides this.</div> -<h3 class="subsection" id='magicparlabel-4681'><span class="subsection_label">7.2</span> Using the API</h3> -<div class="standard" id='magicparlabel-4682'>Using the API is simple in languages that can embed <span class="flex_programminglanguage">C</span> directly, e.g. <span class="flex_programminglanguage">C</span>, <span class="flex_programminglanguage">C++</span>, <span class="flex_programminglanguage">Perl</span> and <span class="flex_programminglanguage">Python</span>. Some other languages, e.g. <span class="flex_programminglanguage">FORTRAN</span>, require a special set of functions to be written in order to talk to them. Fortunately for you, I have already done this in <span class="flex_scriptinglanguage">FORTRAN</span>.</div> -<h4 class="subsubsection" id='magicparlabel-4711'><span class="subsubsection_label">7.2.1</span> In <i>C</i><div id="subsec_In_C"></div> +<h3 class="subsection" id='magicparlabel-4706'><span class="subsection_label">7.2</span> Using the API</h3> +<div class="standard" id='magicparlabel-4707'>Using the API is simple in languages that can embed <span class="flex_programminglanguage">C</span> directly, e.g. <span class="flex_programminglanguage">C</span>, <span class="flex_programminglanguage">C++</span>, <span class="flex_programminglanguage">Perl</span> and <span class="flex_programminglanguage">Python</span>. Some other languages, e.g. <span class="flex_programminglanguage">FORTRAN</span>, require a special set of functions to be written in order to talk to them. Fortunately for you, I have already done this in <span class="flex_scriptinglanguage">FORTRAN</span>.</div> +<h4 class="subsubsection" id='magicparlabel-4736'><span class="subsubsection_label">7.2.1</span> In <i>C</i><div id="subsec_In_C"></div> </h4> -<div class="standard" id='magicparlabel-4712'>To include the API functions, <span class="flex_headerfile"><i>binary_c</i>.h</span> must be included in your code. </div> -<h4 class="subsubsection" id='magicparlabel-4717'><span class="subsubsection_label">7.2.2</span> Macro clashes</h4> -<div class="standard" id='magicparlabel-4718'>You may find there is a clash between <em><span class='math'>binary_c</i></span> +<div class="standard" id='magicparlabel-4737'>To include the API functions, <span class="flex_headerfile"><i>binary_c</i>.h</span> must be included in your code. </div> +<h4 class="subsubsection" id='magicparlabel-4742'><span class="subsubsection_label">7.2.2</span> Macro clashes</h4> +<div class="standard" id='magicparlabel-4743'>You may find there is a clash between <em><span class='math'>binary_c</i></span> </em>'s <span class="flex_cmacro">Max</span> and <span class="flex_cmacro">Min</span> macros (and perhaps others) and various standard libraries. In which case, use <span class="flex_software">gcc</span>'s <span class="flex_cmacro">push_macro</span>/<span class="flex_cmacro">pop_macro</span> feature to include your functions in the following way:</div> -<div class="standard" id='magicparlabel-4739'><br /> +<div class="standard" id='magicparlabel-4764'><br /> <pre class ='listings <i>C</i>'>#pragma push_macro("Max") #pragma push_macro("Min") @@ -5766,19 +5805,19 @@ This will automatically be converted into <span class="flex_perlcode">\&main #pragma pop_macro("Max") </pre><br /> </div> -<h4 class="subsubsection" id='magicparlabel-4761'><span class="subsubsection_label">7.2.3</span> In <i>C</i>++</h4> -<div class="standard" id='magicparlabel-4762'>I have not written a wrapper in <span class="flex_programminglanguage">C++</span> because I figured you'd just use the <span class="flex_programminglanguage">C</span> functions. However, it might make sense to wrap the <span class="flex_programminglanguage">C</span> functions in some<em> </em><span class="flex_programminglanguage">C++</span> objects and indeed given that the <span class="flex_cstruct">stardata</span> struct functions very much like the data parts an object this should be quite trivial. Please let me know if you want to do this.</div> -<h4 class="subsubsection" id='magicparlabel-4783'><span class="subsubsection_label">7.2.4</span> In <i>FORTRAN</i></h4> -<div class="standard" id='magicparlabel-4784'>The file <span class="flex_file">binary_c_API_fortran.c</span> contains the API interface callable from <span class="flex_programminglanguage">FORTRAN</span>. The example <span class="flex_file">apitest.f90</span> (in the <em>apitest</em> directory) sets up and evolves a stellar system from <em><span class="flex_programminglanguage">FORTRAN</span></em>. Please take note of the following points:</div> +<h4 class="subsubsection" id='magicparlabel-4786'><span class="subsubsection_label">7.2.3</span> In <i>C</i>++</h4> +<div class="standard" id='magicparlabel-4787'>I have not written a wrapper in <span class="flex_programminglanguage">C++</span> because I figured you'd just use the <span class="flex_programminglanguage">C</span> functions. However, it might make sense to wrap the <span class="flex_programminglanguage">C</span> functions in some<em> </em><span class="flex_programminglanguage">C++</span> objects and indeed given that the <span class="flex_cstruct">stardata</span> struct functions very much like the data parts an object this should be quite trivial. Please let me know if you want to do this.</div> +<h4 class="subsubsection" id='magicparlabel-4808'><span class="subsubsection_label">7.2.4</span> In <i>FORTRAN</i></h4> +<div class="standard" id='magicparlabel-4809'>The file <span class="flex_file">binary_c_API_fortran.c</span> contains the API interface callable from <span class="flex_programminglanguage">FORTRAN</span>. The example <span class="flex_file">apitest.f90</span> (in the <em>apitest</em> directory) sets up and evolves a stellar system from <em><span class="flex_programminglanguage">FORTRAN</span></em>. Please take note of the following points:</div> -<ul class="itemize" id='magicparlabel-4801'><li class="itemize_item">Only the <span class="flex_cvar">argstring</span> interface works (no <span class="flex_cvar">argc</span> and <span class="flex_cvar">argv</span>)</li> +<ul class="itemize" id='magicparlabel-4826'><li class="itemize_item">Only the <span class="flex_cvar">argstring</span> interface works (no <span class="flex_cvar">argc</span> and <span class="flex_cvar">argv</span>)</li> <li class="itemize_item">Remember to put a <span class="flex_cmacro">NUL</span> character at the end of the <span class="flex_cvar">argstring</span> with <span class="flex_fortranfunction">char(0)</span></li> <li class="itemize_item">There is a special function <span class="flex_fortranfunction">binary_c_fortran_api_stardata_info</span> which can extract some data from a <span style='font-family:monospace;font-size: 18px;'>stardata</span> struct. You must write code in <span class="flex_programminglanguage">C</span> to extract the data, because <span class="flex_programminglanguage">FORTRAN</span> knows little about <span class="flex_programminglanguage">C</span> structures. This code is meant as an example: you can always write your own function and export it to your <span class='math'>binary_c</i></span> shared library with the <span class="flex_cmacro">binary_c_API_function</span> macro.</li> </ul> -<div class="standard" id='magicparlabel-4848'>The skeleton code below can be used as a basis to do whatever you like, see also <span class="flex_file">aptitest.f90</span> in the <span class="flex_file">apitest</span> directory.</div> +<div class="standard" id='magicparlabel-4873'>The skeleton code below can be used as a basis to do whatever you like, see also <span class="flex_file">aptitest.f90</span> in the <span class="flex_file">apitest</span> directory.</div> -<div class="standard" id='magicparlabel-4857'><br /> +<div class="standard" id='magicparlabel-4882'><br /> <pre class ='listings <i>FORTRAN</i>'>program binary_cinfortran use iso_c_binding @@ -5801,16 +5840,16 @@ This will automatically be converted into <span class="flex_perlcode">\&main end program</pre><br /> </div> -<h4 class="subsubsection" id='magicparlabel-4882'><span class="subsubsection_label">7.2.5</span> In Perl</h4> -<div class="standard" id='magicparlabel-4883'>To use the API in <span class="flex_scriptinglanguage">Perl</span>, please use the <span class="flex_perlmodule">Inline::C</span> <span class="flex_scriptinglanguage">Perl</span> module (available on <em>CPAN</em>) and refer to Sec. <a href="#subsec_In_C">7.2.1</a>. It is easier if you copy the examples in the <span class="flex_perlmodule">binary_grid::C.pm</span> <span class="flex_scriptinglanguage">Perl</span> module that is provided with <span class='math'>\binarygrid</span> +<h4 class="subsubsection" id='magicparlabel-4907'><span class="subsubsection_label">7.2.5</span> In Perl</h4> +<div class="standard" id='magicparlabel-4908'>To use the API in <span class="flex_scriptinglanguage">Perl</span>, please use the <span class="flex_perlmodule">Inline::C</span> <span class="flex_scriptinglanguage">Perl</span> module (available on <em>CPAN</em>) and refer to Sec. <a href="#subsec_In_C">7.2.1</a>. It is easier if you copy the examples in the <span class="flex_perlmodule">binary_grid::C.pm</span> <span class="flex_scriptinglanguage">Perl</span> module that is provided with <span class='math'>\binarygrid</span> 2.</div> -<h4 class="subsubsection" id='magicparlabel-4904'><span class="subsubsection_label">7.2.6</span> In <i><a href="https://www.python.org/">Python</a></i></h4> -<div class="standard" id='magicparlabel-4905'>There is a functional <span class="flex_scriptinglanguage">Python</span> currently interface available at <a href="https://gitlab.eps.surrey.ac.uk/ri0005/<i>binary_c</i>-python">https://gitlab.eps.surrey.ac.uk/ri0005/<i>binary_c</i>-python</a>.</div> -<h3 class="subsection" id='magicparlabel-4914'><span class="subsection_label">7.3</span> Standard functions</h3> -<div class="standard" id='magicparlabel-4915'>The following functions set up, evolve and modify stellar systems which are set up in <span class="flex_cstruct">stardata_t</span> structures.</div> -<h4 class="subsubsection" id='magicparlabel-4920'><span class="subsubsection_label">7.3.1</span> binary_c_new_system<div id="subsec_binary_c_new_system"></div> +<h4 class="subsubsection" id='magicparlabel-4929'><span class="subsubsection_label">7.2.6</span> In <i><a href="https://www.python.org/">Python</a></i></h4> +<div class="standard" id='magicparlabel-4930'>There is a functional <span class="flex_scriptinglanguage">Python</span> currently interface available at <a href="https://gitlab.eps.surrey.ac.uk/ri0005/<i>binary_c</i>-python">https://gitlab.eps.surrey.ac.uk/ri0005/<i>binary_c</i>-python</a>.</div> +<h3 class="subsection" id='magicparlabel-4939'><span class="subsection_label">7.3</span> Standard functions</h3> +<div class="standard" id='magicparlabel-4940'>The following functions set up, evolve and modify stellar systems which are set up in <span class="flex_cstruct">stardata_t</span> structures.</div> +<h4 class="subsubsection" id='magicparlabel-4945'><span class="subsubsection_label">7.3.1</span> binary_c_new_system<div id="subsec_binary_c_new_system"></div> </h4> -<div class="standard" id='magicparlabel-4921'><br /> +<div class="standard" id='magicparlabel-4946'><br /> <pre class ='listings <i>C</i>'>void binary_c_API_function binary_c_new_system( struct libbinary_c_stardata_t ** stardata, struct libbinary_c_stardata_t ** previous_stardata, @@ -5821,7 +5860,7 @@ end program</pre><br /> </pre><br /> </div> -<ul class="itemize" id='magicparlabel-4933'><li class="itemize_item"><span class="flex_cstruct">stardata</span> must be a pointer to a <span class="flex_cstruct">libbinary_c_stardata_t</span> struct pointer. The memory for the <span class="flex_cstruct">stardata</span> is allocated by this function.</li> +<ul class="itemize" id='magicparlabel-4958'><li class="itemize_item"><span class="flex_cstruct">stardata</span> must be a pointer to a <span class="flex_cstruct">libbinary_c_stardata_t</span> struct pointer. The memory for the <span class="flex_cstruct">stardata</span> is allocated by this function.</li> <li class="itemize_item"><span class="flex_cstruct">previous_stardata</span> is usually <span class="flex_cmacro"><span style='font-family:monospace;font-size: 18px;'>NULL</span></span>, in which case space for it is allocated. If non-<span class="flex_cmacro"><span style='font-family:monospace;font-size: 18px;'>NULL</span></span>, it must point to a previously allocated <span class="flex_cstruct">libbinary_c_previous_stardata_t</span> struct.</li> <li class="itemize_item"><span class="flex_cstruct">preferences</span> is allocated and set up if <span class="flex_cmacro">NULL</span>, or should be a pointer to a pointer to a previous allocated <span class="flex_cstruct">libbinary_c_preferences_t</span> struct.</li> <li class="itemize_item"><span class="flex_cstruct">store</span> must be a pointer to a <span class="flex_cstruct">libbinary_c_store_t</span> struct pointer which is empty and <span class="flex_cmacro">NULL</span>, or a pointer to a pointer to a previously allocated <span class="flex_cstruct">libbinary_c_store_t</span> struct. This feature enables you to make the store only once, but call <span class="flex_cstruct">binary_c_new_system</span> repeatedly with it, thus saving a lot of CPU time.</li> @@ -5831,9 +5870,9 @@ end program</pre><br /> Alternatively, set <span class="flex_cvar">argc</span> to -1 then <span class="flex_cvar">argv</span> can be a pointer to a string containing a set of arguments (which must start with the word “<i>binary_c</i>” as this would be the first argument in the standard <i>C</i> format). These are split in <span class='math'>binary_c</i></span> and parsed as usual.</li> </ul> -<div class="standard" id='magicparlabel-5018'>For example, the following makes a new stellar system in <span style='font-family:monospace;font-size: 18px;'>stardata</span> and sets up a new store.</div> +<div class="standard" id='magicparlabel-5043'>For example, the following makes a new stellar system in <span style='font-family:monospace;font-size: 18px;'>stardata</span> and sets up a new store.</div> -<div class="standard" id='magicparlabel-5019'><br /> +<div class="standard" id='magicparlabel-5044'><br /> <pre class ='listings <i>C</i>'> struct libbinary_c_stardata_t * stardata = NULL; struct libbinary_c_store_t * store = NULL; @@ -5847,16 +5886,16 @@ Alternatively, set <span class="flex_cvar">argc</span> to -1 then <span class="f -1); /* ... */</pre><br /> </div> -<h4 class="subsubsection" id='magicparlabel-5035'><span class="subsubsection_label">7.3.2</span> binary_c_evolve_for_dt<div id="subsec_binary_c_evolve_for_dt"></div> +<h4 class="subsubsection" id='magicparlabel-5060'><span class="subsubsection_label">7.3.2</span> binary_c_evolve_for_dt<div id="subsec_binary_c_evolve_for_dt"></div> </h4> -<div class="standard" id='magicparlabel-5036'>This function evolves a stellar system defined in a <span style='font-family:monospace;font-size: 18px;'>stardata</span> struct for a time <span style='font-family:monospace;font-size: 18px;'>dt</span> Myr.</div> +<div class="standard" id='magicparlabel-5061'>This function evolves a stellar system defined in a <span style='font-family:monospace;font-size: 18px;'>stardata</span> struct for a time <span style='font-family:monospace;font-size: 18px;'>dt</span> Myr.</div> -<div class="standard" id='magicparlabel-5037'><br /> +<div class="standard" id='magicparlabel-5062'><br /> <pre class ='listings <i>C</i>'>int binary_c_API_function binary_c_evolve_for_dt(struct libbinary_c_stardata_t * stardata, double dt);</pre><br /> </div> -<ul class="itemize" id='magicparlabel-5043'><li class="itemize_item"><span class="flex_cstruct">stardata</span> is defined previously (Sec. <a href="#subsec_binary_c_new_system">7.3.1</a>)</li> +<ul class="itemize" id='magicparlabel-5068'><li class="itemize_item"><span class="flex_cstruct">stardata</span> is defined previously (Sec. <a href="#subsec_binary_c_new_system">7.3.1</a>)</li> <li class="itemize_item"><span class="flex_cstruct">dt</span> is the number of MYr (megayears, <math xmlns="http://www.w3.org/1998/Math/MathML"><mstyle mathvariant='sans-serif-italic' mathsize='85%'> <mrow> <mrow><mn>1</mn> @@ -5877,74 +5916,74 @@ Alternatively, set <span class="flex_cvar">argc</span> to -1 then <span class="f </mrow> </mrow></mstyle></math>)</li> </ul> -<div class="standard" id='magicparlabel-5053'>Typically, output is sent to <span class="flex_cvar">stdout</span>, but you can capture it in a buffer. Please see Sec. <a href="#subsec_Capturing_the_buffer">7.5.2</a>.</div> -<h4 class="subsubsection" id='magicparlabel-5058'><span class="subsubsection_label">7.3.3</span> binary_c_buffer_info<div id="subsec_binary_c_buffer_info"></div> +<div class="standard" id='magicparlabel-5078'>Typically, output is sent to <span class="flex_cvar">stdout</span>, but you can capture it in a buffer. Please see Sec. <a href="#subsec_Capturing_the_buffer">7.5.2</a>.</div> +<h4 class="subsubsection" id='magicparlabel-5083'><span class="subsubsection_label">7.3.3</span> binary_c_buffer_info<div id="subsec_binary_c_buffer_info"></div> </h4> -<div class="standard" id='magicparlabel-5059'>This function returns a pointer to the <span class='math'>binary_c</i></span> +<div class="standard" id='magicparlabel-5084'>This function returns a pointer to the <span class='math'>binary_c</i></span> output buffer and its size.</div> -<div class="standard" id='magicparlabel-5060'><br /> +<div class="standard" id='magicparlabel-5085'><br /> <pre class ='listings'>void binary_c_API_function binary_c_buffer_info(struct libbinary_c_stardata_t * RESTRICT stardata, char ** buffer, int * size);</pre><br /> </div> -<ul class="itemize" id='magicparlabel-5067'><li class="itemize_item"><span class="flex_cstruct">stardata</span> is defined previously (Sec. <a href="#subsec_binary_c_new_system">7.3.1</a>)</li> +<ul class="itemize" id='magicparlabel-5092'><li class="itemize_item"><span class="flex_cstruct">stardata</span> is defined previously (Sec. <a href="#subsec_binary_c_new_system">7.3.1</a>)</li> <li class="itemize_item"><span class="flex_cvar">buffer</span> is a pointer to a <span class="flex_cvar">char*</span> which points to <span class='math'>binary_c</i></span> 's internal buffer. Any changes you make to the contents of buffer thus also change <span class='math'>binary_c</i></span> 's internal buffer.</li> </ul> -<h4 class="subsubsection" id='magicparlabel-5081'><span class="subsubsection_label">7.3.4</span> binary_c_buffer_empty_buffer<div id="subsec_binary_c_buffer_empty_buffer"></div> +<h4 class="subsubsection" id='magicparlabel-5106'><span class="subsubsection_label">7.3.4</span> binary_c_buffer_empty_buffer<div id="subsec_binary_c_buffer_empty_buffer"></div> </h4> -<div class="standard" id='magicparlabel-5082'>This function frees the memory used in <span class='math'>binary_c</i></span> +<div class="standard" id='magicparlabel-5107'>This function frees the memory used in <span class='math'>binary_c</i></span> 's internal buffer. See also Sec. <a href="#subsec_binary_c_buffer_info">7.3.3</a>.</div> -<div class="standard" id='magicparlabel-5083'><br /> +<div class="standard" id='magicparlabel-5108'><br /> <pre class ='listings <i>C</i>'>void binary_c_API_function binary_c_buffer_empty_buffer(struct stardata_t * RESTRICT stardata); </pre><br /> </div> -<ul class="itemize" id='magicparlabel-5088'><li class="itemize_item"><span class="flex_cstruct">stardata</span> is defined previously (Sec. <a href="#subsec_binary_c_new_system">7.3.1</a>) </li> +<ul class="itemize" id='magicparlabel-5113'><li class="itemize_item"><span class="flex_cstruct">stardata</span> is defined previously (Sec. <a href="#subsec_binary_c_new_system">7.3.1</a>) </li> </ul> -<h4 class="subsubsection" id='magicparlabel-5093'><span class="subsubsection_label">7.3.5</span> binary_c_free_store_contents<div id="subsec_binary_c_free_store_contents"></div> +<h4 class="subsubsection" id='magicparlabel-5118'><span class="subsubsection_label">7.3.5</span> binary_c_free_store_contents<div id="subsec_binary_c_free_store_contents"></div> </h4> -<div class="standard" id='magicparlabel-5094'>Once you have finished running (possibly many) stellar systems, you can free the contents of the <span style='font-family:monospace;font-size: 18px;'>store</span> struct with a call to <span class="flex_cfunction">binary_c_free_store_contents</span></div> +<div class="standard" id='magicparlabel-5119'>Once you have finished running (possibly many) stellar systems, you can free the contents of the <span style='font-family:monospace;font-size: 18px;'>store</span> struct with a call to <span class="flex_cfunction">binary_c_free_store_contents</span></div> -<div class="standard" id='magicparlabel-5099'><br /> +<div class="standard" id='magicparlabel-5124'><br /> <pre class ='listings <i>C</i>'>void binary_c_API_function binary_c_free_store_contents(struct libbinary_c_store_t * RESTRICT store);</pre><br /> </div> -<ul class="itemize" id='magicparlabel-5104'><li class="itemize_item"> <span class="flex_cstruct">store</span> is defined previously (Sec. <a href="#subsec_binary_c_new_system">7.3.1</a>)</li> +<ul class="itemize" id='magicparlabel-5129'><li class="itemize_item"> <span class="flex_cstruct">store</span> is defined previously (Sec. <a href="#subsec_binary_c_new_system">7.3.1</a>)</li> </ul> -<h4 class="subsubsection" id='magicparlabel-5109'><span class="subsubsection_label">7.3.6</span> binary_c_free_memory<div id="subsec_binary_c_free_memory"></div> +<h4 class="subsubsection" id='magicparlabel-5134'><span class="subsubsection_label">7.3.6</span> binary_c_free_memory<div id="subsec_binary_c_free_memory"></div> </h4> -<div class="standard" id='magicparlabel-5110'>Once your stellar evolution has finished, a <span class="flex_cstruct">stardata</span> struct needs to have its memory freed. This function enables you to free the <span class="flex_cstruct">stardata</span>, <span class="flex_cstruct">preferences</span> and <span class="flex_cstruct">store</span> structs if required. It is possible that <span style='font-family:monospace;font-size: 18px;'>preferences</span> and <span style='font-family:monospace;font-size: 18px;'>store</span> should <em>not</em> be freed, because these can be reused for future evolutionary runs.</div> +<div class="standard" id='magicparlabel-5135'>Once your stellar evolution has finished, a <span class="flex_cstruct">stardata</span> struct needs to have its memory freed. This function enables you to free the <span class="flex_cstruct">stardata</span>, <span class="flex_cstruct">preferences</span> and <span class="flex_cstruct">store</span> structs if required. It is possible that <span style='font-family:monospace;font-size: 18px;'>preferences</span> and <span style='font-family:monospace;font-size: 18px;'>store</span> should <em>not</em> be freed, because these can be reused for future evolutionary runs.</div> -<div class="standard" id='magicparlabel-5127'><br /> +<div class="standard" id='magicparlabel-5152'><br /> <pre class ='listings <i>C</i>'>void binary_c_API_function binary_c_free_memory(struct stardata_t ** RESTRICT stardata, Boolean free_preferences, Boolean free_stardata, Boolean free_store);</pre><br /> </div> -<ul class="itemize" id='magicparlabel-5135'><li class="itemize_item"><span class="flex_cstruct">stardata</span> is defined previously (Sec. <a href="#subsec_binary_c_new_system">7.3.1</a>)</li> +<ul class="itemize" id='magicparlabel-5160'><li class="itemize_item"><span class="flex_cstruct">stardata</span> is defined previously (Sec. <a href="#subsec_binary_c_new_system">7.3.1</a>)</li> <li class="itemize_item"><span class="flex_cvar">free_preferences</span>, <span class="flex_cvar">free_stardata</span> and <span class="flex_cvar">free_store</span> should be either <span class="flex_cmacro">TRUE</span> or <span class="flex_cmacro">FALSE</span>.</li> </ul> -<h3 class="subsection" id='magicparlabel-5161'><span class="subsection_label">7.4</span> Extension functions</h3> -<div class="standard" id='magicparlabel-5162'>A few functions have been defined which provide extensions to the basic API, but are very useful in the <span class="flex_perlmodule">binary_grid::C</span> Perl module. The number of extension functions may increase in the future, so this documentation is always likely to be out of date.</div> -<h4 class="subsubsection" id='magicparlabel-5167'><span class="subsubsection_label">7.4.1</span> binary_c_version<div id="subsec_binary_c_version"></div> +<h3 class="subsection" id='magicparlabel-5186'><span class="subsection_label">7.4</span> Extension functions</h3> +<div class="standard" id='magicparlabel-5187'>A few functions have been defined which provide extensions to the basic API, but are very useful in the <span class="flex_perlmodule">binary_grid::C</span> Perl module. The number of extension functions may increase in the future, so this documentation is always likely to be out of date.</div> +<h4 class="subsubsection" id='magicparlabel-5192'><span class="subsubsection_label">7.4.1</span> binary_c_version<div id="subsec_binary_c_version"></div> </h4> -<div class="standard" id='magicparlabel-5168'>This function provides access to the (long) version string returned by <span class='math'>binary_c</i></span> +<div class="standard" id='magicparlabel-5193'>This function provides access to the (long) version string returned by <span class='math'>binary_c</i></span> </div> -<div class="standard" id='magicparlabel-5169'><br /> +<div class="standard" id='magicparlabel-5194'><br /> <pre class ='listings <i>C</i>'>void binary_c_API_function binary_c_version(struct libbinary_c_stardata_t * RESTRICT stardata);</pre><br /> </div> -<ul class="itemize" id='magicparlabel-5174'><li class="itemize_item"><span class="flex_cstruct">stardata</span> is defined previously (Sec. <a href="#subsec_binary_c_new_system">7.3.1</a>)</li> +<ul class="itemize" id='magicparlabel-5199'><li class="itemize_item"><span class="flex_cstruct">stardata</span> is defined previously (Sec. <a href="#subsec_binary_c_new_system">7.3.1</a>)</li> </ul> -<h4 class="subsubsection" id='magicparlabel-5179'><span class="subsubsection_label">7.4.2</span> binary_c_show_instant_RLOF_period_or_separation<div id="subsec_binary_c_show_instant_RLOF_perio"></div> +<h4 class="subsubsection" id='magicparlabel-5204'><span class="subsubsection_label">7.4.2</span> binary_c_show_instant_RLOF_period_or_separation<div id="subsec_binary_c_show_instant_RLOF_perio"></div> </h4> -<div class="standard" id='magicparlabel-5180'>This function provides access to the <i>binary_c</i> function that determines the minimum orbital period or separation that leads to instantaneous Roche-lobe overflow for a given <math xmlns="http://www.w3.org/1998/Math/MathML"><mstyle mathvariant='sans-serif-italic' mathsize='85%'> +<div class="standard" id='magicparlabel-5205'>This function provides access to the <i>binary_c</i> function that determines the minimum orbital period or separation that leads to instantaneous Roche-lobe overflow for a given <math xmlns="http://www.w3.org/1998/Math/MathML"><mstyle mathvariant='sans-serif-italic' mathsize='85%'> <mrow> <msub subscriptshift="0.2ex"> <mrow><mi>M</mi> @@ -5962,42 +6001,42 @@ Alternatively, set <span class="flex_cvar">argc</span> to -1 then <span class="f </msub> </mrow></mstyle></math> and metallicity.</div> -<div class="standard" id='magicparlabel-5181'><br /> +<div class="standard" id='magicparlabel-5206'><br /> <pre class ='listings <i>C</i>'>void binary_c_API_function binary_c_show_instant_RLOF_period_or_separation(struct libbinary_c_stardata_t * stardata);</pre><br /> </div> -<ul class="itemize" id='magicparlabel-5186'><li class="itemize_item"><span class="flex_cstruct">stardata</span> is defined previously (Sec. <a href="#subsec_binary_c_new_system">7.3.1</a>)</li> +<ul class="itemize" id='magicparlabel-5211'><li class="itemize_item"><span class="flex_cstruct">stardata</span> is defined previously (Sec. <a href="#subsec_binary_c_new_system">7.3.1</a>)</li> </ul> -<h4 class="subsubsection" id='magicparlabel-5191'><span class="subsubsection_label">7.4.3</span> binary_c_initialize_parameters<div id="subsec_binary_c_initialize_parameters"></div> +<h4 class="subsubsection" id='magicparlabel-5216'><span class="subsubsection_label">7.4.3</span> binary_c_initialize_parameters<div id="subsec_binary_c_initialize_parameters"></div> </h4> -<div class="standard" id='magicparlabel-5192'>This function calls the <em><span class='math'>binary_c</i></span> +<div class="standard" id='magicparlabel-5217'>This function calls the <em><span class='math'>binary_c</i></span> </em> <span class="flex_cfunction">initialize_parameters</span> function which in turn is useful for reporting the initial abundance mixture (it is used for this purpose in <span class="flex_perlmodule">binary_grid::C</span>).</div> -<div class="standard" id='magicparlabel-5201'><br /> +<div class="standard" id='magicparlabel-5226'><br /> <pre class ='listings <i>C</i>'>void binary_c_API_function binary_c_initialize_parameters(struct libbinary_c_stardata_t * RESTRICT stardata);</pre><br /> </div> -<ul class="itemize" id='magicparlabel-5206'><li class="itemize_item"><span class="flex_cstruct">stardata</span> is defined previously (Sec. <a href="#subsec_binary_c_new_system">7.3.1</a>)</li> +<ul class="itemize" id='magicparlabel-5231'><li class="itemize_item"><span class="flex_cstruct">stardata</span> is defined previously (Sec. <a href="#subsec_binary_c_new_system">7.3.1</a>)</li> </ul> -<h3 class="subsection" id='magicparlabel-5211'><span class="subsection_label">7.5</span> API Examples<div id="sec_Examples"></div> +<h3 class="subsection" id='magicparlabel-5236'><span class="subsection_label">7.5</span> API Examples<div id="sec_Examples"></div> </h3> -<div class="standard" id='magicparlabel-5212'>There are several examples of using the API in the <span class="flex_perlmodule">binary_grid::C</span> module.</div> -<h4 class="subsubsection" id='magicparlabel-5217'><span class="subsubsection_label">7.5.1</span> Arguments and/or the argstring<div id="subsec_Arguments_and_the"></div> +<div class="standard" id='magicparlabel-5237'>There are several examples of using the API in the <span class="flex_perlmodule">binary_grid::C</span> module.</div> +<h4 class="subsubsection" id='magicparlabel-5242'><span class="subsubsection_label">7.5.1</span> Arguments and/or the argstring<div id="subsec_Arguments_and_the"></div> </h4> -<div class="standard" id='magicparlabel-5218'>The <span class="flex_cvar">argstring</span>, or a combination of <span class="flex_cvar">argc</span> and <span class="flex_cvar">argv</span>, is used to send commands to <span class='math'>binary_c</i></span>, and this is sent to <span class="flex_cfunction">binary_c_new_system()</span> to specify (say) masses, orbits, metallicity etc. prior to a call to evolve a stellar system. You do not have to send an <span class="flex_cvar">argstring</span>, you could set the system directly, e.g. <br /> +<div class="standard" id='magicparlabel-5243'>The <span class="flex_cvar">argstring</span>, or a combination of <span class="flex_cvar">argc</span> and <span class="flex_cvar">argv</span>, is used to send commands to <span class='math'>binary_c</i></span>, and this is sent to <span class="flex_cfunction">binary_c_new_system()</span> to specify (say) masses, orbits, metallicity etc. prior to a call to evolve a stellar system. You do not have to send an <span class="flex_cvar">argstring</span>, you could set the system directly, e.g. <br /> <pre class ='listings <i>C</i>'>stardata->star[1].mass = 10.0; stardata->common.metallicity = 0.02; stardata->model.max_evolution_time = 15000.0;</pre><br /> </div> -<div class="standard" id='magicparlabel-5245'>but there are some functions which are called <em>after</em> the arguments are parsed which would be skipped if you do it manually. You will have to mimic (or copy from <span class='math'>binary_c</i></span> +<div class="standard" id='magicparlabel-5270'>but there are some functions which are called <em>after</em> the arguments are parsed which would be skipped if you do it manually. You will have to mimic (or copy from <span class='math'>binary_c</i></span> ) this functionality.</div> -<h4 class="subsubsection" id='magicparlabel-5246'><span class="subsubsection_label">7.5.2</span> Capturing the buffer output<div id="subsec_Capturing_the_buffer"></div> +<h4 class="subsubsection" id='magicparlabel-5271'><span class="subsubsection_label">7.5.2</span> Capturing the buffer output<div id="subsec_Capturing_the_buffer"></div> </h4> -<div class="standard" id='magicparlabel-5247'>Usually, output is sent to the <span class="flex_cvar">stdout</span> stream. However, it is often more useful to capture the output and process it in an automated way. This is how the<em> <span class='math'>\binarygrid</span> +<div class="standard" id='magicparlabel-5272'>Usually, output is sent to the <span class="flex_cvar">stdout</span> stream. However, it is often more useful to capture the output and process it in an automated way. This is how the<em> <span class='math'>\binarygrid</span> </em><span class="flex_programminglanguage">C</span> backend works. You can do this with the following code which sets up a stellar system, suppresses logging to files, sets up the internal buffer, evolves the system, then grabs the buffer into memory. It is up to you to process this buffer (although see the <span class="flex_perlmodule">binary_grid::C</span> module for ways to do this) but it must then be freed before you finish.</div> -<div class="standard" id='magicparlabel-5260'><br /> +<div class="standard" id='magicparlabel-5285'><br /> <pre class ='listings <i>C</i>'> struct libbinary_c_stardata_t * stardata = NULL; struct libbinary_c_store_t * store = NULL; @@ -6034,12 +6073,12 @@ stardata->model.max_evolution_time = 15000.0;</pre><br /> binary_c_buffer_empty_buffer(stardata); buffer = NULL;</pre><br /> </div> -<h4 class="subsubsection" id='magicparlabel-5299'><span class="subsubsection_label">7.5.3</span> Memory management and maintaining a store<div id="subsec_Maintaining_a_store"></div> +<h4 class="subsubsection" id='magicparlabel-5324'><span class="subsubsection_label">7.5.3</span> Memory management and maintaining a store<div id="subsec_Maintaining_a_store"></div> </h4> -<div class="standard" id='magicparlabel-5300'>Memory is allocated during a call to <span class="flex_cfunction">binary_c_new_system()</span> which sets up the <span class="flex_cstruct">stardata</span> struct, the <span class="flex_cstruct">preferences</span> struct and the <span class="flex_cstruct">store</span> struct. Both the preferences and the store can be reused once defined, which means you do not have to go through the costly (in CPU cycles) process of setting up a multitude of data for each stellar system. The example below runs a number of systems while preserving the store. (It is based on the <span class="flex_programminglanguage">C</span> backend for <em><span class='math'>\binarygrid</span> +<div class="standard" id='magicparlabel-5325'>Memory is allocated during a call to <span class="flex_cfunction">binary_c_new_system()</span> which sets up the <span class="flex_cstruct">stardata</span> struct, the <span class="flex_cstruct">preferences</span> struct and the <span class="flex_cstruct">store</span> struct. Both the preferences and the store can be reused once defined, which means you do not have to go through the costly (in CPU cycles) process of setting up a multitude of data for each stellar system. The example below runs a number of systems while preserving the store. (It is based on the <span class="flex_programminglanguage">C</span> backend for <em><span class='math'>\binarygrid</span> 2</em>.) It is not recommended to preserve the <span class="flex_cstruct">preferences</span> even though it is possible.</div> -<div class="standard" id='magicparlabel-5325'><br /> +<div class="standard" id='magicparlabel-5350'><br /> <pre class ='listings <i>C</i>'> struct libbinary_c_stardata_t * stardata = NULL; struct libbinary_c_store_t * store = NULL; @@ -6072,68 +6111,68 @@ stardata->model.max_evolution_time = 15000.0;</pre><br /> /* ... do your data processing ... */</pre><br /> </div> -<div class="standard" id='magicparlabel-5359'>You can also free <em>everything </em>with the following function call:</div> +<div class="standard" id='magicparlabel-5384'>You can also free <em>everything </em>with the following function call:</div> -<div class="standard" id='magicparlabel-5360'><br /> +<div class="standard" id='magicparlabel-5385'><br /> <pre class ='listings <i>C</i>'> binary_c_free_memory(&stardata,TRUE,TRUE,TRUE); </pre><br /> </div> -<div class="standard" id='magicparlabel-5365'>but beware that your local <span class="flex_cstruct">store</span> and <span class="flex_cstruct">stardata</span> must also be set to <span class="flex_cmacro">NULL</span> if you require it to be regenerated on a subsequent call to <span class="flex_cfunction">binary_c_new_system</span>, e.g. with </div> +<div class="standard" id='magicparlabel-5390'>but beware that your local <span class="flex_cstruct">store</span> and <span class="flex_cstruct">stardata</span> must also be set to <span class="flex_cmacro">NULL</span> if you require it to be regenerated on a subsequent call to <span class="flex_cfunction">binary_c_new_system</span>, e.g. with </div> -<div class="standard" id='magicparlabel-5382'><br /> +<div class="standard" id='magicparlabel-5407'><br /> <pre class ='listings <i>C</i>'> binary_c_free_memory(&stardata,TRUE,TRUE,TRUE); store = NULL; stardata = NULL; </pre><br /> </div> -<div class="standard" id='magicparlabel-5389'>You must not call <span class="flex_cfunction">binary_c_free_memory</span> to free your <span class="flex_cstruct">stardata</span> and <span class="flex_cstruct">store</span> and then immediately use <span class="flex_cmacro">Safe_free</span> on these pointers. They have already been freed, just not set to <span class="flex_cmacro">NULL</span> (because it is impossible to do so in <span class="flex_cfunction">binary_c_free_memory</span>), and freeing them – even with <span class="flex_cmacro">Safe_free</span> – will cause a crash.</div> +<div class="standard" id='magicparlabel-5414'>You must not call <span class="flex_cfunction">binary_c_free_memory</span> to free your <span class="flex_cstruct">stardata</span> and <span class="flex_cstruct">store</span> and then immediately use <span class="flex_cmacro">Safe_free</span> on these pointers. They have already been freed, just not set to <span class="flex_cmacro">NULL</span> (because it is impossible to do so in <span class="flex_cfunction">binary_c_free_memory</span>), and freeing them – even with <span class="flex_cmacro">Safe_free</span> – will cause a crash.</div> -<div class="standard" id='magicparlabel-5418'>If you are concerned that memory has <em>not</em> been freed, try running <span class='math'>binary_c</i></span> +<div class="standard" id='magicparlabel-5443'>If you are concerned that memory has <em>not</em> been freed, try running <span class='math'>binary_c</i></span> through <span class="flex_software">valgrind</span> or enable the <span class="flex_cmacro">CODESTATS</span> flag in <span class="flex_headerfile">binary_c_code_options.h</span>. If you cannot find the problem, or if it's a problem not of your making, please contact Rob about it so that it can be fixed for everyone.</div> -<h2 class="section" id='magicparlabel-5431'><span class="section_label">8</span> Code description and internals</h2> -<div class="standard" id='magicparlabel-5432'><div id="sec_Code_description"></div> +<h2 class="section" id='magicparlabel-5456'><span class="section_label">8</span> Code description and internals</h2> +<div class="standard" id='magicparlabel-5457'><div id="sec_Code_description"></div> </div> -<div class="standard" id='magicparlabel-5433'>This section describes some of the internal details of the <em><i>binary_c</i></em> code.</div> -<h3 class="subsection" id='magicparlabel-5434'><span class="subsection_label">8.1</span> History</h3> -<div class="standard" id='magicparlabel-5435'><div id="subsec_History"></div> +<div class="standard" id='magicparlabel-5458'>This section describes some of the internal details of the <em><i>binary_c</i></em> code.</div> +<h3 class="subsection" id='magicparlabel-5459'><span class="subsection_label">8.1</span> History</h3> +<div class="standard" id='magicparlabel-5460'><div id="subsec_History"></div> First, a bit of history. The <em><span class="flex_software">BSE</span></em> code was given to me by Chris Tout in October 2000 and some updates were made in May 2001 (from Jarrod Hurley). Jarrod was responsible for the October 2000 version, written as one monolithic block of evil <span class="flex_programminglanguage">Fortran</span>, although past collaborators such as Chris Tout, Sverre Aarseth, Onno Pols etc. (who else have I forgotten?) had input their talent to the code. The <span class="flex_programminglanguage">Fortran</span> version was converted to <em>C</em> (because I hate <em>Fortran</em> and it was <em>my</em> <em>bloody</em> <em>PhD</em>!) and (some of) the bugs worked out of it. This gave me a chance to lay the code out quite differently.</div> -<div class="standard" id='magicparlabel-5448'>One major change is in the organisation of the variables. In the <span class="flex_programminglanguage">Fortran</span> code there are lots of arrays of size 2 (there are two stars) and a load of evil common blocks. These have been replaced by structures, one for each <span style='font-family:monospace;font-size: 18px;'>star</span>, the <span class="flex_cstruct">common</span> and <span class="flex_cstruct">model</span> structures, a <span class="flex_cstruct">preferences</span> structure to contain user-defined options, and a <span class="flex_cstruct">stardata</span> structure which contains pointers to everything else. Pointers are far quicker to use than passing the actual data around. Conceptually it's useful to have all the information about each star in one space, since most functions deal only with one star and can access all the information through a single pointer (and pointers are fast).</div> +<div class="standard" id='magicparlabel-5473'>One major change is in the organisation of the variables. In the <span class="flex_programminglanguage">Fortran</span> code there are lots of arrays of size 2 (there are two stars) and a load of evil common blocks. These have been replaced by structures, one for each <span style='font-family:monospace;font-size: 18px;'>star</span>, the <span class="flex_cstruct">common</span> and <span class="flex_cstruct">model</span> structures, a <span class="flex_cstruct">preferences</span> structure to contain user-defined options, and a <span class="flex_cstruct">stardata</span> structure which contains pointers to everything else. Pointers are far quicker to use than passing the actual data around. Conceptually it's useful to have all the information about each star in one space, since most functions deal only with one star and can access all the information through a single pointer (and pointers are fast).</div> -<div class="standard" id='magicparlabel-5469'>Throughout the code you'll see lots of <span style='font-family:monospace;font-size: 18px;'>Dprint</span> statements, these are enabled when debugging is turned on. These are very useful when something goes wrong (see section <a href="#sec_debugging">6.23</a>).</div> +<div class="standard" id='magicparlabel-5494'>Throughout the code you'll see lots of <span style='font-family:monospace;font-size: 18px;'>Dprint</span> statements, these are enabled when debugging is turned on. These are very useful when something goes wrong (see section <a href="#sec_debugging">6.23</a>).</div> -<div class="standard" id='magicparlabel-5470'>If you change anything, and would like me to debug it or you would like to commit it to the master branch, I insist on the following.</div> +<div class="standard" id='magicparlabel-5495'>If you change anything, and would like me to debug it or you would like to commit it to the master branch, I insist on the following.</div> -<ul class="itemize" id='magicparlabel-5471'><li class="itemize_item">Learn about how to write <span class="flex_programminglanguage">C</span>, e.g. <a href="https://www.maultech.com/chrislott/resources/cstyle/indhill-cstyle.pdf">https://www.maultech.com/chrislott/resources/cstyle/indhill-cstyle.pdf</a> or <a href="https://en.wikipedia.org/wiki/The_C_Programming_Language">https://en.wikipedia.org/wiki/The_C_Programming_Language</a>.</li> +<ul class="itemize" id='magicparlabel-5496'><li class="itemize_item">Learn about how to write <span class="flex_programminglanguage">C</span>, e.g. <a href="https://www.maultech.com/chrislott/resources/cstyle/indhill-cstyle.pdf">https://www.maultech.com/chrislott/resources/cstyle/indhill-cstyle.pdf</a> or <a href="https://en.wikipedia.org/wiki/The_C_Programming_Language">https://en.wikipedia.org/wiki/The_C_Programming_Language</a>.</li> <li class="itemize_item">Learn how to format your <span class="flex_programminglanguage">C</span> code properly. Please use the <a href="https://en.wikipedia.org/wiki/Indentation_style#Allman_style">Allman style</a> and indent with four spaces (<a href="https://www.gnu.org/software/emacs/">emacs</a> indents <span class="flex_programminglanguage">C</span> like this automatically).</li> <li class="itemize_item">Include <em>good comments</em> even if these are “this is a fudge”. Remember that people who do not know how the code works will want to change the code in the future, and I have to check it before it is committed. Descriptions of the physics, paraphrased from a paper if you have to (but remember to give appropriate credit) are encouraged.</li> <li class="itemize_item">Include <span class="flex_cmacro">Dprint()</span> statements so that if there is a <span class="flex_cmacro">DEBUG</span> flag set there will be some (useful!) output to the screen during runtime.</li> <li class="itemize_item">Make sure the names of your variables <em>describe what they do</em> (in English :-). I do not care if the variable names are long (long is good!) and the computer certainly doesn't either.</li> </ul> -<h3 class="subsection" id='magicparlabel-5496'><span class="subsection_label">8.2</span> How the <em><i>binary_c</i></em> code works</h3> -<div class="standard" id='magicparlabel-5497'><div id="subsec_How_the_code"></div> +<h3 class="subsection" id='magicparlabel-5521'><span class="subsection_label">8.2</span> How the <em><i>binary_c</i></em> code works</h3> +<div class="standard" id='magicparlabel-5522'><div id="subsec_How_the_code"></div> The <em><i>binary_c</i></em> code, based on <em><span class="flex_software">BSE</span></em>, deals with stellar evolution and binary evolution i.e. the mass, core mass, luminosity, radius of both stars, mass loss and gain, orbital changes, supernovae and novae. Its<em> nucleosynthesis</em> (“<em>nucsyn</em>”) code deals with the surface abundance of the stars, follows this as mass is lost or gained and also the luminosity and radius on the TPAGB, dredge-ups, HBB, WR stars, supernova and nova yields. This does not sound like much but it's complicated enough! So as the <em><i>binary_c</i></em> code does the stellar (“structure”)<em> </em>evolution, the <em>nucsyn</em> code identifies when the surface abundances change. </div> -<h3 class="subsection" id='magicparlabel-5504'><span class="subsection_label">8.3</span> Memory management in <span class='math'>binary_c</i></span> +<h3 class="subsection" id='magicparlabel-5529'><span class="subsection_label">8.3</span> Memory management in <span class='math'>binary_c</i></span> </h3> -<div class="standard" id='magicparlabel-5505'><div id="subsec_Memory_management"></div> +<div class="standard" id='magicparlabel-5530'><div id="subsec_Memory_management"></div> </div> -<h4 class="subsubsection" id='magicparlabel-5506'><span class="subsubsection_label">8.3.1</span> Memory allocation</h4> -<div class="standard" id='magicparlabel-5507'>Memory should be allocated using the macros <span class="flex_cmacro">Malloc</span>, <span class="flex_cmacro">Calloc</span> and <span class="flex_cmacro">Realloc</span> which replace the system <span class="flex_cfunction">malloc</span>, <span class="flex_cfunction">calloc</span> and <span class="flex_cfunction">realloc</span>, respectively. These macros allow for automatic error checking, e.g. when an allocation fails (i.e. when <span class="flex_cmacro">ALLOC_CHECKS</span> is defined), as well as the use of aligned memory (which should be faster).</div> -<h4 class="subsubsection" id='magicparlabel-5536'><span class="subsubsection_label">8.3.2</span> Stack size</h4> -<div class="standard" id='magicparlabel-5537'>The allocation of big data tables can require a large stack. Please remember to set your stack size, either in your shell e.g. with <em><span class="flex_software">ulimit</span></em> or in <span class="flex_software">Perl</span>'s threads, e.g.<span style='font-family:monospace;font-size: 18px;'>,<br /> +<h4 class="subsubsection" id='magicparlabel-5531'><span class="subsubsection_label">8.3.1</span> Memory allocation</h4> +<div class="standard" id='magicparlabel-5532'>Memory should be allocated using the macros <span class="flex_cmacro">Malloc</span>, <span class="flex_cmacro">Calloc</span> and <span class="flex_cmacro">Realloc</span> which replace the system <span class="flex_cfunction">malloc</span>, <span class="flex_cfunction">calloc</span> and <span class="flex_cfunction">realloc</span>, respectively. These macros allow for automatic error checking, e.g. when an allocation fails (i.e. when <span class="flex_cmacro">ALLOC_CHECKS</span> is defined), as well as the use of aligned memory (which should be faster).</div> +<h4 class="subsubsection" id='magicparlabel-5561'><span class="subsubsection_label">8.3.2</span> Stack size</h4> +<div class="standard" id='magicparlabel-5562'>The allocation of big data tables can require a large stack. Please remember to set your stack size, either in your shell e.g. with <em><span class="flex_software">ulimit</span></em> or in <span class="flex_software">Perl</span>'s threads, e.g.<span style='font-family:monospace;font-size: 18px;'>,<br /> <pre class ='listings Perl'>use threads 'stack_size'=>4096*10000</pre><br /> </span>appropriately. If your stack is too small, you will get (possibly random) segmentation faults. See section <a href="#subsec_Segmentation_faults">8.5.5</a> for more information.</div> -<h4 class="subsubsection" id='magicparlabel-5550'><span class="subsubsection_label">8.3.3</span> Main Memory Structures: stardata<div id="subsec_Memory_Structures"></div> +<h4 class="subsubsection" id='magicparlabel-5575'><span class="subsubsection_label">8.3.3</span> Main Memory Structures: stardata<div id="subsec_Memory_Structures"></div> </h4> -<div class="standard" id='magicparlabel-5551'>Memory use in <em><span class='math'>binary_c</i></span> +<div class="standard" id='magicparlabel-5576'>Memory use in <em><span class='math'>binary_c</i></span> </em> is divided into structures which are allocated appropriately. The main structure, a pointer to which is passed around all over the place, is <em><span class="flex_cstruct">stardata</span></em>. Normally this is all you need. However, there are structures for specific purposes as described below. Memory allocation is mostly done in the <span class="flex_cfunction">main_allocations</span> subroutine.</div> -<div class="standard" id='magicparlabel-5560'>Variables are stored as arrays within, e.g., <span class="flex_cstruct">stardata</span><em>,</em> which is dynamically allocated on the heap, rather than being dynamically allocated themeslves. You should probably not use <span class="flex_cstruct">stardata</span><em> </em>as a local stack variable, because it is liable to be quite large.</div> +<div class="standard" id='magicparlabel-5585'>Variables are stored as arrays within, e.g., <span class="flex_cstruct">stardata</span><em>,</em> which is dynamically allocated on the heap, rather than being dynamically allocated themeslves. You should probably not use <span class="flex_cstruct">stardata</span><em> </em>as a local stack variable, because it is liable to be quite large.</div> -<dl class='description' id='magicparlabel-5569'><dt class="description_label">stardata_t</dt> +<dl class='description' id='magicparlabel-5594'><dt class="description_label">stardata_t</dt> <dd class="description_item"> The main <span class="flex_cstruct">stardata</span> structure is used to store the information about the stellar system currently being evolved, as well as pointers to all the other memory stores. <span class="flex_cstruct">stardata</span> is set to 0 (the <span style='font-family:monospace;font-size: 18px;'>NULL</span> byte '\0') at the beginning of evolution, so everything inside it is either zero (for floats, doubles, ints etc.), or <span style='font-family:monospace;font-size: 18px;'><span class="flex_cmacro">FALSE</span></span> (for Booleans).</dd> <dt class="description_label">previous_stardata_t</dt> <dd class="description_item"> A pointer to the top of the <span class="flex_cstruct">previous_stardata</span> stack. This is used at the end of an evolutionary step to calculate derivatives and perform logging (e.g. change of stellar type).</dd> @@ -6189,10 +6228,10 @@ The <em><i>binary_c</i></em> code, based on <em><span class="flex_software">BSE< <dt class="description_label">binary_c_event_t</dt> <dd class="description_item"> Used in the events code (see Section <a href="#subsec_Events">8.6</a>). There are various other custom structures which store data for events (see <span class="flex_headerfile">binary_c_structures.h</span>)</dd> </dl> -<h4 class="subsubsection" id='magicparlabel-5776'><span class="subsubsection_label">8.3.4</span> Supplementary data structures</h4> -<div class="standard" id='magicparlabel-5777'>There are a number of other data structures used by <em><i>binary_c</i></em>. A few are listed here and most are not of interest to you.</div> +<h4 class="subsubsection" id='magicparlabel-5801'><span class="subsubsection_label">8.3.4</span> Supplementary data structures</h4> +<div class="standard" id='magicparlabel-5802'>There are a number of other data structures used by <em><i>binary_c</i></em>. A few are listed here and most are not of interest to you.</div> -<dl class='description' id='magicparlabel-5778'><dt class="description_label">data_table_t</dt> +<dl class='description' id='magicparlabel-5803'><dt class="description_label">data_table_t</dt> <dd class="description_item"> This contains information about a data table. Set up (a pointer to, i.e. data_table_t*) the data table through <span class="flex_cmacro">NewDataTable_from_Array</span> or <span class="flex_cmacro">NewDataTable_from_Pointer</span>. Access the data table through the <span class="flex_cmacro">Interpolate</span> macro (which interfaces with <span class="flex_software">librinterpolate</span>). Delete the table with <span class="flex_cmacro">Delete_data_table</span>. The <span class="flex_cvar">data_table_t.data</span> pointer points to an array of doubles which contains the data: this memory is not allocated for you. If set up in the <span class="flex_cstruct">store</span> or <span class="flex_cstruct">tmpstore</span> this can be dynamically allocated, elsewhere you have to be careful and probably point to a data array inside <span class="flex_cstruct">stardata</span>. <br /> @@ -6212,119 +6251,119 @@ If you want to set up a <span class="flex_cstruct">data_table_t</span> rather th <dt class="description_label">binary_system_t</dt> <dd class="description_item"> Used to define the properties of a binary-star system in the disc code.</dd> </dl> -<h4 class="subsubsection" id='magicparlabel-5842'><span class="subsubsection_label">8.3.5</span> Thread safety</h4> -<div class="standard" id='magicparlabel-5843'><em><span class='math'>binary_c</i></span> +<h4 class="subsubsection" id='magicparlabel-5867'><span class="subsubsection_label">8.3.5</span> Thread safety</h4> +<div class="standard" id='magicparlabel-5868'><em><span class='math'>binary_c</i></span> </em>, as of version 2.0pre21 and in all subsequent versions, i.e. in the version you are using!, is designed to be thread-safe, i.e. it can be built as a shared library (<span style='font-family:monospace;font-size: 18px;'><br /> <pre class\s*='listings bash'>$ make <i>libbinary_c.so</i></pre><br /> </span>) and deployed in many threads by one process (as in <em><span class='math'>\binarygrid</span> </em> with the <span class="flex_programminglanguage">C</span> backend). To this end:</div> -<ul class="itemize" id='magicparlabel-5852'><li class="itemize_item">You <b>may not</b> use static variables. Put your data into <em><span class="flex_cstruct">stardata</span></em>.</li> +<ul class="itemize" id='magicparlabel-5877'><li class="itemize_item">You <b>may not</b> use static variables. Put your data into <em><span class="flex_cstruct">stardata</span></em>.</li> <li class="itemize_item">You <b>may not</b> use global variables (i.e. no <span style='font-family:monospace;font-size: 18px;'>extern</span> statements). Put your data into <em><span class="flex_cstruct">stardata</span></em>.</li> <li class="itemize_item">You may not use non-thread-safe <span class="flex_programminglanguage">C</span> library functions (e.g. <span class="flex_cfunction">strtok</span> and hash functions, use the <span style='font-family:monospace;font-size: 18px;'>_r</span> or <span style='font-family:monospace;font-size: 18px;'>_s</span> equivalents). Some of these functions have been redefined as macros in <span class='math'>binary_c</i></span> – these macros will deliberately fail the compilation process and hopefully give you a warning.</li> <li class="itemize_item">You must follow the conventions given above regarding memory allocation in <em><span class="flex_cstruct">stardata</span></em>.</li> </ul> -<div class="standard" id='magicparlabel-5876'>Please use the memory structures appropriately (see <a href="#subsec_Memory_Structures">8.3.3</a>). </div> -<h3 class="subsection" id='magicparlabel-5877'><span class="subsection_label">8.4</span> Output</h3> -<div class="standard" id='magicparlabel-5878'><div id="subsec_Output"></div> +<div class="standard" id='magicparlabel-5901'>Please use the memory structures appropriately (see <a href="#subsec_Memory_Structures">8.3.3</a>). </div> +<h3 class="subsection" id='magicparlabel-5902'><span class="subsection_label">8.4</span> Output</h3> +<div class="standard" id='magicparlabel-5903'><div id="subsec_Output"></div> </div> -<div class="standard" id='magicparlabel-5879'><span class='math'>binary_c</i></span> +<div class="standard" id='magicparlabel-5904'><span class='math'>binary_c</i></span> must communicate its results to you <em>somehow</em> otherwise what is the point? When running one star, it is sufficient to send output to either the screen (<span class="flex_cvar">stdout</span>) or to a file (with redirection, e.g. <span style='font-family:monospace;font-size: 18px;'>tbse > file</span>). When running millions of stars, output must be sent to, e.g., a function you define (usually <span class="flex_perlcode">parse_bse</span>) when using the <em><span class='math'>\binarygrid</span> </em>. In this case, either data is sent through a pipe (using the <span class="flex_scriptinglanguage">Perl</span> backend) or in an array in memory (using the <span class="flex_programminglanguage">C</span> backend). Thus, <span class='math'>binary_c</i></span> has to intercept your output and decide where to send it. This is done as follows.</div> -<ol class="enumerate" id='magicparlabel-5896'><li class="enumerate_item">Use <span class="flex_cmacro">Printf</span> instead of <span class="flex_cfunction">printf</span>: <span class="flex_cmacro">Printf</span> sends data to <span class="flex_cfunction">buffered_printf</span>. This stores raw output data in a buffer, and outputs either immediately, at the end of evolution, or not at all, depending on what you want to do with the buffer. It is up to you to clear out the buffer after evolution (or on a switch of <span class="flex_cstruct">stardata</span>) with a call to buffer_empty_buffer. You can get the pointer used to store the buffer from <span class="flex_cfunction">buffer_info</span>.</li> +<ol class="enumerate" id='magicparlabel-5921'><li class="enumerate_item">Use <span class="flex_cmacro">Printf</span> instead of <span class="flex_cfunction">printf</span>: <span class="flex_cmacro">Printf</span> sends data to <span class="flex_cfunction">buffered_printf</span>. This stores raw output data in a buffer, and outputs either immediately, at the end of evolution, or not at all, depending on what you want to do with the buffer. It is up to you to clear out the buffer after evolution (or on a switch of <span class="flex_cstruct">stardata</span>) with a call to buffer_empty_buffer. You can get the pointer used to store the buffer from <span class="flex_cfunction">buffer_info</span>.</li> <li class="enumerate_item">Use _printf to actually output to stdout using the <i>C</i>-library's <span class="flex_cfunction">fprintf</span> function.</li> <li class="enumerate_item"><b>warning: experimental </b>If <span class="flex_cmacro">BUFFERED_STACK</span> is defined, you can use <em><span class="flex_cfunction">binary_c_stack_printf</span></em>, which is a more advanced buffer with a full stack API (e.g. push and pop functions), that can include (<span class="flex_software">zlib</span>) compression. However, at present this is not used, and may never be a standard part of <span class='math'>binary_c</i></span> .</li> </ol> -<h4 class="subsubsection" id='magicparlabel-5939'><span class="subsubsection_label">8.4.1</span> Interaction with <i>binary_grid</i></h4> -<div class="standard" id='magicparlabel-5940'>The interaction between <span class='math'>binary_c</i></span> +<h4 class="subsubsection" id='magicparlabel-5964'><span class="subsubsection_label">8.4.1</span> Interaction with <i>binary_grid</i></h4> +<div class="standard" id='magicparlabel-5965'>The interaction between <span class='math'>binary_c</i></span> and <span class='math'>\binarygrid</span> depends very much on how data is output. When using the Perl backend, pipes are used to funnel data from <span class='math'>binary_c</i></span> to <span class='math'>\binarygrid</span> and vice versa. Output should be sent to <span class="flex_cvar">stdout</span>. When using the <i>C</i> backend, data is sent to the buffer and then the buffer accessed from Perl (via <span class="flex_perlmodule">Inline::C</span>, i.e. using <span class="flex_perlmodule">XS</span>) directly without ever being sent to <span class="flex_cvar">stdout</span>. This <em>should</em> be faster.</div> -<h3 class="subsection" id='magicparlabel-5957'><span class="subsection_label">8.5</span> Debugging <span class='math'>binary_c</i></span> +<h3 class="subsection" id='magicparlabel-5982'><span class="subsection_label">8.5</span> Debugging <span class='math'>binary_c</i></span> </h3> -<div class="standard" id='magicparlabel-5958'>I give here some general strategies for debugging <span class='math'>binary_c</i></span>, but of course there are many ways to debug code: you may know better ways, in which case please contribute to this manual!</div> -<h4 class="subsubsection" id='magicparlabel-5959'><span class="subsubsection_label">8.5.1</span> General strategy: <span class="flex_bashscript">tbse</span>, <span class='math'>\binarygrid</span> +<div class="standard" id='magicparlabel-5983'>I give here some general strategies for debugging <span class='math'>binary_c</i></span>, but of course there are many ways to debug code: you may know better ways, in which case please contribute to this manual!</div> +<h4 class="subsubsection" id='magicparlabel-5984'><span class="subsubsection_label">8.5.1</span> General strategy: <span class="flex_bashscript">tbse</span>, <span class='math'>\binarygrid</span> </h4> -<div class="standard" id='magicparlabel-5964'>The usual problem is that you are running a grid of stars and one star causes <span class='math'>binary_c</i></span> +<div class="standard" id='magicparlabel-5989'>The usual problem is that you are running a grid of stars and one star causes <span class='math'>binary_c</i></span> to crash. If you are lucky, this does not bring down the whole grid, but it might (especially if you are using the <span class="flex_programminglanguage">C</span> backend). It is important to identify precisely which star caused the crash. You will find this very hard to do if you are running a grid with more than one thread, because any thread could have caused the crash. So, the first thing you must do is run your grid with only one thread, and with <span class='math'>\binarygrid</span> debugging level at least set to 3 (e.g. run <span style='font-family:monospace;font-size: 18px;'><script> vb=3</span>). This will tell you the arguments which were sent to <span class='math'>binary_c</i></span> that caused the crash. Save these to a file.</div> -<div class="standard" id='magicparlabel-5969'>Next, you should use the <span class="flex_bashscript">tbse</span> (Test Binary Star Evolution) script to run <span class='math'>binary_c</i></span> +<div class="standard" id='magicparlabel-5994'>Next, you should use the <span class="flex_bashscript">tbse</span> (Test Binary Star Evolution) script to run <span class='math'>binary_c</i></span> with these arguments. This is very easy, just run</div> -<div class="standard" id='magicparlabel-5974'><span style='font-family:monospace;font-size: 18px;'><br /> +<div class="standard" id='magicparlabel-5999'><span style='font-family:monospace;font-size: 18px;'><br /> <pre class\s*='listings bash'>$ tbse <filename></pre><br /> </span></div> -<div class="standard" id='magicparlabel-5979'>You should see output, and (hopefully) the same failure as caused the grid to crash. Now you can debug <span class='math'>binary_c</i></span> +<div class="standard" id='magicparlabel-6004'>You should see output, and (hopefully) the same failure as caused the grid to crash. Now you can debug <span class='math'>binary_c</i></span> properly, in an isolated test case.</div> -<div class="standard" id='magicparlabel-5980'>Note that the idea of isolating a test case which causes a failure is good practice in science and engineering in general, so you're doing nothing unusual here. The strategy now is:</div> +<div class="standard" id='magicparlabel-6005'>Note that the idea of isolating a test case which causes a failure is good practice in science and engineering in general, so you're doing nothing unusual here. The strategy now is:</div> -<ul class="itemize" id='magicparlabel-5981'><li class="itemize_item">If you are seeing a segmentation fault, you probably want to now debug with <span class="flex_software">valgrind</span> or <em><span class="flex_software">gdb</span></em>.</li> +<ul class="itemize" id='magicparlabel-6006'><li class="itemize_item">If you are seeing a segmentation fault, you probably want to now debug with <span class="flex_software">valgrind</span> or <em><span class="flex_software">gdb</span></em>.</li> <li class="itemize_item">If your problem is in your algorithm and is not really a coding error as such, you probably want to use the internal debugging with <span class="flex_cmacro">DEBUG</span>, <span class="flex_cmacro">DEBUG_EXP</span> and <span class="flex_cmacro">Dprint</span>. See Section <a href="#subsec_DEBUG__DEBUG_EXP_and">8.5.3</a> below.</li> </ul> -<h4 class="subsubsection" id='magicparlabel-6003'><span class="subsubsection_label">8.5.2</span> Configure script and debug builds<div id="subsec_debug_builds"></div> +<h4 class="subsubsection" id='magicparlabel-6028'><span class="subsubsection_label">8.5.2</span> Configure script and debug builds<div id="subsec_debug_builds"></div> </h4> -<div class="standard" id='magicparlabel-6004'>When debugging, it is important to disable any optimisation the compiler uses and turn on options that allow the code to be debugged with <span class="flex_software">gdb</span> and/or <em><span class="flex_software">valgrind</span></em>, and use the <span class="flex_cmacro">backtrace</span> feature (you must have <span class="flex_software">libbacktrace</span> installed, see Section <a href="#subsec_Backtrace">8.5.4</a>). To do this, run</div> +<div class="standard" id='magicparlabel-6029'>When debugging, it is important to disable any optimisation the compiler uses and turn on options that allow the code to be debugged with <span class="flex_software">gdb</span> and/or <em><span class="flex_software">valgrind</span></em>, and use the <span class="flex_cmacro">backtrace</span> feature (you must have <span class="flex_software">libbacktrace</span> installed, see Section <a href="#subsec_Backtrace">8.5.4</a>). To do this, run</div> -<div class="standard" id='magicparlabel-6021'><br /> +<div class="standard" id='magicparlabel-6046'><br /> <pre class\s*='listings bash'>$ ./configure debug $ make cleanall $ make</pre><br /> to make a “debug build”. You should use the <span class="flex_software">gcc</span><em> </em>compiler to debug, e.g., <span style='font-family:monospace;font-size: 18px;'><br /> <pre class\s*='listings bash'>$ export CC=gcc</pre><br /> </span>prior to running <span class="flex_bashscript">configure</span>. While others, e.g. <em><span class="flex_software">clang</span></em>, probably work just fine, these have not been extensively tested. </div> -<h4 class="subsubsection" id='magicparlabel-6044'><span class="subsubsection_label">8.5.3</span> DEBUG, DEBUG_EXP and Dprint<div id="subsec_DEBUG__DEBUG_EXP_and"></div> +<h4 class="subsubsection" id='magicparlabel-6069'><span class="subsubsection_label">8.5.3</span> DEBUG, DEBUG_EXP and Dprint<div id="subsec_DEBUG__DEBUG_EXP_and"></div> </h4> -<div class="standard" id='magicparlabel-6045'>Internal debugging in <span class='math'>binary_c</i></span> +<div class="standard" id='magicparlabel-6070'>Internal debugging in <span class='math'>binary_c</i></span> is very useful to determine where an algorithm fails. It is not so useful in determining where segmentation faults and memory errors occur, although it is obviously useful in the sense that debugging will continue until a crash. </div> -<div class="standard" id='magicparlabel-6046'>To enable internal debugging, edit code_options.h and set the appropriate line <span style='font-family:monospace;font-size: 18px;'>#define DEBUG 1</span>. You will then need to rebuild the all the code (see <a href="#subsec_debug_builds">8.5.2</a>). </div> +<div class="standard" id='magicparlabel-6071'>To enable internal debugging, edit code_options.h and set the appropriate line <span style='font-family:monospace;font-size: 18px;'>#define DEBUG 1</span>. You will then need to rebuild the all the code (see <a href="#subsec_debug_builds">8.5.2</a>). </div> -<div class="standard" id='magicparlabel-6047'>When you now run <em>tbse</em> you will see many lines of data. These correspond to <span class="flex_cmacro">Dprint</span> (i.e. “debug-print”) lines in the code. </div> +<div class="standard" id='magicparlabel-6072'>When you now run <em>tbse</em> you will see many lines of data. These correspond to <span class="flex_cmacro">Dprint</span> (i.e. “debug-print”) lines in the code. </div> -<div class="standard" id='magicparlabel-6052'>There are often too many lines of data. You can restrict the data output by defining the <span class="flex_cmacro">DEBUG_EXP</span> macro. There is only output when this is true (in a <span class="flex_programminglanguage">C</span> sense of truth) so it is usually set to 1. However, you can always restrict to, say, outputting between 9 and 10 Gyr:</div> +<div class="standard" id='magicparlabel-6077'>There are often too many lines of data. You can restrict the data output by defining the <span class="flex_cmacro">DEBUG_EXP</span> macro. There is only output when this is true (in a <span class="flex_programminglanguage">C</span> sense of truth) so it is usually set to 1. However, you can always restrict to, say, outputting between 9 and 10 Gyr:</div> -<div class="standard" id='magicparlabel-6061'><br /> +<div class="standard" id='magicparlabel-6086'><br /> <pre class ='listings <i>C</i>'>#define DEBUG_EXP (stardata->model.time > 9000 && stardata->model.time < 10000)</pre><br /> You will almost always have <span class="flex_cstruct">stardata</span><em> </em>available to <span class="flex_cmacro">Dprint</span>. </div> -<div class="standard" id='magicparlabel-6074'>There are many other debugging options listed in debug_macros.h, most of which are not useful to you.</div> +<div class="standard" id='magicparlabel-6099'>There are many other debugging options listed in debug_macros.h, most of which are not useful to you.</div> -<div class="standard" id='magicparlabel-6075'>You can change the output of <span class="flex_cmacro">Dprint</span> in <span class="flex_cmacro">src/debug/debug_fprintf.c</span></div> +<div class="standard" id='magicparlabel-6100'>You can change the output of <span class="flex_cmacro">Dprint</span> in <span class="flex_cmacro">src/debug/debug_fprintf.c</span></div> -<div class="standard" id='magicparlabel-6084'>Another macro, <span class="flex_cmacro">Dprint_no_newline</span>, is the same as <span class="flex_cmacro">Dprint</span> but without a “<span class="flex_cmacro">\n</span>” newline at the end of the string.</div> -<h4 class="subsubsection" id='magicparlabel-6097'><span class="subsubsection_label">8.5.4</span> Backtrace<div id="subsec_Backtrace"></div> +<div class="standard" id='magicparlabel-6109'>Another macro, <span class="flex_cmacro">Dprint_no_newline</span>, is the same as <span class="flex_cmacro">Dprint</span> but without a “<span class="flex_cmacro">\n</span>” newline at the end of the string.</div> +<h4 class="subsubsection" id='magicparlabel-6122'><span class="subsubsection_label">8.5.4</span> Backtrace<div id="subsec_Backtrace"></div> </h4> -<div class="standard" id='magicparlabel-6098'>If <span class="flex_cmacro">BACKTRACE</span> is defined (in <span class="flex_headerfile">binary_c_code_options.h</span>) you have access to stack tracing features similar to those used in debuggers. Please install <span class="flex_software">libbacktrace</span> before expecting this to work. Calling the <span class="flex_cmacro">Backtrace</span> macro (with no arguments) allows you to see a list of callers of any function, anywhere in <span class='math'>binary_c</i></span>, through the <span class="flex_cfunction">print_trace</span> function. This is a very useful feature if you want to see which function called the function in which you have a problem. Note that it is, however, quite slow, and requires a debug build.</div> +<div class="standard" id='magicparlabel-6123'>If <span class="flex_cmacro">BACKTRACE</span> is defined (in <span class="flex_headerfile">binary_c_code_options.h</span>) you have access to stack tracing features similar to those used in debuggers. Please install <span class="flex_software">libbacktrace</span> before expecting this to work. Calling the <span class="flex_cmacro">Backtrace</span> macro (with no arguments) allows you to see a list of callers of any function, anywhere in <span class='math'>binary_c</i></span>, through the <span class="flex_cfunction">print_trace</span> function. This is a very useful feature if you want to see which function called the function in which you have a problem. Note that it is, however, quite slow, and requires a debug build.</div> -<div class="standard" id='magicparlabel-6119'>Note that this feature has not been tested on platforms other than Linux.</div> -<h4 class="subsubsection" id='magicparlabel-6120'><span class="subsubsection_label">8.5.5</span> Segmentation faults<div id="subsec_Segmentation_faults"></div> +<div class="standard" id='magicparlabel-6144'>Note that this feature has not been tested on platforms other than Linux.</div> +<h4 class="subsubsection" id='magicparlabel-6145'><span class="subsubsection_label">8.5.5</span> Segmentation faults<div id="subsec_Segmentation_faults"></div> </h4> -<div class="standard" id='magicparlabel-6121'>As with any code with large chunks of data being dynamically allocated, any attempt to access data which is not allocated leads to a segmentation fault. It is often extremely difficult to determine where the cause lies, as it may be somewhere previous in the program, or even on another thread. Should you encounter such a segmentation fault, please try running through <span class="flex_software">gdb</span> and/or <span class="flex_software">valgrind</span>.</div> -<h4 class="subsubsection" id='magicparlabel-6130'><span class="subsubsection_label">8.5.6</span> gdb</h4> -<div class="standard" id='magicparlabel-6131'>The <i>GNU</i> debugger, <span class="flex_software">gdb</span>, is a useful option for quickly finding the location of a segmentation fault. Run</div> +<div class="standard" id='magicparlabel-6146'>As with any code with large chunks of data being dynamically allocated, any attempt to access data which is not allocated leads to a segmentation fault. It is often extremely difficult to determine where the cause lies, as it may be somewhere previous in the program, or even on another thread. Should you encounter such a segmentation fault, please try running through <span class="flex_software">gdb</span> and/or <span class="flex_software">valgrind</span>.</div> +<h4 class="subsubsection" id='magicparlabel-6155'><span class="subsubsection_label">8.5.6</span> gdb</h4> +<div class="standard" id='magicparlabel-6156'>The <i>GNU</i> debugger, <span class="flex_software">gdb</span>, is a useful option for quickly finding the location of a segmentation fault. Run</div> -<div class="standard" id='magicparlabel-6136'><br /> +<div class="standard" id='magicparlabel-6161'><br /> <pre class\s*='listings bash'>$ tbse debug</pre><br /> to launch<em> <span class='math'>binary_c</i></span> </em>with <span class="flex_software">gdb</span>. Once the crash has happened, use the backtrace command <span style='font-family:monospace;font-size: 18px;'><br /> <pre class ='listings'>bt</pre><br /> </span> to run a back trace and locate the cause of the crash.</div> -<h4 class="subsubsection" id='magicparlabel-6149'><span class="subsubsection_label">8.5.7</span> valgrind and friends</h4> -<div class="standard" id='magicparlabel-6150'><span class="flex_software">Valgrind</span> is a step up in technology from <em><span class="flex_software">gdb</span></em>. It not only locates segmentation faults, it also determines when (heap) memory is overwritten when it should not be, or unallocated memory is accessed. These are the two main causes of segmentation faults, so valgrind really is your friend.</div> +<h4 class="subsubsection" id='magicparlabel-6174'><span class="subsubsection_label">8.5.7</span> valgrind and friends</h4> +<div class="standard" id='magicparlabel-6175'><span class="flex_software">Valgrind</span> is a step up in technology from <em><span class="flex_software">gdb</span></em>. It not only locates segmentation faults, it also determines when (heap) memory is overwritten when it should not be, or unallocated memory is accessed. These are the two main causes of segmentation faults, so valgrind really is your friend.</div> -<div class="standard" id='magicparlabel-6159'>There are many tools associated with <em><span class="flex_software">valgrind</span></em>:</div> +<div class="standard" id='magicparlabel-6184'>There are many tools associated with <em><span class="flex_software">valgrind</span></em>:</div> -<ul class="itemize" id='magicparlabel-6164'><li class="itemize_item"><em>memcheck</em>: this is the standard <span class="flex_software">valgrind</span><em> </em>tool for finding problems with (heap) memory access issues that lead to segfaults. Because the memory allocated in <em><span class='math'>binary_c</i></span> +<ul class="itemize" id='magicparlabel-6189'><li class="itemize_item"><em>memcheck</em>: this is the standard <span class="flex_software">valgrind</span><em> </em>tool for finding problems with (heap) memory access issues that lead to segfaults. Because the memory allocated in <em><span class='math'>binary_c</i></span> </em> is mostly on the the heap (e.g. <span class="flex_cstruct">stardata</span><em> </em>is allocated with <span class="flex_cmacro">MALLOC</span>) it is the most useful of <span class="flex_software">valgrind</span>'s tools. <br /> @@ -6374,24 +6413,24 @@ Run this with <pre class\s*='listings bash'>$ tbse drd</pre><br /> </li> </ul> -<div class="standard" id='magicparlabel-6218'>You can override the arguments sent to <span class="flex_software">valgrind</span> by <span class="flex_bashscript">tbse</span> by setting the environment variable <span class="flex_envvar">VALGRIND_ARGS</span>.</div> -<h4 class="subsubsection" id='magicparlabel-6231'><span class="subsubsection_label">8.5.8</span> Thread safety</h4> -<h4 class="subsubsection" id='magicparlabel-6232'><span class="subsubsection_label">8.5.9</span> NaN (not a number) checks</h4> -<div class="standard" id='magicparlabel-6233'>If <span class="flex_cmacro">NANCHECKS</span> is defined, you can use the <span class="flex_cmacro">Nancheck(X)</span> macro to test whether <span class="flex_cvar">X</span> is NaN. Note that checking for NaNs is computationally expensive, and you normally (once you trust your code) want <span class="flex_cmacro">NANCHECKS</span> to be undefined. If a NaN is detected, <span class='math'>binary_c</i></span> +<div class="standard" id='magicparlabel-6243'>You can override the arguments sent to <span class="flex_software">valgrind</span> by <span class="flex_bashscript">tbse</span> by setting the environment variable <span class="flex_envvar">VALGRIND_ARGS</span>.</div> +<h4 class="subsubsection" id='magicparlabel-6256'><span class="subsubsection_label">8.5.8</span> Thread safety</h4> +<h4 class="subsubsection" id='magicparlabel-6257'><span class="subsubsection_label">8.5.9</span> NaN (not a number) checks</h4> +<div class="standard" id='magicparlabel-6258'>If <span class="flex_cmacro">NANCHECKS</span> is defined, you can use the <span class="flex_cmacro">Nancheck(X)</span> macro to test whether <span class="flex_cvar">X</span> is NaN. Note that checking for NaNs is computationally expensive, and you normally (once you trust your code) want <span class="flex_cmacro">NANCHECKS</span> to be undefined. If a NaN is detected, <span class='math'>binary_c</i></span> will segfault itself.</div> -<h3 class="subsection" id='magicparlabel-6250'><span class="subsection_label">8.6</span> Events<div id="subsec_Events"></div> +<h3 class="subsection" id='magicparlabel-6275'><span class="subsection_label">8.6</span> Events<div id="subsec_Events"></div> </h3> -<div class="standard" id='magicparlabel-6251'>Starting from 2.0pre33 <span class='math'>binary_c</i></span> - has a new events system. It now behaves more like a proper stellar evolution code, in that at each timestep derivatives of variables are calculated, then applied, and events that are set during the calculation (e.g. supernovae, common-envelope evolution, contact) are <em>then</em> applied. This allows the use of more advanced integrators than the standard forward Euler scheme. At the time of writing, RK2, RK4 and a predictor-corrector are alternatives, although the forward Euler is still the standard and fastest<div class="foot"><span class="foot_label">10</span><div class="foot_inner"><div class="plain_layout" id='magicparlabel-6255'>Forward Euler is standard except in the tidal calculations, some of which are calculated analytically, then linear derivatives are computed from these assuming everything else (stellar properties, etc.) in a hybrid scheme to avoid numerical instability.</div> +<div class="standard" id='magicparlabel-6276'>Starting from 2.0pre33 <span class='math'>binary_c</i></span> + has a new events system. It now behaves more like a proper stellar evolution code, in that at each timestep derivatives of variables are calculated, then applied, and events that are set during the calculation (e.g. supernovae, common-envelope evolution, contact) are <em>then</em> applied. This allows the use of more advanced integrators than the standard forward Euler scheme. At the time of writing, RK2, RK4 and a predictor-corrector are alternatives, although the forward Euler is still the standard and fastest<div class="foot"><span class="foot_label">10</span><div class="foot_inner"><div class="plain_layout" id='magicparlabel-6280'>Forward Euler is standard except in the tidal calculations, some of which are calculated analytically, then linear derivatives are computed from these assuming everything else (stellar properties, etc.) in a hybrid scheme to avoid numerical instability.</div> </div></div>.</div> -<div class="standard" id='magicparlabel-6256'>Events are stored on the event stack and then processed from the top to the bottom of the stack at the end of the timestep, if it is a successful timestep.</div> -<h4 class="subsubsection" id='magicparlabel-6257'><span class="subsubsection_label">8.6.1</span> Queueing an event on the event stack</h4> -<div class="standard" id='magicparlabel-6258'>Events are added with the <span class="flex_cmacro">Add_new_event</span> macro. This returns an integer which is the event number, if greater than or equal to zero, its index number on the event stack. If the integer is <span class="flex_cmacro">BINARY_C_EVENT_DENIED</span> (which is <span style='font-family:monospace;font-size: 18px;'>-1</span> so can never be an index) then the event has, for some reason, been refused.</div> +<div class="standard" id='magicparlabel-6281'>Events are stored on the event stack and then processed from the top to the bottom of the stack at the end of the timestep, if it is a successful timestep.</div> +<h4 class="subsubsection" id='magicparlabel-6282'><span class="subsubsection_label">8.6.1</span> Queueing an event on the event stack</h4> +<div class="standard" id='magicparlabel-6283'>Events are added with the <span class="flex_cmacro">Add_new_event</span> macro. This returns an integer which is the event number, if greater than or equal to zero, its index number on the event stack. If the integer is <span class="flex_cmacro">BINARY_C_EVENT_DENIED</span> (which is <span style='font-family:monospace;font-size: 18px;'>-1</span> so can never be an index) then the event has, for some reason, been refused.</div> -<div class="standard" id='magicparlabel-6267'>The <span class="flex_cmacro">Add_new_event</span> macro call takes a number of arguments:</div> +<div class="standard" id='magicparlabel-6292'>The <span class="flex_cmacro">Add_new_event</span> macro call takes a number of arguments:</div> -<ul class="itemize" id='magicparlabel-6272'><li class="itemize_item"><span class="flex_cstruct">stardata</span>: the usual pointer to a <span class="flex_cstruct">stardata</span> struct</li> +<ul class="itemize" id='magicparlabel-6297'><li class="itemize_item"><span class="flex_cstruct">stardata</span>: the usual pointer to a <span class="flex_cstruct">stardata</span> struct</li> <li class="itemize_item"><span class="flex_cvar">event_type</span>: an integer identifying the event type. There are defined in <span class="flex_headerfile">events_macros.h</span></li> <li class="itemize_item"><span class="flex_cvar">event_handler_function</span>: this is a pointer to a function to be called when the event is triggered. This is required to be non-<span class="flex_cmacro">NULL</span>.</li> <li class="itemize_item"><span class="flex_cvar">erase_event_handler_function</span>: this is a pointer to a function to be called when the event is erased. Ignored if <span class="flex_cmacro">NULL</span>.</li> @@ -6402,9 +6441,9 @@ Run this with <pre class ='listings <i>C</i>'>unique==FALSE</pre><br /> .</li> </ul> -<div class="standard" id='magicparlabel-6334'>The calling function should check the return value, and clean up any memory if required after a denial. For example, the following is the code to initiate dynamical common envelope evolution in the RLOF routines.</div> +<div class="standard" id='magicparlabel-6359'>The calling function should check the return value, and clean up any memory if required after a denial. For example, the following is the code to initiate dynamical common envelope evolution in the RLOF routines.</div> -<div class="standard" id='magicparlabel-6335'><br /> +<div class="standard" id='magicparlabel-6360'><br /> <pre class ='listings <i>C</i>'> struct binary_c_new_common_envelope_event_t * event_data = MALLOC(sizeof(struct binary_c_new_common_envelope_event_t)); if(Add_new_event(stardata, @@ -6424,9 +6463,9 @@ Run this with Dprint("added event!\n"); }</pre><br /> </div> -<h4 class="subsubsection" id='magicparlabel-6357'><span class="subsubsection_label">8.6.2</span> Testing the event stack</h4> +<h4 class="subsubsection" id='magicparlabel-6382'><span class="subsubsection_label">8.6.2</span> Testing the event stack</h4> -<ul class="itemize" id='magicparlabel-6358'><li class="itemize_item">Call the <span class="flex_cfunction">events_pending</span> function to return <span class="flex_cmacro">TRUE</span> if there are events pending, <span class="flex_cmacro">FALSE</span> otherwise.<br /> +<ul class="itemize" id='magicparlabel-6383'><li class="itemize_item">Call the <span class="flex_cfunction">events_pending</span> function to return <span class="flex_cmacro">TRUE</span> if there are events pending, <span class="flex_cmacro">FALSE</span> otherwise.<br /> <pre class ='listings <i>C</i>'>Boolean x = events_pending(stardata);</pre><br /> </li> <li class="itemize_item">Call <span class="flex_cfunction">events_pending_of_type</span> to return <dfn class='lyxnoun'><span class="flex_cmacro"><dfn class='lyxnoun'>TRUE</dfn></span></dfn> if there are events of a given type pending, <span class="flex_cmacro">FALSE</span> otherwise.<br /> @@ -6438,29 +6477,29 @@ printf(“Event stack: %s\n”,evstring); Safe_free(evstring);</pre><br /> </li> </ul> -<h4 class="subsubsection" id='magicparlabel-6411'><span class="subsubsection_label">8.6.3</span> Erase the stack</h4> -<div class="standard" id='magicparlabel-6412'>The entire stack can be deleted by calling <span class="flex_cfunction">erase_events</span>. The <span style='font-family:monospace;font-size: 18px;'><span class="flex_cvar"><span style='font-family:monospace;font-size: 18px;'>void*</span></span></span> data associated with each event is freed.</div> +<h4 class="subsubsection" id='magicparlabel-6436'><span class="subsubsection_label">8.6.3</span> Erase the stack</h4> +<div class="standard" id='magicparlabel-6437'>The entire stack can be deleted by calling <span class="flex_cfunction">erase_events</span>. The <span style='font-family:monospace;font-size: 18px;'><span class="flex_cvar"><span style='font-family:monospace;font-size: 18px;'>void*</span></span></span> data associated with each event is freed.</div> -<div class="standard" id='magicparlabel-6421'><br /> +<div class="standard" id='magicparlabel-6446'><br /> <pre class ='listings <i>C</i>'>erase_events(stardata);</pre><br /> This function is called automatically when a timestep is rejected from <span class="flex_cfunction">evolution_rejected()</span>.</div> -<div class="standard" id='magicparlabel-6430'>You can also call <span class="flex_cfunction">erase_events_of_type</span><br /> +<div class="standard" id='magicparlabel-6455'>You can also call <span class="flex_cfunction">erase_events_of_type</span><br /> <pre class ='listings <i>C</i>'>erase_events_of_type(stardata,type,except);</pre><br /> which will erase all events of given <span class="flex_cvar">type</span> except the event <span class="flex_cvar">except</span>. If the type is <span class="flex_cvar">-1</span> then events of any type are removed, except <span class="flex_cvar">except</span>. If <span class="flex_cvar">except</span> is <span class="flex_cmacro">NULL</span> then all events of the given type are removed.</div> -<div class="standard" id='magicparlabel-6463'>You can erase an event without altering the event stack by calling<br /> +<div class="standard" id='magicparlabel-6488'>You can erase an event without altering the event stack by calling<br /> <pre class ='listings <i>C</i>'>erase_event(stardata,&event);</pre><br /> but beware that this will mess up the stack and <span class='math'>binary_c</i></span> is likely to be very confused.</div> -<div class="standard" id='magicparlabel-6468'>When events are erased, the optional <span class="flex_cfunction">erase_event_handler_function()</span> function is called, with the same arguments as the event handler function. You can use this to clean up any allocated memory.</div> -<h4 class="subsubsection" id='magicparlabel-6473'><span class="subsubsection_label">8.6.4</span> Catch events</h4> -<div class="standard" id='magicparlabel-6474'>At the end of each (successful) timestep, <span class="flex_cfunction">catch_events</span> is called. This function loops through the stack, triggering each event by calling the handler function and sending it the event data as well as <span class="flex_cstruct">stardata</span>. Event data is freed automatically after the event is triggered, as is the event itself.</div> -<h4 class="subsubsection" id='magicparlabel-6483'><span class="subsubsection_label">8.6.5</span> Event handler functions</h4> -<div class="standard" id='magicparlabel-6484'>The event handler functions should look like the following, again using the common-envelope code as an example.</div> +<div class="standard" id='magicparlabel-6493'>When events are erased, the optional <span class="flex_cfunction">erase_event_handler_function()</span> function is called, with the same arguments as the event handler function. You can use this to clean up any allocated memory.</div> +<h4 class="subsubsection" id='magicparlabel-6498'><span class="subsubsection_label">8.6.4</span> Catch events</h4> +<div class="standard" id='magicparlabel-6499'>At the end of each (successful) timestep, <span class="flex_cfunction">catch_events</span> is called. This function loops through the stack, triggering each event by calling the handler function and sending it the event data as well as <span class="flex_cstruct">stardata</span>. Event data is freed automatically after the event is triggered, as is the event itself.</div> +<h4 class="subsubsection" id='magicparlabel-6508'><span class="subsubsection_label">8.6.5</span> Event handler functions</h4> +<div class="standard" id='magicparlabel-6509'>The event handler functions should look like the following, again using the common-envelope code as an example.</div> -<div class="standard" id='magicparlabel-6485'><br /> +<div class="standard" id='magicparlabel-6510'><br /> <pre class ='listings'>Event_handler_function common_envelope_event_handler(void * eventp, struct stardata_t * stardata, void * data) @@ -6478,9 +6517,9 @@ but beware that this will mess up the stack and <span class='math'>binary_c</i>< /* ... now do stuff with donor and accretor ... */</pre><br /> </div> -<h3 class="subsection" id='magicparlabel-6505'><span class="subsection_label">8.7</span> Timestepping<div id="subsec_Timestepping"></div> +<h3 class="subsection" id='magicparlabel-6530'><span class="subsection_label">8.7</span> Timestepping<div id="subsec_Timestepping"></div> </h3> -<div class="standard" id='magicparlabel-6506'>The <span class='math'>binary_c</i></span> +<div class="standard" id='magicparlabel-6531'>The <span class='math'>binary_c</i></span> timestepping algorithm aims to smoothly, but efficiently, evolve your binary-star systems in time while maintaining a reasonable level of accuracy. The subroutine <span class="flex_cfunction">stellar_timestep</span> sets the timestep for each star and/or the binary system as a whole. Usually, timesteps relate a change in variable <math xmlns="http://www.w3.org/1998/Math/MathML"><mstyle mathvariant='sans-serif-italic' mathsize='85%'> <mrow><mi>x</mi> </mrow></mstyle></math> to its time derivative <math xmlns="http://www.w3.org/1998/Math/MathML"><mstyle mathvariant='sans-serif-italic' mathsize='85%'> @@ -6584,11 +6623,11 @@ but beware that this will mess up the stack and <span class='math'>binary_c</i>< <pre class ='listings <i>C</i>'>#define DT_LIMIT_TIDES 44</pre><br /> </div> -<div class="standard" id='magicparlabel-6539'>If you want to know what is limiting the timestep, the easiest way is to uncomment the line<br /> +<div class="standard" id='magicparlabel-6564'>If you want to know what is limiting the timestep, the easiest way is to uncomment the line<br /> <pre class ='listings <i>C</i>'>#define ___LOGGING</pre><br /> which is near the bottom of the <span class="flex_cfunction">stellar_timestep</span> function. This will output, on every timestep, the timestep for each star and which limiter gave the smallest timestep.</div> -<h4 class="subsubsection" id='magicparlabel-6548'><span class="subsubsection_label">8.7.1</span> Fixed timesteps</h4> -<div class="standard" id='magicparlabel-6549'>Often you will want to output at a given fixed timestep, e.g. every <math xmlns="http://www.w3.org/1998/Math/MathML"><mstyle mathvariant='sans-serif-italic' mathsize='85%'> +<h4 class="subsubsection" id='magicparlabel-6573'><span class="subsubsection_label">8.7.1</span> Fixed timesteps</h4> +<div class="standard" id='magicparlabel-6574'>Often you will want to output at a given fixed timestep, e.g. every <math xmlns="http://www.w3.org/1998/Math/MathML"><mstyle mathvariant='sans-serif-italic' mathsize='85%'> <mrow> <mrow><mn>1</mn><mspace width="6px" /> <mstyle mathvariant='normal'> @@ -6628,76 +6667,76 @@ then in <span class="flex_cfunction">setup_fixed_timesteps</span> define the pro t->previous_trigger = t->previous_test = t->begin; // set trigger</pre><br /> You can also have fixed intervals of logarithmic time by settings <span class="flex_cvar">t->logarithmic</span> to <span class="flex_cmacro">TRUE</span>.</div> -<h3 class="subsection" id='magicparlabel-6584'><span class="subsection_label">8.8</span> Code layout, header files, flow</h3> -<div class="standard" id='magicparlabel-6585'><div id="subsec_Code_layout"></div> +<h3 class="subsection" id='magicparlabel-6609'><span class="subsection_label">8.8</span> Code layout, header files, flow</h3> +<div class="standard" id='magicparlabel-6610'><div id="subsec_Code_layout"></div> The code is split into a series of directories. Some header file information is in <a href="#subsec_Advanced_Configuration">9</a>.</div> -<h4 class="subsubsection" id='magicparlabel-6586'><span class="subsubsection_label">8.8.1</span> API</h4> -<div class="standard" id='magicparlabel-6587'>You can build <i>binary_c</i> as a shared library, and enable the API interface. The functions which do this are in this directory.</div> -<h4 class="subsubsection" id='magicparlabel-6588'><span class="subsubsection_label">8.8.2</span> batchmode</h4> -<div class="standard" id='magicparlabel-6589'>The batch mode functions handle the use of <i>binary_c</i> as part of <i>binary_grid</i>. Essentially they are a loop wrapped around the evolution functions which also scans arguments passed from <i>binary_grid</i> as if they were command line arguments.</div> -<h4 class="subsubsection" id='magicparlabel-6590'><span class="subsubsection_label">8.8.3</span> binary_star_functions</h4> -<div class="standard" id='magicparlabel-6591'><div id="subsec_binary_star_functions"></div> +<h4 class="subsubsection" id='magicparlabel-6611'><span class="subsubsection_label">8.8.1</span> API</h4> +<div class="standard" id='magicparlabel-6612'>You can build <i>binary_c</i> as a shared library, and enable the API interface. The functions which do this are in this directory.</div> +<h4 class="subsubsection" id='magicparlabel-6613'><span class="subsubsection_label">8.8.2</span> batchmode</h4> +<div class="standard" id='magicparlabel-6614'>The batch mode functions handle the use of <i>binary_c</i> as part of <i>binary_grid</i>. Essentially they are a loop wrapped around the evolution functions which also scans arguments passed from <i>binary_grid</i> as if they were command line arguments.</div> +<h4 class="subsubsection" id='magicparlabel-6615'><span class="subsubsection_label">8.8.3</span> binary_star_functions</h4> +<div class="standard" id='magicparlabel-6616'><div id="subsec_binary_star_functions"></div> This directory contains functions which deal with the binary system such as Roche-Lobe radius calculation, contact systems (<span class="flex_sourcefile">contact_system.c</span>), stellar mergers (<span class="flex_sourcefile">mix.c</span>) and common envelope evolution (<span class="flex_sourcefile">common_envelope_evolution.c</span>). </div> -<h4 class="subsubsection" id='magicparlabel-6604'><span class="subsubsection_label">8.8.4</span> buffering</h4> -<div class="standard" id='magicparlabel-6605'>These functions provide an interface with <em><i>binary_grid</i></em> that improves buffering and hence <em><i>binary_grid</i></em>'s performance. When you use the <span class="flex_cmacro">Printf</span> macro, rather than <span class="flex_programminglanguage">C</span>'s native <span class="flex_cfunction">printf</span> routine, you are using the routines in here to put data into a memory buffer which is then sent to <i>binary_grid</i> for processing and statistical analysis.</div> -<h4 class="subsubsection" id='magicparlabel-6618'><span class="subsubsection_label">8.8.5</span> common_envelope</h4> -<div class="standard" id='magicparlabel-6619'>Common envelope evolution is dealt with in here. At present there is only the <span class="flex_software">BSE</span> algorithm, but you could put your own in here too.</div> -<h4 class="subsubsection" id='magicparlabel-6624'><span class="subsubsection_label">8.8.6</span> debug</h4> -<div class="standard" id='magicparlabel-6625'>This contains various debugging functions, such as <span class="flex_cfunction">debug_fprintf</span> which is called when you put <span class="flex_cmacro">Dprint</span> statements into <i>binary_c</i>. The <span class="flex_cfunction">backtrace</span> functionality is also in this directory, as is the <span class="flex_cfunction">show_stardata</span> function which allows you to output, in a readable way, the contents of a <span class="flex_cstruct">stardata</span> structure. Given this you can compare one structure's contents to another quickly and easily.</div> -<h4 class="subsubsection" id='magicparlabel-6646'><span class="subsubsection_label">8.8.7</span> disc</h4> -<div class="standard" id='magicparlabel-6647'>Work in progress, please ask RGI for details.</div> -<h4 class="subsubsection" id='magicparlabel-6648'><span class="subsubsection_label">8.8.8</span> envelope_intgeration</h4> -<div class="standard" id='magicparlabel-6649'>Experimental code.</div> -<h4 class="subsubsection" id='magicparlabel-6650'><span class="subsubsection_label">8.8.9</span> equation_of_state</h4> -<div class="standard" id='magicparlabel-6651'>Experimental code.</div> -<h4 class="subsubsection" id='magicparlabel-6652'><span class="subsubsection_label">8.8.10</span> events</h4> -<div class="standard" id='magicparlabel-6653'>See section <a href="#subsec_Events">8.6</a>.</div> -<h4 class="subsubsection" id='magicparlabel-6654'><span class="subsubsection_label">8.8.11</span> evolution</h4> -<div class="standard" id='magicparlabel-6655'><div id="subsec_evolution"></div> +<h4 class="subsubsection" id='magicparlabel-6629'><span class="subsubsection_label">8.8.4</span> buffering</h4> +<div class="standard" id='magicparlabel-6630'>These functions provide an interface with <em><i>binary_grid</i></em> that improves buffering and hence <em><i>binary_grid</i></em>'s performance. When you use the <span class="flex_cmacro">Printf</span> macro, rather than <span class="flex_programminglanguage">C</span>'s native <span class="flex_cfunction">printf</span> routine, you are using the routines in here to put data into a memory buffer which is then sent to <i>binary_grid</i> for processing and statistical analysis.</div> +<h4 class="subsubsection" id='magicparlabel-6643'><span class="subsubsection_label">8.8.5</span> common_envelope</h4> +<div class="standard" id='magicparlabel-6644'>Common envelope evolution is dealt with in here. At present there is only the <span class="flex_software">BSE</span> algorithm, but you could put your own in here too.</div> +<h4 class="subsubsection" id='magicparlabel-6649'><span class="subsubsection_label">8.8.6</span> debug</h4> +<div class="standard" id='magicparlabel-6650'>This contains various debugging functions, such as <span class="flex_cfunction">debug_fprintf</span> which is called when you put <span class="flex_cmacro">Dprint</span> statements into <i>binary_c</i>. The <span class="flex_cfunction">backtrace</span> functionality is also in this directory, as is the <span class="flex_cfunction">show_stardata</span> function which allows you to output, in a readable way, the contents of a <span class="flex_cstruct">stardata</span> structure. Given this you can compare one structure's contents to another quickly and easily.</div> +<h4 class="subsubsection" id='magicparlabel-6671'><span class="subsubsection_label">8.8.7</span> disc</h4> +<div class="standard" id='magicparlabel-6672'>Work in progress, please ask RGI for details.</div> +<h4 class="subsubsection" id='magicparlabel-6673'><span class="subsubsection_label">8.8.8</span> envelope_intgeration</h4> +<div class="standard" id='magicparlabel-6674'>Experimental code.</div> +<h4 class="subsubsection" id='magicparlabel-6675'><span class="subsubsection_label">8.8.9</span> equation_of_state</h4> +<div class="standard" id='magicparlabel-6676'>Experimental code.</div> +<h4 class="subsubsection" id='magicparlabel-6677'><span class="subsubsection_label">8.8.10</span> events</h4> +<div class="standard" id='magicparlabel-6678'>See section <a href="#subsec_Events">8.6</a>.</div> +<h4 class="subsubsection" id='magicparlabel-6679'><span class="subsubsection_label">8.8.11</span> evolution</h4> +<div class="standard" id='magicparlabel-6680'><div id="subsec_evolution"></div> The time integration, i.e. evolution, of the binary system. This contains the logic flow of the <em><i>binary_c</i></em> code. Of interest to the general user are:</div> -<ul class="itemize" id='magicparlabel-6656'><li class="itemize_item"><span class="flex_cfunction">evolve_system_binary_c</span> is the main time loop which sets up the system at its initiation, loops over time (at each timestep calling <span class="flex_cfunction">evolution</span>, see below) and then cleans up when things are all finished.</li> +<ul class="itemize" id='magicparlabel-6681'><li class="itemize_item"><span class="flex_cfunction">evolve_system_binary_c</span> is the main time loop which sets up the system at its initiation, loops over time (at each timestep calling <span class="flex_cfunction">evolution</span>, see below) and then cleans up when things are all finished.</li> <li class="itemize_item"><span class="flex_cfunction">evolution</span> The main time-evolution function. This calls the appropriate integration scheme to further the binary system under investigation in time. The default scheme is forward-Euler, but Runge-Kutta 2nd and 4th order are also available. The function <span class="flex_cfunction">evolution_step</span> in turn, for all the schemes, calls the other parts of <i>binary_c</i> that do all the appropriate physics.</li> </ul> -<h4 class="subsubsection" id='magicparlabel-6674'><span class="subsubsection_label">8.8.12</span> file</h4> -<div class="standard" id='magicparlabel-6675'>File input/output code. <i>binary_c</i> provides a custom file output routine which can limit output by size of the file, as well as output filtering routines.</div> -<h4 class="subsubsection" id='magicparlabel-6676'><span class="subsubsection_label">8.8.13</span> galactic</h4> -<div class="standard" id='magicparlabel-6677'>Experimental! A set of routines to calculate apparent and bolometric luminosities, and develop a model of galactic coordinates. It's not clear that we should be even doing this in <i>binary_c</i>…</div> -<h4 class="subsubsection" id='magicparlabel-6678'><span class="subsubsection_label">8.8.14</span> libmemoize</h4> -<div class="standard" id='magicparlabel-6679'>This is a copy of RGI's memoizing library <span class="flex_software">libmemoize</span>. The idea is that repeated calls to a function with the same arguments are automatically cached so that the function is actually only called once. Note: if you have <span class="flex_software">libmemoize</span> properly installed on your system, e.g. in <span class="flex_file"><span class="flex_envvar">$HOME</span>/lib</span> or <span class="flex_file">/usr/local/lib</span>, which is what you <em>should</em> do, then the installed version is used. The version in <i>binary_c</i> is a backup version only, and may lack the latest features.</div> -<h4 class="subsubsection" id='magicparlabel-6700'><span class="subsubsection_label">8.8.15</span> librinterpolate</h4> -<div class="standard" id='magicparlabel-6701'>This is a copy of RGI's <span class="flex_software">librinterpolate</span> linear interpolation library. If you have <span class="flex_software">librinterpolate</span> installed properly, e.g. in <span class="flex_file"><span class="flex_envvar">$HOME</span>/lib</span> or <span class="flex_file">/usr/local/lib</span>, which is what you should do, then the version in <i>binary_c</i> is ignored.</div> -<h4 class="subsubsection" id='magicparlabel-6722'><span class="subsubsection_label">8.8.16</span> logging</h4> -<div class="standard" id='magicparlabel-6723'><div id="subsec_logging"></div> +<h4 class="subsubsection" id='magicparlabel-6699'><span class="subsubsection_label">8.8.12</span> file</h4> +<div class="standard" id='magicparlabel-6700'>File input/output code. <i>binary_c</i> provides a custom file output routine which can limit output by size of the file, as well as output filtering routines.</div> +<h4 class="subsubsection" id='magicparlabel-6701'><span class="subsubsection_label">8.8.13</span> galactic</h4> +<div class="standard" id='magicparlabel-6702'>Experimental! A set of routines to calculate apparent and bolometric luminosities, and develop a model of galactic coordinates. It's not clear that we should be even doing this in <i>binary_c</i>…</div> +<h4 class="subsubsection" id='magicparlabel-6703'><span class="subsubsection_label">8.8.14</span> libmemoize</h4> +<div class="standard" id='magicparlabel-6704'>This is a copy of RGI's memoizing library <span class="flex_software">libmemoize</span>. The idea is that repeated calls to a function with the same arguments are automatically cached so that the function is actually only called once. Note: if you have <span class="flex_software">libmemoize</span> properly installed on your system, e.g. in <span class="flex_file"><span class="flex_envvar">$HOME</span>/lib</span> or <span class="flex_file">/usr/local/lib</span>, which is what you <em>should</em> do, then the installed version is used. The version in <i>binary_c</i> is a backup version only, and may lack the latest features.</div> +<h4 class="subsubsection" id='magicparlabel-6725'><span class="subsubsection_label">8.8.15</span> librinterpolate</h4> +<div class="standard" id='magicparlabel-6726'>This is a copy of RGI's <span class="flex_software">librinterpolate</span> linear interpolation library. If you have <span class="flex_software">librinterpolate</span> installed properly, e.g. in <span class="flex_file"><span class="flex_envvar">$HOME</span>/lib</span> or <span class="flex_file">/usr/local/lib</span>, which is what you should do, then the version in <i>binary_c</i> is ignored.</div> +<h4 class="subsubsection" id='magicparlabel-6747'><span class="subsubsection_label">8.8.16</span> logging</h4> +<div class="standard" id='magicparlabel-6748'><div id="subsec_logging"></div> Contains some functions used to output either to the screen or a file. Not very interesting but vital if you are to get anything out of <i>binary_c</i>.</div> -<ul class="itemize" id='magicparlabel-6724'><li class="itemize_item"><span class="flex_cfunction">log_every_timestep</span> which is called every (successful) timestep to output the current state of the star. This is where you want to put your logging code! Please remember: when logging use the <span class="flex_cmacro">Printf</span> macro, not <span class="flex_programminglanguage">C</span>'s <span class="flex_cfunction">printf</span>-type function calls.</li> +<ul class="itemize" id='magicparlabel-6749'><li class="itemize_item"><span class="flex_cfunction">log_every_timestep</span> which is called every (successful) timestep to output the current state of the star. This is where you want to put your logging code! Please remember: when logging use the <span class="flex_cmacro">Printf</span> macro, not <span class="flex_programminglanguage">C</span>'s <span class="flex_cfunction">printf</span>-type function calls.</li> </ul> -<h4 class="subsubsection" id='magicparlabel-6741'><span class="subsubsection_label">8.8.17</span> maths</h4> -<div class="standard" id='magicparlabel-6742'>Contains a selection of routines to do some mathematical tasks that are useful to <em><i>binary_c</i></em>, many of these routines are wrappers to <span class="flex_software">GSL</span> functions. There are not-a-number (NaN) checking routines, random number generators, a Kaps-Rentrop solver, a generic Brent minimizer, and the <span class="flex_cfunction">apply_derivative</span> function which is used by <span class="flex_cfunction">evolution</span> to integrate numerical derivatives at each timestep.</div> +<h4 class="subsubsection" id='magicparlabel-6766'><span class="subsubsection_label">8.8.17</span> maths</h4> +<div class="standard" id='magicparlabel-6767'>Contains a selection of routines to do some mathematical tasks that are useful to <em><i>binary_c</i></em>, many of these routines are wrappers to <span class="flex_software">GSL</span> functions. There are not-a-number (NaN) checking routines, random number generators, a Kaps-Rentrop solver, a generic Brent minimizer, and the <span class="flex_cfunction">apply_derivative</span> function which is used by <span class="flex_cfunction">evolution</span> to integrate numerical derivatives at each timestep.</div> -<ul class="itemize" id='magicparlabel-6755'><li class="itemize_item">Some of the code is experimental so probably not used.</li> +<ul class="itemize" id='magicparlabel-6780'><li class="itemize_item">Some of the code is experimental so probably not used.</li> <li class="itemize_item">Anything you put in this directory must be free and freely distributable software. There are no routines from <em>Numerical Recipes in <i>C</i></em> because these are not free software.</li> </ul> -<h4 class="subsubsection" id='magicparlabel-6757'><span class="subsubsection_label">8.8.18</span> memory</h4> -<div class="standard" id='magicparlabel-6758'>In here reside <i>binary_c</i>'s memory allocation and freeing (garbage collection) routines.</div> -<h4 class="subsubsection" id='magicparlabel-6759'><span class="subsubsection_label">8.8.19</span> misc</h4> -<div class="standard" id='magicparlabel-6760'>Routines that don't go anywhere else. At the moment this contains nothing.</div> -<h4 class="subsubsection" id='magicparlabel-6761'><span class="subsubsection_label">8.8.20</span> nucsyn</h4> -<div class="standard" id='magicparlabel-6762'>See section <a href="#subsec_nucsyn">8.9</a>.</div> -<h4 class="subsubsection" id='magicparlabel-6763'><span class="subsubsection_label">8.8.21</span> opacity</h4> -<div class="standard" id='magicparlabel-6764'>Experimental.</div> -<h4 class="subsubsection" id='magicparlabel-6765'><span class="subsubsection_label">8.8.22</span> orbit</h4> -<div class="standard" id='magicparlabel-6766'>Routines which calculate orbital properties go in here.</div> -<h4 class="subsubsection" id='magicparlabel-6767'><span class="subsubsection_label">8.8.23</span> perl</h4> -<div class="standard" id='magicparlabel-6768'>Not strictly part of the <em><i>binary_c</i></em> <span class="flex_programminglanguage">C</span> source, but contains some useful <span class="flex_scriptinglanguage">Perl</span> modules (e.g.<em> <i>binary_grid</i></em>) and scripts.</div> -<h4 class="subsubsection" id='magicparlabel-6777'><span class="subsubsection_label">8.8.24</span> python</h4> -<div class="standard" id='magicparlabel-6778'><span class="flex_scriptinglanguage">Python</span> scripts, e.g. to access the API through <span class="flex_scriptinglanguage">Python</span>, are in here.</div> -<h4 class="subsubsection" id='magicparlabel-6787'><span class="subsubsection_label">8.8.25</span> RLOF</h4> -<div class="standard" id='magicparlabel-6788'><div id="subsec_RLOF"></div> +<h4 class="subsubsection" id='magicparlabel-6782'><span class="subsubsection_label">8.8.18</span> memory</h4> +<div class="standard" id='magicparlabel-6783'>In here reside <i>binary_c</i>'s memory allocation and freeing (garbage collection) routines.</div> +<h4 class="subsubsection" id='magicparlabel-6784'><span class="subsubsection_label">8.8.19</span> misc</h4> +<div class="standard" id='magicparlabel-6785'>Routines that don't go anywhere else. At the moment this contains nothing.</div> +<h4 class="subsubsection" id='magicparlabel-6786'><span class="subsubsection_label">8.8.20</span> nucsyn</h4> +<div class="standard" id='magicparlabel-6787'>See section <a href="#subsec_nucsyn">8.9</a>.</div> +<h4 class="subsubsection" id='magicparlabel-6788'><span class="subsubsection_label">8.8.21</span> opacity</h4> +<div class="standard" id='magicparlabel-6789'>Experimental.</div> +<h4 class="subsubsection" id='magicparlabel-6790'><span class="subsubsection_label">8.8.22</span> orbit</h4> +<div class="standard" id='magicparlabel-6791'>Routines which calculate orbital properties go in here.</div> +<h4 class="subsubsection" id='magicparlabel-6792'><span class="subsubsection_label">8.8.23</span> perl</h4> +<div class="standard" id='magicparlabel-6793'>Not strictly part of the <em><i>binary_c</i></em> <span class="flex_programminglanguage">C</span> source, but contains some useful <span class="flex_scriptinglanguage">Perl</span> modules (e.g.<em> <i>binary_grid</i></em>) and scripts.</div> +<h4 class="subsubsection" id='magicparlabel-6802'><span class="subsubsection_label">8.8.24</span> python</h4> +<div class="standard" id='magicparlabel-6803'><span class="flex_scriptinglanguage">Python</span> scripts, e.g. to access the API through <span class="flex_scriptinglanguage">Python</span>, are in here.</div> +<h4 class="subsubsection" id='magicparlabel-6812'><span class="subsubsection_label">8.8.25</span> RLOF</h4> +<div class="standard" id='magicparlabel-6813'><div id="subsec_RLOF"></div> This has functions which deal with dynamical timescale Roche lobe overflow. </div> -<div class="standard" id='magicparlabel-6789'>First, there is the question of when <math xmlns="http://www.w3.org/1998/Math/MathML"><mstyle mathvariant='sans-serif-italic' mathsize='85%'> +<div class="standard" id='magicparlabel-6814'>First, there is the question of when <math xmlns="http://www.w3.org/1998/Math/MathML"><mstyle mathvariant='sans-serif-italic' mathsize='85%'> <mrow> <mrow><mi>R</mi><mo>=</mo> <msub subscriptshift="0.2ex"> @@ -6739,7 +6778,7 @@ This has functions which deal with dynamical timescale Roche lobe overflow. </di </mrow> </mrow></mstyle></math> to within some threshold (usually 2%). However, this means taking <em>negative</em> timesteps, which plays havoc with logging and nucleosynthesis algorithms.</div> -<div class="standard" id='magicparlabel-6798'>In the latest <em><i>binary_c</i></em>, a simpler (albeit slower) algorithm is used which rejects the evolution when <math xmlns="http://www.w3.org/1998/Math/MathML"><mstyle mathvariant='sans-serif-italic' mathsize='85%'> +<div class="standard" id='magicparlabel-6823'>In the latest <em><i>binary_c</i></em>, a simpler (albeit slower) algorithm is used which rejects the evolution when <math xmlns="http://www.w3.org/1998/Math/MathML"><mstyle mathvariant='sans-serif-italic' mathsize='85%'> <mrow> <mrow><mi>R</mi><mo> ≫ </mo> <msub subscriptshift="0.2ex"> @@ -6761,7 +6800,7 @@ This has functions which deal with dynamical timescale Roche lobe overflow. </di </mrow> </mrow></mstyle></math>, always with a positive timestep.</div> -<div class="standard" id='magicparlabel-6807'>RLOF itself is followed according to one of a number of algorithms. First, the system is tested for the stability of RLOF (<span class="flex_cfunction">RLOF_stability_tests</span>). If RLOF is unstable, a merger or common envelope usually entails. Second, if the RLOF is stable, there are several methods for calculating the mass transfer rate. The formulaic approach assumes that for a given <math xmlns="http://www.w3.org/1998/Math/MathML"><mstyle mathvariant='sans-serif-italic' mathsize='85%'> +<div class="standard" id='magicparlabel-6832'>RLOF itself is followed according to one of a number of algorithms. First, the system is tested for the stability of RLOF (<span class="flex_cfunction">RLOF_stability_tests</span>). If RLOF is unstable, a merger or common envelope usually entails. Second, if the RLOF is stable, there are several methods for calculating the mass transfer rate. The formulaic approach assumes that for a given <math xmlns="http://www.w3.org/1998/Math/MathML"><mstyle mathvariant='sans-serif-italic' mathsize='85%'> <mrow> <mrow><mi>R</mi><mo> ≥ </mo> <msub subscriptshift="0.2ex"> @@ -6801,42 +6840,42 @@ This has functions which deal with dynamical timescale Roche lobe overflow. </di </msub> </mrow> </mrow></mstyle></math>. This is more exact, but requires more calculation steps. Usually, the two methods give similar answers, but if mass transfer is particularly fast, e.g. in massive stars, this may not be the case.</div> -<h4 class="subsubsection" id='magicparlabel-6812'><span class="subsubsection_label">8.8.26</span> <span style='font-family:monospace;font-size: 18px;'>setup</span></h4> -<div class="standard" id='magicparlabel-6813'><div id="subsec_setup"></div> +<h4 class="subsubsection" id='magicparlabel-6837'><span class="subsubsection_label">8.8.26</span> <span style='font-family:monospace;font-size: 18px;'>setup</span></h4> +<div class="standard" id='magicparlabel-6838'><div id="subsec_setup"></div> This sets the code up because <span class="flex_cfunction">set_up_variables</span> is called by the <span class="flex_cfunction">main</span> function. It reads in the command line arguments and sets them to variables.</div> -<div class="standard" id='magicparlabel-6822'>The <span class="flex_cfunction">parse_arguments</span> function takes command line arguments and puts them into (in particular) the <span style='font-family:monospace;font-size: 18px;'>preferences</span> structure. This function is very useful if you want to put in your own arguments, which should go into <span class="flex_headerfile">cmd_line_args.h</span>.</div> -<h4 class="subsubsection" id='magicparlabel-6831'><span class="subsubsection_label">8.8.27</span> signals</h4> -<div class="standard" id='magicparlabel-6832'><span class="flex_os">Unix</span>/<span class="flex_os">Linux</span> uses signals to communicate with running programs. Code in here allows you to catch signals, as well as catching (and trapping) segmentation faults which is very useful for debugging (e.g. with <span class="flex_software">gdb</span> and/or <span class="flex_software">valgrind</span>).</div> -<h4 class="subsubsection" id='magicparlabel-6849'><span class="subsubsection_label">8.8.28</span> single_star_functions</h4> -<div class="standard" id='magicparlabel-6850'>Many functions which only affect single star, or detached binary, evolution are in this directory.</div> -<h4 class="subsubsection" id='magicparlabel-6851'><span class="subsubsection_label">8.8.29</span> spectra</h4> -<div class="standard" id='magicparlabel-6852'>Functions in here link stars, through their temperature and luminosity, to spectra. At present only a blackbody spectrum is supported, but the algorithm for calculating the blackbody flux in regions of wavelength parameter space is fast and accurate.</div> -<h4 class="subsubsection" id='magicparlabel-6853'><span class="subsubsection_label">8.8.30</span> stellar_colours</h4> -<div class="standard" id='magicparlabel-6854'>This contains some routines to calculate stellar colours, which may or may not be reliable.</div> -<h4 class="subsubsection" id='magicparlabel-6855'><span class="subsubsection_label">8.8.31</span> stellar_structure</h4> -<div class="standard" id='magicparlabel-6856'><div id="subsec_stellar_structure"></div> +<div class="standard" id='magicparlabel-6847'>The <span class="flex_cfunction">parse_arguments</span> function takes command line arguments and puts them into (in particular) the <span style='font-family:monospace;font-size: 18px;'>preferences</span> structure. This function is very useful if you want to put in your own arguments, which should go into <span class="flex_headerfile">cmd_line_args.h</span>.</div> +<h4 class="subsubsection" id='magicparlabel-6856'><span class="subsubsection_label">8.8.27</span> signals</h4> +<div class="standard" id='magicparlabel-6857'><span class="flex_os">Unix</span>/<span class="flex_os">Linux</span> uses signals to communicate with running programs. Code in here allows you to catch signals, as well as catching (and trapping) segmentation faults which is very useful for debugging (e.g. with <span class="flex_software">gdb</span> and/or <span class="flex_software">valgrind</span>).</div> +<h4 class="subsubsection" id='magicparlabel-6874'><span class="subsubsection_label">8.8.28</span> single_star_functions</h4> +<div class="standard" id='magicparlabel-6875'>Many functions which only affect single star, or detached binary, evolution are in this directory.</div> +<h4 class="subsubsection" id='magicparlabel-6876'><span class="subsubsection_label">8.8.29</span> spectra</h4> +<div class="standard" id='magicparlabel-6877'>Functions in here link stars, through their temperature and luminosity, to spectra. At present only a blackbody spectrum is supported, but the algorithm for calculating the blackbody flux in regions of wavelength parameter space is fast and accurate.</div> +<h4 class="subsubsection" id='magicparlabel-6878'><span class="subsubsection_label">8.8.30</span> stellar_colours</h4> +<div class="standard" id='magicparlabel-6879'>This contains some routines to calculate stellar colours, which may or may not be reliable.</div> +<h4 class="subsubsection" id='magicparlabel-6880'><span class="subsubsection_label">8.8.31</span> stellar_structure</h4> +<div class="standard" id='magicparlabel-6881'><div id="subsec_stellar_structure"></div> Sets up a <span class="flex_cstruct">new_structure</span> struct, and passes this to the appropriate stellar structure calculation code. Currently only <span style='font-family:monospace;font-size: 18px;'>stellar_structure_BSE</span> is available, but in future different codes may arise.</div> -<div class="standard" id='magicparlabel-6861'><span class="flex_cfunction">stellar_structure_BSE</span> is based on the <span class="flex_fortranfunction">hrdiag</span> function of <span class="flex_software">SSE/BSE</span>. It computes the stellar structure variables at a given time. In addition, it handles supernova explosions and kicks. Note that this functionality may eventually be removed from the stellar_structure directory.</div> -<h4 class="subsubsection" id='magicparlabel-6874'><span class="subsubsection_label">8.8.32</span> stellar_timescales</h4> -<div class="standard" id='magicparlabel-6875'>This set of functions calculates the timescales required by stellar_evolution, as in the <span class="flex_software">SSE/BSE</span> stellar evolution package (in which it is the function <span class="flex_fortranfunction">star.f</span>, and in <em><i>binary_c</i></em> V1.x it is <span class="flex_cfunction">calc_lum_and_evol_time</span> in <span class="flex_file">claet</span>).</div> -<h4 class="subsubsection" id='magicparlabel-6892'><span class="subsubsection_label">8.8.33</span> string</h4> -<div class="standard" id='magicparlabel-6893'>Functions to manipulate strings go in here, including <span class="flex_cfunction">binary_c_asprintf</span> (to replace asprintf if <span class="flex_software">Gnu</span> or <span class="flex_software">libbsd</span>'s version is not available) and <span class="flex_cfunction">chomp</span> (to remove newlines at the end of a string, identical to <span class="flex_scriptinglanguage">Perl</span>'s <span class="flex_perlcode">chomp</span>).</div> -<h4 class="subsubsection" id='magicparlabel-6918'><span class="subsubsection_label">8.8.34</span> supernovae</h4> -<div class="standard" id='magicparlabel-6919'>Functions which deal with supernovae, e.g. kicks, NS/BH mass as a function of progentior, etc. Note that supernovae are dealt with at the end of a timestep as an event (see section <a href="#subsec_Events">8.6</a>).</div> -<h4 class="subsubsection" id='magicparlabel-6920'><span class="subsubsection_label">8.8.35</span> tables</h4> -<div class="standard" id='magicparlabel-6921'>Various tables of data, used by <span class="flex_software">librinterpolate</span>, are included in <i>binary_c</i>. This directory contains the data for them and the various setup functions. In future, this data may be held elsewhere and its location accessed through an environment variable.</div> -<h4 class="subsubsection" id='magicparlabel-6926'><span class="subsubsection_label">8.8.36</span> timers</h4> -<div class="standard" id='magicparlabel-6927'>These are functions which start and stop the ticks counters. They are used to measure CPU time use, i.e. profiling of the code. Note that there are many ways to profile (including e.g. <span class="flex_software">cachegrind</span> and <span class="flex_software">callgrind</span>, functions of <span class="flex_software">valgrind</span>, and the ever reliable <span class="flex_software">gprof</span>).</div> -<h4 class="subsubsection" id='magicparlabel-6944'><span class="subsubsection_label">8.8.37</span> timestep</h4> -<div class="standard" id='magicparlabel-6945'>Routines for calculating the stellar timestep, see the function <span class="flex_cfunction">stellar_timestep</span> for details.</div> -<h4 class="subsubsection" id='magicparlabel-6950'><span class="subsubsection_label">8.8.38</span> triple_star_functions</h4> -<div class="standard" id='magicparlabel-6951'>Experimental! As the name suggests, these are functions to calculate the various physics in triple stars.</div> -<h4 class="subsubsection" id='magicparlabel-6952'><span class="subsubsection_label">8.8.39</span> wind</h4> -<div class="standard" id='magicparlabel-6953'>Routines for calculating the stellar wind loss rate. Note that the main function that calculates the wind mass-loss rate is actually in <span class="flex_file">src/single_star_functions/calc_stellar_wind_mass_loss.c</span> but that just calls <span class="flex_cfunction">wind_mass_loss_rate</span> which is in this directory.</div> -<h4 class="subsubsection" id='magicparlabel-6962'><span class="subsubsection_label">8.8.40</span> zfuncs</h4> -<div class="standard" id='magicparlabel-6963'><div id="subsec_zfuncs"></div> +<div class="standard" id='magicparlabel-6886'><span class="flex_cfunction">stellar_structure_BSE</span> is based on the <span class="flex_fortranfunction">hrdiag</span> function of <span class="flex_software">SSE/BSE</span>. It computes the stellar structure variables at a given time. In addition, it handles supernova explosions and kicks. Note that this functionality may eventually be removed from the stellar_structure directory.</div> +<h4 class="subsubsection" id='magicparlabel-6899'><span class="subsubsection_label">8.8.32</span> stellar_timescales</h4> +<div class="standard" id='magicparlabel-6900'>This set of functions calculates the timescales required by stellar_evolution, as in the <span class="flex_software">SSE/BSE</span> stellar evolution package (in which it is the function <span class="flex_fortranfunction">star.f</span>, and in <em><i>binary_c</i></em> V1.x it is <span class="flex_cfunction">calc_lum_and_evol_time</span> in <span class="flex_file">claet</span>).</div> +<h4 class="subsubsection" id='magicparlabel-6917'><span class="subsubsection_label">8.8.33</span> string</h4> +<div class="standard" id='magicparlabel-6918'>Functions to manipulate strings go in here, including <span class="flex_cfunction">binary_c_asprintf</span> (to replace asprintf if <span class="flex_software">Gnu</span> or <span class="flex_software">libbsd</span>'s version is not available) and <span class="flex_cfunction">chomp</span> (to remove newlines at the end of a string, identical to <span class="flex_scriptinglanguage">Perl</span>'s <span class="flex_perlcode">chomp</span>).</div> +<h4 class="subsubsection" id='magicparlabel-6943'><span class="subsubsection_label">8.8.34</span> supernovae</h4> +<div class="standard" id='magicparlabel-6944'>Functions which deal with supernovae, e.g. kicks, NS/BH mass as a function of progentior, etc. Note that supernovae are dealt with at the end of a timestep as an event (see section <a href="#subsec_Events">8.6</a>).</div> +<h4 class="subsubsection" id='magicparlabel-6945'><span class="subsubsection_label">8.8.35</span> tables</h4> +<div class="standard" id='magicparlabel-6946'>Various tables of data, used by <span class="flex_software">librinterpolate</span>, are included in <i>binary_c</i>. This directory contains the data for them and the various setup functions. In future, this data may be held elsewhere and its location accessed through an environment variable.</div> +<h4 class="subsubsection" id='magicparlabel-6951'><span class="subsubsection_label">8.8.36</span> timers</h4> +<div class="standard" id='magicparlabel-6952'>These are functions which start and stop the ticks counters. They are used to measure CPU time use, i.e. profiling of the code. Note that there are many ways to profile (including e.g. <span class="flex_software">cachegrind</span> and <span class="flex_software">callgrind</span>, functions of <span class="flex_software">valgrind</span>, and the ever reliable <span class="flex_software">gprof</span>).</div> +<h4 class="subsubsection" id='magicparlabel-6969'><span class="subsubsection_label">8.8.37</span> timestep</h4> +<div class="standard" id='magicparlabel-6970'>Routines for calculating the stellar timestep, see the function <span class="flex_cfunction">stellar_timestep</span> for details.</div> +<h4 class="subsubsection" id='magicparlabel-6975'><span class="subsubsection_label">8.8.38</span> triple_star_functions</h4> +<div class="standard" id='magicparlabel-6976'>Experimental! As the name suggests, these are functions to calculate the various physics in triple stars.</div> +<h4 class="subsubsection" id='magicparlabel-6977'><span class="subsubsection_label">8.8.39</span> wind</h4> +<div class="standard" id='magicparlabel-6978'>Routines for calculating the stellar wind loss rate. Note that the main function that calculates the wind mass-loss rate is actually in <span class="flex_file">src/single_star_functions/calc_stellar_wind_mass_loss.c</span> but that just calls <span class="flex_cfunction">wind_mass_loss_rate</span> which is in this directory.</div> +<h4 class="subsubsection" id='magicparlabel-6987'><span class="subsubsection_label">8.8.40</span> zfuncs</h4> +<div class="standard" id='magicparlabel-6988'><div id="subsec_zfuncs"></div> The so called “metallicity functions” of <span class="flex_software">BSE</span> i.e. the many fits to <math xmlns="http://www.w3.org/1998/Math/MathML"><mstyle mathvariant='sans-serif-italic' mathsize='85%'> <mrow><mi>L</mi> </mrow></mstyle></math>, <math xmlns="http://www.w3.org/1998/Math/MathML"><mstyle mathvariant='sans-serif-italic' mathsize='85%'> @@ -6857,42 +6896,42 @@ The so called “metallicity functions” of <span class="flex_software" <mrow><mi>Z</mi> </mrow></mstyle></math> (and perhaps other parameters). These are lots of tiny functions which contain fitting formulae.</div> -<div class="standard" id='magicparlabel-6968'>Lately I have added some new functions, such as <span class="flex_cfunction">mc_1DUP</span> (the core mass at which first dredge up occurs), <span class="flex_cfunction">fphase</span> (the fractional age in a given stellar evolution phase), <span class="flex_cfunction">rwd</span> and <span class="flex_cfunction">lwd</span> (radius and luminosity of a white dwarf) etc. This seems a reasonable location for storing small, useful functions.</div> +<div class="standard" id='magicparlabel-6993'>Lately I have added some new functions, such as <span class="flex_cfunction">mc_1DUP</span> (the core mass at which first dredge up occurs), <span class="flex_cfunction">fphase</span> (the fractional age in a given stellar evolution phase), <span class="flex_cfunction">rwd</span> and <span class="flex_cfunction">lwd</span> (radius and luminosity of a white dwarf) etc. This seems a reasonable location for storing small, useful functions.</div> -<div class="standard" id='magicparlabel-6985'>Please note that I have optimized these functions to the hilt because they are called very often.</div> -<h3 class="subsection" id='magicparlabel-6986'><span class="subsection_label">8.9</span> nucsyn</h3> -<div class="standard" id='magicparlabel-6987'><div id="subsec_nucsyn"></div> +<div class="standard" id='magicparlabel-7010'>Please note that I have optimized these functions to the hilt because they are called very often.</div> +<h3 class="subsection" id='magicparlabel-7011'><span class="subsection_label">8.9</span> nucsyn</h3> +<div class="standard" id='magicparlabel-7012'><div id="subsec_nucsyn"></div> The nucleosynthesis functions are in a directory of their own. It contains the functions which deal with the nucleosynthesis part of the code which runs in parallel to <span class="flex_software">SSE/BSE</span>. That is <em>not</em> to say that all the nucleosynthesis is done here, but most of it is.</div> -<div class="standard" id='magicparlabel-6992'>To enable nucleosynthesis in the code you must</div> +<div class="standard" id='magicparlabel-7017'>To enable nucleosynthesis in the code you must</div> -<div class="standard" id='magicparlabel-6993'><span style='font-family:monospace;font-size: 18px;'><br /> +<div class="standard" id='magicparlabel-7018'><span style='font-family:monospace;font-size: 18px;'><br /> <pre class ='listings <i>C</i>'>#define NUCSYN</pre><br /> </span></div> -<div class="standard" id='magicparlabel-6998'>somewhere, usually in <span class="flex_headerfile">binary_c_parameters.h</span> (which gets included in <span class="flex_headerfile">binary_c_macros.h</span> so <span class="flex_headerfile">nucsyn.h</span> – you should include <span class="flex_headerfile">nucsyn.h</span> in every nucsyn library file). It is vitally important that if you add anything to the nucleosynthesis code you enclose it in something like</div> +<div class="standard" id='magicparlabel-7023'>somewhere, usually in <span class="flex_headerfile">binary_c_parameters.h</span> (which gets included in <span class="flex_headerfile">binary_c_macros.h</span> so <span class="flex_headerfile">nucsyn.h</span> – you should include <span class="flex_headerfile">nucsyn.h</span> in every nucsyn library file). It is vitally important that if you add anything to the nucleosynthesis code you enclose it in something like</div> -<div class="standard" id='magicparlabel-7015'><span style='font-family:monospace;font-size: 18px;'><br /> +<div class="standard" id='magicparlabel-7040'><span style='font-family:monospace;font-size: 18px;'><br /> <pre class ='listings <i>C</i>'>#ifdef NUCSYN ... #endif /* NUCSYN */</pre><br /> </span></div> -<div class="standard" id='magicparlabel-7022'>so that if nucleosynthesis is not required it can be turned off.</div> +<div class="standard" id='magicparlabel-7047'>so that if nucleosynthesis is not required it can be turned off.</div> -<div class="standard" id='magicparlabel-7023'>There are then further options in <span class="flex_headerfile">nucsyn_parameters.h</span> (see section <a href="#subsec_Advanced_Configuration">9</a>).</div> +<div class="standard" id='magicparlabel-7048'>There are then further options in <span class="flex_headerfile">nucsyn_parameters.h</span> (see section <a href="#subsec_Advanced_Configuration">9</a>).</div> -<div class="standard" id='magicparlabel-7028'>NOTE! <em>Every function in the nucsyn library has</em> <span class="flex_cfunction">nucsyn</span> <em>prepended to the function name - please maintain this convention!</em></div> -<h4 class="subsubsection" id='magicparlabel-7033'><span class="subsubsection_label">8.9.1</span> Header files and isotope arrays</h4> -<div class="standard" id='magicparlabel-7034'><div id="subsec_Header_files_and_isotope_arrays"></div> +<div class="standard" id='magicparlabel-7053'>NOTE! <em>Every function in the nucsyn library has</em> <span class="flex_cfunction">nucsyn</span> <em>prepended to the function name - please maintain this convention!</em></div> +<h4 class="subsubsection" id='magicparlabel-7058'><span class="subsubsection_label">8.9.1</span> Header files and isotope arrays</h4> +<div class="standard" id='magicparlabel-7059'><div id="subsec_Header_files_and_isotope_arrays"></div> All abundances are stored as mass fractions when the array is called <span style='font-family:monospace;font-size: 18px;'>X…</span>, number densities are referred to as <span style='font-family:monospace;font-size: 18px;'>N…</span>. The index for each array ranges from <math xmlns="http://www.w3.org/1998/Math/MathML"><mstyle mathvariant='sans-serif-italic' mathsize='85%'> <mrow><mn>0</mn> </mrow></mstyle></math> to <span class="flex_cmacro">ISOTOPE_ARRAY_SIZE</span> which is defined in <span class="flex_headerfile">nucsyn_isotopes.h</span> however you should <em>NEVER</em> manually access the array by number, e.g.<span style='font-family:monospace;font-size: 18px;'> <br /> <pre class ='listings'>X[0]=0.5;</pre><br /> -</span>you should use the predefined macros referring to each isotope in <span class="flex_headerfile">nucsyn_isotopes.h</span> and <span class="flex_headerfile">nucsyn_isotope_list.h</span>. For example, <span class="flex_cmacro">XC12</span> is defined like this<div class="foot"><span class="foot_label">11</span><div class="foot_inner"><div class="plain_layout" id='magicparlabel-7062'>Actually, in a modern <i>binary_c</i>, it is defined to be one more than the previous isotope. This is just an integer, of course, and you don't care what that integer is.</div> +</span>you should use the predefined macros referring to each isotope in <span class="flex_headerfile">nucsyn_isotopes.h</span> and <span class="flex_headerfile">nucsyn_isotope_list.h</span>. For example, <span class="flex_cmacro">XC12</span> is defined like this<div class="foot"><span class="foot_label">11</span><div class="foot_inner"><div class="plain_layout" id='magicparlabel-7087'>Actually, in a modern <i>binary_c</i>, it is defined to be one more than the previous isotope. This is just an integer, of course, and you don't care what that integer is.</div> </div></div>,</div> -<div class="standard" id='magicparlabel-7063'><span style='font-family:monospace;font-size: 18px;'><br /> +<div class="standard" id='magicparlabel-7088'><span style='font-family:monospace;font-size: 18px;'><br /> <pre class ='listings'>#define XC12 2</pre><br /> </span>so the second isotope in the array is <math xmlns="http://www.w3.org/1998/Math/MathML"><mstyle mathvariant='sans-serif-italic' mathsize='85%'> <mrow> @@ -6920,7 +6959,7 @@ All abundances are stored as mass fractions when the array is called <span style N[XC12]=1e-8;</pre><br /> Perhaps also useful for you is <span class="flex_cmacro">ISOTOPE_MEMSIZE</span> which is just the size (in bytes) of the abundance array.</div> -<div class="standard" id='magicparlabel-7078'>Why is this an advantage? It is very useful to be able to pull isotopes out which are not of interest (this speeds up the code) without breaking all the others, the historical development of the code (<math xmlns="http://www.w3.org/1998/Math/MathML"><mstyle mathvariant='sans-serif-italic' mathsize='85%'> +<div class="standard" id='magicparlabel-7103'>Why is this an advantage? It is very useful to be able to pull isotopes out which are not of interest (this speeds up the code) without breaking all the others, the historical development of the code (<math xmlns="http://www.w3.org/1998/Math/MathML"><mstyle mathvariant='sans-serif-italic' mathsize='85%'> <mrow> <mrow> <msup><mrow /> @@ -6943,19 +6982,19 @@ N[XC12]=1e-8;</pre><br /> </mstyle> </mrow> </mrow></mstyle></math> and CNO came first) is not a problem and the addition of new nuclei is easy (but remember section <a href="#subsec_Setup_functions">8.9.2</a>). It also makes the code <em>bloody easy to read</em> since it is painfully obvious which isotope you are referring to! This is important late at night after too much coffee (or other drink!).</div> -<h4 class="subsubsection" id='magicparlabel-7079'><span class="subsubsection_label">8.9.2</span> Setup functions</h4> -<div class="standard" id='magicparlabel-7080'><div id="subsec_Setup_functions"></div> +<h4 class="subsubsection" id='magicparlabel-7104'><span class="subsubsection_label">8.9.2</span> Setup functions</h4> +<div class="standard" id='magicparlabel-7105'><div id="subsec_Setup_functions"></div> <span class="flex_cfunction">nucsyn_set_nuc_masses</span> sets the nuclear masses (in grams) and atomic numbers. If you add an isotope to <span class="flex_headerfile">nucsyn_isotopes.h</span> (see section <a href="#subsec_Header_files_and_isotope_arrays">8.9.1</a>) you <em>MUST</em> change this function to set the nuclear mass or atomic number. If you do not then the number will be undefined and strange things will happen even though your nice new code looks fine (and <span class="flex_software">valgrind</span> will immediately fail because you'll be reading from undefined memory).</div> -<div class="standard" id='magicparlabel-7093'><span class="flex_cfunction">nucsyn_initial_abundances</span> is obviously important because it defines your initial abundance mix, usually as a function of the metallicity.</div> -<h4 class="subsubsection" id='magicparlabel-7098'><span class="subsubsection_label">8.9.3</span> First and Second Dredge-up</h4> -<div class="standard" id='magicparlabel-7099'><div id="subsec_First_and_Second_DUP"></div> +<div class="standard" id='magicparlabel-7118'><span class="flex_cfunction">nucsyn_initial_abundances</span> is obviously important because it defines your initial abundance mix, usually as a function of the metallicity.</div> +<h4 class="subsubsection" id='magicparlabel-7123'><span class="subsubsection_label">8.9.3</span> First and Second Dredge-up</h4> +<div class="standard" id='magicparlabel-7124'><div id="subsec_First_and_Second_DUP"></div> First and second dredge-up are handled by the functions <span class="flex_cfunction">nucsyn_set_1st_dup_abunds</span> and <span class="flex_cfunction">nucsyn_set_2nd_dup_abunds</span> which perturb the surface abundances. There may be problems in binaries because the evolution is different to single stars, but I try to take this into account by scaling the CNO abundances to whatever the stellar CNO abundance is. Thanks to Evert Glebbeek and Richard Stancliffe for helping out with this, the results will be published in one of our CEMP papers soon.</div> -<h4 class="subsubsection" id='magicparlabel-7108'><span class="subsubsection_label">8.9.4</span> TPAGB functions (3rd dredge-up and HBB)</h4> -<div class="standard" id='magicparlabel-7109'><div id="subsec_TPAGB_functions"></div> +<h4 class="subsubsection" id='magicparlabel-7133'><span class="subsubsection_label">8.9.4</span> TPAGB functions (3rd dredge-up and HBB)</h4> +<div class="standard" id='magicparlabel-7134'><div id="subsec_TPAGB_functions"></div> The first section of the library to be written was the synthetic TPAGB evolution (see <a href='#LyXCite-Izzard_et_al_2003b_AGBs'><span class="bib-abbrvciteauthor">Izzard et al.</span>, <span class="bib-year">2004</span></a>). This is controlled by the function <span style='font-family:monospace;font-size: 18px;'><span class="flex_cfunction"><span style='font-family:monospace;font-size: 18px;'>nucsyn_tpagb</span></span></span>. The function determines whether the next thermal pulse has been reached by the star and if so it does third dredge-up (and perhaps there's some hot-bottom burning [HBB]).</div> -<div class="standard" id='magicparlabel-7114'>On the first pulse (when the function is first called for the star, actually if <br /> +<div class="standard" id='magicparlabel-7139'>On the first pulse (when the function is first called for the star, actually if <br /> <pre class ='listings <i>C</i>'>num_thermal_pulses < 0</pre><br /> , which is the case for any stellar type other than TPAGB) the function <span class="flex_cfunction">nucsyn_init_first_pulse</span> is called which sets a few things like the interpulse period and <math xmlns="http://www.w3.org/1998/Math/MathML"><mstyle mathvariant='sans-serif-italic' mathsize='85%'> <mrow> @@ -6971,7 +7010,7 @@ The first section of the library to be written was the synthetic TPAGB evolution </msub> </mrow></mstyle></math> for dredge-up.</div> -<div class="standard" id='magicparlabel-7123'>For subsequent timesteps the <span class="flex_cfunction">nucsyn_tpagb function</span> calls <span class="flex_cfunction">nucsyn_tpagb_H_shell_burn</span> to burn the hydrogen shell during the interpulse period and save the amount of core mass growth <math xmlns="http://www.w3.org/1998/Math/MathML"><mstyle mathvariant='sans-serif-italic' mathsize='85%'> +<div class="standard" id='magicparlabel-7148'>For subsequent timesteps the <span class="flex_cfunction">nucsyn_tpagb function</span> calls <span class="flex_cfunction">nucsyn_tpagb_H_shell_burn</span> to burn the hydrogen shell during the interpulse period and save the amount of core mass growth <math xmlns="http://www.w3.org/1998/Math/MathML"><mstyle mathvariant='sans-serif-italic' mathsize='85%'> <mrow> <mrow><mo> Δ </mo> <msub subscriptshift="0.2ex"> @@ -6985,9 +7024,9 @@ The first section of the library to be written was the synthetic TPAGB evolution </mrow> </mrow></mstyle></math>. </div> -<div class="standard" id='magicparlabel-7132'>There is then a check to see if the star is hot enough for HBB – this is done by fitting the temperature (see <span class="flex_cfunction">nucsyn_set_hbb_conditions</span>, <span class="flex_cfunction">nucsyn_hbbtmax</span> and <span class="flex_cfunction">nucsyn_tpagb_rhomax</span>) to mass and metallicity. If so the <span class="flex_cfunction">nucsyn_hbb</span> function is called. The free parameters associated with HBB (<a href='#LyXCite-Izzard_et_al_2003b_AGBs'><span class="bib-abbrvciteauthor">Izzard et al.</span>, <span class="bib-year">2004</span></a>) are set in <span class="flex_cfunction">nucsyn_set_tpagb_free_parameters</span> (these are the burn times, mixing fractions etc.).</div> +<div class="standard" id='magicparlabel-7157'>There is then a check to see if the star is hot enough for HBB – this is done by fitting the temperature (see <span class="flex_cfunction">nucsyn_set_hbb_conditions</span>, <span class="flex_cfunction">nucsyn_hbbtmax</span> and <span class="flex_cfunction">nucsyn_tpagb_rhomax</span>) to mass and metallicity. If so the <span class="flex_cfunction">nucsyn_hbb</span> function is called. The free parameters associated with HBB (<a href='#LyXCite-Izzard_et_al_2003b_AGBs'><span class="bib-abbrvciteauthor">Izzard et al.</span>, <span class="bib-year">2004</span></a>) are set in <span class="flex_cfunction">nucsyn_set_tpagb_free_parameters</span> (these are the burn times, mixing fractions etc.).</div> -<div class="standard" id='magicparlabel-7153'>If the next pulse is reached then <span class="flex_cfunction">nucsyn_third_dredge_up</span> is called to deal with third dredge-up. This dredges up a mass <math xmlns="http://www.w3.org/1998/Math/MathML"><mstyle mathvariant='sans-serif-italic' mathsize='85%'> +<div class="standard" id='magicparlabel-7178'>If the next pulse is reached then <span class="flex_cfunction">nucsyn_third_dredge_up</span> is called to deal with third dredge-up. This dredges up a mass <math xmlns="http://www.w3.org/1998/Math/MathML"><mstyle mathvariant='sans-serif-italic' mathsize='85%'> <mrow> <mrow><mi> λ </mi><mo> × </mo><mo> Δ </mo> <msub subscriptshift="0.2ex"> @@ -7001,9 +7040,9 @@ The first section of the library to be written was the synthetic TPAGB evolution </mrow> </mrow></mstyle></math> and mixes it with the envelope. The abundances of the dredged-up material are set in <span class="flex_cfunction">nucsyn_set_third_dredgeup_abunds</span> (and <span class="flex_cfunction">nucsyn_s_process for s-process</span> elements).</div> -<div class="standard" id='magicparlabel-7166'>Version 1.2 of <i>binary_c</i> included an option to evolve “super AGB” (STPAGB) stars but this has since been deprecated.</div> -<h4 class="subsubsection" id='magicparlabel-7167'><span class="subsubsection_label">8.9.5</span> Hot-Bottom Burning</h4> -<div class="standard" id='magicparlabel-7168'><div id="subsec_Hot_Bottom_Burning"></div> +<div class="standard" id='magicparlabel-7191'>Version 1.2 of <i>binary_c</i> included an option to evolve “super AGB” (STPAGB) stars but this has since been deprecated.</div> +<h4 class="subsubsection" id='magicparlabel-7192'><span class="subsubsection_label">8.9.5</span> Hot-Bottom Burning</h4> +<div class="standard" id='magicparlabel-7193'><div id="subsec_Hot_Bottom_Burning"></div> While this sounds painful, really it's not! HBB is the process where the convective zone in a TPAGB star reaches down into the hydrogen burning shell. This occurs in <math xmlns="http://www.w3.org/1998/Math/MathML"><mstyle mathvariant='sans-serif-italic' mathsize='85%'> <mrow> <mrow><mn>4</mn><mo>-</mo><mn>8</mn> @@ -7024,31 +7063,31 @@ While this sounds painful, really it's not! HBB is the process where the convect </mrow> </mrow></mstyle></math>, lower masses for lower metallicity). I have two burning routines which can deal with this:</div> -<ol class="enumerate" id='magicparlabel-7169'><li class="enumerate_item">The original analytic routine. This uses analytic solutions to the CN, ON, NeNa and MgAl cycles, together with some approximate fudges to join them into the CNO and NeNaMgAl cycles, to solve for the abundances. This is fast but sometimes, when used outside the range of the approximations, <em>very</em> unstable.</li> +<ol class="enumerate" id='magicparlabel-7194'><li class="enumerate_item">The original analytic routine. This uses analytic solutions to the CN, ON, NeNa and MgAl cycles, together with some approximate fudges to join them into the CNO and NeNaMgAl cycles, to solve for the abundances. This is fast but sometimes, when used outside the range of the approximations, <em>very</em> unstable.</li> <li class="enumerate_item">The new numerical solver. This uses a 4th-order implict (Kaps-Rentrop) scheme to solve for the abundances as a function of time. It does <em>not</em> depend on approximations, and currently burns the <math xmlns="http://www.w3.org/1998/Math/MathML"><mstyle mathvariant='sans-serif-italic' mathsize='85%'> <mrow> <mrow><mi>p</mi><mi>p</mi> </mrow> </mrow></mstyle></math>-chain, CNO cycles (hot or cold) and the full NeNa/MgAl chains/cycles. In theory it can be extended to any nuclear network (although it is designed for small networks – it will get very slow with larger networks). It turns out that, after much code optimization, the numerical solver is about as fast as the analytic solver! I think this is because to solve numerically requires additions, subtractions, multiplications and divisions, while analytic solutions require lots of exponentials. However, whether the numerical solver quickly converges on a result depends on the initial timestep. Be careful with that, I have a number of schemes which can improve this.</li> </ol> -<h4 class="subsubsection" id='magicparlabel-7171'><span class="subsubsection_label">8.9.6</span> nucsyn_WR</h4> -<div class="standard" id='magicparlabel-7172'><div id="subsec_nucsyn_WR"></div> +<h4 class="subsubsection" id='magicparlabel-7196'><span class="subsubsection_label">8.9.6</span> nucsyn_WR</h4> +<div class="standard" id='magicparlabel-7197'><div id="subsec_nucsyn_WR"></div> This is a set of phenomenological fits to Lynnette Dray's models for massive stars and helium star remnants. It is self-contained (see the details above and in the function) and contains useful stuff regarding logging of O/B and WR stars. I recently updated it to use tabular lookups instead of fitting functions. </div> -<div class="standard" id='magicparlabel-7173'>The latest version includes tables from Richard Stancliffe which follow all isotopes, not just elemental CNO and H, He. Thanks Richard!</div> -<h4 class="subsubsection" id='magicparlabel-7174'><span class="subsubsection_label">8.9.7</span> The <math xmlns="http://www.w3.org/1998/Math/MathML"><mstyle mathvariant='sans-serif-italic' mathsize='85%'> +<div class="standard" id='magicparlabel-7198'>The latest version includes tables from Richard Stancliffe which follow all isotopes, not just elemental CNO and H, He. Thanks Richard!</div> +<h4 class="subsubsection" id='magicparlabel-7199'><span class="subsubsection_label">8.9.7</span> The <math xmlns="http://www.w3.org/1998/Math/MathML"><mstyle mathvariant='sans-serif-italic' mathsize='85%'> <mrow><mi>r</mi> </mrow></mstyle></math>-process</h4> -<div class="standard" id='magicparlabel-7175'><div id="subsec_The_r_process"></div> +<div class="standard" id='magicparlabel-7200'><div id="subsec_The_r_process"></div> I have included some yields from <a href='#LyXCite-1999ApJ___525__886A'><span class="bib-abbrvciteauthor">Arlandini et al.</span></a> (<span class="bib-year">1999</span>) and <a href='#LyXCite-2004ApJ___617_1091S'><span class="bib-abbrvciteauthor">Simmerer et al.</span></a> (<span class="bib-year">2004</span>) which you can activate with the appropriate define in <span class="flex_headerfile">nucsyn_parameters.h</span>. This code has <em>not been well tested</em> so beware!</div> -<h4 class="subsubsection" id='magicparlabel-7180'><span class="subsubsection_label">8.9.8</span> Winds and Mixing</h4> -<div class="standard" id='magicparlabel-7181'><div id="subsec_Winds_and_Mixing"></div> +<h4 class="subsubsection" id='magicparlabel-7205'><span class="subsubsection_label">8.9.8</span> Winds and Mixing</h4> +<div class="standard" id='magicparlabel-7206'><div id="subsec_Winds_and_Mixing"></div> Colliding winds and the like are a complicated business! <span class="flex_cfunction">nucsyn_update_abundances</span> is called when to deal with this. The function is well commented so for details please refer to it but briefly it takes the wind loss from each star and the amount of that accreted by the companion, determines whether the accreted matter should reach the surface (by the factor set in <span class="flex_cfunction">nucsyn_choose_wind_mixing_factor</span>) or not and if so mixes it in or makes a new accretion layer on the surface. It also yields the wind loss by a call to <span class="flex_cfunction">nucsyn_calc_yields</span> and the mass accreted by a similar call but with a negative number. Note: mass is removed from the surface of the star by the function <span class="flex_cfunction">nucsyn_remove_dm_from_surface</span> so that it is preferentially removed from the accretion layer rather than the stellar envelope. Convective stars have no accretion layer, if one is present a call to <span class="flex_cfunction">nucsyn_mix_accretion_layer_and_envelope</span> soon removes it.</div> -<h4 class="subsubsection" id='magicparlabel-7202'><span class="subsubsection_label">8.9.9</span> Explosions (supernovae and novae)</h4> -<div class="standard" id='magicparlabel-7203'><div id="subsec_Explosions"></div> +<h4 class="subsubsection" id='magicparlabel-7227'><span class="subsubsection_label">8.9.9</span> Explosions (supernovae and novae)</h4> +<div class="standard" id='magicparlabel-7228'><div id="subsec_Explosions"></div> Supernova yields are looked up in tables and yielded in <span class="flex_cfunction">nucsyn_sn_yield</span>. Nova ejecta are calculated in <span class="flex_cfunction">nucsyn_set_nova_abunds</span>.</div> -<h4 class="subsubsection" id='magicparlabel-7212'><span class="subsubsection_label">8.9.10</span> Yield calculations</h4> -<div class="standard" id='magicparlabel-7213'><div id="subsec_Yield_calculations"></div> +<h4 class="subsubsection" id='magicparlabel-7237'><span class="subsubsection_label">8.9.10</span> Yield calculations</h4> +<div class="standard" id='magicparlabel-7238'><div id="subsec_Yield_calculations"></div> The calls to <span class="flex_cfunction">nucsyn_calc_yields</span> modify the arrays <span class="flex_cvar">Xyield</span> in the star structures. These contain the mass of material of each isotope lost by the star, so if <span class="flex_cfunction">nucsyn_calc_yields</span> is called for (say) wind loss by an amount <math xmlns="http://www.w3.org/1998/Math/MathML"><mstyle mathvariant='sans-serif-italic' mathsize='85%'> <mrow> <mrow><mi> δ </mi><mi>m</mi> @@ -7085,7 +7124,7 @@ The calls to <span class="flex_cfunction">nucsyn_calc_yields</span> modify the a </mrow> </mrow></mstyle></math> (or perhaps more mass if some is lost from the system). The total mass lost from the system is then just the sum of the <span class="flex_cvar">Xyield</span> for both stars. </div> -<div class="standard" id='magicparlabel-7238'>The array <span class="flex_cvar">mpyield</span> stores the values of <math xmlns="http://www.w3.org/1998/Math/MathML"><mstyle mathvariant='sans-serif-italic' mathsize='85%'> +<div class="standard" id='magicparlabel-7263'>The array <span class="flex_cvar">mpyield</span> stores the values of <math xmlns="http://www.w3.org/1998/Math/MathML"><mstyle mathvariant='sans-serif-italic' mathsize='85%'> <mrow> <msub subscriptshift="0.2ex"> <mrow><mi>p</mi> @@ -7101,7 +7140,7 @@ The calls to <span class="flex_cfunction">nucsyn_calc_yields</span> modify the a <mrow><mi>i</mi> </mrow></mstyle></math> relative to the ZAMS abundance and divided by the initial mass (note use <span class="flex_cvar">pms_mass</span> not <span style='font-family:monospace;font-size: 18px;'>ZAMS_mass</span> since the latter is redefined by accretion processes).</div> -<div class="standard" id='magicparlabel-7247'>Binary system yields are easy to calculate because they are just the sum of both stars' yields, this is done in <span class="flex_cfunction">nucsyn_binary_yield</span>. The appropriate <math xmlns="http://www.w3.org/1998/Math/MathML"><mstyle mathvariant='sans-serif-italic' mathsize='85%'> +<div class="standard" id='magicparlabel-7272'>Binary system yields are easy to calculate because they are just the sum of both stars' yields, this is done in <span class="flex_cfunction">nucsyn_binary_yield</span>. The appropriate <math xmlns="http://www.w3.org/1998/Math/MathML"><mstyle mathvariant='sans-serif-italic' mathsize='85%'> <mrow> <msub subscriptshift="0.2ex"> <mrow><mi>p</mi> @@ -7112,11 +7151,11 @@ The calls to <span class="flex_cfunction">nucsyn_calc_yields</span> modify the a </mrow> </msub> </mrow></mstyle></math> yields are more difficult to define but there is an attempt. </div> -<h4 class="subsubsection" id='magicparlabel-7252'><span class="subsubsection_label">8.9.11</span> Logging and minor functions</h4> -<div class="standard" id='magicparlabel-7253'><div id="subsec_Logging_and_minor_functions"></div> +<h4 class="subsubsection" id='magicparlabel-7277'><span class="subsubsection_label">8.9.11</span> Logging and minor functions</h4> +<div class="standard" id='magicparlabel-7278'><div id="subsec_Logging_and_minor_functions"></div> There are numerous logging functions for debugging and general pretty-picture-manufacture, e.g. <span class="flex_cfunction"><span style='font-family:monospace;font-size: 18px;'>nucsyn_log</span></span>, <span class="flex_cfunction"><span style='font-family:monospace;font-size: 18px;'>nucsyn_long_log</span></span>, <span style='font-family:monospace;font-size: 18px;'><span class="flex_cfunction"><span style='font-family:monospace;font-size: 18px;'>nucsyn_short_log</span></span></span>, <span class="flex_cfunction"><span style='font-family:monospace;font-size: 18px;'>nucsyn_j_log</span></span>. Most of these are activated or deactivated in <span class="flex_headerfile">nucsyn_log.h</span>. Other minor functions: <span style='font-family:monospace;font-size: 18px;'><span class="flex_cfunction"><span style='font-family:monospace;font-size: 18px;'>nucsyn_totalX</span></span></span> calculates the total mass fraction (or actually the total sum of array elements), <span style='font-family:monospace;font-size: 18px;'><span class="flex_cfunction"><span style='font-family:monospace;font-size: 18px;'>nucsyn_square_bracket</span></span></span> calculates an abundance in “square bracket notation” by mass fraction (should it be by number?); <span style='font-family:monospace;font-size: 18px;'><span class="flex_cfunction"><span style='font-family:monospace;font-size: 18px;'>nucsyn_mix_shells</span></span></span> mixes two isotope arrays together (very useful!) there are the other mixing functions <span style='font-family:monospace;font-size: 18px;'><span class="flex_cfunction"><span style='font-family:monospace;font-size: 18px;'>nucsyn_dilute_shell</span></span></span> and <span style='font-family:monospace;font-size: 18px;'><span class="flex_cfunction"><span style='font-family:monospace;font-size: 18px;'>nucsyn_dilulte_shell_to</span></span></span> which are similarly useful; <span style='font-family:monospace;font-size: 18px;'><span class="flex_cfunction"><span style='font-family:monospace;font-size: 18px;'>nucsyn_radioactive_decay</span></span></span> decays a few isotopes – it is by no means exhaustive, there may be other isotopes you wish to place in here but it's easy to extend; <span style='font-family:monospace;font-size: 18px;'><span class="flex_cfunction"><span style='font-family:monospace;font-size: 18px;'>nucsyn_mole_fraction</span></span></span> converts an array of mass fractions to mole fractions, perhaps useful for the square bracket logging?</div> -<h4 class="subsubsection" id='magicparlabel-7302'><span class="subsubsection_label">8.9.12</span> Other stellar remnants</h4> -<div class="standard" id='magicparlabel-7303'><div id="subsec_Other_stellar_remnants"></div> +<h4 class="subsubsection" id='magicparlabel-7327'><span class="subsubsection_label">8.9.12</span> Other stellar remnants</h4> +<div class="standard" id='magicparlabel-7328'><div id="subsec_Other_stellar_remnants"></div> Some stellar types are not dealt with by nucleosynthesis. There include WDs (<span style='font-family:monospace;font-size: 18px;'>nucsyn_set_WD_abunds</span>), which are assumed to: <span class="flex_cmacro">HeWD</span> 100% <math xmlns="http://www.w3.org/1998/Math/MathML"><mstyle mathvariant='sans-serif-italic' mathsize='85%'> <mrow> <mrow> @@ -7173,19 +7212,19 @@ Some stellar types are not dealt with by nucleosynthesis. There include WDs (<sp </mrow> </mrow></mstyle></math>. This could be improved (to take into account, say, the heavier metals) but note that any accretion onto the surface from a non-degenerate companion will mask the above abundances (since an accretion layer will form on the surface unless there are novae) and the business of accretion onto WDs is very complicated indeed.</div> -<div class="standard" id='magicparlabel-7316'>NSs and BHs are remnants with their abundances set in <span style='font-family:monospace;font-size: 18px;'><span class="flex_cfunction"><span style='font-family:monospace;font-size: 18px;'>nucsyn_set_remnant_abunds</span></span></span> are assumed to be all neutrons with<span style='font-family:monospace;font-size: 18px;'><br /> +<div class="standard" id='magicparlabel-7341'>NSs and BHs are remnants with their abundances set in <span style='font-family:monospace;font-size: 18px;'><span class="flex_cfunction"><span style='font-family:monospace;font-size: 18px;'>nucsyn_set_remnant_abunds</span></span></span> are assumed to be all neutrons with<span style='font-family:monospace;font-size: 18px;'><br /> <pre class ='listings <i>C</i>'>Xsurf[Xn]=1.0;</pre><br /> </span></div> -<h3 class="subsection" id='magicparlabel-7325'><span class="subsection_label">8.10</span> Coding style</h3> -<div class="standard" id='magicparlabel-7326'><i>binary_c</i> <i>C</i> code follows a particular style to which you should adhere.</div> +<h3 class="subsection" id='magicparlabel-7350'><span class="subsection_label">8.10</span> Coding style</h3> +<div class="standard" id='magicparlabel-7351'><i>binary_c</i> <i>C</i> code follows a particular style to which you should adhere.</div> -<ul class="itemize" id='magicparlabel-7327'><li class="itemize_item">Please use the <a href="https://en.wikipedia.org/wiki/Indentation_style#Allman_style">Allman style</a> </li> +<ul class="itemize" id='magicparlabel-7352'><li class="itemize_item">Please use the <a href="https://en.wikipedia.org/wiki/Indentation_style#Allman_style">Allman style</a> </li> <li class="itemize_item">Indent with four spaces (<a href="https://www.gnu.org/software/emacs/">emacs</a> indents <span class="flex_programminglanguage">C</span> like this automatically).</li> </ul> -<h4 class="subsubsection" id='magicparlabel-7333'><span class="subsubsection_label">8.10.1</span> Macros</h4> -<div class="standard" id='magicparlabel-7334'>C preprocessor macros are a very powerful way to make code more readable, or less, depending on their use, hence <i>binary_c</i> has strict rules for their use.</div> +<h4 class="subsubsection" id='magicparlabel-7358'><span class="subsubsection_label">8.10.1</span> Macros</h4> +<div class="standard" id='magicparlabel-7359'>C preprocessor macros are a very powerful way to make code more readable, or less, depending on their use, hence <i>binary_c</i> has strict rules for their use.</div> -<ul class="itemize" id='magicparlabel-7335'><li class="itemize_item">Macros used as flags should use <span class="flex_cmacro">CAPTIALS</span> and, when used in <span class="flex_cmacro">#ifdef … #endif</span> pairs, you should include a comment at the end of the pair to say specify the opening macro, for example. <br /> +<ul class="itemize" id='magicparlabel-7360'><li class="itemize_item">Macros used as flags should use <span class="flex_cmacro">CAPTIALS</span> and, when used in <span class="flex_cmacro">#ifdef … #endif</span> pairs, you should include a comment at the end of the pair to say specify the opening macro, for example. <br /> <pre class ='listings'>#define FLAG_MACRO @@ -7204,26 +7243,26 @@ Some stellar types are not dealt with by nucleosynthesis. There include WDs (<sp exceptions to this are the macros used for stellar types, <span class="flex_cmacro">PRINTF</span> which is just mapped to <span class="flex_cmacro">Printf</span> for backward compatibility, and macros such as <span class="flex_cmacro">likley</span> and <span class="flex_cmacro">unlikley</span> which are kept in lower case to match external code (in this case the <span class="flex_os">Linux</span> kernel).</li> <li class="itemize_item">Macros which are used only locally, and variables used in macro expressions, should be prefixed with two underscores</li> </ul> -<h3 class="subsection" id='magicparlabel-7387'><span class="subsection_label">8.11</span> Control scripts</h3> -<div class="standard" id='magicparlabel-7388'><div id="subsec_Control_scripts"></div> +<h3 class="subsection" id='magicparlabel-7412'><span class="subsection_label">8.11</span> Control scripts</h3> +<div class="standard" id='magicparlabel-7413'><div id="subsec_Control_scripts"></div> I have a number of control scripts written in <span class="flex_scriptinglanguage">Perl</span> which test the code and output graphs and data for e.g. AGB stars and WR stars (to compare to full evolution models), stellar yields etc. There might be some documentation here eventually… it all depends on whether you prefer writing your own scripts (that way you'll learn how it all works) or just having a black-box that works (you can always look at the source code).</div> -<div class="standard" id='magicparlabel-7393'>A very useful script is <span class="flex_bashscript">zipup</span> which makes a file <span class="flex_file"><i>binary_c</i>.zip</span> containing this manual and all the source code. See also <span class="flex_perlscript">grid.pl</span>.</div> +<div class="standard" id='magicparlabel-7418'>A very useful script is <span class="flex_bashscript">zipup</span> which makes a file <span class="flex_file"><i>binary_c</i>.zip</span> containing this manual and all the source code. See also <span class="flex_perlscript">grid.pl</span>.</div> -<div class="standard" id='magicparlabel-7406'><br /> +<div class="standard" id='magicparlabel-7431'><br /> </div> -<h2 class="section" id='magicparlabel-7407'><span class="section_label">9</span> Advanced Configuration</h2> -<div class="standard" id='magicparlabel-7408'><div id="subsec_Advanced_Configuration"></div> +<h2 class="section" id='magicparlabel-7432'><span class="section_label">9</span> Advanced Configuration</h2> +<div class="standard" id='magicparlabel-7433'><div id="subsec_Advanced_Configuration"></div> </div> -<div class="standard" id='magicparlabel-7409'>There are three main <i>C</i> header files which affect how the <i>binary_c</i> code is built: <span class="flex_headerfile">binary_c_code_options.h</span>, <span class="flex_headerfile">binary_c_parameters.h</span> and <span class="flex_headerfile">nucsyn/nucsyn_parameters.h</span>. Some low-level configuration is also performed by the <span class="flex_software">Meson</span> build process.</div> -<h3 class="subsection" id='magicparlabel-7426'><span class="subsection_label">9.1</span> Meson configuation</h3> -<div class="standard" id='magicparlabel-7427'>When you change something in <span class="flex_headerfile">binary_structures.h</span>, or one of the other header files, you may have to reconfigure <span class="flex_software">Meson</span> because this in turn reruns <span class="flex_perlscript">make_showstruct.pl</span> which builds code to show the contents of <span class="flex_cstruct">stardata_t</span> structures.</div> -<h3 class="subsection" id='magicparlabel-7444'><span class="subsection_label">9.2</span> <i>binary_c</i>-config<div id="subsec_binary_c_config"></div> +<div class="standard" id='magicparlabel-7434'>There are three main <i>C</i> header files which affect how the <i>binary_c</i> code is built: <span class="flex_headerfile">binary_c_code_options.h</span>, <span class="flex_headerfile">binary_c_parameters.h</span> and <span class="flex_headerfile">nucsyn/nucsyn_parameters.h</span>. Some low-level configuration is also performed by the <span class="flex_software">Meson</span> build process.</div> +<h3 class="subsection" id='magicparlabel-7451'><span class="subsection_label">9.1</span> Meson configuation</h3> +<div class="standard" id='magicparlabel-7452'>When you change something in <span class="flex_headerfile">binary_structures.h</span>, or one of the other header files, you may have to reconfigure <span class="flex_software">Meson</span> because this in turn reruns <span class="flex_perlscript">make_showstruct.pl</span> which builds code to show the contents of <span class="flex_cstruct">stardata_t</span> structures.</div> +<h3 class="subsection" id='magicparlabel-7469'><span class="subsection_label">9.2</span> <i>binary_c</i>-config<div id="subsec_binary_c_config"></div> </h3> -<div class="standard" id='magicparlabel-7445'>Many <em><span class="flex_os"><em>Unix</em></span>-</em>type commands have an associated <span class="flex_command">*-config</span> command which gives details of their build flags, version, build date etc. As of recently, so does <i>binary_c</i>, so you can run,</div> +<div class="standard" id='magicparlabel-7470'>Many <em><span class="flex_os"><em>Unix</em></span>-</em>type commands have an associated <span class="flex_command">*-config</span> command which gives details of their build flags, version, build date etc. As of recently, so does <i>binary_c</i>, so you can run,</div> -<div class="standard" id='magicparlabel-7454'><br /> +<div class="standard" id='magicparlabel-7479'><br /> <pre class\s*='listings bash'>$ <i>binary_c</i>-config help</pre><br /> to see the available flags, which at the time of writing are<br /> <pre class ='listings'>--cflags Show the flags which were used to build <i>binary_c</i> (same as --flags) @@ -7249,7 +7288,7 @@ to see the available flags, which at the time of writing are<br /> --undef_macros Show macros undefined by -U... in the CFLAGS</pre><br /> </div> -<div class="standard" id='magicparlabel-7483'>note that the double minus sign is optional (it can be one minus, or none). For example,<br /> +<div class="standard" id='magicparlabel-7508'>note that the double minus sign is optional (it can be one minus, or none). For example,<br /> <pre class ='listings'>$ <i>binary_c</i>-config define_macros -DALIGNSIZE=16 -DCPUFREQ=3500 -DLINUX -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -DGIT_REVISION=4132:20190711:e754a8a7 -DGIT_URL=gitlab@gitlab.eps.surrey.ac.uk:ri0005/<i>binary_c</i>.git -DGIT_BRANCH=izzard-discs -D__HAVE_AVX__ -D__HAVE_DRAND48__ -D__HAVE_GSL__ -DUSE_GSL -D__HAVE_LIBBACKTRACE__ -D__HAVE_LIBBFD__ -D__HAVE_LIBBSD__ -D__HAVE_LIBIBERTY__ -D__HAVE_LIBMEMOIZE__ -D__HAVE_MALLOC_H__ -D__HAVE_PKG_CONFIG__ -D__HAVE_VALGRIND__ -D__SHOW_STARDATA__ @@ -7260,22 +7299,22 @@ $ <i>binary_c</i>-config cflags -DALIGNSIZE=16 -fPIC -Wall -Wstrict-prototypes -O3 -mtune=native -march=native -DCPUFREQ=3500 -DLINUX -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -frounding-math -fsignaling-nans -fno-finite-math-only -fno-stack-protector -ffloat-store -fno-fast-math -DGIT_REVISION=4132:20190711:e754a8a7 -DGIT_URL=gitlab@gitlab.eps.surrey.ac.uk:ri0005/<i>binary_c</i>.git -DGIT_BRANCH=izzard-discs -D__HAVE_AVX__ -mavx -D__HAVE_DRAND48__ -D__HAVE_GSL__ -DUSE_GSL -I/home/izzard/include -D__HAVE_LIBBACKTRACE__ -D__HAVE_LIBBFD__ -D__HAVE_LIBBSD__ -D__HAVE_LIBIBERTY__ -D__HAVE_LIBMEMOIZE__ -D__HAVE_MALLOC_H__ -D__HAVE_PKG_CONFIG__ -D__HAVE_VALGRIND__ -D__SHOW_STARDATA__ -mtune=native -ffunction-sections -mtune=native -march=native -fsignaling-nans -fno-finite-math-only -fsignaling-nans -fno-finite-math-only</pre><br /> </div> -<div class="standard" id='magicparlabel-7495'>The <i>binary_grid</i> <span class="flex_scriptinglanguage">Perl</span> module makes extensive use of <span class="flex_bashscript"><i>binary_c</i>-config</span> to determine which flags it should use to build its <span class="flex_programminglanguage">C</span> interface to <i>libbinary_c</i>.</div> +<div class="standard" id='magicparlabel-7520'>The <i>binary_grid</i> <span class="flex_scriptinglanguage">Perl</span> module makes extensive use of <span class="flex_bashscript"><i>binary_c</i>-config</span> to determine which flags it should use to build its <span class="flex_programminglanguage">C</span> interface to <i>libbinary_c</i>.</div> -<div class="standard" id='magicparlabel-7508'>Note that the <span class="flex_command"><i>binary_c</i>-config</span> tool is actually a <span class="flex_scriptinglanguage">bash</span> script that requires <i>binary_c</i> to be built, and working tools such as <span class="flex_command">grep</span>, <span class="flex_command">tr</span>, <span class="flex_command">sed</span> and <span class="flex_command">ldd</span>. These are standard tools on most <span class="flex_os">Unix</span> systems.</div> -<h3 class="subsection" id='magicparlabel-7537'><span class="subsection_label">9.3</span> Makefile -D…</h3> -<div class="standard" id='magicparlabel-7538'>Some options are set up by <span class="flex_software">Meson</span><em> </em>and passed<em> </em>as <span class="flex_args">-D…</span> arguments to the compiler:</div> +<div class="standard" id='magicparlabel-7533'>Note that the <span class="flex_command"><i>binary_c</i>-config</span> tool is actually a <span class="flex_scriptinglanguage">bash</span> script that requires <i>binary_c</i> to be built, and working tools such as <span class="flex_command">grep</span>, <span class="flex_command">tr</span>, <span class="flex_command">sed</span> and <span class="flex_command">ldd</span>. These are standard tools on most <span class="flex_os">Unix</span> systems.</div> +<h3 class="subsection" id='magicparlabel-7562'><span class="subsection_label">9.3</span> Makefile -D…</h3> +<div class="standard" id='magicparlabel-7563'>Some options are set up by <span class="flex_software">Meson</span><em> </em>and passed<em> </em>as <span class="flex_args">-D…</span> arguments to the compiler:</div> -<ul class="itemize" id='magicparlabel-7547'><li class="itemize_item"><span style='font-family:monospace;font-size: 18px;'>LINUX</span> is defined if you're running <span class="flex_os">Linux</span>. This is useful for some timers and segfault catchers which only work with the <span class="flex_os">Linux</span> libraries.</li> +<ul class="itemize" id='magicparlabel-7572'><li class="itemize_item"><span style='font-family:monospace;font-size: 18px;'>LINUX</span> is defined if you're running <span class="flex_os">Linux</span>. This is useful for some timers and segfault catchers which only work with the <span class="flex_os">Linux</span> libraries.</li> <li class="itemize_item"><span style='font-family:monospace;font-size: 18px;'>LARGEFILE_SOURCE</span> and <span style='font-family:monospace;font-size: 18px;'>FILE_OFFSET_BITS</span> were once useful for large output files on 64-bit machines (>2GB). This may no longer be a problem but they do not hurt.</li> <li class="itemize_item"><span style='font-family:monospace;font-size: 18px;'>CPUFREQ</span> is the frequency of your CPU (in Mhz) – this is very useful for timing information. (Taken from <span class="flex_file">/proc/cpuinfo</span> if available, <span class="flex_command">sysctl -a</span> on MacOS/Darwin) </li> <li class="itemize_item"><span style='font-family:monospace;font-size: 18px;'>GIT_REVISION</span> and <span style='font-family:monospace;font-size: 18px;'>GIT_URL</span> provide <em><i>binary_c</i></em> with information about the version of the code you are using. This can prove essential when debugging. See section <a href="#subsec_git_revision">11.17</a> for more details. </li> </ul> -<h3 class="subsection" id='magicparlabel-7567'><span class="subsection_label">9.4</span> binary_c_code_options.h</h3> -<div class="standard" id='magicparlabel-7568'><div id="subsec_binary_c_code_options_h"></div> +<h3 class="subsection" id='magicparlabel-7592'><span class="subsection_label">9.4</span> binary_c_code_options.h</h3> +<div class="standard" id='magicparlabel-7593'><div id="subsec_binary_c_code_options_h"></div> This contains <em>non-physics</em> options. You probably do not want to change this file unless you have compilation problems or you want to optimize the code (even more!). The options are the following (in the order given in the file)</div> -<ul class="itemize" id='magicparlabel-7569'><li class="itemize_item"><span style='font-family:monospace;font-size: 18px;'>SEGFAULTS</span> This should be set if want segfaults on a code failure. This is useful if you are debugging with gdb.</li> +<ul class="itemize" id='magicparlabel-7594'><li class="itemize_item"><span style='font-family:monospace;font-size: 18px;'>SEGFAULTS</span> This should be set if want segfaults on a code failure. This is useful if you are debugging with gdb.</li> <li class="itemize_item"><span style='font-family:monospace;font-size: 18px;'>ACML</span> should be set if you wish to use the AMD math (sic) library. Note: this has not been tested for a long time.</li> <li class="itemize_item"><span style='font-family:monospace;font-size: 18px;'>DUMA</span> should be set if you wish to use the DUMA memory checking library. Note: this has not been tested for a long time.</li> <li class="itemize_item"><span style='font-family:monospace;font-size: 18px;'>DEBUG</span> is either zero (<span style='font-family:monospace;font-size: 18px;'>0</span>) or one (<span style='font-family:monospace;font-size: 18px;'>1</span>). All debugging statements should use the <span style='font-family:monospace;font-size: 18px;'>Dprint</span> function instead of the standard <i>C</i>-library function <span style='font-family:monospace;font-size: 18px;'>printf</span>. If <span style='font-family:monospace;font-size: 18px;'>DEBUG</span> is zero, then the compiler should never build the debug statements into the code (modern compilers will behave in this way). However, if in doubt enable the <span style='font-family:monospace;font-size: 18px;'>DISABLE_DPRINT</span> option.</li> @@ -7307,11 +7346,11 @@ This contains <em>non-physics</em> options. You probably do not want to change t <li class="itemize_item"><span style='font-family:monospace;font-size: 18px;'>RANDOM_SYSTEMS </span>is used in conjunction with <span style='font-family:monospace;font-size: 18px;'>--repeat </span>to run randomly chosen systems to check for bugs. This is deprecated and will be removed in future. Instead you should use the <span style='font-family:monospace;font-size: 18px;'>random_systems.pl</span> script to generate random binaries. </li> <li class="itemize_item"><span style='font-family:monospace;font-size: 18px;'>MULTISTAR</span> is an experimental attempt to run many stars in parallel. It does not work and is highly experimental.</li> </ul> -<h3 class="subsection" id='magicparlabel-7606'><span class="subsection_label">9.5</span> binary_c_parameters.h</h3> -<div class="standard" id='magicparlabel-7607'><div id="subsec_binary_c_parameters_h"></div> +<h3 class="subsection" id='magicparlabel-7631'><span class="subsection_label">9.5</span> binary_c_parameters.h</h3> +<div class="standard" id='magicparlabel-7632'><div id="subsec_binary_c_parameters_h"></div> The options in this file are non-nucleosynthesis, (single or) binary stellar evolution options. This file also automatically includes many header files, <span class="flex_headerfile">binary_c_code_options.h</span> and <span class="flex_headerfile">nucsyn_parameters.h</span> so is very useful as a “catch-all” at the top of each source code file. </div> -<ul class="itemize" id='magicparlabel-7616'><li class="itemize_item"><span style='font-family:monospace;font-size: 18px;'>AXEL</span> if this is defined then Axel Bonacic's changes to the code are applied (but <em>NOT necessarily</em> <span style='font-family:monospace;font-size: 18px;'>AXEL_RGB_FIX</span>). <em><b>WARNING!</b></em> This is often broken and subject to development. Axel's code is not usually that well tested…</li> +<ul class="itemize" id='magicparlabel-7641'><li class="itemize_item"><span style='font-family:monospace;font-size: 18px;'>AXEL</span> if this is defined then Axel Bonacic's changes to the code are applied (but <em>NOT necessarily</em> <span style='font-family:monospace;font-size: 18px;'>AXEL_RGB_FIX</span>). <em><b>WARNING!</b></em> This is often broken and subject to development. Axel's code is not usually that well tested…</li> <li class="itemize_item"><span style='font-family:monospace;font-size: 18px;'>SMOOTH_AGB</span> enables code to smooth the HR-diagram through the transition between the original overshooting models and Amanda's TPAGB models. May not be reliable – you may want to use <span style='font-family:monospace;font-size: 18px;'>ROBSMOOTH</span> instead.</li> <li class="itemize_item"><span style='font-family:monospace;font-size: 18px;'>ROBSMOOTH</span> does the same as <span style='font-family:monospace;font-size: 18px;'>SMOOTH_AGB</span> but is simpler and more reliable.</li> <li class="itemize_item"><span style='font-family:monospace;font-size: 18px;'>NUMBER_OF_STARS</span> This should always be defined as 2, it is a binary star code…</li> @@ -7664,7 +7703,7 @@ The options in this file are non-nucleosynthesis, (single or) binary stellar evo -<ul class="itemize" id='magicparlabel-7709'><li class="itemize_item"><span style='font-family:monospace;font-size: 18px;'>NO_MERGER_NUCLEOSYNTHESIS</span> Stops ignition of helium cores when they merge (<a href='#LyXCite-2002MNRAS_329_897H'><span class="bib-abbrvciteauthor">Hurley et al.</span>, <span class="bib-year">2002</span></a> did this but I do not believe it is correct)</li> +<ul class="itemize" id='magicparlabel-7734'><li class="itemize_item"><span style='font-family:monospace;font-size: 18px;'>NO_MERGER_NUCLEOSYNTHESIS</span> Stops ignition of helium cores when they merge (<a href='#LyXCite-2002MNRAS_329_897H'><span class="bib-abbrvciteauthor">Hurley et al.</span>, <span class="bib-year">2002</span></a> did this but I do not believe it is correct)</li> <li class="itemize_item"><span style='font-family:monospace;font-size: 18px;'>HeWD_HeCORE_MERGER_IGNITION</span> Forces HeWD+GB to form a new GB star, and HeWD+CHeB to form a new CHeB star (a little thought tells you that the latter cannot happen)</li> <li class="itemize_item"><span style='font-family:monospace;font-size: 18px;'>LOG_COMENV_RSTARS</span> Logs R star mergers resulting from common envelope evolution</li> <li class="itemize_item"><span style='font-family:monospace;font-size: 18px;'>LOG_RSTARS</span> Logs R stars during the CHeB stage</li> @@ -7838,16 +7877,16 @@ The options in this file are non-nucleosynthesis, (single or) binary stellar evo <li class="itemize_item"><span style='font-family:monospace;font-size: 18px;'>PN_PROJECT</span> is a catchall for Rob's PN+nucleosynthesis project.</li> <li class="itemize_item"><span style='font-family:monospace;font-size: 18px;'>WRLOF_MASS_TRANSFER</span> is Carlo Abate's wind-RLOF prescription (see Abate et al 2013, MNRAS accepted).</li> </ul> -<h3 class="subsection" id='magicparlabel-7770'><span class="subsection_label">9.6</span> nucsyn/nucsyn_parameters.h</h3> -<div class="standard" id='magicparlabel-7771'><div id="subsec_nucsyn_nucsyn_parameters_h"></div> +<h3 class="subsection" id='magicparlabel-7795'><span class="subsection_label">9.6</span> nucsyn/nucsyn_parameters.h</h3> +<div class="standard" id='magicparlabel-7796'><div id="subsec_nucsyn_nucsyn_parameters_h"></div> While many important options are set on the command line the options governing which nucleosynthesis algorithms to use and what to output are set in the file <span class="flex_headerfile">nucsyn/nucsyn_parameters.h</span>. More detailed descriptions of the variables used in the code are given in section <a href="#sec_Code_description">8</a>.</div> -<ul class="itemize" id='magicparlabel-7776'><li class="itemize_item">Enable <span style='font-family:monospace;font-size: 18px;'>NUCSYN_FIRST_DREDGE_UP</span> to make first dredge-up happen on the GB. +<ul class="itemize" id='magicparlabel-7801'><li class="itemize_item">Enable <span style='font-family:monospace;font-size: 18px;'>NUCSYN_FIRST_DREDGE_UP</span> to make first dredge-up happen on the GB. <br /> -<ul class="itemize" id='magicparlabel-7777'><li class="itemize_item">You want this, and probably you want to enable <span style='font-family:monospace;font-size: 18px;'>NUCSYN_FIRST_DREDGE_UP_AMANDAS_TABLE</span> and <span style='font-family:monospace;font-size: 18px;'>NUCSYN_FIRST_DREDGE_UP_ACCRETION_CORRECTION</span>. These enable tabular lookups of the abundance changes (better than fitting formulae) and a simple prescription to deal with abundance changes due to accretion.</li> +<ul class="itemize" id='magicparlabel-7802'><li class="itemize_item">You want this, and probably you want to enable <span style='font-family:monospace;font-size: 18px;'>NUCSYN_FIRST_DREDGE_UP_AMANDAS_TABLE</span> and <span style='font-family:monospace;font-size: 18px;'>NUCSYN_FIRST_DREDGE_UP_ACCRETION_CORRECTION</span>. These enable tabular lookups of the abundance changes (better than fitting formulae) and a simple prescription to deal with abundance changes due to accretion.</li> <li class="itemize_item"><span style='font-family:monospace;font-size: 18px;'>NUCSYN_FIRST_DREDGE_UP_ACCRETION_CORRECTION_FROM_TAMS</span> is similar but bases changes on the <em>terminal-age main sequence</em> abundances – this is better in the case of accretion of e.g. carbon (i.e. for CEMPs). </li> <li class="itemize_item"><span style='font-family:monospace;font-size: 18px;'>NUCSYN_FIRST_DREDGE_UP_PHASE_IN</span> enables a phased change of the abundance to better match detailed models (the default model assumes that 1st DUP happens instantaneously). </li> <li class="itemize_item"><span style='font-family:monospace;font-size: 18px;'>NUCSYN_FIRST_DREDGE_UP_RICHARDS_TABLE</span> should be enabled in addition to <span style='font-family:monospace;font-size: 18px;'>NUCSYN_FIRST_DREDGE_UP_AMANDAS_TABLE</span> to use Richard Stancliffe's models in place of Amanda's when in the appropriate mass/metallicity range (down to <math xmlns="http://www.w3.org/1998/Math/MathML"><mstyle mathvariant='sans-serif-italic' mathsize='85%'> @@ -7882,7 +7921,7 @@ While many important options are set on the command line the options governing w -<ul class="itemize" id='magicparlabel-7783'><li class="itemize_item">You probably also want <span style='font-family:monospace;font-size: 18px;'>NUCSYN_THIRD_DREDGE_UP_AMANDA</span> to get the intershell abundances from a table based on Amanda's models.</li> +<ul class="itemize" id='magicparlabel-7808'><li class="itemize_item">You probably also want <span style='font-family:monospace;font-size: 18px;'>NUCSYN_THIRD_DREDGE_UP_AMANDA</span> to get the intershell abundances from a table based on Amanda's models.</li> <li class="itemize_item">You can choose whether to get these numbers from either the old data <span style='font-family:monospace;font-size: 18px;'>USE_TABULAR_INTERSHELL_ABUNDANCES_KARAKAS_2002</span> (no s-process; use only for testing!) or the new table <span style='font-family:monospace;font-size: 18px;'>USE_TABULAR_INTERSHELL_ABUNDANCES_KARAKAS_2012</span> (with s-process, deprecates the Busso/Gallino tables which have been removed).</li> <li class="itemize_item"><span style='font-family:monospace;font-size: 18px;'>MINIMUM_ENVELOPE_MASS_FOR_THIRD_DREDGEUP</span> is the minimum mass for third dredge up, set on the command line with <span style='font-family:monospace;font-size: 18px;'>--minimum_envelope_mass_for_third_dredgeup</span> or <span style='font-family:monospace;font-size: 18px;'>MINIMUM_ENVELOPE_MASS_FOR_THIRD_DREDGEUP_DEFAULT</span> by default (<math xmlns="http://www.w3.org/1998/Math/MathML"><mstyle mathvariant='sans-serif-italic' mathsize='85%'> <mrow> @@ -8004,7 +8043,7 @@ While many important options are set on the command line the options governing w -<ul class="itemize" id='magicparlabel-7800'><li class="itemize_item">If you choose <span style='font-family:monospace;font-size: 18px;'>NUCSYN_ANAL_BURN</span> you can specify which nuclear reactions to include: <span style='font-family:monospace;font-size: 18px;'>NUCSYN_TPAGB_HBB_CN_CYCLE</span> and <span style='font-family:monospace;font-size: 18px;'>NUCSYN_TPAGB_HBB_ON_CYCLE</span> are the CN and ON parts of the CNO cycling in HBB, <span style='font-family:monospace;font-size: 18px;'>NUCSYN_TPAGB_HBB_NeNa_CYCLE</span> activates the approximate NeNa cycling, <span style='font-family:monospace;font-size: 18px;'>NUCSYN_TPAGB_HBB_MgAl_CYCLE</span> activates the approximate MgAl cycling. Enable <span style='font-family:monospace;font-size: 18px;'>NUCSYN_CNO_ASSUME_STABLE</span> to assume solutions of the CNO quadratic are always real (i.e. a stable solution, neglect the oscillating parts), <span style='font-family:monospace;font-size: 18px;'>NUCSYN_NENA_LEAK</span> will allow leakage from NeNa to MgAl (do this), <span style='font-family:monospace;font-size: 18px;'>NUCSYN_Na22_EQUILIBRIUM</span> will force Na22 into equilibrium (otherwise it is not calculated because it is unstable and you probably do not care), <span style='font-family:monospace;font-size: 18px;'>NUCSYN_Al26m</span> follows the metastable state of <math xmlns="http://www.w3.org/1998/Math/MathML"><mstyle mathvariant='sans-serif-italic' mathsize='85%'> +<ul class="itemize" id='magicparlabel-7825'><li class="itemize_item">If you choose <span style='font-family:monospace;font-size: 18px;'>NUCSYN_ANAL_BURN</span> you can specify which nuclear reactions to include: <span style='font-family:monospace;font-size: 18px;'>NUCSYN_TPAGB_HBB_CN_CYCLE</span> and <span style='font-family:monospace;font-size: 18px;'>NUCSYN_TPAGB_HBB_ON_CYCLE</span> are the CN and ON parts of the CNO cycling in HBB, <span style='font-family:monospace;font-size: 18px;'>NUCSYN_TPAGB_HBB_NeNa_CYCLE</span> activates the approximate NeNa cycling, <span style='font-family:monospace;font-size: 18px;'>NUCSYN_TPAGB_HBB_MgAl_CYCLE</span> activates the approximate MgAl cycling. Enable <span style='font-family:monospace;font-size: 18px;'>NUCSYN_CNO_ASSUME_STABLE</span> to assume solutions of the CNO quadratic are always real (i.e. a stable solution, neglect the oscillating parts), <span style='font-family:monospace;font-size: 18px;'>NUCSYN_NENA_LEAK</span> will allow leakage from NeNa to MgAl (do this), <span style='font-family:monospace;font-size: 18px;'>NUCSYN_Na22_EQUILIBRIUM</span> will force Na22 into equilibrium (otherwise it is not calculated because it is unstable and you probably do not care), <span style='font-family:monospace;font-size: 18px;'>NUCSYN_Al26m</span> follows the metastable state of <math xmlns="http://www.w3.org/1998/Math/MathML"><mstyle mathvariant='sans-serif-italic' mathsize='85%'> <mrow> <mrow> <msup><mrow /> @@ -8115,7 +8154,7 @@ While many important options are set on the command line the options governing w -<ul class="itemize" id='magicparlabel-7811'><li class="itemize_item">In the case of <span style='font-family:monospace;font-size: 18px;'>NUCSYN_CCSNE_WOOSLEY_WEAVER_1995</span> you can choose to use their <span style='font-family:monospace;font-size: 18px;'>NUCSYN_SUPERNOVAE_CC_WW95_A</span> or <span style='font-family:monospace;font-size: 18px;'>B</span> or <span style='font-family:monospace;font-size: 18px;'>C</span> models.</li> +<ul class="itemize" id='magicparlabel-7836'><li class="itemize_item">In the case of <span style='font-family:monospace;font-size: 18px;'>NUCSYN_CCSNE_WOOSLEY_WEAVER_1995</span> you can choose to use their <span style='font-family:monospace;font-size: 18px;'>NUCSYN_SUPERNOVAE_CC_WW95_A</span> or <span style='font-family:monospace;font-size: 18px;'>B</span> or <span style='font-family:monospace;font-size: 18px;'>C</span> models.</li> <li class="itemize_item">In the case of <span style='font-family:monospace;font-size: 18px;'>NUCSYN_CCSNE_CHIEFFI_LIMONGI_2004</span> you can either use their yields directly (best to do this as then the yields really are a function of mass cut) or use the Portinari-corrected versions which are less accurate (<span style='font-family:monospace;font-size: 18px;'>NUCSYN_CCSNE_CHIEFFI_LIMONGI_2004_PORTINARI</span>). Define <span style='font-family:monospace;font-size: 18px;'>NUCSYN_CCSNE_CHIEFFI_LIMONGI_2004_EXTRAPOLATE</span> to extrapolate beyond the end of their table at the high metallicity (<math xmlns="http://www.w3.org/1998/Math/MathML"><mstyle mathvariant='sans-serif-italic' mathsize='85%'> <mrow> <mrow><mi>Z</mi><mo>></mo><mn>0.02</mn> @@ -8294,64 +8333,64 @@ While many important options are set on the command line the options governing w <li class="itemize_item"><span style='font-family:monospace;font-size: 18px;'>MATTSSON_MASS_LOSS</span> experimental mass-loss rates from Lars Mattsson (based on carbon abundances).</li> <li class="itemize_item"><span style='font-family:monospace;font-size: 18px;'>LITHIUM_TAB</span>LES experiments to introduce lithium as a function of mass and pulse number in HBBing stars.</li> </ul> -<div class="standard" id='magicparlabel-7857'>Now you have edited this file to your specifications you need to rebuild the code. </div> +<div class="standard" id='magicparlabel-7882'>Now you have edited this file to your specifications you need to rebuild the code. </div> -<div class="standard" id='magicparlabel-7858'>There are further options in the file <span class="flex_file">binary_c_parameters.h</span> (details below) although it's unlikely you'll want to change any of them.</div> +<div class="standard" id='magicparlabel-7883'>There are further options in the file <span class="flex_file">binary_c_parameters.h</span> (details below) although it's unlikely you'll want to change any of them.</div> -<div class="standard" id='magicparlabel-7863'><br /> +<div class="standard" id='magicparlabel-7888'><br /> </div> -<h2 class="section" id='magicparlabel-7864'><span class="section_label">10</span> <em><i>binary_c</i> </em>software development cycle</h2> -<div class="standard" id='magicparlabel-7867'>This section describes the <span class='math'>binary_c</i></span> +<h2 class="section" id='magicparlabel-7889'><span class="section_label">10</span> <em><i>binary_c</i> </em>software development cycle</h2> +<div class="standard" id='magicparlabel-7892'>This section describes the <span class='math'>binary_c</i></span> software development cycle.</div> -<h3 class="subsection" id='magicparlabel-7868'><span class="subsection_label">10.1</span> The git revolution</h3> -<div class="standard" id='magicparlabel-7869'>In its earliest days, I was the only person using <span class='math'>binary_c</i></span> +<h3 class="subsection" id='magicparlabel-7893'><span class="subsection_label">10.1</span> The git revolution</h3> +<div class="standard" id='magicparlabel-7894'>In its earliest days, I was the only person using <span class='math'>binary_c</i></span> . It didn't really work properly, so this was not surprising. As time went on, I aged and other, younger people started using <span class='math'>binary_c</i></span> . While this is great, it puts some burden on me as the maintainer. However, there is a better way! The decision was made to put <span class='math'>binary_c</i></span> - into subversion (<span class="flex_software">SVN</span>) and all<div class="foot"><span class="foot_label">12</span><div class="foot_inner"><div class="plain_layout" id='magicparlabel-7877'>Well, <em>some</em>…</div> + into subversion (<span class="flex_software">SVN</span>) and all<div class="foot"><span class="foot_label">12</span><div class="foot_inner"><div class="plain_layout" id='magicparlabel-7902'>Well, <em>some</em>…</div> </div></div> was solved. Unfortunately, the University of Surrey has no <span class="flex_software">SVN</span> support, so I had to move everything to git which is apparently more modern (although I cannot really tell the difference).</div> -<div class="standard" id='magicparlabel-7882'>You could use a graphical interface, such as <span class="flex_software">Gitkraken</span>, to work with <span class="flex_software">git</span><em> – </em>this may save you a lot of time and effort!</div> -<h3 class="subsection" id='magicparlabel-7891'><span class="subsection_label">10.2</span> The master(trunk)–branch model<div id="sec_The_trunk_branch_model"></div> +<div class="standard" id='magicparlabel-7907'>You could use a graphical interface, such as <span class="flex_software">Gitkraken</span>, to work with <span class="flex_software">git</span><em> – </em>this may save you a lot of time and effort!</div> +<h3 class="subsection" id='magicparlabel-7916'><span class="subsection_label">10.2</span> The master(trunk)–branch model<div id="sec_The_trunk_branch_model"></div> </h3> -<div class="standard" id='magicparlabel-7892'>Code on <span class="flex_software">git</span> is like a tree. The main version of <span class='math'>binary_c</i></span> +<div class="standard" id='magicparlabel-7917'>Code on <span class="flex_software">git</span> is like a tree. The main version of <span class='math'>binary_c</i></span> resides in the <em>master</em> version (like <span class="flex_software">SVN</span>'s <em>trunk</em>). When you first requested access to<em> </em><span class='math'>binary_c</i></span>, Rob will have made you a copy of the latest master version. This copy is called your <em>branch</em>. You could, in theory, have more than one <em>branch</em>, like a real (healthy) tree, but most people have just one branch.</div> -<div class="standard" id='magicparlabel-7901'>To get <span class='math'>binary_c</i></span>, run</div> +<div class="standard" id='magicparlabel-7926'>To get <span class='math'>binary_c</i></span>, run</div> -<div class="standard" id='magicparlabel-7902'><span style='font-family:monospace;font-size: 18px;'><br /> +<div class="standard" id='magicparlabel-7927'><span style='font-family:monospace;font-size: 18px;'><br /> <pre class ='listings'>git clone gitlab@gitlab.eps.surrey.ac.uk:ri0005/<i>binary_c</i>.git</pre><br /> </span>and you can make a new branch with <span class="flex_software">git</span> branch. </div> -<div class="standard" id='magicparlabel-7911'>In your branch you can do <em>whatever you like</em>! Change the code, delete things, make new things, whatever. It's your branch. But, beware. You will want bug fixes to merge easily, so don't change your branch too radically, and make sure you update with trunk changes regularly (see Section <a href="#subsec_Updating_with_the">10.2.1</a> below).</div> -<h4 class="subsubsection" id='magicparlabel-7912'><span class="subsubsection_label">10.2.1</span> Updating with the latest fixes<div id="subsec_Updating_with_the"></div> +<div class="standard" id='magicparlabel-7936'>In your branch you can do <em>whatever you like</em>! Change the code, delete things, make new things, whatever. It's your branch. But, beware. You will want bug fixes to merge easily, so don't change your branch too radically, and make sure you update with trunk changes regularly (see Section <a href="#subsec_Updating_with_the">10.2.1</a> below).</div> +<h4 class="subsubsection" id='magicparlabel-7937'><span class="subsubsection_label">10.2.1</span> Updating with the latest fixes<div id="subsec_Updating_with_the"></div> </h4> -<div class="standard" id='magicparlabel-7913'>The <em>master</em> is periodically updated with fixes. Only Rob can do this. However, he posts to the <span class='math'>binary_c</i></span> +<div class="standard" id='magicparlabel-7938'>The <em>master</em> is periodically updated with fixes. Only Rob can do this. However, he posts to the <span class='math'>binary_c</i></span> mailing list to describe what he has done. Now, let's say you want to merge these fixes with your branch. You have to do </div> -<div class="standard" id='magicparlabel-7914'><br /> +<div class="standard" id='magicparlabel-7939'><br /> <pre class ='listings'>git merge</pre><br /> and you're done.</div> -<div class="standard" id='magicparlabel-7919'>Beware: there may be conflicts with your code (you will be informed). <em>git</em> tries very hard to merge code automatically, but sometimes this just is not possible. You have to fix these files and then tell git they are fixed.</div> +<div class="standard" id='magicparlabel-7944'>Beware: there may be conflicts with your code (you will be informed). <em>git</em> tries very hard to merge code automatically, but sometimes this just is not possible. You have to fix these files and then tell git they are fixed.</div> -<div class="standard" id='magicparlabel-7920'>Rob <em>assumes</em> you merge the trunk regularly and often. If you leave a long time between merging you will have problems, often because something in the code <em>on which you rely</em> has been changed (hopefully for the better). Do not let this happen! Merge regularly and often.</div> -<h4 class="subsubsection" id='magicparlabel-7921'><span class="subsubsection_label">10.2.2</span> Committing your changes</h4> -<div class="standard" id='magicparlabel-7922'>When you make changes in your branch, you should <em>commit</em> your code. Do this with</div> +<div class="standard" id='magicparlabel-7945'>Rob <em>assumes</em> you merge the trunk regularly and often. If you leave a long time between merging you will have problems, often because something in the code <em>on which you rely</em> has been changed (hopefully for the better). Do not let this happen! Merge regularly and often.</div> +<h4 class="subsubsection" id='magicparlabel-7946'><span class="subsubsection_label">10.2.2</span> Committing your changes</h4> +<div class="standard" id='magicparlabel-7947'>When you make changes in your branch, you should <em>commit</em> your code. Do this with</div> -<div class="standard" id='magicparlabel-7923'><span style='font-family:monospace;font-size: 18px;'><br /> +<div class="standard" id='magicparlabel-7948'><span style='font-family:monospace;font-size: 18px;'><br /> <pre class ='listings'>git commit </pre><br /> </span>or possibly</div> -<div class="standard" id='magicparlabel-7928'><span style='font-family:monospace;font-size: 18px;'><br /> +<div class="standard" id='magicparlabel-7953'><span style='font-family:monospace;font-size: 18px;'><br /> <pre class ='listings'>git commit -a</pre><br /> </span>which then will ask you to write a comment describing your changes. Please use your brain – one word comments are not (usually) of much use either to you or anyone else.</div> -<div class="standard" id='magicparlabel-7933'>You should commit regularly and often. I do it every night. You then have a backup of your code for free!</div> -<h4 class="subsubsection" id='magicparlabel-7934'><span class="subsubsection_label">10.2.3</span> Submitting changes to the <em>master</em></h4> -<div class="standard" id='magicparlabel-7935'>Only Rob can/should make changes to the <em>master</em>. If you are ready to have your changes incorporated into the main version of <span class='math'>binary_c</i></span> +<div class="standard" id='magicparlabel-7958'>You should commit regularly and often. I do it every night. You then have a backup of your code for free!</div> +<h4 class="subsubsection" id='magicparlabel-7959'><span class="subsubsection_label">10.2.3</span> Submitting changes to the <em>master</em></h4> +<div class="standard" id='magicparlabel-7960'>Only Rob can/should make changes to the <em>master</em>. If you are ready to have your changes incorporated into the main version of <span class='math'>binary_c</i></span> which, need I remind you, you are obliged to do by the terms of the licence agreement, you should do the following:</div> -<ul class="itemize" id='magicparlabel-7936'><li class="itemize_item">Run <span style='font-family:monospace;font-size: 18px;'><br /> +<ul class="itemize" id='magicparlabel-7961'><li class="itemize_item">Run <span style='font-family:monospace;font-size: 18px;'><br /> <pre class ='listings'>git pull</pre><br /> </span> to make sure you have the latest version of your code.</li> <li class="itemize_item">Test your code to make sure it works as you expect.</li> @@ -8367,38 +8406,38 @@ and you're done.</div> </span>to send code to the server.</li> <li class="itemize_item">Email Rob, tell him your branch is ready to commit, and tell him the <span class="flex_software">git</span> revision number of your last commit. You can also submit merge requests via the <span class="flex_software">gitlab</span> interface.</li> </ul> -<div class="standard" id='magicparlabel-7967'>The rest is Rob's job. If you want another branch to work on while you wait, just do it.</div> -<h4 class="subsubsection" id='magicparlabel-7968'><span class="subsubsection_label">10.2.4</span> Getting your old code back</h4> -<div class="standard" id='magicparlabel-7969'>If you make a mistake, you can always get your old code back.</div> +<div class="standard" id='magicparlabel-7992'>The rest is Rob's job. If you want another branch to work on while you wait, just do it.</div> +<h4 class="subsubsection" id='magicparlabel-7993'><span class="subsubsection_label">10.2.4</span> Getting your old code back</h4> +<div class="standard" id='magicparlabel-7994'>If you make a mistake, you can always get your old code back.</div> -<div class="standard" id='magicparlabel-7970'><span style='font-family:monospace;font-size: 18px;'><br /> +<div class="standard" id='magicparlabel-7995'><span style='font-family:monospace;font-size: 18px;'><br /> <pre class ='listings'>git revert </pre><br /> </span> will change a file back to the version currently on the server.</div> -<div class="standard" id='magicparlabel-7975'><br /> +<div class="standard" id='magicparlabel-8000'><br /> </div> -<h2 class="section" id='magicparlabel-7976'><span class="section_label">11</span> Cookbook</h2> -<h3 class="subsection" id='magicparlabel-7977'><span class="subsection_label">11.1</span> How to log output</h3> -<div class="standard" id='magicparlabel-7978'>Put your logging statement into <span class="flex_file">log_every_timestep.c</span> using the <span class="flex_cmacro">Printf</span> macro, e.g.,<br /> +<h2 class="section" id='magicparlabel-8001'><span class="section_label">11</span> Cookbook</h2> +<h3 class="subsection" id='magicparlabel-8002'><span class="subsection_label">11.1</span> How to log output</h3> +<div class="standard" id='magicparlabel-8003'>Put your logging statement into <span class="flex_file">log_every_timestep.c</span> using the <span class="flex_cmacro">Printf</span> macro, e.g.,<br /> <pre class ='listings <i>C</i>'>Printf();</pre><br /> </div> -<h3 class="subsection" id='magicparlabel-7991'><span class="subsection_label">11.2</span> How to find which source files contain a string</h3> -<div class="standard" id='magicparlabel-7992'>Run</div> +<h3 class="subsection" id='magicparlabel-8016'><span class="subsection_label">11.2</span> How to find which source files contain a string</h3> +<div class="standard" id='magicparlabel-8017'>Run</div> -<div class="standard" id='magicparlabel-7993'><br /> +<div class="standard" id='magicparlabel-8018'><br /> <pre class\s*='listings bash'>$ ./rgrep <string> {opts}</pre><br /> The options (<span class="flex_args">{opts}</span>) are passed to <span class="flex_command">grep -r</span>, see <span class="flex_command">man grep</span> for details, and these are not required. Binary (object, executable, shared library) files are automatically skipped. Most often you will want to ignore case, e.g.,</div> -<div class="standard" id='magicparlabel-8010'><b><span style='font-family:monospace;font-size: 18px;'><br /> +<div class="standard" id='magicparlabel-8035'><b><span style='font-family:monospace;font-size: 18px;'><br /> <pre class\s*='listings bash'>$ ./rgrep <string> -i</pre><br /> </span></b></div> -<h3 class="subsection" id='magicparlabel-8015'><span class="subsection_label">11.3</span> How to build with debugging output</h3> -<div class="standard" id='magicparlabel-8016'><em>Binary_c</em> provides the <span style='font-family:monospace;font-size: 18px;'><br /> +<h3 class="subsection" id='magicparlabel-8040'><span class="subsection_label">11.3</span> How to build with debugging output</h3> +<div class="standard" id='magicparlabel-8041'><em>Binary_c</em> provides the <span style='font-family:monospace;font-size: 18px;'><br /> <pre class ='listings <i>C</i>'>Dprint(...)</pre><br /> </span> macro to allow you to output what is going on to the screen (<span style='font-family:monospace;font-size: 18px;'>stdout</span>). To turn this on, change the line in <em>binary_c_code_options.h</em> to</div> -<div class="standard" id='magicparlabel-8021'><br /> +<div class="standard" id='magicparlabel-8046'><br /> <pre class ='listings <i>C</i>'>#define DEBUG 1</pre><br /> Then rebuild with debugging enabled,<br /> <pre class\s*='listings bash'>$ cd builddir @@ -8406,19 +8445,19 @@ $ meson --reconfigure --buildtype=debug $ ninja</pre><br /> You can provide an expression which must return true for debugging to be output. This is <span class="flex_cmacro">DEBUG_EXP</span> in <span class="flex_headerfile">binary_c_debug.h</span>. E.g. to only have output after 10Myr, use:</div> -<div class="standard" id='magicparlabel-8040'><b><span style='font-family:monospace;font-size: 18px;'><br /> +<div class="standard" id='magicparlabel-8065'><b><span style='font-family:monospace;font-size: 18px;'><br /> <pre class ='listings <i>C</i>'>#define DEBUG_EXP (stardata->model.time > 10.0)</pre><br /> </span></b>Again, you will need to do a complete rebuild to make this work. You can use<span style='font-family:monospace;font-size: 18px;'> </span><span class="flex_cmacro">Dprint_no_newline()</span><span style='font-family:monospace;font-size: 18px;'> </span>macro to prevent the newline after a debugging statement.</div> -<h3 class="subsection" id='magicparlabel-8049'><span class="subsection_label">11.4</span> How to check for NaNs (not a numbers)</h3> -<div class="standard" id='magicparlabel-8050'>If <span class="flex_cmacro">NANCHECKS</span> is enabled in<span style='font-family:monospace;font-size: 18px;'> </span><span class="flex_headerfile">binary_c_code_options.h</span> you can use the <span class="flex_cmacro">NANCHECK(A)</span> macro, which checks whether <span class="flex_cmacro">A</span> is not a number, exiting with an error if this is the case. This is rather compiler dependent but should work fine with <span class="flex_software">gcc</span>.</div> -<h3 class="subsection" id='magicparlabel-8071'><span class="subsection_label">11.5</span> How to exit <em><i>binary_c</i></em></h3> -<div class="standard" id='magicparlabel-8072'>Do <em>not</em> use <span class="flex_programminglanguage">C</span>'s <span class="flex_cfunction">exit</span> function. Instead use the <span class="flex_cmacro">Exit_binary_c(…)</span> macro, with an error code from <span class="flex_headerfile">binary_c_error_codes.h</span>, e.g.</div> +<h3 class="subsection" id='magicparlabel-8074'><span class="subsection_label">11.4</span> How to check for NaNs (not a numbers)</h3> +<div class="standard" id='magicparlabel-8075'>If <span class="flex_cmacro">NANCHECKS</span> is enabled in<span style='font-family:monospace;font-size: 18px;'> </span><span class="flex_headerfile">binary_c_code_options.h</span> you can use the <span class="flex_cmacro">NANCHECK(A)</span> macro, which checks whether <span class="flex_cmacro">A</span> is not a number, exiting with an error if this is the case. This is rather compiler dependent but should work fine with <span class="flex_software">gcc</span>.</div> +<h3 class="subsection" id='magicparlabel-8096'><span class="subsection_label">11.5</span> How to exit <em><i>binary_c</i></em></h3> +<div class="standard" id='magicparlabel-8097'>Do <em>not</em> use <span class="flex_programminglanguage">C</span>'s <span class="flex_cfunction">exit</span> function. Instead use the <span class="flex_cmacro">Exit_binary_c(…)</span> macro, with an error code from <span class="flex_headerfile">binary_c_error_codes.h</span>, e.g.</div> -<div class="standard" id='magicparlabel-8089'><span style='font-family:monospace;font-size: 18px;'><br /> +<div class="standard" id='magicparlabel-8114'><span style='font-family:monospace;font-size: 18px;'><br /> <pre class ='listings <i>C</i>'>Exit_binary_c(PIPE_FAILURE, “My pipe failed! ARGH!”);</pre><br /> </span></div> -<h3 class="subsection" id='magicparlabel-8094'><span class="subsection_label">11.6</span> How to debug segfaults</h3> -<div class="standard" id='magicparlabel-8095'>Install <span class="flex_software">gdb</span>. Build <i>binary_c</i> with debugging: +<h3 class="subsection" id='magicparlabel-8119'><span class="subsection_label">11.6</span> How to debug segfaults</h3> +<div class="standard" id='magicparlabel-8120'>Install <span class="flex_software">gdb</span>. Build <i>binary_c</i> with debugging: <br /> <b><span style='font-family:monospace;font-size: 18px;'><br /> @@ -8428,20 +8467,20 @@ $ ninja $ cd ..</pre><br /> </span></b></div> -<div class="standard" id='magicparlabel-8107'>Then run your test star with +<div class="standard" id='magicparlabel-8132'>Then run your test star with <br /> <b><span style='font-family:monospace;font-size: 18px;'><br /> <pre class\s*='listings bash'>$ tbse debug </pre><br /> </span></b></div> -<div class="standard" id='magicparlabel-8112'>which will run <span class="flex_software">gdb</span> for you with the appropriate arguments to run the star. To find out where the bug is, use “<span class="flex_args">bt</span>” (backtrace) in <span class="flex_software">gdb</span>.</div> +<div class="standard" id='magicparlabel-8137'>which will run <span class="flex_software">gdb</span> for you with the appropriate arguments to run the star. To find out where the bug is, use “<span class="flex_args">bt</span>” (backtrace) in <span class="flex_software">gdb</span>.</div> -<div class="standard" id='magicparlabel-8125'>See also <a href="https://en.wikipedia.org/wiki/GNU_Debugger">https://en.wikipedia.org/wiki/GNU_Debugger</a></div> +<div class="standard" id='magicparlabel-8150'>See also <a href="https://en.wikipedia.org/wiki/GNU_Debugger">https://en.wikipedia.org/wiki/GNU_Debugger</a></div> -<div class="standard" id='magicparlabel-8130'>You may find that <span class="flex_software">valgrind</span> provides more information, especially when your segfault is caused by a memory leak.</div> -<h3 class="subsection" id='magicparlabel-8135'><span class="subsection_label">11.7</span> How to debug memory leaks</h3> -<div class="standard" id='magicparlabel-8136'>Build with debugging: +<div class="standard" id='magicparlabel-8155'>You may find that <span class="flex_software">valgrind</span> provides more information, especially when your segfault is caused by a memory leak.</div> +<h3 class="subsection" id='magicparlabel-8160'><span class="subsection_label">11.7</span> How to debug memory leaks</h3> +<div class="standard" id='magicparlabel-8161'>Build with debugging: <br /> <b><span style='font-family:monospace;font-size: 18px;'><br /> @@ -8451,14 +8490,14 @@ $ ninja $ cd ..</pre><br /> </span></b></div> -<div class="standard" id='magicparlabel-8144'>Then run +<div class="standard" id='magicparlabel-8169'>Then run <br /> <b><span style='font-family:monospace;font-size: 18px;'><br /> <pre class\s*='listings bash'>$ tbse valgrind</pre><br /> </span></b></div> -<div class="standard" id='magicparlabel-8149'>Find out how to use <em><span class="flex_software"><em>valgrind</em></span></em> at <a href="http://valgrind.org/">http://valgrind.org/</a> +<div class="standard" id='magicparlabel-8174'>Find out how to use <em><span class="flex_software"><em>valgrind</em></span></em> at <a href="http://valgrind.org/">http://valgrind.org/</a> <br /> You can also run <br /> @@ -8470,65 +8509,65 @@ You can also run <br /> <br /> <pre class\s*='listings bash'>$ tbse sgcheck</pre><br /> </div> -<h3 class="subsection" id='magicparlabel-8174'><span class="subsection_label">11.8</span> How to show the arguments that <em>tbse</em> would use, but do not evolve a star</h3> -<div class="standard" id='magicparlabel-8175'>Run +<h3 class="subsection" id='magicparlabel-8199'><span class="subsection_label">11.8</span> How to show the arguments that <em>tbse</em> would use, but do not evolve a star</h3> +<div class="standard" id='magicparlabel-8200'>Run <br /> <b><span style='font-family:monospace;font-size: 18px;'><br /> <pre class\s*='listings bash'>$ tbse echo</pre><br /> </span></b></div> -<h3 class="subsection" id='magicparlabel-8180'><span class="subsection_label">11.9</span> How to run a star which has the arguments in a file</h3> -<div class="standard" id='magicparlabel-8181'>This is handy when you have a fail case (e.g. from a population synthesis run). Just run +<h3 class="subsection" id='magicparlabel-8205'><span class="subsection_label">11.9</span> How to run a star which has the arguments in a file</h3> +<div class="standard" id='magicparlabel-8206'>This is handy when you have a fail case (e.g. from a population synthesis run). Just run <br /> <b><span style='font-family:monospace;font-size: 18px;'><br /> <pre class\s*='listings bash'>$ tbse <filename></pre><br /> </span></b></div> -<h3 class="subsection" id='magicparlabel-8186'><span class="subsection_label">11.10</span> How to use profile guided optimization (PGO)</h3> -<div class="standard" id='magicparlabel-8187'>When compiling with <span class="flex_software">gcc</span>, just run +<h3 class="subsection" id='magicparlabel-8211'><span class="subsection_label">11.10</span> How to use profile guided optimization (PGO)</h3> +<div class="standard" id='magicparlabel-8212'>When compiling with <span class="flex_software">gcc</span>, just run <br /> <b><span style='font-family:monospace;font-size: 18px;'><br /> <pre class\s*='listings bash'>$ tbse pgo</pre><br /> </span></b></div> -<div class="standard" id='magicparlabel-8196'>You may want to change the <span class="flex_args">REPEAT</span> variable as defined in <span class="flex_bashscript">tbse</span>. It is set to 10000, but if your code is running too slowly, set it to less.</div> +<div class="standard" id='magicparlabel-8221'>You may want to change the <span class="flex_args">REPEAT</span> variable as defined in <span class="flex_bashscript">tbse</span>. It is set to 10000, but if your code is running too slowly, set it to less.</div> -<div class="standard" id='magicparlabel-8205'>For details see <a href="https://en.wikipedia.org/wiki/Profile-guided_optimization">https://en.wikipedia.org/wiki/Profile-guided_optimization</a></div> +<div class="standard" id='magicparlabel-8230'>For details see <a href="https://en.wikipedia.org/wiki/Profile-guided_optimization">https://en.wikipedia.org/wiki/Profile-guided_optimization</a></div> -<div class="standard" id='magicparlabel-8210'>Generally, I find a 5-10% speedup from PGO.</div> -<h3 class="subsection" id='magicparlabel-8211'><span class="subsection_label">11.11</span> How to get help</h3> -<h4 class="subsubsection" id='magicparlabel-8212'><span class="subsubsection_label">11.11.1</span> How to know what a parameter does</h4> -<div class="standard" id='magicparlabel-8213'>Run +<div class="standard" id='magicparlabel-8235'>Generally, I find a 5-10% speedup from PGO.</div> +<h3 class="subsection" id='magicparlabel-8236'><span class="subsection_label">11.11</span> How to get help</h3> +<h4 class="subsubsection" id='magicparlabel-8237'><span class="subsubsection_label">11.11.1</span> How to know what a parameter does</h4> +<div class="standard" id='magicparlabel-8238'>Run <br /> <b><span style='font-family:monospace;font-size: 18px;'><br /> <pre class\s*='listings bash'>$ <i>binary_c</i> help <parameter_name></pre><br /> </span></b></div> -<div class="standard" id='magicparlabel-8218'>or +<div class="standard" id='magicparlabel-8243'>or <br /> <b><span style='font-family:monospace;font-size: 18px;'><br /> <pre class\s*='listings bash'>$ <i>binary_c</i> help_all</pre><br /> </span></b></div> -<div class="standard" id='magicparlabel-8223'>You can even just give <em><i>binary_c</i></em> part of a parameter name and it will try to find the best match.</div> -<h4 class="subsubsection" id='magicparlabel-8224'><span class="subsubsection_label">11.11.2</span> The mailing lists</h4> -<div class="standard" id='magicparlabel-8225'>There is a development mailing list for <i>binary_c</i>, for details see section <a href="#subsec_mailing_lists">1.3</a>. </div> -<h3 class="subsection" id='magicparlabel-8226'><span class="subsection_label">11.12</span> How to add a parameter</h3> -<div class="standard" id='magicparlabel-8227'>Look at <span class="flex_headerfile">src/setup/cmd_line_args.h</span> . You will need to add a structure to <span class="flex_cmacro">CMD_LINE_ARGS</span>. Please read the comments in that file for instructions.</div> - -<div class="standard" id='magicparlabel-8236'>The storage space for the new parameter goes in the <span class="flex_cstruct">preferences_t</span> structure (see <span class="flex_headerfile">binary_c_structures.h</span>).</div> -<h3 class="subsection" id='magicparlabel-8245'><span class="subsection_label">11.13</span> How to build on a Mac</h3> -<div class="standard" id='magicparlabel-8246'>I hear it is possible! Please ask the mailing list.</div> -<h3 class="subsection" id='magicparlabel-8247'><span class="subsection_label">11.14</span> How to build as a shared library</h3> -<div class="standard" id='magicparlabel-8248'>Easy, just execute<b><span style='font-family:monospace;font-size: 18px;'> <br /> +<div class="standard" id='magicparlabel-8248'>You can even just give <em><i>binary_c</i></em> part of a parameter name and it will try to find the best match.</div> +<h4 class="subsubsection" id='magicparlabel-8249'><span class="subsubsection_label">11.11.2</span> The mailing lists</h4> +<div class="standard" id='magicparlabel-8250'>There is a development mailing list for <i>binary_c</i>, for details see section <a href="#subsec_mailing_lists">1.3</a>. </div> +<h3 class="subsection" id='magicparlabel-8251'><span class="subsection_label">11.12</span> How to add a parameter</h3> +<div class="standard" id='magicparlabel-8252'>Look at <span class="flex_headerfile">src/setup/cmd_line_args.h</span> . You will need to add a structure to <span class="flex_cmacro">CMD_LINE_ARGS</span>. Please read the comments in that file for instructions.</div> + +<div class="standard" id='magicparlabel-8261'>The storage space for the new parameter goes in the <span class="flex_cstruct">preferences_t</span> structure (see <span class="flex_headerfile">binary_c_structures.h</span>).</div> +<h3 class="subsection" id='magicparlabel-8270'><span class="subsection_label">11.13</span> How to build on a Mac</h3> +<div class="standard" id='magicparlabel-8271'>I hear it is possible! Please ask the mailing list.</div> +<h3 class="subsection" id='magicparlabel-8272'><span class="subsection_label">11.14</span> How to build as a shared library</h3> +<div class="standard" id='magicparlabel-8273'>Easy, just execute<b><span style='font-family:monospace;font-size: 18px;'> <br /> <pre class\s*='listings bash'>$ ./make <i>libbinary_c.so</i></pre><br /> </span></b> The API uses this shared library.</div> -<h3 class="subsection" id='magicparlabel-8253'><span class="subsection_label">11.15</span> How to calculate stellar yields or population statistics</h3> +<h3 class="subsection" id='magicparlabel-8278'><span class="subsection_label">11.15</span> How to calculate stellar yields or population statistics</h3> -<ol class="enumerate" id='magicparlabel-8254'><li class="enumerate_item">You have to build <em><i>binary_c</i></em> with <span class="flex_cmacro">NUCSYN</span> and <span class="flex_cmacro">NUCSYN_GCE</span> enabled, as well as the required physics</li> +<ol class="enumerate" id='magicparlabel-8279'><li class="enumerate_item">You have to build <em><i>binary_c</i></em> with <span class="flex_cmacro">NUCSYN</span> and <span class="flex_cmacro">NUCSYN_GCE</span> enabled, as well as the required physics</li> <li class="enumerate_item">You have to (re)build the shared library with <b><span style='font-family:monospace;font-size: 18px;'><br /> <pre class\s*='listings bash'>$ make <i>libbinary_c.so</i></pre><br /> </span></b></li> @@ -8538,8 +8577,8 @@ You can also run <br /> <pre class\s*='listings bash'>$ ./src/perl/scripts2/yield_vs_time.pl dt=10 max_evolution_time=13700 vb=1</pre><br /> </span></b>Note that, depending on the options you choose in <span class="flex_perlscript">yield_vs_time.pl</span>, this may take a long time!</li> </ol> -<h3 class="subsection" id='magicparlabel-8299'><span class="subsection_label">11.16</span> <em>bash</em> autocompletion of <i>binary_c</i> arguments</h3> -<div class="standard" id='magicparlabel-8300'>You can make <span class="flex_software">bash</span> autocomplete arguments to <i>binary_c</i> by putting the following in your <span class="flex_file">.bashrc</span> file (assuming you have <em><i>binary_c</i></em> in the directory specified by the environment variable <span class="flex_envvar">BINARY_C</span>) and restart <em>bash</em>.<br /> +<h3 class="subsection" id='magicparlabel-8324'><span class="subsection_label">11.16</span> <em>bash</em> autocompletion of <i>binary_c</i> arguments</h3> +<div class="standard" id='magicparlabel-8325'>You can make <span class="flex_software">bash</span> autocomplete arguments to <i>binary_c</i> by putting the following in your <span class="flex_file">.bashrc</span> file (assuming you have <em><i>binary_c</i></em> in the directory specified by the environment variable <span class="flex_envvar">BINARY_C</span>) and restart <em>bash</em>.<br /> <pre class ='listings Perl'># completion of <i>binary_c</i> arguments _binary_c() @@ -8554,9 +8593,9 @@ _binary_c() complete -F _binary_c <i>binary_c</i> </pre><br /> </div> -<h3 class="subsection" id='magicparlabel-8329'><span class="subsection_label">11.17</span> <div id="subsec_git_revision"></div> +<h3 class="subsection" id='magicparlabel-8354'><span class="subsection_label">11.17</span> <div id="subsec_git_revision"></div> How to find the <em>git</em> revision and <em>git</em> URL</h3> -<div class="standard" id='magicparlabel-8330'>Put the following into your <span class="flex_bashscript">.bashrc</span> file, restart <em>bash</em> and use the command <span class="flex_command">git_rev</span> to find a suitable <span class="flex_software">git</span> revision string and <span class="flex_command">git_url</span> to find the repository URL.<br /> +<div class="standard" id='magicparlabel-8355'>Put the following into your <span class="flex_bashscript">.bashrc</span> file, restart <em>bash</em> and use the command <span class="flex_command">git_rev</span> to find a suitable <span class="flex_software">git</span> revision string and <span class="flex_command">git_url</span> to find the repository URL.<br /> <pre class ='listings'># git function for review number git_rev () { @@ -8573,10 +8612,10 @@ git_url () } </pre><br /> </div> -<h2 class="section" id='magicparlabel-8365'><span class="section_label">12</span> Changelog</h2> -<div class="standard" id='magicparlabel-8366'>Note this is always an incomplete list!</div> +<h2 class="section" id='magicparlabel-8390'><span class="section_label">12</span> Changelog</h2> +<div class="standard" id='magicparlabel-8391'>Note this is always an incomplete list!</div> -<dl class='description' id='magicparlabel-8367'><dt class="description_label">Version 2.1</dt> +<dl class='description' id='magicparlabel-8392'><dt class="description_label">Version 2.1</dt> <dd class="description_item"> Time integration is now forward-Euler, RK2 or RK4, rationalised the time evolution loop, events subsystem introduced, fixed timesteps now standard, command line macros, update mass transfer rates, many bug fixes.</dd> <dt class="description_label">Version 2.0</dt> <dd class="description_item"> Finally, RGI had some time to sit down and redesign the guts of <em><i>binary_c</i></em>. Version 2.0 is a cleaned up, sensible version of the old code. It has better logic, naming, time resolution, setup, etc.</dd> @@ -8589,13 +8628,13 @@ git_url () <dt class="description_label">Version 1.0</dt> <dd class="description_item"> The original version.</dd> </dl> -<h2 class="section" id='magicparlabel-8393'><span class="section_label">13</span> Acknowledgements</h2> -<div class="standard" id='magicparlabel-8394'>This document was prepared using the wonderful <a href="https://www.lyx.org/">LyX</a>.</div> +<h2 class="section" id='magicparlabel-8418'><span class="section_label">13</span> Acknowledgements</h2> +<div class="standard" id='magicparlabel-8419'>This document was prepared using the wonderful <a href="https://www.lyx.org/">LyX</a>.</div> -<div class="standard" id='magicparlabel-8395'><br /> +<div class="standard" id='magicparlabel-8420'><br /> </div> -<div class="standard" id='magicparlabel-8396'><h2 class='bibtex'>References</h2><div class='bibtex'><div class='bibtexentry' id='LyXCite-1999ApJ___525__886A'><span class='bibtexlabel'>Arlandini et al. 1999</span><span class='bibtexinfo'><span class="bib-fullnames:author">Arlandini, <i>C</i>., Käppeler, F., Wisshak, K., Gallino, R., Lugaro, M., Busso, M., and Straniero, O.</span>, "<span class="bib-title">Neutron Capture in Low-Mass Asymptotic Giant Branch Stars: Cross Sections and Abundance Signatures</span>", <i><span class="bib-journal"></span></i> <span class="bib-volume">525</span> (<span class="bib-year">1999</span>), pp. <span class="bib-pages">886-900</span>.</span></div> +<div class="standard" id='magicparlabel-8421'><h2 class='bibtex'>References</h2><div class='bibtex'><div class='bibtexentry' id='LyXCite-1999ApJ___525__886A'><span class='bibtexlabel'>Arlandini et al. 1999</span><span class='bibtexinfo'><span class="bib-fullnames:author">Arlandini, <i>C</i>., Käppeler, F., Wisshak, K., Gallino, R., Lugaro, M., Busso, M., and Straniero, O.</span>, "<span class="bib-title">Neutron Capture in Low-Mass Asymptotic Giant Branch Stars: Cross Sections and Abundance Signatures</span>", <i><span class="bib-journal"></span></i> <span class="bib-volume">525</span> (<span class="bib-year">1999</span>), pp. <span class="bib-pages">886-900</span>.</span></div> <div class='bibtexentry' id='LyXCite-2007A_A___469_1013B'><span class='bibtexlabel'>BonaÄić Marinović et al. 2007</span><span class='bibtexinfo'><span class="bib-fullnames:author">BonaÄić Marinović, A., Izzard, R.~G., Lugaro, M., and Pols, O.~R.</span>, "<span class="bib-title">The s-process in stellar population synthesis: a new approach to understanding AGB stars</span>", <i><span class="bib-journal"></span></i> <span class="bib-volume">469</span> (<span class="bib-year">2007</span>), pp. <span class="bib-pages">1013-1025</span>.</span></div> <div class='bibtexentry' id='LyXCite-2004ApJ___608__405C'><span class='bibtexlabel'>Chieffi and Limongi 2004</span><span class='bibtexinfo'><span class="bib-fullnames:author">Chieffi, A. and Limongi, M.</span>, "<span class="bib-title">Explosive Yields of Massive Stars from $Z=0$ to $Z = Z_{\odot}$</span>", <i><span class="bib-journal"></span></i> <span class="bib-volume">608</span> (<span class="bib-year">2004</span>), pp. <span class="bib-pages">405-410</span>.</span></div> <div class='bibtexentry' id='LyXCite-2002NewA____7___55D'><span class='bibtexlabel'>De Donder and Vanbeveren 2002</span><span class='bibtexinfo'><span class="bib-fullnames:author">De Donder, E. and Vanbeveren, D.</span>, "<span class="bib-title">The chemical evolution of the solar neighbourhood: the effect of binaries</span>", <i><span class="bib-journal">New Astronomy</span></i> <span class="bib-volume">7</span> (<span class="bib-year">2002</span>), pp. <span class="bib-pages">55-84</span>.</span></div> @@ -8628,19 +8667,19 @@ git_url () <div class='bibtexentry' id='LyXCite-1986ApJ___301__601W'><span class='bibtexlabel'>Woosley et al. 1986</span><span class='bibtexinfo'><span class="bib-fullnames:author">Woosley, S.~E., Taam, R.~E., and Weaver, T.~A.</span>, "<span class="bib-title">Models for Type I supernova. I - Detonations in white dwarfs</span>", <i><span class="bib-journal"></span></i> <span class="bib-volume">301</span> (<span class="bib-year">1986</span>), pp. <span class="bib-pages">601-623</span>.</span></div> </div></div> -<div class="standard" id='magicparlabel-8397'><br /> +<div class="standard" id='magicparlabel-8422'><br /> </div> <HR><H1>Appendix</H1> -<h2 class="section" id='magicparlabel-8400'><span class="section_label">A</span> Grid options (<em>grid_options</em> hash)</h2> -<div class="standard" id='magicparlabel-8401'><div id="sec_grid_options"></div> +<h2 class="section" id='magicparlabel-8425'><span class="section_label">A</span> Grid options (<em>grid_options</em> hash)</h2> +<div class="standard" id='magicparlabel-8426'><div id="sec_grid_options"></div> The following summarises the <span style='font-family:monospace;font-size: 18px;'>grid_options</span> hash elements as stored in <br /> <span style='font-family:monospace;font-size: 18px;'>$binary_grid2_object->{_hash_options}</span>. Please note that some options are (perhaps) no longer used and are left in this manual as a reference guide only. </div> -<dl class='description' id='magicparlabel-8402'><dt class="description_label">alarm_procedure</dt> +<dl class='description' id='magicparlabel-8427'><dt class="description_label">alarm_procedure</dt> <dd class="description_item"> When a signal is captured (usually on a timeout) the alarm_procedure tells us what to do. If <math xmlns="http://www.w3.org/1998/Math/MathML"><mstyle mathvariant='sans-serif-italic' mathsize='85%'> <mrow><mn>0</mn> </mrow></mstyle></math> then the grid exits. If <math xmlns="http://www.w3.org/1998/Math/MathML"><mstyle mathvariant='sans-serif-italic' mathsize='85%'> @@ -8818,13 +8857,13 @@ The following summarises the <span style='font-family:monospace;font-size: 18px; <dt class="description_label">weight</dt> <dd class="description_item"> The probability is weighted by this value. </dd> </dl> -<div class="standard" id='magicparlabel-8456'><br /> +<div class="standard" id='magicparlabel-8481'><br /> </div> -<h2 class="section" id='magicparlabel-8457'><span class="section_label">B</span> Binary_c/nucsyn options (<em>bse_options</em> hash)</h2> -<div class="standard" id='magicparlabel-8458'><div id="sec_bse_options"></div> +<h2 class="section" id='magicparlabel-8482'><span class="section_label">B</span> Binary_c/nucsyn options (<em>bse_options</em> hash)</h2> +<div class="standard" id='magicparlabel-8483'><div id="sec_bse_options"></div> The following options correspond to variables in the <span style='font-family:monospace;font-size: 18px;'>$binary_grid2_object->{_bse_options}</span> hash. These correspond to options of <em><i>binary_c</i></em>.</div> -<div class="standard" id='magicparlabel-8459'>The most important options are listed here, however you should consult <em><i>binary_c</i></em> for the main options list because these options are (mostly) just passed to <em><i>binary_c</i></em>. The full list of options is given in <span style='font-family:monospace;font-size: 18px;'>src/setup/cmd_line_args.h</span>. You can access a full list of arguments by running +<div class="standard" id='magicparlabel-8484'>The most important options are listed here, however you should consult <em><i>binary_c</i></em> for the main options list because these options are (mostly) just passed to <em><i>binary_c</i></em>. The full list of options is given in <span style='font-family:monospace;font-size: 18px;'>src/setup/cmd_line_args.h</span>. You can access a full list of arguments by running <br /> <b><span style='font-family:monospace;font-size: 18px;'><i>binary_c</i> --help</span></b> @@ -8832,7 +8871,7 @@ The following summarises the <span style='font-family:monospace;font-size: 18px; <em>BSE</em> refers to <a href='#LyXCite-2002MNRAS_329_897H'><span class="bib-abbrvciteauthor">Hurley et al.</span></a> (<span class="bib-year">2002</span>).</div> -<dl class='description' id='magicparlabel-8460'><dt class="description_label">acc2</dt> +<dl class='description' id='magicparlabel-8485'><dt class="description_label">acc2</dt> <dd class="description_item"> Bondi-Hoyle accretion rate parameter (default 1.5). Deprecated in <i>binary_c</i> V2.0, please use Bondi_Hoyle_accretion_factor instead."</dd> <dt class="description_label">alpha_ce</dt> <dd class="description_item"> Common envelope ejection efficiency, default 1.0.</dd> diff --git a/doc/binary_c2.lyx b/doc/binary_c2.lyx index 7fb0dc3f2..fca59f7d5 100644 --- a/doc/binary_c2.lyx +++ b/doc/binary_c2.lyx @@ -4827,6 +4827,115 @@ src to function. \end_layout +\begin_layout Subsubsection +Building +\begin_inset Formula $\binaryc$ +\end_inset + + and +\begin_inset Formula $\libbinaryc$ +\end_inset + +, and installing them for +\begin_inset Formula $\binarygrid2$ +\end_inset + + +\end_layout + +\begin_layout Standard +You can build and install both +\begin_inset Formula $\binaryc$ +\end_inset + + and +\begin_inset Formula $\libbinaryc$ +\end_inset + + in locations which are compatible with legacy builds and +\begin_inset Formula $\binarygrid2$ +\end_inset + + with one command: +\end_layout + +\begin_layout Standard +\begin_inset listings +lstparams "language=bash" +inline false +status open + +\begin_layout Plain Layout + +cd builddir +\end_layout + +\begin_layout Plain Layout + +ninja binary_c_install_legacy +\end_layout + +\end_inset + +This puts a copy of the +\begin_inset Flex File +status open + +\begin_layout Plain Layout +binary_c +\end_layout + +\end_inset + + executable in the root +\begin_inset Formula $\binaryc$ +\end_inset + + directory, and copies the shared library file +\begin_inset Flex File +status open + +\begin_layout Plain Layout +libbinary_c.so +\end_layout + +\end_inset + + to the +\begin_inset Flex File +status open + +\begin_layout Plain Layout +src +\end_layout + +\end_inset + + directory, i.e. +\begin_inset space ~ +\end_inset + +the locations +\begin_inset Formula $\binarygrid2$ +\end_inset + + expects. +\end_layout + +\begin_layout Standard +After doing the above, you can remove the +\begin_inset Flex File +status open + +\begin_layout Plain Layout +builddir +\end_layout + +\end_inset + + completely. +\end_layout + \begin_layout Subsubsection Alternative compiler \end_layout diff --git a/doc/binary_c2.pdf b/doc/binary_c2.pdf index 582cbc4dd1e47a12a57fa524061dfba79e02e0a5..799c3af1bf4b26d92d42363bd9176e30d1fa3340 100644 GIT binary patch delta 122814 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 Pt*fQUCNFPcXUX;t#D}Lt delta 121692 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®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 Dql({- diff --git a/docker/Dockerfile b/docker/Dockerfile index 4af107139..2f7ea7a75 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -184,6 +184,13 @@ RUN export LD_LIBRARY_PATH=$HOME/lib LIBRARY_PATH=$HOME/lib && meson builddir -D WORKDIR /home/binary_c/progs/stars/binary_c/builddir RUN export LD_LIBRARY_PATH=$HOME/lib LIBRARY_PATH=$HOME/lib && ninja binary_c_install_legacy +############################################################ +# Clean up object files +############################################################ + +WORKDIR /home/binary_c/progs/stars/binary_c +RUN rm -rf builddir + ############################################################ # install perl modules for binary_grid ############################################################ @@ -233,13 +240,6 @@ USER root RUN rm -rf /var/lib/apt/lists/* USER binary_c -############################################################ -# Clean up object files and remove .git from binary_c tree -############################################################ - -WORKDIR /home/binary_c/progs/stars/binary_c -RUN rm -rf builddir - ############################################################ # Leave in /home/binary_c ############################################################ diff --git a/docker/build.log b/docker/build.log index 2f438c234..bd37056a1 100644 --- a/docker/build.log +++ b/docker/build.log @@ -1,4 +1,4 @@ -Sending build context to Docker daemon 438.8MB +Sending build context to Docker daemon 439.3MB Step 1/53 : FROM ubuntu:18.04 ---> 775349758637 Step 2/53 : MAINTAINER Robert Izzard r.izzard@surrey.ac.uk rob.izzard@gmail.com @@ -95,1716 +95,31 @@ Step 32/53 : RUN mkdir -p /home/binary_c/progs/stars/ ---> Using cache ---> f63dd40769ab Step 33/53 : COPY --chown=binary_c ./binary_c_master /home/binary_c/progs/stars/binary_c - ---> 8c04696a13d5 + ---> Using cache + ---> 7d417b6edc42 Step 34/53 : WORKDIR /home/binary_c/progs/stars/binary_c - ---> Running in b4d7e641c2c9 -Removing intermediate container b4d7e641c2c9 - ---> 0ed10dacdd84 + ---> Using cache + ---> a274631c6489 Step 35/53 : RUN export LD_LIBRARY_PATH=$HOME/lib LIBRARY_PATH=$HOME/lib && wc -c LICENCE |gawk "{print \$1}" > .lread && export LD_LIBRARY_PATH=$HOME/lib LIBRARY_PATH=$HOME/lib && meson builddir -Dgeneric=true --buildtype release - ---> Running in 8181d9c72ab5 -The Meson build system -Version: 0.52.0 -Source dir: /home/binary_c/progs/stars/binary_c -Build dir: /home/binary_c/progs/stars/binary_c/builddir -Build type: native build -Project name: binary_c -Project version: 2.1.4 -C compiler for the host machine: cc (gcc 7.4.0 "cc (Ubuntu 7.4.0-1ubuntu1~18.04.1) 7.4.0") -C linker for the host machine: GNU ld.bfd 2.30 -Host machine cpu family: x86_64 -Host machine cpu: x86_64 -Compiler for C supports arguments -std=gnu99: YES -Compiler for C supports arguments -mavx: YES -Compiler for C supports arguments -mtune=generic: YES -Compiler for C supports arguments -ffast-math: YES -Compiler for C supports arguments -fno-associative-math: YES -Compiler for C supports arguments -fno-finite-math-only: YES -Compiler for C supports arguments -fsignaling-nans: YES -Compiler for C supports arguments -fomit-frame-pointer: YES -Compiler for C supports arguments -fvisibility=hidden: YES -Checking if "64-bit check" compiles: YES -Found pkg-config: /usr/bin/pkg-config (0.29.1) -Run-time dependency gsl found: YES 2.4 -Library c found: YES -Library m found: YES -Library gsl found: YES -Checking for size of "drand48_r" : 1 -Has header "malloc.h" : YES -Has header "valgrind/valgrind.h" : YES -Has header "gsl/gsl_blas.h" : YES -Compiler for C supports arguments -Wall: YES -Compiler for C supports arguments -Wformat: YES -Compiler for C supports arguments -Wstrict-prototypes: YES -Compiler for C supports arguments -Wformat-signedness: YES -Build targets in project: 5 -Found ninja-1.9.0.git.kitware.dyndep-1.jobserver-1 at /usr/local/bin/ninja -Removing intermediate container 8181d9c72ab5 - ---> 48b361ad8107 + ---> Using cache + ---> c7381eea655c Step 36/53 : WORKDIR /home/binary_c/progs/stars/binary_c/builddir - ---> Running in 2c89e3b673a9 -Removing intermediate container 2c89e3b673a9 - ---> daaedff07ff5 -Step 37/53 : RUN export LD_LIBRARY_PATH=$HOME/lib LIBRARY_PATH=$HOME/lib && ninja && export LD_LIBRARY_PATH=$HOME/lib LIBRARY_PATH=$HOME/lib && ninja libbinary_c.so && export LD_LIBRARY_PATH=$HOME/lib LIBRARY_PATH=$HOME/lib && ninja binary_c_symlink - ---> Running in ed4b8c061140 -[0/1] Regenerating build files. -The Meson build system -Version: 0.52.0 -Source dir: /home/binary_c/progs/stars/binary_c -Build dir: /home/binary_c/progs/stars/binary_c/builddir -Build type: native build -Project name: binary_c -Project version: 2.1.4 -C compiler for the host machine: cc (gcc 7.4.0 "cc (Ubuntu 7.4.0-1ubuntu1~18.04.1) 7.4.0") -C linker for the host machine: GNU ld.bfd 2.30 -Host machine cpu family: x86_64 -Host machine cpu: x86_64 -Compiler for C supports arguments -std=gnu99: YES (cached) -Compiler for C supports arguments -mavx: YES (cached) -Compiler for C supports arguments -mtune=generic: YES (cached) -Compiler for C supports arguments -ffast-math: YES (cached) -Compiler for C supports arguments -fno-associative-math: YES (cached) -Compiler for C supports arguments -fno-finite-math-only: YES (cached) -Compiler for C supports arguments -fsignaling-nans: YES (cached) -Compiler for C supports arguments -fomit-frame-pointer: YES (cached) -Compiler for C supports arguments -fvisibility=hidden: YES (cached) -Checking if "64-bit check" compiles: YES (cached) -Dependency gsl found: YES (cached) -Library c found: YES -Library m found: YES -Library gsl found: YES -Checking for size of "drand48_r" : 1 -Has header "malloc.h" : YES (cached) -Has header "valgrind/valgrind.h" : YES (cached) -Has header "gsl/gsl_blas.h" : YES (cached) -Compiler for C supports arguments -Wall: YES (cached) -Compiler for C supports arguments -Wformat: YES (cached) -Compiler for C supports arguments -Wstrict-prototypes: YES (cached) -Compiler for C supports arguments -Wformat-signedness: YES (cached) -Build targets in project: 5 -Found ninja-1.9.0.git.kitware.dyndep-1.jobserver-1 at /usr/local/bin/ninja -[1/807] Generating binary_c.h.pch with a custom command. -[2/807] Compiling C object 'binary_c@exe/src_disc_evolve_disc.c.o'. -[3/807] Compiling C object 'binary_c@exe/src_disc_inner_disc.c.o'. -[4/807] Compiling C object 'binary_c@exe/src_disc_mass_in_discs.c.o'. -[5/807] Compiling C object 'binary_c@exe/src_disc_ndiscs.c.o'. -[6/807] Compiling C object 'binary_c@exe/src_disc_new_disc.c.o'. -[7/807] Compiling C object 'binary_c@exe/src_envelope_integration_gob84.c.o'. -[8/807] Compiling C object 'binary_c@exe/src_disc_evolve_discs.c.o'. -[9/807] Compiling C object 'binary_c@exe/src_API_binary_c_new_system.c.o'. -[10/807] Compiling C object 'binary_c@exe/src_API_binary_c_version.c.o'. -[11/807] Compiling C object 'binary_c@exe/src_API_binary_c_show_instant_RLOF_period_or_separation.c.o'. -[12/807] Compiling C object 'binary_c@exe/src_API_binary_c_free_memory.c.o'. -[13/807] Compiling C object 'binary_c@exe/src_API_binary_c_buffer_empty_buffer.c.o'. -[14/807] Compiling C object 'binary_c@exe/src_API_binary_c_error_buffer.c.o'. -[15/807] Compiling C object 'binary_c@exe/src_API_binary_c_buffer_info.c.o'. -[16/807] Compiling C object 'binary_c@exe/src_BINT_BINT_MS_lifetime.c.o'. -[17/807] Compiling C object 'binary_c@exe/src_API_binary_c_free_store_contents.c.o'. -[18/807] Compiling C object 'binary_c@exe/src_RLOF_RLOF_orbital_angular_momentum_loss.c.o'. -[19/807] Compiling C object 'binary_c@exe/src_envelope_integration_envelope_properties.c.o'. -[20/807] Compiling C object 'binary_c@exe/src_API_binary_c_initialize_parameters.c.o'. -[21/807] Compiling C object 'binary_c@exe/src_RLOF_RLOF_set_rmin.c.o'. -[22/807] Compiling C object 'binary_c@exe/src_API_binary_c_API_logging.c.o'. -[23/807] Compiling C object 'binary_c@exe/src_API_binary_c_API_debug_fprintf.c.o'. -[24/807] Compiling C object 'binary_c@exe/src_RLOF_RLOF_overflowing.c.o'. -[25/807] Compiling C object 'binary_c@exe/src_RLOF_RLOF_test_for_accretion_disc.c.o'. -[26/807] Compiling C object 'binary_c@exe/src_API_binary_c_API_fortran.c.o'. -[27/807] Compiling C object 'binary_c@exe/src_RLOF_RLOF_speed_up_factor.c.o'. -[28/807] Compiling C object 'binary_c@exe/src_RLOF_RLOF_stellar_angmom_derivative.c.o'. -[29/807] Compiling C object 'binary_c@exe/src_RLOF_RLOF_type.c.o'. -[30/807] Compiling C object 'binary_c@exe/src_RLOF_efficiency_tests.c.o'. -[31/807] Compiling C object 'binary_c@exe/src_RLOF_effective_Roche_radius.c.o'. -[32/807] Compiling C object 'binary_c@exe/src_binary_star_functions_WRLOF_rate.c.o'. -[33/807] Compiling C object 'binary_c@exe/src_BINT_BINT_free_store.c.o'. -[34/807] Compiling C object 'binary_c@exe/src_BINT_BINT_init.c.o'. -[35/807] Compiling C object 'binary_c@exe/src_BINT_BINT_initial_XHc.c.o'. -[36/807] Compiling C object 'binary_c@exe/src_BINT_BINT_load_grid.c.o'. -[37/807] Compiling C object 'binary_c@exe/src_RLOF_RLOF_unstable_mass_transfer.c.o'. -[38/807] Compiling C object 'binary_c@exe/src_binary_star_functions_WD_max_accretion_rate.c.o'. -[39/807] Compiling C object 'binary_c@exe/src_binary_star_functions_WD_min_accretion_rate.c.o'. -[40/807] Compiling C object 'binary_c@exe/src_RLOF_RLOF_stability_tests.c.o'. -[41/807] Compiling C object 'binary_c@exe/src_binary_star_functions_angular_momentum_loss_mechanisms_for_close_systems.c.o'. -[42/807] Compiling C object 'binary_c@exe/src_API_binary_c_evolve_for_dt.c.o'. -[43/807] Compiling C object 'binary_c@exe/src_BINT_BINT_mix_stars.c.o'. -[44/807] Compiling C object 'binary_c@exe/src_BINT_BINT_stellar_structure.c.o'. -[45/807] Compiling C object 'binary_c@exe/src_batchmode_batchmode_loop.c.o'. -[46/807] Compiling C object 'binary_c@exe/src_BINT_BINT_stellar_structure_MS.c.o'. -[47/807] Compiling C object 'binary_c@exe/src_RLOF_Hachisu_max_rate.c.o'. -[48/807] Compiling C object 'binary_c@exe/src_RLOF_RLOF_donor_dynamical_rate_limit.c.o'. -[49/807] Compiling C object 'binary_c@exe/src_binary_star_functions_Peters_grav_wave_merger_time.c.o'. -[50/807] Compiling C object 'binary_c@exe/src_RLOF_RLOF_dM_orbit_to_time_derivatives.c.o'. -[51/807] Compiling C object 'binary_c@exe/src_RLOF_RLOF_NSNS_NSBH_merger.c.o'. -[52/807] Compiling C object 'binary_c@exe/src_RLOF_RLOF_donor_envelope_rate_limit.c.o'. -[53/807] Compiling C object 'binary_c@exe/src_RLOF_RLOF_black_hole_merger.c.o'. -[54/807] Compiling C object 'binary_c@exe/src_RLOF_RLOF_donor_thermal_rate_limit.c.o'. -[55/807] Compiling C object 'binary_c@exe/src_RLOF_RLOF_init_dM_orbit.c.o'. -[56/807] Compiling C object 'binary_c@exe/src_RLOF_RLOF_dynamical_comenv.c.o'. -[57/807] Compiling C object 'binary_c@exe/src_RLOF_RLOF_adaptive_mass_transfer_rate.c.o'. -[58/807] Compiling C object 'binary_c@exe/src_RLOF_RLOF_merger_event_handler.c.o'. -[59/807] Compiling C object 'binary_c@exe/src_RLOF_RLOF_mass_transferred_in_one_orbit.c.o'. -[60/807] Compiling C object 'binary_c@exe/src_binary_star_functions_adjust_radius_derivative.c.o'. -[61/807] Compiling C object 'binary_c@exe/src_RLOF_RLOF_merger.c.o'. -[62/807] Compiling C object 'binary_c@exe/src_binary_star_functions_apply_other_stellar_derivatives.c.o'. -[63/807] Compiling C object 'binary_c@exe/src_binary_star_functions_binary_a_n.c.o'. -[64/807] Compiling C object 'binary_c@exe/src_RLOF_RLOF_dynamical_transfer_from_WD_to_remnant.c.o'. -[65/807] Compiling C object 'binary_c@exe/src_binary_star_functions_apply_orbital_angular_momentum_and_eccentricity_derivatives.c.o'. -[66/807] Compiling C object 'binary_c@exe/src_binary_star_functions_calculate_spins.c.o'. -[67/807] Compiling C object 'binary_c@exe/src_binary_star_functions_calculate_orbital_period.c.o'. -[68/807] Compiling C object 'binary_c@exe/src_binary_star_functions_calculate_orbital_separation.c.o'. -[69/807] Compiling C object 'binary_c@exe/src_binary_star_functions_circumbinary_disk.c.o'. -[70/807] Compiling C object 'binary_c@exe/src_binary_star_functions_check_for_collision_at_periastron.c.o'. -[71/807] Compiling C object 'binary_c@exe/src_binary_star_functions_contact_system_event_handler.c.o'. -[72/807] Compiling C object 'binary_c@exe/src_binary_star_functions_compact_object_accretion_limits.c.o'. -[73/807] Compiling C object 'binary_c@exe/src_binary_star_functions_calc_wind_loss_and_gain_rates.c.o'. -[74/807] Compiling C object 'binary_c@exe/src_binary_star_functions_detached_timestep_limits.c.o'. -[75/807] Compiling C object 'binary_c@exe/src_RLOF_RLOF_dynamical_transfer_from_low_mass_MS_star.c.o'. -[76/807] Compiling C object 'binary_c@exe/src_binary_star_functions_angular_momentum_and_eccentricity_derivatives.c.o'. -[77/807] Compiling C object 'binary_c@exe/src_binary_star_functions_contact_system.c.o'. -[78/807] Compiling C object 'binary_c@exe/src_binary_star_functions_dgcore.c.o'. -[79/807] Compiling C object 'binary_c@exe/src_RLOF_RLOF_mass_transfer_rate.c.o'. -[80/807] Compiling C object 'binary_c@exe/src_binary_star_functions_detached_limit_mass_loss_and_timestep.c.o'. -[81/807] Compiling C object 'binary_c@exe/src_binary_star_functions_determine_mass_ratios.c.o'. -[82/807] Compiling C object 'binary_c@exe/src_binary_star_functions_fork_kick.c.o'. -[83/807] Compiling C object 'binary_c@exe/src_binary_star_functions_determine_roche_lobe_radius.c.o'. -[84/807] Compiling C object 'binary_c@exe/src_binary_star_functions_dynamical_limit_for_accretion.c.o'. -[85/807] Compiling C object 'binary_c@exe/src_binary_star_functions_force_corotation_of_primary_and_orbit.c.o'. -[86/807] Compiling C object 'binary_c@exe/src_binary_star_functions_determine_roche_lobe_radii.c.o'. -[87/807] Compiling C object 'binary_c@exe/src_binary_star_functions_eddington_limit_for_accretion.c.o'. -[88/807] Compiling C object 'binary_c@exe/src_binary_star_functions_apply_stellar_mass_and_angular_momentum_derivatives.c.o'. -[89/807] Compiling C object 'binary_c@exe/src_binary_star_functions_handle_massless_remnants.c.o'. -[90/807] Compiling C object 'binary_c@exe/src_binary_star_functions_lagrange_points_from_stardata.c.o'. -[91/807] Compiling C object 'binary_c@exe/src_binary_star_functions_gravitational_radiation_edot.c.o'. -[92/807] Compiling C object 'binary_c@exe/src_binary_star_functions_gravitational_radiation_jdot.c.o'. -[93/807] Compiling C object 'binary_c@exe/src_binary_star_functions_make_roche_lobe_radii_huge.c.o'. -[94/807] Compiling C object 'binary_c@exe/src_binary_star_functions_lagrange_points.c.o'. -[95/807] Compiling C object 'binary_c@exe/src_binary_star_functions_orbital_velocity.c.o'. -[96/807] Compiling C object 'binary_c@exe/src_binary_star_functions_limit_timestep_to_2percent_ang_mom_change.c.o'. -[97/807] Compiling C object 'binary_c@exe/src_binary_star_functions_mix_stars.c.o'. -[98/807] Compiling C object 'binary_c@exe/src_binary_star_functions_non_conservative_angular_momentum_loss.c.o'. -[99/807] Compiling C object 'binary_c@exe/src_binary_star_functions_interpolate_R_to_RL.c.o'. -[100/807] Compiling C object 'binary_c@exe/src_binary_star_functions_non_conservative_gamma.c.o'. -[101/807] Compiling C object 'binary_c@exe/src_binary_star_functions_mass_angmom_and_evolutionary_changes.c.o'. -[102/807] Compiling C object 'binary_c@exe/src_binary_star_functions_orbital_velocity_squared.c.o'. -[103/807] Compiling C object 'binary_c@exe/src_binary_star_functions_radius_stripped.c.o'. -[104/807] Compiling C object 'binary_c@exe/src_binary_star_functions_radius_closest_approach.c.o'. -[105/807] Compiling C object 'binary_c@exe/src_binary_star_functions_rl.c.o'. -[106/807] Compiling C object 'binary_c@exe/src_RLOF_RLOF_critical_q.c.o'. -[107/807] Compiling C object 'binary_c@exe/src_binary_star_functions_prevent_overspin.c.o'. -[108/807] Compiling C object 'binary_c@exe/src_binary_star_functions_save_detached_stellar_types.c.o'. -[109/807] Compiling C object 'binary_c@exe/src_binary_star_functions_rejuvenate_MS_secondary_and_age_primary.c.o'. -[110/807] Compiling C object 'binary_c@exe/src_binary_star_functions_set_effective_radii.c.o'. -[111/807] Compiling C object 'binary_c@exe/src_binary_star_functions_radial_velocity_K.c.o'. -[112/807] Compiling C object 'binary_c@exe/src_binary_star_functions_spiral_in_time.c.o'. -[113/807] Compiling C object 'binary_c@exe/src_binary_star_functions_set_nuclear_timescale_and_slowdown_factor.c.o'. -[114/807] Compiling C object 'binary_c@exe/src_binary_star_functions_set_kelvin_helmholtz_times.c.o'. -[115/807] Compiling C object 'binary_c@exe/src_binary_star_functions_set_wind_accretion_luminosities.c.o'. -[116/807] Compiling C object 'binary_c@exe/src_binary_star_functions_limit_accretion_rates.c.o'. -[117/807] Compiling C object 'binary_c@exe/src_binary_star_functions_stellar_wind_angmom.c.o'. -[118/807] Compiling C object 'binary_c@exe/src_binary_star_functions_set_ndonor_and_naccretor.c.o'. -[119/807] Compiling C object 'binary_c@exe/src_binary_star_functions_show_instant_RLOF_period_or_separation.c.o'. -[120/807] Compiling C object 'binary_c@exe/src_binary_star_functions_test_if_primary_still_fills_roche_lobe.c.o'. -[121/807] Compiling C object 'binary_c@exe/src_binary_star_functions_mix_stars_BSE.c.o'. -[122/807] Compiling C object 'binary_c@exe/src_binary_star_functions_test_for_roche_lobe_overflow.c.o'. -[123/807] Compiling C object 'binary_c@exe/src_binary_star_functions_thermal_limit_for_accretion.c.o'. -[124/807] Compiling C object 'binary_c@exe/src_binary_star_functions_update_MS_lifetimes.c.o'. -[125/807] Compiling C object 'binary_c@exe/src_binary_star_functions_waitfork.c.o'. -[126/807] Compiling C object 'binary_c@exe/src_binary_star_functions_update_masses_angular_momenta_and_structure.c.o'. -[127/807] Compiling C object 'binary_c@exe/src_binary_star_functions_wind_decc_dt.c.o'. -[128/807] Compiling C object 'binary_c@exe/src_binary_star_functions_wind_djorb_dt.c.o'. -[129/807] Compiling C object 'binary_c@exe/src_breakpoints_binary_c_breakpoint.c.o'. -[130/807] Compiling C object 'binary_c@exe/src_binary_star_functions_tides.c.o'. -[131/807] Compiling C object 'binary_c@exe/src_binary_star_functions_white_dwarf_H_accretion_efficiency.c.o'. -[132/807] Compiling C object 'binary_c@exe/src_buffering_binary_c_flush.c.o'. -[133/807] Compiling C object 'binary_c@exe/src_buffering_buffer_dump_to_stderr.c.o'. -[134/807] Compiling C object 'binary_c@exe/src_buffering_buffer_info.c.o'. -[135/807] Compiling C object 'binary_c@exe/src_binary_star_functions_white_dwarf_He_accretion_efficiency.c.o'. -[136/807] Compiling C object 'binary_c@exe/src_buffering_buffer_empty_buffer.c.o'. -[137/807] Compiling C object 'binary_c@exe/src_buffering_clear_error_buffer.c.o'. -[138/807] Compiling C object 'binary_c@exe/src_common_envelope_common_envelope_evolution.c.o'. -[139/807] Compiling C object 'binary_c@exe/src_buffering_binary_c_fail_printf.c.o'. -[140/807] Compiling C object 'binary_c@exe/src_buffering_clear_printf_buffer.c.o'. -[141/807] Compiling C object 'binary_c@exe/src_common_envelope_common_envelope_Nandez2016.c.o'. -[142/807] Compiling C object 'binary_c@exe/src_common_envelope_common_envelope_evolution_BINT.c.o'. -[143/807] Compiling C object 'binary_c@exe/src_common_envelope_common_envelope_lambda.c.o'. -[144/807] Compiling C object 'binary_c@exe/src_common_envelope_common_envelope_polytrope.c.o'. -[145/807] Compiling C object 'binary_c@exe/src_common_envelope_common_envelope_event_handler.c.o'. -[146/807] Compiling C object 'binary_c@exe/src_debug_show_stardata.c.o'. -[147/807] Compiling C object 'binary_c@exe/src_common_envelope_common_envelope_dewi_tauris.c.o'. -[148/807] Compiling C object 'binary_c@exe/src_debug_backtrace.c.o'. -[149/807] Compiling C object 'binary_c@exe/src_debug_diff_stardata.c.o'. -[150/807] Compiling C object 'binary_c@exe/src_disc_cbdisc_eccentricity_pumping_rate.c.o'. -[151/807] Compiling C object 'binary_c@exe/src_disc_disc_F_bisector.c.o'. -[152/807] Compiling C object 'binary_c@exe/src_disc_disc_J_bisector.c.o'. -[153/807] Compiling C object 'binary_c@exe/src_disc_disc_M_bisector.c.o'. -[154/807] Compiling C object 'binary_c@exe/src_buffering_binary_c_buffered_printf.c.o'. -[155/807] Compiling C object 'binary_c@exe/src_disc_disc_apply_derivatives.c.o'. -[156/807] Compiling C object 'binary_c@exe/src_disc_disc_bisection_rooter.c.o'. -[157/807] Compiling C object 'binary_c@exe/src_debug_debug_fprintf.c.o'. -[158/807] Compiling C object 'binary_c@exe/src_disc_disc_Rcross.c.o'. -[159/807] Compiling C object 'binary_c@exe/src_disc_disc_build_disc_zones.c.o'. -[160/807] Compiling C object 'binary_c@exe/src_disc_disc_calc_natural_timescale.c.o'. -[161/807] Compiling C object 'binary_c@exe/src_disc_disc_calculate_derived_variables.c.o'. -[162/807] Compiling C object 'binary_c@exe/src_disc_disc_determine_zone_radii.c.o'. -[163/807] Compiling C object 'binary_c@exe/src_disc_disc_check_power_laws.c.o'. -[164/807] Compiling C object 'binary_c@exe/src_disc_disc_calc_disc_structure.c.o'. -[165/807] Compiling C object 'binary_c@exe/src_disc_disc_check_local_minimum.c.o'. -[166/807] Compiling C object 'binary_c@exe/src_disc_disc_convergence_status.c.o'. -[167/807] Compiling C object 'binary_c@exe/src_disc_disc_derivatives.c.o'. -[168/807] Compiling C object 'binary_c@exe/src_disc_disc_edge_stripping.c.o'. -[169/807] Compiling C object 'binary_c@exe/src_disc_disc_evaporate_cbdiscs.c.o'. -[170/807] Compiling C object 'binary_c@exe/src_disc_disc_edge_loss_angular_momentum_flux.c.o'. -[171/807] Compiling C object 'binary_c@exe/src_disc_disc_failure_mode.c.o'. -[172/807] Compiling C object 'binary_c@exe/src_disc_disc_generic_stripping_timescale.c.o'. -[173/807] Compiling C object 'binary_c@exe/src_common_envelope_common_envelope_wang2016.c.o'. -[174/807] Compiling C object 'binary_c@exe/src_disc_disc_extend_powerlaw_from_reference_point.c.o'. -[175/807] Compiling C object 'binary_c@exe/src_disc_disc_hottest_zone_at_radius.c.o'. -[176/807] Compiling C object 'binary_c@exe/src_disc_disc_free_convergence_parameter_types_and_constraints.c.o'. -[177/807] Compiling C object 'binary_c@exe/src_disc_disc_init_binary_structure.c.o'. -[178/807] Compiling C object 'binary_c@exe/src_disc_disc_evolve_disc_structure.c.o'. -[179/807] Compiling C object 'binary_c@exe/src_disc_disc_initial_radiative_guess.c.o'. -[180/807] Compiling C object 'binary_c@exe/src_disc_disc_initial_structure.c.o'. -[181/807] Compiling C object 'binary_c@exe/src_disc_disc_initialize_every_timestep.c.o'. -[182/807] Compiling C object 'binary_c@exe/src_disc_disc_initialize_disc.c.o'. -[183/807] Compiling C object 'binary_c@exe/src_disc_disc_inner_edge_accretion_f.c.o'. -[184/807] Compiling C object 'binary_c@exe/src_disc_disc_inner_edge_loss_timescale.c.o'. -[185/807] Compiling C object 'binary_c@exe/src_disc_disc_inner_edge_mass_loss.c.o'. -[186/807] Compiling C object 'binary_c@exe/src_disc_disc_integrals.c.o'. -[187/807] Compiling C object 'binary_c@exe/src_disc_disc_logging.c.o'. -[188/807] Compiling C object 'binary_c@exe/src_disc_disc_make_derived_power_laws.c.o'. -[189/807] Compiling C object 'binary_c@exe/src_disc_disc_mass_changes.c.o'. -[190/807] Compiling C object 'binary_c@exe/src_disc_disc_mem_cleanup.c.o'. -[191/807] Compiling C object 'binary_c@exe/src_disc_disc_monotonic_check.c.o'. -[192/807] Compiling C object 'binary_c@exe/src_disc_disc_natural_timescales.c.o'. -[193/807] Compiling C object 'binary_c@exe/src_disc_disc_nearest_zone_n.c.o'. -[194/807] Compiling C object 'binary_c@exe/src_disc_disc_new_zone_list.c.o'. -[195/807] Compiling C object 'binary_c@exe/src_disc_disc_new_zone_radii.c.o'. -[196/807] Compiling C object 'binary_c@exe/src_disc_disc_nsector.c.o'. -[197/807] Compiling C object 'binary_c@exe/src_disc_disc_numerical.c.o'. -[198/807] Compiling C object 'binary_c@exe/src_disc_disc_outer_edge_loss_timescale.c.o'. -[199/807] Compiling C object 'binary_c@exe/src_disc_disc_parameter_space.c.o'. -[200/807] Compiling C object 'binary_c@exe/src_disc_disc_outer_edge_mass_loss.c.o'. -[201/807] Compiling C object 'binary_c@exe/src_disc_disc_photoevaporation.c.o'. -[202/807] Compiling C object 'binary_c@exe/src_disc_disc_power_laws.c.o'. -[203/807] Compiling C object 'binary_c@exe/src_disc_disc_quadsector.c.o'. -[204/807] Compiling C object 'binary_c@exe/src_disc_disc_rezone.c.o'. -[205/807] Compiling C object 'binary_c@exe/src_disc_disc_set_disc_initial_guess.c.o'. -[206/807] Compiling C object 'binary_c@exe/src_disc_disc_set_disc_initial_guesses.c.o'. -[207/807] Compiling C object 'binary_c@exe/src_disc_disc_set_disc_timestep.c.o'. -[208/807] Compiling C object 'binary_c@exe/src_disc_disc_set_monte_carlo_guess.c.o'. -[209/807] Compiling C object 'binary_c@exe/src_disc_disc_set_temperature_power_laws.c.o'. -[210/807] Compiling C object 'binary_c@exe/src_disc_disc_setup_zones.c.o'. -[211/807] Compiling C object 'binary_c@exe/src_disc_disc_setup_convergence_parameter_types_and_constraints.c.o'. -[212/807] Compiling C object 'binary_c@exe/src_disc_disc_show_disc.c.o'. -[213/807] Compiling C object 'binary_c@exe/src_disc_disc_show_thermal_zones.c.o'. -[214/807] Compiling C object 'binary_c@exe/src_disc_disc_status.c.o'. -[215/807] Compiling C object 'binary_c@exe/src_disc_disc_stellar_wind_to_cbdisc.c.o'. -[216/807] Compiling C object 'binary_c@exe/src_disc_disc_structure_functions.c.o'. -[217/807] Compiling C object 'binary_c@exe/src_disc_disc_testing.c.o'. -[218/807] Compiling C object 'binary_c@exe/src_disc_disc_test_power_law_API.c.o'. -[219/807] Compiling C object 'binary_c@exe/src_disc_disc_trisector.c.o'. -[220/807] Compiling C object 'binary_c@exe/src_disc_outer_disc.c.o'. -[221/807] Compiling C object 'binary_c@exe/src_disc_disc_zone_n.c.o'. -[222/807] Compiling C object 'binary_c@exe/src_disc_disc_viscous_mass.c.o'. -[223/807] Compiling C object 'binary_c@exe/src_disc_disc_zone_crossing_radii.c.o'. -[224/807] Compiling C object 'binary_c@exe/src_disc_remove_discs.c.o'. -[225/807] Compiling C object 'binary_c@exe/src_disc_remove_disc.c.o'. -[226/807] Compiling C object 'binary_c@exe/src_equation_of_state_equation_of_state.c.o'. -[227/807] Compiling C object 'binary_c@exe/src_equation_of_state_equation_of_state_paczynski.c.o'. -[228/807] Compiling C object 'binary_c@exe/src_events_erase_event.c.o'. -[229/807] Compiling C object 'binary_c@exe/src_events_catch_events.c.o'. -[230/807] Compiling C object 'binary_c@exe/src_events_erase_events.c.o'. -[231/807] Compiling C object 'binary_c@exe/src_events_erase_events_of_type.c.o'. -[232/807] Compiling C object 'binary_c@exe/src_debug_backtrace-symbols.c.o'. -[233/807] Compiling C object 'binary_c@exe/src_events_events_pending.c.o'. -[234/807] Compiling C object 'binary_c@exe/src_events_events_pending_of_type.c.o'. -[235/807] Compiling C object 'binary_c@exe/src_events_shift_event_stack.c.o'. -[236/807] Compiling C object 'binary_c@exe/src_events_trigger_event.c.o'. -[237/807] Compiling C object 'binary_c@exe/src_events_event_stack_string.c.o'. -[238/807] Compiling C object 'binary_c@exe/src_events_new_event.c.o'. -[239/807] Compiling C object 'binary_c@exe/src_evolution_binary_star_evolution.c.o'. -[240/807] Compiling C object 'binary_c@exe/src_evolution_can_reject.c.o'. -[241/807] Compiling C object 'binary_c@exe/src_evolution_check_for_time_exhaustion.c.o'. -[242/807] Compiling C object 'binary_c@exe/src_evolution_end_of_evolution.c.o'. -[243/807] Compiling C object 'binary_c@exe/src_evolution_check_reject_flags.c.o'. -[244/807] Compiling C object 'binary_c@exe/src_evolution_evolution_cleanup.c.o'. -[245/807] Compiling C object 'binary_c@exe/src_evolution_evolution_forward_Euler.c.o'. -[246/807] Compiling C object 'binary_c@exe/src_evolution_evolution_loop_top.c.o'. -[247/807] Compiling C object 'binary_c@exe/src_evolution_evolution_nanchecks.c.o'. -[248/807] Compiling C object 'binary_c@exe/src_evolution_evolution_nucsyn.c.o'. -[249/807] Compiling C object 'binary_c@exe/src_evolution_evolution_rejected.c.o'. -[250/807] Compiling C object 'binary_c@exe/src_evolution_evolution_rejection_tests.c.o'. -[251/807] Compiling C object 'binary_c@exe/src_evolution_evolution_restore_from_previous.c.o'. -[252/807] Compiling C object 'binary_c@exe/src_evolution_evolution_restore_and_reduce_timestep.c.o'. -[253/807] Compiling C object 'binary_c@exe/src_evolution_evolution_success.c.o'. -[254/807] Compiling C object 'binary_c@exe/src_evolution_evolution.c.o'. -[255/807] Compiling C object 'binary_c@exe/src_evolution_evolution_save_to_previous.c.o'. -[256/807] Compiling C object 'binary_c@exe/src_evolution_evolution_time_explicit.c.o'. -[257/807] Compiling C object 'binary_c@exe/src_evolution_evolve_RLOFing_system.c.o'. -[258/807] Compiling C object 'binary_c@exe/src_evolution_evolve_detached_system.c.o'. -[259/807] Compiling C object 'binary_c@exe/src_evolution_evolution_time_zero_setup.c.o'. -[260/807] Compiling C object 'binary_c@exe/src_evolution_evolve_system_binary_c.c.o'. -[261/807] Compiling C object 'binary_c@exe/src_evolution_evolution_split.c.o'. -[262/807] Compiling C object 'binary_c@exe/src_evolution_free_difflogstack.c.o'. -[263/807] Compiling C object 'binary_c@exe/src_evolution_init_star.c.o'. -[264/807] Compiling C object 'binary_c@exe/src_evolution_initialize_detached_system_every_timestep.c.o'. -[265/807] Compiling C object 'binary_c@exe/src_evolution_init_common.c.o'. -[266/807] Compiling C object 'binary_c@exe/src_evolution_init_model.c.o'. -[267/807] Compiling C object 'binary_c@exe/src_evolution_initialize_RLOFing_system_every_timestep.c.o'. -[268/807] Compiling C object 'binary_c@exe/src_evolution_evolve_system.c.o'. -[269/807] Compiling C object 'binary_c@exe/src_evolution_initialize_generic_system_every_timestep.c.o'. -[270/807] Compiling C object 'binary_c@exe/src_evolution_loop_check.c.o'. -[271/807] Compiling C object 'binary_c@exe/src_evolution_post_evolution.c.o'. -[272/807] Compiling C object 'binary_c@exe/src_evolution_loop_evolution.c.o'. -[273/807] Compiling C object 'binary_c@exe/src_evolution_pre_evolution.c.o'. -[274/807] Compiling C object 'binary_c@exe/src_evolution_start_RLOF.c.o'. -[275/807] Compiling C object 'binary_c@exe/src_evolution_start_of_evolution.c.o'. -[276/807] Compiling C object 'binary_c@exe/src_evolution_system_is_observationally_single.c.o'. -[277/807] Compiling C object 'binary_c@exe/src_evolution_to_loop_or_not_to_loop.c.o'. -[278/807] Compiling C object 'binary_c@exe/src_evolution_set_next_timestep.c.o'. -[279/807] Compiling C object 'binary_c@exe/src_evolution_terminate_evolution.c.o'. -[280/807] Compiling C object 'binary_c@exe/src_evolution_update_phase_start_times.c.o'. -[281/807] Compiling C object 'binary_c@exe/src_evolution_update_the_time.c.o'. -[282/807] Compiling C object 'binary_c@exe/src_evolution_zero_derivatives.c.o'. -[283/807] Compiling C object 'binary_c@exe/src_evolution_zero_stellar_derivatives.c.o'. -[284/807] Compiling C object 'binary_c@exe/src_evolution_initialize_parameters.c.o'. -[285/807] Compiling C object 'binary_c@exe/src_file_binary_c_fflush.c.o'. -[286/807] Compiling C object 'binary_c@exe/src_file_binary_c_filter_format.c.o'. -[287/807] Compiling C object 'binary_c@exe/src_file_binary_c_filter_vprintf.c.o'. -[288/807] Compiling C object 'binary_c@exe/src_file_binary_c_fclose.c.o'. -[289/807] Compiling C object 'binary_c@exe/src_evolution_zero_stellar_mass_and_angmom_derivatives.c.o'. -[290/807] Compiling C object 'binary_c@exe/src_file_binary_c_filter_fprintf.c.o'. -[291/807] Compiling C object 'binary_c@exe/src_file_binary_c_fprintf.c.o'. -[292/807] Compiling C object 'binary_c@exe/src_file_binary_c_vprintf.c.o'. -[293/807] Compiling C object 'binary_c@exe/src_galactic_apparent_luminosity.c.o'. -[294/807] Compiling C object 'binary_c@exe/src_evolution_stellar_evolution.c.o'. -[295/807] Compiling C object 'binary_c@exe/src_file_binary_c_fopen.c.o'. -[296/807] Compiling C object 'binary_c@exe/src_galactic_apparent_magntiude.c.o'. -[297/807] Compiling C object 'binary_c@exe/src_file_file_linecount.c.o'. -[298/807] Compiling C object 'binary_c@exe/src_galactic_bolometric_magnitude.c.o'. -[299/807] Compiling C object 'binary_c@exe/src_hoover_and_sms.c.o'. -[300/807] Compiling C object 'binary_c@exe/src_evolution_evolution_difflog.c.o'. -[301/807] Compiling C object 'binary_c@exe/src_file_file_splitline.c.o'. -[302/807] Compiling C object 'binary_c@exe/src_galactic_monte_carlo_coordinates.c.o'. -[303/807] Compiling C object 'binary_c@exe/src_galactic_extinction.c.o'. -[304/807] Compiling C object 'binary_c@exe/src_librinterpolate_rinterpolate_build_flags.c.o'. -[305/807] Compiling C object 'binary_c@exe/src_common_envelope_common_envelope_evolution_BSE.c.o'. -[306/807] Compiling C object 'binary_c@exe/src_librinterpolate_rinterpolate.c.o'. -[307/807] Compiling C object 'binary_c@exe/src_librinterpolate_rinterpolate_add_new_table.c.o'. -[308/807] Compiling C object 'binary_c@exe/src_librinterpolate_rinterpolate_alloc_cacheline.c.o'. -[309/807] Compiling C object 'binary_c@exe/src_librinterpolate_rinterpolate_alloc_dataspace.c.o'. -[310/807] Compiling C object 'binary_c@exe/src_librinterpolate_rinterpolate_alloc_hypertable.c.o'. -[311/807] Compiling C object 'binary_c@exe/src_librinterpolate_rinterpolate_alloc_varcount.c.o'. -[312/807] Compiling C object 'binary_c@exe/src_librinterpolate_rinterpolate_error.c.o'. -[313/807] Compiling C object 'binary_c@exe/src_librinterpolate_rinterpolate_check_cache.c.o'. -[314/807] Compiling C object 'binary_c@exe/src_libmemoize_memoize.c.o'. -[315/807] Compiling C object 'binary_c@exe/src_logging_detail_log.c.o'. -[316/807] Compiling C object 'binary_c@exe/src_librinterpolate_rinterpolate_construct_hypercube.c.o'. -[317/807] Compiling C object 'binary_c@exe/src_logging_close_log_files.c.o'. -[318/807] Compiling C object 'binary_c@exe/src_librinterpolate_rinterpolate_free_data.c.o'. -[319/807] Compiling C object 'binary_c@exe/src_librinterpolate_rinterpolate_id_table.c.o'. -[320/807] Compiling C object 'binary_c@exe/src_logging_append_logstring.c.o'. -[321/807] Compiling C object 'binary_c@exe/src_logging_detailed_log.c.o'. -[322/807] Compiling C object 'binary_c@exe/src_logging_gaia_log.c.o'. -[323/807] Compiling C object 'binary_c@exe/src_librinterpolate_rinterpolate_free_hypertable.c.o'. -[324/807] Compiling C object 'binary_c@exe/src_librinterpolate_rinterpolate_make_presearch.c.o'. -[325/807] Compiling C object 'binary_c@exe/src_logging_giant_abundance_log.c.o'. -[326/807] Compiling C object 'binary_c@exe/src_librinterpolate_rinterpolate_interpolate.c.o'. -[327/807] Compiling C object 'binary_c@exe/src_logging_log_barium_stars.c.o'. -[328/807] Compiling C object 'binary_c@exe/src_librinterpolate_rinterpolate_make_steps.c.o'. -[329/807] Compiling C object 'binary_c@exe/src_librinterpolate_rinterpolate_resize_cache.c.o'. -[330/807] Compiling C object 'binary_c@exe/src_librinterpolate_rinterpolate_search_table.c.o'. -[331/807] Compiling C object 'binary_c@exe/src_logging_dump_stardata.c.o'. -[332/807] Compiling C object 'binary_c@exe/src_logging_log_hr.c.o'. -[333/807] Compiling C object 'binary_c@exe/src_logging_log_r_star.c.o'. -[334/807] Compiling C object 'binary_c@exe/src_exit_binaryc.c.o'. -[335/807] Compiling C object 'binary_c@exe/src_librinterpolate_rinterpolate_store_cache.c.o'. -[336/807] Compiling C object 'binary_c@exe/src_logging_log_jje.c.o'. -[337/807] Compiling C object 'binary_c@exe/src_logging_log_jl.c.o'. -[338/807] Compiling C object 'binary_c@exe/src_logging_log_rotation_checks.c.o'. -[339/807] Compiling C object 'binary_c@exe/src_logging_log_sn.c.o'. -[340/807] Compiling C object 'binary_c@exe/src_logging_log_supernova_sc.c.o'. -[341/807] Compiling C object 'binary_c@exe/src_logging_load_stardata.c.o'. -[342/807] Compiling C object 'binary_c@exe/src_logging_log_supernova.c.o'. -[343/807] Compiling C object 'binary_c@exe/src_logging_log_xray_binary.c.o'. -[344/807] Compiling C object 'binary_c@exe/src_logging_log_every_timestep.c.o'. -[345/807] Compiling C object 'binary_c@exe/src_logging_logwrap.c.o'. -[346/807] Compiling C object 'binary_c@exe/src_logging_output_string_to_memmap.c.o'. -[347/807] Compiling C object 'binary_c@exe/src_logging_output_to_detailed_logfile.c.o'. -[348/807] Compiling C object 'binary_c@exe/src_logging_output_string_to_log.c.o'. -[349/807] Compiling C object 'binary_c@exe/src_logging_sdb_check.c.o'. -[350/807] Compiling C object 'binary_c@exe/src_logging_stellar_type_log.c.o'. -[351/807] Compiling C object 'binary_c@exe/src_logging_unit_tests.c.o'. -[352/807] Compiling C object 'binary_c@exe/src_logging_open_log_files.c.o'. -[353/807] Compiling C object 'binary_c@exe/src_logging_wtts_log.c.o'. -[354/807] Compiling C object 'binary_c@exe/src_logging_set_logstring.c.o'. -[355/807] Compiling C object 'binary_c@exe/src_maths_SolveCubic2.c.o'. -[356/807] Compiling C object 'binary_c@exe/src_maths_bin_data.c.o'. -[357/807] Compiling C object 'binary_c@exe/src_logging_output_to_logfile.c.o'. -[358/807] Compiling C object 'binary_c@exe/src_maths_check_nans_are_signalled.c.o'. -[359/807] Compiling C object 'binary_c@exe/src_maths_fastpow.c.o'. -[360/807] Compiling C object 'binary_c@exe/src_maths_GSL_integrator.c.o'. -[361/807] Compiling C object 'binary_c@exe/src_maths_brent_GSL_valist.c.o'. -[362/807] Compiling C object 'binary_c@exe/src_maths_fermi.c.o'. -[363/807] Compiling C object 'binary_c@exe/src_maths_interpolate_cubic_spline.c.o'. -[364/807] Compiling C object 'binary_c@exe/src_maths_apply_derivative.c.o'. -[365/807] Compiling C object 'binary_c@exe/src_main2.c.o'. -[366/807] Compiling C object 'binary_c@exe/src_maths_binary_c_drandr.c.o'. -[367/807] Compiling C object 'binary_c@exe/src_logging_show_derivatives.c.o'. -[368/807] Compiling C object 'binary_c@exe/src_maths_mt19937-64.c.o'. -[369/807] Compiling C object 'binary_c@exe/src_maths_nancheck.c.o'. -[370/807] Compiling C object 'binary_c@exe/src_maths_max_from_list.c.o'. -[371/807] Compiling C object 'binary_c@exe/src_maths_invert3.c.o'. -[372/807] Compiling C object 'binary_c@exe/src_maths_kaps_rentrop_LU_decomp.c.o'. -[373/807] Compiling C object 'binary_c@exe/src_maths_kaps_rentrop_LU_backsub.c.o'. -[374/807] Compiling C object 'binary_c@exe/src_maths_generic_minimizer.c.o'. -[375/807] Compiling C object 'binary_c@exe/src_maths_polyalgorithm.c.o'. -[376/807] Compiling C object 'binary_c@exe/src_maths_setup_GSL_handlers.c.o'. -[377/807] Compiling C object 'binary_c@exe/src_maths_pdist.c.o'. -[378/807] Compiling C object 'binary_c@exe/src_maths_random_number.c.o'. -[379/807] Compiling C object 'binary_c@exe/src_maths_timestamp.c.o'. -[380/807] Compiling C object 'binary_c@exe/src_maths_trigonometry.c.o'. -[381/807] Compiling C object 'binary_c@exe/src_maths_test_integrators.c.o'. -[382/807] Compiling C object 'binary_c@exe/src_memory_FastMemcpy.c.o'. -[383/807] Compiling C object 'binary_c@exe/src_memory_FastMemcpy_Avx.c.o'. -[384/807] Compiling C object 'binary_c@exe/src_memory_aligned_memcpy.c.o'. -[385/807] Compiling C object 'binary_c@exe/src_memory_aligned_memcpy_fail.c.o'. -[386/807] Compiling C object 'binary_c@exe/src_maths_nhooke.c.o'. -[387/807] Compiling C object 'binary_c@exe/src_memory_apex_memmove.c.o'. -[388/807] Compiling C object 'binary_c@exe/src_memory_build_tmpstore_contents.c.o'. -[389/807] Compiling C object 'binary_c@exe/src_maths_kaps_rentrop_GSL.c.o'. -[390/807] Compiling C object 'binary_c@exe/src_memory_check_aligned_memcpy.c.o'. -[391/807] Compiling C object 'binary_c@exe/src_memory_codestats_memcpy.c.o'. -[392/807] Compiling C object 'binary_c@exe/src_memory_build_store_contents.c.o'. -[393/807] Compiling C object 'binary_c@exe/src_memory_free_aux_memory.c.o'. -[394/807] Compiling C object 'binary_c@exe/src_memory_copy_stardata.c.o'. -[395/807] Compiling C object 'binary_c@exe/src_memory_free_memory.c.o'. -[396/807] Compiling C object 'binary_c@exe/src_memory_diff_struct_pc.c.o'. -[397/807] Compiling C object 'binary_c@exe/src_memory_free_previous_stardatas.c.o'. -[398/807] Compiling C object 'binary_c@exe/src_memory_free_stardata_stack.c.o'. -[399/807] Compiling C object 'binary_c@exe/src_memory_initialize_pointers.c.o'. -[400/807] Compiling C object 'binary_c@exe/src_novae_dwarf_nova_critical_mass_transfer_rate.c.o'. -[401/807] Compiling C object 'binary_c@exe/src_memory_free_store_contents.c.o'. -[402/807] Compiling C object 'binary_c@exe/src_memory_strided_memcpy.c.o'. -[403/807] Compiling C object 'binary_c@exe/src_memory_main_allocations.c.o'. -[404/807] Compiling C object 'binary_c@exe/src_novae_nova_erase_event_handler.c.o'. -[405/807] Compiling C object 'binary_c@exe/src_novae_nova_explosion_layer_mass.c.o'. -[406/807] Compiling C object 'binary_c@exe/src_memory_free_tmpstore.c.o'. -[407/807] Compiling C object 'binary_c@exe/src_novae_nova_angular_momentum_changes.c.o'. -[408/807] Compiling C object 'binary_c@exe/src_maths_generic_bisect.c.o'. -[409/807] Compiling C object 'binary_c@exe/src_novae_nova_event_handler.c.o'. -[410/807] Compiling C object 'binary_c@exe/src_nucsyn_nucsyn_CN_timescale.c.o'. -[411/807] Compiling C object 'binary_c@exe/src_novae_nova_recurrence_time.c.o'. -[412/807] Compiling C object 'binary_c@exe/src_novae_nova_retention_fraction.c.o'. -[413/807] Compiling C object 'binary_c@exe/src_nucsyn_nucsyn_TZ_abundances.c.o'. -[414/807] Compiling C object 'binary_c@exe/src_nucsyn_nucsyn_WR.c.o'. -[415/807] Compiling C object 'binary_c@exe/src_nucsyn_nucsyn_anal_MgAl_burn.c.o'. -[416/807] Compiling C object 'binary_c@exe/src_nucsyn_nucsyn_add_mass_to_surface.c.o'. -[417/807] Compiling C object 'binary_c@exe/src_nucsyn_nucsyn_anal_CNO_burn.c.o'. -[418/807] Compiling C object 'binary_c@exe/src_nucsyn_nucsyn_anal_NeNa_burn.c.o'. -[419/807] Compiling C object 'binary_c@exe/src_main.c.o'. -[420/807] Compiling C object 'binary_c@exe/src_nucsyn_nucsyn_WR_type.c.o'. -[421/807] Compiling C object 'binary_c@exe/src_nucsyn_nucsyn_anal_NeNa_burn1.c.o'. -[422/807] Compiling C object 'binary_c@exe/src_nucsyn_nucsyn_angelou_lithium.c.o'. -[423/807] Compiling C object 'binary_c@exe/src_nucsyn_nucsyn_Xfuncs.c.o'. -[424/807] Compiling C object 'binary_c@exe/src_nucsyn_nucsyn_burn.c.o'. -[425/807] Compiling C object 'binary_c@exe/src_nucsyn_nucsyn_burn_NeNa.c.o'. -[426/807] Compiling C object 'binary_c@exe/src_nucsyn_nucsyn_burn_hotCNO.c.o'. -[427/807] Compiling C object 'binary_c@exe/src_nucsyn_nucsyn_burn_NeNaMgAlnoleak.c.o'. -[428/807] Compiling C object 'binary_c@exe/src_nucsyn_nucsyn_burn_ppfast.c.o'. -[429/807] Compiling C object 'binary_c@exe/src_nucsyn_nucsyn_binary_yield.c.o'. -[430/807] Compiling C object 'binary_c@exe/src_nucsyn_nucsyn_cemp_log.c.o'. -[431/807] Compiling C object 'binary_c@exe/src_nucsyn_nucsyn_build_store_contents.c.o'. -[432/807] Compiling C object 'binary_c@exe/src_nucsyn_nucsyn_WR_table.c.o'. -[433/807] Compiling C object 'binary_c@exe/src_nucsyn_nucsyn_burning_cycles.c.o'. -[434/807] Compiling C object 'binary_c@exe/src_nucsyn_nucsyn_burn_pp.c.o'. -[435/807] Compiling C object 'binary_c@exe/src_nucsyn_nucsyn_check_for_second_dredge_up.c.o'. -[436/807] Compiling C object 'binary_c@exe/src_nucsyn_nucsyn_check_abundance_array.c.o'. -[437/807] Compiling C object 'binary_c@exe/src_nucsyn_nucsyn_calc_yields.c.o'. -[438/807] Compiling C object 'binary_c@exe/src_nucsyn_nucsyn_choose_wind_mixing_factor.c.o'. -[439/807] Compiling C object 'binary_c@exe/src_nucsyn_nucsyn_burn_NeNaMgAl.c.o'. -[440/807] Compiling C object 'binary_c@exe/src_nucsyn_nucsyn_burn_coldCNO.c.o'. -[441/807] Compiling C object 'binary_c@exe/src_nucsyn_nucsyn_element_to_atomic_number.c.o'. -[442/807] Compiling C object 'binary_c@exe/src_nucsyn_nucsyn_elemental_abundance.c.o'. -[443/807] Compiling C object 'binary_c@exe/src_nucsyn_nucsyn_ensemble_log.c.o'. -[444/807] Compiling C object 'binary_c@exe/src_nucsyn_nucsyn_elemental_abundance_by_number.c.o'. -[445/807] Compiling C object 'binary_c@exe/src_nucsyn_nucsyn_free_icache.c.o'. -[446/807] Compiling C object 'binary_c@exe/src_nucsyn_nucsyn_free_store_contents.c.o'. -[447/807] Compiling C object 'binary_c@exe/src_nucsyn_nucsyn_init_first_pulse.c.o'. -[448/807] Compiling C object 'binary_c@exe/src_nucsyn_nucsyn_effective_molecular_weight.c.o'. -[449/807] Compiling C object 'binary_c@exe/src_maths_nintlib.c.o'. -[450/807] Compiling C object 'binary_c@exe/src_nucsyn_nucsyn_dilute_shell_to.c.o'. -[451/807] Compiling C object 'binary_c@exe/src_nucsyn_nucsyn_long_log.c.o'. -[452/807] Compiling C object 'binary_c@exe/src_nucsyn_nucsyn_envelope_mass.c.o'. -[453/807] Compiling C object 'binary_c@exe/src_nucsyn_nucsyn_log.c.o'. -[454/807] Compiling C object 'binary_c@exe/src_nucsyn_nucsyn_free_electron_density.c.o'. -[455/807] Compiling C object 'binary_c@exe/src_nucsyn_nucsyn_huge_pulse.c.o'. -[456/807] Compiling C object 'binary_c@exe/src_nucsyn_nucsyn_elemental_square_bracket.c.o'. -[457/807] Compiling C object 'binary_c@exe/src_nucsyn_nucsyn_hbbtmax.c.o'. -[458/807] Compiling C object 'binary_c@exe/src_nucsyn_nucsyn_dilute_shell.c.o'. -[459/807] Compiling C object 'binary_c@exe/src_nucsyn_nucsyn_lowz_yields.c.o'. -[460/807] Compiling C object 'binary_c@exe/src_nucsyn_nucsyn_make_icache.c.o'. -[461/807] Compiling C object 'binary_c@exe/src_nucsyn_nucsyn_hbb.c.o'. -[462/807] Compiling C object 'binary_c@exe/src_nucsyn_nucsyn_lamaxf.c.o'. -[463/807] Compiling C object 'binary_c@exe/src_nucsyn_nucsyn_network_test.c.o'. -[464/807] Compiling C object 'binary_c@exe/src_nucsyn_nucsyn_network_burn.c.o'. -[465/807] Compiling C object 'binary_c@exe/src_nucsyn_nucsyn_print_sigmav_table.c.o'. -[466/807] Compiling C object 'binary_c@exe/src_nucsyn_nucsyn_j_log.c.o'. -[467/807] Compiling C object 'binary_c@exe/src_nucsyn_nucsyn_lambda_rs.c.o'. -[468/807] Compiling C object 'binary_c@exe/src_nucsyn_nucsyn_lithium.c.o'. -[469/807] Compiling C object 'binary_c@exe/src_nucsyn_nucsyn_radioactive_decay.c.o'. -[470/807] Compiling C object 'binary_c@exe/src_nucsyn_nucsyn_merge_NSs.c.o'. -[471/807] Compiling C object 'binary_c@exe/src_nucsyn_nucsyn_mix_shells.c.o'. -[472/807] Compiling C object 'binary_c@exe/src_nucsyn_nucsyn_mole_fraction.c.o'. -[473/807] Compiling C object 'binary_c@exe/src_nucsyn_nucsyn_mix_accretion_layer_and_envelope.c.o'. -[474/807] Compiling C object 'binary_c@exe/src_nucsyn_nucsyn_molecular_weight.c.o'. -[475/807] Compiling C object 'binary_c@exe/src_nucsyn_nucsyn_recombination_energy_per_gram.c.o'. -[476/807] Compiling C object 'binary_c@exe/src_nucsyn_nucsyn_remove_dm_from_surface.c.o'. -[477/807] Compiling C object 'binary_c@exe/src_nucsyn_nucsyn_main_sequence_convective_envelope_size.c.o'. -[478/807] Compiling C object 'binary_c@exe/src_nucsyn_nucsyn_remove_mass_from_surface.c.o'. -[479/807] Compiling C object 'binary_c@exe/src_nucsyn_nucsyn_observed_surface_abundances.c.o'. -[480/807] Compiling C object 'binary_c@exe/src_nucsyn_nucsyn_planetary_nebulae.c.o'. -[481/807] Compiling C object 'binary_c@exe/src_nucsyn_nucsyn_r_process.c.o'. -[482/807] Compiling C object 'binary_c@exe/src_nucsyn_nucsyn_set_hbb_conditions.c.o'. -[483/807] Compiling C object 'binary_c@exe/src_nucsyn_nucsyn_reaclib.c.o'. -[484/807] Compiling C object 'binary_c@exe/src_nucsyn_nucsyn_r_process_Simmerer2004.c.o'. -[485/807] Compiling C object 'binary_c@exe/src_nucsyn_nucsyn_set_sigmav_from_table.c.o'. -[486/807] Compiling C object 'binary_c@exe/src_nucsyn_nucsyn_r_process_Arlandini1999.c.o'. -[487/807] Compiling C object 'binary_c@exe/src_nucsyn_nucsyn_reset_reaction_rates.c.o'. -[488/807] Compiling C object 'binary_c@exe/src_nucsyn_nucsyn_renormalize_abundance.c.o'. -[489/807] Compiling C object 'binary_c@exe/src_nucsyn_nucsyn_set_WD_abunds.c.o'. -[490/807] Compiling C object 'binary_c@exe/src_nucsyn_nucsyn_set_1st_dup_abunds.c.o'. -[491/807] Compiling C object 'binary_c@exe/src_nucsyn_nucsyn_set_2nd_dup_abunds.c.o'. -[492/807] Compiling C object 'binary_c@exe/src_nucsyn_nucsyn_set_abunds_array.c.o'. -[493/807] Compiling C object 'binary_c@exe/src_nucsyn_nucsyn_short_log.c.o'. -[494/807] Compiling C object 'binary_c@exe/src_nucsyn_nucsyn_set_nova_abunds.c.o'. -[495/807] Compiling C object 'binary_c@exe/src_nucsyn_nucsyn_sn_Seitenzahl2013_automatic.c.o'. -[496/807] Compiling C object 'binary_c@exe/src_nucsyn_nucsyn_set_remnant_abunds.c.o'. -[497/807] Compiling C object 'binary_c@exe/src_nucsyn_nucsyn_sn_core_collapse.c.o'. -[498/807] Compiling C object 'binary_c@exe/src_nucsyn_nucsyn_sn_source.c.o'. -[499/807] Compiling C object 'binary_c@exe/src_nucsyn_nucsyn_sn_Seitenzahl2013.c.o'. -[500/807] Compiling C object 'binary_c@exe/src_nucsyn_nucsyn_square_bracket.c.o'. -[501/807] Compiling C object 'binary_c@exe/src_nucsyn_nucsyn_set_tpagb_free_parameters.c.o'. -[502/807] Compiling C object 'binary_c@exe/src_nucsyn_nucsyn_sn_yield.c.o'. -[503/807] Compiling C object 'binary_c@exe/src_nucsyn_nucsyn_square_multibracket.c.o'. -[504/807] Compiling C object 'binary_c@exe/src_nucsyn_nucsyn_sn_electron_capture.c.o'. -[505/807] Compiling C object 'binary_c@exe/src_nucsyn_nucsyn_sn_livne_arnett_1995.c.o'. -[506/807] Compiling C object 'binary_c@exe/src_nucsyn_nucsyn_strip_and_mix.c.o'. -[507/807] Compiling C object 'binary_c@exe/src_nucsyn_nucsyn_set_sigmav.c.o'. -[508/807] Compiling C object 'binary_c@exe/src_nucsyn_nucsyn_sn_woosley_weaver_1995.c.o'. -[509/807] Compiling C object 'binary_c@exe/src_nucsyn_nucsyn_thermohaline_mix_star.c.o'. -[510/807] Compiling C object 'binary_c@exe/src_nucsyn_nucsyn_sn_woosley_taam_weaver_1986.c.o'. -[511/807] Compiling C object 'binary_c@exe/src_nucsyn_nucsyn_thermohaline_unstable.c.o'. -[512/807] Compiling C object 'binary_c@exe/src_nucsyn_nucsyn_sn_iwamoto_1999_DD2.c.o'. -[513/807] Compiling C object 'binary_c@exe/src_nucsyn_nucsyn_totalX.c.o'. -[514/807] Compiling C object 'binary_c@exe/src_opacity_opacity_STARS.c.o'. -[515/807] Compiling C object 'binary_c@exe/src_opacity_opacity.c.o'. -[516/807] Compiling C object 'binary_c@exe/src_nucsyn_nucsyn_star_by_star.c.o'. -[517/807] Compiling C object 'binary_c@exe/src_API_binary_c_list_args.c.o'. -[518/807] Compiling C object 'binary_c@exe/src_nucsyn_nucsyn_update_abundances.c.o'. -[519/807] Compiling C object 'binary_c@exe/src_opacity_opacity_ferguson_opal.c.o'. -[520/807] Compiling C object 'binary_c@exe/src_opacity_opacity_paczynski.c.o'. -[521/807] Compiling C object 'binary_c@exe/src_nucsyn_nucsyn_s_process.c.o'. -[522/807] Compiling C object 'binary_c@exe/src_nucsyn_nucsyn_thermohaline_mixing_time.c.o'. -[523/807] Compiling C object 'binary_c@exe/src_nucsyn_nucsyn_thermohaline_mix.c.o'. -[524/807] Compiling C object 'binary_c@exe/src_orbit_update_orbital_variables.c.o'. -[525/807] Compiling C object 'binary_c@exe/src_orbit_update_orbital_period_and_angular_frequency.c.o'. -[526/807] Compiling C object 'binary_c@exe/src_nucsyn_nucsyn_third_dredge_up.c.o'. -[527/807] Compiling C object 'binary_c@exe/src_setup_default_stardata.c.o'. -[528/807] Compiling C object 'binary_c@exe/src_reset_timeout.c.o'. -[529/807] Compiling C object 'binary_c@exe/src_nucsyn_nucsyn_tpagb_rhomax.c.o'. -[530/807] Compiling C object 'binary_c@exe/src_setup_new_system.c.o'. -[531/807] Compiling C object 'binary_c@exe/src_setup_batchmode.c.o'. -[532/807] Compiling C object 'binary_c@exe/src_setup_cmd_line_argstring.c.o'. -[533/807] Compiling C object 'binary_c@exe/src_setup_force_flushing.c.o'. -[534/807] Compiling C object 'binary_c@exe/src_nucsyn_nucsyn_set_third_dredgeup_abunds.c.o'. -[535/807] Compiling C object 'binary_c@exe/src_nucsyn_nucsyn_tpagb.c.o'. -[536/807] Compiling C object 'binary_c@exe/src_setup_parse_arguments_from_string.c.o'. -[537/807] Compiling C object 'binary_c@exe/src_nucsyn_nucsyn_wgcoremasslum.c.o'. -[538/807] Compiling C object 'binary_c@exe/src_setup_random_seed.c.o'. -[539/807] Compiling C object 'binary_c@exe/src_setup_set_defaults.c.o'. -[540/807] Compiling C object 'binary_c@exe/src_setup_set_metallicities.c.o'. -[541/807] Compiling C object 'binary_c@exe/src_setup_set_metallicity_parameters.c.o'. -[542/807] Compiling C object 'binary_c@exe/src_setup_set_up_memmap.c.o'. -[543/807] Compiling C object 'binary_c@exe/src_setup_set_up_variables.c.o'. -[544/807] Compiling C object 'binary_c@exe/src_setup_argument_setting_functions.c.o'. -[545/807] Compiling C object 'binary_c@exe/src_setup_set_default_preferences.c.o'. -[546/807] Compiling C object 'binary_c@exe/src_setup_show_cmd_line_args.c.o'. -[547/807] Compiling C object 'binary_c@exe/src_setup_split_commandline_free.c.o'. -[548/807] Compiling C object 'binary_c@exe/src_setup_stardata_status.c.o'. -[549/807] Compiling C object 'binary_c@exe/src_setup_split_commandline.c.o'. -[550/807] Compiling C object 'binary_c@exe/src_signals_catch_timeout.c.o'. -[551/807] Compiling C object 'binary_c@exe/src_signals_catch_signal.c.o'. -[552/807] Compiling C object 'binary_c@exe/src_single_star_functions_Xray_luminosity.c.o'. -[553/807] Compiling C object 'binary_c@exe/src_signals_setup_segfaults.c.o'. -[554/807] Compiling C object 'binary_c@exe/src_signals_tstp_handler.c.o'. -[555/807] Compiling C object 'binary_c@exe/src_single_star_functions_E2.c.o'. -[556/807] Compiling C object 'binary_c@exe/src_single_star_functions_breakup_angular_momentum.c.o'. -[557/807] Compiling C object 'binary_c@exe/src_single_star_functions_core_envelope_coupling.c.o'. -[558/807] Compiling C object 'binary_c@exe/src_single_star_functions_corerd.c.o'. -[559/807] Compiling C object 'binary_c@exe/src_single_star_functions_calc_stellar_wind_mass_loss.c.o'. -[560/807] Compiling C object 'binary_c@exe/src_single_star_functions_calculate_rotation_variables.c.o'. -[561/807] Compiling C object 'binary_c@exe/src_single_star_functions_dynamical_timescale.c.o'. -[562/807] Compiling C object 'binary_c@exe/src_single_star_functions_dynamical_timescale_envelope.c.o'. -[563/807] Compiling C object 'binary_c@exe/src_single_star_functions_kelvin_helmholtz_time.c.o'. -[564/807] Compiling C object 'binary_c@exe/src_single_star_functions_stellar_angular_momentum.c.o'. -[565/807] Compiling C object 'binary_c@exe/src_single_star_functions_magnetic_braking.c.o'. -[566/807] Compiling C object 'binary_c@exe/src_single_star_functions_stellar_density.c.o'. -[567/807] Compiling C object 'binary_c@exe/src_spectra_blackbody.c.o'. -[568/807] Compiling C object 'binary_c@exe/src_single_star_functions_strip_supermassive_star.c.o'. -[569/807] Compiling C object 'binary_c@exe/src_spectra_spectral_type.c.o'. -[570/807] Compiling C object 'binary_c@exe/src_single_star_functions_giant_age.c.o'. -[571/807] Compiling C object 'binary_c@exe/src_stellar_colours_add_magnitudes.c.o'. -[572/807] Compiling C object 'binary_c@exe/src_stellar_colours_eldridge2012_magnitudes.c.o'. -[573/807] Compiling C object 'binary_c@exe/src_stellar_colours_eldridge2015_magnitudes.c.o'. -[574/807] Compiling C object 'binary_c@exe/src_stellar_colours_luminosity_from_magnitude.c.o'. -[575/807] Compiling C object 'binary_c@exe/src_stellar_colours_magnitude_from_luminosity.c.o'. -[576/807] Compiling C object 'binary_c@exe/src_stellar_colours_gaia_magnitudes.c.o'. -[577/807] Compiling C object 'binary_c@exe/src_stellar_colours_stellar_magnitude_tests.c.o'. -[578/807] Compiling C object 'binary_c@exe/src_stellar_colours_stellar_magnitudes.c.o'. -[579/807] Compiling C object 'binary_c@exe/src_stellar_colours_unresolved_stellar_magnitudes.c.o'. -[580/807] Compiling C object 'binary_c@exe/src_stellar_structure_bh_angular_velocity.c.o'. -[581/807] Compiling C object 'binary_c@exe/src_stellar_structure_remnant_radius.c.o'. -[582/807] Compiling C object 'binary_c@exe/src_stellar_colours_binary_magnitudes.c.o'. -[583/807] Compiling C object 'binary_c@exe/src_stellar_structure_stellar_structure.c.o'. -[584/807] Compiling C object 'binary_c@exe/src_stellar_structure_set_star_struct_from_stellar_structure.c.o'. -[585/807] Compiling C object 'binary_c@exe/src_stellar_structure_stellar_structure_BH.c.o'. -[586/807] Compiling C object 'binary_c@exe/src_stellar_structure_convective_envelope_mass_and_radius.c.o'. -[587/807] Compiling C object 'binary_c@exe/src_stellar_structure_stellar_structure_AGB.c.o'. -[588/807] Compiling C object 'binary_c@exe/src_stellar_structure_set_stellar_structure_struct_from_star.c.o'. -[589/807] Compiling C object 'binary_c@exe/src_stellar_structure_stellar_structure_HG.c.o'. -[590/807] Compiling C object 'binary_c@exe/src_stellar_structure_stellar_structure_BSE.c.o'. -[591/807] Compiling C object 'binary_c@exe/src_stellar_structure_stellar_structure_NS.c.o'. -[592/807] Compiling C object 'binary_c@exe/src_stellar_structure_stellar_structure_CHeB.c.o'. -[593/807] Compiling C object 'binary_c@exe/src_stellar_structure_stellar_structure_EAGB.c.o'. -[594/807] Compiling C object 'binary_c@exe/src_stellar_structure_stellar_structure_MS_BSE.c.o'. -[595/807] Compiling C object 'binary_c@exe/src_stellar_structure_stellar_structure_WD.c.o'. -[596/807] Compiling C object 'binary_c@exe/src_stellar_structure_stellar_structure_RG.c.o'. -[597/807] Compiling C object 'binary_c@exe/src_setup_set_metallicity_parameters2.c.o'. -[598/807] Compiling C object 'binary_c@exe/src_stellar_structure_stellar_structure_algorithm.c.o'. -[599/807] Compiling C object 'binary_c@exe/src_stellar_structure_stellar_structure_HeStar.c.o'. -[600/807] Compiling C object 'binary_c@exe/src_stellar_structure_stellar_structure_modified_BSE.c.o'. -[601/807] Compiling C object 'binary_c@exe/src_stellar_structure_stellar_structure_giant_branch_helium_ignition.c.o'. -[602/807] Compiling C object 'binary_c@exe/src_stellar_structure_stellar_structure_longcall.c.o'. -[603/807] Compiling C object 'binary_c@exe/src_stellar_structure_stellar_structure_nucsyn.c.o'. -[604/807] Compiling C object 'binary_c@exe/src_stellar_structure_stellar_structure_make_massless_remnant.c.o'. -[605/807] Compiling C object 'binary_c@exe/src_nucsyn_nucsyn_WR_RS_table_lookup.c.o'. -[606/807] Compiling C object 'binary_c@exe/src_stellar_timescales_stellar_timescales.c.o'. -[607/807] Compiling C object 'binary_c@exe/src_stellar_structure_stellar_structure_small_envelope_perturbations.c.o'. -[608/807] Compiling C object 'binary_c@exe/src_stellar_structure_stellar_structure_remnant_and_perturbations.c.o'. -[609/807] Compiling C object 'binary_c@exe/src_string_binary_c_apsrintf.c.o'. -[610/807] Compiling C object 'binary_c@exe/src_stellar_structure_stellar_structure_small_envelope_miller_bertolami.c.o'. -[611/807] Compiling C object 'binary_c@exe/src_stellar_timescales_stellar_timescales_GB_parameters.c.o'. -[612/807] Compiling C object 'binary_c@exe/src_stellar_structure_stellar_structure_TPAGB.c.o'. -[613/807] Compiling C object 'binary_c@exe/src_stellar_timescales_stellar_timescales_helium_stars.c.o'. -[614/807] Compiling C object 'binary_c@exe/src_stellar_timescales_stellar_timescales_high_mass_GB.c.o'. -[615/807] Compiling C object 'binary_c@exe/src_string_bsd_strlcat.c.o'. -[616/807] Compiling C object 'binary_c@exe/src_stellar_timescales_stellar_timescales_low_mass_GB.c.o'. -[617/807] Compiling C object 'binary_c@exe/src_stellar_timescales_stellar_timescales_hydrogen_stars.c.o'. -[618/807] Compiling C object 'binary_c@exe/src_stellar_timescales_stellar_timescales_low_mass_AGB.c.o'. -[619/807] Compiling C object 'binary_c@exe/src_stellar_timescales_stellar_timescales_massive_AGB.c.o'. -[620/807] Compiling C object 'binary_c@exe/src_string_chomp.c.o'. -[621/807] Compiling C object 'binary_c@exe/src_supernovae_free_supernova.c.o'. -[622/807] Compiling C object 'binary_c@exe/src_string_string_array_to_double_array.c.o'. -[623/807] Compiling C object 'binary_c@exe/src_supernovae_monte_carlo_kick.c.o'. -[624/807] Compiling C object 'binary_c@exe/src_stellar_timescales_stellar_timescales_post_HG.c.o'. -[625/807] Compiling C object 'binary_c@exe/src_supernovae_new_supernova.c.o'. -[626/807] Compiling C object 'binary_c@exe/src_supernovae_set_new_orbit.c.o'. -[627/807] Compiling C object 'binary_c@exe/src_supernovae_ns_bh_mass.c.o'. -[628/807] Compiling C object 'binary_c@exe/src_supernovae_setup_binary_at_kick.c.o'. -[629/807] Compiling C object 'binary_c@exe/src_supernovae_supernova_ejecta_velocity.c.o'. -[630/807] Compiling C object 'binary_c@exe/src_supernovae_supernova_erase_event_handler.c.o'. -[631/807] Compiling C object 'binary_c@exe/src_supernovae_supernova_kick.c.o'. -[632/807] Compiling C object 'binary_c@exe/src_supernovae_supernova_event_handler.c.o'. -[633/807] Compiling C object 'binary_c@exe/src_supernovae_supernova_kinetic_energy.c.o'. -[634/807] Compiling C object 'binary_c@exe/src_supernovae_set_kick_velocity.c.o'. -[635/807] Compiling C object 'binary_c@exe/src_supernovae_supernova.c.o'. -[636/807] Compiling C object 'binary_c@exe/src_supernovae_supernova_luminous_energy.c.o'. -[637/807] Compiling C object 'binary_c@exe/src_supernovae_supernova_momentum.c.o'. -[638/807] Compiling C object 'binary_c@exe/src_tables_make_BSE_tables.c.o'. -[639/807] Compiling C object 'binary_c@exe/src_tables_table_BSE.c.o'. -[640/807] Compiling C object 'binary_c@exe/src_tables_table_Karakas2002_radius.c.o'. -[641/807] Compiling C object 'binary_c@exe/src_tables_table_Karakas2002_lumfunc.c.o'. -[642/807] Compiling C object 'binary_c@exe/src_tables_table_MS_strip.c.o'. -[643/807] Compiling C object 'binary_c@exe/src_tables_table_1DUP.c.o'. -[644/807] Compiling C object 'binary_c@exe/src_tables_table_Karakas_ncal.c.o'. -[645/807] Compiling C object 'binary_c@exe/src_supernovae_tauris_takens_orbit.c.o'. -[646/807] Compiling C object 'binary_c@exe/src_tables_table_TAMS.c.o'. -[647/807] Compiling C object 'binary_c@exe/src_tables_table_comenv_polytropes.c.o'. -[648/807] Compiling C object 'binary_c@exe/src_tables_table_miller_bertolami.c.o'. -[649/807] Compiling C object 'binary_c@exe/src_tables_table_opacity_STARS.c.o'. -[650/807] Compiling C object 'binary_c@exe/src_tables_table_opacity_ferguson_opal.c.o'. -[651/807] Compiling C object 'binary_c@exe/src_tables_table_novae.c.o'. -[652/807] Compiling C object 'binary_c@exe/src_tables_table_opacity_paczynski.c.o'. -[653/807] Compiling C object 'binary_c@exe/src_tables_table_massive_MS_lifetimes.c.o'. -[654/807] Compiling C object 'binary_c@exe/src_tables_table_Eldridge2012_magnitudes.c.o'. -[655/807] Compiling C object 'binary_c@exe/src_tables_table_comenv.c.o'. -[656/807] Compiling C object 'binary_c@exe/src_tables_table_sigmav.c.o'. -[657/807] Compiling C object 'binary_c@exe/src_timers_calc_ticks_timer.c.o'. -[658/807] Compiling C object 'binary_c@exe/src_tables_table_s_process.c.o'. -[659/807] Compiling C object 'binary_c@exe/src_tables_table_spectral_types.c.o'. -[660/807] Compiling C object 'binary_c@exe/src_timers_final_timing_output.c.o'. -[661/807] Compiling C object 'binary_c@exe/src_timestep_modulate_zoomfac.c.o'. -[662/807] Compiling C object 'binary_c@exe/src_timestep_setup_fixed_timesteps.c.o'. -[663/807] Compiling C object 'binary_c@exe/src_timestep_stellar_timestep.c.o'. -[664/807] Compiling C object 'binary_c@exe/src_tables_test_table.c.o'. -[665/807] Compiling C object 'binary_c@exe/src_timestep_timestep_CHeB.c.o'. -[666/807] Compiling C object 'binary_c@exe/src_timestep_timestep_FGB.c.o'. -[667/807] Compiling C object 'binary_c@exe/src_timestep_timestep_HeMS.c.o'. -[668/807] Compiling C object 'binary_c@exe/src_timestep_timestep_EAGB.c.o'. -[669/807] Compiling C object 'binary_c@exe/src_timestep_timestep_HG.c.o'. -[670/807] Compiling C object 'binary_c@exe/src_timestep_timestep_HeHG_HeGB.c.o'. -[671/807] Compiling C object 'binary_c@exe/src_timestep_timestep_MS.c.o'. -[672/807] Compiling C object 'binary_c@exe/src_timestep_timestep_RLOF.c.o'. -[673/807] Compiling C object 'binary_c@exe/src_timestep_timestep_disc.c.o'. -[674/807] Compiling C object 'binary_c@exe/src_nucsyn_nucsyn_WR_table_lookup.c.o'. -[675/807] Compiling C object 'binary_c@exe/src_timestep_timestep_fixed_timesteps.c.o'. -[676/807] Compiling C object 'binary_c@exe/src_timestep_timestep_TPAGB.c.o'. -[677/807] Compiling C object 'binary_c@exe/src_timestep_timestep_fixed_trigger.c.o'. -[678/807] Compiling C object 'binary_c@exe/src_timestep_timestep_massless_remnant.c.o'. -[679/807] Compiling C object 'binary_c@exe/src_timestep_timestep_hard_limits.c.o'. -[680/807] Compiling C object 'binary_c@exe/src_timestep_timestep_logging.c.o'. -[681/807] Compiling C object 'binary_c@exe/src_timestep_timestep_increment_fixed_timesteps.c.o'. -[682/807] Compiling C object 'binary_c@exe/src_timestep_timestep_modulation.c.o'. -[683/807] Compiling C object 'binary_c@exe/src_timestep_timestep_other.c.o'. -[684/807] Compiling C object 'binary_c@exe/src_timestep_timestep_set_default_multipliers.c.o'. -[685/807] Compiling C object 'binary_c@exe/src_setup_version.c.o'. -[686/807] Compiling C object 'binary_c@exe/src_wind_wind_momentum_rate.c.o'. -[687/807] Compiling C object 'binary_c@exe/src_timers_timers.c.o'. -[688/807] Compiling C object 'binary_c@exe/src_timestep_timestep_limits.c.o'. -[689/807] Compiling C object 'binary_c@exe/src_wind_vwind.c.o'. -[690/807] Compiling C object 'binary_c@exe/src_wind_wind_Hurley2002.c.o'. -[691/807] Compiling C object 'binary_c@exe/src_wind_wind_LBV.c.o'. -[692/807] Compiling C object 'binary_c@exe/src_wind_wind_enhancement_factors.c.o'. -[693/807] Compiling C object 'binary_c@exe/src_zfuncs_COCoreToProtoMassRapid.c.o'. -[694/807] Compiling C object 'binary_c@exe/src_wind_wind_mass_loss_rate.c.o'. -[695/807] Compiling C object 'binary_c@exe/src_zfuncs_Hall_Tout_2014_HeGB_radius.c.o'. -[696/807] Compiling C object 'binary_c@exe/src_wind_wind_AGB.c.o'. -[697/807] Compiling C object 'binary_c@exe/src_zfuncs_Hall_Tout_2014_AGB_radius.c.o'. -[698/807] Compiling C object 'binary_c@exe/src_wind_wind_GB.c.o'. -[699/807] Compiling C object 'binary_c@exe/src_wind_wind_Schneider.c.o'. -[700/807] Compiling C object 'binary_c@exe/src_zfuncs_COCoreToProtoMassDelayed.c.o'. -[701/807] Compiling C object 'binary_c@exe/src_zfuncs_Hall_Tout_2014_HeHG_radius.c.o'. -[702/807] Compiling C object 'binary_c@exe/src_zfuncs_Hurley2002_mc1tp.c.o'. -[703/807] Compiling C object 'binary_c@exe/src_zfuncs_Hall_Tout_2014_low_mass_HG_RGB_radius.c.o'. -[704/807] Compiling C object 'binary_c@exe/src_zfuncs_Karakas2002_interpulse_period.c.o'. -[705/807] Compiling C object 'binary_c@exe/src_zfuncs_Padova_mc1tp.c.o'. -[706/807] Compiling C object 'binary_c@exe/src_zfuncs_L_1DUP.c.o'. -[707/807] Compiling C object 'binary_c@exe/src_zfuncs_Stancliffe_mc1tp.c.o'. -[708/807] Compiling C object 'binary_c@exe/src_zfuncs_Karakas2002_mc1tp.c.o'. -[709/807] Compiling C object 'binary_c@exe/src_zfuncs_WR_mu.c.o'. -[710/807] Compiling C object 'binary_c@exe/src_wind_wind_WR.c.o'. -[711/807] Compiling C object 'binary_c@exe/src_wind_wind_multiplicative_factors.c.o'. -[712/807] Compiling C object 'binary_c@exe/src_zfuncs_baryonicRemnantMassGeneral.c.o'. -[713/807] Compiling C object 'binary_c@exe/src_zfuncs_condensation_temperature.c.o'. -[714/807] Compiling C object 'binary_c@exe/src_zfuncs_dm_intershell.c.o'. -[715/807] Compiling C object 'binary_c@exe/src_zfuncs_dust_formation_radius.c.o'. -[716/807] Compiling C object 'binary_c@exe/src_zfuncs_fallbackDelayed.c.o'. -[717/807] Compiling C object 'binary_c@exe/src_zfuncs_Karakas2002_lumfunc.c.o'. -[718/807] Compiling C object 'binary_c@exe/src_zfuncs_Karakas2002_radius.c.o'. -[719/807] Compiling C object 'binary_c@exe/src_zfuncs_effective_core_mass_fraction_of_MS_stars.c.o'. -[720/807] Compiling C object 'binary_c@exe/src_zfuncs_fphase.c.o'. -[721/807] Compiling C object 'binary_c@exe/src_zfuncs_fallbackRapid.c.o'. -[722/807] Compiling C object 'binary_c@exe/src_zfuncs_gamma_rot.c.o'. -[723/807] Compiling C object 'binary_c@exe/src_zfuncs_lbetaf.c.o'. -[724/807] Compiling C object 'binary_c@exe/src_zfuncs_lalphf.c.o'. -[725/807] Compiling C object 'binary_c@exe/src_zfuncs_lbagbf.c.o'. -[726/807] Compiling C object 'binary_c@exe/src_wind_wind_other.c.o'. -[727/807] Compiling C object 'binary_c@exe/src_zfuncs_lbgbdf.c.o'. -[728/807] Compiling C object 'binary_c@exe/src_zfuncs_lbgbf.c.o'. -[729/807] Compiling C object 'binary_c@exe/src_zfuncs_lheif.c.o'. -[730/807] Compiling C object 'binary_c@exe/src_zfuncs_lmcgbf.c.o'. -[731/807] Compiling C object 'binary_c@exe/src_zfuncs_lnetaf.c.o'. -[732/807] Compiling C object 'binary_c@exe/src_zfuncs_lgbtf.c.o'. -[733/807] Compiling C object 'binary_c@exe/src_zfuncs_lhef.c.o'. -[734/807] Compiling C object 'binary_c@exe/src_zfuncs_lhookf.c.o'. -[735/807] Compiling C object 'binary_c@exe/src_zfuncs_lns.c.o'. -[736/807] Compiling C object 'binary_c@exe/src_zfuncs_logLeff.c.o'. -[737/807] Compiling C object 'binary_c@exe/src_zfuncs_logg.c.o'. -[738/807] Compiling C object 'binary_c@exe/src_zfuncs_lum_mc_EAGB.c.o'. -[739/807] Compiling C object 'binary_c@exe/src_zfuncs_lpertf.c.o'. -[740/807] Compiling C object 'binary_c@exe/src_zfuncs_ltmsf.c.o'. -[741/807] Compiling C object 'binary_c@exe/src_zfuncs_lwd.c.o'. -[742/807] Compiling C object 'binary_c@exe/src_zfuncs_lzahbf.c.o'. -[743/807] Compiling C object 'binary_c@exe/src_zfuncs_lzamsf.c.o'. -[744/807] Compiling C object 'binary_c@exe/src_zfuncs_m_1dup.c.o'. -[745/807] Compiling C object 'binary_c@exe/src_zfuncs_massFallbackGeneral.c.o'. -[746/807] Compiling C object 'binary_c@exe/src_zfuncs_lzhef.c.o'. -[747/807] Compiling C object 'binary_c@exe/src_zfuncs_m_conv_core.c.o'. -[748/807] Compiling C object 'binary_c@exe/src_zfuncs_mass_CO_core_at_BAGB.c.o'. -[749/807] Compiling C object 'binary_c@exe/src_zfuncs_mass_He_core_at_endofMS.c.o'. -[750/807] Compiling C object 'binary_c@exe/src_zfuncs_max_m_conv_core.c.o'. -[751/807] Compiling C object 'binary_c@exe/src_zfuncs_mbagbf.c.o'. -[752/807] Compiling C object 'binary_c@exe/src_zfuncs_mc1tp.c.o'. -[753/807] Compiling C object 'binary_c@exe/src_zfuncs_mc_1DUP.c.o'. -[754/807] Compiling C object 'binary_c@exe/src_zfuncs_mc_heburn.c.o'. -[755/807] Compiling C object 'binary_c@exe/src_zfuncs_mcagbf.c.o'. -[756/807] Compiling C object 'binary_c@exe/src_zfuncs_mcbgb.c.o'. -[757/807] Compiling C object 'binary_c@exe/src_zfuncs_mcgbf.c.o'. -[758/807] Compiling C object 'binary_c@exe/src_zfuncs_mcheif.c.o'. -[759/807] Compiling C object 'binary_c@exe/src_zfuncs_mctmsf.c.o'. -[760/807] Compiling C object 'binary_c@exe/src_zfuncs_mcgbtf.c.o'. -[761/807] Compiling C object 'binary_c@exe/src_zfuncs_mcx_eagbf.c.o'. -[762/807] Compiling C object 'binary_c@exe/src_zfuncs_menvf.c.o'. -[763/807] Compiling C object 'binary_c@exe/src_zfuncs_menv_1DUP.c.o'. -[764/807] Compiling C object 'binary_c@exe/src_zfuncs_min_He_ignition_core_mass.c.o'. -[765/807] Compiling C object 'binary_c@exe/src_zfuncs_mheif.c.o'. -[766/807] Compiling C object 'binary_c@exe/src_zfuncs_molecular_weight.c.o'. -[767/807] Compiling C object 'binary_c@exe/src_zfuncs_next_nuclear_burning_star.c.o'. -[768/807] Compiling C object 'binary_c@exe/src_zfuncs_moment_of_inertia.c.o'. -[769/807] Compiling C object 'binary_c@exe/src_zfuncs_next_evolving_star.c.o'. -[770/807] Compiling C object 'binary_c@exe/src_zfuncs_omegaspin.c.o'. -[771/807] Compiling C object 'binary_c@exe/src_zfuncs_r_rot.c.o'. -[772/807] Compiling C object 'binary_c@exe/src_zfuncs_ralphf.c.o'. -[773/807] Compiling C object 'binary_c@exe/src_zfuncs_rbetaf.c.o'. -[774/807] Compiling C object 'binary_c@exe/src_zfuncs_rhegbf.c.o'. -[775/807] Compiling C object 'binary_c@exe/src_zfuncs_preMS.c.o'. -[776/807] Compiling C object 'binary_c@exe/src_zfuncs_rbh.c.o'. -[777/807] Compiling C object 'binary_c@exe/src_zfuncs_rgammf.c.o'. -[778/807] Compiling C object 'binary_c@exe/src_zfuncs_renvf.c.o'. -[779/807] Compiling C object 'binary_c@exe/src_zfuncs_rhehgf.c.o'. -[780/807] Compiling C object 'binary_c@exe/src_zfuncs_rhelmf.c.o'. -[781/807] Compiling C object 'binary_c@exe/src_zfuncs_rgbf.c.o'. -[782/807] Compiling C object 'binary_c@exe/src_zfuncs_rns.c.o'. -[783/807] Compiling C object 'binary_c@exe/src_zfuncs_ragbf.c.o'. -[784/807] Compiling C object 'binary_c@exe/src_zfuncs_rhookf.c.o'. -[785/807] Compiling C object 'binary_c@exe/src_zfuncs_rwd.c.o'. -[786/807] Compiling C object 'binary_c@exe/src_zfuncs_rminf.c.o'. -[787/807] Compiling C object 'binary_c@exe/src_zfuncs_rpertf.c.o'. -[788/807] Compiling C object 'binary_c@exe/src_zfuncs_stripdata.c.o'. -[789/807] Compiling C object 'binary_c@exe/src_zfuncs_rzahbf.c.o'. -[790/807] Compiling C object 'binary_c@exe/src_zfuncs_rzhef.c.o'. -[791/807] Compiling C object 'binary_c@exe/src_zfuncs_rtmsf.c.o'. -[792/807] Compiling C object 'binary_c@exe/src_zfuncs_rzamsf.c.o'. -[793/807] Compiling C object 'binary_c@exe/src_zfuncs_system_mass.c.o'. -[794/807] Compiling C object 'binary_c@exe/src_zfuncs_tbgbf.c.o'. -[795/807] Compiling C object 'binary_c@exe/src_zfuncs_themsf.c.o'. -[796/807] Compiling C object 'binary_c@exe/src_zfuncs_thick_disk_age.c.o'. -[797/807] Compiling C object 'binary_c@exe/src_zfuncs_thef.c.o'. -[798/807] Compiling C object 'binary_c@exe/src_zfuncs_tblf.c.o'. -[799/807] Compiling C object 'binary_c@exe/src_zfuncs_vrotf.c.o'. -[800/807] Compiling C object 'binary_c@exe/src_zfuncs_thookf.c.o'. -[801/807] Compiling C object 'binary_c@exe/src_nucsyn_nucsyn_sn_chieffi_limongi_2004.c.o'. -[802/807] Compiling C object 'binary_c@exe/src_nucsyn_nucsyn_initial_abundances.c.o'. -[803/807] Compiling C object 'binary_c@exe/src_setup_parse_arguments.c.o'. -[804/807] Compiling C object 'binary_c@exe/src_setup_set_cmd_line_macro_pairs.c.o'. -[805/807] Compiling C object 'binary_c@exe/src_nucsyn_nucsyn_set_nuc_masses.c.o'. -[806/807] Linking target binary_c. -[807/807] Generating symlink_binary_c with a custom command. -[1/806] Generating binary_c.h.pch with a custom command. -[2/806] Compiling C object 'binary_c@sha/src_API_binary_c_free_store_contents.c.o'. -[3/806] Compiling C object 'binary_c@sha/src_API_binary_c_free_memory.c.o'. -[4/806] Compiling C object 'binary_c@sha/src_API_binary_c_buffer_info.c.o'. -[5/806] Compiling C object 'binary_c@sha/src_API_binary_c_error_buffer.c.o'. -[6/806] Compiling C object 'binary_c@sha/src_API_binary_c_evolve_for_dt.c.o'. -[7/806] Compiling C object 'binary_c@sha/src_API_binary_c_buffer_empty_buffer.c.o'. -[8/806] Compiling C object 'binary_c@sha/src_API_binary_c_version.c.o'. -[9/806] Compiling C object 'binary_c@sha/src_API_binary_c_show_instant_RLOF_period_or_separation.c.o'. -[10/806] Compiling C object 'binary_c@sha/src_BINT_BINT_MS_lifetime.c.o'. -[11/806] Compiling C object 'binary_c@sha/src_API_binary_c_API_debug_fprintf.c.o'. -[12/806] Compiling C object 'binary_c@sha/src_API_binary_c_new_system.c.o'. -[13/806] Compiling C object 'binary_c@sha/src_API_binary_c_API_logging.c.o'. -[14/806] Compiling C object 'binary_c@sha/src_API_binary_c_initialize_parameters.c.o'. -[15/806] Compiling C object 'binary_c@sha/src_binary_star_functions_determine_mass_ratios.c.o'. -[16/806] Compiling C object 'binary_c@sha/src_BINT_BINT_free_store.c.o'. -[17/806] Compiling C object 'binary_c@sha/src_BINT_BINT_init.c.o'. -[18/806] Compiling C object 'binary_c@sha/src_BINT_BINT_initial_XHc.c.o'. -[19/806] Compiling C object 'binary_c@sha/src_BINT_BINT_load_grid.c.o'. -[20/806] Compiling C object 'binary_c@sha/src_BINT_BINT_mix_stars.c.o'. -[21/806] Compiling C object 'binary_c@sha/src_BINT_BINT_stellar_structure.c.o'. -[22/806] Compiling C object 'binary_c@sha/src_BINT_BINT_stellar_structure_MS.c.o'. -[23/806] Compiling C object 'binary_c@sha/src_API_binary_c_API_fortran.c.o'. -[24/806] Compiling C object 'binary_c@sha/src_RLOF_Hachisu_max_rate.c.o'. -[25/806] Compiling C object 'binary_c@sha/src_RLOF_RLOF_black_hole_merger.c.o'. -[26/806] Compiling C object 'binary_c@sha/src_RLOF_RLOF_donor_dynamical_rate_limit.c.o'. -[27/806] Compiling C object 'binary_c@sha/src_RLOF_RLOF_donor_envelope_rate_limit.c.o'. -[28/806] Compiling C object 'binary_c@sha/src_RLOF_RLOF_NSNS_NSBH_merger.c.o'. -[29/806] Compiling C object 'binary_c@sha/src_RLOF_RLOF_dM_orbit_to_time_derivatives.c.o'. -[30/806] Compiling C object 'binary_c@sha/src_RLOF_RLOF_donor_thermal_rate_limit.c.o'. -[31/806] Compiling C object 'binary_c@sha/src_RLOF_RLOF_init_dM_orbit.c.o'. -[32/806] Compiling C object 'binary_c@sha/src_RLOF_RLOF_dynamical_comenv.c.o'. -[33/806] Compiling C object 'binary_c@sha/src_RLOF_RLOF_orbital_angular_momentum_loss.c.o'. -[34/806] Compiling C object 'binary_c@sha/src_RLOF_RLOF_merger.c.o'. -[35/806] Compiling C object 'binary_c@sha/src_RLOF_RLOF_adaptive_mass_transfer_rate.c.o'. -[36/806] Compiling C object 'binary_c@sha/src_RLOF_RLOF_dynamical_transfer_from_WD_to_remnant.c.o'. -[37/806] Compiling C object 'binary_c@sha/src_RLOF_RLOF_mass_transferred_in_one_orbit.c.o'. -[38/806] Compiling C object 'binary_c@sha/src_RLOF_RLOF_merger_event_handler.c.o'. -[39/806] Compiling C object 'binary_c@sha/src_RLOF_RLOF_overflowing.c.o'. -[40/806] Compiling C object 'binary_c@sha/src_RLOF_RLOF_set_rmin.c.o'. -[41/806] Compiling C object 'binary_c@sha/src_RLOF_RLOF_speed_up_factor.c.o'. -[42/806] Compiling C object 'binary_c@sha/src_RLOF_RLOF_stellar_angmom_derivative.c.o'. -[43/806] Compiling C object 'binary_c@sha/src_RLOF_RLOF_type.c.o'. -[44/806] Compiling C object 'binary_c@sha/src_RLOF_efficiency_tests.c.o'. -[45/806] Compiling C object 'binary_c@sha/src_RLOF_RLOF_stability_tests.c.o'. -[46/806] Compiling C object 'binary_c@sha/src_RLOF_RLOF_test_for_accretion_disc.c.o'. -[47/806] Compiling C object 'binary_c@sha/src_RLOF_effective_Roche_radius.c.o'. -[48/806] Compiling C object 'binary_c@sha/src_binary_star_functions_WD_max_accretion_rate.c.o'. -[49/806] Compiling C object 'binary_c@sha/src_RLOF_RLOF_dynamical_transfer_from_low_mass_MS_star.c.o'. -[50/806] Compiling C object 'binary_c@sha/src_RLOF_RLOF_unstable_mass_transfer.c.o'. -[51/806] Compiling C object 'binary_c@sha/src_binary_star_functions_WRLOF_rate.c.o'. -[52/806] Compiling C object 'binary_c@sha/src_binary_star_functions_WD_min_accretion_rate.c.o'. -[53/806] Compiling C object 'binary_c@sha/src_binary_star_functions_angular_momentum_loss_mechanisms_for_close_systems.c.o'. -[54/806] Compiling C object 'binary_c@sha/src_batchmode_batchmode_loop.c.o'. -[55/806] Compiling C object 'binary_c@sha/src_binary_star_functions_adjust_radius_derivative.c.o'. -[56/806] Compiling C object 'binary_c@sha/src_binary_star_functions_Peters_grav_wave_merger_time.c.o'. -[57/806] Compiling C object 'binary_c@sha/src_binary_star_functions_calculate_spins.c.o'. -[58/806] Compiling C object 'binary_c@sha/src_RLOF_RLOF_mass_transfer_rate.c.o'. -[59/806] Compiling C object 'binary_c@sha/src_binary_star_functions_apply_orbital_angular_momentum_and_eccentricity_derivatives.c.o'. -[60/806] Compiling C object 'binary_c@sha/src_binary_star_functions_apply_other_stellar_derivatives.c.o'. -[61/806] Compiling C object 'binary_c@sha/src_binary_star_functions_binary_a_n.c.o'. -[62/806] Compiling C object 'binary_c@sha/src_binary_star_functions_circumbinary_disk.c.o'. -[63/806] Compiling C object 'binary_c@sha/src_binary_star_functions_calculate_orbital_period.c.o'. -[64/806] Compiling C object 'binary_c@sha/src_binary_star_functions_angular_momentum_and_eccentricity_derivatives.c.o'. -[65/806] Compiling C object 'binary_c@sha/src_binary_star_functions_calculate_orbital_separation.c.o'. -[66/806] Compiling C object 'binary_c@sha/src_binary_star_functions_compact_object_accretion_limits.c.o'. -[67/806] Compiling C object 'binary_c@sha/src_binary_star_functions_calc_wind_loss_and_gain_rates.c.o'. -[68/806] Compiling C object 'binary_c@sha/src_binary_star_functions_check_for_collision_at_periastron.c.o'. -[69/806] Compiling C object 'binary_c@sha/src_binary_star_functions_contact_system_event_handler.c.o'. -[70/806] Compiling C object 'binary_c@sha/src_binary_star_functions_detached_timestep_limits.c.o'. -[71/806] Compiling C object 'binary_c@sha/src_binary_star_functions_contact_system.c.o'. -[72/806] Compiling C object 'binary_c@sha/src_evolution_free_difflogstack.c.o'. -[73/806] Compiling C object 'binary_c@sha/src_binary_star_functions_dgcore.c.o'. -[74/806] Compiling C object 'binary_c@sha/src_binary_star_functions_detached_limit_mass_loss_and_timestep.c.o'. -[75/806] Compiling C object 'binary_c@sha/src_evolution_init_common.c.o'. -[76/806] Compiling C object 'binary_c@sha/src_binary_star_functions_determine_roche_lobe_radii.c.o'. -[77/806] Compiling C object 'binary_c@sha/src_binary_star_functions_determine_roche_lobe_radius.c.o'. -[78/806] Compiling C object 'binary_c@sha/src_binary_star_functions_fork_kick.c.o'. -[79/806] Compiling C object 'binary_c@sha/src_binary_star_functions_dynamical_limit_for_accretion.c.o'. -[80/806] Compiling C object 'binary_c@sha/src_binary_star_functions_apply_stellar_mass_and_angular_momentum_derivatives.c.o'. -[81/806] Compiling C object 'binary_c@sha/src_evolution_evolve_system_binary_c.c.o'. -[82/806] Compiling C object 'binary_c@sha/src_binary_star_functions_eddington_limit_for_accretion.c.o'. -[83/806] Compiling C object 'binary_c@sha/src_RLOF_RLOF_critical_q.c.o'. -[84/806] Compiling C object 'binary_c@sha/src_binary_star_functions_force_corotation_of_primary_and_orbit.c.o'. -[85/806] Compiling C object 'binary_c@sha/src_binary_star_functions_gravitational_radiation_edot.c.o'. -[86/806] Compiling C object 'binary_c@sha/src_binary_star_functions_handle_massless_remnants.c.o'. -[87/806] Compiling C object 'binary_c@sha/src_binary_star_functions_gravitational_radiation_jdot.c.o'. -[88/806] Compiling C object 'binary_c@sha/src_binary_star_functions_lagrange_points_from_stardata.c.o'. -[89/806] Compiling C object 'binary_c@sha/src_binary_star_functions_make_roche_lobe_radii_huge.c.o'. -[90/806] Compiling C object 'binary_c@sha/src_binary_star_functions_mix_stars.c.o'. -[91/806] Compiling C object 'binary_c@sha/src_binary_star_functions_interpolate_R_to_RL.c.o'. -[92/806] Compiling C object 'binary_c@sha/src_binary_star_functions_lagrange_points.c.o'. -[93/806] Compiling C object 'binary_c@sha/src_binary_star_functions_limit_timestep_to_2percent_ang_mom_change.c.o'. -[94/806] Compiling C object 'binary_c@sha/src_binary_star_functions_orbital_velocity.c.o'. -[95/806] Compiling C object 'binary_c@sha/src_binary_star_functions_mass_angmom_and_evolutionary_changes.c.o'. -[96/806] Compiling C object 'binary_c@sha/src_binary_star_functions_non_conservative_gamma.c.o'. -[97/806] Compiling C object 'binary_c@sha/src_binary_star_functions_non_conservative_angular_momentum_loss.c.o'. -[98/806] Compiling C object 'binary_c@sha/src_binary_star_functions_orbital_velocity_squared.c.o'. -[99/806] Compiling C object 'binary_c@sha/src_binary_star_functions_radius_stripped.c.o'. -[100/806] Compiling C object 'binary_c@sha/src_binary_star_functions_prevent_overspin.c.o'. -[101/806] Compiling C object 'binary_c@sha/src_binary_star_functions_radius_closest_approach.c.o'. -[102/806] Compiling C object 'binary_c@sha/src_binary_star_functions_rl.c.o'. -[103/806] Compiling C object 'binary_c@sha/src_binary_star_functions_radial_velocity_K.c.o'. -[104/806] Compiling C object 'binary_c@sha/src_binary_star_functions_set_effective_radii.c.o'. -[105/806] Compiling C object 'binary_c@sha/src_binary_star_functions_save_detached_stellar_types.c.o'. -[106/806] Compiling C object 'binary_c@sha/src_binary_star_functions_set_nuclear_timescale_and_slowdown_factor.c.o'. -[107/806] Compiling C object 'binary_c@sha/src_binary_star_functions_rejuvenate_MS_secondary_and_age_primary.c.o'. -[108/806] Compiling C object 'binary_c@sha/src_binary_star_functions_spiral_in_time.c.o'. -[109/806] Compiling C object 'binary_c@sha/src_binary_star_functions_set_kelvin_helmholtz_times.c.o'. -[110/806] Compiling C object 'binary_c@sha/src_binary_star_functions_set_ndonor_and_naccretor.c.o'. -[111/806] Compiling C object 'binary_c@sha/src_binary_star_functions_set_wind_accretion_luminosities.c.o'. -[112/806] Compiling C object 'binary_c@sha/src_binary_star_functions_show_instant_RLOF_period_or_separation.c.o'. -[113/806] Compiling C object 'binary_c@sha/src_binary_star_functions_test_for_roche_lobe_overflow.c.o'. -[114/806] Compiling C object 'binary_c@sha/src_binary_star_functions_update_MS_lifetimes.c.o'. -[115/806] Compiling C object 'binary_c@sha/src_binary_star_functions_wind_decc_dt.c.o'. -[116/806] Compiling C object 'binary_c@sha/src_binary_star_functions_mix_stars_BSE.c.o'. -[117/806] Compiling C object 'binary_c@sha/src_binary_star_functions_limit_accretion_rates.c.o'. -[118/806] Compiling C object 'binary_c@sha/src_binary_star_functions_test_if_primary_still_fills_roche_lobe.c.o'. -[119/806] Compiling C object 'binary_c@sha/src_binary_star_functions_thermal_limit_for_accretion.c.o'. -[120/806] Compiling C object 'binary_c@sha/src_binary_star_functions_stellar_wind_angmom.c.o'. -[121/806] Compiling C object 'binary_c@sha/src_binary_star_functions_waitfork.c.o'. -[122/806] Compiling C object 'binary_c@sha/src_binary_star_functions_white_dwarf_H_accretion_efficiency.c.o'. -[123/806] Compiling C object 'binary_c@sha/src_binary_star_functions_wind_djorb_dt.c.o'. -[124/806] Compiling C object 'binary_c@sha/src_binary_star_functions_tides.c.o'. -[125/806] Compiling C object 'binary_c@sha/src_binary_star_functions_update_masses_angular_momenta_and_structure.c.o'. -[126/806] Compiling C object 'binary_c@sha/src_breakpoints_binary_c_breakpoint.c.o'. -[127/806] Compiling C object 'binary_c@sha/src_buffering_binary_c_flush.c.o'. -[128/806] Compiling C object 'binary_c@sha/src_buffering_buffer_dump_to_stderr.c.o'. -[129/806] Compiling C object 'binary_c@sha/src_buffering_buffer_empty_buffer.c.o'. -[130/806] Compiling C object 'binary_c@sha/src_buffering_buffer_info.c.o'. -[131/806] Compiling C object 'binary_c@sha/src_binary_star_functions_white_dwarf_He_accretion_efficiency.c.o'. -[132/806] Compiling C object 'binary_c@sha/src_buffering_binary_c_fail_printf.c.o'. -[133/806] Compiling C object 'binary_c@sha/src_buffering_clear_error_buffer.c.o'. -[134/806] Compiling C object 'binary_c@sha/src_buffering_clear_printf_buffer.c.o'. -[135/806] Compiling C object 'binary_c@sha/src_common_envelope_common_envelope_evolution.c.o'. -[136/806] Compiling C object 'binary_c@sha/src_common_envelope_common_envelope_evolution_BINT.c.o'. -[137/806] Compiling C object 'binary_c@sha/src_common_envelope_common_envelope_Nandez2016.c.o'. -[138/806] Compiling C object 'binary_c@sha/src_common_envelope_common_envelope_polytrope.c.o'. -[139/806] Compiling C object 'binary_c@sha/src_common_envelope_common_envelope_lambda.c.o'. -[140/806] Compiling C object 'binary_c@sha/src_common_envelope_common_envelope_event_handler.c.o'. -[141/806] Compiling C object 'binary_c@sha/src_debug_backtrace.c.o'. -[142/806] Compiling C object 'binary_c@sha/src_common_envelope_common_envelope_dewi_tauris.c.o'. -[143/806] Compiling C object 'binary_c@sha/src_debug_diff_stardata.c.o'. -[144/806] Compiling C object 'binary_c@sha/src_disc_cbdisc_eccentricity_pumping_rate.c.o'. -[145/806] Compiling C object 'binary_c@sha/src_disc_disc_J_bisector.c.o'. -[146/806] Compiling C object 'binary_c@sha/src_debug_show_stardata.c.o'. -[147/806] Compiling C object 'binary_c@sha/src_disc_disc_F_bisector.c.o'. -[148/806] Compiling C object 'binary_c@sha/src_buffering_binary_c_buffered_printf.c.o'. -[149/806] Compiling C object 'binary_c@sha/src_disc_disc_apply_derivatives.c.o'. -[150/806] Compiling C object 'binary_c@sha/src_disc_disc_M_bisector.c.o'. -[151/806] Compiling C object 'binary_c@sha/src_disc_disc_Rcross.c.o'. -[152/806] Compiling C object 'binary_c@sha/src_debug_debug_fprintf.c.o'. -[153/806] Compiling C object 'binary_c@sha/src_disc_disc_bisection_rooter.c.o'. -[154/806] Compiling C object 'binary_c@sha/src_disc_disc_build_disc_zones.c.o'. -[155/806] Compiling C object 'binary_c@sha/src_disc_disc_calc_natural_timescale.c.o'. -[156/806] Compiling C object 'binary_c@sha/src_disc_disc_calc_disc_structure.c.o'. -[157/806] Compiling C object 'binary_c@sha/src_disc_disc_calculate_derived_variables.c.o'. -[158/806] Compiling C object 'binary_c@sha/src_disc_disc_check_power_laws.c.o'. -[159/806] Compiling C object 'binary_c@sha/src_disc_disc_convergence_status.c.o'. -[160/806] Compiling C object 'binary_c@sha/src_disc_disc_determine_zone_radii.c.o'. -[161/806] Compiling C object 'binary_c@sha/src_disc_disc_check_local_minimum.c.o'. -[162/806] Compiling C object 'binary_c@sha/src_disc_disc_derivatives.c.o'. -[163/806] Compiling C object 'binary_c@sha/src_disc_disc_edge_loss_angular_momentum_flux.c.o'. -[164/806] Compiling C object 'binary_c@sha/src_disc_disc_evaporate_cbdiscs.c.o'. -[165/806] Compiling C object 'binary_c@sha/src_disc_disc_edge_stripping.c.o'. -[166/806] Compiling C object 'binary_c@sha/src_disc_disc_evolve_disc_structure.c.o'. -[167/806] Compiling C object 'binary_c@sha/src_disc_disc_failure_mode.c.o'. -[168/806] Compiling C object 'binary_c@sha/src_disc_disc_extend_powerlaw_from_reference_point.c.o'. -[169/806] Compiling C object 'binary_c@sha/src_common_envelope_common_envelope_wang2016.c.o'. -[170/806] Compiling C object 'binary_c@sha/src_disc_disc_hottest_zone_at_radius.c.o'. -[171/806] Compiling C object 'binary_c@sha/src_disc_disc_generic_stripping_timescale.c.o'. -[172/806] Compiling C object 'binary_c@sha/src_disc_disc_free_convergence_parameter_types_and_constraints.c.o'. -[173/806] Compiling C object 'binary_c@sha/src_disc_disc_init_binary_structure.c.o'. -[174/806] Compiling C object 'binary_c@sha/src_disc_disc_initial_radiative_guess.c.o'. -[175/806] Compiling C object 'binary_c@sha/src_disc_disc_initial_structure.c.o'. -[176/806] Compiling C object 'binary_c@sha/src_disc_disc_initialize_disc.c.o'. -[177/806] Compiling C object 'binary_c@sha/src_disc_disc_initialize_every_timestep.c.o'. -[178/806] Compiling C object 'binary_c@sha/src_disc_disc_inner_edge_accretion_f.c.o'. -[179/806] Compiling C object 'binary_c@sha/src_disc_disc_inner_edge_loss_timescale.c.o'. -[180/806] Compiling C object 'binary_c@sha/src_disc_disc_inner_edge_mass_loss.c.o'. -[181/806] Compiling C object 'binary_c@sha/src_disc_disc_integrals.c.o'. -[182/806] Compiling C object 'binary_c@sha/src_disc_disc_make_derived_power_laws.c.o'. -[183/806] Compiling C object 'binary_c@sha/src_disc_disc_logging.c.o'. -[184/806] Compiling C object 'binary_c@sha/src_disc_disc_mass_changes.c.o'. -[185/806] Compiling C object 'binary_c@sha/src_disc_disc_mem_cleanup.c.o'. -[186/806] Compiling C object 'binary_c@sha/src_disc_disc_monotonic_check.c.o'. -[187/806] Compiling C object 'binary_c@sha/src_disc_disc_natural_timescales.c.o'. -[188/806] Compiling C object 'binary_c@sha/src_disc_disc_new_zone_list.c.o'. -[189/806] Compiling C object 'binary_c@sha/src_disc_disc_new_zone_radii.c.o'. -[190/806] Compiling C object 'binary_c@sha/src_disc_disc_nearest_zone_n.c.o'. -[191/806] Compiling C object 'binary_c@sha/src_disc_disc_nsector.c.o'. -[192/806] Compiling C object 'binary_c@sha/src_disc_disc_numerical.c.o'. -[193/806] Compiling C object 'binary_c@sha/src_disc_disc_outer_edge_loss_timescale.c.o'. -[194/806] Compiling C object 'binary_c@sha/src_disc_disc_parameter_space.c.o'. -[195/806] Compiling C object 'binary_c@sha/src_disc_disc_power_laws.c.o'. -[196/806] Compiling C object 'binary_c@sha/src_disc_disc_outer_edge_mass_loss.c.o'. -[197/806] Compiling C object 'binary_c@sha/src_disc_disc_photoevaporation.c.o'. -[198/806] Compiling C object 'binary_c@sha/src_disc_disc_quadsector.c.o'. -[199/806] Compiling C object 'binary_c@sha/src_disc_disc_rezone.c.o'. -[200/806] Compiling C object 'binary_c@sha/src_disc_disc_set_disc_initial_guess.c.o'. -[201/806] Compiling C object 'binary_c@sha/src_disc_disc_set_disc_initial_guesses.c.o'. -[202/806] Compiling C object 'binary_c@sha/src_disc_disc_set_monte_carlo_guess.c.o'. -[203/806] Compiling C object 'binary_c@sha/src_disc_disc_set_disc_timestep.c.o'. -[204/806] Compiling C object 'binary_c@sha/src_disc_disc_set_temperature_power_laws.c.o'. -[205/806] Compiling C object 'binary_c@sha/src_disc_disc_setup_zones.c.o'. -[206/806] Compiling C object 'binary_c@sha/src_disc_disc_setup_convergence_parameter_types_and_constraints.c.o'. -[207/806] Compiling C object 'binary_c@sha/src_disc_disc_show_thermal_zones.c.o'. -[208/806] Compiling C object 'binary_c@sha/src_disc_disc_show_disc.c.o'. -[209/806] Compiling C object 'binary_c@sha/src_disc_disc_status.c.o'. -[210/806] Compiling C object 'binary_c@sha/src_disc_disc_stellar_wind_to_cbdisc.c.o'. -[211/806] Compiling C object 'binary_c@sha/src_disc_disc_structure_functions.c.o'. -[212/806] Compiling C object 'binary_c@sha/src_disc_disc_test_power_law_API.c.o'. -[213/806] Compiling C object 'binary_c@sha/src_disc_disc_testing.c.o'. -[214/806] Compiling C object 'binary_c@sha/src_disc_disc_trisector.c.o'. -[215/806] Compiling C object 'binary_c@sha/src_disc_disc_viscous_mass.c.o'. -[216/806] Compiling C object 'binary_c@sha/src_disc_disc_zone_crossing_radii.c.o'. -[217/806] Compiling C object 'binary_c@sha/src_disc_disc_zone_n.c.o'. -[218/806] Compiling C object 'binary_c@sha/src_disc_evolve_disc.c.o'. -[219/806] Compiling C object 'binary_c@sha/src_disc_inner_disc.c.o'. -[220/806] Compiling C object 'binary_c@sha/src_disc_mass_in_discs.c.o'. -[221/806] Compiling C object 'binary_c@sha/src_disc_ndiscs.c.o'. -[222/806] Compiling C object 'binary_c@sha/src_disc_evolve_discs.c.o'. -[223/806] Compiling C object 'binary_c@sha/src_disc_new_disc.c.o'. -[224/806] Compiling C object 'binary_c@sha/src_disc_outer_disc.c.o'. -[225/806] Compiling C object 'binary_c@sha/src_disc_remove_disc.c.o'. -[226/806] Compiling C object 'binary_c@sha/src_disc_remove_discs.c.o'. -[227/806] Compiling C object 'binary_c@sha/src_envelope_integration_gob84.c.o'. -[228/806] Compiling C object 'binary_c@sha/src_equation_of_state_equation_of_state.c.o'. -[229/806] Compiling C object 'binary_c@sha/src_equation_of_state_equation_of_state_paczynski.c.o'. -[230/806] Compiling C object 'binary_c@sha/src_events_catch_events.c.o'. -[231/806] Compiling C object 'binary_c@sha/src_events_erase_event.c.o'. -[232/806] Compiling C object 'binary_c@sha/src_debug_backtrace-symbols.c.o'. -[233/806] Compiling C object 'binary_c@sha/src_envelope_integration_envelope_properties.c.o'. -[234/806] Compiling C object 'binary_c@sha/src_events_erase_events.c.o'. -[235/806] Compiling C object 'binary_c@sha/src_events_events_pending.c.o'. -[236/806] Compiling C object 'binary_c@sha/src_events_erase_events_of_type.c.o'. -[237/806] Compiling C object 'binary_c@sha/src_events_events_pending_of_type.c.o'. -[238/806] Compiling C object 'binary_c@sha/src_events_new_event.c.o'. -[239/806] Compiling C object 'binary_c@sha/src_events_shift_event_stack.c.o'. -[240/806] Compiling C object 'binary_c@sha/src_events_event_stack_string.c.o'. -[241/806] Compiling C object 'binary_c@sha/src_events_trigger_event.c.o'. -[242/806] Compiling C object 'binary_c@sha/src_evolution_binary_star_evolution.c.o'. -[243/806] Compiling C object 'binary_c@sha/src_evolution_can_reject.c.o'. -[244/806] Compiling C object 'binary_c@sha/src_evolution_check_for_time_exhaustion.c.o'. -[245/806] Compiling C object 'binary_c@sha/src_evolution_check_reject_flags.c.o'. -[246/806] Compiling C object 'binary_c@sha/src_evolution_end_of_evolution.c.o'. -[247/806] Compiling C object 'binary_c@sha/src_evolution_evolution_cleanup.c.o'. -[248/806] Compiling C object 'binary_c@sha/src_evolution_evolution_forward_Euler.c.o'. -[249/806] Compiling C object 'binary_c@sha/src_evolution_evolution_loop_top.c.o'. -[250/806] Compiling C object 'binary_c@sha/src_evolution_evolution_nanchecks.c.o'. -[251/806] Compiling C object 'binary_c@sha/src_evolution_evolution_nucsyn.c.o'. -[252/806] Compiling C object 'binary_c@sha/src_evolution_evolution_rejected.c.o'. -[253/806] Compiling C object 'binary_c@sha/src_evolution_evolution_restore_and_reduce_timestep.c.o'. -[254/806] Compiling C object 'binary_c@sha/src_evolution_evolution_restore_from_previous.c.o'. -[255/806] Compiling C object 'binary_c@sha/src_evolution_evolution_save_to_previous.c.o'. -[256/806] Compiling C object 'binary_c@sha/src_evolution_evolution.c.o'. -[257/806] Compiling C object 'binary_c@sha/src_evolution_evolution_rejection_tests.c.o'. -[258/806] Compiling C object 'binary_c@sha/src_evolution_evolution_success.c.o'. -[259/806] Compiling C object 'binary_c@sha/src_nucsyn_nucsyn_square_multibracket.c.o'. -[260/806] Compiling C object 'binary_c@sha/src_nucsyn_nucsyn_square_bracket.c.o'. -[261/806] Compiling C object 'binary_c@sha/src_tables_table_Karakas2002_radius.c.o'. -[262/806] Compiling C object 'binary_c@sha/src_evolution_evolution_time_zero_setup.c.o'. -[263/806] Compiling C object 'binary_c@sha/src_evolution_evolve_RLOFing_system.c.o'. -[264/806] Compiling C object 'binary_c@sha/src_tables_table_Karakas_ncal.c.o'. -[265/806] Compiling C object 'binary_c@sha/src_evolution_evolution_split.c.o'. -[266/806] Compiling C object 'binary_c@sha/src_evolution_evolve_system.c.o'. -[267/806] Compiling C object 'binary_c@sha/src_tables_table_TAMS.c.o'. -[268/806] Compiling C object 'binary_c@sha/src_evolution_evolution_time_explicit.c.o'. -[269/806] Compiling C object 'binary_c@sha/src_evolution_evolve_detached_system.c.o'. -[270/806] Compiling C object 'binary_c@sha/src_tables_table_comenv_polytropes.c.o'. -[271/806] Compiling C object 'binary_c@sha/src_tables_table_MS_strip.c.o'. -[272/806] Compiling C object 'binary_c@sha/src_evolution_init_model.c.o'. -[273/806] Compiling C object 'binary_c@sha/src_evolution_init_star.c.o'. -[274/806] Compiling C object 'binary_c@sha/src_evolution_initialize_RLOFing_system_every_timestep.c.o'. -[275/806] Compiling C object 'binary_c@sha/src_evolution_initialize_detached_system_every_timestep.c.o'. -[276/806] Compiling C object 'binary_c@sha/src_evolution_initialize_generic_system_every_timestep.c.o'. -[277/806] Compiling C object 'binary_c@sha/src_evolution_post_evolution.c.o'. -[278/806] Compiling C object 'binary_c@sha/src_evolution_loop_check.c.o'. -[279/806] Compiling C object 'binary_c@sha/src_evolution_loop_evolution.c.o'. -[280/806] Compiling C object 'binary_c@sha/src_tables_table_comenv.c.o'. -[281/806] Compiling C object 'binary_c@sha/src_evolution_pre_evolution.c.o'. -[282/806] Compiling C object 'binary_c@sha/src_evolution_set_next_timestep.c.o'. -[283/806] Compiling C object 'binary_c@sha/src_evolution_start_RLOF.c.o'. -[284/806] Compiling C object 'binary_c@sha/src_evolution_start_of_evolution.c.o'. -[285/806] Compiling C object 'binary_c@sha/src_evolution_system_is_observationally_single.c.o'. -[286/806] Compiling C object 'binary_c@sha/src_evolution_to_loop_or_not_to_loop.c.o'. -[287/806] Compiling C object 'binary_c@sha/src_evolution_terminate_evolution.c.o'. -[288/806] Compiling C object 'binary_c@sha/src_evolution_update_phase_start_times.c.o'. -[289/806] Compiling C object 'binary_c@sha/src_evolution_update_the_time.c.o'. -[290/806] Compiling C object 'binary_c@sha/src_evolution_zero_derivatives.c.o'. -[291/806] Compiling C object 'binary_c@sha/src_evolution_zero_stellar_derivatives.c.o'. -[292/806] Compiling C object 'binary_c@sha/src_evolution_initialize_parameters.c.o'. -[293/806] Compiling C object 'binary_c@sha/src_evolution_zero_stellar_mass_and_angmom_derivatives.c.o'. -[294/806] Compiling C object 'binary_c@sha/src_file_binary_c_fclose.c.o'. -[295/806] Compiling C object 'binary_c@sha/src_file_binary_c_filter_format.c.o'. -[296/806] Compiling C object 'binary_c@sha/src_file_binary_c_filter_vprintf.c.o'. -[297/806] Compiling C object 'binary_c@sha/src_evolution_evolution_difflog.c.o'. -[298/806] Compiling C object 'binary_c@sha/src_evolution_stellar_evolution.c.o'. -[299/806] Compiling C object 'binary_c@sha/src_file_binary_c_fflush.c.o'. -[300/806] Compiling C object 'binary_c@sha/src_file_binary_c_fopen.c.o'. -[301/806] Compiling C object 'binary_c@sha/src_file_binary_c_filter_fprintf.c.o'. -[302/806] Compiling C object 'binary_c@sha/src_file_binary_c_fprintf.c.o'. -[303/806] Compiling C object 'binary_c@sha/src_file_file_linecount.c.o'. -[304/806] Compiling C object 'binary_c@sha/src_common_envelope_common_envelope_evolution_BSE.c.o'. -[305/806] Compiling C object 'binary_c@sha/src_file_binary_c_vprintf.c.o'. -[306/806] Compiling C object 'binary_c@sha/src_galactic_monte_carlo_coordinates.c.o'. -[307/806] Compiling C object 'binary_c@sha/src_nucsyn_nucsyn_sn_woosley_weaver_1995.c.o'. -[308/806] Compiling C object 'binary_c@sha/src_galactic_apparent_luminosity.c.o'. -[309/806] Compiling C object 'binary_c@sha/src_galactic_apparent_magntiude.c.o'. -[310/806] Compiling C object 'binary_c@sha/src_galactic_bolometric_magnitude.c.o'. -[311/806] Compiling C object 'binary_c@sha/src_hoover_and_sms.c.o'. -[312/806] Compiling C object 'binary_c@sha/src_file_file_splitline.c.o'. -[313/806] Compiling C object 'binary_c@sha/src_nucsyn_nucsyn_sn_woosley_taam_weaver_1986.c.o'. -[314/806] Compiling C object 'binary_c@sha/src_galactic_extinction.c.o'. -[315/806] Compiling C object 'binary_c@sha/src_librinterpolate_rinterpolate_build_flags.c.o'. -[316/806] Compiling C object 'binary_c@sha/src_librinterpolate_rinterpolate.c.o'. -[317/806] Compiling C object 'binary_c@sha/src_librinterpolate_rinterpolate_alloc_cacheline.c.o'. -[318/806] Compiling C object 'binary_c@sha/src_librinterpolate_rinterpolate_add_new_table.c.o'. -[319/806] Compiling C object 'binary_c@sha/src_librinterpolate_rinterpolate_alloc_dataspace.c.o'. -[320/806] Compiling C object 'binary_c@sha/src_librinterpolate_rinterpolate_alloc_hypertable.c.o'. -[321/806] Compiling C object 'binary_c@sha/src_librinterpolate_rinterpolate_error.c.o'. -[322/806] Compiling C object 'binary_c@sha/src_librinterpolate_rinterpolate_id_table.c.o'. -[323/806] Compiling C object 'binary_c@sha/src_librinterpolate_rinterpolate_alloc_varcount.c.o'. -[324/806] Compiling C object 'binary_c@sha/src_librinterpolate_rinterpolate_check_cache.c.o'. -[325/806] Compiling C object 'binary_c@sha/src_librinterpolate_rinterpolate_free_data.c.o'. -[326/806] Compiling C object 'binary_c@sha/src_librinterpolate_rinterpolate_free_hypertable.c.o'. -[327/806] Compiling C object 'binary_c@sha/src_librinterpolate_rinterpolate_construct_hypercube.c.o'. -[328/806] Compiling C object 'binary_c@sha/src_logging_close_log_files.c.o'. -[329/806] Compiling C object 'binary_c@sha/src_logging_giant_abundance_log.c.o'. -[330/806] Compiling C object 'binary_c@sha/src_librinterpolate_rinterpolate_resize_cache.c.o'. -[331/806] Compiling C object 'binary_c@sha/src_librinterpolate_rinterpolate_interpolate.c.o'. -[332/806] Compiling C object 'binary_c@sha/src_librinterpolate_rinterpolate_make_presearch.c.o'. -[333/806] Compiling C object 'binary_c@sha/src_logging_append_logstring.c.o'. -[334/806] Compiling C object 'binary_c@sha/src_logging_detailed_log.c.o'. -[335/806] Compiling C object 'binary_c@sha/src_libmemoize_memoize.c.o'. -[336/806] Compiling C object 'binary_c@sha/src_librinterpolate_rinterpolate_make_steps.c.o'. -[337/806] Compiling C object 'binary_c@sha/src_librinterpolate_rinterpolate_store_cache.c.o'. -[338/806] Compiling C object 'binary_c@sha/src_logging_detail_log.c.o'. -[339/806] Compiling C object 'binary_c@sha/src_logging_gaia_log.c.o'. -[340/806] Compiling C object 'binary_c@sha/src_logging_log_barium_stars.c.o'. -[341/806] Compiling C object 'binary_c@sha/src_logging_log_hr.c.o'. -[342/806] Compiling C object 'binary_c@sha/src_logging_dump_stardata.c.o'. -[343/806] Compiling C object 'binary_c@sha/src_logging_log_jje.c.o'. -[344/806] Compiling C object 'binary_c@sha/src_logging_log_jl.c.o'. -[345/806] Compiling C object 'binary_c@sha/src_exit_binaryc.c.o'. -[346/806] Compiling C object 'binary_c@sha/src_librinterpolate_rinterpolate_search_table.c.o'. -[347/806] Compiling C object 'binary_c@sha/src_logging_load_stardata.c.o'. -[348/806] Compiling C object 'binary_c@sha/src_logging_log_rotation_checks.c.o'. -[349/806] Compiling C object 'binary_c@sha/src_logging_log_supernova.c.o'. -[350/806] Compiling C object 'binary_c@sha/src_logging_log_xray_binary.c.o'. -[351/806] Compiling C object 'binary_c@sha/src_logging_log_every_timestep.c.o'. -[352/806] Compiling C object 'binary_c@sha/src_logging_log_r_star.c.o'. -[353/806] Compiling C object 'binary_c@sha/src_logging_log_sn.c.o'. -[354/806] Compiling C object 'binary_c@sha/src_logging_log_supernova_sc.c.o'. -[355/806] Compiling C object 'binary_c@sha/src_logging_logwrap.c.o'. -[356/806] Compiling C object 'binary_c@sha/src_logging_output_string_to_memmap.c.o'. -[357/806] Compiling C object 'binary_c@sha/src_logging_sdb_check.c.o'. -[358/806] Compiling C object 'binary_c@sha/src_logging_output_string_to_log.c.o'. -[359/806] Compiling C object 'binary_c@sha/src_logging_output_to_detailed_logfile.c.o'. -[360/806] Compiling C object 'binary_c@sha/src_logging_stellar_type_log.c.o'. -[361/806] Compiling C object 'binary_c@sha/src_logging_unit_tests.c.o'. -[362/806] Compiling C object 'binary_c@sha/src_logging_open_log_files.c.o'. -[363/806] Compiling C object 'binary_c@sha/src_logging_wtts_log.c.o'. -[364/806] Compiling C object 'binary_c@sha/src_logging_set_logstring.c.o'. -[365/806] Compiling C object 'binary_c@sha/src_maths_bin_data.c.o'. -[366/806] Compiling C object 'binary_c@sha/src_logging_output_to_logfile.c.o'. -[367/806] Compiling C object 'binary_c@sha/src_maths_SolveCubic2.c.o'. -[368/806] Compiling C object 'binary_c@sha/src_maths_check_nans_are_signalled.c.o'. -[369/806] Compiling C object 'binary_c@sha/src_maths_interpolate_cubic_spline.c.o'. -[370/806] Compiling C object 'binary_c@sha/src_maths_GSL_integrator.c.o'. -[371/806] Compiling C object 'binary_c@sha/src_maths_binary_c_drandr.c.o'. -[372/806] Compiling C object 'binary_c@sha/src_maths_fastpow.c.o'. -[373/806] Compiling C object 'binary_c@sha/src_maths_brent_GSL_valist.c.o'. -[374/806] Compiling C object 'binary_c@sha/src_maths_apply_derivative.c.o'. -[375/806] Compiling C object 'binary_c@sha/src_logging_show_derivatives.c.o'. -[376/806] Compiling C object 'binary_c@sha/src_maths_fermi.c.o'. -[377/806] Compiling C object 'binary_c@sha/src_maths_generic_minimizer.c.o'. -[378/806] Compiling C object 'binary_c@sha/src_main2.c.o'. -[379/806] Compiling C object 'binary_c@sha/src_maths_invert3.c.o'. -[380/806] Compiling C object 'binary_c@sha/src_maths_nancheck.c.o'. -[381/806] Compiling C object 'binary_c@sha/src_maths_kaps_rentrop_LU_backsub.c.o'. -[382/806] Compiling C object 'binary_c@sha/src_maths_max_from_list.c.o'. -[383/806] Compiling C object 'binary_c@sha/src_maths_mt19937-64.c.o'. -[384/806] Compiling C object 'binary_c@sha/src_maths_kaps_rentrop_LU_decomp.c.o'. -[385/806] Compiling C object 'binary_c@sha/src_maths_polyalgorithm.c.o'. -[386/806] Compiling C object 'binary_c@sha/src_maths_setup_GSL_handlers.c.o'. -[387/806] Compiling C object 'binary_c@sha/src_maths_trigonometry.c.o'. -[388/806] Compiling C object 'binary_c@sha/src_maths_random_number.c.o'. -[389/806] Compiling C object 'binary_c@sha/src_memory_aligned_memcpy.c.o'. -[390/806] Compiling C object 'binary_c@sha/src_maths_pdist.c.o'. -[391/806] Compiling C object 'binary_c@sha/src_maths_timestamp.c.o'. -[392/806] Compiling C object 'binary_c@sha/src_maths_test_integrators.c.o'. -[393/806] Compiling C object 'binary_c@sha/src_memory_FastMemcpy_Avx.c.o'. -[394/806] Compiling C object 'binary_c@sha/src_memory_FastMemcpy.c.o'. -[395/806] Compiling C object 'binary_c@sha/src_memory_aligned_memcpy_fail.c.o'. -[396/806] Compiling C object 'binary_c@sha/src_memory_apex_memmove.c.o'. -[397/806] Compiling C object 'binary_c@sha/src_memory_codestats_memcpy.c.o'. -[398/806] Compiling C object 'binary_c@sha/src_maths_nhooke.c.o'. -[399/806] Compiling C object 'binary_c@sha/src_memory_free_aux_memory.c.o'. -[400/806] Compiling C object 'binary_c@sha/src_memory_build_tmpstore_contents.c.o'. -[401/806] Compiling C object 'binary_c@sha/src_memory_build_store_contents.c.o'. -[402/806] Compiling C object 'binary_c@sha/src_maths_kaps_rentrop_GSL.c.o'. -[403/806] Compiling C object 'binary_c@sha/src_memory_copy_stardata.c.o'. -[404/806] Compiling C object 'binary_c@sha/src_memory_free_memory.c.o'. -[405/806] Compiling C object 'binary_c@sha/src_memory_free_previous_stardatas.c.o'. -[406/806] Compiling C object 'binary_c@sha/src_memory_free_stardata_stack.c.o'. -[407/806] Compiling C object 'binary_c@sha/src_memory_check_aligned_memcpy.c.o'. -[408/806] Compiling C object 'binary_c@sha/src_memory_diff_struct_pc.c.o'. -[409/806] Compiling C object 'binary_c@sha/src_memory_initialize_pointers.c.o'. -[410/806] Compiling C object 'binary_c@sha/src_memory_strided_memcpy.c.o'. -[411/806] Compiling C object 'binary_c@sha/src_novae_dwarf_nova_critical_mass_transfer_rate.c.o'. -[412/806] Compiling C object 'binary_c@sha/src_novae_nova_erase_event_handler.c.o'. -[413/806] Compiling C object 'binary_c@sha/src_novae_nova_explosion_layer_mass.c.o'. -[414/806] Compiling C object 'binary_c@sha/src_novae_nova_angular_momentum_changes.c.o'. -[415/806] Compiling C object 'binary_c@sha/src_memory_free_tmpstore.c.o'. -[416/806] Compiling C object 'binary_c@sha/src_memory_free_store_contents.c.o'. -[417/806] Compiling C object 'binary_c@sha/src_maths_generic_bisect.c.o'. -[418/806] Compiling C object 'binary_c@sha/src_memory_main_allocations.c.o'. -[419/806] Compiling C object 'binary_c@sha/src_novae_nova_recurrence_time.c.o'. -[420/806] Compiling C object 'binary_c@sha/src_novae_nova_event_handler.c.o'. -[421/806] Compiling C object 'binary_c@sha/src_novae_nova_retention_fraction.c.o'. -[422/806] Compiling C object 'binary_c@sha/src_nucsyn_nucsyn_CN_timescale.c.o'. -[423/806] Compiling C object 'binary_c@sha/src_nucsyn_nucsyn_TZ_abundances.c.o'. -[424/806] Compiling C object 'binary_c@sha/src_nucsyn_nucsyn_WR.c.o'. -[425/806] Compiling C object 'binary_c@sha/src_nucsyn_nucsyn_anal_NeNa_burn.c.o'. -[426/806] Compiling C object 'binary_c@sha/src_nucsyn_nucsyn_anal_CNO_burn.c.o'. -[427/806] Compiling C object 'binary_c@sha/src_nucsyn_nucsyn_anal_MgAl_burn.c.o'. -[428/806] Compiling C object 'binary_c@sha/src_main.c.o'. -[429/806] Compiling C object 'binary_c@sha/src_nucsyn_nucsyn_WR_type.c.o'. -[430/806] Compiling C object 'binary_c@sha/src_nucsyn_nucsyn_add_mass_to_surface.c.o'. -[431/806] Compiling C object 'binary_c@sha/src_nucsyn_nucsyn_anal_NeNa_burn1.c.o'. -[432/806] Compiling C object 'binary_c@sha/src_nucsyn_nucsyn_angelou_lithium.c.o'. -[433/806] Compiling C object 'binary_c@sha/src_nucsyn_nucsyn_Xfuncs.c.o'. -[434/806] Compiling C object 'binary_c@sha/src_nucsyn_nucsyn_burn_NeNa.c.o'. -[435/806] Compiling C object 'binary_c@sha/src_nucsyn_nucsyn_burn_NeNaMgAlnoleak.c.o'. -[436/806] Compiling C object 'binary_c@sha/src_nucsyn_nucsyn_burn.c.o'. -[437/806] Compiling C object 'binary_c@sha/src_nucsyn_nucsyn_burn_hotCNO.c.o'. -[438/806] Compiling C object 'binary_c@sha/src_nucsyn_nucsyn_binary_yield.c.o'. -[439/806] Compiling C object 'binary_c@sha/src_nucsyn_nucsyn_burn_ppfast.c.o'. -[440/806] Compiling C object 'binary_c@sha/src_nucsyn_nucsyn_cemp_log.c.o'. -[441/806] Compiling C object 'binary_c@sha/src_nucsyn_nucsyn_build_store_contents.c.o'. -[442/806] Compiling C object 'binary_c@sha/src_nucsyn_nucsyn_check_abundance_array.c.o'. -[443/806] Compiling C object 'binary_c@sha/src_nucsyn_nucsyn_WR_table.c.o'. -[444/806] Compiling C object 'binary_c@sha/src_nucsyn_nucsyn_burning_cycles.c.o'. -[445/806] Compiling C object 'binary_c@sha/src_nucsyn_nucsyn_check_for_second_dredge_up.c.o'. -[446/806] Compiling C object 'binary_c@sha/src_nucsyn_nucsyn_burn_pp.c.o'. -[447/806] Compiling C object 'binary_c@sha/src_nucsyn_nucsyn_choose_wind_mixing_factor.c.o'. -[448/806] Compiling C object 'binary_c@sha/src_nucsyn_nucsyn_calc_yields.c.o'. -[449/806] Compiling C object 'binary_c@sha/src_nucsyn_nucsyn_burn_NeNaMgAl.c.o'. -[450/806] Compiling C object 'binary_c@sha/src_nucsyn_nucsyn_burn_coldCNO.c.o'. -[451/806] Compiling C object 'binary_c@sha/src_nucsyn_nucsyn_elemental_abundance.c.o'. -[452/806] Compiling C object 'binary_c@sha/src_nucsyn_nucsyn_ensemble_log.c.o'. -[453/806] Compiling C object 'binary_c@sha/src_nucsyn_nucsyn_element_to_atomic_number.c.o'. -[454/806] Compiling C object 'binary_c@sha/src_nucsyn_nucsyn_elemental_abundance_by_number.c.o'. -[455/806] Compiling C object 'binary_c@sha/src_nucsyn_nucsyn_free_icache.c.o'. -[456/806] Compiling C object 'binary_c@sha/src_nucsyn_nucsyn_free_store_contents.c.o'. -[457/806] Compiling C object 'binary_c@sha/src_nucsyn_nucsyn_init_first_pulse.c.o'. -[458/806] Compiling C object 'binary_c@sha/src_maths_nintlib.c.o'. -[459/806] Compiling C object 'binary_c@sha/src_nucsyn_nucsyn_dilute_shell.c.o'. -[460/806] Compiling C object 'binary_c@sha/src_nucsyn_nucsyn_dilute_shell_to.c.o'. -[461/806] Compiling C object 'binary_c@sha/src_nucsyn_nucsyn_effective_molecular_weight.c.o'. -[462/806] Compiling C object 'binary_c@sha/src_nucsyn_nucsyn_log.c.o'. -[463/806] Compiling C object 'binary_c@sha/src_nucsyn_nucsyn_elemental_square_bracket.c.o'. -[464/806] Compiling C object 'binary_c@sha/src_nucsyn_nucsyn_free_electron_density.c.o'. -[465/806] Compiling C object 'binary_c@sha/src_nucsyn_nucsyn_long_log.c.o'. -[466/806] Compiling C object 'binary_c@sha/src_nucsyn_nucsyn_lowz_yields.c.o'. -[467/806] Compiling C object 'binary_c@sha/src_nucsyn_nucsyn_hbbtmax.c.o'. -[468/806] Compiling C object 'binary_c@sha/src_nucsyn_nucsyn_hbb.c.o'. -[469/806] Compiling C object 'binary_c@sha/src_nucsyn_nucsyn_envelope_mass.c.o'. -[470/806] Compiling C object 'binary_c@sha/src_nucsyn_nucsyn_make_icache.c.o'. -[471/806] Compiling C object 'binary_c@sha/src_nucsyn_nucsyn_huge_pulse.c.o'. -[472/806] Compiling C object 'binary_c@sha/src_nucsyn_nucsyn_j_log.c.o'. -[473/806] Compiling C object 'binary_c@sha/src_nucsyn_nucsyn_network_test.c.o'. -[474/806] Compiling C object 'binary_c@sha/src_nucsyn_nucsyn_network_burn.c.o'. -[475/806] Compiling C object 'binary_c@sha/src_nucsyn_nucsyn_print_sigmav_table.c.o'. -[476/806] Compiling C object 'binary_c@sha/src_nucsyn_nucsyn_lamaxf.c.o'. -[477/806] Compiling C object 'binary_c@sha/src_nucsyn_nucsyn_lambda_rs.c.o'. -[478/806] Compiling C object 'binary_c@sha/src_nucsyn_nucsyn_lithium.c.o'. -[479/806] Compiling C object 'binary_c@sha/src_nucsyn_nucsyn_remove_dm_from_surface.c.o'. -[480/806] Compiling C object 'binary_c@sha/src_nucsyn_nucsyn_radioactive_decay.c.o'. -[481/806] Compiling C object 'binary_c@sha/src_nucsyn_nucsyn_main_sequence_convective_envelope_size.c.o'. -[482/806] Compiling C object 'binary_c@sha/src_nucsyn_nucsyn_mix_shells.c.o'. -[483/806] Compiling C object 'binary_c@sha/src_nucsyn_nucsyn_mix_accretion_layer_and_envelope.c.o'. -[484/806] Compiling C object 'binary_c@sha/src_nucsyn_nucsyn_merge_NSs.c.o'. -[485/806] Compiling C object 'binary_c@sha/src_nucsyn_nucsyn_planetary_nebulae.c.o'. -[486/806] Compiling C object 'binary_c@sha/src_nucsyn_nucsyn_mole_fraction.c.o'. -[487/806] Compiling C object 'binary_c@sha/src_nucsyn_nucsyn_molecular_weight.c.o'. -[488/806] Compiling C object 'binary_c@sha/src_nucsyn_nucsyn_recombination_energy_per_gram.c.o'. -[489/806] Compiling C object 'binary_c@sha/src_nucsyn_nucsyn_remove_mass_from_surface.c.o'. -[490/806] Compiling C object 'binary_c@sha/src_nucsyn_nucsyn_observed_surface_abundances.c.o'. -[491/806] Compiling C object 'binary_c@sha/src_nucsyn_nucsyn_r_process.c.o'. -[492/806] Compiling C object 'binary_c@sha/src_nucsyn_nucsyn_set_hbb_conditions.c.o'. -[493/806] Compiling C object 'binary_c@sha/src_nucsyn_nucsyn_r_process_Simmerer2004.c.o'. -[494/806] Compiling C object 'binary_c@sha/src_nucsyn_nucsyn_reaclib.c.o'. -[495/806] Compiling C object 'binary_c@sha/src_nucsyn_nucsyn_set_sigmav_from_table.c.o'. -[496/806] Compiling C object 'binary_c@sha/src_nucsyn_nucsyn_reset_reaction_rates.c.o'. -[497/806] Compiling C object 'binary_c@sha/src_nucsyn_nucsyn_renormalize_abundance.c.o'. -[498/806] Compiling C object 'binary_c@sha/src_nucsyn_nucsyn_set_1st_dup_abunds.c.o'. -[499/806] Compiling C object 'binary_c@sha/src_nucsyn_nucsyn_set_2nd_dup_abunds.c.o'. -[500/806] Compiling C object 'binary_c@sha/src_nucsyn_nucsyn_set_abunds_array.c.o'. -[501/806] Compiling C object 'binary_c@sha/src_nucsyn_nucsyn_set_WD_abunds.c.o'. -[502/806] Compiling C object 'binary_c@sha/src_nucsyn_nucsyn_r_process_Arlandini1999.c.o'. -[503/806] Compiling C object 'binary_c@sha/src_nucsyn_nucsyn_short_log.c.o'. -[504/806] Compiling C object 'binary_c@sha/src_nucsyn_nucsyn_set_nova_abunds.c.o'. -[505/806] Compiling C object 'binary_c@sha/src_nucsyn_nucsyn_sn_Seitenzahl2013_automatic.c.o'. -[506/806] Compiling C object 'binary_c@sha/src_nucsyn_nucsyn_set_remnant_abunds.c.o'. -[507/806] Compiling C object 'binary_c@sha/src_nucsyn_nucsyn_sn_source.c.o'. -[508/806] Compiling C object 'binary_c@sha/src_nucsyn_nucsyn_sn_core_collapse.c.o'. -[509/806] Compiling C object 'binary_c@sha/src_nucsyn_nucsyn_sn_Seitenzahl2013.c.o'. -[510/806] Compiling C object 'binary_c@sha/src_nucsyn_nucsyn_strip_and_mix.c.o'. -[511/806] Compiling C object 'binary_c@sha/src_nucsyn_nucsyn_thermohaline_mix_star.c.o'. -[512/806] Compiling C object 'binary_c@sha/src_nucsyn_nucsyn_sn_yield.c.o'. -[513/806] Compiling C object 'binary_c@sha/src_nucsyn_nucsyn_set_tpagb_free_parameters.c.o'. -[514/806] Compiling C object 'binary_c@sha/src_nucsyn_nucsyn_set_sigmav.c.o'. -[515/806] Compiling C object 'binary_c@sha/src_nucsyn_nucsyn_sn_electron_capture.c.o'. -[516/806] Compiling C object 'binary_c@sha/src_nucsyn_nucsyn_thermohaline_unstable.c.o'. -[517/806] Compiling C object 'binary_c@sha/src_nucsyn_nucsyn_totalX.c.o'. -[518/806] Compiling C object 'binary_c@sha/src_API_binary_c_list_args.c.o'. -[519/806] Compiling C object 'binary_c@sha/src_nucsyn_nucsyn_sn_livne_arnett_1995.c.o'. -[520/806] Compiling C object 'binary_c@sha/src_nucsyn_nucsyn_sn_iwamoto_1999_DD2.c.o'. -[521/806] Compiling C object 'binary_c@sha/src_opacity_opacity.c.o'. -[522/806] Compiling C object 'binary_c@sha/src_nucsyn_nucsyn_star_by_star.c.o'. -[523/806] Compiling C object 'binary_c@sha/src_opacity_opacity_STARS.c.o'. -[524/806] Compiling C object 'binary_c@sha/src_opacity_opacity_ferguson_opal.c.o'. -[525/806] Compiling C object 'binary_c@sha/src_nucsyn_nucsyn_thermohaline_mix.c.o'. -[526/806] Compiling C object 'binary_c@sha/src_nucsyn_nucsyn_update_abundances.c.o'. -[527/806] Compiling C object 'binary_c@sha/src_opacity_opacity_paczynski.c.o'. -[528/806] Compiling C object 'binary_c@sha/src_orbit_update_orbital_period_and_angular_frequency.c.o'. -[529/806] Compiling C object 'binary_c@sha/src_orbit_update_orbital_variables.c.o'. -[530/806] Compiling C object 'binary_c@sha/src_nucsyn_nucsyn_thermohaline_mixing_time.c.o'. -[531/806] Compiling C object 'binary_c@sha/src_reset_timeout.c.o'. -[532/806] Compiling C object 'binary_c@sha/src_setup_cmd_line_argstring.c.o'. -[533/806] Compiling C object 'binary_c@sha/src_setup_default_stardata.c.o'. -[534/806] Compiling C object 'binary_c@sha/src_nucsyn_nucsyn_s_process.c.o'. -[535/806] Compiling C object 'binary_c@sha/src_nucsyn_nucsyn_third_dredge_up.c.o'. -[536/806] Compiling C object 'binary_c@sha/src_setup_batchmode.c.o'. -[537/806] Compiling C object 'binary_c@sha/src_setup_force_flushing.c.o'. -[538/806] Compiling C object 'binary_c@sha/src_nucsyn_nucsyn_tpagb.c.o'. -[539/806] Compiling C object 'binary_c@sha/src_nucsyn_nucsyn_tpagb_rhomax.c.o'. -[540/806] Compiling C object 'binary_c@sha/src_setup_new_system.c.o'. -[541/806] Compiling C object 'binary_c@sha/src_setup_parse_arguments_from_string.c.o'. -[542/806] Compiling C object 'binary_c@sha/src_setup_random_seed.c.o'. -[543/806] Compiling C object 'binary_c@sha/src_setup_set_metallicities.c.o'. -[544/806] Compiling C object 'binary_c@sha/src_nucsyn_nucsyn_wgcoremasslum.c.o'. -[545/806] Compiling C object 'binary_c@sha/src_setup_set_metallicity_parameters.c.o'. -[546/806] Compiling C object 'binary_c@sha/src_setup_set_up_memmap.c.o'. -[547/806] Compiling C object 'binary_c@sha/src_setup_argument_setting_functions.c.o'. -[548/806] Compiling C object 'binary_c@sha/src_setup_set_defaults.c.o'. -[549/806] Compiling C object 'binary_c@sha/src_setup_show_cmd_line_args.c.o'. -[550/806] Compiling C object 'binary_c@sha/src_setup_set_default_preferences.c.o'. -[551/806] Compiling C object 'binary_c@sha/src_setup_set_up_variables.c.o'. -[552/806] Compiling C object 'binary_c@sha/src_setup_split_commandline.c.o'. -[553/806] Compiling C object 'binary_c@sha/src_setup_split_commandline_free.c.o'. -[554/806] Compiling C object 'binary_c@sha/src_setup_stardata_status.c.o'. -[555/806] Compiling C object 'binary_c@sha/src_signals_catch_signal.c.o'. -[556/806] Compiling C object 'binary_c@sha/src_signals_catch_timeout.c.o'. -[557/806] Compiling C object 'binary_c@sha/src_signals_tstp_handler.c.o'. -[558/806] Compiling C object 'binary_c@sha/src_nucsyn_nucsyn_set_third_dredgeup_abunds.c.o'. -[559/806] Compiling C object 'binary_c@sha/src_single_star_functions_E2.c.o'. -[560/806] Compiling C object 'binary_c@sha/src_signals_setup_segfaults.c.o'. -[561/806] Compiling C object 'binary_c@sha/src_single_star_functions_Xray_luminosity.c.o'. -[562/806] Compiling C object 'binary_c@sha/src_single_star_functions_corerd.c.o'. -[563/806] Compiling C object 'binary_c@sha/src_single_star_functions_breakup_angular_momentum.c.o'. -[564/806] Compiling C object 'binary_c@sha/src_single_star_functions_calc_stellar_wind_mass_loss.c.o'. -[565/806] Compiling C object 'binary_c@sha/src_single_star_functions_calculate_rotation_variables.c.o'. -[566/806] Compiling C object 'binary_c@sha/src_single_star_functions_core_envelope_coupling.c.o'. -[567/806] Compiling C object 'binary_c@sha/src_single_star_functions_dynamical_timescale.c.o'. -[568/806] Compiling C object 'binary_c@sha/src_single_star_functions_stellar_angular_momentum.c.o'. -[569/806] Compiling C object 'binary_c@sha/src_single_star_functions_dynamical_timescale_envelope.c.o'. -[570/806] Compiling C object 'binary_c@sha/src_single_star_functions_magnetic_braking.c.o'. -[571/806] Compiling C object 'binary_c@sha/src_single_star_functions_kelvin_helmholtz_time.c.o'. -[572/806] Compiling C object 'binary_c@sha/src_single_star_functions_strip_supermassive_star.c.o'. -[573/806] Compiling C object 'binary_c@sha/src_single_star_functions_stellar_density.c.o'. -[574/806] Compiling C object 'binary_c@sha/src_spectra_blackbody.c.o'. -[575/806] Compiling C object 'binary_c@sha/src_spectra_spectral_type.c.o'. -[576/806] Compiling C object 'binary_c@sha/src_stellar_colours_add_magnitudes.c.o'. -[577/806] Compiling C object 'binary_c@sha/src_stellar_colours_eldridge2015_magnitudes.c.o'. -[578/806] Compiling C object 'binary_c@sha/src_stellar_colours_luminosity_from_magnitude.c.o'. -[579/806] Compiling C object 'binary_c@sha/src_stellar_colours_eldridge2012_magnitudes.c.o'. -[580/806] Compiling C object 'binary_c@sha/src_single_star_functions_giant_age.c.o'. -[581/806] Compiling C object 'binary_c@sha/src_stellar_colours_gaia_magnitudes.c.o'. -[582/806] Compiling C object 'binary_c@sha/src_stellar_colours_magnitude_from_luminosity.c.o'. -[583/806] Compiling C object 'binary_c@sha/src_stellar_colours_stellar_magnitude_tests.c.o'. -[584/806] Compiling C object 'binary_c@sha/src_stellar_colours_stellar_magnitudes.c.o'. -[585/806] Compiling C object 'binary_c@sha/src_stellar_structure_bh_angular_velocity.c.o'. -[586/806] Compiling C object 'binary_c@sha/src_stellar_colours_unresolved_stellar_magnitudes.c.o'. -[587/806] Compiling C object 'binary_c@sha/src_stellar_structure_remnant_radius.c.o'. -[588/806] Compiling C object 'binary_c@sha/src_stellar_structure_stellar_structure.c.o'. -[589/806] Compiling C object 'binary_c@sha/src_stellar_structure_set_star_struct_from_stellar_structure.c.o'. -[590/806] Compiling C object 'binary_c@sha/src_stellar_structure_set_stellar_structure_struct_from_star.c.o'. -[591/806] Compiling C object 'binary_c@sha/src_stellar_colours_binary_magnitudes.c.o'. -[592/806] Compiling C object 'binary_c@sha/src_stellar_structure_stellar_structure_BH.c.o'. -[593/806] Compiling C object 'binary_c@sha/src_stellar_structure_convective_envelope_mass_and_radius.c.o'. -[594/806] Compiling C object 'binary_c@sha/src_stellar_structure_stellar_structure_AGB.c.o'. -[595/806] Compiling C object 'binary_c@sha/src_stellar_structure_stellar_structure_EAGB.c.o'. -[596/806] Compiling C object 'binary_c@sha/src_stellar_structure_stellar_structure_HG.c.o'. -[597/806] Compiling C object 'binary_c@sha/src_stellar_structure_stellar_structure_MS_BSE.c.o'. -[598/806] Compiling C object 'binary_c@sha/src_stellar_structure_stellar_structure_BSE.c.o'. -[599/806] Compiling C object 'binary_c@sha/src_stellar_structure_stellar_structure_CHeB.c.o'. -[600/806] Compiling C object 'binary_c@sha/src_stellar_structure_stellar_structure_NS.c.o'. -[601/806] Compiling C object 'binary_c@sha/src_stellar_structure_stellar_structure_RG.c.o'. -[602/806] Compiling C object 'binary_c@sha/src_setup_set_metallicity_parameters2.c.o'. -[603/806] Compiling C object 'binary_c@sha/src_stellar_structure_stellar_structure_HeStar.c.o'. -[604/806] Compiling C object 'binary_c@sha/src_stellar_structure_stellar_structure_WD.c.o'. -[605/806] Compiling C object 'binary_c@sha/src_stellar_structure_stellar_structure_modified_BSE.c.o'. -[606/806] Compiling C object 'binary_c@sha/src_stellar_structure_stellar_structure_algorithm.c.o'. -[607/806] Compiling C object 'binary_c@sha/src_stellar_structure_stellar_structure_giant_branch_helium_ignition.c.o'. -[608/806] Compiling C object 'binary_c@sha/src_stellar_structure_stellar_structure_nucsyn.c.o'. -[609/806] Compiling C object 'binary_c@sha/src_stellar_structure_stellar_structure_longcall.c.o'. -[610/806] Compiling C object 'binary_c@sha/src_stellar_structure_stellar_structure_make_massless_remnant.c.o'. -[611/806] Compiling C object 'binary_c@sha/src_stellar_timescales_stellar_timescales.c.o'. -[612/806] Compiling C object 'binary_c@sha/src_stellar_structure_stellar_structure_small_envelope_perturbations.c.o'. -[613/806] Compiling C object 'binary_c@sha/src_string_binary_c_apsrintf.c.o'. -[614/806] Compiling C object 'binary_c@sha/src_stellar_structure_stellar_structure_TPAGB.c.o'. -[615/806] Compiling C object 'binary_c@sha/src_stellar_structure_stellar_structure_remnant_and_perturbations.c.o'. -[616/806] Compiling C object 'binary_c@sha/src_stellar_timescales_stellar_timescales_GB_parameters.c.o'. -[617/806] Compiling C object 'binary_c@sha/src_stellar_structure_stellar_structure_small_envelope_miller_bertolami.c.o'. -[618/806] Compiling C object 'binary_c@sha/src_stellar_timescales_stellar_timescales_helium_stars.c.o'. -[619/806] Compiling C object 'binary_c@sha/src_stellar_timescales_stellar_timescales_high_mass_GB.c.o'. -[620/806] Compiling C object 'binary_c@sha/src_stellar_timescales_stellar_timescales_hydrogen_stars.c.o'. -[621/806] Compiling C object 'binary_c@sha/src_stellar_timescales_stellar_timescales_massive_AGB.c.o'. -[622/806] Compiling C object 'binary_c@sha/src_stellar_timescales_stellar_timescales_low_mass_AGB.c.o'. -[623/806] Compiling C object 'binary_c@sha/src_stellar_timescales_stellar_timescales_low_mass_GB.c.o'. -[624/806] Compiling C object 'binary_c@sha/src_string_chomp.c.o'. -[625/806] Compiling C object 'binary_c@sha/src_string_bsd_strlcat.c.o'. -[626/806] Compiling C object 'binary_c@sha/src_string_string_array_to_double_array.c.o'. -[627/806] Compiling C object 'binary_c@sha/src_supernovae_free_supernova.c.o'. -[628/806] Compiling C object 'binary_c@sha/src_stellar_timescales_stellar_timescales_post_HG.c.o'. -[629/806] Compiling C object 'binary_c@sha/src_supernovae_monte_carlo_kick.c.o'. -[630/806] Compiling C object 'binary_c@sha/src_nucsyn_nucsyn_WR_RS_table_lookup.c.o'. -[631/806] Compiling C object 'binary_c@sha/src_supernovae_new_supernova.c.o'. -[632/806] Compiling C object 'binary_c@sha/src_supernovae_supernova_ejecta_velocity.c.o'. -[633/806] Compiling C object 'binary_c@sha/src_supernovae_set_new_orbit.c.o'. -[634/806] Compiling C object 'binary_c@sha/src_supernovae_ns_bh_mass.c.o'. -[635/806] Compiling C object 'binary_c@sha/src_supernovae_supernova_erase_event_handler.c.o'. -[636/806] Compiling C object 'binary_c@sha/src_supernovae_set_kick_velocity.c.o'. -[637/806] Compiling C object 'binary_c@sha/src_supernovae_setup_binary_at_kick.c.o'. -[638/806] Compiling C object 'binary_c@sha/src_supernovae_supernova_event_handler.c.o'. -[639/806] Compiling C object 'binary_c@sha/src_supernovae_supernova_kinetic_energy.c.o'. -[640/806] Compiling C object 'binary_c@sha/src_supernovae_supernova.c.o'. -[641/806] Compiling C object 'binary_c@sha/src_supernovae_supernova_kick.c.o'. -[642/806] Compiling C object 'binary_c@sha/src_supernovae_supernova_luminous_energy.c.o'. -[643/806] Compiling C object 'binary_c@sha/src_supernovae_supernova_momentum.c.o'. -[644/806] Compiling C object 'binary_c@sha/src_tables_make_BSE_tables.c.o'. -[645/806] Compiling C object 'binary_c@sha/src_tables_table_1DUP.c.o'. -[646/806] Compiling C object 'binary_c@sha/src_tables_table_BSE.c.o'. -[647/806] Compiling C object 'binary_c@sha/src_tables_table_massive_MS_lifetimes.c.o'. -[648/806] Compiling C object 'binary_c@sha/src_tables_table_miller_bertolami.c.o'. -[649/806] Compiling C object 'binary_c@sha/src_supernovae_tauris_takens_orbit.c.o'. -[650/806] Compiling C object 'binary_c@sha/src_tables_table_Karakas2002_lumfunc.c.o'. -[651/806] Compiling C object 'binary_c@sha/src_tables_table_novae.c.o'. -[652/806] Compiling C object 'binary_c@sha/src_tables_table_opacity_STARS.c.o'. -[653/806] Compiling C object 'binary_c@sha/src_tables_table_opacity_ferguson_opal.c.o'. -[654/806] Compiling C object 'binary_c@sha/src_tables_table_opacity_paczynski.c.o'. -[655/806] Compiling C object 'binary_c@sha/src_tables_table_sigmav.c.o'. -[656/806] Compiling C object 'binary_c@sha/src_tables_table_s_process.c.o'. -[657/806] Compiling C object 'binary_c@sha/src_timers_calc_ticks_timer.c.o'. -[658/806] Compiling C object 'binary_c@sha/src_tables_table_Eldridge2012_magnitudes.c.o'. -[659/806] Compiling C object 'binary_c@sha/src_tables_table_spectral_types.c.o'. -[660/806] Compiling C object 'binary_c@sha/src_timers_final_timing_output.c.o'. -[661/806] Compiling C object 'binary_c@sha/src_timestep_setup_fixed_timesteps.c.o'. -[662/806] Compiling C object 'binary_c@sha/src_timestep_modulate_zoomfac.c.o'. -[663/806] Compiling C object 'binary_c@sha/src_tables_test_table.c.o'. -[664/806] Compiling C object 'binary_c@sha/src_timestep_stellar_timestep.c.o'. -[665/806] Compiling C object 'binary_c@sha/src_timestep_timestep_CHeB.c.o'. -[666/806] Compiling C object 'binary_c@sha/src_timestep_timestep_EAGB.c.o'. -[667/806] Compiling C object 'binary_c@sha/src_timestep_timestep_HeHG_HeGB.c.o'. -[668/806] Compiling C object 'binary_c@sha/src_timestep_timestep_FGB.c.o'. -[669/806] Compiling C object 'binary_c@sha/src_timestep_timestep_HG.c.o'. -[670/806] Compiling C object 'binary_c@sha/src_timestep_timestep_HeMS.c.o'. -[671/806] Compiling C object 'binary_c@sha/src_timestep_timestep_MS.c.o'. -[672/806] Compiling C object 'binary_c@sha/src_timestep_timestep_disc.c.o'. -[673/806] Compiling C object 'binary_c@sha/src_setup_version.c.o'. -[674/806] Compiling C object 'binary_c@sha/src_timestep_timestep_RLOF.c.o'. -[675/806] Compiling C object 'binary_c@sha/src_timestep_timestep_TPAGB.c.o'. -[676/806] Compiling C object 'binary_c@sha/src_timestep_timestep_fixed_timesteps.c.o'. -[677/806] Compiling C object 'binary_c@sha/src_timestep_timestep_fixed_trigger.c.o'. -[678/806] Compiling C object 'binary_c@sha/src_timestep_timestep_hard_limits.c.o'. -[679/806] Compiling C object 'binary_c@sha/src_timestep_timestep_increment_fixed_timesteps.c.o'. -[680/806] Compiling C object 'binary_c@sha/src_timestep_timestep_logging.c.o'. -[681/806] Compiling C object 'binary_c@sha/src_timestep_timestep_massless_remnant.c.o'. -[682/806] Compiling C object 'binary_c@sha/src_timestep_timestep_modulation.c.o'. -[683/806] Compiling C object 'binary_c@sha/src_timestep_timestep_other.c.o'. -[684/806] Compiling C object 'binary_c@sha/src_timestep_timestep_set_default_multipliers.c.o'. -[685/806] Compiling C object 'binary_c@sha/src_nucsyn_nucsyn_WR_table_lookup.c.o'. -[686/806] Compiling C object 'binary_c@sha/src_wind_wind_momentum_rate.c.o'. -[687/806] Compiling C object 'binary_c@sha/src_timers_timers.c.o'. -[688/806] Compiling C object 'binary_c@sha/src_zfuncs_COCoreToProtoMassDelayed.c.o'. -[689/806] Compiling C object 'binary_c@sha/src_wind_wind_Hurley2002.c.o'. -[690/806] Compiling C object 'binary_c@sha/src_timestep_timestep_limits.c.o'. -[691/806] Compiling C object 'binary_c@sha/src_wind_vwind.c.o'. -[692/806] Compiling C object 'binary_c@sha/src_wind_wind_AGB.c.o'. -[693/806] Compiling C object 'binary_c@sha/src_wind_wind_GB.c.o'. -[694/806] Compiling C object 'binary_c@sha/src_wind_wind_LBV.c.o'. -[695/806] Compiling C object 'binary_c@sha/src_zfuncs_COCoreToProtoMassRapid.c.o'. -[696/806] Compiling C object 'binary_c@sha/src_zfuncs_Hall_Tout_2014_AGB_radius.c.o'. -[697/806] Compiling C object 'binary_c@sha/src_wind_wind_Schneider.c.o'. -[698/806] Compiling C object 'binary_c@sha/src_zfuncs_Hall_Tout_2014_HeGB_radius.c.o'. -[699/806] Compiling C object 'binary_c@sha/src_zfuncs_Hurley2002_mc1tp.c.o'. -[700/806] Compiling C object 'binary_c@sha/src_zfuncs_Hall_Tout_2014_low_mass_HG_RGB_radius.c.o'. -[701/806] Compiling C object 'binary_c@sha/src_zfuncs_Hall_Tout_2014_HeHG_radius.c.o'. -[702/806] Compiling C object 'binary_c@sha/src_wind_wind_enhancement_factors.c.o'. -[703/806] Compiling C object 'binary_c@sha/src_zfuncs_Karakas2002_interpulse_period.c.o'. -[704/806] Compiling C object 'binary_c@sha/src_wind_wind_multiplicative_factors.c.o'. -[705/806] Compiling C object 'binary_c@sha/src_zfuncs_Padova_mc1tp.c.o'. -[706/806] Compiling C object 'binary_c@sha/src_zfuncs_Stancliffe_mc1tp.c.o'. -[707/806] Compiling C object 'binary_c@sha/src_zfuncs_L_1DUP.c.o'. -[708/806] Compiling C object 'binary_c@sha/src_wind_wind_WR.c.o'. -[709/806] Compiling C object 'binary_c@sha/src_zfuncs_baryonicRemnantMassGeneral.c.o'. -[710/806] Compiling C object 'binary_c@sha/src_zfuncs_Karakas2002_mc1tp.c.o'. -[711/806] Compiling C object 'binary_c@sha/src_zfuncs_WR_mu.c.o'. -[712/806] Compiling C object 'binary_c@sha/src_zfuncs_Karakas2002_lumfunc.c.o'. -[713/806] Compiling C object 'binary_c@sha/src_wind_wind_mass_loss_rate.c.o'. -[714/806] Compiling C object 'binary_c@sha/src_zfuncs_dm_intershell.c.o'. -[715/806] Compiling C object 'binary_c@sha/src_zfuncs_fallbackDelayed.c.o'. -[716/806] Compiling C object 'binary_c@sha/src_zfuncs_dust_formation_radius.c.o'. -[717/806] Compiling C object 'binary_c@sha/src_zfuncs_condensation_temperature.c.o'. -[718/806] Compiling C object 'binary_c@sha/src_zfuncs_Karakas2002_radius.c.o'. -[719/806] Compiling C object 'binary_c@sha/src_zfuncs_gamma_rot.c.o'. -[720/806] Compiling C object 'binary_c@sha/src_zfuncs_fphase.c.o'. -[721/806] Compiling C object 'binary_c@sha/src_zfuncs_effective_core_mass_fraction_of_MS_stars.c.o'. -[722/806] Compiling C object 'binary_c@sha/src_zfuncs_lalphf.c.o'. -[723/806] Compiling C object 'binary_c@sha/src_zfuncs_fallbackRapid.c.o'. -[724/806] Compiling C object 'binary_c@sha/src_zfuncs_lbetaf.c.o'. -[725/806] Compiling C object 'binary_c@sha/src_zfuncs_lbagbf.c.o'. -[726/806] Compiling C object 'binary_c@sha/src_zfuncs_lbgbdf.c.o'. -[727/806] Compiling C object 'binary_c@sha/src_zfuncs_lbgbf.c.o'. -[728/806] Compiling C object 'binary_c@sha/src_wind_wind_other.c.o'. -[729/806] Compiling C object 'binary_c@sha/src_zfuncs_lgbtf.c.o'. -[730/806] Compiling C object 'binary_c@sha/src_zfuncs_lheif.c.o'. -[731/806] Compiling C object 'binary_c@sha/src_zfuncs_lhef.c.o'. -[732/806] Compiling C object 'binary_c@sha/src_zfuncs_lnetaf.c.o'. -[733/806] Compiling C object 'binary_c@sha/src_zfuncs_lhookf.c.o'. -[734/806] Compiling C object 'binary_c@sha/src_zfuncs_lmcgbf.c.o'. -[735/806] Compiling C object 'binary_c@sha/src_zfuncs_lns.c.o'. -[736/806] Compiling C object 'binary_c@sha/src_zfuncs_logLeff.c.o'. -[737/806] Compiling C object 'binary_c@sha/src_zfuncs_logg.c.o'. -[738/806] Compiling C object 'binary_c@sha/src_zfuncs_lpertf.c.o'. -[739/806] Compiling C object 'binary_c@sha/src_zfuncs_ltmsf.c.o'. -[740/806] Compiling C object 'binary_c@sha/src_zfuncs_lum_mc_EAGB.c.o'. -[741/806] Compiling C object 'binary_c@sha/src_zfuncs_lwd.c.o'. -[742/806] Compiling C object 'binary_c@sha/src_zfuncs_lzahbf.c.o'. -[743/806] Compiling C object 'binary_c@sha/src_zfuncs_lzamsf.c.o'. -[744/806] Compiling C object 'binary_c@sha/src_zfuncs_m_1dup.c.o'. -[745/806] Compiling C object 'binary_c@sha/src_zfuncs_massFallbackGeneral.c.o'. -[746/806] Compiling C object 'binary_c@sha/src_zfuncs_lzhef.c.o'. -[747/806] Compiling C object 'binary_c@sha/src_zfuncs_m_conv_core.c.o'. -[748/806] Compiling C object 'binary_c@sha/src_zfuncs_mass_CO_core_at_BAGB.c.o'. -[749/806] Compiling C object 'binary_c@sha/src_zfuncs_mass_He_core_at_endofMS.c.o'. -[750/806] Compiling C object 'binary_c@sha/src_zfuncs_max_m_conv_core.c.o'. -[751/806] Compiling C object 'binary_c@sha/src_zfuncs_mbagbf.c.o'. -[752/806] Compiling C object 'binary_c@sha/src_zfuncs_mc1tp.c.o'. -[753/806] Compiling C object 'binary_c@sha/src_zfuncs_mc_1DUP.c.o'. -[754/806] Compiling C object 'binary_c@sha/src_zfuncs_mcagbf.c.o'. -[755/806] Compiling C object 'binary_c@sha/src_zfuncs_mc_heburn.c.o'. -[756/806] Compiling C object 'binary_c@sha/src_zfuncs_mcbgb.c.o'. -[757/806] Compiling C object 'binary_c@sha/src_zfuncs_mcgbf.c.o'. -[758/806] Compiling C object 'binary_c@sha/src_zfuncs_mctmsf.c.o'. -[759/806] Compiling C object 'binary_c@sha/src_zfuncs_mcgbtf.c.o'. -[760/806] Compiling C object 'binary_c@sha/src_zfuncs_mcx_eagbf.c.o'. -[761/806] Compiling C object 'binary_c@sha/src_zfuncs_mcheif.c.o'. -[762/806] Compiling C object 'binary_c@sha/src_zfuncs_menv_1DUP.c.o'. -[763/806] Compiling C object 'binary_c@sha/src_zfuncs_menvf.c.o'. -[764/806] Compiling C object 'binary_c@sha/src_zfuncs_min_He_ignition_core_mass.c.o'. -[765/806] Compiling C object 'binary_c@sha/src_zfuncs_mheif.c.o'. -[766/806] Compiling C object 'binary_c@sha/src_zfuncs_molecular_weight.c.o'. -[767/806] Compiling C object 'binary_c@sha/src_zfuncs_next_evolving_star.c.o'. -[768/806] Compiling C object 'binary_c@sha/src_zfuncs_next_nuclear_burning_star.c.o'. -[769/806] Compiling C object 'binary_c@sha/src_zfuncs_omegaspin.c.o'. -[770/806] Compiling C object 'binary_c@sha/src_zfuncs_moment_of_inertia.c.o'. -[771/806] Compiling C object 'binary_c@sha/src_zfuncs_r_rot.c.o'. -[772/806] Compiling C object 'binary_c@sha/src_zfuncs_ralphf.c.o'. -[773/806] Compiling C object 'binary_c@sha/src_zfuncs_rbh.c.o'. -[774/806] Compiling C object 'binary_c@sha/src_zfuncs_rbetaf.c.o'. -[775/806] Compiling C object 'binary_c@sha/src_zfuncs_renvf.c.o'. -[776/806] Compiling C object 'binary_c@sha/src_zfuncs_rgammf.c.o'. -[777/806] Compiling C object 'binary_c@sha/src_zfuncs_preMS.c.o'. -[778/806] Compiling C object 'binary_c@sha/src_zfuncs_rgbf.c.o'. -[779/806] Compiling C object 'binary_c@sha/src_zfuncs_rhegbf.c.o'. -[780/806] Compiling C object 'binary_c@sha/src_zfuncs_ragbf.c.o'. -[781/806] Compiling C object 'binary_c@sha/src_zfuncs_rhehgf.c.o'. -[782/806] Compiling C object 'binary_c@sha/src_zfuncs_rhelmf.c.o'. -[783/806] Compiling C object 'binary_c@sha/src_zfuncs_rhookf.c.o'. -[784/806] Compiling C object 'binary_c@sha/src_zfuncs_rminf.c.o'. -[785/806] Compiling C object 'binary_c@sha/src_zfuncs_rns.c.o'. -[786/806] Compiling C object 'binary_c@sha/src_zfuncs_rpertf.c.o'. -[787/806] Compiling C object 'binary_c@sha/src_zfuncs_rtmsf.c.o'. -[788/806] Compiling C object 'binary_c@sha/src_zfuncs_rwd.c.o'. -[789/806] Compiling C object 'binary_c@sha/src_zfuncs_rzahbf.c.o'. -[790/806] Compiling C object 'binary_c@sha/src_zfuncs_rzhef.c.o'. -[791/806] Compiling C object 'binary_c@sha/src_zfuncs_stripdata.c.o'. -[792/806] Compiling C object 'binary_c@sha/src_zfuncs_rzamsf.c.o'. -[793/806] Compiling C object 'binary_c@sha/src_zfuncs_system_mass.c.o'. -[794/806] Compiling C object 'binary_c@sha/src_zfuncs_tbgbf.c.o'. -[795/806] Compiling C object 'binary_c@sha/src_zfuncs_themsf.c.o'. -[796/806] Compiling C object 'binary_c@sha/src_zfuncs_tblf.c.o'. -[797/806] Compiling C object 'binary_c@sha/src_zfuncs_thick_disk_age.c.o'. -[798/806] Compiling C object 'binary_c@sha/src_zfuncs_thef.c.o'. -[799/806] Compiling C object 'binary_c@sha/src_zfuncs_thookf.c.o'. -[800/806] Compiling C object 'binary_c@sha/src_zfuncs_vrotf.c.o'. -[801/806] Compiling C object 'binary_c@sha/src_nucsyn_nucsyn_sn_chieffi_limongi_2004.c.o'. -[802/806] Compiling C object 'binary_c@sha/src_nucsyn_nucsyn_initial_abundances.c.o'. -[803/806] Compiling C object 'binary_c@sha/src_setup_parse_arguments.c.o'. -[804/806] Compiling C object 'binary_c@sha/src_setup_set_cmd_line_macro_pairs.c.o'. -[805/806] Compiling C object 'binary_c@sha/src_nucsyn_nucsyn_set_nuc_masses.c.o'. -[806/806] Linking target libbinary_c.so. -[1/2] Generating binary_c.h.pch with a custom command. -[2/2] Generating symlink_binary_c with a custom command. -Removing intermediate container ed4b8c061140 - ---> 99ff260bb818 + ---> Using cache + ---> 356b28ca8dba +Step 37/53 : RUN export LD_LIBRARY_PATH=$HOME/lib LIBRARY_PATH=$HOME/lib && ninja binary_c_install_legacy + ---> Using cache + ---> b617a8138dbc Step 38/53 : WORKDIR /home/binary_c/progs/stars/binary_c - ---> Running in 6dea52c6c511 -Removing intermediate container 6dea52c6c511 - ---> e00867e6b3c7 -Step 39/53 : RUN cpanm --local-lib=~/perl5 local::lib && eval $(perl -I ~/perl5/lib/perl5/ -Mlocal::lib) && cpanm -v --notest Sys::Info - ---> Running in 9156c57e642b + ---> Using cache + ---> a087c2138d09 +Step 39/53 : RUN rm -rf builddir + ---> Using cache + ---> a64867329d92 +Step 40/53 : WORKDIR /home/binary_c/progs/stars/binary_c + ---> Using cache + ---> 37d556773b04 +Step 41/53 : RUN cpanm --local-lib=~/perl5 local::lib && eval $(perl -I ~/perl5/lib/perl5/ -Mlocal::lib) && cpanm -v --notest Sys::Info + ---> Running in 14d123ac5a12 --> Working on local::lib Fetching http://www.cpan.org/authors/id/H/HA/HAARG/local-lib-2.000024.tar.gz ... OK Configuring local-lib-2.000024 ... OK @@ -1813,7 +128,7 @@ Successfully installed local-lib-2.000024 1 distribution installed [91mAttempting to create directory /home/binary_c/perl5 [0m[91mcpanm (App::cpanminus) 1.7044 on perl 5.031005 built for x86_64-linux-thread-multi -Work directory is /home/binary_c/.cpanm/work/1573495579.1 +Work directory is /home/binary_c/.cpanm/work/1573497565.1 [0m[91mYou have make /usr/bin/make [0m[91mYou have /usr/bin/wget [0m[91mYou have /bin/tar: tar (GNU tar) 1.29 @@ -1825,28 +140,28 @@ There is NO WARRANTY, to the extent permitted by law. Written by John Gilmore and Jay Fenlason. [0m[91mYou have /usr/bin/unzip [0m[91mSearching Sys::Info () on cpanmetadb ... -[0m[91m--2019-11-11 18:06:19-- http://cpanmetadb.plackperl.org/v1.0/package/Sys::Info +[0m[91m--2019-11-11 18:39:25-- http://cpanmetadb.plackperl.org/v1.0/package/Sys::Info Resolving cpanmetadb.plackperl.org (cpanmetadb.plackperl.org)... [0m[91m151.101.18.217 Connecting to cpanmetadb.plackperl.org (cpanmetadb.plackperl.org)|151.101.18.217|:80... [0m[91mconnected. HTTP request sent, awaiting response... [0m[91m200 OK Length: 94 [text/yaml] Saving to: 'STDOUT' - 0K [0m[91m [0m[91m [0m[91m 100% 7.02M=0s + 0K [0m[91m [0m[91m 100% 7.90M=0s -[0m[91m2019-11-11 18:06:20 (7.02 MB/s) - written to stdout [94/94] +[0m[91m2019-11-11 18:39:25 (7.90 MB/s) - written to stdout [94/94] [0m--> Working on Sys::Info -Fetching http://www.cpan.org/authors/id/B/BU/BURAK/Sys-Info-0.7811.tar.gz ... [91m--2019-11-11 18:06:20-- http://www.cpan.org/authors/id/B/BU/BURAK/Sys-Info-0.7811.tar.gz +Fetching http://www.cpan.org/authors/id/B/BU/BURAK/Sys-Info-0.7811.tar.gz ... [91m--2019-11-11 18:39:25-- http://www.cpan.org/authors/id/B/BU/BURAK/Sys-Info-0.7811.tar.gz Resolving www.cpan.org (www.cpan.org)... [0m[91m151.101.18.217 Connecting to www.cpan.org (www.cpan.org)|151.101.18.217|:80... [0m[91mconnected. HTTP request sent, awaiting response... [0m[91m200 OK Length: 16251 (16K) [application/x-gzip] Saving to: 'Sys-Info-0.7811.tar.gz' [0m[91m - 0K ........[0m[91m.. ..[0m[91m... [0m[91m100% 2.70M=0.006s + 0K ........[0m[91m.. ..[0m[91m... 100% 2.62M=0.006s -[0m[91m2019-11-11 18:06:20 (2.70 MB/s) - 'Sys-Info-0.7811.tar.gz' saved [16251/16251] +[0m[91m2019-11-11 18:39:25 (2.62 MB/s) - 'Sys-Info-0.7811.tar.gz' saved [16251/16251] [0m[91mUnpacking Sys-Info-0.7811.tar.gz [0mOK @@ -1874,8 +189,8 @@ Sys-Info-0.7811/t/04-driver.t [91mEntering Sys-Info-0.7811 [0m[91mChecking configure dependencies from META.json [0m[91mChecking if you have ExtUtils::MakeMaker 6.58 ... [0m[91mYes (7.38) -[0mConfiguring Sys-Info-0.7811 ... [91mRunning Makefile.PL -[0m[91mWarning: prerequisite Sys::Info::Base 0.78 not found. +[0m[91mRunning Makefile.PL +[0mConfiguring Sys-Info-0.7811 ... [91mWarning: prerequisite Sys::Info::Base 0.78 not found. Warning: prerequisite Sys::Info::Driver::Linux 0.78 not found. [0m[91mWarning: prerequisite Test::Sys::Info 0.20 not found. [0mChecking if your kit is complete... @@ -1890,28 +205,28 @@ Checking if you have Sys::Info::Base 0.78 ... [0m[91mNo [0m[91mSearching Sys::Info::Base (0.78) on cpanmetadb ... [0mOK ==> Found dependencies: Sys::Info::Base, Sys::Info::Driver::Linux -[91m--2019-11-11 18:06:20-- http://cpanmetadb.plackperl.org/v1.0/package/Sys::Info::Base +[91m--2019-11-11 18:39:25-- http://cpanmetadb.plackperl.org/v1.0/package/Sys::Info::Base Resolving cpanmetadb.plackperl.org (cpanmetadb.plackperl.org)... [0m[91m151.101.18.217 Connecting to cpanmetadb.plackperl.org (cpanmetadb.plackperl.org)|151.101.18.217|:80... [0m[91mconnected. -[0m[91mHTTP request sent, awaiting response... [0m[91m200 OK +HTTP request sent, awaiting response... [0m[91m200 OK Length: 277 [text/yaml] Saving to: 'STDOUT' - 0K [0m[91m [0m[91m [0m[91m [0m[91m [0m[91m [0m[91m [0m[91m [0m[91m 100%[0m[91m 33.9M=0s + 0K [0m[91m 100% 38.3M=0s -[0m[91m2019-11-11 18:06:20 (33.9 MB/s) - written to stdout [277/277] +2019-11-11 18:39:25 (38.3 MB/s) - written to stdout [277/277] [0m--> Working on Sys::Info::Base -Fetching http://www.cpan.org/authors/id/B/BU/BURAK/Sys-Info-Base-0.7807.tar.gz ... [91m--2019-11-11 18:06:20-- http://www.cpan.org/authors/id/B/BU/BURAK/Sys-Info-Base-0.7807.tar.gz +Fetching http://www.cpan.org/authors/id/B/BU/BURAK/Sys-Info-Base-0.7807.tar.gz ... [91m--2019-11-11 18:39:25-- http://www.cpan.org/authors/id/B/BU/BURAK/Sys-Info-Base-0.7807.tar.gz Resolving www.cpan.org (www.cpan.org)... [0m[91m151.101.18.217 Connecting to www.cpan.org (www.cpan.org)|151.101.18.217|:80... [0m[91mconnected. HTTP request sent, awaiting response... [0m[91m200 OK Length: 21739 (21K) [application/x-gzip] Saving to: 'Sys-Info-Base-0.7807.tar.gz' [0m[91m - 0K ........[0m[91m..[0m[91m ..[0m[91m........ . 100% 2.17M[0m[91m=0.01s + 0K ........[0m[91m.. ..[0m[91m.......[0m[91m. . [0m[91m 100%[0m[91m 2.16M=0.01s -2019-11-11 18:06:20 (2.17 MB/s) - 'Sys-Info-Base-0.7807.tar.gz' saved [21739/21739] +[0m[91m2019-11-11 18:39:25 (2.16 MB/s) - 'Sys-Info-Base-0.7807.tar.gz' saved [21739/21739] [0m[91mUnpacking Sys-Info-Base-0.7807.tar.gz [0mOK @@ -1960,33 +275,33 @@ Writing MYMETA.yml and MYMETA.json [0m[91mSearching Text::Template::Simple (0) on cpanmetadb ... [0mOK ==> Found dependencies: Text::Template::Simple -[91m--2019-11-11 18:06:20-- http://cpanmetadb.plackperl.org/v1.0/package/Text::Template::Simple +[91m--2019-11-11 18:39:25-- http://cpanmetadb.plackperl.org/v1.0/package/Text::Template::Simple Resolving cpanmetadb.plackperl.org (cpanmetadb.plackperl.org)... [0m[91m151.101.18.217 Connecting to cpanmetadb.plackperl.org (cpanmetadb.plackperl.org)|151.101.18.217|:80... [0m[91mconnected. HTTP request sent, awaiting response... [0m[91m200 OK Length: 698 [text/yaml] Saving to: 'STDOUT' [0m[91m - 0K [0m[91m [0m[91m 100% 73.3M=0s + 0K [0m[91m [0m[91m [0m[91m [0m[91m [0m[91m [0m[91m [0m[91m 100%[0m[91m 124M=0s -[0m[91m2019-11-11 18:06:20 (73.3 MB/s) - written to stdout [698/698] +2019-11-11 18:39:26 (124 MB/s) - written to stdout [698/698] [0m--> Working on Text::Template::Simple -Fetching http://www.cpan.org/authors/id/B/BU/BURAK/Text-Template-Simple-0.91.tar.gz ... [91m--2019-11-11 18:06:21-- http://www.cpan.org/authors/id/B/BU/BURAK/Text-Template-Simple-0.91.tar.gz +Fetching http://www.cpan.org/authors/id/B/BU/BURAK/Text-Template-Simple-0.91.tar.gz ... [91m--2019-11-11 18:39:26-- http://www.cpan.org/authors/id/B/BU/BURAK/Text-Template-Simple-0.91.tar.gz Resolving www.cpan.org (www.cpan.org)... [0m[91m151.101.18.217 Connecting to www.cpan.org (www.cpan.org)|151.101.18.217|:80... [0m[91mconnected. HTTP request sent, awaiting response... [0m[91m200 OK Length: 69216 (68K) [application/x-gzip] Saving to: 'Text-Template-Simple-0.91.tar.gz' [0m[91m - 0K ........[0m[91m.. ..[0m[91m........ ........[0m[91m.. .....[0m[91m....[0m[91m. .......... 73% 1.12M 0s[0m[91m - 50K .......... ......[0m[91m. [0m[91m [0m[91m [0m[91m [0m[91m [0m[91m 100%[0m[91m 61.7M[0m[91m=0.04s + 0K .......... ..[0m[91m.......[0m[91m. .......[0m[91m... .......[0m[91m..[0m[91m. ........[0m[91m.. 73% 1.13M 0s + 50K .......... ....... [0m[91m 100% 177M[0m[91m=0.04s -[0m[91m2019-11-11 18:06:21 (1.51 MB/s) - 'Text-Template-Simple-0.91.tar.gz' saved [69216/69216] +[0m[91m2019-11-11 18:39:26 (1.52 MB/s) - 'Text-Template-Simple-0.91.tar.gz' saved [69216/69216] -[0m[91mUnpacking Text-Template-Simple-0.91.tar.gz [0mOK -Text-Template-Simple-0.91/ +[91mUnpacking Text-Template-Simple-0.91.tar.gz +[0mText-Template-Simple-0.91/ Text-Template-Simple-0.91/LICENSE Text-Template-Simple-0.91/bin/ Text-Template-Simple-0.91/Changes @@ -2098,32 +413,32 @@ Text-Template-Simple-0.91/bin/tts [91mEntering Text-Template-Simple-0.91 [0m[91mChecking configure dependencies from META.json [0m[91mChecking if you have ExtUtils::MakeMaker 6.58 ... [0m[91mYes (7.38) -[0m[91mRunning Makefile.PL -[0mConfiguring Text-Template-Simple-0.91 ... Checking if your kit is complete... +[0mConfiguring Text-Template-Simple-0.91 ... [91mRunning Makefile.PL +[0mChecking if your kit is complete... Looks good Generating a Unix-style Makefile Writing Makefile for Text::Template::Simple Writing MYMETA.yml and MYMETA.json [91mChecking dependencies from MYMETA.json ... -[0m[91mChecking if you have ExtUtils::MakeMaker 0 ... [0m[91mYes (7.38) -Checking if you have Digest::MD5 1 ... [0m[91mYes (2.55_01) +[0m[91mChecking if you have Digest::MD5 1 ... [0m[91mYes (2.55_01) +Checking if you have ExtUtils::MakeMaker 0 ... [0m[91mYes (7.38) [0mOK -Building Text-Template-Simple-0.91 ... cp lib/Text/Template/Simple/IO.pm blib/lib/Text/Template/Simple/IO.pm -cp lib/Text/Template/Simple/Dummy.pm blib/lib/Text/Template/Simple/Dummy.pm -cp lib/Text/Template/Simple/Base/Compiler.pm blib/lib/Text/Template/Simple/Base/Compiler.pm -cp lib/Text/Template/Simple/Cache.pm blib/lib/Text/Template/Simple/Cache.pm -cp lib/Text/Template/Simple/Compiler/Safe.pm blib/lib/Text/Template/Simple/Compiler/Safe.pm -cp lib/Text/Template/Simple/Base/Parser.pm blib/lib/Text/Template/Simple/Base/Parser.pm -cp lib/Text/Template/Simple/Base/Include.pm blib/lib/Text/Template/Simple/Base/Include.pm -cp lib/Text/Template/Simple/Caller.pm blib/lib/Text/Template/Simple/Caller.pm -cp lib/Text/Template/Simple/Compiler.pm blib/lib/Text/Template/Simple/Compiler.pm -cp lib/Text/Template/Simple/Cache/ID.pm blib/lib/Text/Template/Simple/Cache/ID.pm -cp lib/Text/Template/Simple/Util.pm blib/lib/Text/Template/Simple/Util.pm -cp lib/Text/Template/Simple/Constants.pm blib/lib/Text/Template/Simple/Constants.pm +Building Text-Template-Simple-0.91 ... cp lib/Text/Template/Simple/Base/Compiler.pm blib/lib/Text/Template/Simple/Base/Compiler.pm cp lib/Text/Template/Simple.pm blib/lib/Text/Template/Simple.pm -cp lib/Text/Template/Simple/Tokenizer.pm blib/lib/Text/Template/Simple/Tokenizer.pm +cp lib/Text/Template/Simple/Util.pm blib/lib/Text/Template/Simple/Util.pm +cp lib/Text/Template/Simple/IO.pm blib/lib/Text/Template/Simple/IO.pm cp lib/Text/Template/Simple/Base/Examine.pm blib/lib/Text/Template/Simple/Base/Examine.pm +cp lib/Text/Template/Simple/Constants.pm blib/lib/Text/Template/Simple/Constants.pm +cp lib/Text/Template/Simple/Cache/ID.pm blib/lib/Text/Template/Simple/Cache/ID.pm +cp lib/Text/Template/Simple/Compiler.pm blib/lib/Text/Template/Simple/Compiler.pm cp lib/Text/Template/Simple/API.pod blib/lib/Text/Template/Simple/API.pod +cp lib/Text/Template/Simple/Base/Parser.pm blib/lib/Text/Template/Simple/Base/Parser.pm +cp lib/Text/Template/Simple/Cache.pm blib/lib/Text/Template/Simple/Cache.pm +cp lib/Text/Template/Simple/Tokenizer.pm blib/lib/Text/Template/Simple/Tokenizer.pm +cp lib/Text/Template/Simple/Base/Include.pm blib/lib/Text/Template/Simple/Base/Include.pm +cp lib/Text/Template/Simple/Compiler/Safe.pm blib/lib/Text/Template/Simple/Compiler/Safe.pm +cp lib/Text/Template/Simple/Caller.pm blib/lib/Text/Template/Simple/Caller.pm +cp lib/Text/Template/Simple/Dummy.pm blib/lib/Text/Template/Simple/Dummy.pm cp bin/tts blib/script/tts "/home/binary_c/perl5/perlbrew/perls/perl-5.31.5/bin/perl5.31.5" -MExtUtils::MY -e 'MY->fixin(shift)' -- blib/script/tts Installing /home/binary_c/perl5/lib/perl5/Text/Template/Simple.pm @@ -2148,13 +463,13 @@ OK Successfully installed Text-Template-Simple-0.91 Installing /home/binary_c/perl5/lib/perl5/x86_64-linux-thread-multi/.meta/Text-Template-Simple-0.91/MYMETA.json Installing /home/binary_c/perl5/lib/perl5/x86_64-linux-thread-multi/.meta/Text-Template-Simple-0.91/install.json -Building Sys-Info-Base-0.7807 ... cp lib/Sys/Info/Constants.pm blib/lib/Sys/Info/Constants.pm +Building Sys-Info-Base-0.7807 ... cp lib/Sys/Info/Device.pm blib/lib/Sys/Info/Device.pm cp lib/Sys/Info/Helper.pm blib/lib/Sys/Info/Helper.pm -cp lib/Sys/Info/Base.pm blib/lib/Sys/Info/Base.pm cp lib/Sys/Info/Driver.pm blib/lib/Sys/Info/Driver.pm -cp lib/Sys/Info/Device.pm blib/lib/Sys/Info/Device.pm -cp lib/Sys/Info/Device/CPU.pm blib/lib/Sys/Info/Device/CPU.pm cp lib/Sys/Info/OS.pm blib/lib/Sys/Info/OS.pm +cp lib/Sys/Info/Constants.pm blib/lib/Sys/Info/Constants.pm +cp lib/Sys/Info/Device/CPU.pm blib/lib/Sys/Info/Device/CPU.pm +cp lib/Sys/Info/Base.pm blib/lib/Sys/Info/Base.pm Installing /home/binary_c/perl5/lib/perl5/Sys/Info/Driver.pm Installing /home/binary_c/perl5/lib/perl5/Sys/Info/Base.pm Installing /home/binary_c/perl5/lib/perl5/Sys/Info/Device.pm @@ -2168,28 +483,28 @@ Successfully installed Sys-Info-Base-0.7807 Installing /home/binary_c/perl5/lib/perl5/x86_64-linux-thread-multi/.meta/Sys-Info-Base-0.7807/MYMETA.json Installing /home/binary_c/perl5/lib/perl5/x86_64-linux-thread-multi/.meta/Sys-Info-Base-0.7807/install.json [91mSearching Sys::Info::Driver::Linux (0.78) on cpanmetadb ... -[0m[91m--2019-11-11 18:06:22-- http://cpanmetadb.plackperl.org/v1.0/package/Sys::Info::Driver::Linux +[0m[91m--2019-11-11 18:39:27-- http://cpanmetadb.plackperl.org/v1.0/package/Sys::Info::Driver::Linux Resolving cpanmetadb.plackperl.org (cpanmetadb.plackperl.org)... [0m[91m151.101.18.217 Connecting to cpanmetadb.plackperl.org (cpanmetadb.plackperl.org)|151.101.18.217|:80... [0m[91mconnected. HTTP request sent, awaiting response... [0m[91m200 OK Length: 410 [text/yaml] Saving to: 'STDOUT' +[0m[91m + 0K [0m[91m [0m[91m [0m[91m 100% 40.2M=0s[0m[91m - 0K [0m[91m 100% 37.5M=0s[0m[91m - -[0m[91m2019-11-11 18:06:22 (37.5 MB/s) - written to stdout [410/410] +2019-11-11 18:39:27 (40.2 MB/s) - written to stdout [410/410] [0m--> Working on Sys::Info::Driver::Linux -Fetching http://www.cpan.org/authors/id/B/BU/BURAK/Sys-Info-Driver-Linux-0.7905.tar.gz ... [91m--2019-11-11 18:06:22-- http://www.cpan.org/authors/id/B/BU/BURAK/Sys-Info-Driver-Linux-0.7905.tar.gz +Fetching http://www.cpan.org/authors/id/B/BU/BURAK/Sys-Info-Driver-Linux-0.7905.tar.gz ... [91m--2019-11-11 18:39:27-- http://www.cpan.org/authors/id/B/BU/BURAK/Sys-Info-Driver-Linux-0.7905.tar.gz Resolving www.cpan.org (www.cpan.org)... [0m[91m151.101.18.217 Connecting to www.cpan.org (www.cpan.org)|151.101.18.217|:80... [0m[91mconnected. HTTP request sent, awaiting response... [0m[91m200 OK Length: 24133 (24K) [application/x-gzip] Saving to: 'Sys-Info-Driver-Linux-0.7905.tar.gz' [0m[91m - 0K ........[0m[91m.. ..[0m[91m........ ... 100% 2.11M=0.01s + 0K .......... ..[0m[91m........ ... 100% 2.15M=0.01s -[0m[91m2019-11-11 18:06:22 (2.11 MB/s) - 'Sys-Info-Driver-Linux-0.7905.tar.gz' saved [24133/24133] +[0m[91m2019-11-11 18:39:27 (2.15 MB/s) - 'Sys-Info-Driver-Linux-0.7905.tar.gz' saved [24133/24133] [0m[91mUnpacking Sys-Info-Driver-Linux-0.7905.tar.gz [0mOK @@ -2228,128 +543,46 @@ Sys-Info-Driver-Linux-0.7905/t/release-distmeta.t [91mEntering Sys-Info-Driver-Linux-0.7905 [0m[91mChecking configure dependencies from META.json [0m[91mChecking if you have ExtUtils::MakeMaker 6.58 ... [0m[91mYes (7.38) -[0mConfiguring Sys-Info-Driver-Linux-0.7905 ... [91mRunning Makefile.PL -[0m[91mWarning: prerequisite Config::General 0 not found. +[0m[91mRunning Makefile.PL +[0mConfiguring Sys-Info-Driver-Linux-0.7905 ... [91mWarning: prerequisite Config::General 0 not found. [0m[91mWarning: prerequisite Test::Sys::Info 0.20 not found. -Warning: prerequisite Unix::Processors 0 not found. +[0m[91mWarning: prerequisite Unix::Processors 0 not found. [0mChecking if your kit is complete... Looks good Generating a Unix-style Makefile Writing Makefile for Sys::Info::Driver::Linux Writing MYMETA.yml and MYMETA.json [91mChecking dependencies from MYMETA.json ... -[0m[91mChecking if you have Unix::Processors 0 ... [0m[91mNo -Checking if you have ExtUtils::MakeMaker 0 ... [0m[91mYes (7.38) [0m[91mChecking if you have Config::General 0 ... [0m[91mNo -Checking if you have Sys::Info::Base 0.7801 ... [0m[91mYes (0.7807) -[0m[91mSearching Unix::Processors (0) on cpanmetadb ... -[0mOK -==> Found dependencies: Unix::Processors, Config::General -[91m--2019-11-11 18:06:22-- http://cpanmetadb.plackperl.org/v1.0/package/Unix::Processors -Resolving cpanmetadb.plackperl.org (cpanmetadb.plackperl.org)... [0m[91m151.101.18.217 -Connecting to cpanmetadb.plackperl.org (cpanmetadb.plackperl.org)|151.101.18.217|:80... [0m[91mconnected. -HTTP request sent, awaiting response... [0m[91m200 OK -Length: 139 [text/yaml] -Saving to: 'STDOUT' - - 0K [0m[91m [0m[91m [0m[91m 100% 11.6M=0s - -[0m[91m2019-11-11 18:06:23 (11.6 MB/s) - written to stdout [139/139] - -[0m--> Working on Unix::Processors -Fetching http://www.cpan.org/authors/id/W/WS/WSNYDER/Unix-Processors-2.046.tar.gz ... [91m--2019-11-11 18:06:23-- http://www.cpan.org/authors/id/W/WS/WSNYDER/Unix-Processors-2.046.tar.gz -Resolving www.cpan.org (www.cpan.org)... [0m[91m151.101.18.217 -Connecting to www.cpan.org (www.cpan.org)|151.101.18.217|:80... [0m[91mconnected. -HTTP request sent, awaiting response... [0m[91m200 OK -Length: 14556 (14K) [application/x-gzip] -Saving to: 'Unix-Processors-2.046.tar.gz' -[0m[91m - 0K ........[0m[91m.. ..[0m[91m.. 100% 2.01M=0.007s - -[0m[91m2019-11-11 18:06:23 (2.01 MB/s) - 'Unix-Processors-2.046.tar.gz' saved [14556/14556] - -[0m[91mUnpacking Unix-Processors-2.046.tar.gz -[0mOK -Unix-Processors-2.046/ -Unix-Processors-2.046/MANIFEST.SKIP -Unix-Processors-2.046/.gitignore -Unix-Processors-2.046/typemap -Unix-Processors-2.046/Processors/ -Unix-Processors-2.046/Processors/Info.pm -Unix-Processors-2.046/META.yml -Unix-Processors-2.046/Makefile.PL -Unix-Processors-2.046/COPYING -Unix-Processors-2.046/README -Unix-Processors-2.046/readme.texi -Unix-Processors-2.046/Changes -Unix-Processors-2.046/MANIFEST -Unix-Processors-2.046/Processors.pm -Unix-Processors-2.046/Processors.xs -Unix-Processors-2.046/t/ -Unix-Processors-2.046/t/01_manifest.t -Unix-Processors-2.046/t/00_pod.t -Unix-Processors-2.046/t/test_utils.pl -Unix-Processors-2.046/t/20_test.t -[91mEntering Unix-Processors-2.046 -[0m[91mChecking configure dependencies from META.yml -[0m[91mRunning Makefile.PL -[0mConfiguring Unix-Processors-2.046 ... Checking if your kit is complete... -Looks good -Generating a Unix-style Makefile -Writing Makefile for Unix::Processors -Writing MYMETA.yml and MYMETA.json -[91mChecking dependencies from MYMETA.json ... +[0m[91mChecking if you have Unix::Processors 0 ... [0m[91mNo [0m[91mChecking if you have ExtUtils::MakeMaker 0 ... [0m[91mYes (7.38) -Checking if you have Test 1 ... [0m[91mYes (1.31) -Checking if you have warnings 1 ... [0m[91mYes (1.45) +Checking if you have Sys::Info::Base 0.7801 ... [0m[91mYes (0.7807) +[0m[91mSearching Config::General (0) on cpanmetadb ... [0mOK -Building Unix-Processors-2.046 ... cp Processors/Info.pm blib/lib/Unix/Processors/Info.pm -cp Processors.pm blib/lib/Unix/Processors.pm -Running Mkbootstrap for Processors () -chmod 644 "Processors.bs" -"/home/binary_c/perl5/perlbrew/perls/perl-5.31.5/bin/perl5.31.5" -MExtUtils::Command::MM -e 'cp_nonempty' -- Processors.bs blib/arch/auto/Unix/Processors/Processors.bs 644 -"/home/binary_c/perl5/perlbrew/perls/perl-5.31.5/bin/perl5.31.5" "/home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/5.31.5/ExtUtils/xsubpp" -typemap '/home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/5.31.5/ExtUtils/typemap' -typemap '/home/binary_c/.cpanm/work/1573495579.1/Unix-Processors-2.046/typemap' Processors.xs > Processors.xsc -mv Processors.xsc Processors.c -cc -c -D_REENTRANT -D_GNU_SOURCE -fwrapv -fno-strict-aliasing -pipe -fstack-protector-strong -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -mtune=generic -march=x86-64 -DVERSION=\"2.046\" -DXS_VERSION=\"2.046\" -fPIC "-I/home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/5.31.5/x86_64-linux-thread-multi/CORE" Processors.c -rm -f blib/arch/auto/Unix/Processors/Processors.so -cc -shared -O2 -mtune=generic -march=x86-64 -L/usr/local/lib -fstack-protector-strong Processors.o -o blib/arch/auto/Unix/Processors/Processors.so \ - \ - -chmod 755 blib/arch/auto/Unix/Processors/Processors.so -"/home/binary_c/perl5/perlbrew/perls/perl-5.31.5/bin/perl5.31.5" -MExtUtils::Command::MM -e 'cp_nonempty' -- Processors.bs blib/arch/auto/Unix/Processors/Processors.bs 644 -Files found in blib/arch: installing files in blib/lib into architecture dependent library tree -Installing /home/binary_c/perl5/lib/perl5/x86_64-linux-thread-multi/auto/Unix/Processors/Processors.so -Installing /home/binary_c/perl5/lib/perl5/x86_64-linux-thread-multi/Unix/Processors.pm -Installing /home/binary_c/perl5/lib/perl5/x86_64-linux-thread-multi/Unix/Processors/Info.pm -Appending installation info to /home/binary_c/perl5/lib/perl5/x86_64-linux-thread-multi/perllocal.pod -OK -Successfully installed Unix-Processors-2.046 -Installing /home/binary_c/perl5/lib/perl5/x86_64-linux-thread-multi/.meta/Unix-Processors-2.046/MYMETA.json -Installing /home/binary_c/perl5/lib/perl5/x86_64-linux-thread-multi/.meta/Unix-Processors-2.046/install.json -[91mSearching Config::General (0) on cpanmetadb ... -[0m[91m--2019-11-11 18:06:24-- http://cpanmetadb.plackperl.org/v1.0/package/Config::General +==> Found dependencies: Config::General, Unix::Processors +[91m--2019-11-11 18:39:28-- http://cpanmetadb.plackperl.org/v1.0/package/Config::General Resolving cpanmetadb.plackperl.org (cpanmetadb.plackperl.org)... [0m[91m151.101.18.217 Connecting to cpanmetadb.plackperl.org (cpanmetadb.plackperl.org)|151.101.18.217|:80... [0m[91mconnected. HTTP request sent, awaiting response... [0m[91m200 OK Length: 174 [text/yaml] Saving to: 'STDOUT' - 0K [0m[91m [0m[91m 100% 32.9M=0s + 0K [0m[91m 100% 25.3M=0s -[0m[91m2019-11-11 18:06:24 (32.9 MB/s) - written to stdout [174/174] +2019-11-11 18:39:28 (25.3 MB/s) - written to stdout [174/174] [0m--> Working on Config::General -Fetching http://www.cpan.org/authors/id/T/TL/TLINDEN/Config-General-2.63.tar.gz ... [91m--2019-11-11 18:06:24-- http://www.cpan.org/authors/id/T/TL/TLINDEN/Config-General-2.63.tar.gz +Fetching http://www.cpan.org/authors/id/T/TL/TLINDEN/Config-General-2.63.tar.gz ... [91m--2019-11-11 18:39:28-- http://www.cpan.org/authors/id/T/TL/TLINDEN/Config-General-2.63.tar.gz Resolving www.cpan.org (www.cpan.org)... [0m[91m151.101.18.217 Connecting to www.cpan.org (www.cpan.org)|151.101.18.217|:80... [0m[91mconnected. HTTP request sent, awaiting response... [0m[91m200 OK Length: 64700 (63K) [application/x-gzip] Saving to: 'Config-General-2.63.tar.gz' [0m[91m - 0K ........[0m[91m.. ..[0m[91m........ ..........[0m[91m .........[0m[91m. .......... 79% 1.48M 0s - 50K .....[0m[91m..... ... [0m[91m [0m[91m [0m[91m [0m[91m [0m[91m [0m[91m [0m[91m 100%[0m[91m 164M=0.03s[0m[91m + 0K ........[0m[91m.. .[0m[91m.[0m[91m........ .......... ......[0m[91m...[0m[91m. .......... 79% 1.47M 0s + 50K .......... ...[0m[91m [0m[91m [0m[91m [0m[91m [0m[91m [0m[91m 100%[0m[91m 169M=0.03s -[0m[91m2019-11-11 18:06:24 (1.87 MB/s) - 'Config-General-2.63.tar.gz' saved [64700/64700] +[0m[91m2019-11-11 18:39:28 (1.85 MB/s) - 'Config-General-2.63.tar.gz' saved [64700/64700] [0m[91mUnpacking Config-General-2.63.tar.gz [0mOK @@ -2429,15 +662,15 @@ Generating a Unix-style Makefile Writing Makefile for Config::General Writing MYMETA.yml and MYMETA.json [91mChecking dependencies from MYMETA.json ... -[0m[91mChecking if you have ExtUtils::MakeMaker 0 ... [0m[91mYes (7.38) -Checking if you have FileHandle 0 ... [0m[91mYes (2.03) +[0m[91mChecking if you have IO::File 0 ... [0m[91mYes (1.41) +Checking if you have ExtUtils::MakeMaker 0 ... [0m[91mYes (7.38) Checking if you have File::Glob 0 ... [0m[91mYes (1.32) -Checking if you have IO::File 0 ... [0m[91mYes (1.41) Checking if you have File::Spec::Functions 0 ... [0m[91mYes (3.78) +Checking if you have FileHandle 0 ... [0m[91mYes (2.03) [0mOK Building Config-General-2.63 ... cp General/Interpolated.pm blib/lib/Config/General/Interpolated.pm -cp General/Extended.pm blib/lib/Config/General/Extended.pm cp General.pm blib/lib/Config/General.pm +cp General/Extended.pm blib/lib/Config/General/Extended.pm Installing /home/binary_c/perl5/lib/perl5/Config/General.pm Installing /home/binary_c/perl5/lib/perl5/Config/General/Extended.pm Installing /home/binary_c/perl5/lib/perl5/Config/General/Interpolated.pm @@ -2446,13 +679,95 @@ OK Successfully installed Config-General-2.63 Installing /home/binary_c/perl5/lib/perl5/x86_64-linux-thread-multi/.meta/Config-General-2.63/MYMETA.json Installing /home/binary_c/perl5/lib/perl5/x86_64-linux-thread-multi/.meta/Config-General-2.63/install.json +[91mSearching Unix::Processors (0) on cpanmetadb ... +[0m[91m--2019-11-11 18:39:28-- http://cpanmetadb.plackperl.org/v1.0/package/Unix::Processors +Resolving cpanmetadb.plackperl.org (cpanmetadb.plackperl.org)... [0m[91m151.101.18.217 +Connecting to cpanmetadb.plackperl.org (cpanmetadb.plackperl.org)|151.101.18.217|:80... [0m[91mconnected. +HTTP request sent, awaiting response... [0m[91m200 OK +Length: 139 [text/yaml] +Saving to: 'STDOUT' + + 0K [0m[91m [0m[91m 100% 10.9M=0s + +[0m[91m2019-11-11 18:39:28 (10.9 MB/s) - written to stdout [139/139] + +[0m--> Working on Unix::Processors +Fetching http://www.cpan.org/authors/id/W/WS/WSNYDER/Unix-Processors-2.046.tar.gz ... [91m--2019-11-11 18:39:28-- http://www.cpan.org/authors/id/W/WS/WSNYDER/Unix-Processors-2.046.tar.gz +Resolving www.cpan.org (www.cpan.org)... [0m[91m151.101.18.217 +Connecting to www.cpan.org (www.cpan.org)|151.101.18.217|:80... [0m[91mconnected. +HTTP request sent, awaiting response... [0m[91m200 OK +Length: 14556 (14K) [application/x-gzip] +Saving to: 'Unix-Processors-2.046.tar.gz' +[0m[91m + 0K ........[0m[91m.. ..[0m[91m.. 100% 1.97M=0.007s + +[0m[91m2019-11-11 18:39:28 (1.97 MB/s) - 'Unix-Processors-2.046.tar.gz' saved [14556/14556] + +[0m[91mUnpacking Unix-Processors-2.046.tar.gz +[0mOK +Unix-Processors-2.046/ +Unix-Processors-2.046/MANIFEST.SKIP +Unix-Processors-2.046/.gitignore +Unix-Processors-2.046/typemap +Unix-Processors-2.046/Processors/ +Unix-Processors-2.046/Processors/Info.pm +Unix-Processors-2.046/META.yml +Unix-Processors-2.046/Makefile.PL +Unix-Processors-2.046/COPYING +Unix-Processors-2.046/README +Unix-Processors-2.046/readme.texi +Unix-Processors-2.046/Changes +Unix-Processors-2.046/MANIFEST +Unix-Processors-2.046/Processors.pm +Unix-Processors-2.046/Processors.xs +Unix-Processors-2.046/t/ +Unix-Processors-2.046/t/01_manifest.t +Unix-Processors-2.046/t/00_pod.t +Unix-Processors-2.046/t/test_utils.pl +Unix-Processors-2.046/t/20_test.t +[91mEntering Unix-Processors-2.046 +[0m[91mChecking configure dependencies from META.yml +[0m[91mRunning Makefile.PL +[0mConfiguring Unix-Processors-2.046 ... Checking if your kit is complete... +Looks good +Generating a Unix-style Makefile +Writing Makefile for Unix::Processors +Writing MYMETA.yml and MYMETA.json +[91mChecking dependencies from MYMETA.json ... +[0m[91mChecking if you have warnings 1 ... [0m[91mYes (1.45) +Checking if you have ExtUtils::MakeMaker 0 ... [0m[91mYes (7.38) +Checking if you have Test 1 ... [0m[91mYes (1.31) +[0mOK +Building Unix-Processors-2.046 ... cp Processors.pm blib/lib/Unix/Processors.pm +cp Processors/Info.pm blib/lib/Unix/Processors/Info.pm +Running Mkbootstrap for Processors () +chmod 644 "Processors.bs" +"/home/binary_c/perl5/perlbrew/perls/perl-5.31.5/bin/perl5.31.5" -MExtUtils::Command::MM -e 'cp_nonempty' -- Processors.bs blib/arch/auto/Unix/Processors/Processors.bs 644 +"/home/binary_c/perl5/perlbrew/perls/perl-5.31.5/bin/perl5.31.5" "/home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/5.31.5/ExtUtils/xsubpp" -typemap '/home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/5.31.5/ExtUtils/typemap' -typemap '/home/binary_c/.cpanm/work/1573497565.1/Unix-Processors-2.046/typemap' Processors.xs > Processors.xsc +mv Processors.xsc Processors.c +cc -c -D_REENTRANT -D_GNU_SOURCE -fwrapv -fno-strict-aliasing -pipe -fstack-protector-strong -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -mtune=generic -march=x86-64 -DVERSION=\"2.046\" -DXS_VERSION=\"2.046\" -fPIC "-I/home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/5.31.5/x86_64-linux-thread-multi/CORE" Processors.c +rm -f blib/arch/auto/Unix/Processors/Processors.so +cc -shared -O2 -mtune=generic -march=x86-64 -L/usr/local/lib -fstack-protector-strong Processors.o -o blib/arch/auto/Unix/Processors/Processors.so \ + \ + +chmod 755 blib/arch/auto/Unix/Processors/Processors.so +"/home/binary_c/perl5/perlbrew/perls/perl-5.31.5/bin/perl5.31.5" -MExtUtils::Command::MM -e 'cp_nonempty' -- Processors.bs blib/arch/auto/Unix/Processors/Processors.bs 644 +Files found in blib/arch: installing files in blib/lib into architecture dependent library tree +Installing /home/binary_c/perl5/lib/perl5/x86_64-linux-thread-multi/auto/Unix/Processors/Processors.so +Installing /home/binary_c/perl5/lib/perl5/x86_64-linux-thread-multi/Unix/Processors.pm +Installing /home/binary_c/perl5/lib/perl5/x86_64-linux-thread-multi/Unix/Processors/Info.pm +Appending installation info to /home/binary_c/perl5/lib/perl5/x86_64-linux-thread-multi/perllocal.pod +OK +Successfully installed Unix-Processors-2.046 +Installing /home/binary_c/perl5/lib/perl5/x86_64-linux-thread-multi/.meta/Unix-Processors-2.046/MYMETA.json +Installing /home/binary_c/perl5/lib/perl5/x86_64-linux-thread-multi/.meta/Unix-Processors-2.046/install.json Building Sys-Info-Driver-Linux-0.7905 ... cp lib/Sys/Info/Driver/Linux/Constants.pm blib/lib/Sys/Info/Driver/Linux/Constants.pm -cp lib/Sys/Info/Driver/Linux/OS/Distribution.pm blib/lib/Sys/Info/Driver/Linux/OS/Distribution.pm cp lib/Sys/Info/Driver/Linux/Device/CPU.pm blib/lib/Sys/Info/Driver/Linux/Device/CPU.pm -cp lib/Sys/Info/Driver/Linux/OS.pm blib/lib/Sys/Info/Driver/Linux/OS.pm -cp lib/Sys/Info/Driver/Linux/OS/Distribution/Conf.pm blib/lib/Sys/Info/Driver/Linux/OS/Distribution/Conf.pm cp lib/Sys/Info/Driver/Linux.pm blib/lib/Sys/Info/Driver/Linux.pm +cp lib/Sys/Info/Driver/Linux/OS/Distribution/Conf.pm blib/lib/Sys/Info/Driver/Linux/OS/Distribution/Conf.pm +cp lib/Sys/Info/Driver/Linux/OS/Distribution.pm blib/lib/Sys/Info/Driver/Linux/OS/Distribution.pm cp lib/Sys/Info/Driver/Linux/Device.pm blib/lib/Sys/Info/Driver/Linux/Device.pm +cp lib/Sys/Info/Driver/Linux/OS.pm blib/lib/Sys/Info/Driver/Linux/OS.pm Installing /home/binary_c/perl5/lib/perl5/Sys/Info/Driver/Linux.pm Installing /home/binary_c/perl5/lib/perl5/Sys/Info/Driver/Linux/Device.pm Installing /home/binary_c/perl5/lib/perl5/Sys/Info/Driver/Linux/Constants.pm @@ -2473,17 +788,17 @@ Successfully installed Sys-Info-0.7811 Installing /home/binary_c/perl5/lib/perl5/x86_64-linux-thread-multi/.meta/Sys-Info-0.7811/MYMETA.json Installing /home/binary_c/perl5/lib/perl5/x86_64-linux-thread-multi/.meta/Sys-Info-0.7811/install.json 6 distributions installed -Removing intermediate container 9156c57e642b - ---> 234a0b8d1196 -Step 40/53 : WORKDIR /home/binary_c/progs/stars/binary_c/src/perl - ---> Running in c95dbff64a97 -Removing intermediate container c95dbff64a97 - ---> 26300415725c -Step 41/53 : RUN ./install_modules.pl && cpanm List::MoreUtils - ---> Running in 5a183d64d63e +Removing intermediate container 14d123ac5a12 + ---> 67718633126c +Step 42/53 : WORKDIR /home/binary_c/progs/stars/binary_c/src/perl + ---> Running in df2aa6c97a98 +Removing intermediate container df2aa6c97a98 + ---> 97cf7638f4e8 +Step 43/53 : RUN ./install_modules.pl && cpanm List::MoreUtils + ---> Running in 11d3cb20c76b Installing POSIX with cpanminus cpanm : cpanm (App::cpanminus) 1.7044 on perl 5.031005 built for x86_64-linux-thread-multi -cpanm : Work directory is /home/binary_c/.cpanm/work/1573495588.16 +cpanm : Work directory is /home/binary_c/.cpanm/work/1573497573.16 cpanm : You have make /usr/bin/make cpanm : You have /usr/bin/wget cpanm : You have /bin/tar: tar (GNU tar) 1.29 @@ -2495,22 +810,22 @@ cpanm : cpanm : Written by John Gilmore and Jay Fenlason. cpanm : You have /usr/bin/unzip cpanm : Searching POSIX () on cpanmetadb ... -cpanm : --2019-11-11 18:06:28-- http://cpanmetadb.plackperl.org/v1.0/package/POSIX +cpanm : --2019-11-11 18:39:33-- http://cpanmetadb.plackperl.org/v1.0/package/POSIX cpanm : Resolving cpanmetadb.plackperl.org (cpanmetadb.plackperl.org)... 151.101.18.217 cpanm : Connecting to cpanmetadb.plackperl.org (cpanmetadb.plackperl.org)|151.101.18.217|:80... connected. cpanm : HTTP request sent, awaiting response... 200 OK cpanm : Length: 2937 (2.9K) [text/yaml] cpanm : Saving to: 'STDOUT' cpanm : -cpanm : 0K .. 100% 299M=0s +cpanm : 0K .. 100% 132M=0s cpanm : -cpanm : 2019-11-11 18:06:28 (299 MB/s) - written to stdout [2937/2937] +cpanm : 2019-11-11 18:39:33 (132 MB/s) - written to stdout [2937/2937] cpanm : cpanm : POSIX is up to date. (1.89) Installing Carp with cpanminus cpanm : cpanm (App::cpanminus) 1.7044 on perl 5.031005 built for x86_64-linux-thread-multi -cpanm : Work directory is /home/binary_c/.cpanm/work/1573495588.21 +cpanm : Work directory is /home/binary_c/.cpanm/work/1573497573.21 cpanm : You have make /usr/bin/make cpanm : You have /usr/bin/wget cpanm : You have /bin/tar: tar (GNU tar) 1.29 @@ -2522,22 +837,22 @@ cpanm : cpanm : Written by John Gilmore and Jay Fenlason. cpanm : You have /usr/bin/unzip cpanm : Searching Carp () on cpanmetadb ... -cpanm : --2019-11-11 18:06:28-- http://cpanmetadb.plackperl.org/v1.0/package/Carp +cpanm : --2019-11-11 18:39:33-- http://cpanmetadb.plackperl.org/v1.0/package/Carp cpanm : Resolving cpanmetadb.plackperl.org (cpanmetadb.plackperl.org)... 151.101.18.217 cpanm : Connecting to cpanmetadb.plackperl.org (cpanmetadb.plackperl.org)|151.101.18.217|:80... connected. cpanm : HTTP request sent, awaiting response... 200 OK cpanm : Length: 102 [text/yaml] cpanm : Saving to: 'STDOUT' cpanm : -cpanm : 0K 100% 18.3M=0s +cpanm : 0K 100% 11.1M=0s cpanm : -cpanm : 2019-11-11 18:06:28 (18.3 MB/s) - written to stdout [102/102] +cpanm : 2019-11-11 18:39:33 (11.1 MB/s) - written to stdout [102/102] cpanm : cpanm : Carp is up to date. (1.50) Installing Clone with cpanminus cpanm : cpanm (App::cpanminus) 1.7044 on perl 5.031005 built for x86_64-linux-thread-multi -cpanm : Work directory is /home/binary_c/.cpanm/work/1573495588.26 +cpanm : Work directory is /home/binary_c/.cpanm/work/1573497573.26 cpanm : You have make /usr/bin/make cpanm : You have /usr/bin/wget cpanm : You have /bin/tar: tar (GNU tar) 1.29 @@ -2549,28 +864,28 @@ cpanm : cpanm : Written by John Gilmore and Jay Fenlason. cpanm : You have /usr/bin/unzip cpanm : Searching Clone () on cpanmetadb ... -cpanm : --2019-11-11 18:06:28-- http://cpanmetadb.plackperl.org/v1.0/package/Clone +cpanm : --2019-11-11 18:39:33-- http://cpanmetadb.plackperl.org/v1.0/package/Clone cpanm : Resolving cpanmetadb.plackperl.org (cpanmetadb.plackperl.org)... 151.101.18.217 cpanm : Connecting to cpanmetadb.plackperl.org (cpanmetadb.plackperl.org)|151.101.18.217|:80... connected. cpanm : HTTP request sent, awaiting response... 200 OK cpanm : Length: 83 [text/yaml] cpanm : Saving to: 'STDOUT' cpanm : -cpanm : 0K 100% 8.10M=0s +cpanm : 0K 100% 11.8M=0s cpanm : -cpanm : 2019-11-11 18:06:28 (8.10 MB/s) - written to stdout [83/83] +cpanm : 2019-11-11 18:39:34 (11.8 MB/s) - written to stdout [83/83] cpanm : cpanm : --> Working on Clone -cpanm : Fetching http://www.cpan.org/authors/id/A/AT/ATOOMIC/Clone-0.43.tar.gz ... --2019-11-11 18:06:28-- http://www.cpan.org/authors/id/A/AT/ATOOMIC/Clone-0.43.tar.gz +cpanm : Fetching http://www.cpan.org/authors/id/A/AT/ATOOMIC/Clone-0.43.tar.gz ... --2019-11-11 18:39:34-- http://www.cpan.org/authors/id/A/AT/ATOOMIC/Clone-0.43.tar.gz cpanm : Resolving www.cpan.org (www.cpan.org)... 151.101.18.217 cpanm : Connecting to www.cpan.org (www.cpan.org)|151.101.18.217|:80... connected. cpanm : HTTP request sent, awaiting response... 200 OK cpanm : Length: 15953 (16K) [application/x-gzip] cpanm : Saving to: 'Clone-0.43.tar.gz' cpanm : -cpanm : 0K .......... ..... 100% 2.88M=0.005s +cpanm : 0K .......... ..... 100% 2.86M=0.005s cpanm : -cpanm : 2019-11-11 18:06:28 (2.88 MB/s) - 'Clone-0.43.tar.gz' saved [15953/15953] +cpanm : 2019-11-11 18:39:34 (2.86 MB/s) - 'Clone-0.43.tar.gz' saved [15953/15953] cpanm : cpanm : Unpacking Clone-0.43.tar.gz cpanm : OK @@ -2612,28 +927,28 @@ cpanm : Checking if you have Test::More 0 ... Yes (1.302168) cpanm : Searching B::COW (0) on cpanmetadb ... cpanm : OK cpanm : ==> Found dependencies: B::COW -cpanm : --2019-11-11 18:06:29-- http://cpanmetadb.plackperl.org/v1.0/package/B::COW +cpanm : --2019-11-11 18:39:34-- http://cpanmetadb.plackperl.org/v1.0/package/B::COW cpanm : Resolving cpanmetadb.plackperl.org (cpanmetadb.plackperl.org)... 151.101.18.217 cpanm : Connecting to cpanmetadb.plackperl.org (cpanmetadb.plackperl.org)|151.101.18.217|:80... connected. cpanm : HTTP request sent, awaiting response... 200 OK cpanm : Length: 87 [text/yaml] cpanm : Saving to: 'STDOUT' cpanm : -cpanm : 0K 100% 8.85M=0s +cpanm : 0K 100% 8.42M=0s cpanm : -cpanm : 2019-11-11 18:06:29 (8.85 MB/s) - written to stdout [87/87] +cpanm : 2019-11-11 18:39:34 (8.42 MB/s) - written to stdout [87/87] cpanm : cpanm : --> Working on B::COW -cpanm : Fetching http://www.cpan.org/authors/id/A/AT/ATOOMIC/B-COW-0.001.tar.gz ... --2019-11-11 18:06:29-- http://www.cpan.org/authors/id/A/AT/ATOOMIC/B-COW-0.001.tar.gz +cpanm : Fetching http://www.cpan.org/authors/id/A/AT/ATOOMIC/B-COW-0.001.tar.gz ... --2019-11-11 18:39:34-- http://www.cpan.org/authors/id/A/AT/ATOOMIC/B-COW-0.001.tar.gz cpanm : Resolving www.cpan.org (www.cpan.org)... 151.101.18.217 cpanm : Connecting to www.cpan.org (www.cpan.org)|151.101.18.217|:80... connected. cpanm : HTTP request sent, awaiting response... 200 OK cpanm : Length: 18005 (18K) [application/x-gzip] cpanm : Saving to: 'B-COW-0.001.tar.gz' cpanm : -cpanm : 0K .......... ....... 100% 1.77M=0.01s +cpanm : 0K .......... ....... 100% 1.79M=0.01s cpanm : -cpanm : 2019-11-11 18:06:29 (1.77 MB/s) - 'B-COW-0.001.tar.gz' saved [18005/18005] +cpanm : 2019-11-11 18:39:34 (1.79 MB/s) - 'B-COW-0.001.tar.gz' saved [18005/18005] cpanm : cpanm : Unpacking B-COW-0.001.tar.gz cpanm : OK @@ -2676,10 +991,10 @@ cpanm : Generating a Unix-style Makefile cpanm : Writing Makefile for B::COW cpanm : Writing MYMETA.yml and MYMETA.json cpanm : Checking dependencies from MYMETA.json ... -cpanm : Checking if you have ExtUtils::MakeMaker 0 ... Yes (7.38) cpanm : Checking if you have Devel::Peek 0 ... Yes (1.28) -cpanm : Checking if you have Test::More 0 ... Yes (1.302168) +cpanm : Checking if you have ExtUtils::MakeMaker 0 ... Yes (7.38) cpanm : Checking if you have File::Spec 0 ... Yes (3.78) +cpanm : Checking if you have Test::More 0 ... Yes (1.302168) cpanm : OK cpanm : Building and testing B-COW-0.001 ... cp lib/B/COW.pm blib/lib/B/COW.pm cpanm : Running Mkbootstrap for COW () @@ -2735,7 +1050,7 @@ cpanm : # cpanm : t/00-report-prereqs.t .. ok cpanm : t/01-basic.t ........... ok cpanm : All tests successful. -cpanm : Files=3, Tests=25, 0 wallclock secs ( 0.02 usr 0.00 sys + 0.30 cusr 0.03 csys = 0.35 CPU) +cpanm : Files=3, Tests=25, 1 wallclock secs ( 0.03 usr 0.00 sys + 0.31 cusr 0.03 csys = 0.37 CPU) cpanm : Result: PASS cpanm : "/home/binary_c/perl5/perlbrew/perls/perl-5.31.5/bin/perl5.31.5" -MExtUtils::Command::MM -e 'cp_nonempty' -- COW.bs blib/arch/auto/B/COW/COW.bs 644 cpanm : Files found in blib/arch: installing files in blib/lib into architecture dependent library tree @@ -2768,41 +1083,41 @@ cpanm : t/03scalar.t ..... ok cpanm : t/04tie.t ........ ok cpanm : t/05dtype.t ...... ok cpanm : t/06refcnt.t ..... ok -cpanm : SV = PVMG(0x55cc968b8f50) at 0x55cc961048f8 +cpanm : SV = PVMG(0x55fe3fafbbd0) at 0x55fe3f3473e8 cpanm : REFCNT = 1 cpanm : FLAGS = (SMG,POK,pPOK,UTF8) cpanm : IV = 0 cpanm : NV = 0 -cpanm : PV = 0x55cc968a6d10 "a\r\n"\0 [UTF8 "a\r\n"] +cpanm : PV = 0x55fe3fae9a70 "a\r\n"\0 [UTF8 "a\r\n"] cpanm : CUR = 3 cpanm : LEN = 10 -cpanm : MAGIC = 0x55cc967adab0 +cpanm : MAGIC = 0x55fe3fa727b0 cpanm : MG_VIRTUAL = &PL_vtbl_utf8 cpanm : MG_TYPE = PERL_MAGIC_utf8(w) cpanm : MG_LEN = -1 -cpanm : MG_PTR = 0x55cc9682cae0 +cpanm : MG_PTR = 0x55fe3f9da5b0 cpanm : 0: 2 -> 2 cpanm : 1: 0 -> 0 -cpanm : SV = PVMG(0x55cc968b8fe0) at 0x55cc968870b8 +cpanm : SV = PVMG(0x55fe3fafbc60) at 0x55fe3fac9e20 cpanm : REFCNT = 1 cpanm : FLAGS = (SMG,POK,pPOK,UTF8) cpanm : IV = 0 cpanm : NV = 0 -cpanm : PV = 0x55cc96098cd0 "a\r\n"\0 [UTF8 "a\r\n"] +cpanm : PV = 0x55fe3fad6c40 "a\r\n"\0 [UTF8 "a\r\n"] cpanm : CUR = 3 cpanm : LEN = 10 -cpanm : MAGIC = 0x55cc968abb80 +cpanm : MAGIC = 0x55fe3faeaa00 cpanm : MG_VIRTUAL = &PL_vtbl_utf8 cpanm : MG_TYPE = PERL_MAGIC_utf8(w) cpanm : MG_LEN = -1 -cpanm : MG_PTR = 0x55cc96060170 +cpanm : MG_PTR = 0x55fe3f9d4c40 cpanm : 0: 2 -> 2 cpanm : 1: 0 -> 0 cpanm : t/07magic.t ...... ok cpanm : t/08fieldhash.t .. ok cpanm : t/dclone.t ....... ok cpanm : All tests successful. -cpanm : Files=9, Tests=86, 1 wallclock secs ( 0.05 usr 0.01 sys + 0.24 cusr 0.05 csys = 0.35 CPU) +cpanm : Files=9, Tests=86, 0 wallclock secs ( 0.05 usr 0.01 sys + 0.27 cusr 0.03 csys = 0.36 CPU) cpanm : Result: PASS cpanm : "/home/binary_c/perl5/perlbrew/perls/perl-5.31.5/bin/perl5.31.5" -MExtUtils::Command::MM -e 'cp_nonempty' -- Clone.bs blib/arch/auto/Clone/Clone.bs 644 cpanm : Files found in blib/arch: installing files in blib/lib into architecture dependent library tree @@ -2818,7 +1133,7 @@ cpanm : 2 distributions installed Installing common::sense with cpanminus cpanm : cpanm (App::cpanminus) 1.7044 on perl 5.031005 built for x86_64-linux-thread-multi -cpanm : Work directory is /home/binary_c/.cpanm/work/1573495592.317 +cpanm : Work directory is /home/binary_c/.cpanm/work/1573497577.317 cpanm : You have make /usr/bin/make cpanm : You have /usr/bin/wget cpanm : You have /bin/tar: tar (GNU tar) 1.29 @@ -2830,28 +1145,28 @@ cpanm : cpanm : Written by John Gilmore and Jay Fenlason. cpanm : You have /usr/bin/unzip cpanm : Searching common::sense () on cpanmetadb ... -cpanm : --2019-11-11 18:06:32-- http://cpanmetadb.plackperl.org/v1.0/package/common::sense +cpanm : --2019-11-11 18:39:37-- http://cpanmetadb.plackperl.org/v1.0/package/common::sense cpanm : Resolving cpanmetadb.plackperl.org (cpanmetadb.plackperl.org)... 151.101.18.217 cpanm : Connecting to cpanmetadb.plackperl.org (cpanmetadb.plackperl.org)|151.101.18.217|:80... connected. cpanm : HTTP request sent, awaiting response... 200 OK cpanm : Length: 99 [text/yaml] cpanm : Saving to: 'STDOUT' cpanm : -cpanm : 0K 100% 9.92M=0s +cpanm : 0K 100% 10.6M=0s cpanm : -cpanm : 2019-11-11 18:06:32 (9.92 MB/s) - written to stdout [99/99] +cpanm : 2019-11-11 18:39:37 (10.6 MB/s) - written to stdout [99/99] cpanm : cpanm : --> Working on common::sense -cpanm : Fetching http://www.cpan.org/authors/id/M/ML/MLEHMANN/common-sense-3.74.tar.gz ... --2019-11-11 18:06:32-- http://www.cpan.org/authors/id/M/ML/MLEHMANN/common-sense-3.74.tar.gz +cpanm : Fetching http://www.cpan.org/authors/id/M/ML/MLEHMANN/common-sense-3.74.tar.gz ... --2019-11-11 18:39:37-- http://www.cpan.org/authors/id/M/ML/MLEHMANN/common-sense-3.74.tar.gz cpanm : Resolving www.cpan.org (www.cpan.org)... 151.101.18.217 cpanm : Connecting to www.cpan.org (www.cpan.org)|151.101.18.217|:80... connected. cpanm : HTTP request sent, awaiting response... 200 OK cpanm : Length: 13002 (13K) [application/x-gzip] cpanm : Saving to: 'common-sense-3.74.tar.gz' cpanm : -cpanm : 0K .......... .. 100% 136M=0s +cpanm : 0K .......... .. 100% 71.6M=0s cpanm : -cpanm : 2019-11-11 18:06:32 (136 MB/s) - 'common-sense-3.74.tar.gz' saved [13002/13002] +cpanm : 2019-11-11 18:39:37 (71.6 MB/s) - 'common-sense-3.74.tar.gz' saved [13002/13002] cpanm : cpanm : Unpacking common-sense-3.74.tar.gz cpanm : OK @@ -2881,13 +1196,13 @@ cpanm : Checking dependencies from MYMETA.json ... cpanm : Checking if you have ExtUtils::MakeMaker 0 ... Yes (7.38) cpanm : OK cpanm : Building and testing common-sense-3.74 ... "/home/binary_c/perl5/perlbrew/perls/perl-5.31.5/bin/perl5.31.5" sense.pm.PL sense.pm -cpanm : cp sense.pm blib/arch/common/sense.pm cpanm : cp sense.pod blib/lib/common/sense.pod +cpanm : cp sense.pm blib/arch/common/sense.pm cpanm : PERL_DL_NONLAZY=1 "/home/binary_c/perl5/perlbrew/perls/perl-5.31.5/bin/perl5.31.5" "-MExtUtils::Command::MM" "-MTest::Harness" "-e" "undef *Test::Harness::Switches; test_harness(0, 'blib/lib', 'blib/arch')" t/*.t cpanm : t/00_load.t .. ok cpanm : t/01_arch.t .. ok cpanm : All tests successful. -cpanm : Files=2, Tests=2, 0 wallclock secs ( 0.02 usr 0.00 sys + 0.01 cusr 0.00 csys = 0.03 CPU) +cpanm : Files=2, Tests=2, 0 wallclock secs ( 0.02 usr + 0.01 sys = 0.03 CPU) cpanm : Result: PASS cpanm : Files found in blib/arch: installing files in blib/lib into architecture dependent library tree cpanm : Installing /home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/site_perl/5.31.5/x86_64-linux-thread-multi/common/sense.pm @@ -2901,7 +1216,7 @@ cpanm : 1 distribution installed Installing Compress::Zlib with cpanminus cpanm : cpanm (App::cpanminus) 1.7044 on perl 5.031005 built for x86_64-linux-thread-multi -cpanm : Work directory is /home/binary_c/.cpanm/work/1573495593.435 +cpanm : Work directory is /home/binary_c/.cpanm/work/1573497578.435 cpanm : You have make /usr/bin/make cpanm : You have /usr/bin/wget cpanm : You have /bin/tar: tar (GNU tar) 1.29 @@ -2913,33 +1228,33 @@ cpanm : cpanm : Written by John Gilmore and Jay Fenlason. cpanm : You have /usr/bin/unzip cpanm : Searching Compress::Zlib () on cpanmetadb ... -cpanm : --2019-11-11 18:06:33-- http://cpanmetadb.plackperl.org/v1.0/package/Compress::Zlib +cpanm : --2019-11-11 18:39:38-- http://cpanmetadb.plackperl.org/v1.0/package/Compress::Zlib cpanm : Resolving cpanmetadb.plackperl.org (cpanmetadb.plackperl.org)... 151.101.18.217 cpanm : Connecting to cpanmetadb.plackperl.org (cpanmetadb.plackperl.org)|151.101.18.217|:80... connected. cpanm : HTTP request sent, awaiting response... 200 OK cpanm : Length: 1069 (1.0K) [text/yaml] cpanm : Saving to: 'STDOUT' cpanm : -cpanm : 0K . 100% 95.2M=0s +cpanm : 0K . 100% 143M=0s cpanm : -cpanm : 2019-11-11 18:06:33 (95.2 MB/s) - written to stdout [1069/1069] +cpanm : 2019-11-11 18:39:39 (143 MB/s) - written to stdout [1069/1069] cpanm : cpanm : --> Working on Compress::Zlib -cpanm : Fetching http://www.cpan.org/authors/id/P/PM/PMQS/IO-Compress-2.090.tar.gz ... --2019-11-11 18:06:33-- http://www.cpan.org/authors/id/P/PM/PMQS/IO-Compress-2.090.tar.gz +cpanm : Fetching http://www.cpan.org/authors/id/P/PM/PMQS/IO-Compress-2.090.tar.gz ... --2019-11-11 18:39:39-- http://www.cpan.org/authors/id/P/PM/PMQS/IO-Compress-2.090.tar.gz cpanm : Resolving www.cpan.org (www.cpan.org)... 151.101.18.217 cpanm : Connecting to www.cpan.org (www.cpan.org)|151.101.18.217|:80... connected. cpanm : HTTP request sent, awaiting response... 200 OK cpanm : Length: 277159 (271K) [application/x-gzip] cpanm : Saving to: 'IO-Compress-2.090.tar.gz' cpanm : -cpanm : 0K .......... .......... .......... .......... .......... 18% 1.24M 0s -cpanm : 50K .......... .......... .......... .......... .......... 36% 10.6M 0s -cpanm : 100K .......... .......... .......... .......... .......... 55% 103M 0s -cpanm : 150K .......... .......... .......... .......... .......... 73% 106M 0s -cpanm : 200K .......... .......... .......... .......... .......... 92% 21.1M 0s -cpanm : 250K .......... .......... 100% 75.3M=0.05s +cpanm : 0K .......... .......... .......... .......... .......... 18% 1.23M 0s +cpanm : 50K .......... .......... .......... .......... .......... 36% 9.94M 0s +cpanm : 100K .......... .......... .......... .......... .......... 55% 98.5M 0s +cpanm : 150K .......... .......... .......... .......... .......... 73% 117M 0s +cpanm : 200K .......... .......... .......... .......... .......... 92% 20.0M 0s +cpanm : 250K .......... .......... 100% 104M=0.05s cpanm : -cpanm : 2019-11-11 18:06:33 (5.55 MB/s) - 'IO-Compress-2.090.tar.gz' saved [277159/277159] +cpanm : 2019-11-11 18:39:39 (5.49 MB/s) - 'IO-Compress-2.090.tar.gz' saved [277159/277159] cpanm : cpanm : Unpacking IO-Compress-2.090.tar.gz cpanm : OK @@ -3145,197 +1460,39 @@ cpanm : Generating a Unix-style Makefile cpanm : Writing Makefile for IO::Compress cpanm : Writing MYMETA.yml and MYMETA.json cpanm : Checking dependencies from MYMETA.json ... +cpanm : Checking if you have Compress::Raw::Bzip2 2.090 ... No (2.087 < 2.090) cpanm : Checking if you have ExtUtils::MakeMaker 0 ... Yes (7.38) -cpanm : Checking if you have Compress::Raw::Zlib 2.090 ... No (2.087 < 2.090) cpanm : Checking if you have Scalar::Util 0 ... Yes (1.52) -cpanm : Checking if you have Compress::Raw::Bzip2 2.090 ... No (2.087 < 2.090) -cpanm : Searching Compress::Raw::Zlib (2.090) on cpanmetadb ... +cpanm : Checking if you have Compress::Raw::Zlib 2.090 ... No (2.087 < 2.090) +cpanm : Searching Compress::Raw::Bzip2 (2.090) on cpanmetadb ... cpanm : OK -cpanm : ==> Found dependencies: Compress::Raw::Zlib, Compress::Raw::Bzip2 -cpanm : --2019-11-11 18:06:34-- http://cpanmetadb.plackperl.org/v1.0/package/Compress::Raw::Zlib +cpanm : ==> Found dependencies: Compress::Raw::Bzip2, Compress::Raw::Zlib +cpanm : --2019-11-11 18:39:39-- http://cpanmetadb.plackperl.org/v1.0/package/Compress::Raw::Bzip2 cpanm : Resolving cpanmetadb.plackperl.org (cpanmetadb.plackperl.org)... 151.101.18.217 cpanm : Connecting to cpanmetadb.plackperl.org (cpanmetadb.plackperl.org)|151.101.18.217|:80... connected. cpanm : HTTP request sent, awaiting response... 200 OK -cpanm : Length: 109 [text/yaml] +cpanm : Length: 111 [text/yaml] cpanm : Saving to: 'STDOUT' cpanm : -cpanm : 0K 100% 16.7M=0s +cpanm : 0K 100% 10.8M=0s cpanm : -cpanm : 2019-11-11 18:06:34 (16.7 MB/s) - written to stdout [109/109] +cpanm : 2019-11-11 18:39:39 (10.8 MB/s) - written to stdout [111/111] cpanm : -cpanm : --> Working on Compress::Raw::Zlib -cpanm : Fetching http://www.cpan.org/authors/id/P/PM/PMQS/Compress-Raw-Zlib-2.090.tar.gz ... --2019-11-11 18:06:34-- http://www.cpan.org/authors/id/P/PM/PMQS/Compress-Raw-Zlib-2.090.tar.gz +cpanm : --> Working on Compress::Raw::Bzip2 +cpanm : Fetching http://www.cpan.org/authors/id/P/PM/PMQS/Compress-Raw-Bzip2-2.090.tar.gz ... --2019-11-11 18:39:39-- http://www.cpan.org/authors/id/P/PM/PMQS/Compress-Raw-Bzip2-2.090.tar.gz cpanm : Resolving www.cpan.org (www.cpan.org)... 151.101.18.217 cpanm : Connecting to www.cpan.org (www.cpan.org)|151.101.18.217|:80... connected. cpanm : HTTP request sent, awaiting response... 200 OK -cpanm : Length: 254413 (248K) [application/x-gzip] -cpanm : Saving to: 'Compress-Raw-Zlib-2.090.tar.gz' +cpanm : Length: 138242 (135K) [application/x-gzip] +cpanm : Saving to: 'Compress-Raw-Bzip2-2.090.tar.gz' cpanm : -cpanm : 0K .......... .......... .......... .......... .......... 20% 1.47M 0s -cpanm : 50K .......... .......... .......... .......... .......... 40% 13.1M 0s -cpanm : 100K .......... .......... .......... .......... .......... 60% 108M 0s -cpanm : 150K .......... .......... .......... .......... .......... 80% 168M 0s -cpanm : 200K .......... .......... .......... .......... ........ 100% 17.7M=0.04s +cpanm : 0K .......... .......... .......... .......... .......... 37% 1.49M 0s +cpanm : 50K .......... .......... .......... .......... .......... 74% 2.00M 0s +cpanm : 100K .......... .......... .......... ..... 100% 100M=0.06s cpanm : -cpanm : 2019-11-11 18:06:34 (6.00 MB/s) - 'Compress-Raw-Zlib-2.090.tar.gz' saved [254413/254413] +cpanm : 2019-11-11 18:39:39 (2.29 MB/s) - 'Compress-Raw-Bzip2-2.090.tar.gz' saved [138242/138242] cpanm : -cpanm : Unpacking Compress-Raw-Zlib-2.090.tar.gz -cpanm : OK -cpanm : Compress-Raw-Zlib-2.090/ -cpanm : Compress-Raw-Zlib-2.090/lib/ -cpanm : Compress-Raw-Zlib-2.090/lib/Compress/ -cpanm : Compress-Raw-Zlib-2.090/lib/Compress/Raw/ -cpanm : Compress-Raw-Zlib-2.090/lib/Compress/Raw/Zlib.pm -cpanm : Compress-Raw-Zlib-2.090/MANIFEST -cpanm : Compress-Raw-Zlib-2.090/private/ -cpanm : Compress-Raw-Zlib-2.090/private/MakeUtil.pm -cpanm : Compress-Raw-Zlib-2.090/README -cpanm : Compress-Raw-Zlib-2.090/ppport.h -cpanm : Compress-Raw-Zlib-2.090/Changes -cpanm : Compress-Raw-Zlib-2.090/config.in -cpanm : Compress-Raw-Zlib-2.090/Makefile.PL -cpanm : Compress-Raw-Zlib-2.090/zlib-src/ -cpanm : Compress-Raw-Zlib-2.090/zlib-src/deflate.h -cpanm : Compress-Raw-Zlib-2.090/zlib-src/uncompr.c -cpanm : Compress-Raw-Zlib-2.090/zlib-src/infback.c -cpanm : Compress-Raw-Zlib-2.090/zlib-src/trees.h -cpanm : Compress-Raw-Zlib-2.090/zlib-src/zconf.h -cpanm : Compress-Raw-Zlib-2.090/zlib-src/inftrees.h -cpanm : Compress-Raw-Zlib-2.090/zlib-src/zutil.c -cpanm : Compress-Raw-Zlib-2.090/zlib-src/crc32.h -cpanm : Compress-Raw-Zlib-2.090/zlib-src/inflate.h -cpanm : Compress-Raw-Zlib-2.090/zlib-src/inffast.h -cpanm : Compress-Raw-Zlib-2.090/zlib-src/inflate.c -cpanm : Compress-Raw-Zlib-2.090/zlib-src/deflate.c -cpanm : Compress-Raw-Zlib-2.090/zlib-src/crc32.c -cpanm : Compress-Raw-Zlib-2.090/zlib-src/zlib.h -cpanm : Compress-Raw-Zlib-2.090/zlib-src/inffixed.h -cpanm : Compress-Raw-Zlib-2.090/zlib-src/inftrees.c -cpanm : Compress-Raw-Zlib-2.090/zlib-src/zutil.h -cpanm : Compress-Raw-Zlib-2.090/zlib-src/compress.c -cpanm : Compress-Raw-Zlib-2.090/zlib-src/inffast.c -cpanm : Compress-Raw-Zlib-2.090/zlib-src/trees.c -cpanm : Compress-Raw-Zlib-2.090/zlib-src/adler32.c -cpanm : Compress-Raw-Zlib-2.090/typemap -cpanm : Compress-Raw-Zlib-2.090/t/ -cpanm : Compress-Raw-Zlib-2.090/t/09limitoutput.t -cpanm : Compress-Raw-Zlib-2.090/t/19nonpv.t -cpanm : Compress-Raw-Zlib-2.090/t/18lvalue.t -cpanm : Compress-Raw-Zlib-2.090/t/01version.t -cpanm : Compress-Raw-Zlib-2.090/t/meta-yaml.t -cpanm : Compress-Raw-Zlib-2.090/t/02zlib.t -cpanm : Compress-Raw-Zlib-2.090/t/Test/ -cpanm : Compress-Raw-Zlib-2.090/t/Test/Builder.pm -cpanm : Compress-Raw-Zlib-2.090/t/Test/More.pm -cpanm : Compress-Raw-Zlib-2.090/t/Test/Simple.pm -cpanm : Compress-Raw-Zlib-2.090/t/000prereq.t -cpanm : Compress-Raw-Zlib-2.090/t/99pod.t -cpanm : Compress-Raw-Zlib-2.090/t/compress/ -cpanm : Compress-Raw-Zlib-2.090/t/compress/CompTestUtils.pm -cpanm : Compress-Raw-Zlib-2.090/t/meta-json.t -cpanm : Compress-Raw-Zlib-2.090/t/07bufsize.t -cpanm : Compress-Raw-Zlib-2.090/Zlib.xs -cpanm : Compress-Raw-Zlib-2.090/META.json -cpanm : Compress-Raw-Zlib-2.090/META.yml -cpanm : Compress-Raw-Zlib-2.090/fallback/ -cpanm : Compress-Raw-Zlib-2.090/fallback/constants.h -cpanm : Compress-Raw-Zlib-2.090/fallback/constants.xs -cpanm : Compress-Raw-Zlib-2.090/examples/ -cpanm : Compress-Raw-Zlib-2.090/examples/filtinf -cpanm : Compress-Raw-Zlib-2.090/examples/filtdef -cpanm : Entering Compress-Raw-Zlib-2.090 -cpanm : Checking configure dependencies from META.json -cpanm : Checking if you have ExtUtils::MakeMaker 6.58 ... Yes (7.38) -cpanm : Running Makefile.PL -cpanm : Configuring Compress-Raw-Zlib-2.090 ... Up/Downgrade not needed. -cpanm : Parsing config.in... -cpanm : Building Zlib enabled -cpanm : Auto Detect Gzip OS Code.. -cpanm : Setting Gzip OS Code to 3 [Unix/Default] -cpanm : Looks Good. -cpanm : Checking if your kit is complete... -cpanm : Looks good -cpanm : Generating a Unix-style Makefile -cpanm : Writing Makefile for Compress::Raw::Zlib -cpanm : Writing MYMETA.yml and MYMETA.json -cpanm : Checking dependencies from MYMETA.json ... -cpanm : Checking if you have ExtUtils::MakeMaker 0 ... Yes (7.38) -cpanm : OK -cpanm : Building and testing Compress-Raw-Zlib-2.090 ... cp lib/Compress/Raw/Zlib.pm blib/lib/Compress/Raw/Zlib.pm -cpanm : Running Mkbootstrap for Zlib () -cpanm : chmod 644 "Zlib.bs" -cpanm : "/home/binary_c/perl5/perlbrew/perls/perl-5.31.5/bin/perl5.31.5" -MExtUtils::Command::MM -e 'cp_nonempty' -- Zlib.bs blib/arch/auto/Compress/Raw/Zlib/Zlib.bs 644 -cpanm : "/home/binary_c/perl5/perlbrew/perls/perl-5.31.5/bin/perl5.31.5" "/home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/5.31.5/ExtUtils/xsubpp" -typemap '/home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/5.31.5/ExtUtils/typemap' -typemap '/home/binary_c/.cpanm/work/1573495593.435/Compress-Raw-Zlib-2.090/typemap' Zlib.xs > Zlib.xsc -cpanm : mv Zlib.xsc Zlib.c -cpanm : cc -c -I./zlib-src -D_REENTRANT -D_GNU_SOURCE -fwrapv -fno-strict-aliasing -pipe -fstack-protector-strong -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -mtune=generic -march=x86-64 -DVERSION=\"2.090\" -DXS_VERSION=\"2.090\" -fPIC "-I/home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/5.31.5/x86_64-linux-thread-multi/CORE" -DNO_VIZ -DZ_SOLO -DGZIP_OS_CODE=3 -DUSE_PPPORT_H Zlib.c -cpanm : cc -c -I./zlib-src -D_REENTRANT -D_GNU_SOURCE -fwrapv -fno-strict-aliasing -pipe -fstack-protector-strong -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -mtune=generic -march=x86-64 -DVERSION=\"2.090\" -DXS_VERSION=\"2.090\" -fPIC "-I/home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/5.31.5/x86_64-linux-thread-multi/CORE" -DNO_VIZ -DZ_SOLO -DGZIP_OS_CODE=3 -DUSE_PPPORT_H adler32.c -cpanm : cc -c -I./zlib-src -D_REENTRANT -D_GNU_SOURCE -fwrapv -fno-strict-aliasing -pipe -fstack-protector-strong -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -mtune=generic -march=x86-64 -DVERSION=\"2.090\" -DXS_VERSION=\"2.090\" -fPIC "-I/home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/5.31.5/x86_64-linux-thread-multi/CORE" -DNO_VIZ -DZ_SOLO -DGZIP_OS_CODE=3 -DUSE_PPPORT_H compress.c -cpanm : cc -c -I./zlib-src -D_REENTRANT -D_GNU_SOURCE -fwrapv -fno-strict-aliasing -pipe -fstack-protector-strong -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -mtune=generic -march=x86-64 -DVERSION=\"2.090\" -DXS_VERSION=\"2.090\" -fPIC "-I/home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/5.31.5/x86_64-linux-thread-multi/CORE" -DNO_VIZ -DZ_SOLO -DGZIP_OS_CODE=3 -DUSE_PPPORT_H crc32.c -cpanm : cc -c -I./zlib-src -D_REENTRANT -D_GNU_SOURCE -fwrapv -fno-strict-aliasing -pipe -fstack-protector-strong -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -mtune=generic -march=x86-64 -DVERSION=\"2.090\" -DXS_VERSION=\"2.090\" -fPIC "-I/home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/5.31.5/x86_64-linux-thread-multi/CORE" -DNO_VIZ -DZ_SOLO -DGZIP_OS_CODE=3 -DUSE_PPPORT_H deflate.c -cpanm : cc -c -I./zlib-src -D_REENTRANT -D_GNU_SOURCE -fwrapv -fno-strict-aliasing -pipe -fstack-protector-strong -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -mtune=generic -march=x86-64 -DVERSION=\"2.090\" -DXS_VERSION=\"2.090\" -fPIC "-I/home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/5.31.5/x86_64-linux-thread-multi/CORE" -DNO_VIZ -DZ_SOLO -DGZIP_OS_CODE=3 -DUSE_PPPORT_H infback.c -cpanm : cc -c -I./zlib-src -D_REENTRANT -D_GNU_SOURCE -fwrapv -fno-strict-aliasing -pipe -fstack-protector-strong -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -mtune=generic -march=x86-64 -DVERSION=\"2.090\" -DXS_VERSION=\"2.090\" -fPIC "-I/home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/5.31.5/x86_64-linux-thread-multi/CORE" -DNO_VIZ -DZ_SOLO -DGZIP_OS_CODE=3 -DUSE_PPPORT_H inffast.c -cpanm : cc -c -I./zlib-src -D_REENTRANT -D_GNU_SOURCE -fwrapv -fno-strict-aliasing -pipe -fstack-protector-strong -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -mtune=generic -march=x86-64 -DVERSION=\"2.090\" -DXS_VERSION=\"2.090\" -fPIC "-I/home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/5.31.5/x86_64-linux-thread-multi/CORE" -DNO_VIZ -DZ_SOLO -DGZIP_OS_CODE=3 -DUSE_PPPORT_H inflate.c -cpanm : cc -c -I./zlib-src -D_REENTRANT -D_GNU_SOURCE -fwrapv -fno-strict-aliasing -pipe -fstack-protector-strong -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -mtune=generic -march=x86-64 -DVERSION=\"2.090\" -DXS_VERSION=\"2.090\" -fPIC "-I/home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/5.31.5/x86_64-linux-thread-multi/CORE" -DNO_VIZ -DZ_SOLO -DGZIP_OS_CODE=3 -DUSE_PPPORT_H inftrees.c -cpanm : cc -c -I./zlib-src -D_REENTRANT -D_GNU_SOURCE -fwrapv -fno-strict-aliasing -pipe -fstack-protector-strong -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -mtune=generic -march=x86-64 -DVERSION=\"2.090\" -DXS_VERSION=\"2.090\" -fPIC "-I/home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/5.31.5/x86_64-linux-thread-multi/CORE" -DNO_VIZ -DZ_SOLO -DGZIP_OS_CODE=3 -DUSE_PPPORT_H trees.c -cpanm : cc -c -I./zlib-src -D_REENTRANT -D_GNU_SOURCE -fwrapv -fno-strict-aliasing -pipe -fstack-protector-strong -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -mtune=generic -march=x86-64 -DVERSION=\"2.090\" -DXS_VERSION=\"2.090\" -fPIC "-I/home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/5.31.5/x86_64-linux-thread-multi/CORE" -DNO_VIZ -DZ_SOLO -DGZIP_OS_CODE=3 -DUSE_PPPORT_H uncompr.c -cpanm : cc -c -I./zlib-src -D_REENTRANT -D_GNU_SOURCE -fwrapv -fno-strict-aliasing -pipe -fstack-protector-strong -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -mtune=generic -march=x86-64 -DVERSION=\"2.090\" -DXS_VERSION=\"2.090\" -fPIC "-I/home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/5.31.5/x86_64-linux-thread-multi/CORE" -DNO_VIZ -DZ_SOLO -DGZIP_OS_CODE=3 -DUSE_PPPORT_H zutil.c -cpanm : rm -f blib/arch/auto/Compress/Raw/Zlib/Zlib.so -cpanm : cc -shared -O2 -mtune=generic -march=x86-64 -L/usr/local/lib -fstack-protector-strong Zlib.o adler32.o compress.o crc32.o deflate.o infback.o inffast.o inflate.o inftrees.o trees.o uncompr.o zutil.o -o blib/arch/auto/Compress/Raw/Zlib/Zlib.so \ -cpanm : \ -cpanm : -cpanm : chmod 755 blib/arch/auto/Compress/Raw/Zlib/Zlib.so -cpanm : "/home/binary_c/perl5/perlbrew/perls/perl-5.31.5/bin/perl5.31.5" -MExtUtils::Command::MM -e 'cp_nonempty' -- Zlib.bs blib/arch/auto/Compress/Raw/Zlib/Zlib.bs 644 -cpanm : PERL_DL_NONLAZY=1 "/home/binary_c/perl5/perlbrew/perls/perl-5.31.5/bin/perl5.31.5" "-MExtUtils::Command::MM" "-MTest::Harness" "-e" "undef *Test::Harness::Switches; test_harness(0, 'blib/lib', 'blib/arch')" t/*.t -cpanm : # Running Perl version 5.031005 -cpanm : t/000prereq.t ...... ok -cpanm : t/01version.t ...... ok -cpanm : t/02zlib.t ......... ok -cpanm : t/07bufsize.t ...... skipped: Lengthy Tests Disabled -cpanm : t/09limitoutput.t .. ok -cpanm : t/18lvalue.t ....... ok -cpanm : t/19nonpv.t ........ ok -cpanm : t/99pod.t .......... skipped: Test::Pod 1.00 required for testing POD -cpanm : t/meta-json.t ...... skipped: Test::CPAN::Meta::JSON required for testing META.json -cpanm : t/meta-yaml.t ...... skipped: Test::CPAN::Meta required for testing META.yml -cpanm : All tests successful. -cpanm : Files=10, Tests=483, 0 wallclock secs ( 0.08 usr 0.01 sys + 0.59 cusr 0.05 csys = 0.73 CPU) -cpanm : Result: PASS -cpanm : "/home/binary_c/perl5/perlbrew/perls/perl-5.31.5/bin/perl5.31.5" -MExtUtils::Command::MM -e 'cp_nonempty' -- Zlib.bs blib/arch/auto/Compress/Raw/Zlib/Zlib.bs 644 -cpanm : Files found in blib/arch: installing files in blib/lib into architecture dependent library tree -cpanm : Installing /home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/site_perl/5.31.5/x86_64-linux-thread-multi/auto/Compress/Raw/Zlib/Zlib.so -cpanm : Installing /home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/site_perl/5.31.5/x86_64-linux-thread-multi/Compress/Raw/Zlib.pm -cpanm : Appending installation info to /home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/5.31.5/x86_64-linux-thread-multi/perllocal.pod -cpanm : OK -cpanm : Successfully installed Compress-Raw-Zlib-2.090 (upgraded from 2.087) -cpanm : Installing /home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/site_perl/5.31.5/x86_64-linux-thread-multi/.meta/Compress-Raw-Zlib-2.090/MYMETA.json -cpanm : Installing /home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/site_perl/5.31.5/x86_64-linux-thread-multi/.meta/Compress-Raw-Zlib-2.090/install.json -cpanm : Searching Compress::Raw::Bzip2 (2.090) on cpanmetadb ... -cpanm : --2019-11-11 18:06:38-- http://cpanmetadb.plackperl.org/v1.0/package/Compress::Raw::Bzip2 -cpanm : Resolving cpanmetadb.plackperl.org (cpanmetadb.plackperl.org)... 151.101.18.217 -cpanm : Connecting to cpanmetadb.plackperl.org (cpanmetadb.plackperl.org)|151.101.18.217|:80... connected. -cpanm : HTTP request sent, awaiting response... 200 OK -cpanm : Length: 111 [text/yaml] -cpanm : Saving to: 'STDOUT' -cpanm : -cpanm : 0K 100% 11.6M=0s -cpanm : -cpanm : 2019-11-11 18:06:38 (11.6 MB/s) - written to stdout [111/111] -cpanm : -cpanm : --> Working on Compress::Raw::Bzip2 -cpanm : Fetching http://www.cpan.org/authors/id/P/PM/PMQS/Compress-Raw-Bzip2-2.090.tar.gz ... --2019-11-11 18:06:38-- http://www.cpan.org/authors/id/P/PM/PMQS/Compress-Raw-Bzip2-2.090.tar.gz -cpanm : Resolving www.cpan.org (www.cpan.org)... 151.101.18.217 -cpanm : Connecting to www.cpan.org (www.cpan.org)|151.101.18.217|:80... connected. -cpanm : HTTP request sent, awaiting response... 200 OK -cpanm : Length: 138242 (135K) [application/x-gzip] -cpanm : Saving to: 'Compress-Raw-Bzip2-2.090.tar.gz' -cpanm : -cpanm : 0K .......... .......... .......... .......... .......... 37% 1.50M 0s -cpanm : 50K .......... .......... .......... .......... .......... 74% 1.98M 0s -cpanm : 100K .......... .......... .......... ..... 100% 93.0M=0.06s -cpanm : -cpanm : 2019-11-11 18:06:39 (2.29 MB/s) - 'Compress-Raw-Bzip2-2.090.tar.gz' saved [138242/138242] -cpanm : -cpanm : Unpacking Compress-Raw-Bzip2-2.090.tar.gz +cpanm : Unpacking Compress-Raw-Bzip2-2.090.tar.gz cpanm : OK cpanm : Compress-Raw-Bzip2-2.090/ cpanm : Compress-Raw-Bzip2-2.090/lib/ @@ -3399,7 +1556,7 @@ cpanm : Building and testing Compress-Raw-Bzip2-2.090 ... cp lib/Compress/Raw/Bz cpanm : Running Mkbootstrap for Bzip2 () cpanm : chmod 644 "Bzip2.bs" cpanm : "/home/binary_c/perl5/perlbrew/perls/perl-5.31.5/bin/perl5.31.5" -MExtUtils::Command::MM -e 'cp_nonempty' -- Bzip2.bs blib/arch/auto/Compress/Raw/Bzip2/Bzip2.bs 644 -cpanm : "/home/binary_c/perl5/perlbrew/perls/perl-5.31.5/bin/perl5.31.5" "/home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/5.31.5/ExtUtils/xsubpp" -typemap '/home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/5.31.5/ExtUtils/typemap' -typemap '/home/binary_c/.cpanm/work/1573495593.435/Compress-Raw-Bzip2-2.090/typemap' Bzip2.xs > Bzip2.xsc +cpanm : "/home/binary_c/perl5/perlbrew/perls/perl-5.31.5/bin/perl5.31.5" "/home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/5.31.5/ExtUtils/xsubpp" -typemap '/home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/5.31.5/ExtUtils/typemap' -typemap '/home/binary_c/.cpanm/work/1573497578.435/Compress-Raw-Bzip2-2.090/typemap' Bzip2.xs > Bzip2.xsc cpanm : mv Bzip2.xsc Bzip2.c cpanm : cc -c -I. -D_REENTRANT -D_GNU_SOURCE -fwrapv -fno-strict-aliasing -pipe -fstack-protector-strong -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -mtune=generic -march=x86-64 -DVERSION=\"2.090\" -DXS_VERSION=\"2.090\" -fPIC "-I/home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/5.31.5/x86_64-linux-thread-multi/CORE" -DBZ_NO_STDIO -DUSE_PPPORT_H Bzip2.c cpanm : cc -c -I. -D_REENTRANT -D_GNU_SOURCE -fwrapv -fno-strict-aliasing -pipe -fstack-protector-strong -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -mtune=generic -march=x86-64 -DVERSION=\"2.090\" -DXS_VERSION=\"2.090\" -fPIC "-I/home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/5.31.5/x86_64-linux-thread-multi/CORE" -DBZ_NO_STDIO -DUSE_PPPORT_H blocksort.c @@ -3424,7 +1581,7 @@ cpanm : t/99pod.t .......... skipped: Test::Pod 1.00 required for testing POD cpanm : t/meta-json.t ...... skipped: Test::CPAN::Meta::JSON required for testing META.json cpanm : t/meta-yaml.t ...... skipped: Test::CPAN::Meta required for testing META.yml cpanm : All tests successful. -cpanm : Files=7, Tests=283, 0 wallclock secs ( 0.06 usr 0.01 sys + 0.33 cusr 0.05 csys = 0.45 CPU) +cpanm : Files=7, Tests=283, 1 wallclock secs ( 0.07 usr 0.00 sys + 0.34 cusr 0.04 csys = 0.45 CPU) cpanm : Result: PASS cpanm : "/home/binary_c/perl5/perlbrew/perls/perl-5.31.5/bin/perl5.31.5" -MExtUtils::Command::MM -e 'cp_nonempty' -- Bzip2.bs blib/arch/auto/Compress/Raw/Bzip2/Bzip2.bs 644 cpanm : Files found in blib/arch: installing files in blib/lib into architecture dependent library tree @@ -3435,437 +1592,595 @@ cpanm : OK cpanm : Successfully installed Compress-Raw-Bzip2-2.090 (upgraded from 2.087) cpanm : Installing /home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/site_perl/5.31.5/x86_64-linux-thread-multi/.meta/Compress-Raw-Bzip2-2.090/MYMETA.json cpanm : Installing /home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/site_perl/5.31.5/x86_64-linux-thread-multi/.meta/Compress-Raw-Bzip2-2.090/install.json -cpanm : Building and testing IO-Compress-2.090 ... cp lib/IO/Compress/Base/Common.pm blib/lib/IO/Compress/Base/Common.pm -cpanm : cp lib/Compress/Zlib.pm blib/lib/Compress/Zlib.pm -cpanm : cp lib/IO/Compress/Zlib/Constants.pm blib/lib/IO/Compress/Zlib/Constants.pm -cpanm : cp lib/IO/Uncompress/Base.pm blib/lib/IO/Uncompress/Base.pm -cpanm : cp lib/IO/Uncompress/Gunzip.pm blib/lib/IO/Uncompress/Gunzip.pm -cpanm : cp lib/IO/Uncompress/AnyUncompress.pm blib/lib/IO/Uncompress/AnyUncompress.pm -cpanm : cp lib/IO/Compress/Zip.pm blib/lib/IO/Compress/Zip.pm -cpanm : cp lib/IO/Uncompress/Adapter/Inflate.pm blib/lib/IO/Uncompress/Adapter/Inflate.pm -cpanm : cp lib/IO/Compress/Adapter/Deflate.pm blib/lib/IO/Compress/Adapter/Deflate.pm -cpanm : cp lib/IO/Compress/Gzip.pm blib/lib/IO/Compress/Gzip.pm -cpanm : cp lib/IO/Compress/Adapter/Bzip2.pm blib/lib/IO/Compress/Adapter/Bzip2.pm -cpanm : cp lib/IO/Uncompress/Bunzip2.pm blib/lib/IO/Uncompress/Bunzip2.pm -cpanm : cp lib/IO/Uncompress/Adapter/Bunzip2.pm blib/lib/IO/Uncompress/Adapter/Bunzip2.pm -cpanm : cp lib/IO/Uncompress/RawInflate.pm blib/lib/IO/Uncompress/RawInflate.pm -cpanm : cp lib/IO/Compress/Deflate.pm blib/lib/IO/Compress/Deflate.pm -cpanm : cp lib/IO/Compress/FAQ.pod blib/lib/IO/Compress/FAQ.pod -cpanm : cp lib/IO/Compress/RawDeflate.pm blib/lib/IO/Compress/RawDeflate.pm -cpanm : cp lib/IO/Compress/Zlib/Extra.pm blib/lib/IO/Compress/Zlib/Extra.pm -cpanm : cp lib/IO/Compress/Base.pm blib/lib/IO/Compress/Base.pm -cpanm : cp lib/IO/Compress/Gzip/Constants.pm blib/lib/IO/Compress/Gzip/Constants.pm -cpanm : cp lib/IO/Uncompress/Adapter/Identity.pm blib/lib/IO/Uncompress/Adapter/Identity.pm -cpanm : cp lib/IO/Uncompress/Unzip.pm blib/lib/IO/Uncompress/Unzip.pm -cpanm : cp lib/IO/Compress/Adapter/Identity.pm blib/lib/IO/Compress/Adapter/Identity.pm -cpanm : cp lib/IO/Compress/Zip/Constants.pm blib/lib/IO/Compress/Zip/Constants.pm -cpanm : cp lib/File/GlobMapper.pm blib/lib/File/GlobMapper.pm -cpanm : cp lib/IO/Uncompress/Inflate.pm blib/lib/IO/Uncompress/Inflate.pm -cpanm : cp lib/IO/Compress/Bzip2.pm blib/lib/IO/Compress/Bzip2.pm -cpanm : cp lib/IO/Uncompress/AnyInflate.pm blib/lib/IO/Uncompress/AnyInflate.pm -cpanm : cp bin/streamzip blib/script/streamzip -cpanm : "/home/binary_c/perl5/perlbrew/perls/perl-5.31.5/bin/perl5.31.5" -MExtUtils::MY -e 'MY->fixin(shift)' -- blib/script/streamzip -cpanm : cp bin/zipdetails blib/script/zipdetails -cpanm : "/home/binary_c/perl5/perlbrew/perls/perl-5.31.5/bin/perl5.31.5" -MExtUtils::MY -e 'MY->fixin(shift)' -- blib/script/zipdetails -cpanm : PERL_DL_NONLAZY=1 "/home/binary_c/perl5/perlbrew/perls/perl-5.31.5/bin/perl5.31.5" "-MExtUtils::Command::MM" "-MTest::Harness" "-e" "undef *Test::Harness::Switches; test_harness(0, 'blib/lib', 'blib/arch')" t/*.t -cpanm : t/000prereq.t ................... ok -cpanm : t/001bzip2.t .................... ok -cpanm : t/001zlib-generic-deflate.t ..... ok -cpanm : t/001zlib-generic-gzip.t ........ ok -cpanm : t/001zlib-generic-rawdeflate.t .. ok -cpanm : t/001zlib-generic-zip.t ......... ok -cpanm : t/002any-deflate.t .............. ok -cpanm : t/002any-gzip.t ................. ok -cpanm : t/002any-rawdeflate.t ........... ok -cpanm : t/002any-transparent.t .......... ok -cpanm : t/002any-zip.t .................. ok -cpanm : t/004gziphdr.t .................. ok -cpanm : t/005defhdr.t ................... ok -cpanm : t/006zip.t ...................... ok -cpanm : t/010examples-bzip2.t ........... ok -cpanm : t/010examples-zlib.t ............ ok -cpanm : t/011-streamzip.t ............... ok -cpanm : t/01misc.t ...................... ok -cpanm : t/020isize.t .................... skipped: Lengthy Tests Disabled -cpanm : t/050interop-gzip.t ............. ok -cpanm : t/100generic-bzip2.t ............ ok -cpanm : t/100generic-deflate.t .......... ok -cpanm : t/100generic-gzip.t ............. ok -cpanm : t/100generic-rawdeflate.t ....... ok -cpanm : t/100generic-zip.t .............. ok -cpanm : t/101truncate-bzip2.t ........... skipped: Lengthy Tests Disabled -cpanm : t/101truncate-deflate.t ......... skipped: Lengthy Tests Disabled -cpanm : t/101truncate-gzip.t ............ skipped: Lengthy Tests Disabled -cpanm : t/101truncate-rawdeflate.t ...... skipped: Lengthy Tests Disabled -cpanm : t/101truncate-zip.t ............. skipped: Lengthy Tests Disabled -cpanm : t/102tied-bzip2.t ............... ok -cpanm : t/102tied-deflate.t ............. ok -cpanm : t/102tied-gzip.t ................ ok -cpanm : t/102tied-rawdeflate.t .......... ok -cpanm : t/102tied-zip.t ................. ok -cpanm : t/103newtied-bzip2.t ............ ok -cpanm : t/103newtied-deflate.t .......... ok -cpanm : t/103newtied-gzip.t ............. ok -cpanm : t/103newtied-rawdeflate.t ....... ok -cpanm : t/103newtied-zip.t .............. ok -cpanm : t/104destroy-bzip2.t ............ ok -cpanm : t/104destroy-deflate.t .......... ok -cpanm : t/104destroy-gzip.t ............. ok -cpanm : t/104destroy-rawdeflate.t ....... ok -cpanm : t/104destroy-zip.t .............. ok -cpanm : t/105oneshot-bzip2.t ............ ok -cpanm : t/105oneshot-deflate.t .......... ok -cpanm : t/105oneshot-gzip-only.t ........ ok -cpanm : t/105oneshot-gzip.t ............. ok -cpanm : t/105oneshot-rawdeflate.t ....... ok -cpanm : t/105oneshot-zip-bzip2-only.t ... ok -cpanm : t/105oneshot-zip-only.t ......... ok -cpanm : t/105oneshot-zip-store-only.t ... skipped: Lengthy Tests Disabled -cpanm : t/105oneshot-zip.t .............. ok -cpanm : t/106prime-bzip2.t .............. skipped: Lengthy Tests Disabled -cpanm : t/106prime-deflate.t ............ skipped: Lengthy Tests Disabled -cpanm : t/106prime-gzip.t ............... skipped: Lengthy Tests Disabled -cpanm : t/106prime-rawdeflate.t ......... skipped: Lengthy Tests Disabled -cpanm : t/106prime-zip.t ................ skipped: Lengthy Tests Disabled -cpanm : t/107multi-bzip2.t .............. ok -cpanm : t/107multi-deflate.t ............ ok -cpanm : t/107multi-gzip.t ............... ok -cpanm : t/107multi-rawdeflate.t ......... ok -cpanm : t/107multi-zip-only.t ........... ok -cpanm : t/107multi-zip.t ................ ok -cpanm : t/108anyunc-bzip2.t ............. ok -cpanm : t/108anyunc-deflate.t ........... ok -cpanm : t/108anyunc-gzip.t .............. ok -cpanm : t/108anyunc-rawdeflate.t ........ ok -cpanm : t/108anyunc-transparent.t ....... ok -cpanm : t/108anyunc-zip.t ............... ok -cpanm : t/109merge-deflate.t ............ ok -cpanm : t/109merge-gzip.t ............... ok -cpanm : t/109merge-rawdeflate.t ......... ok -cpanm : t/109merge-zip.t ................ skipped: not implemented yet -cpanm : t/110encode-bzip2.t ............. ok -cpanm : t/110encode-deflate.t ........... ok -cpanm : t/110encode-gzip.t .............. ok -cpanm : t/110encode-rawdeflate.t ........ ok -cpanm : t/110encode-zip.t ............... ok -cpanm : t/111const-deflate.t ............ ok -cpanm : t/112utf8-zip.t ................. ok -cpanm : t/999meta-json.t ................ skipped: Test::CPAN::Meta::JSON required for testing META.json -cpanm : t/999meta-yml.t ................. skipped: Test::CPAN::Meta required for testing META.yml -cpanm : t/999pod.t ...................... skipped: Test::Pod 1.00 required for testing POD -cpanm : t/cz-01version.t ................ ok -cpanm : t/cz-03zlib-v1.t ................ ok -cpanm : t/cz-05examples.t ............... ok -cpanm : t/cz-06gzsetp.t ................. ok -cpanm : t/cz-08encoding.t ............... ok -cpanm : t/cz-14gzopen.t ................. ok -cpanm : t/globmapper.t .................. ok -cpanm : All tests successful. -cpanm : Files=92, Tests=25777, 33 wallclock secs ( 2.45 usr 0.27 sys + 13.25 cusr 1.26 csys = 17.23 CPU) -cpanm : Result: PASS -cpanm : Installing /home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/site_perl/5.31.5/File/GlobMapper.pm -cpanm : Installing /home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/site_perl/5.31.5/IO/Uncompress/Base.pm -cpanm : Installing /home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/site_perl/5.31.5/IO/Uncompress/RawInflate.pm -cpanm : Installing /home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/site_perl/5.31.5/IO/Uncompress/Inflate.pm -cpanm : Installing /home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/site_perl/5.31.5/IO/Uncompress/Bunzip2.pm -cpanm : Installing /home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/site_perl/5.31.5/IO/Uncompress/AnyUncompress.pm -cpanm : Installing /home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/site_perl/5.31.5/IO/Uncompress/Unzip.pm -cpanm : Installing /home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/site_perl/5.31.5/IO/Uncompress/Gunzip.pm -cpanm : Installing /home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/site_perl/5.31.5/IO/Uncompress/AnyInflate.pm -cpanm : Installing /home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/site_perl/5.31.5/IO/Uncompress/Adapter/Identity.pm -cpanm : Installing /home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/site_perl/5.31.5/IO/Uncompress/Adapter/Inflate.pm -cpanm : Installing /home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/site_perl/5.31.5/IO/Uncompress/Adapter/Bunzip2.pm -cpanm : Installing /home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/site_perl/5.31.5/IO/Compress/Deflate.pm -cpanm : Installing /home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/site_perl/5.31.5/IO/Compress/Base.pm -cpanm : Installing /home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/site_perl/5.31.5/IO/Compress/Bzip2.pm -cpanm : Installing /home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/site_perl/5.31.5/IO/Compress/Zip.pm -cpanm : Installing /home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/site_perl/5.31.5/IO/Compress/RawDeflate.pm -cpanm : Installing /home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/site_perl/5.31.5/IO/Compress/Gzip.pm -cpanm : Installing /home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/site_perl/5.31.5/IO/Compress/FAQ.pod -cpanm : Installing /home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/site_perl/5.31.5/IO/Compress/Zip/Constants.pm -cpanm : Installing /home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/site_perl/5.31.5/IO/Compress/Gzip/Constants.pm -cpanm : Installing /home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/site_perl/5.31.5/IO/Compress/Zlib/Constants.pm -cpanm : Installing /home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/site_perl/5.31.5/IO/Compress/Zlib/Extra.pm -cpanm : Installing /home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/site_perl/5.31.5/IO/Compress/Base/Common.pm -cpanm : Installing /home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/site_perl/5.31.5/IO/Compress/Adapter/Deflate.pm -cpanm : Installing /home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/site_perl/5.31.5/IO/Compress/Adapter/Bzip2.pm -cpanm : Installing /home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/site_perl/5.31.5/IO/Compress/Adapter/Identity.pm -cpanm : Installing /home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/site_perl/5.31.5/Compress/Zlib.pm -cpanm : Installing /home/binary_c/perl5/perlbrew/perls/perl-5.31.5/bin/streamzip -cpanm : Installing /home/binary_c/perl5/perlbrew/perls/perl-5.31.5/bin/zipdetails -cpanm : Appending installation info to /home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/5.31.5/x86_64-linux-thread-multi/perllocal.pod -cpanm : OK -cpanm : Successfully installed IO-Compress-2.090 (upgraded from 2.087) -cpanm : Installing /home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/site_perl/5.31.5/x86_64-linux-thread-multi/.meta/IO-Compress-2.090/MYMETA.json -cpanm : Installing /home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/site_perl/5.31.5/x86_64-linux-thread-multi/.meta/IO-Compress-2.090/install.json -cpanm : 3 distributions installed - -Installing Cwd with cpanminus -cpanm : cpanm (App::cpanminus) 1.7044 on perl 5.031005 built for x86_64-linux-thread-multi -cpanm : Work directory is /home/binary_c/.cpanm/work/1573495636.1089 -cpanm : You have make /usr/bin/make -cpanm : You have /usr/bin/wget -cpanm : You have /bin/tar: tar (GNU tar) 1.29 -cpanm : Copyright (C) 2015 Free Software Foundation, Inc. -cpanm : License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>. -cpanm : This is free software: you are free to change and redistribute it. -cpanm : There is NO WARRANTY, to the extent permitted by law. -cpanm : -cpanm : Written by John Gilmore and Jay Fenlason. -cpanm : You have /usr/bin/unzip -cpanm : Searching Cwd () on cpanmetadb ... -cpanm : --2019-11-11 18:07:16-- http://cpanmetadb.plackperl.org/v1.0/package/Cwd -cpanm : Resolving cpanmetadb.plackperl.org (cpanmetadb.plackperl.org)... 151.101.18.217 -cpanm : Connecting to cpanmetadb.plackperl.org (cpanmetadb.plackperl.org)|151.101.18.217|:80... connected. -cpanm : HTTP request sent, awaiting response... 200 OK -cpanm : Length: 338 [text/yaml] -cpanm : Saving to: 'STDOUT' -cpanm : -cpanm : 0K 100% 24.0M=0s -cpanm : -cpanm : 2019-11-11 18:07:16 (24.0 MB/s) - written to stdout [338/338] -cpanm : -cpanm : Cwd is up to date. (3.78) - -Installing Data::Dumper with cpanminus -cpanm : cpanm (App::cpanminus) 1.7044 on perl 5.031005 built for x86_64-linux-thread-multi -cpanm : Work directory is /home/binary_c/.cpanm/work/1573495637.1094 -cpanm : You have make /usr/bin/make -cpanm : You have /usr/bin/wget -cpanm : You have /bin/tar: tar (GNU tar) 1.29 -cpanm : Copyright (C) 2015 Free Software Foundation, Inc. -cpanm : License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>. -cpanm : This is free software: you are free to change and redistribute it. -cpanm : There is NO WARRANTY, to the extent permitted by law. -cpanm : -cpanm : Written by John Gilmore and Jay Fenlason. -cpanm : You have /usr/bin/unzip -cpanm : Searching Data::Dumper () on cpanmetadb ... -cpanm : --2019-11-11 18:07:17-- http://cpanmetadb.plackperl.org/v1.0/package/Data::Dumper -cpanm : Resolving cpanmetadb.plackperl.org (cpanmetadb.plackperl.org)... 151.101.18.217 -cpanm : Connecting to cpanmetadb.plackperl.org (cpanmetadb.plackperl.org)|151.101.18.217|:80... connected. -cpanm : HTTP request sent, awaiting response... 200 OK -cpanm : Length: 100 [text/yaml] -cpanm : Saving to: 'STDOUT' -cpanm : -cpanm : 0K 100% 11.4M=0s -cpanm : -cpanm : 2019-11-11 18:07:17 (11.4 MB/s) - written to stdout [100/100] -cpanm : -cpanm : Data::Dumper is up to date. (2.174) - -Installing Data::Serializer with cpanminus -cpanm : cpanm (App::cpanminus) 1.7044 on perl 5.031005 built for x86_64-linux-thread-multi -cpanm : Work directory is /home/binary_c/.cpanm/work/1573495637.1099 -cpanm : You have make /usr/bin/make -cpanm : You have /usr/bin/wget -cpanm : You have /bin/tar: tar (GNU tar) 1.29 -cpanm : Copyright (C) 2015 Free Software Foundation, Inc. -cpanm : License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>. -cpanm : This is free software: you are free to change and redistribute it. -cpanm : There is NO WARRANTY, to the extent permitted by law. -cpanm : -cpanm : Written by John Gilmore and Jay Fenlason. -cpanm : You have /usr/bin/unzip -cpanm : Searching Data::Serializer () on cpanmetadb ... -cpanm : --2019-11-11 18:07:17-- http://cpanmetadb.plackperl.org/v1.0/package/Data::Serializer -cpanm : Resolving cpanmetadb.plackperl.org (cpanmetadb.plackperl.org)... 151.101.18.217 -cpanm : Connecting to cpanmetadb.plackperl.org (cpanmetadb.plackperl.org)|151.101.18.217|:80... connected. -cpanm : HTTP request sent, awaiting response... 200 OK -cpanm : Length: 813 [text/yaml] -cpanm : Saving to: 'STDOUT' -cpanm : -cpanm : 0K 100% 75.3M=0s -cpanm : -cpanm : 2019-11-11 18:07:17 (75.3 MB/s) - written to stdout [813/813] -cpanm : -cpanm : --> Working on Data::Serializer -cpanm : Fetching http://www.cpan.org/authors/id/N/NE/NEELY/Data-Serializer-0.60.tar.gz ... --2019-11-11 18:07:17-- http://www.cpan.org/authors/id/N/NE/NEELY/Data-Serializer-0.60.tar.gz -cpanm : Resolving www.cpan.org (www.cpan.org)... 151.101.18.217 -cpanm : Connecting to www.cpan.org (www.cpan.org)|151.101.18.217|:80... connected. -cpanm : HTTP request sent, awaiting response... 200 OK -cpanm : Length: 43291 (42K) [application/x-gzip] -cpanm : Saving to: 'Data-Serializer-0.60.tar.gz' -cpanm : -cpanm : 0K .......... .......... .......... .......... .. 100% 1.57M=0.03s -cpanm : -cpanm : 2019-11-11 18:07:17 (1.57 MB/s) - 'Data-Serializer-0.60.tar.gz' saved [43291/43291] -cpanm : -cpanm : Unpacking Data-Serializer-0.60.tar.gz -cpanm : OK -cpanm : Data-Serializer-0.60 -cpanm : Data-Serializer-0.60/MANIFEST -cpanm : Data-Serializer-0.60/INSTALL -cpanm : Data-Serializer-0.60/MANIFEST.SKIP -cpanm : Data-Serializer-0.60/README -cpanm : Data-Serializer-0.60/Build.PL -cpanm : Data-Serializer-0.60/Makefile.PL -cpanm : Data-Serializer-0.60/META.yml -cpanm : Data-Serializer-0.60/Changes -cpanm : Data-Serializer-0.60/xt -cpanm : Data-Serializer-0.60/xt/10-01-Pod.t -cpanm : Data-Serializer-0.60/xt/00-02-Kwalitee.t -cpanm : Data-Serializer-0.60/xt/00-01-Signature.t -cpanm : Data-Serializer-0.60/xt/10-02-Pod-Coverage.t -cpanm : Data-Serializer-0.60/lib -cpanm : Data-Serializer-0.60/lib/Data -cpanm : Data-Serializer-0.60/lib/Data/Serializer.pm -cpanm : Data-Serializer-0.60/lib/Data/Serializer -cpanm : Data-Serializer-0.60/lib/Data/Serializer/Storable.pm -cpanm : Data-Serializer-0.60/lib/Data/Serializer/YAML.pm -cpanm : Data-Serializer-0.60/lib/Data/Serializer/JSON.pm -cpanm : Data-Serializer-0.60/lib/Data/Serializer/Cookbook.pm -cpanm : Data-Serializer-0.60/lib/Data/Serializer/Persistent.pm -cpanm : Data-Serializer-0.60/lib/Data/Serializer/Bencode.pm -cpanm : Data-Serializer-0.60/lib/Data/Serializer/FreezeThaw.pm -cpanm : Data-Serializer-0.60/lib/Data/Serializer/Raw.pm -cpanm : Data-Serializer-0.60/lib/Data/Serializer/Config -cpanm : Data-Serializer-0.60/lib/Data/Serializer/Config/General.pm -cpanm : Data-Serializer-0.60/lib/Data/Serializer/PHP -cpanm : Data-Serializer-0.60/lib/Data/Serializer/PHP/Serialization.pm -cpanm : Data-Serializer-0.60/lib/Data/Serializer/XML -cpanm : Data-Serializer-0.60/lib/Data/Serializer/XML/Dumper.pm -cpanm : Data-Serializer-0.60/lib/Data/Serializer/XML/Simple.pm -cpanm : Data-Serializer-0.60/lib/Data/Serializer/Convert -cpanm : Data-Serializer-0.60/lib/Data/Serializer/Convert/Bencode.pm -cpanm : Data-Serializer-0.60/lib/Data/Serializer/Convert/Bencode_XS.pm -cpanm : Data-Serializer-0.60/lib/Data/Serializer/JSON -cpanm : Data-Serializer-0.60/lib/Data/Serializer/JSON/Syck.pm -cpanm : Data-Serializer-0.60/lib/Data/Serializer/Data -cpanm : Data-Serializer-0.60/lib/Data/Serializer/Data/Dumper.pm -cpanm : Data-Serializer-0.60/lib/Data/Serializer/Data/Denter.pm -cpanm : Data-Serializer-0.60/lib/Data/Serializer/Data/Taxi.pm -cpanm : Data-Serializer-0.60/lib/Data/Serializer/YAML -cpanm : Data-Serializer-0.60/lib/Data/Serializer/YAML/Syck.pm -cpanm : Data-Serializer-0.60/t -cpanm : Data-Serializer-0.60/t/01-11-YAML-Syck.t -cpanm : Data-Serializer-0.60/t/01-15-Convert-Bencode.t -cpanm : Data-Serializer-0.60/t/04-02-Compress-PPMd.t -cpanm : Data-Serializer-0.60/t/01-13-JSON-Syck.t -cpanm : Data-Serializer-0.60/t/01-12-JSON.t -cpanm : Data-Serializer-0.60/t/01-08-PHP-Serialization.t -cpanm : Data-Serializer-0.60/t/02-02-Fast-Raw.t -cpanm : Data-Serializer-0.60/t/01-02-Data-Denter.t -cpanm : Data-Serializer-0.60/t/07-01-MD5-Digest.t -cpanm : Data-Serializer-0.60/t/01-05-Config-General.t -cpanm : Data-Serializer-0.60/t/01-01-Data-Dumper.t -cpanm : Data-Serializer-0.60/t/03-Non-Portable.t -cpanm : Data-Serializer-0.60/t/01-06-YAML.t -cpanm : Data-Serializer-0.60/t/07-03-SHA-256-Digest.t -cpanm : Data-Serializer-0.60/t/01-03-Storable.t -cpanm : Data-Serializer-0.60/t/08-Store-Retrieve.t -cpanm : Data-Serializer-0.60/t/04-01-Compress-Zlib.t -cpanm : Data-Serializer-0.60/t/07-02-SHA1-Digest.t -cpanm : Data-Serializer-0.60/t/09-Feature-Combos.t -cpanm : Data-Serializer-0.60/t/01-09-XML-Simple.t -cpanm : Data-Serializer-0.60/t/01-14-Bencode.t -cpanm : Data-Serializer-0.60/t/02-01-Orig-Raw.t -cpanm : Data-Serializer-0.60/t/06-B64-Encoding.t -cpanm : Data-Serializer-0.60/t/01-04-FreezeThaw.t -cpanm : Data-Serializer-0.60/t/01-07-XML-Dumper.t -cpanm : Data-Serializer-0.60/t/01-10-Data-Taxi.t -cpanm : Data-Serializer-0.60/t/serializer-testlib -cpanm : Data-Serializer-0.60/t/01-16-Convert-Bencode_XS.t -cpanm : Data-Serializer-0.60/t/05-Encryption.t -cpanm : Data-Serializer-0.60/t/ExtUtils -cpanm : Data-Serializer-0.60/t/ExtUtils/TBone.pm -cpanm : Data-Serializer-0.60/examples -cpanm : Data-Serializer-0.60/examples/README -cpanm : Entering Data-Serializer-0.60 -cpanm : Checking configure dependencies from META.yml -cpanm : Checking if you have ExtUtils::Install 1.46 ... Yes (2.14) -cpanm : Checking if you have Module::Build 0.38 ... No -cpanm : Searching Module::Build (0.38) on cpanmetadb ... -cpanm : ==> Found dependencies: Module::Build -cpanm : --2019-11-11 18:07:17-- http://cpanmetadb.plackperl.org/v1.0/package/Module::Build +cpanm : Searching Compress::Raw::Zlib (2.090) on cpanmetadb ... +cpanm : --2019-11-11 18:39:43-- http://cpanmetadb.plackperl.org/v1.0/package/Compress::Raw::Zlib cpanm : Resolving cpanmetadb.plackperl.org (cpanmetadb.plackperl.org)... 151.101.18.217 cpanm : Connecting to cpanmetadb.plackperl.org (cpanmetadb.plackperl.org)|151.101.18.217|:80... connected. cpanm : HTTP request sent, awaiting response... 200 OK -cpanm : Length: 769 [text/yaml] +cpanm : Length: 109 [text/yaml] cpanm : Saving to: 'STDOUT' cpanm : -cpanm : 0K 100% 73.6M=0s +cpanm : 0K 100% 14.5M=0s cpanm : -cpanm : 2019-11-11 18:07:17 (73.6 MB/s) - written to stdout [769/769] +cpanm : 2019-11-11 18:39:43 (14.5 MB/s) - written to stdout [109/109] cpanm : -cpanm : --> Working on Module::Build -cpanm : Fetching http://www.cpan.org/authors/id/L/LE/LEONT/Module-Build-0.4229.tar.gz ... --2019-11-11 18:07:17-- http://www.cpan.org/authors/id/L/LE/LEONT/Module-Build-0.4229.tar.gz +cpanm : --> Working on Compress::Raw::Zlib +cpanm : Fetching http://www.cpan.org/authors/id/P/PM/PMQS/Compress-Raw-Zlib-2.090.tar.gz ... --2019-11-11 18:39:43-- http://www.cpan.org/authors/id/P/PM/PMQS/Compress-Raw-Zlib-2.090.tar.gz cpanm : Resolving www.cpan.org (www.cpan.org)... 151.101.18.217 cpanm : Connecting to www.cpan.org (www.cpan.org)|151.101.18.217|:80... connected. cpanm : HTTP request sent, awaiting response... 200 OK -cpanm : Length: 304340 (297K) [application/x-gzip] -cpanm : Saving to: 'Module-Build-0.4229.tar.gz' +cpanm : Length: 254413 (248K) [application/x-gzip] +cpanm : Saving to: 'Compress-Raw-Zlib-2.090.tar.gz' cpanm : -cpanm : 0K .......... .......... .......... .......... .......... 16% 1.75M 0s -cpanm : 50K .......... .......... .......... .......... .......... 33% 13.4M 0s -cpanm : 100K .......... .......... .......... .......... .......... 50% 56.1M 0s -cpanm : 150K .......... .......... .......... .......... .......... 67% 119M 0s -cpanm : 200K .......... .......... .......... .......... .......... 84% 20.2M 0s -cpanm : 250K .......... .......... .......... .......... ....... 100% 123M=0.04s +cpanm : 0K .......... .......... .......... .......... .......... 20% 1.44M 0s +cpanm : 50K .......... .......... .......... .......... .......... 40% 93.9M 0s +cpanm : 100K .......... .......... .......... .......... .......... 60% 13.1M 0s +cpanm : 150K .......... .......... .......... .......... .......... 80% 122M 0s +cpanm : 200K .......... .......... .......... .......... ........ 100% 20.2M=0.04s cpanm : -cpanm : 2019-11-11 18:07:17 (8.16 MB/s) - 'Module-Build-0.4229.tar.gz' saved [304340/304340] +cpanm : 2019-11-11 18:39:43 (5.94 MB/s) - 'Compress-Raw-Zlib-2.090.tar.gz' saved [254413/254413] cpanm : -cpanm : Unpacking Module-Build-0.4229.tar.gz +cpanm : Unpacking Compress-Raw-Zlib-2.090.tar.gz cpanm : OK -cpanm : Module-Build-0.4229 -cpanm : Module-Build-0.4229/Build.PL -cpanm : Module-Build-0.4229/Changes -cpanm : Module-Build-0.4229/INSTALL -cpanm : Module-Build-0.4229/LICENSE -cpanm : Module-Build-0.4229/MANIFEST -cpanm : Module-Build-0.4229/META.json -cpanm : Module-Build-0.4229/META.yml -cpanm : Module-Build-0.4229/Makefile.PL -cpanm : Module-Build-0.4229/README -cpanm : Module-Build-0.4229/bin -cpanm : Module-Build-0.4229/bin/config_data -cpanm : Module-Build-0.4229/contrib -cpanm : Module-Build-0.4229/contrib/bash_completion.module-build -cpanm : Module-Build-0.4229/inc -cpanm : Module-Build-0.4229/inc/MBVersion.pm -cpanm : Module-Build-0.4229/inc/bootstrap.pl -cpanm : Module-Build-0.4229/inc/Module -cpanm : Module-Build-0.4229/inc/Module/Metadata.pm -cpanm : Module-Build-0.4229/inc/Perl -cpanm : Module-Build-0.4229/inc/Perl/OSType.pm -cpanm : Module-Build-0.4229/lib -cpanm : Module-Build-0.4229/lib/Module -cpanm : Module-Build-0.4229/lib/Module/Build.pm -cpanm : Module-Build-0.4229/lib/Module/Build -cpanm : Module-Build-0.4229/lib/Module/Build/API.pod -cpanm : Module-Build-0.4229/lib/Module/Build/Authoring.pod -cpanm : Module-Build-0.4229/lib/Module/Build/Base.pm -cpanm : Module-Build-0.4229/lib/Module/Build/Bundling.pod -cpanm : Module-Build-0.4229/lib/Module/Build/Compat.pm -cpanm : Module-Build-0.4229/lib/Module/Build/Config.pm -cpanm : Module-Build-0.4229/lib/Module/Build/Cookbook.pm -cpanm : Module-Build-0.4229/lib/Module/Build/Dumper.pm -cpanm : Module-Build-0.4229/lib/Module/Build/Notes.pm -cpanm : Module-Build-0.4229/lib/Module/Build/PPMMaker.pm -cpanm : Module-Build-0.4229/lib/Module/Build/PodParser.pm -cpanm : Module-Build-0.4229/lib/Module/Build/Platform -cpanm : Module-Build-0.4229/lib/Module/Build/Platform/Default.pm -cpanm : Module-Build-0.4229/lib/Module/Build/Platform/MacOS.pm -cpanm : Module-Build-0.4229/lib/Module/Build/Platform/Unix.pm -cpanm : Module-Build-0.4229/lib/Module/Build/Platform/VMS.pm -cpanm : Module-Build-0.4229/lib/Module/Build/Platform/VOS.pm -cpanm : Module-Build-0.4229/lib/Module/Build/Platform/Windows.pm -cpanm : Module-Build-0.4229/lib/Module/Build/Platform/aix.pm -cpanm : Module-Build-0.4229/lib/Module/Build/Platform/cygwin.pm -cpanm : Module-Build-0.4229/lib/Module/Build/Platform/darwin.pm -cpanm : Module-Build-0.4229/lib/Module/Build/Platform/os2.pm -cpanm : Module-Build-0.4229/t -cpanm : Module-Build-0.4229/t/00-compile.t -cpanm : Module-Build-0.4229/t/PL_files.t -cpanm : Module-Build-0.4229/t/README.pod -cpanm : Module-Build-0.4229/t/add_property.t -cpanm : Module-Build-0.4229/t/add_property_array.t -cpanm : Module-Build-0.4229/t/add_property_hash.t -cpanm : Module-Build-0.4229/t/basic.t -cpanm : Module-Build-0.4229/t/bundle_inc.t -cpanm : Module-Build-0.4229/t/compat.t -cpanm : Module-Build-0.4229/t/debug.t -cpanm : Module-Build-0.4229/t/destinations.t +cpanm : Compress-Raw-Zlib-2.090/ +cpanm : Compress-Raw-Zlib-2.090/lib/ +cpanm : Compress-Raw-Zlib-2.090/lib/Compress/ +cpanm : Compress-Raw-Zlib-2.090/lib/Compress/Raw/ +cpanm : Compress-Raw-Zlib-2.090/lib/Compress/Raw/Zlib.pm +cpanm : Compress-Raw-Zlib-2.090/MANIFEST +cpanm : Compress-Raw-Zlib-2.090/private/ +cpanm : Compress-Raw-Zlib-2.090/private/MakeUtil.pm +cpanm : Compress-Raw-Zlib-2.090/README +cpanm : Compress-Raw-Zlib-2.090/ppport.h +cpanm : Compress-Raw-Zlib-2.090/Changes +cpanm : Compress-Raw-Zlib-2.090/config.in +cpanm : Compress-Raw-Zlib-2.090/Makefile.PL +cpanm : Compress-Raw-Zlib-2.090/zlib-src/ +cpanm : Compress-Raw-Zlib-2.090/zlib-src/deflate.h +cpanm : Compress-Raw-Zlib-2.090/zlib-src/uncompr.c +cpanm : Compress-Raw-Zlib-2.090/zlib-src/infback.c +cpanm : Compress-Raw-Zlib-2.090/zlib-src/trees.h +cpanm : Compress-Raw-Zlib-2.090/zlib-src/zconf.h +cpanm : Compress-Raw-Zlib-2.090/zlib-src/inftrees.h +cpanm : Compress-Raw-Zlib-2.090/zlib-src/zutil.c +cpanm : Compress-Raw-Zlib-2.090/zlib-src/crc32.h +cpanm : Compress-Raw-Zlib-2.090/zlib-src/inflate.h +cpanm : Compress-Raw-Zlib-2.090/zlib-src/inffast.h +cpanm : Compress-Raw-Zlib-2.090/zlib-src/inflate.c +cpanm : Compress-Raw-Zlib-2.090/zlib-src/deflate.c +cpanm : Compress-Raw-Zlib-2.090/zlib-src/crc32.c +cpanm : Compress-Raw-Zlib-2.090/zlib-src/zlib.h +cpanm : Compress-Raw-Zlib-2.090/zlib-src/inffixed.h +cpanm : Compress-Raw-Zlib-2.090/zlib-src/inftrees.c +cpanm : Compress-Raw-Zlib-2.090/zlib-src/zutil.h +cpanm : Compress-Raw-Zlib-2.090/zlib-src/compress.c +cpanm : Compress-Raw-Zlib-2.090/zlib-src/inffast.c +cpanm : Compress-Raw-Zlib-2.090/zlib-src/trees.c +cpanm : Compress-Raw-Zlib-2.090/zlib-src/adler32.c +cpanm : Compress-Raw-Zlib-2.090/typemap +cpanm : Compress-Raw-Zlib-2.090/t/ +cpanm : Compress-Raw-Zlib-2.090/t/09limitoutput.t +cpanm : Compress-Raw-Zlib-2.090/t/19nonpv.t +cpanm : Compress-Raw-Zlib-2.090/t/18lvalue.t +cpanm : Compress-Raw-Zlib-2.090/t/01version.t +cpanm : Compress-Raw-Zlib-2.090/t/meta-yaml.t +cpanm : Compress-Raw-Zlib-2.090/t/02zlib.t +cpanm : Compress-Raw-Zlib-2.090/t/Test/ +cpanm : Compress-Raw-Zlib-2.090/t/Test/Builder.pm +cpanm : Compress-Raw-Zlib-2.090/t/Test/More.pm +cpanm : Compress-Raw-Zlib-2.090/t/Test/Simple.pm +cpanm : Compress-Raw-Zlib-2.090/t/000prereq.t +cpanm : Compress-Raw-Zlib-2.090/t/99pod.t +cpanm : Compress-Raw-Zlib-2.090/t/compress/ +cpanm : Compress-Raw-Zlib-2.090/t/compress/CompTestUtils.pm +cpanm : Compress-Raw-Zlib-2.090/t/meta-json.t +cpanm : Compress-Raw-Zlib-2.090/t/07bufsize.t +cpanm : Compress-Raw-Zlib-2.090/Zlib.xs +cpanm : Compress-Raw-Zlib-2.090/META.json +cpanm : Compress-Raw-Zlib-2.090/META.yml +cpanm : Compress-Raw-Zlib-2.090/fallback/ +cpanm : Compress-Raw-Zlib-2.090/fallback/constants.h +cpanm : Compress-Raw-Zlib-2.090/fallback/constants.xs +cpanm : Compress-Raw-Zlib-2.090/examples/ +cpanm : Compress-Raw-Zlib-2.090/examples/filtinf +cpanm : Compress-Raw-Zlib-2.090/examples/filtdef +cpanm : Entering Compress-Raw-Zlib-2.090 +cpanm : Checking configure dependencies from META.json +cpanm : Checking if you have ExtUtils::MakeMaker 6.58 ... Yes (7.38) +cpanm : Running Makefile.PL +cpanm : Configuring Compress-Raw-Zlib-2.090 ... Up/Downgrade not needed. +cpanm : Parsing config.in... +cpanm : Building Zlib enabled +cpanm : Auto Detect Gzip OS Code.. +cpanm : Setting Gzip OS Code to 3 [Unix/Default] +cpanm : Looks Good. +cpanm : Checking if your kit is complete... +cpanm : Looks good +cpanm : Generating a Unix-style Makefile +cpanm : Writing Makefile for Compress::Raw::Zlib +cpanm : Writing MYMETA.yml and MYMETA.json +cpanm : Checking dependencies from MYMETA.json ... +cpanm : Checking if you have ExtUtils::MakeMaker 0 ... Yes (7.38) +cpanm : OK +cpanm : Building and testing Compress-Raw-Zlib-2.090 ... cp lib/Compress/Raw/Zlib.pm blib/lib/Compress/Raw/Zlib.pm +cpanm : Running Mkbootstrap for Zlib () +cpanm : chmod 644 "Zlib.bs" +cpanm : "/home/binary_c/perl5/perlbrew/perls/perl-5.31.5/bin/perl5.31.5" -MExtUtils::Command::MM -e 'cp_nonempty' -- Zlib.bs blib/arch/auto/Compress/Raw/Zlib/Zlib.bs 644 +cpanm : "/home/binary_c/perl5/perlbrew/perls/perl-5.31.5/bin/perl5.31.5" "/home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/5.31.5/ExtUtils/xsubpp" -typemap '/home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/5.31.5/ExtUtils/typemap' -typemap '/home/binary_c/.cpanm/work/1573497578.435/Compress-Raw-Zlib-2.090/typemap' Zlib.xs > Zlib.xsc +cpanm : mv Zlib.xsc Zlib.c +cpanm : cc -c -I./zlib-src -D_REENTRANT -D_GNU_SOURCE -fwrapv -fno-strict-aliasing -pipe -fstack-protector-strong -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -mtune=generic -march=x86-64 -DVERSION=\"2.090\" -DXS_VERSION=\"2.090\" -fPIC "-I/home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/5.31.5/x86_64-linux-thread-multi/CORE" -DNO_VIZ -DZ_SOLO -DGZIP_OS_CODE=3 -DUSE_PPPORT_H Zlib.c +cpanm : cc -c -I./zlib-src -D_REENTRANT -D_GNU_SOURCE -fwrapv -fno-strict-aliasing -pipe -fstack-protector-strong -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -mtune=generic -march=x86-64 -DVERSION=\"2.090\" -DXS_VERSION=\"2.090\" -fPIC "-I/home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/5.31.5/x86_64-linux-thread-multi/CORE" -DNO_VIZ -DZ_SOLO -DGZIP_OS_CODE=3 -DUSE_PPPORT_H adler32.c +cpanm : cc -c -I./zlib-src -D_REENTRANT -D_GNU_SOURCE -fwrapv -fno-strict-aliasing -pipe -fstack-protector-strong -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -mtune=generic -march=x86-64 -DVERSION=\"2.090\" -DXS_VERSION=\"2.090\" -fPIC "-I/home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/5.31.5/x86_64-linux-thread-multi/CORE" -DNO_VIZ -DZ_SOLO -DGZIP_OS_CODE=3 -DUSE_PPPORT_H compress.c +cpanm : cc -c -I./zlib-src -D_REENTRANT -D_GNU_SOURCE -fwrapv -fno-strict-aliasing -pipe -fstack-protector-strong -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -mtune=generic -march=x86-64 -DVERSION=\"2.090\" -DXS_VERSION=\"2.090\" -fPIC "-I/home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/5.31.5/x86_64-linux-thread-multi/CORE" -DNO_VIZ -DZ_SOLO -DGZIP_OS_CODE=3 -DUSE_PPPORT_H crc32.c +cpanm : cc -c -I./zlib-src -D_REENTRANT -D_GNU_SOURCE -fwrapv -fno-strict-aliasing -pipe -fstack-protector-strong -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -mtune=generic -march=x86-64 -DVERSION=\"2.090\" -DXS_VERSION=\"2.090\" -fPIC "-I/home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/5.31.5/x86_64-linux-thread-multi/CORE" -DNO_VIZ -DZ_SOLO -DGZIP_OS_CODE=3 -DUSE_PPPORT_H deflate.c +cpanm : cc -c -I./zlib-src -D_REENTRANT -D_GNU_SOURCE -fwrapv -fno-strict-aliasing -pipe -fstack-protector-strong -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -mtune=generic -march=x86-64 -DVERSION=\"2.090\" -DXS_VERSION=\"2.090\" -fPIC "-I/home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/5.31.5/x86_64-linux-thread-multi/CORE" -DNO_VIZ -DZ_SOLO -DGZIP_OS_CODE=3 -DUSE_PPPORT_H infback.c +cpanm : cc -c -I./zlib-src -D_REENTRANT -D_GNU_SOURCE -fwrapv -fno-strict-aliasing -pipe -fstack-protector-strong -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -mtune=generic -march=x86-64 -DVERSION=\"2.090\" -DXS_VERSION=\"2.090\" -fPIC "-I/home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/5.31.5/x86_64-linux-thread-multi/CORE" -DNO_VIZ -DZ_SOLO -DGZIP_OS_CODE=3 -DUSE_PPPORT_H inffast.c +cpanm : cc -c -I./zlib-src -D_REENTRANT -D_GNU_SOURCE -fwrapv -fno-strict-aliasing -pipe -fstack-protector-strong -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -mtune=generic -march=x86-64 -DVERSION=\"2.090\" -DXS_VERSION=\"2.090\" -fPIC "-I/home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/5.31.5/x86_64-linux-thread-multi/CORE" -DNO_VIZ -DZ_SOLO -DGZIP_OS_CODE=3 -DUSE_PPPORT_H inflate.c +cpanm : cc -c -I./zlib-src -D_REENTRANT -D_GNU_SOURCE -fwrapv -fno-strict-aliasing -pipe -fstack-protector-strong -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -mtune=generic -march=x86-64 -DVERSION=\"2.090\" -DXS_VERSION=\"2.090\" -fPIC "-I/home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/5.31.5/x86_64-linux-thread-multi/CORE" -DNO_VIZ -DZ_SOLO -DGZIP_OS_CODE=3 -DUSE_PPPORT_H inftrees.c +cpanm : cc -c -I./zlib-src -D_REENTRANT -D_GNU_SOURCE -fwrapv -fno-strict-aliasing -pipe -fstack-protector-strong -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -mtune=generic -march=x86-64 -DVERSION=\"2.090\" -DXS_VERSION=\"2.090\" -fPIC "-I/home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/5.31.5/x86_64-linux-thread-multi/CORE" -DNO_VIZ -DZ_SOLO -DGZIP_OS_CODE=3 -DUSE_PPPORT_H trees.c +cpanm : cc -c -I./zlib-src -D_REENTRANT -D_GNU_SOURCE -fwrapv -fno-strict-aliasing -pipe -fstack-protector-strong -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -mtune=generic -march=x86-64 -DVERSION=\"2.090\" -DXS_VERSION=\"2.090\" -fPIC "-I/home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/5.31.5/x86_64-linux-thread-multi/CORE" -DNO_VIZ -DZ_SOLO -DGZIP_OS_CODE=3 -DUSE_PPPORT_H uncompr.c +cpanm : cc -c -I./zlib-src -D_REENTRANT -D_GNU_SOURCE -fwrapv -fno-strict-aliasing -pipe -fstack-protector-strong -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -mtune=generic -march=x86-64 -DVERSION=\"2.090\" -DXS_VERSION=\"2.090\" -fPIC "-I/home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/5.31.5/x86_64-linux-thread-multi/CORE" -DNO_VIZ -DZ_SOLO -DGZIP_OS_CODE=3 -DUSE_PPPORT_H zutil.c +cpanm : rm -f blib/arch/auto/Compress/Raw/Zlib/Zlib.so +cpanm : cc -shared -O2 -mtune=generic -march=x86-64 -L/usr/local/lib -fstack-protector-strong Zlib.o adler32.o compress.o crc32.o deflate.o infback.o inffast.o inflate.o inftrees.o trees.o uncompr.o zutil.o -o blib/arch/auto/Compress/Raw/Zlib/Zlib.so \ +cpanm : \ +cpanm : +cpanm : chmod 755 blib/arch/auto/Compress/Raw/Zlib/Zlib.so +cpanm : "/home/binary_c/perl5/perlbrew/perls/perl-5.31.5/bin/perl5.31.5" -MExtUtils::Command::MM -e 'cp_nonempty' -- Zlib.bs blib/arch/auto/Compress/Raw/Zlib/Zlib.bs 644 +cpanm : PERL_DL_NONLAZY=1 "/home/binary_c/perl5/perlbrew/perls/perl-5.31.5/bin/perl5.31.5" "-MExtUtils::Command::MM" "-MTest::Harness" "-e" "undef *Test::Harness::Switches; test_harness(0, 'blib/lib', 'blib/arch')" t/*.t +cpanm : # Running Perl version 5.031005 +cpanm : t/000prereq.t ...... ok +cpanm : t/01version.t ...... ok +cpanm : t/02zlib.t ......... ok +cpanm : t/07bufsize.t ...... skipped: Lengthy Tests Disabled +cpanm : t/09limitoutput.t .. ok +cpanm : t/18lvalue.t ....... ok +cpanm : t/19nonpv.t ........ ok +cpanm : t/99pod.t .......... skipped: Test::Pod 1.00 required for testing POD +cpanm : t/meta-json.t ...... skipped: Test::CPAN::Meta::JSON required for testing META.json +cpanm : t/meta-yaml.t ...... skipped: Test::CPAN::Meta required for testing META.yml +cpanm : All tests successful. +cpanm : Files=10, Tests=483, 1 wallclock secs ( 0.08 usr 0.01 sys + 0.56 cusr 0.08 csys = 0.73 CPU) +cpanm : Result: PASS +cpanm : "/home/binary_c/perl5/perlbrew/perls/perl-5.31.5/bin/perl5.31.5" -MExtUtils::Command::MM -e 'cp_nonempty' -- Zlib.bs blib/arch/auto/Compress/Raw/Zlib/Zlib.bs 644 +cpanm : Files found in blib/arch: installing files in blib/lib into architecture dependent library tree +cpanm : Installing /home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/site_perl/5.31.5/x86_64-linux-thread-multi/auto/Compress/Raw/Zlib/Zlib.so +cpanm : Installing /home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/site_perl/5.31.5/x86_64-linux-thread-multi/Compress/Raw/Zlib.pm +cpanm : Appending installation info to /home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/5.31.5/x86_64-linux-thread-multi/perllocal.pod +cpanm : OK +cpanm : Successfully installed Compress-Raw-Zlib-2.090 (upgraded from 2.087) +cpanm : Installing /home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/site_perl/5.31.5/x86_64-linux-thread-multi/.meta/Compress-Raw-Zlib-2.090/MYMETA.json +cpanm : Installing /home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/site_perl/5.31.5/x86_64-linux-thread-multi/.meta/Compress-Raw-Zlib-2.090/install.json +cpanm : Building and testing IO-Compress-2.090 ... cp lib/IO/Uncompress/Unzip.pm blib/lib/IO/Uncompress/Unzip.pm +cpanm : cp lib/IO/Compress/Deflate.pm blib/lib/IO/Compress/Deflate.pm +cpanm : cp lib/IO/Uncompress/AnyUncompress.pm blib/lib/IO/Uncompress/AnyUncompress.pm +cpanm : cp lib/IO/Compress/Zip/Constants.pm blib/lib/IO/Compress/Zip/Constants.pm +cpanm : cp lib/IO/Uncompress/Gunzip.pm blib/lib/IO/Uncompress/Gunzip.pm +cpanm : cp lib/IO/Compress/Base/Common.pm blib/lib/IO/Compress/Base/Common.pm +cpanm : cp lib/IO/Uncompress/Adapter/Identity.pm blib/lib/IO/Uncompress/Adapter/Identity.pm +cpanm : cp lib/IO/Compress/Zip.pm blib/lib/IO/Compress/Zip.pm +cpanm : cp lib/IO/Uncompress/Base.pm blib/lib/IO/Uncompress/Base.pm +cpanm : cp lib/IO/Compress/Adapter/Identity.pm blib/lib/IO/Compress/Adapter/Identity.pm +cpanm : cp lib/IO/Uncompress/AnyInflate.pm blib/lib/IO/Uncompress/AnyInflate.pm +cpanm : cp lib/IO/Compress/Gzip.pm blib/lib/IO/Compress/Gzip.pm +cpanm : cp lib/IO/Uncompress/Adapter/Bunzip2.pm blib/lib/IO/Uncompress/Adapter/Bunzip2.pm +cpanm : cp lib/IO/Compress/Bzip2.pm blib/lib/IO/Compress/Bzip2.pm +cpanm : cp lib/IO/Compress/Gzip/Constants.pm blib/lib/IO/Compress/Gzip/Constants.pm +cpanm : cp lib/IO/Compress/Adapter/Bzip2.pm blib/lib/IO/Compress/Adapter/Bzip2.pm +cpanm : cp lib/IO/Compress/Adapter/Deflate.pm blib/lib/IO/Compress/Adapter/Deflate.pm +cpanm : cp lib/IO/Compress/Zlib/Extra.pm blib/lib/IO/Compress/Zlib/Extra.pm +cpanm : cp lib/IO/Compress/FAQ.pod blib/lib/IO/Compress/FAQ.pod +cpanm : cp lib/IO/Uncompress/Inflate.pm blib/lib/IO/Uncompress/Inflate.pm +cpanm : cp lib/IO/Uncompress/Adapter/Inflate.pm blib/lib/IO/Uncompress/Adapter/Inflate.pm +cpanm : cp lib/IO/Compress/RawDeflate.pm blib/lib/IO/Compress/RawDeflate.pm +cpanm : cp lib/Compress/Zlib.pm blib/lib/Compress/Zlib.pm +cpanm : cp lib/IO/Uncompress/Bunzip2.pm blib/lib/IO/Uncompress/Bunzip2.pm +cpanm : cp lib/IO/Compress/Base.pm blib/lib/IO/Compress/Base.pm +cpanm : cp lib/File/GlobMapper.pm blib/lib/File/GlobMapper.pm +cpanm : cp lib/IO/Uncompress/RawInflate.pm blib/lib/IO/Uncompress/RawInflate.pm +cpanm : cp lib/IO/Compress/Zlib/Constants.pm blib/lib/IO/Compress/Zlib/Constants.pm +cpanm : cp bin/streamzip blib/script/streamzip +cpanm : "/home/binary_c/perl5/perlbrew/perls/perl-5.31.5/bin/perl5.31.5" -MExtUtils::MY -e 'MY->fixin(shift)' -- blib/script/streamzip +cpanm : cp bin/zipdetails blib/script/zipdetails +cpanm : "/home/binary_c/perl5/perlbrew/perls/perl-5.31.5/bin/perl5.31.5" -MExtUtils::MY -e 'MY->fixin(shift)' -- blib/script/zipdetails +cpanm : PERL_DL_NONLAZY=1 "/home/binary_c/perl5/perlbrew/perls/perl-5.31.5/bin/perl5.31.5" "-MExtUtils::Command::MM" "-MTest::Harness" "-e" "undef *Test::Harness::Switches; test_harness(0, 'blib/lib', 'blib/arch')" t/*.t +cpanm : t/000prereq.t ................... ok +cpanm : t/001bzip2.t .................... ok +cpanm : t/001zlib-generic-deflate.t ..... ok +cpanm : t/001zlib-generic-gzip.t ........ ok +cpanm : t/001zlib-generic-rawdeflate.t .. ok +cpanm : t/001zlib-generic-zip.t ......... ok +cpanm : t/002any-deflate.t .............. ok +cpanm : t/002any-gzip.t ................. ok +cpanm : t/002any-rawdeflate.t ........... ok +cpanm : t/002any-transparent.t .......... ok +cpanm : t/002any-zip.t .................. ok +cpanm : t/004gziphdr.t .................. ok +cpanm : t/005defhdr.t ................... ok +cpanm : t/006zip.t ...................... ok +cpanm : t/010examples-bzip2.t ........... ok +cpanm : t/010examples-zlib.t ............ ok +cpanm : t/011-streamzip.t ............... ok +cpanm : t/01misc.t ...................... ok +cpanm : t/020isize.t .................... skipped: Lengthy Tests Disabled +cpanm : t/050interop-gzip.t ............. ok +cpanm : t/100generic-bzip2.t ............ ok +cpanm : t/100generic-deflate.t .......... ok +cpanm : t/100generic-gzip.t ............. ok +cpanm : t/100generic-rawdeflate.t ....... ok +cpanm : t/100generic-zip.t .............. ok +cpanm : t/101truncate-bzip2.t ........... skipped: Lengthy Tests Disabled +cpanm : t/101truncate-deflate.t ......... skipped: Lengthy Tests Disabled +cpanm : t/101truncate-gzip.t ............ skipped: Lengthy Tests Disabled +cpanm : t/101truncate-rawdeflate.t ...... skipped: Lengthy Tests Disabled +cpanm : t/101truncate-zip.t ............. skipped: Lengthy Tests Disabled +cpanm : t/102tied-bzip2.t ............... ok +cpanm : t/102tied-deflate.t ............. ok +cpanm : t/102tied-gzip.t ................ ok +cpanm : t/102tied-rawdeflate.t .......... ok +cpanm : t/102tied-zip.t ................. ok +cpanm : t/103newtied-bzip2.t ............ ok +cpanm : t/103newtied-deflate.t .......... ok +cpanm : t/103newtied-gzip.t ............. ok +cpanm : t/103newtied-rawdeflate.t ....... ok +cpanm : t/103newtied-zip.t .............. ok +cpanm : t/104destroy-bzip2.t ............ ok +cpanm : t/104destroy-deflate.t .......... ok +cpanm : t/104destroy-gzip.t ............. ok +cpanm : t/104destroy-rawdeflate.t ....... ok +cpanm : t/104destroy-zip.t .............. ok +cpanm : t/105oneshot-bzip2.t ............ ok +cpanm : t/105oneshot-deflate.t .......... ok +cpanm : t/105oneshot-gzip-only.t ........ ok +cpanm : t/105oneshot-gzip.t ............. ok +cpanm : t/105oneshot-rawdeflate.t ....... ok +cpanm : t/105oneshot-zip-bzip2-only.t ... ok +cpanm : t/105oneshot-zip-only.t ......... ok +cpanm : t/105oneshot-zip-store-only.t ... skipped: Lengthy Tests Disabled +cpanm : t/105oneshot-zip.t .............. ok +cpanm : t/106prime-bzip2.t .............. skipped: Lengthy Tests Disabled +cpanm : t/106prime-deflate.t ............ skipped: Lengthy Tests Disabled +cpanm : t/106prime-gzip.t ............... skipped: Lengthy Tests Disabled +cpanm : t/106prime-rawdeflate.t ......... skipped: Lengthy Tests Disabled +cpanm : t/106prime-zip.t ................ skipped: Lengthy Tests Disabled +cpanm : t/107multi-bzip2.t .............. ok +cpanm : t/107multi-deflate.t ............ ok +cpanm : t/107multi-gzip.t ............... ok +cpanm : t/107multi-rawdeflate.t ......... ok +cpanm : t/107multi-zip-only.t ........... ok +cpanm : t/107multi-zip.t ................ ok +cpanm : t/108anyunc-bzip2.t ............. ok +cpanm : t/108anyunc-deflate.t ........... ok +cpanm : t/108anyunc-gzip.t .............. ok +cpanm : t/108anyunc-rawdeflate.t ........ ok +cpanm : t/108anyunc-transparent.t ....... ok +cpanm : t/108anyunc-zip.t ............... ok +cpanm : t/109merge-deflate.t ............ ok +cpanm : t/109merge-gzip.t ............... ok +cpanm : t/109merge-rawdeflate.t ......... ok +cpanm : t/109merge-zip.t ................ skipped: not implemented yet +cpanm : t/110encode-bzip2.t ............. ok +cpanm : t/110encode-deflate.t ........... ok +cpanm : t/110encode-gzip.t .............. ok +cpanm : t/110encode-rawdeflate.t ........ ok +cpanm : t/110encode-zip.t ............... ok +cpanm : t/111const-deflate.t ............ ok +cpanm : t/112utf8-zip.t ................. ok +cpanm : t/999meta-json.t ................ skipped: Test::CPAN::Meta::JSON required for testing META.json +cpanm : t/999meta-yml.t ................. skipped: Test::CPAN::Meta required for testing META.yml +cpanm : t/999pod.t ...................... skipped: Test::Pod 1.00 required for testing POD +cpanm : t/cz-01version.t ................ ok +cpanm : t/cz-03zlib-v1.t ................ ok +cpanm : t/cz-05examples.t ............... ok +cpanm : t/cz-06gzsetp.t ................. ok +cpanm : t/cz-08encoding.t ............... ok +cpanm : t/cz-14gzopen.t ................. ok +cpanm : t/globmapper.t .................. ok +cpanm : All tests successful. +cpanm : Files=92, Tests=25777, 33 wallclock secs ( 2.51 usr 0.20 sys + 13.06 cusr 1.25 csys = 17.02 CPU) +cpanm : Result: PASS +cpanm : Installing /home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/site_perl/5.31.5/File/GlobMapper.pm +cpanm : Installing /home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/site_perl/5.31.5/IO/Uncompress/Base.pm +cpanm : Installing /home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/site_perl/5.31.5/IO/Uncompress/RawInflate.pm +cpanm : Installing /home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/site_perl/5.31.5/IO/Uncompress/Inflate.pm +cpanm : Installing /home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/site_perl/5.31.5/IO/Uncompress/Bunzip2.pm +cpanm : Installing /home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/site_perl/5.31.5/IO/Uncompress/AnyUncompress.pm +cpanm : Installing /home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/site_perl/5.31.5/IO/Uncompress/Unzip.pm +cpanm : Installing /home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/site_perl/5.31.5/IO/Uncompress/Gunzip.pm +cpanm : Installing /home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/site_perl/5.31.5/IO/Uncompress/AnyInflate.pm +cpanm : Installing /home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/site_perl/5.31.5/IO/Uncompress/Adapter/Identity.pm +cpanm : Installing /home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/site_perl/5.31.5/IO/Uncompress/Adapter/Inflate.pm +cpanm : Installing /home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/site_perl/5.31.5/IO/Uncompress/Adapter/Bunzip2.pm +cpanm : Installing /home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/site_perl/5.31.5/IO/Compress/Deflate.pm +cpanm : Installing /home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/site_perl/5.31.5/IO/Compress/Base.pm +cpanm : Installing /home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/site_perl/5.31.5/IO/Compress/Bzip2.pm +cpanm : Installing /home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/site_perl/5.31.5/IO/Compress/Zip.pm +cpanm : Installing /home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/site_perl/5.31.5/IO/Compress/RawDeflate.pm +cpanm : Installing /home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/site_perl/5.31.5/IO/Compress/Gzip.pm +cpanm : Installing /home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/site_perl/5.31.5/IO/Compress/FAQ.pod +cpanm : Installing /home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/site_perl/5.31.5/IO/Compress/Zip/Constants.pm +cpanm : Installing /home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/site_perl/5.31.5/IO/Compress/Gzip/Constants.pm +cpanm : Installing /home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/site_perl/5.31.5/IO/Compress/Zlib/Constants.pm +cpanm : Installing /home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/site_perl/5.31.5/IO/Compress/Zlib/Extra.pm +cpanm : Installing /home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/site_perl/5.31.5/IO/Compress/Base/Common.pm +cpanm : Installing /home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/site_perl/5.31.5/IO/Compress/Adapter/Deflate.pm +cpanm : Installing /home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/site_perl/5.31.5/IO/Compress/Adapter/Bzip2.pm +cpanm : Installing /home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/site_perl/5.31.5/IO/Compress/Adapter/Identity.pm +cpanm : Installing /home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/site_perl/5.31.5/Compress/Zlib.pm +cpanm : Installing /home/binary_c/perl5/perlbrew/perls/perl-5.31.5/bin/streamzip +cpanm : Installing /home/binary_c/perl5/perlbrew/perls/perl-5.31.5/bin/zipdetails +cpanm : Appending installation info to /home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/5.31.5/x86_64-linux-thread-multi/perllocal.pod +cpanm : OK +cpanm : Successfully installed IO-Compress-2.090 (upgraded from 2.087) +cpanm : Installing /home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/site_perl/5.31.5/x86_64-linux-thread-multi/.meta/IO-Compress-2.090/MYMETA.json +cpanm : Installing /home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/site_perl/5.31.5/x86_64-linux-thread-multi/.meta/IO-Compress-2.090/install.json +cpanm : 3 distributions installed + +Installing Cwd with cpanminus +cpanm : cpanm (App::cpanminus) 1.7044 on perl 5.031005 built for x86_64-linux-thread-multi +cpanm : Work directory is /home/binary_c/.cpanm/work/1573497621.1089 +cpanm : You have make /usr/bin/make +cpanm : You have /usr/bin/wget +cpanm : You have /bin/tar: tar (GNU tar) 1.29 +cpanm : Copyright (C) 2015 Free Software Foundation, Inc. +cpanm : License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>. +cpanm : This is free software: you are free to change and redistribute it. +cpanm : There is NO WARRANTY, to the extent permitted by law. +cpanm : +cpanm : Written by John Gilmore and Jay Fenlason. +cpanm : You have /usr/bin/unzip +cpanm : Searching Cwd () on cpanmetadb ... +cpanm : --2019-11-11 18:40:21-- http://cpanmetadb.plackperl.org/v1.0/package/Cwd +cpanm : Resolving cpanmetadb.plackperl.org (cpanmetadb.plackperl.org)... 151.101.18.217 +cpanm : Connecting to cpanmetadb.plackperl.org (cpanmetadb.plackperl.org)|151.101.18.217|:80... connected. +cpanm : HTTP request sent, awaiting response... 200 OK +cpanm : Length: 338 [text/yaml] +cpanm : Saving to: 'STDOUT' +cpanm : +cpanm : 0K 100% 26.9M=0s +cpanm : +cpanm : 2019-11-11 18:40:21 (26.9 MB/s) - written to stdout [338/338] +cpanm : +cpanm : Cwd is up to date. (3.78) + +Installing Data::Dumper with cpanminus +cpanm : cpanm (App::cpanminus) 1.7044 on perl 5.031005 built for x86_64-linux-thread-multi +cpanm : Work directory is /home/binary_c/.cpanm/work/1573497621.1094 +cpanm : You have make /usr/bin/make +cpanm : You have /usr/bin/wget +cpanm : You have /bin/tar: tar (GNU tar) 1.29 +cpanm : Copyright (C) 2015 Free Software Foundation, Inc. +cpanm : License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>. +cpanm : This is free software: you are free to change and redistribute it. +cpanm : There is NO WARRANTY, to the extent permitted by law. +cpanm : +cpanm : Written by John Gilmore and Jay Fenlason. +cpanm : You have /usr/bin/unzip +cpanm : Searching Data::Dumper () on cpanmetadb ... +cpanm : --2019-11-11 18:40:21-- http://cpanmetadb.plackperl.org/v1.0/package/Data::Dumper +cpanm : Resolving cpanmetadb.plackperl.org (cpanmetadb.plackperl.org)... 151.101.18.217 +cpanm : Connecting to cpanmetadb.plackperl.org (cpanmetadb.plackperl.org)|151.101.18.217|:80... connected. +cpanm : HTTP request sent, awaiting response... 200 OK +cpanm : Length: 100 [text/yaml] +cpanm : Saving to: 'STDOUT' +cpanm : +cpanm : 0K 100% 10.5M=0s +cpanm : +cpanm : 2019-11-11 18:40:21 (10.5 MB/s) - written to stdout [100/100] +cpanm : +cpanm : Data::Dumper is up to date. (2.174) + +Installing Data::Serializer with cpanminus +cpanm : cpanm (App::cpanminus) 1.7044 on perl 5.031005 built for x86_64-linux-thread-multi +cpanm : Work directory is /home/binary_c/.cpanm/work/1573497622.1099 +cpanm : You have make /usr/bin/make +cpanm : You have /usr/bin/wget +cpanm : You have /bin/tar: tar (GNU tar) 1.29 +cpanm : Copyright (C) 2015 Free Software Foundation, Inc. +cpanm : License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>. +cpanm : This is free software: you are free to change and redistribute it. +cpanm : There is NO WARRANTY, to the extent permitted by law. +cpanm : +cpanm : Written by John Gilmore and Jay Fenlason. +cpanm : You have /usr/bin/unzip +cpanm : Searching Data::Serializer () on cpanmetadb ... +cpanm : --2019-11-11 18:40:22-- http://cpanmetadb.plackperl.org/v1.0/package/Data::Serializer +cpanm : Resolving cpanmetadb.plackperl.org (cpanmetadb.plackperl.org)... 151.101.18.217 +cpanm : Connecting to cpanmetadb.plackperl.org (cpanmetadb.plackperl.org)|151.101.18.217|:80... connected. +cpanm : HTTP request sent, awaiting response... 200 OK +cpanm : Length: 813 [text/yaml] +cpanm : Saving to: 'STDOUT' +cpanm : +cpanm : 0K 100% 82.4M=0s +cpanm : +cpanm : 2019-11-11 18:40:22 (82.4 MB/s) - written to stdout [813/813] +cpanm : +cpanm : --> Working on Data::Serializer +cpanm : Fetching http://www.cpan.org/authors/id/N/NE/NEELY/Data-Serializer-0.60.tar.gz ... --2019-11-11 18:40:22-- http://www.cpan.org/authors/id/N/NE/NEELY/Data-Serializer-0.60.tar.gz +cpanm : Resolving www.cpan.org (www.cpan.org)... 151.101.18.217 +cpanm : Connecting to www.cpan.org (www.cpan.org)|151.101.18.217|:80... connected. +cpanm : HTTP request sent, awaiting response... 200 OK +cpanm : Length: 43291 (42K) [application/x-gzip] +cpanm : Saving to: 'Data-Serializer-0.60.tar.gz' +cpanm : +cpanm : 0K .......... .......... .......... .......... .. 100% 1.57M=0.03s +cpanm : +cpanm : 2019-11-11 18:40:22 (1.57 MB/s) - 'Data-Serializer-0.60.tar.gz' saved [43291/43291] +cpanm : +cpanm : Unpacking Data-Serializer-0.60.tar.gz +cpanm : OK +cpanm : Data-Serializer-0.60 +cpanm : Data-Serializer-0.60/MANIFEST +cpanm : Data-Serializer-0.60/INSTALL +cpanm : Data-Serializer-0.60/MANIFEST.SKIP +cpanm : Data-Serializer-0.60/README +cpanm : Data-Serializer-0.60/Build.PL +cpanm : Data-Serializer-0.60/Makefile.PL +cpanm : Data-Serializer-0.60/META.yml +cpanm : Data-Serializer-0.60/Changes +cpanm : Data-Serializer-0.60/xt +cpanm : Data-Serializer-0.60/xt/10-01-Pod.t +cpanm : Data-Serializer-0.60/xt/00-02-Kwalitee.t +cpanm : Data-Serializer-0.60/xt/00-01-Signature.t +cpanm : Data-Serializer-0.60/xt/10-02-Pod-Coverage.t +cpanm : Data-Serializer-0.60/lib +cpanm : Data-Serializer-0.60/lib/Data +cpanm : Data-Serializer-0.60/lib/Data/Serializer.pm +cpanm : Data-Serializer-0.60/lib/Data/Serializer +cpanm : Data-Serializer-0.60/lib/Data/Serializer/Storable.pm +cpanm : Data-Serializer-0.60/lib/Data/Serializer/YAML.pm +cpanm : Data-Serializer-0.60/lib/Data/Serializer/JSON.pm +cpanm : Data-Serializer-0.60/lib/Data/Serializer/Cookbook.pm +cpanm : Data-Serializer-0.60/lib/Data/Serializer/Persistent.pm +cpanm : Data-Serializer-0.60/lib/Data/Serializer/Bencode.pm +cpanm : Data-Serializer-0.60/lib/Data/Serializer/FreezeThaw.pm +cpanm : Data-Serializer-0.60/lib/Data/Serializer/Raw.pm +cpanm : Data-Serializer-0.60/lib/Data/Serializer/Config +cpanm : Data-Serializer-0.60/lib/Data/Serializer/Config/General.pm +cpanm : Data-Serializer-0.60/lib/Data/Serializer/PHP +cpanm : Data-Serializer-0.60/lib/Data/Serializer/PHP/Serialization.pm +cpanm : Data-Serializer-0.60/lib/Data/Serializer/XML +cpanm : Data-Serializer-0.60/lib/Data/Serializer/XML/Dumper.pm +cpanm : Data-Serializer-0.60/lib/Data/Serializer/XML/Simple.pm +cpanm : Data-Serializer-0.60/lib/Data/Serializer/Convert +cpanm : Data-Serializer-0.60/lib/Data/Serializer/Convert/Bencode.pm +cpanm : Data-Serializer-0.60/lib/Data/Serializer/Convert/Bencode_XS.pm +cpanm : Data-Serializer-0.60/lib/Data/Serializer/JSON +cpanm : Data-Serializer-0.60/lib/Data/Serializer/JSON/Syck.pm +cpanm : Data-Serializer-0.60/lib/Data/Serializer/Data +cpanm : Data-Serializer-0.60/lib/Data/Serializer/Data/Dumper.pm +cpanm : Data-Serializer-0.60/lib/Data/Serializer/Data/Denter.pm +cpanm : Data-Serializer-0.60/lib/Data/Serializer/Data/Taxi.pm +cpanm : Data-Serializer-0.60/lib/Data/Serializer/YAML +cpanm : Data-Serializer-0.60/lib/Data/Serializer/YAML/Syck.pm +cpanm : Data-Serializer-0.60/t +cpanm : Data-Serializer-0.60/t/01-11-YAML-Syck.t +cpanm : Data-Serializer-0.60/t/01-15-Convert-Bencode.t +cpanm : Data-Serializer-0.60/t/04-02-Compress-PPMd.t +cpanm : Data-Serializer-0.60/t/01-13-JSON-Syck.t +cpanm : Data-Serializer-0.60/t/01-12-JSON.t +cpanm : Data-Serializer-0.60/t/01-08-PHP-Serialization.t +cpanm : Data-Serializer-0.60/t/02-02-Fast-Raw.t +cpanm : Data-Serializer-0.60/t/01-02-Data-Denter.t +cpanm : Data-Serializer-0.60/t/07-01-MD5-Digest.t +cpanm : Data-Serializer-0.60/t/01-05-Config-General.t +cpanm : Data-Serializer-0.60/t/01-01-Data-Dumper.t +cpanm : Data-Serializer-0.60/t/03-Non-Portable.t +cpanm : Data-Serializer-0.60/t/01-06-YAML.t +cpanm : Data-Serializer-0.60/t/07-03-SHA-256-Digest.t +cpanm : Data-Serializer-0.60/t/01-03-Storable.t +cpanm : Data-Serializer-0.60/t/08-Store-Retrieve.t +cpanm : Data-Serializer-0.60/t/04-01-Compress-Zlib.t +cpanm : Data-Serializer-0.60/t/07-02-SHA1-Digest.t +cpanm : Data-Serializer-0.60/t/09-Feature-Combos.t +cpanm : Data-Serializer-0.60/t/01-09-XML-Simple.t +cpanm : Data-Serializer-0.60/t/01-14-Bencode.t +cpanm : Data-Serializer-0.60/t/02-01-Orig-Raw.t +cpanm : Data-Serializer-0.60/t/06-B64-Encoding.t +cpanm : Data-Serializer-0.60/t/01-04-FreezeThaw.t +cpanm : Data-Serializer-0.60/t/01-07-XML-Dumper.t +cpanm : Data-Serializer-0.60/t/01-10-Data-Taxi.t +cpanm : Data-Serializer-0.60/t/serializer-testlib +cpanm : Data-Serializer-0.60/t/01-16-Convert-Bencode_XS.t +cpanm : Data-Serializer-0.60/t/05-Encryption.t +cpanm : Data-Serializer-0.60/t/ExtUtils +cpanm : Data-Serializer-0.60/t/ExtUtils/TBone.pm +cpanm : Data-Serializer-0.60/examples +cpanm : Data-Serializer-0.60/examples/README +cpanm : Entering Data-Serializer-0.60 +cpanm : Checking configure dependencies from META.yml +cpanm : Checking if you have Module::Build 0.38 ... No +cpanm : Checking if you have ExtUtils::Install 1.46 ... Yes (2.14) +cpanm : Searching Module::Build (0.38) on cpanmetadb ... +cpanm : ==> Found dependencies: Module::Build +cpanm : --2019-11-11 18:40:22-- http://cpanmetadb.plackperl.org/v1.0/package/Module::Build +cpanm : Resolving cpanmetadb.plackperl.org (cpanmetadb.plackperl.org)... 151.101.18.217 +cpanm : Connecting to cpanmetadb.plackperl.org (cpanmetadb.plackperl.org)|151.101.18.217|:80... connected. +cpanm : HTTP request sent, awaiting response... 200 OK +cpanm : Length: 769 [text/yaml] +cpanm : Saving to: 'STDOUT' +cpanm : +cpanm : 0K 100% 79.8M=0s +cpanm : +cpanm : 2019-11-11 18:40:22 (79.8 MB/s) - written to stdout [769/769] +cpanm : +cpanm : --> Working on Module::Build +cpanm : Fetching http://www.cpan.org/authors/id/L/LE/LEONT/Module-Build-0.4229.tar.gz ... --2019-11-11 18:40:22-- http://www.cpan.org/authors/id/L/LE/LEONT/Module-Build-0.4229.tar.gz +cpanm : Resolving www.cpan.org (www.cpan.org)... 151.101.18.217 +cpanm : Connecting to www.cpan.org (www.cpan.org)|151.101.18.217|:80... connected. +cpanm : HTTP request sent, awaiting response... 200 OK +cpanm : Length: 304340 (297K) [application/x-gzip] +cpanm : Saving to: 'Module-Build-0.4229.tar.gz' +cpanm : +cpanm : 0K .......... .......... .......... .......... .......... 16% 1.75M 0s +cpanm : 50K .......... .......... .......... .......... .......... 33% 12.4M 0s +cpanm : 100K .......... .......... .......... .......... .......... 50% 86.2M 0s +cpanm : 150K .......... .......... .......... .......... .......... 67% 126M 0s +cpanm : 200K .......... .......... .......... .......... .......... 84% 19.4M 0s +cpanm : 250K .......... .......... .......... .......... ....... 100% 109M=0.04s +cpanm : +cpanm : 2019-11-11 18:40:22 (8.11 MB/s) - 'Module-Build-0.4229.tar.gz' saved [304340/304340] +cpanm : +cpanm : Unpacking Module-Build-0.4229.tar.gz +cpanm : OK +cpanm : Module-Build-0.4229 +cpanm : Module-Build-0.4229/Build.PL +cpanm : Module-Build-0.4229/Changes +cpanm : Module-Build-0.4229/INSTALL +cpanm : Module-Build-0.4229/LICENSE +cpanm : Module-Build-0.4229/MANIFEST +cpanm : Module-Build-0.4229/META.json +cpanm : Module-Build-0.4229/META.yml +cpanm : Module-Build-0.4229/Makefile.PL +cpanm : Module-Build-0.4229/README +cpanm : Module-Build-0.4229/bin +cpanm : Module-Build-0.4229/bin/config_data +cpanm : Module-Build-0.4229/contrib +cpanm : Module-Build-0.4229/contrib/bash_completion.module-build +cpanm : Module-Build-0.4229/inc +cpanm : Module-Build-0.4229/inc/MBVersion.pm +cpanm : Module-Build-0.4229/inc/bootstrap.pl +cpanm : Module-Build-0.4229/inc/Module +cpanm : Module-Build-0.4229/inc/Module/Metadata.pm +cpanm : Module-Build-0.4229/inc/Perl +cpanm : Module-Build-0.4229/inc/Perl/OSType.pm +cpanm : Module-Build-0.4229/lib +cpanm : Module-Build-0.4229/lib/Module +cpanm : Module-Build-0.4229/lib/Module/Build.pm +cpanm : Module-Build-0.4229/lib/Module/Build +cpanm : Module-Build-0.4229/lib/Module/Build/API.pod +cpanm : Module-Build-0.4229/lib/Module/Build/Authoring.pod +cpanm : Module-Build-0.4229/lib/Module/Build/Base.pm +cpanm : Module-Build-0.4229/lib/Module/Build/Bundling.pod +cpanm : Module-Build-0.4229/lib/Module/Build/Compat.pm +cpanm : Module-Build-0.4229/lib/Module/Build/Config.pm +cpanm : Module-Build-0.4229/lib/Module/Build/Cookbook.pm +cpanm : Module-Build-0.4229/lib/Module/Build/Dumper.pm +cpanm : Module-Build-0.4229/lib/Module/Build/Notes.pm +cpanm : Module-Build-0.4229/lib/Module/Build/PPMMaker.pm +cpanm : Module-Build-0.4229/lib/Module/Build/PodParser.pm +cpanm : Module-Build-0.4229/lib/Module/Build/Platform +cpanm : Module-Build-0.4229/lib/Module/Build/Platform/Default.pm +cpanm : Module-Build-0.4229/lib/Module/Build/Platform/MacOS.pm +cpanm : Module-Build-0.4229/lib/Module/Build/Platform/Unix.pm +cpanm : Module-Build-0.4229/lib/Module/Build/Platform/VMS.pm +cpanm : Module-Build-0.4229/lib/Module/Build/Platform/VOS.pm +cpanm : Module-Build-0.4229/lib/Module/Build/Platform/Windows.pm +cpanm : Module-Build-0.4229/lib/Module/Build/Platform/aix.pm +cpanm : Module-Build-0.4229/lib/Module/Build/Platform/cygwin.pm +cpanm : Module-Build-0.4229/lib/Module/Build/Platform/darwin.pm +cpanm : Module-Build-0.4229/lib/Module/Build/Platform/os2.pm +cpanm : Module-Build-0.4229/t +cpanm : Module-Build-0.4229/t/00-compile.t +cpanm : Module-Build-0.4229/t/PL_files.t +cpanm : Module-Build-0.4229/t/README.pod +cpanm : Module-Build-0.4229/t/add_property.t +cpanm : Module-Build-0.4229/t/add_property_array.t +cpanm : Module-Build-0.4229/t/add_property_hash.t +cpanm : Module-Build-0.4229/t/basic.t +cpanm : Module-Build-0.4229/t/bundle_inc.t +cpanm : Module-Build-0.4229/t/compat.t +cpanm : Module-Build-0.4229/t/debug.t +cpanm : Module-Build-0.4229/t/destinations.t cpanm : Module-Build-0.4229/t/ext.t cpanm : Module-Build-0.4229/t/extend.t cpanm : Module-Build-0.4229/t/files.t @@ -3927,14 +2242,14 @@ cpanm : Module-Build-0.4229/t/properties/requires.t cpanm : Module-Build-0.4229/t/properties/share_dir.t cpanm : Entering Module-Build-0.4229 cpanm : Checking configure dependencies from META.json -cpanm : Checking if you have version 0.87 ... Yes (0.9924) +cpanm : Checking if you have File::Path 0 ... Yes (2.16) cpanm : Checking if you have CPAN::Meta 2.142060 ... Yes (2.150010) -cpanm : Checking if you have File::Basename 0 ... Yes (2.85) cpanm : Checking if you have File::Spec 0.82 ... Yes (3.78) -cpanm : Checking if you have File::Copy 0 ... Yes (2.34) -cpanm : Checking if you have Perl::OSType 1 ... Yes (1.010) cpanm : Checking if you have Module::Metadata 1.000002 ... Yes (1.000037) -cpanm : Checking if you have File::Path 0 ... Yes (2.16) +cpanm : Checking if you have version 0.87 ... Yes (0.9924) +cpanm : Checking if you have File::Basename 0 ... Yes (2.85) +cpanm : Checking if you have Perl::OSType 1 ... Yes (1.010) +cpanm : Checking if you have File::Copy 0 ... Yes (2.34) cpanm : Running Build.PL cpanm : Configuring Module-Build-0.4229 ... cpanm : Checking optional features... @@ -3948,32 +2263,32 @@ cpanm : cpanm : Created MYMETA.yml and MYMETA.json cpanm : Creating new 'Build' script for 'Module-Build' version '0.4229' cpanm : Checking dependencies from MYMETA.json ... -cpanm : Checking if you have CPAN::Meta::YAML 0.003 ... Yes (0.018) -cpanm : Checking if you have ExtUtils::ParseXS 2.21 ... Yes (3.40) -cpanm : Checking if you have Test::More 0.49 ... Yes (1.302168) -cpanm : Checking if you have File::Spec 0.82 ... Yes (3.78) -cpanm : Checking if you have CPAN::Meta 2.142060 ... Yes (2.150010) -cpanm : Checking if you have version 0.87 ... Yes (0.9924) -cpanm : Checking if you have File::Basename 0 ... Yes (2.85) +cpanm : Checking if you have Module::Metadata 1.000002 ... Yes (1.000037) +cpanm : Checking if you have Parse::CPAN::Meta 1.4401 ... Yes (2.150010) cpanm : Checking if you have File::Temp 0.15 ... Yes (0.2309) -cpanm : Checking if you have Cwd 0 ... Yes (3.78) -cpanm : Checking if you have File::Copy 0 ... Yes (2.34) -cpanm : Checking if you have File::Path 0 ... Yes (2.16) cpanm : Checking if you have File::Compare 0 ... Yes (1.1006) cpanm : Checking if you have ExtUtils::Mkbootstrap 0 ... Yes (7.38) -cpanm : Checking if you have Text::ParseWords 0 ... Yes (3.30) +cpanm : Checking if you have Getopt::Long 0 ... Yes (2.51) +cpanm : Checking if you have File::Spec 0.82 ... Yes (3.78) +cpanm : Checking if you have Cwd 0 ... Yes (3.78) +cpanm : Checking if you have Pod::Man 2.17 ... Yes (4.12) +cpanm : Checking if you have Perl::OSType 1 ... Yes (1.010) +cpanm : Checking if you have ExtUtils::Install 0 ... Yes (2.14) cpanm : Checking if you have TAP::Harness 3.29 ... Yes (3.42) +cpanm : Checking if you have Data::Dumper 0 ... Yes (2.174) cpanm : Checking if you have ExtUtils::CBuilder 0.27 ... Yes (0.280233) +cpanm : Checking if you have Test::More 0.49 ... Yes (1.302168) +cpanm : Checking if you have ExtUtils::Manifest 0 ... Yes (1.72) +cpanm : Checking if you have CPAN::Meta::YAML 0.003 ... Yes (0.018) cpanm : Checking if you have File::Find 0 ... Yes (1.37) -cpanm : Checking if you have Module::Metadata 1.000002 ... Yes (1.000037) +cpanm : Checking if you have ExtUtils::ParseXS 2.21 ... Yes (3.40) +cpanm : Checking if you have File::Copy 0 ... Yes (2.34) +cpanm : Checking if you have Text::ParseWords 0 ... Yes (3.30) +cpanm : Checking if you have CPAN::Meta 2.142060 ... Yes (2.150010) cpanm : Checking if you have Text::Abbrev 0 ... Yes (1.02) -cpanm : Checking if you have ExtUtils::Manifest 0 ... Yes (1.72) -cpanm : Checking if you have Data::Dumper 0 ... Yes (2.174) -cpanm : Checking if you have Pod::Man 2.17 ... Yes (4.12) -cpanm : Checking if you have Parse::CPAN::Meta 1.4401 ... Yes (2.150010) -cpanm : Checking if you have ExtUtils::Install 0 ... Yes (2.14) -cpanm : Checking if you have Perl::OSType 1 ... Yes (1.010) -cpanm : Checking if you have Getopt::Long 0 ... Yes (2.51) +cpanm : Checking if you have version 0.87 ... Yes (0.9924) +cpanm : Checking if you have File::Basename 0 ... Yes (2.85) +cpanm : Checking if you have File::Path 0 ... Yes (2.16) cpanm : OK cpanm : Building and testing Module-Build-0.4229 ... Building Module-Build cpanm : t/00-compile.t ................. ok @@ -4030,7 +2345,7 @@ cpanm : t/versions.t ................... ok cpanm : t/write_default_maniskip.t ..... ok cpanm : t/xs.t ......................... ok cpanm : All tests successful. -cpanm : Files=53, Tests=1167, 55 wallclock secs ( 0.41 usr 0.10 sys + 46.15 cusr 8.93 csys = 55.59 CPU) +cpanm : Files=53, Tests=1167, 55 wallclock secs ( 0.43 usr 0.08 sys + 46.20 cusr 9.01 csys = 55.72 CPU) cpanm : Result: PASS cpanm : Building Module-Build cpanm : Installing /home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/site_perl/5.31.5/Module/Build.pm @@ -4089,13 +2404,13 @@ cpanm : cpanm : Created MYMETA.yml and MYMETA.json cpanm : Creating new 'Build' script for 'Data-Serializer' version '0.60' cpanm : Checking dependencies from MYMETA.json ... -cpanm : Checking if you have Test::More 0 ... Yes (1.302168) -cpanm : Checking if you have IO::File 0 ... Yes (1.41) cpanm : Checking if you have File::Spec 0 ... Yes (3.78) +cpanm : Checking if you have Data::Dumper 2.08 ... Yes (2.174) +cpanm : Checking if you have Test::More 0 ... Yes (1.302168) cpanm : Checking if you have AutoLoader 0 ... Yes (5.74) -cpanm : Checking if you have Exporter 0 ... Yes (5.74) cpanm : Checking if you have Digest::SHA 0 ... Yes (6.02) -cpanm : Checking if you have Data::Dumper 2.08 ... Yes (2.174) +cpanm : Checking if you have IO::File 0 ... Yes (1.41) +cpanm : Checking if you have Exporter 0 ... Yes (5.74) cpanm : OK cpanm : Building and testing Data-Serializer-0.60 ... Building Data-Serializer cpanm : t/01-01-Data-Dumper.t ......... ok @@ -4127,7 +2442,7 @@ cpanm : t/07-03-SHA-256-Digest.t ...... skipped: sha-256 not installed cpanm : t/08-Store-Retrieve.t ......... ok cpanm : t/09-Feature-Combos.t ......... ok cpanm : All tests successful. -cpanm : Files=28, Tests=390, 1 wallclock secs ( 0.12 usr 0.06 sys + 1.05 cusr 0.19 csys = 1.42 CPU) +cpanm : Files=28, Tests=390, 1 wallclock secs ( 0.12 usr 0.04 sys + 1.08 cusr 0.12 csys = 1.36 CPU) cpanm : Result: PASS cpanm : Building Data-Serializer cpanm : Installing /home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/site_perl/5.31.5/Data/Serializer.pm @@ -4158,7 +2473,7 @@ cpanm : 2 distributions installed Installing Fcntl with cpanminus cpanm : cpanm (App::cpanminus) 1.7044 on perl 5.031005 built for x86_64-linux-thread-multi -cpanm : Work directory is /home/binary_c/.cpanm/work/1573495696.3317 +cpanm : Work directory is /home/binary_c/.cpanm/work/1573497680.3317 cpanm : You have make /usr/bin/make cpanm : You have /usr/bin/wget cpanm : You have /bin/tar: tar (GNU tar) 1.29 @@ -4170,22 +2485,22 @@ cpanm : cpanm : Written by John Gilmore and Jay Fenlason. cpanm : You have /usr/bin/unzip cpanm : Searching Fcntl () on cpanmetadb ... -cpanm : --2019-11-11 18:08:16-- http://cpanmetadb.plackperl.org/v1.0/package/Fcntl +cpanm : --2019-11-11 18:41:20-- http://cpanmetadb.plackperl.org/v1.0/package/Fcntl cpanm : Resolving cpanmetadb.plackperl.org (cpanmetadb.plackperl.org)... 151.101.18.217 cpanm : Connecting to cpanmetadb.plackperl.org (cpanmetadb.plackperl.org)|151.101.18.217|:80... connected. cpanm : HTTP request sent, awaiting response... 200 OK cpanm : Length: 2937 (2.9K) [text/yaml] cpanm : Saving to: 'STDOUT' cpanm : -cpanm : 0K .. 100% 150M=0s +cpanm : 0K .. 100% 275M=0s cpanm : -cpanm : 2019-11-11 18:08:16 (150 MB/s) - written to stdout [2937/2937] +cpanm : 2019-11-11 18:41:21 (275 MB/s) - written to stdout [2937/2937] cpanm : cpanm : Fcntl is up to date. (1.13) Installing File::Basename with cpanminus cpanm : cpanm (App::cpanminus) 1.7044 on perl 5.031005 built for x86_64-linux-thread-multi -cpanm : Work directory is /home/binary_c/.cpanm/work/1573495696.3322 +cpanm : Work directory is /home/binary_c/.cpanm/work/1573497681.3322 cpanm : You have make /usr/bin/make cpanm : You have /usr/bin/wget cpanm : You have /bin/tar: tar (GNU tar) 1.29 @@ -4197,22 +2512,22 @@ cpanm : cpanm : Written by John Gilmore and Jay Fenlason. cpanm : You have /usr/bin/unzip cpanm : Searching File::Basename () on cpanmetadb ... -cpanm : --2019-11-11 18:08:16-- http://cpanmetadb.plackperl.org/v1.0/package/File::Basename +cpanm : --2019-11-11 18:41:21-- http://cpanmetadb.plackperl.org/v1.0/package/File::Basename cpanm : Resolving cpanmetadb.plackperl.org (cpanmetadb.plackperl.org)... 151.101.18.217 cpanm : Connecting to cpanmetadb.plackperl.org (cpanmetadb.plackperl.org)|151.101.18.217|:80... connected. cpanm : HTTP request sent, awaiting response... 200 OK cpanm : Length: 2937 (2.9K) [text/yaml] cpanm : Saving to: 'STDOUT' cpanm : -cpanm : 0K .. 100% 225M=0s +cpanm : 0K .. 100% 260M=0s cpanm : -cpanm : 2019-11-11 18:08:16 (225 MB/s) - written to stdout [2937/2937] +cpanm : 2019-11-11 18:41:21 (260 MB/s) - written to stdout [2937/2937] cpanm : cpanm : File::Basename is up to date. (2.85) Installing File::Temp with cpanminus cpanm : cpanm (App::cpanminus) 1.7044 on perl 5.031005 built for x86_64-linux-thread-multi -cpanm : Work directory is /home/binary_c/.cpanm/work/1573495696.3327 +cpanm : Work directory is /home/binary_c/.cpanm/work/1573497681.3327 cpanm : You have make /usr/bin/make cpanm : You have /usr/bin/wget cpanm : You have /bin/tar: tar (GNU tar) 1.29 @@ -4224,22 +2539,22 @@ cpanm : cpanm : Written by John Gilmore and Jay Fenlason. cpanm : You have /usr/bin/unzip cpanm : Searching File::Temp () on cpanmetadb ... -cpanm : --2019-11-11 18:08:16-- http://cpanmetadb.plackperl.org/v1.0/package/File::Temp +cpanm : --2019-11-11 18:41:21-- http://cpanmetadb.plackperl.org/v1.0/package/File::Temp cpanm : Resolving cpanmetadb.plackperl.org (cpanmetadb.plackperl.org)... 151.101.18.217 cpanm : Connecting to cpanmetadb.plackperl.org (cpanmetadb.plackperl.org)|151.101.18.217|:80... connected. cpanm : HTTP request sent, awaiting response... 200 OK cpanm : Length: 96 [text/yaml] cpanm : Saving to: 'STDOUT' cpanm : -cpanm : 0K 100% 11.6M=0s +cpanm : 0K 100% 7.16M=0s cpanm : -cpanm : 2019-11-11 18:08:16 (11.6 MB/s) - written to stdout [96/96] +cpanm : 2019-11-11 18:41:21 (7.16 MB/s) - written to stdout [96/96] cpanm : cpanm : File::Temp is up to date. (0.2309) Installing File::Path with cpanminus cpanm : cpanm (App::cpanminus) 1.7044 on perl 5.031005 built for x86_64-linux-thread-multi -cpanm : Work directory is /home/binary_c/.cpanm/work/1573495696.3332 +cpanm : Work directory is /home/binary_c/.cpanm/work/1573497681.3332 cpanm : You have make /usr/bin/make cpanm : You have /usr/bin/wget cpanm : You have /bin/tar: tar (GNU tar) 1.29 @@ -4251,22 +2566,22 @@ cpanm : cpanm : Written by John Gilmore and Jay Fenlason. cpanm : You have /usr/bin/unzip cpanm : Searching File::Path () on cpanmetadb ... -cpanm : --2019-11-11 18:08:17-- http://cpanmetadb.plackperl.org/v1.0/package/File::Path +cpanm : --2019-11-11 18:41:21-- http://cpanmetadb.plackperl.org/v1.0/package/File::Path cpanm : Resolving cpanmetadb.plackperl.org (cpanmetadb.plackperl.org)... 151.101.18.217 cpanm : Connecting to cpanmetadb.plackperl.org (cpanmetadb.plackperl.org)|151.101.18.217|:80... connected. cpanm : HTTP request sent, awaiting response... 200 OK cpanm : Length: 92 [text/yaml] cpanm : Saving to: 'STDOUT' cpanm : -cpanm : 0K 100% 6.62M=0s +cpanm : 0K 100% 8.88M=0s cpanm : -cpanm : 2019-11-11 18:08:17 (6.62 MB/s) - written to stdout [92/92] +cpanm : 2019-11-11 18:41:21 (8.88 MB/s) - written to stdout [92/92] cpanm : cpanm : File::Path is up to date. (2.16) Installing File::Find with cpanminus cpanm : cpanm (App::cpanminus) 1.7044 on perl 5.031005 built for x86_64-linux-thread-multi -cpanm : Work directory is /home/binary_c/.cpanm/work/1573495697.3337 +cpanm : Work directory is /home/binary_c/.cpanm/work/1573497681.3337 cpanm : You have make /usr/bin/make cpanm : You have /usr/bin/wget cpanm : You have /bin/tar: tar (GNU tar) 1.29 @@ -4278,22 +2593,22 @@ cpanm : cpanm : Written by John Gilmore and Jay Fenlason. cpanm : You have /usr/bin/unzip cpanm : Searching File::Find () on cpanmetadb ... -cpanm : --2019-11-11 18:08:17-- http://cpanmetadb.plackperl.org/v1.0/package/File::Find +cpanm : --2019-11-11 18:41:21-- http://cpanmetadb.plackperl.org/v1.0/package/File::Find cpanm : Resolving cpanmetadb.plackperl.org (cpanmetadb.plackperl.org)... 151.101.18.217 cpanm : Connecting to cpanmetadb.plackperl.org (cpanmetadb.plackperl.org)|151.101.18.217|:80... connected. cpanm : HTTP request sent, awaiting response... 200 OK cpanm : Length: 2937 (2.9K) [text/yaml] cpanm : Saving to: 'STDOUT' cpanm : -cpanm : 0K .. 100% 184M=0s +cpanm : 0K .. 100% 199M=0s cpanm : -cpanm : 2019-11-11 18:08:17 (184 MB/s) - written to stdout [2937/2937] +cpanm : 2019-11-11 18:41:21 (199 MB/s) - written to stdout [2937/2937] cpanm : cpanm : File::Find is up to date. (1.37) Installing Math::Trig with cpanminus cpanm : cpanm (App::cpanminus) 1.7044 on perl 5.031005 built for x86_64-linux-thread-multi -cpanm : Work directory is /home/binary_c/.cpanm/work/1573495697.3342 +cpanm : Work directory is /home/binary_c/.cpanm/work/1573497682.3342 cpanm : You have make /usr/bin/make cpanm : You have /usr/bin/wget cpanm : You have /bin/tar: tar (GNU tar) 1.29 @@ -4305,22 +2620,22 @@ cpanm : cpanm : Written by John Gilmore and Jay Fenlason. cpanm : You have /usr/bin/unzip cpanm : Searching Math::Trig () on cpanmetadb ... -cpanm : --2019-11-11 18:08:17-- http://cpanmetadb.plackperl.org/v1.0/package/Math::Trig +cpanm : --2019-11-11 18:41:22-- http://cpanmetadb.plackperl.org/v1.0/package/Math::Trig cpanm : Resolving cpanmetadb.plackperl.org (cpanmetadb.plackperl.org)... 151.101.18.217 cpanm : Connecting to cpanmetadb.plackperl.org (cpanmetadb.plackperl.org)|151.101.18.217|:80... connected. cpanm : HTTP request sent, awaiting response... 200 OK cpanm : Length: 116 [text/yaml] cpanm : Saving to: 'STDOUT' cpanm : -cpanm : 0K 100% 15.8M=0s +cpanm : 0K 100% 12.2M=0s cpanm : -cpanm : 2019-11-11 18:08:17 (15.8 MB/s) - written to stdout [116/116] +cpanm : 2019-11-11 18:41:22 (12.2 MB/s) - written to stdout [116/116] cpanm : cpanm : Math::Trig is up to date. (1.23) Installing FindBin with cpanminus cpanm : cpanm (App::cpanminus) 1.7044 on perl 5.031005 built for x86_64-linux-thread-multi -cpanm : Work directory is /home/binary_c/.cpanm/work/1573495697.3347 +cpanm : Work directory is /home/binary_c/.cpanm/work/1573497682.3347 cpanm : You have make /usr/bin/make cpanm : You have /usr/bin/wget cpanm : You have /bin/tar: tar (GNU tar) 1.29 @@ -4332,22 +2647,22 @@ cpanm : cpanm : Written by John Gilmore and Jay Fenlason. cpanm : You have /usr/bin/unzip cpanm : Searching FindBin () on cpanmetadb ... -cpanm : --2019-11-11 18:08:17-- http://cpanmetadb.plackperl.org/v1.0/package/FindBin +cpanm : --2019-11-11 18:41:22-- http://cpanmetadb.plackperl.org/v1.0/package/FindBin cpanm : Resolving cpanmetadb.plackperl.org (cpanmetadb.plackperl.org)... 151.101.18.217 cpanm : Connecting to cpanmetadb.plackperl.org (cpanmetadb.plackperl.org)|151.101.18.217|:80... connected. cpanm : HTTP request sent, awaiting response... 200 OK cpanm : Length: 2937 (2.9K) [text/yaml] cpanm : Saving to: 'STDOUT' cpanm : -cpanm : 0K .. 100% 179M=0s +cpanm : 0K .. 100% 194M=0s cpanm : -cpanm : 2019-11-11 18:08:18 (179 MB/s) - written to stdout [2937/2937] +cpanm : 2019-11-11 18:41:22 (194 MB/s) - written to stdout [2937/2937] cpanm : cpanm : FindBin is up to date. (1.51) Installing Inline with cpanminus cpanm : cpanm (App::cpanminus) 1.7044 on perl 5.031005 built for x86_64-linux-thread-multi -cpanm : Work directory is /home/binary_c/.cpanm/work/1573495698.3352 +cpanm : Work directory is /home/binary_c/.cpanm/work/1573497682.3352 cpanm : You have make /usr/bin/make cpanm : You have /usr/bin/wget cpanm : You have /bin/tar: tar (GNU tar) 1.29 @@ -4359,19 +2674,19 @@ cpanm : cpanm : Written by John Gilmore and Jay Fenlason. cpanm : You have /usr/bin/unzip cpanm : Searching Inline () on cpanmetadb ... -cpanm : --2019-11-11 18:08:18-- http://cpanmetadb.plackperl.org/v1.0/package/Inline +cpanm : --2019-11-11 18:41:22-- http://cpanmetadb.plackperl.org/v1.0/package/Inline cpanm : Resolving cpanmetadb.plackperl.org (cpanmetadb.plackperl.org)... 151.101.18.217 cpanm : Connecting to cpanmetadb.plackperl.org (cpanmetadb.plackperl.org)|151.101.18.217|:80... connected. cpanm : HTTP request sent, awaiting response... 200 OK cpanm : Length: 174 [text/yaml] cpanm : Saving to: 'STDOUT' cpanm : -cpanm : 0K 100% 17.6M=0s +cpanm : 0K 100% 13.3M=0s cpanm : -cpanm : 2019-11-11 18:08:18 (17.6 MB/s) - written to stdout [174/174] +cpanm : 2019-11-11 18:41:22 (13.3 MB/s) - written to stdout [174/174] cpanm : cpanm : --> Working on Inline -cpanm : Fetching http://www.cpan.org/authors/id/T/TI/TINITA/Inline-0.83.tar.gz ... --2019-11-11 18:08:18-- http://www.cpan.org/authors/id/T/TI/TINITA/Inline-0.83.tar.gz +cpanm : Fetching http://www.cpan.org/authors/id/T/TI/TINITA/Inline-0.83.tar.gz ... --2019-11-11 18:41:22-- http://www.cpan.org/authors/id/T/TI/TINITA/Inline-0.83.tar.gz cpanm : Resolving www.cpan.org (www.cpan.org)... 151.101.18.217 cpanm : Connecting to www.cpan.org (www.cpan.org)|151.101.18.217|:80... connected. cpanm : HTTP request sent, awaiting response... 200 OK @@ -4379,9 +2694,9 @@ cpanm : Length: 78956 (77K) [application/x-gzip] cpanm : Saving to: 'Inline-0.83.tar.gz' cpanm : cpanm : 0K .......... .......... .......... .......... .......... 64% 2.47M 0s -cpanm : 50K .......... .......... ....... 100% 143M=0.02s +cpanm : 50K .......... .......... ....... 100% 110M=0.02s cpanm : -cpanm : 2019-11-11 18:08:18 (3.78 MB/s) - 'Inline-0.83.tar.gz' saved [78956/78956] +cpanm : 2019-11-11 18:41:22 (3.77 MB/s) - 'Inline-0.83.tar.gz' saved [78956/78956] cpanm : cpanm : Unpacking Inline-0.83.tar.gz cpanm : OK @@ -4451,37 +2766,37 @@ cpanm : Generating a Unix-style Makefile cpanm : Writing Makefile for Inline cpanm : Writing MYMETA.yml and MYMETA.json cpanm : Checking dependencies from MYMETA.json ... -cpanm : Checking if you have ExtUtils::MakeMaker 0 ... Yes (7.38) -cpanm : Checking if you have Test::Warn 0.23 ... No +cpanm : Checking if you have Test::More 0.88 ... Yes (1.302168) cpanm : Checking if you have Digest::MD5 0 ... Yes (2.55_01) cpanm : Checking if you have File::Spec 0.8 ... Yes (3.78) -cpanm : Checking if you have Test::More 0.88 ... Yes (1.302168) cpanm : Checking if you have version 0.82 ... Yes (0.9924) +cpanm : Checking if you have Test::Warn 0.23 ... No +cpanm : Checking if you have ExtUtils::MakeMaker 0 ... Yes (7.38) cpanm : Searching Test::Warn (0.23) on cpanmetadb ... cpanm : OK cpanm : ==> Found dependencies: Test::Warn -cpanm : --2019-11-11 18:08:18-- http://cpanmetadb.plackperl.org/v1.0/package/Test::Warn +cpanm : --2019-11-11 18:41:23-- http://cpanmetadb.plackperl.org/v1.0/package/Test::Warn cpanm : Resolving cpanmetadb.plackperl.org (cpanmetadb.plackperl.org)... 151.101.18.217 cpanm : Connecting to cpanmetadb.plackperl.org (cpanmetadb.plackperl.org)|151.101.18.217|:80... connected. cpanm : HTTP request sent, awaiting response... 200 OK cpanm : Length: 89 [text/yaml] cpanm : Saving to: 'STDOUT' cpanm : -cpanm : 0K 100% 5.78M=0s +cpanm : 0K 100% 5.15M=0s cpanm : -cpanm : 2019-11-11 18:08:18 (5.78 MB/s) - written to stdout [89/89] +cpanm : 2019-11-11 18:41:23 (5.15 MB/s) - written to stdout [89/89] cpanm : cpanm : --> Working on Test::Warn -cpanm : Fetching http://www.cpan.org/authors/id/B/BI/BIGJ/Test-Warn-0.36.tar.gz ... --2019-11-11 18:08:18-- http://www.cpan.org/authors/id/B/BI/BIGJ/Test-Warn-0.36.tar.gz +cpanm : Fetching http://www.cpan.org/authors/id/B/BI/BIGJ/Test-Warn-0.36.tar.gz ... --2019-11-11 18:41:23-- http://www.cpan.org/authors/id/B/BI/BIGJ/Test-Warn-0.36.tar.gz cpanm : Resolving www.cpan.org (www.cpan.org)... 151.101.18.217 cpanm : Connecting to www.cpan.org (www.cpan.org)|151.101.18.217|:80... connected. cpanm : HTTP request sent, awaiting response... 200 OK cpanm : Length: 12333 (12K) [application/x-gzip] cpanm : Saving to: 'Test-Warn-0.36.tar.gz' cpanm : -cpanm : 0K .......... .. 100% 114M=0s +cpanm : 0K .......... .. 100% 130M=0s cpanm : -cpanm : 2019-11-11 18:08:18 (114 MB/s) - 'Test-Warn-0.36.tar.gz' saved [12333/12333] +cpanm : 2019-11-11 18:41:23 (130 MB/s) - 'Test-Warn-0.36.tar.gz' saved [12333/12333] cpanm : cpanm : Unpacking Test-Warn-0.36.tar.gz cpanm : OK @@ -4513,38 +2828,38 @@ cpanm : Generating a Unix-style Makefile cpanm : Writing Makefile for Test::Warn cpanm : Writing MYMETA.yml and MYMETA.json cpanm : Checking dependencies from MYMETA.json ... -cpanm : Checking if you have File::Spec 0 ... Yes (3.78) cpanm : Checking if you have Test::Builder::Tester 1.02 ... Yes (1.302168) +cpanm : Checking if you have File::Spec 0 ... Yes (3.78) cpanm : Checking if you have Carp 1.22 ... Yes (1.50) -cpanm : Checking if you have Test::More 0 ... Yes (1.302168) cpanm : Checking if you have Test::Builder 0.13 ... Yes (1.302168) +cpanm : Checking if you have Test::More 0 ... Yes (1.302168) cpanm : Checking if you have Sub::Uplevel 0.12 ... No cpanm : Checking if you have ExtUtils::MakeMaker 0 ... Yes (7.38) cpanm : Searching Sub::Uplevel (0.12) on cpanmetadb ... cpanm : OK cpanm : ==> Found dependencies: Sub::Uplevel -cpanm : --2019-11-11 18:08:19-- http://cpanmetadb.plackperl.org/v1.0/package/Sub::Uplevel +cpanm : --2019-11-11 18:41:23-- http://cpanmetadb.plackperl.org/v1.0/package/Sub::Uplevel cpanm : Resolving cpanmetadb.plackperl.org (cpanmetadb.plackperl.org)... 151.101.18.217 cpanm : Connecting to cpanmetadb.plackperl.org (cpanmetadb.plackperl.org)|151.101.18.217|:80... connected. cpanm : HTTP request sent, awaiting response... 200 OK cpanm : Length: 103 [text/yaml] cpanm : Saving to: 'STDOUT' cpanm : -cpanm : 0K 100% 22.8M=0s +cpanm : 0K 100% 10.4M=0s cpanm : -cpanm : 2019-11-11 18:08:19 (22.8 MB/s) - written to stdout [103/103] +cpanm : 2019-11-11 18:41:23 (10.4 MB/s) - written to stdout [103/103] cpanm : cpanm : --> Working on Sub::Uplevel -cpanm : Fetching http://www.cpan.org/authors/id/D/DA/DAGOLDEN/Sub-Uplevel-0.2800.tar.gz ... --2019-11-11 18:08:19-- http://www.cpan.org/authors/id/D/DA/DAGOLDEN/Sub-Uplevel-0.2800.tar.gz +cpanm : Fetching http://www.cpan.org/authors/id/D/DA/DAGOLDEN/Sub-Uplevel-0.2800.tar.gz ... --2019-11-11 18:41:23-- http://www.cpan.org/authors/id/D/DA/DAGOLDEN/Sub-Uplevel-0.2800.tar.gz cpanm : Resolving www.cpan.org (www.cpan.org)... 151.101.18.217 cpanm : Connecting to www.cpan.org (www.cpan.org)|151.101.18.217|:80... connected. cpanm : HTTP request sent, awaiting response... 200 OK cpanm : Length: 28361 (28K) [application/x-gzip] cpanm : Saving to: 'Sub-Uplevel-0.2800.tar.gz' cpanm : -cpanm : 0K .......... .......... ....... 100% 1.66M=0.02s +cpanm : 0K .......... .......... ....... 100% 1.65M=0.02s cpanm : -cpanm : 2019-11-11 18:08:19 (1.66 MB/s) - 'Sub-Uplevel-0.2800.tar.gz' saved [28361/28361] +cpanm : 2019-11-11 18:41:23 (1.65 MB/s) - 'Sub-Uplevel-0.2800.tar.gz' saved [28361/28361] cpanm : cpanm : Unpacking Sub-Uplevel-0.2800.tar.gz cpanm : OK @@ -4603,15 +2918,15 @@ cpanm : Generating a Unix-style Makefile cpanm : Writing Makefile for Sub::Uplevel cpanm : Writing MYMETA.yml and MYMETA.json cpanm : Checking dependencies from MYMETA.json ... -cpanm : Checking if you have warnings 0 ... Yes (1.45) -cpanm : Checking if you have ExtUtils::MakeMaker 0 ... Yes (7.38) cpanm : Checking if you have strict 0 ... Yes (1.11) +cpanm : Checking if you have Test::More 0 ... Yes (1.302168) +cpanm : Checking if you have ExtUtils::MakeMaker 0 ... Yes (7.38) cpanm : Checking if you have File::Spec 0 ... Yes (3.78) -cpanm : Checking if you have Exporter 0 ... Yes (5.74) -cpanm : Checking if you have Carp 0 ... Yes (1.50) cpanm : Checking if you have constant 0 ... Yes (1.33) +cpanm : Checking if you have warnings 0 ... Yes (1.45) +cpanm : Checking if you have Exporter 0 ... Yes (5.74) cpanm : Checking if you have lib 0 ... Yes (0.65) -cpanm : Checking if you have Test::More 0 ... Yes (1.302168) +cpanm : Checking if you have Carp 0 ... Yes (1.50) cpanm : OK cpanm : Building and testing Sub-Uplevel-0.2800 ... cp lib/Sub/Uplevel.pm blib/lib/Sub/Uplevel.pm cpanm : PERL_DL_NONLAZY=1 "/home/binary_c/perl5/perlbrew/perls/perl-5.31.5/bin/perl5.31.5" "-MExtUtils::Command::MM" "-MTest::Harness" "-e" "undef *Test::Harness::Switches; test_harness(0, 'blib/lib', 'blib/arch')" t/*.t @@ -4666,7 +2981,7 @@ cpanm : t/07_uplevel_too_high.t ...... ok cpanm : t/08_exporter.t .............. ok cpanm : t/09_emptylist.t ............. ok cpanm : All tests successful. -cpanm : Files=10, Tests=158, 1 wallclock secs ( 0.06 usr 0.02 sys + 0.72 cusr 0.10 csys = 0.90 CPU) +cpanm : Files=10, Tests=158, 1 wallclock secs ( 0.05 usr 0.02 sys + 0.74 cusr 0.09 csys = 0.90 CPU) cpanm : Result: PASS cpanm : Installing /home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/site_perl/5.31.5/Sub/Uplevel.pm cpanm : Appending installation info to /home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/5.31.5/x86_64-linux-thread-multi/perllocal.pod @@ -4684,7 +2999,7 @@ cpanm : t/warnings_are.t .... ok cpanm : t/warnings_exist.t .. ok cpanm : t/warnings_like.t ... ok cpanm : All tests successful. -cpanm : Files=7, Tests=841, 2 wallclock secs ( 0.16 usr 0.03 sys + 2.13 cusr 0.08 csys = 2.40 CPU) +cpanm : Files=7, Tests=841, 2 wallclock secs ( 0.22 usr 0.02 sys + 2.03 cusr 0.12 csys = 2.39 CPU) cpanm : Result: PASS cpanm : Installing /home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/site_perl/5.31.5/Test/Warn.pm cpanm : Appending installation info to /home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/5.31.5/x86_64-linux-thread-multi/perllocal.pod @@ -4692,15 +3007,15 @@ cpanm : OK cpanm : Successfully installed Test-Warn-0.36 cpanm : Installing /home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/site_perl/5.31.5/x86_64-linux-thread-multi/.meta/Test-Warn-0.36/MYMETA.json cpanm : Installing /home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/site_perl/5.31.5/x86_64-linux-thread-multi/.meta/Test-Warn-0.36/install.json -cpanm : Building and testing Inline-0.83 ... cp lib/Inline/MakeMaker/Changes blib/lib/Inline/MakeMaker/Changes -cpanm : cp lib/Inline/denter.pm blib/lib/Inline/denter.pm -cpanm : cp lib/Inline/Support.pod blib/lib/Inline/Support.pod -cpanm : cp lib/Inline/Foo.pm blib/lib/Inline/Foo.pm -cpanm : cp lib/Inline.pm blib/lib/Inline.pm -cpanm : cp lib/Inline/MakeMaker.pm blib/lib/Inline/MakeMaker.pm +cpanm : Building and testing Inline-0.83 ... cp lib/Inline/Support.pod blib/lib/Inline/Support.pod +cpanm : cp lib/Inline/MakeMaker/Changes blib/lib/Inline/MakeMaker/Changes cpanm : cp lib/Inline/API.pod blib/lib/Inline/API.pod +cpanm : cp lib/Inline/MakeMaker.pm blib/lib/Inline/MakeMaker.pm +cpanm : cp lib/Inline/denter.pm blib/lib/Inline/denter.pm cpanm : cp lib/Inline.pod blib/lib/Inline.pod +cpanm : cp lib/Inline.pm blib/lib/Inline.pm cpanm : cp lib/Inline/FAQ.pod blib/lib/Inline/FAQ.pod +cpanm : cp lib/Inline/Foo.pm blib/lib/Inline/Foo.pm cpanm : PERL_DL_NONLAZY=1 "/home/binary_c/perl5/perlbrew/perls/perl-5.31.5/bin/perl5.31.5" "-MExtUtils::Command::MM" "-MTest::Harness" "-e" "undef *Test::Harness::Switches; test_harness(0, 'blib/lib', 'blib/arch')" t/*.t cpanm : t/000-require-modules.t .. ok cpanm : t/01usages.t ............. ok @@ -4714,7 +3029,7 @@ cpanm : t/07rewrite2_config.t .... ok cpanm : t/08unicode.t ............ ok cpanm : t/author-pod-syntax.t .... skipped: these tests are for testing by the author cpanm : All tests successful. -cpanm : Files=10, Tests=26, 2 wallclock secs ( 0.05 usr 0.02 sys + 2.45 cusr 0.22 csys = 2.74 CPU) +cpanm : Files=10, Tests=26, 3 wallclock secs ( 0.05 usr 0.01 sys + 2.43 cusr 0.23 csys = 2.72 CPU) cpanm : Result: PASS cpanm : Installing /home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/site_perl/5.31.5/Inline.pm cpanm : Installing /home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/site_perl/5.31.5/Inline.pod @@ -4734,7 +3049,7 @@ cpanm : 3 distributions installed Installing Inline::C with cpanminus cpanm : cpanm (App::cpanminus) 1.7044 on perl 5.031005 built for x86_64-linux-thread-multi -cpanm : Work directory is /home/binary_c/.cpanm/work/1573495707.3722 +cpanm : Work directory is /home/binary_c/.cpanm/work/1573497691.3722 cpanm : You have make /usr/bin/make cpanm : You have /usr/bin/wget cpanm : You have /bin/tar: tar (GNU tar) 1.29 @@ -4746,29 +3061,29 @@ cpanm : cpanm : Written by John Gilmore and Jay Fenlason. cpanm : You have /usr/bin/unzip cpanm : Searching Inline::C () on cpanmetadb ... -cpanm : --2019-11-11 18:08:27-- http://cpanmetadb.plackperl.org/v1.0/package/Inline::C +cpanm : --2019-11-11 18:41:31-- http://cpanmetadb.plackperl.org/v1.0/package/Inline::C cpanm : Resolving cpanmetadb.plackperl.org (cpanmetadb.plackperl.org)... 151.101.18.217 cpanm : Connecting to cpanmetadb.plackperl.org (cpanmetadb.plackperl.org)|151.101.18.217|:80... connected. cpanm : HTTP request sent, awaiting response... 200 OK cpanm : Length: 89 [text/yaml] cpanm : Saving to: 'STDOUT' cpanm : -cpanm : 0K 100% 9.12M=0s +cpanm : 0K 100% 6.48M=0s cpanm : -cpanm : 2019-11-11 18:08:27 (9.12 MB/s) - written to stdout [89/89] +cpanm : 2019-11-11 18:41:31 (6.48 MB/s) - written to stdout [89/89] cpanm : cpanm : --> Working on Inline::C -cpanm : Fetching http://www.cpan.org/authors/id/T/TI/TINITA/Inline-C-0.81.tar.gz ... --2019-11-11 18:08:27-- http://www.cpan.org/authors/id/T/TI/TINITA/Inline-C-0.81.tar.gz +cpanm : Fetching http://www.cpan.org/authors/id/T/TI/TINITA/Inline-C-0.81.tar.gz ... --2019-11-11 18:41:31-- http://www.cpan.org/authors/id/T/TI/TINITA/Inline-C-0.81.tar.gz cpanm : Resolving www.cpan.org (www.cpan.org)... 151.101.18.217 cpanm : Connecting to www.cpan.org (www.cpan.org)|151.101.18.217|:80... connected. cpanm : HTTP request sent, awaiting response... 200 OK cpanm : Length: 76855 (75K) [application/x-gzip] cpanm : Saving to: 'Inline-C-0.81.tar.gz' cpanm : -cpanm : 0K .......... .......... .......... .......... .......... 66% 1.18M 0s -cpanm : 50K .......... .......... ..... 100% 90.8M=0.04s +cpanm : 0K .......... .......... .......... .......... .......... 66% 1.17M 0s +cpanm : 50K .......... .......... ..... 100% 129M=0.04s cpanm : -cpanm : 2019-11-11 18:08:27 (1.76 MB/s) - 'Inline-C-0.81.tar.gz' saved [76855/76855] +cpanm : 2019-11-11 18:41:31 (1.75 MB/s) - 'Inline-C-0.81.tar.gz' saved [76855/76855] cpanm : cpanm : Unpacking Inline-C-0.81.tar.gz cpanm : OK @@ -4883,28 +3198,28 @@ cpanm : Checking if you have File::ShareDir::Install 0.06 ... No cpanm : Checking if you have ExtUtils::MakeMaker 6.58 ... Yes (7.38) cpanm : Searching File::ShareDir::Install (0.06) on cpanmetadb ... cpanm : ==> Found dependencies: File::ShareDir::Install -cpanm : --2019-11-11 18:08:27-- http://cpanmetadb.plackperl.org/v1.0/package/File::ShareDir::Install +cpanm : --2019-11-11 18:41:31-- http://cpanmetadb.plackperl.org/v1.0/package/File::ShareDir::Install cpanm : Resolving cpanmetadb.plackperl.org (cpanmetadb.plackperl.org)... 151.101.18.217 cpanm : Connecting to cpanmetadb.plackperl.org (cpanmetadb.plackperl.org)|151.101.18.217|:80... connected. cpanm : HTTP request sent, awaiting response... 200 OK cpanm : Length: 115 [text/yaml] cpanm : Saving to: 'STDOUT' cpanm : -cpanm : 0K 100% 13.0M=0s +cpanm : 0K 100% 11.6M=0s cpanm : -cpanm : 2019-11-11 18:08:27 (13.0 MB/s) - written to stdout [115/115] +cpanm : 2019-11-11 18:41:31 (11.6 MB/s) - written to stdout [115/115] cpanm : cpanm : --> Working on File::ShareDir::Install -cpanm : Fetching http://www.cpan.org/authors/id/E/ET/ETHER/File-ShareDir-Install-0.13.tar.gz ... --2019-11-11 18:08:27-- http://www.cpan.org/authors/id/E/ET/ETHER/File-ShareDir-Install-0.13.tar.gz +cpanm : Fetching http://www.cpan.org/authors/id/E/ET/ETHER/File-ShareDir-Install-0.13.tar.gz ... --2019-11-11 18:41:31-- http://www.cpan.org/authors/id/E/ET/ETHER/File-ShareDir-Install-0.13.tar.gz cpanm : Resolving www.cpan.org (www.cpan.org)... 151.101.18.217 cpanm : Connecting to www.cpan.org (www.cpan.org)|151.101.18.217|:80... connected. cpanm : HTTP request sent, awaiting response... 200 OK cpanm : Length: 31191 (30K) [application/x-gzip] cpanm : Saving to: 'File-ShareDir-Install-0.13.tar.gz' cpanm : -cpanm : 0K .......... .......... .......... 100% 1.27M=0.02s +cpanm : 0K .......... .......... .......... 100% 1.28M=0.02s cpanm : -cpanm : 2019-11-11 18:08:27 (1.27 MB/s) - 'File-ShareDir-Install-0.13.tar.gz' saved [31191/31191] +cpanm : 2019-11-11 18:41:31 (1.28 MB/s) - 'File-ShareDir-Install-0.13.tar.gz' saved [31191/31191] cpanm : cpanm : Unpacking File-ShareDir-Install-0.13.tar.gz cpanm : OK @@ -4972,17 +3287,17 @@ cpanm : Configuring File-ShareDir-Install-0.13 ... Checking if your kit is compl cpanm : Looks good cpanm : Generating a Unix-style Makefile cpanm : Writing Makefile for File::ShareDir::Install -cpanm : Writing MYMETA.yml and MYMETA.json -cpanm : Checking dependencies from MYMETA.json ... -cpanm : Checking if you have Exporter 0 ... Yes (5.74) -cpanm : Checking if you have warnings 0 ... Yes (1.45) -cpanm : Checking if you have IO::Dir 0 ... Yes (1.41) +cpanm : Writing MYMETA.yml and MYMETA.json +cpanm : Checking dependencies from MYMETA.json ... cpanm : Checking if you have File::Path 0 ... Yes (2.16) -cpanm : Checking if you have strict 0 ... Yes (1.11) -cpanm : Checking if you have Carp 0 ... Yes (1.50) +cpanm : Checking if you have IO::Dir 0 ... Yes (1.41) +cpanm : Checking if you have Exporter 0 ... Yes (5.74) cpanm : Checking if you have Test::More 0 ... Yes (1.302168) -cpanm : Checking if you have ExtUtils::MakeMaker 0 ... Yes (7.38) +cpanm : Checking if you have Carp 0 ... Yes (1.50) cpanm : Checking if you have File::Spec 0 ... Yes (3.78) +cpanm : Checking if you have strict 0 ... Yes (1.11) +cpanm : Checking if you have warnings 0 ... Yes (1.45) +cpanm : Checking if you have ExtUtils::MakeMaker 0 ... Yes (7.38) cpanm : OK cpanm : Building and testing File-ShareDir-Install-0.13 ... cp lib/File/ShareDir/Install.pm blib/lib/File/ShareDir/Install.pm cpanm : PERL_DL_NONLAZY=1 "/home/binary_c/perl5/perlbrew/perls/perl-5.31.5/bin/perl5.31.5" "-MExtUtils::Command::MM" "-MTest::Harness" "-e" "undef *Test::Harness::Switches; test_harness(0, 'blib/lib', 'blib/arch')" t/*.t @@ -5043,7 +3358,7 @@ cpanm : # autodie 2.29 cpanm : # cpanm : t/00-report-prereqs.t .. ok cpanm : All tests successful. -cpanm : Files=4, Tests=39, 2 wallclock secs ( 0.04 usr 0.00 sys + 1.82 cusr 0.28 csys = 2.14 CPU) +cpanm : Files=4, Tests=39, 2 wallclock secs ( 0.05 usr 0.01 sys + 1.86 cusr 0.25 csys = 2.17 CPU) cpanm : Result: PASS cpanm : Installing /home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/site_perl/5.31.5/File/ShareDir/Install.pm cpanm : Appending installation info to /home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/5.31.5/x86_64-linux-thread-multi/perllocal.pod @@ -5062,43 +3377,43 @@ cpanm : Generating a Unix-style Makefile cpanm : Writing Makefile for Inline::C cpanm : Writing MYMETA.yml and MYMETA.json cpanm : Checking dependencies from MYMETA.json ... -cpanm : Checking if you have Test::Warn 0.23 ... Yes (0.36) -cpanm : Checking if you have File::Copy::Recursive 0 ... No cpanm : Checking if you have version 0.77 ... Yes (0.9924) -cpanm : Checking if you have Parse::RecDescent 1.967009 ... No -cpanm : Checking if you have Pegex 0.66 ... No -cpanm : Checking if you have ExtUtils::MakeMaker 7.00 ... Yes (7.38) +cpanm : Checking if you have File::Spec 0.8 ... Yes (3.78) cpanm : Checking if you have Inline 0.83 ... Yes (0.83) +cpanm : Checking if you have File::Copy::Recursive 0 ... No +cpanm : Checking if you have Pegex 0.66 ... No cpanm : Checking if you have File::Path 0 ... Yes (2.16) +cpanm : Checking if you have Test::More 0.88 ... Yes (1.302168) +cpanm : Checking if you have Parse::RecDescent 1.967009 ... No +cpanm : Checking if you have Test::Warn 0.23 ... Yes (0.36) +cpanm : Checking if you have ExtUtils::MakeMaker 7.00 ... Yes (7.38) cpanm : Checking if you have YAML::XS 0 ... No -cpanm : Checking if you have File::Spec 0.8 ... Yes (3.78) cpanm : Checking if you have autodie 0 ... Yes (2.29) -cpanm : Checking if you have Test::More 0.88 ... Yes (1.302168) cpanm : Searching File::Copy::Recursive (0) on cpanmetadb ... cpanm : OK -cpanm : ==> Found dependencies: File::Copy::Recursive, Parse::RecDescent, Pegex, YAML::XS -cpanm : --2019-11-11 18:08:30-- http://cpanmetadb.plackperl.org/v1.0/package/File::Copy::Recursive +cpanm : ==> Found dependencies: File::Copy::Recursive, Pegex, Parse::RecDescent, YAML::XS +cpanm : --2019-11-11 18:41:35-- http://cpanmetadb.plackperl.org/v1.0/package/File::Copy::Recursive cpanm : Resolving cpanmetadb.plackperl.org (cpanmetadb.plackperl.org)... 151.101.18.217 cpanm : Connecting to cpanmetadb.plackperl.org (cpanmetadb.plackperl.org)|151.101.18.217|:80... connected. cpanm : HTTP request sent, awaiting response... 200 OK cpanm : Length: 111 [text/yaml] cpanm : Saving to: 'STDOUT' cpanm : -cpanm : 0K 100% 12.1M=0s +cpanm : 0K 100% 11.4M=0s cpanm : -cpanm : 2019-11-11 18:08:31 (12.1 MB/s) - written to stdout [111/111] +cpanm : 2019-11-11 18:41:35 (11.4 MB/s) - written to stdout [111/111] cpanm : cpanm : --> Working on File::Copy::Recursive -cpanm : Fetching http://www.cpan.org/authors/id/D/DM/DMUEY/File-Copy-Recursive-0.45.tar.gz ... --2019-11-11 18:08:31-- http://www.cpan.org/authors/id/D/DM/DMUEY/File-Copy-Recursive-0.45.tar.gz +cpanm : Fetching http://www.cpan.org/authors/id/D/DM/DMUEY/File-Copy-Recursive-0.45.tar.gz ... --2019-11-11 18:41:35-- http://www.cpan.org/authors/id/D/DM/DMUEY/File-Copy-Recursive-0.45.tar.gz cpanm : Resolving www.cpan.org (www.cpan.org)... 151.101.18.217 cpanm : Connecting to www.cpan.org (www.cpan.org)|151.101.18.217|:80... connected. cpanm : HTTP request sent, awaiting response... 200 OK cpanm : Length: 19256 (19K) [application/x-gzip] cpanm : Saving to: 'File-Copy-Recursive-0.45.tar.gz' cpanm : -cpanm : 0K .......... ........ 100% 2.77M=0.007s +cpanm : 0K .......... ........ 100% 2.78M=0.007s cpanm : -cpanm : 2019-11-11 18:08:31 (2.77 MB/s) - 'File-Copy-Recursive-0.45.tar.gz' saved [19256/19256] +cpanm : 2019-11-11 18:41:35 (2.78 MB/s) - 'File-Copy-Recursive-0.45.tar.gz' saved [19256/19256] cpanm : cpanm : Unpacking File-Copy-Recursive-0.45.tar.gz cpanm : OK @@ -5136,44 +3451,44 @@ cpanm : Generating a Unix-style Makefile cpanm : Writing Makefile for File::Copy::Recursive cpanm : Writing MYMETA.yml and MYMETA.json cpanm : Checking dependencies from MYMETA.json ... -cpanm : Checking if you have File::Glob 0 ... Yes (1.32) cpanm : Checking if you have Path::Tiny 0 ... No -cpanm : Checking if you have Cwd 0 ... Yes (3.78) cpanm : Checking if you have ExtUtils::MakeMaker 0 ... Yes (7.38) +cpanm : Checking if you have Test::Warnings 0 ... No +cpanm : Checking if you have Cwd 0 ... Yes (3.78) +cpanm : Checking if you have File::Temp 0 ... Yes (0.2309) cpanm : Checking if you have Test::Deep 0 ... No -cpanm : Checking if you have Test::Fatal 0 ... No +cpanm : Checking if you have File::Copy 0 ... Yes (2.34) cpanm : Checking if you have File::Spec 0 ... Yes (3.78) -cpanm : Checking if you have Test::Warnings 0 ... No cpanm : Checking if you have Test::More 0.88 ... Yes (1.302168) cpanm : Checking if you have Test::File 0 ... No -cpanm : Checking if you have File::Temp 0 ... Yes (0.2309) -cpanm : Checking if you have File::Copy 0 ... Yes (2.34) +cpanm : Checking if you have File::Glob 0 ... Yes (1.32) +cpanm : Checking if you have Test::Fatal 0 ... No cpanm : Searching Path::Tiny (0) on cpanmetadb ... cpanm : OK -cpanm : ==> Found dependencies: Path::Tiny, Test::Deep, Test::Fatal, Test::Warnings, Test::File -cpanm : --2019-11-11 18:08:31-- http://cpanmetadb.plackperl.org/v1.0/package/Path::Tiny +cpanm : ==> Found dependencies: Path::Tiny, Test::Warnings, Test::Deep, Test::File, Test::Fatal +cpanm : --2019-11-11 18:41:35-- http://cpanmetadb.plackperl.org/v1.0/package/Path::Tiny cpanm : Resolving cpanmetadb.plackperl.org (cpanmetadb.plackperl.org)... 151.101.18.217 cpanm : Connecting to cpanmetadb.plackperl.org (cpanmetadb.plackperl.org)|151.101.18.217|:80... connected. cpanm : HTTP request sent, awaiting response... 200 OK cpanm : Length: 123 [text/yaml] cpanm : Saving to: 'STDOUT' cpanm : -cpanm : 0K 100% 9.12M=0s +cpanm : 0K 100% 8.92M=0s cpanm : -cpanm : 2019-11-11 18:08:31 (9.12 MB/s) - written to stdout [123/123] +cpanm : 2019-11-11 18:41:35 (8.92 MB/s) - written to stdout [123/123] cpanm : cpanm : --> Working on Path::Tiny -cpanm : Fetching http://www.cpan.org/authors/id/D/DA/DAGOLDEN/Path-Tiny-0.108.tar.gz ... --2019-11-11 18:08:31-- http://www.cpan.org/authors/id/D/DA/DAGOLDEN/Path-Tiny-0.108.tar.gz +cpanm : Fetching http://www.cpan.org/authors/id/D/DA/DAGOLDEN/Path-Tiny-0.108.tar.gz ... --2019-11-11 18:41:35-- http://www.cpan.org/authors/id/D/DA/DAGOLDEN/Path-Tiny-0.108.tar.gz cpanm : Resolving www.cpan.org (www.cpan.org)... 151.101.18.217 cpanm : Connecting to www.cpan.org (www.cpan.org)|151.101.18.217|:80... connected. cpanm : HTTP request sent, awaiting response... 200 OK cpanm : Length: 93536 (91K) [application/x-gzip] cpanm : Saving to: 'Path-Tiny-0.108.tar.gz' cpanm : -cpanm : 0K .......... .......... .......... .......... .......... 54% 1.03M 0s -cpanm : 50K .......... .......... .......... .......... . 100% 119M=0.05s +cpanm : 0K .......... .......... .......... .......... .......... 54% 1.04M 0s +cpanm : 50K .......... .......... .......... .......... . 100% 68.0M=0.05s cpanm : -cpanm : 2019-11-11 18:08:31 (1.87 MB/s) - 'Path-Tiny-0.108.tar.gz' saved [93536/93536] +cpanm : 2019-11-11 18:41:35 (1.88 MB/s) - 'Path-Tiny-0.108.tar.gz' saved [93536/93536] cpanm : cpanm : Unpacking Path-Tiny-0.108.tar.gz cpanm : OK @@ -5254,32 +3569,32 @@ cpanm : Generating a Unix-style Makefile cpanm : Writing Makefile for Path::Tiny cpanm : Writing MYMETA.yml and MYMETA.json cpanm : Checking dependencies from MYMETA.json ... -cpanm : Checking if you have Fcntl 0 ... Yes (1.13) -cpanm : Checking if you have File::stat 0 ... Yes (1.08) +cpanm : Checking if you have Test::More 0.96 ... Yes (1.302168) +cpanm : Checking if you have Encode 0 ... Yes (3.01) +cpanm : Checking if you have warnings::register 0 ... Yes (1.04) +cpanm : Checking if you have File::Path 2.07 ... Yes (2.16) +cpanm : Checking if you have File::Spec 0.86 ... Yes (3.78) +cpanm : Checking if you have File::Temp 0.19 ... Yes (0.2309) +cpanm : Checking if you have File::Spec::Unix 0 ... Yes (3.78) +cpanm : Checking if you have File::Spec::Functions 0 ... Yes (3.78) cpanm : Checking if you have File::Glob 0 ... Yes (1.32) cpanm : Checking if you have Digest::SHA 5.45 ... Yes (6.02) -cpanm : Checking if you have overload 0 ... Yes (1.31) -cpanm : Checking if you have Exporter 5.57 ... Yes (5.74) -cpanm : Checking if you have File::Spec::Unix 0 ... Yes (3.78) -cpanm : Checking if you have File::Basename 0 ... Yes (2.85) +cpanm : Checking if you have warnings 0 ... Yes (1.45) cpanm : Checking if you have strict 0 ... Yes (1.11) +cpanm : Checking if you have Cwd 0 ... Yes (3.78) +cpanm : Checking if you have overload 0 ... Yes (1.31) cpanm : Checking if you have Digest::MD5 0 ... Yes (2.55_01) -cpanm : Checking if you have File::Spec::Functions 0 ... Yes (3.78) +cpanm : Checking if you have Exporter 5.57 ... Yes (5.74) cpanm : Checking if you have lib 0 ... Yes (0.65) -cpanm : Checking if you have File::Temp 0.19 ... Yes (0.2309) -cpanm : Checking if you have File::Copy 0 ... Yes (2.34) +cpanm : Checking if you have open 0 ... Yes (1.11) +cpanm : Checking if you have File::Basename 0 ... Yes (2.85) +cpanm : Checking if you have Carp 0 ... Yes (1.50) +cpanm : Checking if you have Fcntl 0 ... Yes (1.13) +cpanm : Checking if you have File::stat 0 ... Yes (1.08) cpanm : Checking if you have constant 0 ... Yes (1.33) -cpanm : Checking if you have File::Path 2.07 ... Yes (2.16) -cpanm : Checking if you have Cwd 0 ... Yes (3.78) cpanm : Checking if you have ExtUtils::MakeMaker 0 ... Yes (7.38) -cpanm : Checking if you have warnings 0 ... Yes (1.45) -cpanm : Checking if you have Carp 0 ... Yes (1.50) -cpanm : Checking if you have open 0 ... Yes (1.11) -cpanm : Checking if you have File::Spec 0.86 ... Yes (3.78) -cpanm : Checking if you have Test::More 0.96 ... Yes (1.302168) -cpanm : Checking if you have Encode 0 ... Yes (3.01) cpanm : Checking if you have Digest 1.03 ... Yes (1.17_01) -cpanm : Checking if you have warnings::register 0 ... Yes (1.04) +cpanm : Checking if you have File::Copy 0 ... Yes (2.34) cpanm : OK cpanm : Building and testing Path-Tiny-0.108 ... cp lib/Path/Tiny.pm blib/lib/Path/Tiny.pm cpanm : PERL_DL_NONLAZY=1 "/home/binary_c/perl5/perlbrew/perls/perl-5.31.5/bin/perl5.31.5" "-MExtUtils::Command::MM" "-MTest::Harness" "-e" "undef *Test::Harness::Switches; test_harness(0, 'blib/lib', 'blib/arch')" t/*.t @@ -5350,71 +3665,287 @@ cpanm : # strict any 1.11 cpanm : # warnings any 1.45 cpanm : # warnings::register any 1.04 cpanm : # -cpanm : # === Runtime Recommends === +cpanm : # === Runtime Recommends === +cpanm : # +cpanm : # Module Want Have +cpanm : # ------------- ---- ------- +cpanm : # Unicode::UTF8 0.58 missing +cpanm : # +cpanm : t/00-report-prereqs.t ............. ok +cpanm : t/basename.t ...................... ok +cpanm : t/basic.t ......................... ok +cpanm : t/children.t ...................... ok +cpanm : t/chmod.t ......................... ok +cpanm : t/digest.t ........................ ok +cpanm : t/exception.t ..................... ok +cpanm : t/exports.t ....................... ok +cpanm : t/filesystem.t .................... ok +cpanm : t/input_output.t .................. ok +cpanm : t/input_output_no_PU_UU.t ......... ok +cpanm : t/input_output_no_UU.t ............ ok +cpanm : t/locking.t ....................... ok +cpanm : t/mkpath.t ........................ ok +cpanm : t/mutable_tree_while_iterating.t .. ok +cpanm : t/normalize.t ..................... ok +cpanm : t/overloading.t ................... ok +cpanm : t/parent.t ........................ ok +cpanm : t/recurse.t ....................... ok +cpanm : t/rel-abs.t ....................... ok +cpanm : t/sig_die.t ....................... ok +cpanm : t/subsumes.t ...................... ok +cpanm : t/symlinks.t ...................... ok +cpanm : t/temp.t .......................... ok +cpanm : t/visit.t ......................... ok +cpanm : t/zz-atomic.t ..................... skipped: Test::MockRandom required for atomicity tests +cpanm : t/zzz-spec.t ...................... ok +cpanm : All tests successful. +cpanm : Files=27, Tests=1704, 3 wallclock secs ( 0.35 usr 0.07 sys + 2.95 cusr 0.41 csys = 3.78 CPU) +cpanm : Result: PASS +cpanm : Installing /home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/site_perl/5.31.5/Path/Tiny.pm +cpanm : Appending installation info to /home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/5.31.5/x86_64-linux-thread-multi/perllocal.pod +cpanm : OK +cpanm : Successfully installed Path-Tiny-0.108 +cpanm : Installing /home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/site_perl/5.31.5/x86_64-linux-thread-multi/.meta/Path-Tiny-0.108/MYMETA.json +cpanm : Installing /home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/site_perl/5.31.5/x86_64-linux-thread-multi/.meta/Path-Tiny-0.108/install.json +cpanm : Searching Test::Warnings (0) on cpanmetadb ... +cpanm : --2019-11-11 18:41:40-- http://cpanmetadb.plackperl.org/v1.0/package/Test::Warnings +cpanm : Resolving cpanmetadb.plackperl.org (cpanmetadb.plackperl.org)... 151.101.18.217 +cpanm : Connecting to cpanmetadb.plackperl.org (cpanmetadb.plackperl.org)|151.101.18.217|:80... connected. +cpanm : HTTP request sent, awaiting response... 200 OK +cpanm : Length: 101 [text/yaml] +cpanm : Saving to: 'STDOUT' +cpanm : +cpanm : 0K 100% 10.5M=0s +cpanm : +cpanm : 2019-11-11 18:41:40 (10.5 MB/s) - written to stdout [101/101] +cpanm : +cpanm : --> Working on Test::Warnings +cpanm : Fetching http://www.cpan.org/authors/id/E/ET/ETHER/Test-Warnings-0.027.tar.gz ... --2019-11-11 18:41:40-- http://www.cpan.org/authors/id/E/ET/ETHER/Test-Warnings-0.027.tar.gz +cpanm : Resolving www.cpan.org (www.cpan.org)... 151.101.18.217 +cpanm : Connecting to www.cpan.org (www.cpan.org)|151.101.18.217|:80... connected. +cpanm : HTTP request sent, awaiting response... 200 OK +cpanm : Length: 41301 (40K) [application/x-gzip] +cpanm : Saving to: 'Test-Warnings-0.027.tar.gz' +cpanm : +cpanm : 0K .......... .......... .......... .......... 100% 1.36M=0.03s +cpanm : +cpanm : 2019-11-11 18:41:40 (1.36 MB/s) - 'Test-Warnings-0.027.tar.gz' saved [41301/41301] +cpanm : +cpanm : Unpacking Test-Warnings-0.027.tar.gz +cpanm : OK +cpanm : Test-Warnings-0.027/ +cpanm : Test-Warnings-0.027/Changes +cpanm : Test-Warnings-0.027/CONTRIBUTING +cpanm : Test-Warnings-0.027/dist.ini +cpanm : Test-Warnings-0.027/examples/ +cpanm : Test-Warnings-0.027/INSTALL +cpanm : Test-Warnings-0.027/lib/ +cpanm : Test-Warnings-0.027/LICENCE +cpanm : Test-Warnings-0.027/Makefile.PL +cpanm : Test-Warnings-0.027/MANIFEST +cpanm : Test-Warnings-0.027/META.json +cpanm : Test-Warnings-0.027/META.yml +cpanm : Test-Warnings-0.027/README +cpanm : Test-Warnings-0.027/t/ +cpanm : Test-Warnings-0.027/xt/ +cpanm : Test-Warnings-0.027/xt/author/ +cpanm : Test-Warnings-0.027/xt/release/ +cpanm : Test-Warnings-0.027/xt/release/changes_has_content.t +cpanm : Test-Warnings-0.027/xt/release/cpan-changes.t +cpanm : Test-Warnings-0.027/xt/release/distmeta.t +cpanm : Test-Warnings-0.027/xt/author/00-compile.t +cpanm : Test-Warnings-0.027/xt/author/changes_has_content.t +cpanm : Test-Warnings-0.027/xt/author/clean-namespaces.t +cpanm : Test-Warnings-0.027/xt/author/eol.t +cpanm : Test-Warnings-0.027/xt/author/examples_synopsis_1.t +cpanm : Test-Warnings-0.027/xt/author/examples_synopsis_2.t +cpanm : Test-Warnings-0.027/xt/author/examples_test_warning_contents.t +cpanm : Test-Warnings-0.027/xt/author/kwalitee.t +cpanm : Test-Warnings-0.027/xt/author/minimum-version.t +cpanm : Test-Warnings-0.027/xt/author/mojibake.t +cpanm : Test-Warnings-0.027/xt/author/no-tabs.t +cpanm : Test-Warnings-0.027/xt/author/pod-coverage.t +cpanm : Test-Warnings-0.027/xt/author/pod-no404s.t +cpanm : Test-Warnings-0.027/xt/author/pod-spell.t +cpanm : Test-Warnings-0.027/xt/author/pod-syntax.t +cpanm : Test-Warnings-0.027/xt/author/portability.t +cpanm : Test-Warnings-0.027/t/00-report-prereqs.dd +cpanm : Test-Warnings-0.027/t/00-report-prereqs.t +cpanm : Test-Warnings-0.027/t/01-basic.t +cpanm : Test-Warnings-0.027/t/02-done_testing.t +cpanm : Test-Warnings-0.027/t/03-subtest.t +cpanm : Test-Warnings-0.027/t/04-no-tests.t +cpanm : Test-Warnings-0.027/t/05-no-end-block.t +cpanm : Test-Warnings-0.027/t/06-skip-all.t +cpanm : Test-Warnings-0.027/t/07-no_plan.t +cpanm : Test-Warnings-0.027/t/08-use-if.t +cpanm : Test-Warnings-0.027/t/09-warnings-contents.t +cpanm : Test-Warnings-0.027/t/10-no-done_testing.t +cpanm : Test-Warnings-0.027/t/11-double-use.t +cpanm : Test-Warnings-0.027/t/12-no-newline.t +cpanm : Test-Warnings-0.027/t/13-propagate-warnings.t +cpanm : Test-Warnings-0.027/t/14-propagate-subname.t +cpanm : Test-Warnings-0.027/t/15-propagate-default.t +cpanm : Test-Warnings-0.027/t/16-propagate-ignore.t +cpanm : Test-Warnings-0.027/t/17-propagate-subname-colons.t +cpanm : Test-Warnings-0.027/t/18-propagate-subname-package.t +cpanm : Test-Warnings-0.027/t/19-propagate-nonexistent-subname.t +cpanm : Test-Warnings-0.027/t/20-propagate-stub.t +cpanm : Test-Warnings-0.027/t/21-fail-on-warning.t +cpanm : Test-Warnings-0.027/t/lib/ +cpanm : Test-Warnings-0.027/t/zzz-check-breaks.t +cpanm : Test-Warnings-0.027/t/lib/SilenceStderr.pm +cpanm : Test-Warnings-0.027/lib/Test/ +cpanm : Test-Warnings-0.027/lib/Test/Warnings.pm +cpanm : Test-Warnings-0.027/examples/no_plan.t +cpanm : Test-Warnings-0.027/examples/sub.t +cpanm : Test-Warnings-0.027/examples/synopsis_1.t +cpanm : Test-Warnings-0.027/examples/synopsis_2.t +cpanm : Test-Warnings-0.027/examples/test_nowarnings.t +cpanm : Test-Warnings-0.027/examples/test_warning_contents.t +cpanm : Test-Warnings-0.027/examples/warning_like.t +cpanm : Test-Warnings-0.027/examples/with_done_testing.t +cpanm : Test-Warnings-0.027/examples/with_plan.t +cpanm : Entering Test-Warnings-0.027 +cpanm : Checking configure dependencies from META.json +cpanm : Checking if you have ExtUtils::MakeMaker 6.58 ... Yes (7.38) +cpanm : Running Makefile.PL +cpanm : Configuring Test-Warnings-0.027 ... Checking if your kit is complete... +cpanm : Looks good +cpanm : Generating a Unix-style Makefile +cpanm : Writing Makefile for Test::Warnings +cpanm : Writing MYMETA.yml and MYMETA.json +cpanm : Checking dependencies from MYMETA.json ... +cpanm : Checking if you have strict 0 ... Yes (1.11) +cpanm : Checking if you have ExtUtils::MakeMaker 0 ... Yes (7.38) +cpanm : Checking if you have warnings 0 ... Yes (1.45) +cpanm : Checking if you have Carp 0 ... Yes (1.50) +cpanm : Checking if you have File::Spec 0 ... Yes (3.78) +cpanm : Checking if you have parent 0 ... Yes (0.237) +cpanm : Checking if you have Test::Builder 0 ... Yes (1.302168) +cpanm : Checking if you have if 0 ... Yes (0.0608) +cpanm : Checking if you have Test::More 0.94 ... Yes (1.302168) +cpanm : Checking if you have Exporter 0 ... Yes (5.74) +cpanm : OK +cpanm : Building and testing Test-Warnings-0.027 ... cp lib/Test/Warnings.pm blib/lib/Test/Warnings.pm +cpanm : PERL_DL_NONLAZY=1 "/home/binary_c/perl5/perlbrew/perls/perl-5.31.5/bin/perl5.31.5" "-MExtUtils::Command::MM" "-MTest::Harness" "-e" "undef *Test::Harness::Switches; test_harness(0, 'blib/lib', 'blib/arch')" t/*.t +cpanm : # +cpanm : # Versions for all modules listed in MYMETA.json (including optional ones): +cpanm : # +cpanm : # === Configure Requires === +cpanm : # +cpanm : # Module Want Have +cpanm : # ------------------- ---- ---- +cpanm : # ExtUtils::MakeMaker any 7.38 +cpanm : # +cpanm : # === Build Requires === +cpanm : # +cpanm : # Module Want Have +cpanm : # ------------------- ---- ---- +cpanm : # ExtUtils::MakeMaker any 7.38 +cpanm : # +cpanm : # === Test Requires === +cpanm : # +cpanm : # Module Want Have +cpanm : # ------------------- ---- -------- +cpanm : # ExtUtils::MakeMaker any 7.38 +cpanm : # File::Spec any 3.78 +cpanm : # Test::More 0.94 1.302168 +cpanm : # if any 0.0608 +cpanm : # +cpanm : # === Test Recommends === +cpanm : # +cpanm : # Module Want Have +cpanm : # ---------- -------- -------- +cpanm : # CPAN::Meta 2.120900 2.150010 cpanm : # -cpanm : # Module Want Have -cpanm : # ------------- ---- ------- -cpanm : # Unicode::UTF8 0.58 missing +cpanm : # === Test Suggests === cpanm : # -cpanm : t/00-report-prereqs.t ............. ok -cpanm : t/basename.t ...................... ok -cpanm : t/basic.t ......................... ok -cpanm : t/children.t ...................... ok -cpanm : t/chmod.t ......................... ok -cpanm : t/digest.t ........................ ok -cpanm : t/exception.t ..................... ok -cpanm : t/exports.t ....................... ok -cpanm : t/filesystem.t .................... ok -cpanm : t/input_output.t .................. ok -cpanm : t/input_output_no_PU_UU.t ......... ok -cpanm : t/input_output_no_UU.t ............ ok -cpanm : t/locking.t ....................... ok -cpanm : t/mkpath.t ........................ ok -cpanm : t/mutable_tree_while_iterating.t .. ok -cpanm : t/normalize.t ..................... ok -cpanm : t/overloading.t ................... ok -cpanm : t/parent.t ........................ ok -cpanm : t/recurse.t ....................... ok -cpanm : t/rel-abs.t ....................... ok -cpanm : t/sig_die.t ....................... ok -cpanm : t/subsumes.t ...................... ok -cpanm : t/symlinks.t ...................... ok -cpanm : t/temp.t .......................... ok -cpanm : t/visit.t ......................... ok -cpanm : t/zz-atomic.t ..................... skipped: Test::MockRandom required for atomicity tests -cpanm : t/zzz-spec.t ...................... ok +cpanm : # Module Want Have +cpanm : # ------------------------ ----- -------- +cpanm : # CPAN::Meta::Check 0.011 missing +cpanm : # CPAN::Meta::Requirements any 2.140 +cpanm : # PadWalker any missing +cpanm : # Test::Tester 0.108 1.302168 +cpanm : # +cpanm : # === Runtime Requires === +cpanm : # +cpanm : # Module Want Have +cpanm : # ------------- ---- -------- +cpanm : # Carp any 1.50 +cpanm : # Exporter any 5.74 +cpanm : # Test::Builder any 1.302168 +cpanm : # parent any 0.237 +cpanm : # strict any 1.11 +cpanm : # warnings any 1.45 +cpanm : # +cpanm : # === Other Modules === +cpanm : # +cpanm : # Module Have +cpanm : # --------------- ------- +cpanm : # Encode 3.01 +cpanm : # File::Temp 0.2309 +cpanm : # JSON::PP 4.04 +cpanm : # Module::Runtime missing +cpanm : # Sub::Name missing +cpanm : # YAML missing +cpanm : # autodie 2.29 +cpanm : # +cpanm : t/00-report-prereqs.t ................. ok +cpanm : t/01-basic.t .......................... ok +cpanm : t/02-done_testing.t ................... ok +cpanm : t/03-subtest.t ........................ ok +cpanm : t/04-no-tests.t ....................... ok +cpanm : t/05-no-end-block.t ................... ok +cpanm : t/06-skip-all.t ....................... skipped: Need Foo::Bar::Baz to continue! +cpanm : t/07-no_plan.t ........................ ok +cpanm : t/08-use-if.t ......................... ok +cpanm : t/09-warnings-contents.t .............. ok +cpanm : t/10-no-done_testing.t ................ ok +cpanm : t/11-double-use.t ..................... ok +cpanm : t/12-no-newline.t ..................... ok +cpanm : t/13-propagate-warnings.t ............. ok +cpanm : t/14-propagate-subname.t .............. ok +cpanm : t/15-propagate-default.t .............. ok +cpanm : t/16-propagate-ignore.t ............... ok +cpanm : t/17-propagate-subname-colons.t ....... ok +cpanm : t/18-propagate-subname-package.t ...... ok +cpanm : t/19-propagate-nonexistent-subname.t .. ok +cpanm : t/20-propagate-stub.t ................. ok +cpanm : t/21-fail-on-warning.t ................ ok +cpanm : t/zzz-check-breaks.t .................. ok cpanm : All tests successful. -cpanm : Files=27, Tests=1704, 3 wallclock secs ( 0.37 usr 0.06 sys + 2.99 cusr 0.42 csys = 3.84 CPU) +cpanm : Files=23, Tests=72, 2 wallclock secs ( 0.10 usr 0.02 sys + 1.53 cusr 0.22 csys = 1.87 CPU) cpanm : Result: PASS -cpanm : Installing /home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/site_perl/5.31.5/Path/Tiny.pm +cpanm : Installing /home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/site_perl/5.31.5/Test/Warnings.pm cpanm : Appending installation info to /home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/5.31.5/x86_64-linux-thread-multi/perllocal.pod cpanm : OK -cpanm : Successfully installed Path-Tiny-0.108 -cpanm : Installing /home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/site_perl/5.31.5/x86_64-linux-thread-multi/.meta/Path-Tiny-0.108/MYMETA.json -cpanm : Installing /home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/site_perl/5.31.5/x86_64-linux-thread-multi/.meta/Path-Tiny-0.108/install.json +cpanm : Successfully installed Test-Warnings-0.027 +cpanm : Installing /home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/site_perl/5.31.5/x86_64-linux-thread-multi/.meta/Test-Warnings-0.027/MYMETA.json +cpanm : Installing /home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/site_perl/5.31.5/x86_64-linux-thread-multi/.meta/Test-Warnings-0.027/install.json cpanm : Searching Test::Deep (0) on cpanmetadb ... -cpanm : --2019-11-11 18:08:35-- http://cpanmetadb.plackperl.org/v1.0/package/Test::Deep +cpanm : --2019-11-11 18:41:43-- http://cpanmetadb.plackperl.org/v1.0/package/Test::Deep cpanm : Resolving cpanmetadb.plackperl.org (cpanmetadb.plackperl.org)... 151.101.18.217 cpanm : Connecting to cpanmetadb.plackperl.org (cpanmetadb.plackperl.org)|151.101.18.217|:80... connected. cpanm : HTTP request sent, awaiting response... 200 OK cpanm : Length: 1612 (1.6K) [text/yaml] cpanm : Saving to: 'STDOUT' cpanm : -cpanm : 0K . 100% 112M=0s +cpanm : 0K . 100% 107M=0s cpanm : -cpanm : 2019-11-11 18:08:35 (112 MB/s) - written to stdout [1612/1612] +cpanm : 2019-11-11 18:41:43 (107 MB/s) - written to stdout [1612/1612] cpanm : cpanm : --> Working on Test::Deep -cpanm : Fetching http://www.cpan.org/authors/id/R/RJ/RJBS/Test-Deep-1.128.tar.gz ... --2019-11-11 18:08:35-- http://www.cpan.org/authors/id/R/RJ/RJBS/Test-Deep-1.128.tar.gz +cpanm : Fetching http://www.cpan.org/authors/id/R/RJ/RJBS/Test-Deep-1.128.tar.gz ... --2019-11-11 18:41:43-- http://www.cpan.org/authors/id/R/RJ/RJBS/Test-Deep-1.128.tar.gz cpanm : Resolving www.cpan.org (www.cpan.org)... 151.101.18.217 cpanm : Connecting to www.cpan.org (www.cpan.org)|151.101.18.217|:80... connected. cpanm : HTTP request sent, awaiting response... 200 OK cpanm : Length: 41649 (41K) [application/x-gzip] cpanm : Saving to: 'Test-Deep-1.128.tar.gz' cpanm : -cpanm : 0K .......... .......... .......... .......... 100% 1.42M=0.03s +cpanm : 0K .......... .......... .......... .......... 100% 1.44M=0.03s cpanm : -cpanm : 2019-11-11 18:08:35 (1.42 MB/s) - 'Test-Deep-1.128.tar.gz' saved [41649/41649] +cpanm : 2019-11-11 18:41:43 (1.44 MB/s) - 'Test-Deep-1.128.tar.gz' saved [41649/41649] cpanm : cpanm : Unpacking Test-Deep-1.128.tar.gz cpanm : OK @@ -5528,55 +4059,55 @@ cpanm : Writing Makefile for Test::Deep cpanm : Writing MYMETA.yml and MYMETA.json cpanm : Checking dependencies from MYMETA.json ... cpanm : Checking if you have Test::Tester 0.04 ... Yes (1.302168) +cpanm : Checking if you have Test::More 0.88 ... Yes (1.302168) +cpanm : Checking if you have List::Util 1.09 ... Yes (1.52) cpanm : Checking if you have Scalar::Util 1.09 ... Yes (1.52) cpanm : Checking if you have ExtUtils::MakeMaker 0 ... Yes (7.38) cpanm : Checking if you have Test::Builder 0 ... Yes (1.302168) -cpanm : Checking if you have List::Util 1.09 ... Yes (1.52) -cpanm : Checking if you have Test::More 0.88 ... Yes (1.302168) cpanm : OK -cpanm : Building and testing Test-Deep-1.128 ... cp lib/Test/Deep/MM.pm blib/lib/Test/Deep/MM.pm -cpanm : cp lib/Test/Deep/Ignore.pm blib/lib/Test/Deep/Ignore.pm -cpanm : cp lib/Test/Deep/RegexpRefOnly.pm blib/lib/Test/Deep/RegexpRefOnly.pm +cpanm : Building and testing Test-Deep-1.128 ... cp lib/Test/Deep/Regexp.pm blib/lib/Test/Deep/Regexp.pm +cpanm : cp lib/Test/Deep/All.pm blib/lib/Test/Deep/All.pm cpanm : cp lib/Test/Deep/Blessed.pm blib/lib/Test/Deep/Blessed.pm -cpanm : cp lib/Test/Deep/ScalarRefOnly.pm blib/lib/Test/Deep/ScalarRefOnly.pm -cpanm : cp lib/Test/Deep/RegexpMatches.pm blib/lib/Test/Deep/RegexpMatches.pm +cpanm : cp lib/Test/Deep/Ignore.pm blib/lib/Test/Deep/Ignore.pm +cpanm : cp lib/Test/Deep/Set.pm blib/lib/Test/Deep/Set.pm +cpanm : cp lib/Test/Deep/Cmp.pm blib/lib/Test/Deep/Cmp.pm cpanm : cp lib/Test/Deep/NoTest.pm blib/lib/Test/Deep/NoTest.pm -cpanm : cp lib/Test/Deep.pm blib/lib/Test/Deep.pm -cpanm : cp lib/Test/Deep/Ref.pm blib/lib/Test/Deep/Ref.pm cpanm : cp lib/Test/Deep/ListMethods.pm blib/lib/Test/Deep/ListMethods.pm -cpanm : cp lib/Test/Deep/Obj.pm blib/lib/Test/Deep/Obj.pm -cpanm : cp lib/Test/Deep/ArrayLength.pm blib/lib/Test/Deep/ArrayLength.pm -cpanm : cp lib/Test/Deep/ArrayEach.pm blib/lib/Test/Deep/ArrayEach.pm +cpanm : cp lib/Test/Deep/ArrayLengthOnly.pm blib/lib/Test/Deep/ArrayLengthOnly.pm +cpanm : cp lib/Test/Deep/ScalarRefOnly.pm blib/lib/Test/Deep/ScalarRefOnly.pm cpanm : cp lib/Test/Deep/Boolean.pm blib/lib/Test/Deep/Boolean.pm -cpanm : cp lib/Test/Deep/HashKeys.pm blib/lib/Test/Deep/HashKeys.pm +cpanm : cp lib/Test/Deep/Ref.pm blib/lib/Test/Deep/Ref.pm +cpanm : cp lib/Test/Deep/RegexpMatches.pm blib/lib/Test/Deep/RegexpMatches.pm +cpanm : cp lib/Test/Deep/Shallow.pm blib/lib/Test/Deep/Shallow.pm +cpanm : cp lib/Test/Deep.pm blib/lib/Test/Deep.pm cpanm : cp lib/Test/Deep/Number.pm blib/lib/Test/Deep/Number.pm -cpanm : cp lib/Test/Deep/Code.pm blib/lib/Test/Deep/Code.pm -cpanm : cp lib/Test/Deep/RegexpOnly.pm blib/lib/Test/Deep/RegexpOnly.pm -cpanm : cp lib/Test/Deep/HashKeysOnly.pm blib/lib/Test/Deep/HashKeysOnly.pm -cpanm : cp lib/Test/Deep/String.pm blib/lib/Test/Deep/String.pm +cpanm : cp lib/Test/Deep/Array.pm blib/lib/Test/Deep/Array.pm +cpanm : cp lib/Test/Deep/RefType.pm blib/lib/Test/Deep/RefType.pm cpanm : cp lib/Test/Deep/RegexpRef.pm blib/lib/Test/Deep/RegexpRef.pm -cpanm : cp lib/Test/Deep/All.pm blib/lib/Test/Deep/All.pm -cpanm : cp lib/Test/Deep/ScalarRef.pm blib/lib/Test/Deep/ScalarRef.pm -cpanm : cp lib/Test/Deep/ArrayLengthOnly.pm blib/lib/Test/Deep/ArrayLengthOnly.pm -cpanm : cp lib/Test/Deep/None.pm blib/lib/Test/Deep/None.pm -cpanm : cp lib/Test/Deep/HashElements.pm blib/lib/Test/Deep/HashElements.pm -cpanm : cp lib/Test/Deep/Cmp.pm blib/lib/Test/Deep/Cmp.pm -cpanm : cp lib/Test/Deep/Class.pm blib/lib/Test/Deep/Class.pm -cpanm : cp lib/Test/Deep/Methods.pm blib/lib/Test/Deep/Methods.pm -cpanm : cp lib/Test/Deep/Set.pm blib/lib/Test/Deep/Set.pm +cpanm : cp lib/Test/Deep/Stack.pm blib/lib/Test/Deep/Stack.pm +cpanm : cp lib/Test/Deep/ArrayElementsOnly.pm blib/lib/Test/Deep/ArrayElementsOnly.pm +cpanm : cp lib/Test/Deep/RegexpOnly.pm blib/lib/Test/Deep/RegexpOnly.pm +cpanm : cp lib/Test/Deep/HashKeys.pm blib/lib/Test/Deep/HashKeys.pm cpanm : cp lib/Test/Deep/Cache/Simple.pm blib/lib/Test/Deep/Cache/Simple.pm -cpanm : cp lib/Test/Deep/RefType.pm blib/lib/Test/Deep/RefType.pm -cpanm : cp lib/Test/Deep/HashEach.pm blib/lib/Test/Deep/HashEach.pm -cpanm : cp lib/Test/Deep/Array.pm blib/lib/Test/Deep/Array.pm -cpanm : cp lib/Test/Deep/Isa.pm blib/lib/Test/Deep/Isa.pm -cpanm : cp lib/Test/Deep/Shallow.pm blib/lib/Test/Deep/Shallow.pm cpanm : cp lib/Test/Deep/RegexpVersion.pm blib/lib/Test/Deep/RegexpVersion.pm -cpanm : cp lib/Test/Deep/ArrayElementsOnly.pm blib/lib/Test/Deep/ArrayElementsOnly.pm +cpanm : cp lib/Test/Deep/HashElements.pm blib/lib/Test/Deep/HashElements.pm +cpanm : cp lib/Test/Deep/Isa.pm blib/lib/Test/Deep/Isa.pm cpanm : cp lib/Test/Deep/Hash.pm blib/lib/Test/Deep/Hash.pm -cpanm : cp lib/Test/Deep/Stack.pm blib/lib/Test/Deep/Stack.pm cpanm : cp lib/Test/Deep/Any.pm blib/lib/Test/Deep/Any.pm -cpanm : cp lib/Test/Deep/Regexp.pm blib/lib/Test/Deep/Regexp.pm +cpanm : cp lib/Test/Deep/HashKeysOnly.pm blib/lib/Test/Deep/HashKeysOnly.pm +cpanm : cp lib/Test/Deep/Code.pm blib/lib/Test/Deep/Code.pm +cpanm : cp lib/Test/Deep/ArrayEach.pm blib/lib/Test/Deep/ArrayEach.pm +cpanm : cp lib/Test/Deep/String.pm blib/lib/Test/Deep/String.pm +cpanm : cp lib/Test/Deep/ScalarRef.pm blib/lib/Test/Deep/ScalarRef.pm +cpanm : cp lib/Test/Deep/MM.pm blib/lib/Test/Deep/MM.pm +cpanm : cp lib/Test/Deep/Class.pm blib/lib/Test/Deep/Class.pm cpanm : cp lib/Test/Deep/Cache.pm blib/lib/Test/Deep/Cache.pm +cpanm : cp lib/Test/Deep/HashEach.pm blib/lib/Test/Deep/HashEach.pm +cpanm : cp lib/Test/Deep/ArrayLength.pm blib/lib/Test/Deep/ArrayLength.pm +cpanm : cp lib/Test/Deep/Methods.pm blib/lib/Test/Deep/Methods.pm +cpanm : cp lib/Test/Deep/None.pm blib/lib/Test/Deep/None.pm +cpanm : cp lib/Test/Deep/Obj.pm blib/lib/Test/Deep/Obj.pm +cpanm : cp lib/Test/Deep/RegexpRefOnly.pm blib/lib/Test/Deep/RegexpRefOnly.pm cpanm : PERL_DL_NONLAZY=1 "/home/binary_c/perl5/perlbrew/perls/perl-5.31.5/bin/perl5.31.5" "-MExtUtils::Command::MM" "-MTest::Harness" "-e" "undef *Test::Harness::Switches; test_harness(0, 'blib/lib', 'blib/arch')" t/*.t cpanm : t/all.t ..................... ok cpanm : t/any.t ..................... ok @@ -5618,7 +4149,7 @@ cpanm : t/set.t ..................... ok cpanm : t/shallow.t ................. ok cpanm : t/string.t .................. ok cpanm : All tests successful. -cpanm : Files=39, Tests=1233, 4 wallclock secs ( 0.25 usr 0.08 sys + 2.79 cusr 0.40 csys = 3.52 CPU) +cpanm : Files=39, Tests=1233, 3 wallclock secs ( 0.29 usr 0.06 sys + 2.84 cusr 0.33 csys = 3.52 CPU) cpanm : Result: PASS cpanm : Installing /home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/site_perl/5.31.5/Test/Deep.pm cpanm : Installing /home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/site_perl/5.31.5/Test/Deep/Number.pm @@ -5641,795 +4172,579 @@ cpanm : Installing /home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/site_perl cpanm : Installing /home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/site_perl/5.31.5/Test/Deep/Cmp.pm cpanm : Installing /home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/site_perl/5.31.5/Test/Deep/Any.pm cpanm : Installing /home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/site_perl/5.31.5/Test/Deep/Boolean.pm -cpanm : Installing /home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/site_perl/5.31.5/Test/Deep/None.pm -cpanm : Installing /home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/site_perl/5.31.5/Test/Deep/ScalarRef.pm -cpanm : Installing /home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/site_perl/5.31.5/Test/Deep/Shallow.pm -cpanm : Installing /home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/site_perl/5.31.5/Test/Deep/Hash.pm -cpanm : Installing /home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/site_perl/5.31.5/Test/Deep/RefType.pm -cpanm : Installing /home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/site_perl/5.31.5/Test/Deep/ArrayLengthOnly.pm -cpanm : Installing /home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/site_perl/5.31.5/Test/Deep/String.pm -cpanm : Installing /home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/site_perl/5.31.5/Test/Deep/RegexpOnly.pm -cpanm : Installing /home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/site_perl/5.31.5/Test/Deep/NoTest.pm -cpanm : Installing /home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/site_perl/5.31.5/Test/Deep/ListMethods.pm -cpanm : Installing /home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/site_perl/5.31.5/Test/Deep/RegexpMatches.pm -cpanm : Installing /home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/site_perl/5.31.5/Test/Deep/RegexpRef.pm -cpanm : Installing /home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/site_perl/5.31.5/Test/Deep/Ignore.pm -cpanm : Installing /home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/site_perl/5.31.5/Test/Deep/MM.pm -cpanm : Installing /home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/site_perl/5.31.5/Test/Deep/HashKeys.pm -cpanm : Installing /home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/site_perl/5.31.5/Test/Deep/HashElements.pm -cpanm : Installing /home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/site_perl/5.31.5/Test/Deep/HashEach.pm -cpanm : Installing /home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/site_perl/5.31.5/Test/Deep/Blessed.pm -cpanm : Installing /home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/site_perl/5.31.5/Test/Deep/ArrayEach.pm -cpanm : Installing /home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/site_perl/5.31.5/Test/Deep/RegexpRefOnly.pm -cpanm : Installing /home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/site_perl/5.31.5/Test/Deep/Isa.pm -cpanm : Installing /home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/site_perl/5.31.5/Test/Deep/Cache/Simple.pm -cpanm : Appending installation info to /home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/5.31.5/x86_64-linux-thread-multi/perllocal.pod -cpanm : OK -cpanm : Successfully installed Test-Deep-1.128 -cpanm : Installing /home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/site_perl/5.31.5/x86_64-linux-thread-multi/.meta/Test-Deep-1.128/MYMETA.json -cpanm : Installing /home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/site_perl/5.31.5/x86_64-linux-thread-multi/.meta/Test-Deep-1.128/install.json -cpanm : Searching Test::Fatal (0) on cpanmetadb ... -cpanm : --2019-11-11 18:08:40-- http://cpanmetadb.plackperl.org/v1.0/package/Test::Fatal -cpanm : Resolving cpanmetadb.plackperl.org (cpanmetadb.plackperl.org)... 151.101.18.217 -cpanm : Connecting to cpanmetadb.plackperl.org (cpanmetadb.plackperl.org)|151.101.18.217|:80... connected. -cpanm : HTTP request sent, awaiting response... 200 OK -cpanm : Length: 94 [text/yaml] -cpanm : Saving to: 'STDOUT' -cpanm : -cpanm : 0K 100% 10.0M=0s -cpanm : -cpanm : 2019-11-11 18:08:40 (10.0 MB/s) - written to stdout [94/94] -cpanm : -cpanm : --> Working on Test::Fatal -cpanm : Fetching http://www.cpan.org/authors/id/R/RJ/RJBS/Test-Fatal-0.014.tar.gz ... --2019-11-11 18:08:40-- http://www.cpan.org/authors/id/R/RJ/RJBS/Test-Fatal-0.014.tar.gz -cpanm : Resolving www.cpan.org (www.cpan.org)... 151.101.18.217 -cpanm : Connecting to www.cpan.org (www.cpan.org)|151.101.18.217|:80... connected. -cpanm : HTTP request sent, awaiting response... 200 OK -cpanm : Length: 19685 (19K) [application/x-gzip] -cpanm : Saving to: 'Test-Fatal-0.014.tar.gz' -cpanm : -cpanm : 0K .......... ......... 100% 2.07M=0.009s -cpanm : -cpanm : 2019-11-11 18:08:40 (2.07 MB/s) - 'Test-Fatal-0.014.tar.gz' saved [19685/19685] -cpanm : -cpanm : Unpacking Test-Fatal-0.014.tar.gz -cpanm : OK -cpanm : Test-Fatal-0.014/ -cpanm : Test-Fatal-0.014/Changes -cpanm : Test-Fatal-0.014/dist.ini -cpanm : Test-Fatal-0.014/examples/ -cpanm : Test-Fatal-0.014/lib/ -cpanm : Test-Fatal-0.014/LICENSE -cpanm : Test-Fatal-0.014/Makefile.PL -cpanm : Test-Fatal-0.014/MANIFEST -cpanm : Test-Fatal-0.014/META.json -cpanm : Test-Fatal-0.014/META.yml -cpanm : Test-Fatal-0.014/README -cpanm : Test-Fatal-0.014/t/ -cpanm : Test-Fatal-0.014/xt/ -cpanm : Test-Fatal-0.014/xt/release/ -cpanm : Test-Fatal-0.014/xt/release/changes_has_content.t -cpanm : Test-Fatal-0.014/xt/release/pod-syntax.t -cpanm : Test-Fatal-0.014/t/00-report-prereqs.dd -cpanm : Test-Fatal-0.014/t/00-report-prereqs.t -cpanm : Test-Fatal-0.014/t/basic.t -cpanm : Test-Fatal-0.014/t/like-exception.t -cpanm : Test-Fatal-0.014/t/todo.t -cpanm : Test-Fatal-0.014/lib/Test/ -cpanm : Test-Fatal-0.014/lib/Test/Fatal.pm -cpanm : Test-Fatal-0.014/examples/convert-to-test-fatal -cpanm : Test-Fatal-0.014/examples/exception_like.t -cpanm : Entering Test-Fatal-0.014 -cpanm : Checking configure dependencies from META.json -cpanm : Checking if you have ExtUtils::MakeMaker 6.58 ... Yes (7.38) -cpanm : Running Makefile.PL -cpanm : Configuring Test-Fatal-0.014 ... Warning: prerequisite Try::Tiny 0.07 not found. -cpanm : Checking if your kit is complete... -cpanm : Looks good -cpanm : Generating a Unix-style Makefile -cpanm : Writing Makefile for Test::Fatal -cpanm : Writing MYMETA.yml and MYMETA.json -cpanm : Checking dependencies from MYMETA.json ... -cpanm : Checking if you have File::Spec 0 ... Yes (3.78) -cpanm : Checking if you have ExtUtils::MakeMaker 0 ... Yes (7.38) -cpanm : Checking if you have Test::Builder 0 ... Yes (1.302168) -cpanm : Checking if you have Test::More 0.96 ... Yes (1.302168) -cpanm : Checking if you have overload 0 ... Yes (1.31) -cpanm : Checking if you have warnings 0 ... Yes (1.45) -cpanm : Checking if you have Test::Builder::Tester 0 ... Yes (1.302168) -cpanm : Checking if you have Try::Tiny 0.07 ... No -cpanm : Checking if you have Exporter 5.57 ... Yes (5.74) -cpanm : Checking if you have Carp 0 ... Yes (1.50) -cpanm : Checking if you have strict 0 ... Yes (1.11) -cpanm : Searching Try::Tiny (0.07) on cpanmetadb ... +cpanm : Installing /home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/site_perl/5.31.5/Test/Deep/None.pm +cpanm : Installing /home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/site_perl/5.31.5/Test/Deep/ScalarRef.pm +cpanm : Installing /home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/site_perl/5.31.5/Test/Deep/Shallow.pm +cpanm : Installing /home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/site_perl/5.31.5/Test/Deep/Hash.pm +cpanm : Installing /home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/site_perl/5.31.5/Test/Deep/RefType.pm +cpanm : Installing /home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/site_perl/5.31.5/Test/Deep/ArrayLengthOnly.pm +cpanm : Installing /home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/site_perl/5.31.5/Test/Deep/String.pm +cpanm : Installing /home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/site_perl/5.31.5/Test/Deep/RegexpOnly.pm +cpanm : Installing /home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/site_perl/5.31.5/Test/Deep/NoTest.pm +cpanm : Installing /home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/site_perl/5.31.5/Test/Deep/ListMethods.pm +cpanm : Installing /home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/site_perl/5.31.5/Test/Deep/RegexpMatches.pm +cpanm : Installing /home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/site_perl/5.31.5/Test/Deep/RegexpRef.pm +cpanm : Installing /home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/site_perl/5.31.5/Test/Deep/Ignore.pm +cpanm : Installing /home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/site_perl/5.31.5/Test/Deep/MM.pm +cpanm : Installing /home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/site_perl/5.31.5/Test/Deep/HashKeys.pm +cpanm : Installing /home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/site_perl/5.31.5/Test/Deep/HashElements.pm +cpanm : Installing /home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/site_perl/5.31.5/Test/Deep/HashEach.pm +cpanm : Installing /home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/site_perl/5.31.5/Test/Deep/Blessed.pm +cpanm : Installing /home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/site_perl/5.31.5/Test/Deep/ArrayEach.pm +cpanm : Installing /home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/site_perl/5.31.5/Test/Deep/RegexpRefOnly.pm +cpanm : Installing /home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/site_perl/5.31.5/Test/Deep/Isa.pm +cpanm : Installing /home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/site_perl/5.31.5/Test/Deep/Cache/Simple.pm +cpanm : Appending installation info to /home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/5.31.5/x86_64-linux-thread-multi/perllocal.pod cpanm : OK -cpanm : ==> Found dependencies: Try::Tiny -cpanm : --2019-11-11 18:08:40-- http://cpanmetadb.plackperl.org/v1.0/package/Try::Tiny +cpanm : Successfully installed Test-Deep-1.128 +cpanm : Installing /home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/site_perl/5.31.5/x86_64-linux-thread-multi/.meta/Test-Deep-1.128/MYMETA.json +cpanm : Installing /home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/site_perl/5.31.5/x86_64-linux-thread-multi/.meta/Test-Deep-1.128/install.json +cpanm : Searching Test::File (0) on cpanmetadb ... +cpanm : --2019-11-11 18:41:47-- http://cpanmetadb.plackperl.org/v1.0/package/Test::File cpanm : Resolving cpanmetadb.plackperl.org (cpanmetadb.plackperl.org)... 151.101.18.217 cpanm : Connecting to cpanmetadb.plackperl.org (cpanmetadb.plackperl.org)|151.101.18.217|:80... connected. cpanm : HTTP request sent, awaiting response... 200 OK -cpanm : Length: 88 [text/yaml] +cpanm : Length: 93 [text/yaml] cpanm : Saving to: 'STDOUT' cpanm : -cpanm : 0K 100% 6.67M=0s +cpanm : 0K 100% 11.9M=0s cpanm : -cpanm : 2019-11-11 18:08:40 (6.67 MB/s) - written to stdout [88/88] +cpanm : 2019-11-11 18:41:47 (11.9 MB/s) - written to stdout [93/93] cpanm : -cpanm : --> Working on Try::Tiny -cpanm : Fetching http://www.cpan.org/authors/id/E/ET/ETHER/Try-Tiny-0.30.tar.gz ... --2019-11-11 18:08:40-- http://www.cpan.org/authors/id/E/ET/ETHER/Try-Tiny-0.30.tar.gz +cpanm : --> Working on Test::File +cpanm : Fetching http://www.cpan.org/authors/id/B/BD/BDFOY/Test-File-1.443.tar.gz ... --2019-11-11 18:41:47-- http://www.cpan.org/authors/id/B/BD/BDFOY/Test-File-1.443.tar.gz cpanm : Resolving www.cpan.org (www.cpan.org)... 151.101.18.217 cpanm : Connecting to www.cpan.org (www.cpan.org)|151.101.18.217|:80... connected. cpanm : HTTP request sent, awaiting response... 200 OK -cpanm : Length: 34395 (34K) [application/x-gzip] -cpanm : Saving to: 'Try-Tiny-0.30.tar.gz' +cpanm : Length: 27065 (26K) [application/x-gzip] +cpanm : Saving to: 'Test-File-1.443.tar.gz' cpanm : -cpanm : 0K .......... .......... .......... ... 100% 1.82M=0.02s +cpanm : 0K .......... .......... ...... 100% 2.26M=0.01s cpanm : -cpanm : 2019-11-11 18:08:40 (1.82 MB/s) - 'Try-Tiny-0.30.tar.gz' saved [34395/34395] +cpanm : 2019-11-11 18:41:47 (2.26 MB/s) - 'Test-File-1.443.tar.gz' saved [27065/27065] cpanm : -cpanm : Unpacking Try-Tiny-0.30.tar.gz -cpanm : OK -cpanm : Try-Tiny-0.30/ -cpanm : Try-Tiny-0.30/Changes -cpanm : Try-Tiny-0.30/CONTRIBUTING -cpanm : Try-Tiny-0.30/dist.ini -cpanm : Try-Tiny-0.30/INSTALL -cpanm : Try-Tiny-0.30/lib/ -cpanm : Try-Tiny-0.30/LICENCE -cpanm : Try-Tiny-0.30/maint/ -cpanm : Try-Tiny-0.30/Makefile.PL -cpanm : Try-Tiny-0.30/MANIFEST -cpanm : Try-Tiny-0.30/META.json -cpanm : Try-Tiny-0.30/META.yml -cpanm : Try-Tiny-0.30/README -cpanm : Try-Tiny-0.30/t/ -cpanm : Try-Tiny-0.30/xt/ -cpanm : Try-Tiny-0.30/xt/author/ -cpanm : Try-Tiny-0.30/xt/release/ -cpanm : Try-Tiny-0.30/xt/release/changes_has_content.t -cpanm : Try-Tiny-0.30/xt/release/cpan-changes.t -cpanm : Try-Tiny-0.30/xt/release/distmeta.t -cpanm : Try-Tiny-0.30/xt/release/minimum-version.t -cpanm : Try-Tiny-0.30/xt/author/00-compile.t -cpanm : Try-Tiny-0.30/xt/author/eol.t -cpanm : Try-Tiny-0.30/xt/author/kwalitee.t -cpanm : Try-Tiny-0.30/xt/author/mojibake.t -cpanm : Try-Tiny-0.30/xt/author/no-tabs.t -cpanm : Try-Tiny-0.30/xt/author/pod-coverage.t -cpanm : Try-Tiny-0.30/xt/author/pod-no404s.t -cpanm : Try-Tiny-0.30/xt/author/pod-spell.t -cpanm : Try-Tiny-0.30/xt/author/pod-syntax.t -cpanm : Try-Tiny-0.30/xt/author/portability.t -cpanm : Try-Tiny-0.30/t/00-report-prereqs.dd -cpanm : Try-Tiny-0.30/t/00-report-prereqs.t -cpanm : Try-Tiny-0.30/t/basic.t -cpanm : Try-Tiny-0.30/t/context.t -cpanm : Try-Tiny-0.30/t/erroneous_usage.t -cpanm : Try-Tiny-0.30/t/finally.t -cpanm : Try-Tiny-0.30/t/given_when.t -cpanm : Try-Tiny-0.30/t/global_destruction_forked.t -cpanm : Try-Tiny-0.30/t/global_destruction_load.t -cpanm : Try-Tiny-0.30/t/lib/ -cpanm : Try-Tiny-0.30/t/named.t -cpanm : Try-Tiny-0.30/t/when.t -cpanm : Try-Tiny-0.30/t/zzz-check-breaks.t -cpanm : Try-Tiny-0.30/t/lib/TryUser.pm -cpanm : Try-Tiny-0.30/maint/bench.pl -cpanm : Try-Tiny-0.30/lib/Try/ -cpanm : Try-Tiny-0.30/lib/Try/Tiny.pm -cpanm : Entering Try-Tiny-0.30 -cpanm : Checking configure dependencies from META.json -cpanm : Checking if you have ExtUtils::MakeMaker 6.58 ... Yes (7.38) -cpanm : Running Makefile.PL -cpanm : Configuring Try-Tiny-0.30 ... Checking if your kit is complete... -cpanm : Looks good -cpanm : Generating a Unix-style Makefile -cpanm : Writing Makefile for Try::Tiny -cpanm : Writing MYMETA.yml and MYMETA.json -cpanm : Checking dependencies from MYMETA.json ... -cpanm : Checking if you have constant 0 ... Yes (1.33) -cpanm : Checking if you have Carp 0 ... Yes (1.50) -cpanm : Checking if you have strict 0 ... Yes (1.11) -cpanm : Checking if you have warnings 0 ... Yes (1.45) -cpanm : Checking if you have if 0 ... Yes (0.0608) -cpanm : Checking if you have Exporter 5.57 ... Yes (5.74) -cpanm : Checking if you have File::Spec 0 ... Yes (3.78) -cpanm : Checking if you have Test::More 0 ... Yes (1.302168) -cpanm : Checking if you have ExtUtils::MakeMaker 0 ... Yes (7.38) -cpanm : OK -cpanm : Building and testing Try-Tiny-0.30 ... cp lib/Try/Tiny.pm blib/lib/Try/Tiny.pm -cpanm : PERL_DL_NONLAZY=1 "/home/binary_c/perl5/perlbrew/perls/perl-5.31.5/bin/perl5.31.5" "-MExtUtils::Command::MM" "-MTest::Harness" "-e" "undef *Test::Harness::Switches; test_harness(0, 'blib/lib', 'blib/arch')" t/*.t -cpanm : # -cpanm : # Versions for all modules listed in MYMETA.json (including optional ones): -cpanm : # -cpanm : # === Configure Requires === -cpanm : # -cpanm : # Module Want Have -cpanm : # ------------------- ---- ---- -cpanm : # ExtUtils::MakeMaker any 7.38 -cpanm : # -cpanm : # === Configure Suggests === -cpanm : # -cpanm : # Module Want Have -cpanm : # -------- ------- ---- -cpanm : # JSON::PP 2.27300 4.04 -cpanm : # -cpanm : # === Build Requires === -cpanm : # -cpanm : # Module Want Have -cpanm : # ------------------- ---- ---- -cpanm : # ExtUtils::MakeMaker any 7.38 -cpanm : # -cpanm : # === Test Requires === -cpanm : # -cpanm : # Module Want Have -cpanm : # ------------------- ---- -------- -cpanm : # ExtUtils::MakeMaker any 7.38 -cpanm : # File::Spec any 3.78 -cpanm : # Test::More any 1.302168 -cpanm : # if any 0.0608 -cpanm : # -cpanm : # === Test Recommends === -cpanm : # -cpanm : # Module Want Have -cpanm : # ---------- -------- -------- -cpanm : # CPAN::Meta 2.120900 2.150010 -cpanm : # -cpanm : # === Test Suggests === -cpanm : # -cpanm : # Module Want Have -cpanm : # ------------------------ ----- ------- -cpanm : # CPAN::Meta::Check 0.011 missing -cpanm : # CPAN::Meta::Requirements any 2.140 -cpanm : # Capture::Tiny 0.12 missing -cpanm : # -cpanm : # === Runtime Requires === -cpanm : # -cpanm : # Module Want Have -cpanm : # -------- ---- ---- -cpanm : # Carp any 1.50 -cpanm : # Exporter 5.57 5.74 -cpanm : # constant any 1.33 -cpanm : # strict any 1.11 -cpanm : # warnings any 1.45 -cpanm : # -cpanm : # === Runtime Suggests === -cpanm : # -cpanm : # Module Want Have -cpanm : # --------- ---- ------- -cpanm : # Sub::Name 0.08 missing -cpanm : # Sub::Util any 1.52 -cpanm : # -cpanm : # === Other Modules === -cpanm : # -cpanm : # Module Have -cpanm : # ------------- ------- -cpanm : # JSON::PP 4.04 -cpanm : # Pod::Coverage missing -cpanm : # Sub::Name missing -cpanm : # YAML missing -cpanm : # autodie 2.29 -cpanm : # -cpanm : t/00-report-prereqs.t .......... ok -cpanm : t/basic.t ...................... ok -cpanm : t/context.t .................... ok -cpanm : t/erroneous_usage.t ............ ok -cpanm : t/finally.t .................... ok -cpanm : t/given_when.t ................. skipped: Tests skipped on perl 5.27.7+, pending resolution of smartmatch changes -cpanm : t/global_destruction_forked.t .. ok -cpanm : t/global_destruction_load.t .... skipped: Capture::Tiny 0.12 required -cpanm : t/named.t ...................... ok -cpanm : t/when.t ....................... skipped: Tests skipped on perl 5.27.7+, pending resolution of smartmatch changes -cpanm : t/zzz-check-breaks.t ........... ok -cpanm : All tests successful. -cpanm : Files=11, Tests=97, 1 wallclock secs ( 0.07 usr 0.01 sys + 0.83 cusr 0.12 csys = 1.03 CPU) -cpanm : Result: PASS -cpanm : Installing /home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/site_perl/5.31.5/Try/Tiny.pm -cpanm : Appending installation info to /home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/5.31.5/x86_64-linux-thread-multi/perllocal.pod +cpanm : Unpacking Test-File-1.443.tar.gz cpanm : OK -cpanm : Successfully installed Try-Tiny-0.30 -cpanm : Installing /home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/site_perl/5.31.5/x86_64-linux-thread-multi/.meta/Try-Tiny-0.30/MYMETA.json -cpanm : Installing /home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/site_perl/5.31.5/x86_64-linux-thread-multi/.meta/Try-Tiny-0.30/install.json -cpanm : Building and testing Test-Fatal-0.014 ... cp lib/Test/Fatal.pm blib/lib/Test/Fatal.pm -cpanm : PERL_DL_NONLAZY=1 "/home/binary_c/perl5/perlbrew/perls/perl-5.31.5/bin/perl5.31.5" "-MExtUtils::Command::MM" "-MTest::Harness" "-e" "undef *Test::Harness::Switches; test_harness(0, 'blib/lib', 'blib/arch')" t/*.t -cpanm : # -cpanm : # Versions for all modules listed in MYMETA.json (including optional ones): -cpanm : # -cpanm : # === Configure Requires === -cpanm : # -cpanm : # Module Want Have -cpanm : # ------------------- ---- ---- -cpanm : # ExtUtils::MakeMaker any 7.38 -cpanm : # -cpanm : # === Build Requires === -cpanm : # -cpanm : # Module Want Have -cpanm : # ------------------- ---- ---- -cpanm : # ExtUtils::MakeMaker any 7.38 -cpanm : # -cpanm : # === Test Requires === -cpanm : # -cpanm : # Module Want Have -cpanm : # --------------------- ---- -------- -cpanm : # ExtUtils::MakeMaker any 7.38 -cpanm : # File::Spec any 3.78 -cpanm : # Test::Builder::Tester any 1.302168 -cpanm : # Test::More 0.96 1.302168 -cpanm : # overload any 1.31 -cpanm : # -cpanm : # === Test Recommends === -cpanm : # -cpanm : # Module Want Have -cpanm : # ---------- -------- -------- -cpanm : # CPAN::Meta 2.120900 2.150010 -cpanm : # -cpanm : # === Runtime Requires === -cpanm : # -cpanm : # Module Want Have -cpanm : # ------------- ---- -------- -cpanm : # Carp any 1.50 -cpanm : # Exporter 5.57 5.74 -cpanm : # Test::Builder any 1.302168 -cpanm : # Try::Tiny 0.07 0.30 -cpanm : # strict any 1.11 -cpanm : # warnings any 1.45 -cpanm : # -cpanm : t/00-report-prereqs.t .. ok -cpanm : t/basic.t .............. ok -cpanm : t/like-exception.t ..... ok -cpanm : t/todo.t ............... ok -cpanm : All tests successful. -cpanm : Files=4, Tests=16, 0 wallclock secs ( 0.03 usr 0.01 sys + 0.39 cusr 0.03 csys = 0.46 CPU) -cpanm : Result: PASS -cpanm : Installing /home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/site_perl/5.31.5/Test/Fatal.pm -cpanm : Appending installation info to /home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/5.31.5/x86_64-linux-thread-multi/perllocal.pod +cpanm : Test-File-1.443/ +cpanm : Test-File-1.443/Changes +cpanm : Test-File-1.443/examples/ +cpanm : Test-File-1.443/INSTALL.SKIP +cpanm : Test-File-1.443/lib/ +cpanm : Test-File-1.443/LICENSE +cpanm : Test-File-1.443/Makefile.PL +cpanm : Test-File-1.443/MANIFEST +cpanm : Test-File-1.443/MANIFEST.SKIP +cpanm : Test-File-1.443/META.json +cpanm : Test-File-1.443/META.yml +cpanm : Test-File-1.443/README.pod +cpanm : Test-File-1.443/t/ +cpanm : Test-File-1.443/xt/ +cpanm : Test-File-1.443/xt/changes.t +cpanm : Test-File-1.443/t/dm_skeleton.t +cpanm : Test-File-1.443/t/file_contains.t +cpanm : Test-File-1.443/t/file_contains_encoded.t +cpanm : Test-File-1.443/t/file_contains_utf8.t +cpanm : Test-File-1.443/t/file_mtime.t +cpanm : Test-File-1.443/t/file_sizes.t +cpanm : Test-File-1.443/t/line_counters.t +cpanm : Test-File-1.443/t/link_counts.t +cpanm : Test-File-1.443/t/links.t +cpanm : Test-File-1.443/t/load.t +cpanm : Test-File-1.443/t/normalize.t +cpanm : Test-File-1.443/t/obviously_non_multi_user.t +cpanm : Test-File-1.443/t/owner.t +cpanm : Test-File-1.443/t/pod.t +cpanm : Test-File-1.443/t/pod_coverage.t +cpanm : Test-File-1.443/t/rt/ +cpanm : Test-File-1.443/t/setup_common +cpanm : Test-File-1.443/t/test_dirs.t +cpanm : Test-File-1.443/t/test_files.t +cpanm : Test-File-1.443/t/test_manifest +cpanm : Test-File-1.443/t/win32.t +cpanm : Test-File-1.443/t/rt/30346.t +cpanm : Test-File-1.443/lib/Test/ +cpanm : Test-File-1.443/lib/Test/File.pm +cpanm : Test-File-1.443/examples/README +cpanm : Entering Test-File-1.443 +cpanm : Checking configure dependencies from META.json +cpanm : Checking if you have ExtUtils::MakeMaker 6.64 ... Yes (7.38) +cpanm : Checking if you have File::Spec::Functions 0 ... Yes (3.78) +cpanm : Running Makefile.PL +cpanm : Configuring Test-File-1.443 ... Warning: prerequisite Test::utf8 0 not found. +cpanm : WARNING: Older versions of ExtUtils::MakeMaker may errantly install README.pod as part of this distribution. It is recommended to avoid using this path in CPAN modules. +cpanm : Checking if your kit is complete... +cpanm : Looks good +cpanm : Generating a Unix-style Makefile +cpanm : Writing Makefile for Test::File +cpanm : Writing MYMETA.yml and MYMETA.json +cpanm : Checking dependencies from MYMETA.json ... +cpanm : Checking if you have Test::Builder::Tester 1.04 ... Yes (1.302168) +cpanm : Checking if you have Test::Builder 1.001006 ... Yes (1.302168) +cpanm : Checking if you have Test::utf8 0 ... No +cpanm : Checking if you have Test::More 0.95 ... Yes (1.302168) +cpanm : Searching Test::utf8 (0) on cpanmetadb ... cpanm : OK -cpanm : Successfully installed Test-Fatal-0.014 -cpanm : Installing /home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/site_perl/5.31.5/x86_64-linux-thread-multi/.meta/Test-Fatal-0.014/MYMETA.json -cpanm : Installing /home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/site_perl/5.31.5/x86_64-linux-thread-multi/.meta/Test-Fatal-0.014/install.json -cpanm : Searching Test::Warnings (0) on cpanmetadb ... -cpanm : --2019-11-11 18:08:44-- http://cpanmetadb.plackperl.org/v1.0/package/Test::Warnings +cpanm : ==> Found dependencies: Test::utf8 +cpanm : --2019-11-11 18:41:48-- http://cpanmetadb.plackperl.org/v1.0/package/Test::utf8 cpanm : Resolving cpanmetadb.plackperl.org (cpanmetadb.plackperl.org)... 151.101.18.217 cpanm : Connecting to cpanmetadb.plackperl.org (cpanmetadb.plackperl.org)|151.101.18.217|:80... connected. cpanm : HTTP request sent, awaiting response... 200 OK -cpanm : Length: 101 [text/yaml] +cpanm : Length: 90 [text/yaml] cpanm : Saving to: 'STDOUT' cpanm : -cpanm : 0K 100% 9.91M=0s +cpanm : 0K 100% 6.72M=0s cpanm : -cpanm : 2019-11-11 18:08:44 (9.91 MB/s) - written to stdout [101/101] +cpanm : 2019-11-11 18:41:48 (6.72 MB/s) - written to stdout [90/90] cpanm : -cpanm : --> Working on Test::Warnings -cpanm : Fetching http://www.cpan.org/authors/id/E/ET/ETHER/Test-Warnings-0.027.tar.gz ... --2019-11-11 18:08:44-- http://www.cpan.org/authors/id/E/ET/ETHER/Test-Warnings-0.027.tar.gz +cpanm : --> Working on Test::utf8 +cpanm : Fetching http://www.cpan.org/authors/id/M/MA/MARKF/Test-utf8-1.01.tar.gz ... --2019-11-11 18:41:48-- http://www.cpan.org/authors/id/M/MA/MARKF/Test-utf8-1.01.tar.gz cpanm : Resolving www.cpan.org (www.cpan.org)... 151.101.18.217 cpanm : Connecting to www.cpan.org (www.cpan.org)|151.101.18.217|:80... connected. cpanm : HTTP request sent, awaiting response... 200 OK -cpanm : Length: 41301 (40K) [application/x-gzip] -cpanm : Saving to: 'Test-Warnings-0.027.tar.gz' +cpanm : Length: 33308 (33K) [application/x-gzip] +cpanm : Saving to: 'Test-utf8-1.01.tar.gz' cpanm : -cpanm : 0K .......... .......... .......... .......... 100% 1.35M=0.03s +cpanm : 0K .......... .......... .......... .. 100% 3.04M=0.01s cpanm : -cpanm : 2019-11-11 18:08:44 (1.35 MB/s) - 'Test-Warnings-0.027.tar.gz' saved [41301/41301] +cpanm : 2019-11-11 18:41:48 (3.04 MB/s) - 'Test-utf8-1.01.tar.gz' saved [33308/33308] cpanm : -cpanm : Unpacking Test-Warnings-0.027.tar.gz +cpanm : Unpacking Test-utf8-1.01.tar.gz cpanm : OK -cpanm : Test-Warnings-0.027/ -cpanm : Test-Warnings-0.027/Changes -cpanm : Test-Warnings-0.027/CONTRIBUTING -cpanm : Test-Warnings-0.027/dist.ini -cpanm : Test-Warnings-0.027/examples/ -cpanm : Test-Warnings-0.027/INSTALL -cpanm : Test-Warnings-0.027/lib/ -cpanm : Test-Warnings-0.027/LICENCE -cpanm : Test-Warnings-0.027/Makefile.PL -cpanm : Test-Warnings-0.027/MANIFEST -cpanm : Test-Warnings-0.027/META.json -cpanm : Test-Warnings-0.027/META.yml -cpanm : Test-Warnings-0.027/README -cpanm : Test-Warnings-0.027/t/ -cpanm : Test-Warnings-0.027/xt/ -cpanm : Test-Warnings-0.027/xt/author/ -cpanm : Test-Warnings-0.027/xt/release/ -cpanm : Test-Warnings-0.027/xt/release/changes_has_content.t -cpanm : Test-Warnings-0.027/xt/release/cpan-changes.t -cpanm : Test-Warnings-0.027/xt/release/distmeta.t -cpanm : Test-Warnings-0.027/xt/author/00-compile.t -cpanm : Test-Warnings-0.027/xt/author/changes_has_content.t -cpanm : Test-Warnings-0.027/xt/author/clean-namespaces.t -cpanm : Test-Warnings-0.027/xt/author/eol.t -cpanm : Test-Warnings-0.027/xt/author/examples_synopsis_1.t -cpanm : Test-Warnings-0.027/xt/author/examples_synopsis_2.t -cpanm : Test-Warnings-0.027/xt/author/examples_test_warning_contents.t -cpanm : Test-Warnings-0.027/xt/author/kwalitee.t -cpanm : Test-Warnings-0.027/xt/author/minimum-version.t -cpanm : Test-Warnings-0.027/xt/author/mojibake.t -cpanm : Test-Warnings-0.027/xt/author/no-tabs.t -cpanm : Test-Warnings-0.027/xt/author/pod-coverage.t -cpanm : Test-Warnings-0.027/xt/author/pod-no404s.t -cpanm : Test-Warnings-0.027/xt/author/pod-spell.t -cpanm : Test-Warnings-0.027/xt/author/pod-syntax.t -cpanm : Test-Warnings-0.027/xt/author/portability.t -cpanm : Test-Warnings-0.027/t/00-report-prereqs.dd -cpanm : Test-Warnings-0.027/t/00-report-prereqs.t -cpanm : Test-Warnings-0.027/t/01-basic.t -cpanm : Test-Warnings-0.027/t/02-done_testing.t -cpanm : Test-Warnings-0.027/t/03-subtest.t -cpanm : Test-Warnings-0.027/t/04-no-tests.t -cpanm : Test-Warnings-0.027/t/05-no-end-block.t -cpanm : Test-Warnings-0.027/t/06-skip-all.t -cpanm : Test-Warnings-0.027/t/07-no_plan.t -cpanm : Test-Warnings-0.027/t/08-use-if.t -cpanm : Test-Warnings-0.027/t/09-warnings-contents.t -cpanm : Test-Warnings-0.027/t/10-no-done_testing.t -cpanm : Test-Warnings-0.027/t/11-double-use.t -cpanm : Test-Warnings-0.027/t/12-no-newline.t -cpanm : Test-Warnings-0.027/t/13-propagate-warnings.t -cpanm : Test-Warnings-0.027/t/14-propagate-subname.t -cpanm : Test-Warnings-0.027/t/15-propagate-default.t -cpanm : Test-Warnings-0.027/t/16-propagate-ignore.t -cpanm : Test-Warnings-0.027/t/17-propagate-subname-colons.t -cpanm : Test-Warnings-0.027/t/18-propagate-subname-package.t -cpanm : Test-Warnings-0.027/t/19-propagate-nonexistent-subname.t -cpanm : Test-Warnings-0.027/t/20-propagate-stub.t -cpanm : Test-Warnings-0.027/t/21-fail-on-warning.t -cpanm : Test-Warnings-0.027/t/lib/ -cpanm : Test-Warnings-0.027/t/zzz-check-breaks.t -cpanm : Test-Warnings-0.027/t/lib/SilenceStderr.pm -cpanm : Test-Warnings-0.027/lib/Test/ -cpanm : Test-Warnings-0.027/lib/Test/Warnings.pm -cpanm : Test-Warnings-0.027/examples/no_plan.t -cpanm : Test-Warnings-0.027/examples/sub.t -cpanm : Test-Warnings-0.027/examples/synopsis_1.t -cpanm : Test-Warnings-0.027/examples/synopsis_2.t -cpanm : Test-Warnings-0.027/examples/test_nowarnings.t -cpanm : Test-Warnings-0.027/examples/test_warning_contents.t -cpanm : Test-Warnings-0.027/examples/warning_like.t -cpanm : Test-Warnings-0.027/examples/with_done_testing.t -cpanm : Test-Warnings-0.027/examples/with_plan.t -cpanm : Entering Test-Warnings-0.027 +cpanm : Test-utf8-1.01/ +cpanm : Test-utf8-1.01/CHANGES +cpanm : Test-utf8-1.01/inc/ +cpanm : Test-utf8-1.01/lib/ +cpanm : Test-utf8-1.01/Makefile.PL +cpanm : Test-utf8-1.01/MANIFEST +cpanm : Test-utf8-1.01/META.yml +cpanm : Test-utf8-1.01/README +cpanm : Test-utf8-1.01/t/ +cpanm : Test-utf8-1.01/xt/ +cpanm : Test-utf8-1.01/xt/001pod.t +cpanm : Test-utf8-1.01/xt/002podcoverage.t +cpanm : Test-utf8-1.01/xt/003perlcritic.t +cpanm : Test-utf8-1.01/xt/anyperlperlcriticrc +cpanm : Test-utf8-1.01/t/01basic.t +cpanm : Test-utf8-1.01/t/02invalid.t +cpanm : Test-utf8-1.01/t/03deu.t +cpanm : Test-utf8-1.01/t/04ascii.t +cpanm : Test-utf8-1.01/t/05latin1.t +cpanm : Test-utf8-1.01/t/06flag.t +cpanm : Test-utf8-1.01/t/07valid_docu.t +cpanm : Test-utf8-1.01/lib/Test/ +cpanm : Test-utf8-1.01/lib/Test/utf8.pm +cpanm : Test-utf8-1.01/inc/Module/ +cpanm : Test-utf8-1.01/inc/Module/Install/ +cpanm : Test-utf8-1.01/inc/Module/Install.pm +cpanm : Test-utf8-1.01/inc/Module/Install/AuthorTests.pm +cpanm : Test-utf8-1.01/inc/Module/Install/Base.pm +cpanm : Test-utf8-1.01/inc/Module/Install/Can.pm +cpanm : Test-utf8-1.01/inc/Module/Install/Fetch.pm +cpanm : Test-utf8-1.01/inc/Module/Install/GithubMeta.pm +cpanm : Test-utf8-1.01/inc/Module/Install/Makefile.pm +cpanm : Test-utf8-1.01/inc/Module/Install/Metadata.pm +cpanm : Test-utf8-1.01/inc/Module/Install/ReadmeFromPod.pm +cpanm : Test-utf8-1.01/inc/Module/Install/Win32.pm +cpanm : Test-utf8-1.01/inc/Module/Install/WriteAll.pm +cpanm : Entering Test-utf8-1.01 +cpanm : Checking configure dependencies from META.yml +cpanm : Checking if you have ExtUtils::MakeMaker 6.59 ... Yes (7.38) +cpanm : Running Makefile.PL +cpanm : Configuring Test-utf8-1.01 ... Checking if your kit is complete... +cpanm : Looks good +cpanm : Generating a Unix-style Makefile +cpanm : Writing Makefile for Test::utf8 +cpanm : Writing MYMETA.yml and MYMETA.json +cpanm : Checking dependencies from MYMETA.json ... +cpanm : Checking if you have Test::Builder 0 ... Yes (1.302168) +cpanm : Checking if you have ExtUtils::MakeMaker 0 ... Yes (7.38) +cpanm : Checking if you have Test::Builder::Tester 0.09 ... Yes (1.302168) +cpanm : OK +cpanm : Building and testing Test-utf8-1.01 ... cp lib/Test/utf8.pm blib/lib/Test/utf8.pm +cpanm : PERL_DL_NONLAZY=1 "/home/binary_c/perl5/perlbrew/perls/perl-5.31.5/bin/perl5.31.5" "-MExtUtils::Command::MM" "-MTest::Harness" "-e" "undef *Test::Harness::Switches; test_harness(0, 'inc', 'blib/lib', 'blib/arch')" t/*.t +cpanm : t/01basic.t ....... ok +cpanm : t/02invalid.t ..... ok +cpanm : t/03deu.t ......... ok +cpanm : t/04ascii.t ....... ok +cpanm : t/05latin1.t ...... ok +cpanm : t/06flag.t ........ ok +cpanm : t/07valid_docu.t .. ok +cpanm : All tests successful. +cpanm : Files=7, Tests=44, 1 wallclock secs ( 0.04 usr 0.01 sys + 0.58 cusr 0.06 csys = 0.69 CPU) +cpanm : Result: PASS +cpanm : Installing /home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/site_perl/5.31.5/Test/utf8.pm +cpanm : Appending installation info to /home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/5.31.5/x86_64-linux-thread-multi/perllocal.pod +cpanm : OK +cpanm : Successfully installed Test-utf8-1.01 +cpanm : Installing /home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/site_perl/5.31.5/x86_64-linux-thread-multi/.meta/Test-utf8-1.01/MYMETA.json +cpanm : Installing /home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/site_perl/5.31.5/x86_64-linux-thread-multi/.meta/Test-utf8-1.01/install.json +cpanm : Building and testing Test-File-1.443 ... cp lib/Test/File.pm blib/lib/Test/File.pm +cpanm : PERL_DL_NONLAZY=1 "/home/binary_c/perl5/perlbrew/perls/perl-5.31.5/bin/perl5.31.5" "-MExtUtils::Command::MM" "-MTest::Harness" "-e" "undef *Test::Harness::Switches; test_harness(0, 'blib/lib', 'blib/arch')" t/*.t +cpanm : # MSWin32 +cpanm : # Looks like you planned 0 tests but ran 2. +cpanm : # Looks like you planned 0 tests but ran 2. +cpanm : t/dm_skeleton.t ............... ok +cpanm : t/file_contains.t ............. ok +cpanm : t/file_contains_encoded.t ..... ok +cpanm : t/file_contains_utf8.t ........ ok +cpanm : t/file_mtime.t ................ ok +cpanm : # Looks like you planned 0 tests but ran 5. +cpanm : # Looks like you planned 0 tests but ran 7. +cpanm : # Looks like you planned 0 tests but ran 6. +cpanm : t/file_sizes.t ................ ok +cpanm : # Looks like you planned 0 tests but ran 5. +cpanm : # Looks like you planned 0 tests but ran 6. +cpanm : # Looks like you planned 0 tests but ran 4. +cpanm : # Looks like you planned 0 tests but ran 4. +cpanm : t/line_counters.t ............. ok +cpanm : # Looks like you planned 0 tests but ran 2. +cpanm : # Looks like you planned 0 tests but ran 3. +cpanm : t/link_counts.t ............... ok +cpanm : # Looks like you planned 0 tests but ran 8. +cpanm : # Looks like you planned 0 tests but ran 12. +cpanm : # Looks like you planned 0 tests but ran 7. +cpanm : # Looks like you planned 0 tests but ran 2. +cpanm : # Looks like you planned 0 tests but ran 1. +cpanm : # Looks like you planned 0 tests but ran 1. +cpanm : t/links.t ..................... ok +cpanm : t/load.t ...................... ok +cpanm : t/normalize.t ................. ok +cpanm : t/obviously_non_multi_user.t .. ok +cpanm : t/owner.t ..................... ok +cpanm : t/pod.t ....................... skipped: Test::Pod 1.00 required for testing POD +cpanm : t/pod_coverage.t .............. skipped: Test::Pod::Coverage required for testing POD +cpanm : t/test_dirs.t ................. ok +cpanm : t/test_files.t ................ ok +cpanm : # Looks like you planned 0 tests but ran 4. +cpanm : t/win32.t ..................... ok +cpanm : All tests successful. +cpanm : Files=18, Tests=189, 2 wallclock secs ( 0.13 usr 0.03 sys + 1.58 cusr 0.18 csys = 1.92 CPU) +cpanm : Result: PASS +cpanm : Installing /home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/site_perl/5.31.5/Test/File.pm +cpanm : Appending installation info to /home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/5.31.5/x86_64-linux-thread-multi/perllocal.pod +cpanm : OK +cpanm : Successfully installed Test-File-1.443 +cpanm : Installing /home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/site_perl/5.31.5/x86_64-linux-thread-multi/.meta/Test-File-1.443/MYMETA.json +cpanm : Installing /home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/site_perl/5.31.5/x86_64-linux-thread-multi/.meta/Test-File-1.443/install.json +cpanm : Searching Test::Fatal (0) on cpanmetadb ... +cpanm : --2019-11-11 18:41:52-- http://cpanmetadb.plackperl.org/v1.0/package/Test::Fatal +cpanm : Resolving cpanmetadb.plackperl.org (cpanmetadb.plackperl.org)... 151.101.18.217 +cpanm : Connecting to cpanmetadb.plackperl.org (cpanmetadb.plackperl.org)|151.101.18.217|:80... connected. +cpanm : HTTP request sent, awaiting response... 200 OK +cpanm : Length: 94 [text/yaml] +cpanm : Saving to: 'STDOUT' +cpanm : +cpanm : 0K 100% 9.48M=0s +cpanm : +cpanm : 2019-11-11 18:41:52 (9.48 MB/s) - written to stdout [94/94] +cpanm : +cpanm : --> Working on Test::Fatal +cpanm : Fetching http://www.cpan.org/authors/id/R/RJ/RJBS/Test-Fatal-0.014.tar.gz ... --2019-11-11 18:41:52-- http://www.cpan.org/authors/id/R/RJ/RJBS/Test-Fatal-0.014.tar.gz +cpanm : Resolving www.cpan.org (www.cpan.org)... 151.101.18.217 +cpanm : Connecting to www.cpan.org (www.cpan.org)|151.101.18.217|:80... connected. +cpanm : HTTP request sent, awaiting response... 200 OK +cpanm : Length: 19685 (19K) [application/x-gzip] +cpanm : Saving to: 'Test-Fatal-0.014.tar.gz' +cpanm : +cpanm : 0K .......... ......... 100% 2.21M=0.009s +cpanm : +cpanm : 2019-11-11 18:41:52 (2.21 MB/s) - 'Test-Fatal-0.014.tar.gz' saved [19685/19685] +cpanm : +cpanm : Unpacking Test-Fatal-0.014.tar.gz +cpanm : OK +cpanm : Test-Fatal-0.014/ +cpanm : Test-Fatal-0.014/Changes +cpanm : Test-Fatal-0.014/dist.ini +cpanm : Test-Fatal-0.014/examples/ +cpanm : Test-Fatal-0.014/lib/ +cpanm : Test-Fatal-0.014/LICENSE +cpanm : Test-Fatal-0.014/Makefile.PL +cpanm : Test-Fatal-0.014/MANIFEST +cpanm : Test-Fatal-0.014/META.json +cpanm : Test-Fatal-0.014/META.yml +cpanm : Test-Fatal-0.014/README +cpanm : Test-Fatal-0.014/t/ +cpanm : Test-Fatal-0.014/xt/ +cpanm : Test-Fatal-0.014/xt/release/ +cpanm : Test-Fatal-0.014/xt/release/changes_has_content.t +cpanm : Test-Fatal-0.014/xt/release/pod-syntax.t +cpanm : Test-Fatal-0.014/t/00-report-prereqs.dd +cpanm : Test-Fatal-0.014/t/00-report-prereqs.t +cpanm : Test-Fatal-0.014/t/basic.t +cpanm : Test-Fatal-0.014/t/like-exception.t +cpanm : Test-Fatal-0.014/t/todo.t +cpanm : Test-Fatal-0.014/lib/Test/ +cpanm : Test-Fatal-0.014/lib/Test/Fatal.pm +cpanm : Test-Fatal-0.014/examples/convert-to-test-fatal +cpanm : Test-Fatal-0.014/examples/exception_like.t +cpanm : Entering Test-Fatal-0.014 cpanm : Checking configure dependencies from META.json cpanm : Checking if you have ExtUtils::MakeMaker 6.58 ... Yes (7.38) cpanm : Running Makefile.PL -cpanm : Configuring Test-Warnings-0.027 ... Checking if your kit is complete... +cpanm : Configuring Test-Fatal-0.014 ... Warning: prerequisite Try::Tiny 0.07 not found. +cpanm : Checking if your kit is complete... cpanm : Looks good cpanm : Generating a Unix-style Makefile -cpanm : Writing Makefile for Test::Warnings +cpanm : Writing Makefile for Test::Fatal cpanm : Writing MYMETA.yml and MYMETA.json cpanm : Checking dependencies from MYMETA.json ... -cpanm : Checking if you have ExtUtils::MakeMaker 0 ... Yes (7.38) -cpanm : Checking if you have Test::Builder 0 ... Yes (1.302168) -cpanm : Checking if you have Test::More 0.94 ... Yes (1.302168) -cpanm : Checking if you have File::Spec 0 ... Yes (3.78) -cpanm : Checking if you have parent 0 ... Yes (0.237) -cpanm : Checking if you have Exporter 0 ... Yes (5.74) -cpanm : Checking if you have if 0 ... Yes (0.0608) -cpanm : Checking if you have warnings 0 ... Yes (1.45) +cpanm : Checking if you have overload 0 ... Yes (1.31) cpanm : Checking if you have strict 0 ... Yes (1.11) +cpanm : Checking if you have warnings 0 ... Yes (1.45) +cpanm : Checking if you have ExtUtils::MakeMaker 0 ... Yes (7.38) +cpanm : Checking if you have Try::Tiny 0.07 ... No cpanm : Checking if you have Carp 0 ... Yes (1.50) +cpanm : Checking if you have Test::Builder::Tester 0 ... Yes (1.302168) +cpanm : Checking if you have File::Spec 0 ... Yes (3.78) +cpanm : Checking if you have Test::Builder 0 ... Yes (1.302168) +cpanm : Checking if you have Exporter 5.57 ... Yes (5.74) +cpanm : Checking if you have Test::More 0.96 ... Yes (1.302168) +cpanm : Searching Try::Tiny (0.07) on cpanmetadb ... cpanm : OK -cpanm : Building and testing Test-Warnings-0.027 ... cp lib/Test/Warnings.pm blib/lib/Test/Warnings.pm -cpanm : PERL_DL_NONLAZY=1 "/home/binary_c/perl5/perlbrew/perls/perl-5.31.5/bin/perl5.31.5" "-MExtUtils::Command::MM" "-MTest::Harness" "-e" "undef *Test::Harness::Switches; test_harness(0, 'blib/lib', 'blib/arch')" t/*.t -cpanm : # -cpanm : # Versions for all modules listed in MYMETA.json (including optional ones): -cpanm : # -cpanm : # === Configure Requires === -cpanm : # -cpanm : # Module Want Have -cpanm : # ------------------- ---- ---- -cpanm : # ExtUtils::MakeMaker any 7.38 -cpanm : # -cpanm : # === Build Requires === -cpanm : # -cpanm : # Module Want Have -cpanm : # ------------------- ---- ---- -cpanm : # ExtUtils::MakeMaker any 7.38 -cpanm : # -cpanm : # === Test Requires === -cpanm : # -cpanm : # Module Want Have -cpanm : # ------------------- ---- -------- -cpanm : # ExtUtils::MakeMaker any 7.38 -cpanm : # File::Spec any 3.78 -cpanm : # Test::More 0.94 1.302168 -cpanm : # if any 0.0608 -cpanm : # -cpanm : # === Test Recommends === -cpanm : # -cpanm : # Module Want Have -cpanm : # ---------- -------- -------- -cpanm : # CPAN::Meta 2.120900 2.150010 -cpanm : # -cpanm : # === Test Suggests === -cpanm : # -cpanm : # Module Want Have -cpanm : # ------------------------ ----- -------- -cpanm : # CPAN::Meta::Check 0.011 missing -cpanm : # CPAN::Meta::Requirements any 2.140 -cpanm : # PadWalker any missing -cpanm : # Test::Tester 0.108 1.302168 -cpanm : # -cpanm : # === Runtime Requires === -cpanm : # -cpanm : # Module Want Have -cpanm : # ------------- ---- -------- -cpanm : # Carp any 1.50 -cpanm : # Exporter any 5.74 -cpanm : # Test::Builder any 1.302168 -cpanm : # parent any 0.237 -cpanm : # strict any 1.11 -cpanm : # warnings any 1.45 -cpanm : # -cpanm : # === Other Modules === -cpanm : # -cpanm : # Module Have -cpanm : # --------------- ------- -cpanm : # Encode 3.01 -cpanm : # File::Temp 0.2309 -cpanm : # JSON::PP 4.04 -cpanm : # Module::Runtime missing -cpanm : # Sub::Name missing -cpanm : # YAML missing -cpanm : # autodie 2.29 -cpanm : # -cpanm : t/00-report-prereqs.t ................. ok -cpanm : t/01-basic.t .......................... ok -cpanm : t/02-done_testing.t ................... ok -cpanm : t/03-subtest.t ........................ ok -cpanm : t/04-no-tests.t ....................... ok -cpanm : t/05-no-end-block.t ................... ok -cpanm : t/06-skip-all.t ....................... skipped: Need Foo::Bar::Baz to continue! -cpanm : t/07-no_plan.t ........................ ok -cpanm : t/08-use-if.t ......................... ok -cpanm : t/09-warnings-contents.t .............. ok -cpanm : t/10-no-done_testing.t ................ ok -cpanm : t/11-double-use.t ..................... ok -cpanm : t/12-no-newline.t ..................... ok -cpanm : t/13-propagate-warnings.t ............. ok -cpanm : t/14-propagate-subname.t .............. ok -cpanm : t/15-propagate-default.t .............. ok -cpanm : t/16-propagate-ignore.t ............... ok -cpanm : t/17-propagate-subname-colons.t ....... ok -cpanm : t/18-propagate-subname-package.t ...... ok -cpanm : t/19-propagate-nonexistent-subname.t .. ok -cpanm : t/20-propagate-stub.t ................. ok -cpanm : t/21-fail-on-warning.t ................ ok -cpanm : t/zzz-check-breaks.t .................. ok -cpanm : All tests successful. -cpanm : Files=23, Tests=72, 1 wallclock secs ( 0.08 usr 0.04 sys + 1.63 cusr 0.19 csys = 1.94 CPU) -cpanm : Result: PASS -cpanm : Installing /home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/site_perl/5.31.5/Test/Warnings.pm -cpanm : Appending installation info to /home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/5.31.5/x86_64-linux-thread-multi/perllocal.pod -cpanm : OK -cpanm : Successfully installed Test-Warnings-0.027 -cpanm : Installing /home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/site_perl/5.31.5/x86_64-linux-thread-multi/.meta/Test-Warnings-0.027/MYMETA.json -cpanm : Installing /home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/site_perl/5.31.5/x86_64-linux-thread-multi/.meta/Test-Warnings-0.027/install.json -cpanm : Searching Test::File (0) on cpanmetadb ... -cpanm : --2019-11-11 18:08:47-- http://cpanmetadb.plackperl.org/v1.0/package/Test::File +cpanm : ==> Found dependencies: Try::Tiny +cpanm : --2019-11-11 18:41:52-- http://cpanmetadb.plackperl.org/v1.0/package/Try::Tiny cpanm : Resolving cpanmetadb.plackperl.org (cpanmetadb.plackperl.org)... 151.101.18.217 cpanm : Connecting to cpanmetadb.plackperl.org (cpanmetadb.plackperl.org)|151.101.18.217|:80... connected. cpanm : HTTP request sent, awaiting response... 200 OK -cpanm : Length: 93 [text/yaml] +cpanm : Length: 88 [text/yaml] cpanm : Saving to: 'STDOUT' cpanm : -cpanm : 0K 100% 6.51M=0s +cpanm : 0K 100% 13.4M=0s cpanm : -cpanm : 2019-11-11 18:08:47 (6.51 MB/s) - written to stdout [93/93] +cpanm : 2019-11-11 18:41:52 (13.4 MB/s) - written to stdout [88/88] cpanm : -cpanm : --> Working on Test::File -cpanm : Fetching http://www.cpan.org/authors/id/B/BD/BDFOY/Test-File-1.443.tar.gz ... --2019-11-11 18:08:47-- http://www.cpan.org/authors/id/B/BD/BDFOY/Test-File-1.443.tar.gz +cpanm : --> Working on Try::Tiny +cpanm : Fetching http://www.cpan.org/authors/id/E/ET/ETHER/Try-Tiny-0.30.tar.gz ... --2019-11-11 18:41:52-- http://www.cpan.org/authors/id/E/ET/ETHER/Try-Tiny-0.30.tar.gz cpanm : Resolving www.cpan.org (www.cpan.org)... 151.101.18.217 cpanm : Connecting to www.cpan.org (www.cpan.org)|151.101.18.217|:80... connected. cpanm : HTTP request sent, awaiting response... 200 OK -cpanm : Length: 27065 (26K) [application/x-gzip] -cpanm : Saving to: 'Test-File-1.443.tar.gz' +cpanm : Length: 34395 (34K) [application/x-gzip] +cpanm : Saving to: 'Try-Tiny-0.30.tar.gz' cpanm : -cpanm : 0K .......... .......... ...... 100% 2.27M=0.01s +cpanm : 0K .......... .......... .......... ... 100% 1.81M=0.02s cpanm : -cpanm : 2019-11-11 18:08:47 (2.27 MB/s) - 'Test-File-1.443.tar.gz' saved [27065/27065] +cpanm : 2019-11-11 18:41:52 (1.81 MB/s) - 'Try-Tiny-0.30.tar.gz' saved [34395/34395] cpanm : -cpanm : Unpacking Test-File-1.443.tar.gz +cpanm : Unpacking Try-Tiny-0.30.tar.gz cpanm : OK -cpanm : Test-File-1.443/ -cpanm : Test-File-1.443/Changes -cpanm : Test-File-1.443/examples/ -cpanm : Test-File-1.443/INSTALL.SKIP -cpanm : Test-File-1.443/lib/ -cpanm : Test-File-1.443/LICENSE -cpanm : Test-File-1.443/Makefile.PL -cpanm : Test-File-1.443/MANIFEST -cpanm : Test-File-1.443/MANIFEST.SKIP -cpanm : Test-File-1.443/META.json -cpanm : Test-File-1.443/META.yml -cpanm : Test-File-1.443/README.pod -cpanm : Test-File-1.443/t/ -cpanm : Test-File-1.443/xt/ -cpanm : Test-File-1.443/xt/changes.t -cpanm : Test-File-1.443/t/dm_skeleton.t -cpanm : Test-File-1.443/t/file_contains.t -cpanm : Test-File-1.443/t/file_contains_encoded.t -cpanm : Test-File-1.443/t/file_contains_utf8.t -cpanm : Test-File-1.443/t/file_mtime.t -cpanm : Test-File-1.443/t/file_sizes.t -cpanm : Test-File-1.443/t/line_counters.t -cpanm : Test-File-1.443/t/link_counts.t -cpanm : Test-File-1.443/t/links.t -cpanm : Test-File-1.443/t/load.t -cpanm : Test-File-1.443/t/normalize.t -cpanm : Test-File-1.443/t/obviously_non_multi_user.t -cpanm : Test-File-1.443/t/owner.t -cpanm : Test-File-1.443/t/pod.t -cpanm : Test-File-1.443/t/pod_coverage.t -cpanm : Test-File-1.443/t/rt/ -cpanm : Test-File-1.443/t/setup_common -cpanm : Test-File-1.443/t/test_dirs.t -cpanm : Test-File-1.443/t/test_files.t -cpanm : Test-File-1.443/t/test_manifest -cpanm : Test-File-1.443/t/win32.t -cpanm : Test-File-1.443/t/rt/30346.t -cpanm : Test-File-1.443/lib/Test/ -cpanm : Test-File-1.443/lib/Test/File.pm -cpanm : Test-File-1.443/examples/README -cpanm : Entering Test-File-1.443 +cpanm : Try-Tiny-0.30/ +cpanm : Try-Tiny-0.30/Changes +cpanm : Try-Tiny-0.30/CONTRIBUTING +cpanm : Try-Tiny-0.30/dist.ini +cpanm : Try-Tiny-0.30/INSTALL +cpanm : Try-Tiny-0.30/lib/ +cpanm : Try-Tiny-0.30/LICENCE +cpanm : Try-Tiny-0.30/maint/ +cpanm : Try-Tiny-0.30/Makefile.PL +cpanm : Try-Tiny-0.30/MANIFEST +cpanm : Try-Tiny-0.30/META.json +cpanm : Try-Tiny-0.30/META.yml +cpanm : Try-Tiny-0.30/README +cpanm : Try-Tiny-0.30/t/ +cpanm : Try-Tiny-0.30/xt/ +cpanm : Try-Tiny-0.30/xt/author/ +cpanm : Try-Tiny-0.30/xt/release/ +cpanm : Try-Tiny-0.30/xt/release/changes_has_content.t +cpanm : Try-Tiny-0.30/xt/release/cpan-changes.t +cpanm : Try-Tiny-0.30/xt/release/distmeta.t +cpanm : Try-Tiny-0.30/xt/release/minimum-version.t +cpanm : Try-Tiny-0.30/xt/author/00-compile.t +cpanm : Try-Tiny-0.30/xt/author/eol.t +cpanm : Try-Tiny-0.30/xt/author/kwalitee.t +cpanm : Try-Tiny-0.30/xt/author/mojibake.t +cpanm : Try-Tiny-0.30/xt/author/no-tabs.t +cpanm : Try-Tiny-0.30/xt/author/pod-coverage.t +cpanm : Try-Tiny-0.30/xt/author/pod-no404s.t +cpanm : Try-Tiny-0.30/xt/author/pod-spell.t +cpanm : Try-Tiny-0.30/xt/author/pod-syntax.t +cpanm : Try-Tiny-0.30/xt/author/portability.t +cpanm : Try-Tiny-0.30/t/00-report-prereqs.dd +cpanm : Try-Tiny-0.30/t/00-report-prereqs.t +cpanm : Try-Tiny-0.30/t/basic.t +cpanm : Try-Tiny-0.30/t/context.t +cpanm : Try-Tiny-0.30/t/erroneous_usage.t +cpanm : Try-Tiny-0.30/t/finally.t +cpanm : Try-Tiny-0.30/t/given_when.t +cpanm : Try-Tiny-0.30/t/global_destruction_forked.t +cpanm : Try-Tiny-0.30/t/global_destruction_load.t +cpanm : Try-Tiny-0.30/t/lib/ +cpanm : Try-Tiny-0.30/t/named.t +cpanm : Try-Tiny-0.30/t/when.t +cpanm : Try-Tiny-0.30/t/zzz-check-breaks.t +cpanm : Try-Tiny-0.30/t/lib/TryUser.pm +cpanm : Try-Tiny-0.30/maint/bench.pl +cpanm : Try-Tiny-0.30/lib/Try/ +cpanm : Try-Tiny-0.30/lib/Try/Tiny.pm +cpanm : Entering Try-Tiny-0.30 cpanm : Checking configure dependencies from META.json -cpanm : Checking if you have File::Spec::Functions 0 ... Yes (3.78) -cpanm : Checking if you have ExtUtils::MakeMaker 6.64 ... Yes (7.38) -cpanm : Running Makefile.PL -cpanm : Configuring Test-File-1.443 ... Warning: prerequisite Test::utf8 0 not found. -cpanm : WARNING: Older versions of ExtUtils::MakeMaker may errantly install README.pod as part of this distribution. It is recommended to avoid using this path in CPAN modules. -cpanm : Checking if your kit is complete... -cpanm : Looks good -cpanm : Generating a Unix-style Makefile -cpanm : Writing Makefile for Test::File -cpanm : Writing MYMETA.yml and MYMETA.json -cpanm : Checking dependencies from MYMETA.json ... -cpanm : Checking if you have Test::Builder 1.001006 ... Yes (1.302168) -cpanm : Checking if you have Test::More 0.95 ... Yes (1.302168) -cpanm : Checking if you have Test::Builder::Tester 1.04 ... Yes (1.302168) -cpanm : Checking if you have Test::utf8 0 ... No -cpanm : Searching Test::utf8 (0) on cpanmetadb ... -cpanm : OK -cpanm : ==> Found dependencies: Test::utf8 -cpanm : --2019-11-11 18:08:47-- http://cpanmetadb.plackperl.org/v1.0/package/Test::utf8 -cpanm : Resolving cpanmetadb.plackperl.org (cpanmetadb.plackperl.org)... 151.101.18.217 -cpanm : Connecting to cpanmetadb.plackperl.org (cpanmetadb.plackperl.org)|151.101.18.217|:80... connected. -cpanm : HTTP request sent, awaiting response... 200 OK -cpanm : Length: 90 [text/yaml] -cpanm : Saving to: 'STDOUT' -cpanm : -cpanm : 0K 100% 6.36M=0s -cpanm : -cpanm : 2019-11-11 18:08:47 (6.36 MB/s) - written to stdout [90/90] -cpanm : -cpanm : --> Working on Test::utf8 -cpanm : Fetching http://www.cpan.org/authors/id/M/MA/MARKF/Test-utf8-1.01.tar.gz ... --2019-11-11 18:08:47-- http://www.cpan.org/authors/id/M/MA/MARKF/Test-utf8-1.01.tar.gz -cpanm : Resolving www.cpan.org (www.cpan.org)... 151.101.18.217 -cpanm : Connecting to www.cpan.org (www.cpan.org)|151.101.18.217|:80... connected. -cpanm : HTTP request sent, awaiting response... 200 OK -cpanm : Length: 33308 (33K) [application/x-gzip] -cpanm : Saving to: 'Test-utf8-1.01.tar.gz' -cpanm : -cpanm : 0K .......... .......... .......... .. 100% 2.98M=0.01s -cpanm : -cpanm : 2019-11-11 18:08:47 (2.98 MB/s) - 'Test-utf8-1.01.tar.gz' saved [33308/33308] -cpanm : -cpanm : Unpacking Test-utf8-1.01.tar.gz -cpanm : OK -cpanm : Test-utf8-1.01/ -cpanm : Test-utf8-1.01/CHANGES -cpanm : Test-utf8-1.01/inc/ -cpanm : Test-utf8-1.01/lib/ -cpanm : Test-utf8-1.01/Makefile.PL -cpanm : Test-utf8-1.01/MANIFEST -cpanm : Test-utf8-1.01/META.yml -cpanm : Test-utf8-1.01/README -cpanm : Test-utf8-1.01/t/ -cpanm : Test-utf8-1.01/xt/ -cpanm : Test-utf8-1.01/xt/001pod.t -cpanm : Test-utf8-1.01/xt/002podcoverage.t -cpanm : Test-utf8-1.01/xt/003perlcritic.t -cpanm : Test-utf8-1.01/xt/anyperlperlcriticrc -cpanm : Test-utf8-1.01/t/01basic.t -cpanm : Test-utf8-1.01/t/02invalid.t -cpanm : Test-utf8-1.01/t/03deu.t -cpanm : Test-utf8-1.01/t/04ascii.t -cpanm : Test-utf8-1.01/t/05latin1.t -cpanm : Test-utf8-1.01/t/06flag.t -cpanm : Test-utf8-1.01/t/07valid_docu.t -cpanm : Test-utf8-1.01/lib/Test/ -cpanm : Test-utf8-1.01/lib/Test/utf8.pm -cpanm : Test-utf8-1.01/inc/Module/ -cpanm : Test-utf8-1.01/inc/Module/Install/ -cpanm : Test-utf8-1.01/inc/Module/Install.pm -cpanm : Test-utf8-1.01/inc/Module/Install/AuthorTests.pm -cpanm : Test-utf8-1.01/inc/Module/Install/Base.pm -cpanm : Test-utf8-1.01/inc/Module/Install/Can.pm -cpanm : Test-utf8-1.01/inc/Module/Install/Fetch.pm -cpanm : Test-utf8-1.01/inc/Module/Install/GithubMeta.pm -cpanm : Test-utf8-1.01/inc/Module/Install/Makefile.pm -cpanm : Test-utf8-1.01/inc/Module/Install/Metadata.pm -cpanm : Test-utf8-1.01/inc/Module/Install/ReadmeFromPod.pm -cpanm : Test-utf8-1.01/inc/Module/Install/Win32.pm -cpanm : Test-utf8-1.01/inc/Module/Install/WriteAll.pm -cpanm : Entering Test-utf8-1.01 -cpanm : Checking configure dependencies from META.yml -cpanm : Checking if you have ExtUtils::MakeMaker 6.59 ... Yes (7.38) +cpanm : Checking if you have ExtUtils::MakeMaker 6.58 ... Yes (7.38) cpanm : Running Makefile.PL -cpanm : Configuring Test-utf8-1.01 ... Checking if your kit is complete... +cpanm : Configuring Try-Tiny-0.30 ... Checking if your kit is complete... cpanm : Looks good cpanm : Generating a Unix-style Makefile -cpanm : Writing Makefile for Test::utf8 +cpanm : Writing Makefile for Try::Tiny cpanm : Writing MYMETA.yml and MYMETA.json cpanm : Checking dependencies from MYMETA.json ... -cpanm : Checking if you have Test::Builder::Tester 0.09 ... Yes (1.302168) +cpanm : Checking if you have File::Spec 0 ... Yes (3.78) +cpanm : Checking if you have strict 0 ... Yes (1.11) +cpanm : Checking if you have warnings 0 ... Yes (1.45) cpanm : Checking if you have ExtUtils::MakeMaker 0 ... Yes (7.38) -cpanm : Checking if you have Test::Builder 0 ... Yes (1.302168) +cpanm : Checking if you have constant 0 ... Yes (1.33) +cpanm : Checking if you have if 0 ... Yes (0.0608) +cpanm : Checking if you have Exporter 5.57 ... Yes (5.74) +cpanm : Checking if you have Carp 0 ... Yes (1.50) +cpanm : Checking if you have Test::More 0 ... Yes (1.302168) cpanm : OK -cpanm : Building and testing Test-utf8-1.01 ... cp lib/Test/utf8.pm blib/lib/Test/utf8.pm -cpanm : PERL_DL_NONLAZY=1 "/home/binary_c/perl5/perlbrew/perls/perl-5.31.5/bin/perl5.31.5" "-MExtUtils::Command::MM" "-MTest::Harness" "-e" "undef *Test::Harness::Switches; test_harness(0, 'inc', 'blib/lib', 'blib/arch')" t/*.t -cpanm : t/01basic.t ....... ok -cpanm : t/02invalid.t ..... ok -cpanm : t/03deu.t ......... ok -cpanm : t/04ascii.t ....... ok -cpanm : t/05latin1.t ...... ok -cpanm : t/06flag.t ........ ok -cpanm : t/07valid_docu.t .. ok +cpanm : Building and testing Try-Tiny-0.30 ... cp lib/Try/Tiny.pm blib/lib/Try/Tiny.pm +cpanm : PERL_DL_NONLAZY=1 "/home/binary_c/perl5/perlbrew/perls/perl-5.31.5/bin/perl5.31.5" "-MExtUtils::Command::MM" "-MTest::Harness" "-e" "undef *Test::Harness::Switches; test_harness(0, 'blib/lib', 'blib/arch')" t/*.t +cpanm : # +cpanm : # Versions for all modules listed in MYMETA.json (including optional ones): +cpanm : # +cpanm : # === Configure Requires === +cpanm : # +cpanm : # Module Want Have +cpanm : # ------------------- ---- ---- +cpanm : # ExtUtils::MakeMaker any 7.38 +cpanm : # +cpanm : # === Configure Suggests === +cpanm : # +cpanm : # Module Want Have +cpanm : # -------- ------- ---- +cpanm : # JSON::PP 2.27300 4.04 +cpanm : # +cpanm : # === Build Requires === +cpanm : # +cpanm : # Module Want Have +cpanm : # ------------------- ---- ---- +cpanm : # ExtUtils::MakeMaker any 7.38 +cpanm : # +cpanm : # === Test Requires === +cpanm : # +cpanm : # Module Want Have +cpanm : # ------------------- ---- -------- +cpanm : # ExtUtils::MakeMaker any 7.38 +cpanm : # File::Spec any 3.78 +cpanm : # Test::More any 1.302168 +cpanm : # if any 0.0608 +cpanm : # +cpanm : # === Test Recommends === +cpanm : # +cpanm : # Module Want Have +cpanm : # ---------- -------- -------- +cpanm : # CPAN::Meta 2.120900 2.150010 +cpanm : # +cpanm : # === Test Suggests === +cpanm : # +cpanm : # Module Want Have +cpanm : # ------------------------ ----- ------- +cpanm : # CPAN::Meta::Check 0.011 missing +cpanm : # CPAN::Meta::Requirements any 2.140 +cpanm : # Capture::Tiny 0.12 missing +cpanm : # +cpanm : # === Runtime Requires === +cpanm : # +cpanm : # Module Want Have +cpanm : # -------- ---- ---- +cpanm : # Carp any 1.50 +cpanm : # Exporter 5.57 5.74 +cpanm : # constant any 1.33 +cpanm : # strict any 1.11 +cpanm : # warnings any 1.45 +cpanm : # +cpanm : # === Runtime Suggests === +cpanm : # +cpanm : # Module Want Have +cpanm : # --------- ---- ------- +cpanm : # Sub::Name 0.08 missing +cpanm : # Sub::Util any 1.52 +cpanm : # +cpanm : # === Other Modules === +cpanm : # +cpanm : # Module Have +cpanm : # ------------- ------- +cpanm : # JSON::PP 4.04 +cpanm : # Pod::Coverage missing +cpanm : # Sub::Name missing +cpanm : # YAML missing +cpanm : # autodie 2.29 +cpanm : # +cpanm : t/00-report-prereqs.t .......... ok +cpanm : t/basic.t ...................... ok +cpanm : t/context.t .................... ok +cpanm : t/erroneous_usage.t ............ ok +cpanm : t/finally.t .................... ok +cpanm : t/given_when.t ................. skipped: Tests skipped on perl 5.27.7+, pending resolution of smartmatch changes +cpanm : t/global_destruction_forked.t .. ok +cpanm : t/global_destruction_load.t .... skipped: Capture::Tiny 0.12 required +cpanm : t/named.t ...................... ok +cpanm : t/when.t ....................... skipped: Tests skipped on perl 5.27.7+, pending resolution of smartmatch changes +cpanm : t/zzz-check-breaks.t ........... ok cpanm : All tests successful. -cpanm : Files=7, Tests=44, 1 wallclock secs ( 0.04 usr 0.01 sys + 0.55 cusr 0.07 csys = 0.67 CPU) +cpanm : Files=11, Tests=97, 1 wallclock secs ( 0.07 usr 0.01 sys + 0.82 cusr 0.12 csys = 1.02 CPU) cpanm : Result: PASS -cpanm : Installing /home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/site_perl/5.31.5/Test/utf8.pm +cpanm : Installing /home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/site_perl/5.31.5/Try/Tiny.pm cpanm : Appending installation info to /home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/5.31.5/x86_64-linux-thread-multi/perllocal.pod cpanm : OK -cpanm : Successfully installed Test-utf8-1.01 -cpanm : Installing /home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/site_perl/5.31.5/x86_64-linux-thread-multi/.meta/Test-utf8-1.01/MYMETA.json -cpanm : Installing /home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/site_perl/5.31.5/x86_64-linux-thread-multi/.meta/Test-utf8-1.01/install.json -cpanm : Building and testing Test-File-1.443 ... cp lib/Test/File.pm blib/lib/Test/File.pm +cpanm : Successfully installed Try-Tiny-0.30 +cpanm : Installing /home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/site_perl/5.31.5/x86_64-linux-thread-multi/.meta/Try-Tiny-0.30/MYMETA.json +cpanm : Installing /home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/site_perl/5.31.5/x86_64-linux-thread-multi/.meta/Try-Tiny-0.30/install.json +cpanm : Building and testing Test-Fatal-0.014 ... cp lib/Test/Fatal.pm blib/lib/Test/Fatal.pm cpanm : PERL_DL_NONLAZY=1 "/home/binary_c/perl5/perlbrew/perls/perl-5.31.5/bin/perl5.31.5" "-MExtUtils::Command::MM" "-MTest::Harness" "-e" "undef *Test::Harness::Switches; test_harness(0, 'blib/lib', 'blib/arch')" t/*.t -cpanm : # MSWin32 -cpanm : # Looks like you planned 0 tests but ran 2. -cpanm : # Looks like you planned 0 tests but ran 2. -cpanm : t/dm_skeleton.t ............... ok -cpanm : t/file_contains.t ............. ok -cpanm : t/file_contains_encoded.t ..... ok -cpanm : t/file_contains_utf8.t ........ ok -cpanm : t/file_mtime.t ................ ok -cpanm : # Looks like you planned 0 tests but ran 5. -cpanm : # Looks like you planned 0 tests but ran 7. -cpanm : # Looks like you planned 0 tests but ran 6. -cpanm : t/file_sizes.t ................ ok -cpanm : # Looks like you planned 0 tests but ran 5. -cpanm : # Looks like you planned 0 tests but ran 6. -cpanm : # Looks like you planned 0 tests but ran 4. -cpanm : # Looks like you planned 0 tests but ran 4. -cpanm : t/line_counters.t ............. ok -cpanm : # Looks like you planned 0 tests but ran 2. -cpanm : # Looks like you planned 0 tests but ran 3. -cpanm : t/link_counts.t ............... ok -cpanm : # Looks like you planned 0 tests but ran 8. -cpanm : # Looks like you planned 0 tests but ran 12. -cpanm : # Looks like you planned 0 tests but ran 7. -cpanm : # Looks like you planned 0 tests but ran 2. -cpanm : # Looks like you planned 0 tests but ran 1. -cpanm : # Looks like you planned 0 tests but ran 1. -cpanm : t/links.t ..................... ok -cpanm : t/load.t ...................... ok -cpanm : t/normalize.t ................. ok -cpanm : t/obviously_non_multi_user.t .. ok -cpanm : t/owner.t ..................... ok -cpanm : t/pod.t ....................... skipped: Test::Pod 1.00 required for testing POD -cpanm : t/pod_coverage.t .............. skipped: Test::Pod::Coverage required for testing POD -cpanm : t/test_dirs.t ................. ok -cpanm : t/test_files.t ................ ok -cpanm : # Looks like you planned 0 tests but ran 4. -cpanm : t/win32.t ..................... ok +cpanm : # +cpanm : # Versions for all modules listed in MYMETA.json (including optional ones): +cpanm : # +cpanm : # === Configure Requires === +cpanm : # +cpanm : # Module Want Have +cpanm : # ------------------- ---- ---- +cpanm : # ExtUtils::MakeMaker any 7.38 +cpanm : # +cpanm : # === Build Requires === +cpanm : # +cpanm : # Module Want Have +cpanm : # ------------------- ---- ---- +cpanm : # ExtUtils::MakeMaker any 7.38 +cpanm : # +cpanm : # === Test Requires === +cpanm : # +cpanm : # Module Want Have +cpanm : # --------------------- ---- -------- +cpanm : # ExtUtils::MakeMaker any 7.38 +cpanm : # File::Spec any 3.78 +cpanm : # Test::Builder::Tester any 1.302168 +cpanm : # Test::More 0.96 1.302168 +cpanm : # overload any 1.31 +cpanm : # +cpanm : # === Test Recommends === +cpanm : # +cpanm : # Module Want Have +cpanm : # ---------- -------- -------- +cpanm : # CPAN::Meta 2.120900 2.150010 +cpanm : # +cpanm : # === Runtime Requires === +cpanm : # +cpanm : # Module Want Have +cpanm : # ------------- ---- -------- +cpanm : # Carp any 1.50 +cpanm : # Exporter 5.57 5.74 +cpanm : # Test::Builder any 1.302168 +cpanm : # Try::Tiny 0.07 0.30 +cpanm : # strict any 1.11 +cpanm : # warnings any 1.45 +cpanm : # +cpanm : t/00-report-prereqs.t .. ok +cpanm : t/basic.t .............. ok +cpanm : t/like-exception.t ..... ok +cpanm : t/todo.t ............... ok cpanm : All tests successful. -cpanm : Files=18, Tests=189, 2 wallclock secs ( 0.13 usr 0.02 sys + 1.64 cusr 0.17 csys = 1.96 CPU) +cpanm : Files=4, Tests=16, 0 wallclock secs ( 0.03 usr 0.01 sys + 0.37 cusr 0.04 csys = 0.45 CPU) cpanm : Result: PASS -cpanm : Installing /home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/site_perl/5.31.5/Test/File.pm +cpanm : Installing /home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/site_perl/5.31.5/Test/Fatal.pm cpanm : Appending installation info to /home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/5.31.5/x86_64-linux-thread-multi/perllocal.pod cpanm : OK -cpanm : Successfully installed Test-File-1.443 -cpanm : Installing /home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/site_perl/5.31.5/x86_64-linux-thread-multi/.meta/Test-File-1.443/MYMETA.json -cpanm : Installing /home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/site_perl/5.31.5/x86_64-linux-thread-multi/.meta/Test-File-1.443/install.json +cpanm : Successfully installed Test-Fatal-0.014 +cpanm : Installing /home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/site_perl/5.31.5/x86_64-linux-thread-multi/.meta/Test-Fatal-0.014/MYMETA.json +cpanm : Installing /home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/site_perl/5.31.5/x86_64-linux-thread-multi/.meta/Test-Fatal-0.014/install.json cpanm : Building and testing File-Copy-Recursive-0.45 ... cp lib/File/Copy/Recursive.pm blib/lib/File/Copy/Recursive.pm cpanm : PERL_DL_NONLAZY=1 "/home/binary_c/perl5/perlbrew/perls/perl-5.31.5/bin/perl5.31.5" "-MExtUtils::Command::MM" "-MTest::Harness" "-e" "undef *Test::Harness::Switches; test_harness(0, 'blib/lib', 'blib/arch')" t/*.t cpanm : t/00.load.t ............... ok @@ -6439,7 +4754,7 @@ cpanm : t/03.github-issue-5.t ..... ok cpanm : t/04.readonly-dir.t ....... ok cpanm : t/05.legacy-pathmk_unc.t .. skipped: Test irrelevant on non-windows OSs cpanm : All tests successful. -cpanm : Files=6, Tests=157, 1 wallclock secs ( 0.06 usr 0.01 sys + 0.89 cusr 0.39 csys = 1.35 CPU) +cpanm : Files=6, Tests=157, 1 wallclock secs ( 0.07 usr 0.00 sys + 0.88 cusr 0.41 csys = 1.36 CPU) cpanm : Result: PASS cpanm : Installing /home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/site_perl/5.31.5/File/Copy/Recursive.pm cpanm : Appending installation info to /home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/5.31.5/x86_64-linux-thread-multi/perllocal.pod @@ -6447,182 +4762,20 @@ cpanm : OK cpanm : Successfully installed File-Copy-Recursive-0.45 cpanm : Installing /home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/site_perl/5.31.5/x86_64-linux-thread-multi/.meta/File-Copy-Recursive-0.45/MYMETA.json cpanm : Installing /home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/site_perl/5.31.5/x86_64-linux-thread-multi/.meta/File-Copy-Recursive-0.45/install.json -cpanm : Searching Parse::RecDescent (1.967009) on cpanmetadb ... -cpanm : --2019-11-11 18:08:53-- http://cpanmetadb.plackperl.org/v1.0/package/Parse::RecDescent -cpanm : Resolving cpanmetadb.plackperl.org (cpanmetadb.plackperl.org)... 151.101.18.217 -cpanm : Connecting to cpanmetadb.plackperl.org (cpanmetadb.plackperl.org)|151.101.18.217|:80... connected. -cpanm : HTTP request sent, awaiting response... 200 OK -cpanm : Length: 805 [text/yaml] -cpanm : Saving to: 'STDOUT' -cpanm : -cpanm : 0K 100% 82.3M=0s -cpanm : -cpanm : 2019-11-11 18:08:53 (82.3 MB/s) - written to stdout [805/805] -cpanm : -cpanm : --> Working on Parse::RecDescent -cpanm : Fetching http://www.cpan.org/authors/id/J/JT/JTBRAUN/Parse-RecDescent-1.967015.tar.gz ... --2019-11-11 18:08:53-- http://www.cpan.org/authors/id/J/JT/JTBRAUN/Parse-RecDescent-1.967015.tar.gz -cpanm : Resolving www.cpan.org (www.cpan.org)... 151.101.18.217 -cpanm : Connecting to www.cpan.org (www.cpan.org)|151.101.18.217|:80... connected. -cpanm : HTTP request sent, awaiting response... 200 OK -cpanm : Length: 176996 (173K) [application/x-gzip] -cpanm : Saving to: 'Parse-RecDescent-1.967015.tar.gz' -cpanm : -cpanm : 0K .......... .......... .......... .......... .......... 28% 1.10M 0s -cpanm : 50K .......... .......... .......... .......... .......... 57% 2.00M 0s -cpanm : 100K .......... .......... .......... .......... .......... 86% 92.0M 0s -cpanm : 150K .......... .......... .. 100% 126M=0.07s -cpanm : -cpanm : 2019-11-11 18:08:53 (2.43 MB/s) - 'Parse-RecDescent-1.967015.tar.gz' saved [176996/176996] -cpanm : -cpanm : Unpacking Parse-RecDescent-1.967015.tar.gz -cpanm : OK -cpanm : Parse-RecDescent-1.967015/ -cpanm : Parse-RecDescent-1.967015/Changes -cpanm : Parse-RecDescent-1.967015/demo/ -cpanm : Parse-RecDescent-1.967015/demo/demo_dot.pl -cpanm : Parse-RecDescent-1.967015/demo/demo_LaTeXish.pl -cpanm : Parse-RecDescent-1.967015/demo/demo_parsetree.pl -cpanm : Parse-RecDescent-1.967015/demo/demo_separators.pl -cpanm : Parse-RecDescent-1.967015/demo/demo_metaRD.pm -cpanm : Parse-RecDescent-1.967015/demo/demo_restructure_easy.pl -cpanm : Parse-RecDescent-1.967015/demo/demo_OOautoparsetree.pl -cpanm : Parse-RecDescent-1.967015/demo/demo_logic.pl -cpanm : Parse-RecDescent-1.967015/demo/demo_selfmod.pl -cpanm : Parse-RecDescent-1.967015/demo/demo_undumper.pl -cpanm : Parse-RecDescent-1.967015/demo/demo_quicklist.pl -cpanm : Parse-RecDescent-1.967015/demo/demo_mccoy.pl -cpanm : Parse-RecDescent-1.967015/demo/demo_autoscoresep.pl -cpanm : Parse-RecDescent-1.967015/demo/demo.pl -cpanm : Parse-RecDescent-1.967015/demo/demo_lisplike.pl -cpanm : Parse-RecDescent-1.967015/demo/demo_derived.pl -cpanm : Parse-RecDescent-1.967015/demo/demo_skipcomment.pl -cpanm : Parse-RecDescent-1.967015/demo/demo_buildcalc.pl -cpanm : Parse-RecDescent-1.967015/demo/demo_recipe.pl -cpanm : Parse-RecDescent-1.967015/demo/demo_piecewise.pl -cpanm : Parse-RecDescent-1.967015/demo/demo_simplequery.pl -cpanm : Parse-RecDescent-1.967015/demo/demo_language.pl -cpanm : Parse-RecDescent-1.967015/demo/demo_PerlCSV.pl -cpanm : Parse-RecDescent-1.967015/demo/demo_implicit.pl -cpanm : Parse-RecDescent-1.967015/demo/demo_decomment.pl -cpanm : Parse-RecDescent-1.967015/demo/demo_autostub.pl -cpanm : Parse-RecDescent-1.967015/demo/demo_eval.pl -cpanm : Parse-RecDescent-1.967015/demo/demo_LaTeXish_autoact.pl -cpanm : Parse-RecDescent-1.967015/demo/demo_perlparsing.pl -cpanm : Parse-RecDescent-1.967015/demo/demo_leftop.pl -cpanm : Parse-RecDescent-1.967015/demo/demo_NL2SQL.pl -cpanm : Parse-RecDescent-1.967015/demo/demo_decomment_nonlocal.pl -cpanm : Parse-RecDescent-1.967015/demo/demo_precalc.pl -cpanm : Parse-RecDescent-1.967015/demo/demo_cpp.pl -cpanm : Parse-RecDescent-1.967015/demo/demo_simple.pl -cpanm : Parse-RecDescent-1.967015/demo/demo_matchrule2.pl -cpanm : Parse-RecDescent-1.967015/demo/demo_embedding.pl -cpanm : Parse-RecDescent-1.967015/demo/demo_errors.pl -cpanm : Parse-RecDescent-1.967015/demo/demo_delete.pl -cpanm : Parse-RecDescent-1.967015/demo/demo.c -cpanm : Parse-RecDescent-1.967015/demo/demo_another_Cgrammar.pl -cpanm : Parse-RecDescent-1.967015/demo/demo_whoson.pl -cpanm : Parse-RecDescent-1.967015/demo/demo_tokens.pl -cpanm : Parse-RecDescent-1.967015/demo/demo_codeblock.pl -cpanm : Parse-RecDescent-1.967015/demo/demo_textgen.pl -cpanm : Parse-RecDescent-1.967015/demo/demo_Cgrammar_v2.pl -cpanm : Parse-RecDescent-1.967015/demo/demo_methods.pl -cpanm : Parse-RecDescent-1.967015/demo/demo_Cgrammar.pl -cpanm : Parse-RecDescent-1.967015/demo/demo_simpleXML.pl -cpanm : Parse-RecDescent-1.967015/demo/demo_street.pl -cpanm : Parse-RecDescent-1.967015/demo/demo_bad.pl -cpanm : Parse-RecDescent-1.967015/demo/demo_opreps.pl -cpanm : Parse-RecDescent-1.967015/demo/demo_arithmetic.pl -cpanm : Parse-RecDescent-1.967015/demo/demo_restructure_painful.pl -cpanm : Parse-RecDescent-1.967015/demo/demo_itemhash.pl -cpanm : Parse-RecDescent-1.967015/demo/demo_autorule.pl -cpanm : Parse-RecDescent-1.967015/demo/demo_calc.pl -cpanm : Parse-RecDescent-1.967015/demo/demo_scoredsep.pl -cpanm : Parse-RecDescent-1.967015/demo/demo_operator.pl -cpanm : Parse-RecDescent-1.967015/demo/demo_leftassoc.pl -cpanm : Parse-RecDescent-1.967015/demo/demo_template.pl -cpanm : Parse-RecDescent-1.967015/demo/demo_randomsentence.pl -cpanm : Parse-RecDescent-1.967015/demo/demo_lexer.pl -cpanm : Parse-RecDescent-1.967015/demo/demo_matchrule.pl -cpanm : Parse-RecDescent-1.967015/demo/demo_OOparsetree.pl -cpanm : Parse-RecDescent-1.967015/Makefile.PL -cpanm : Parse-RecDescent-1.967015/MANIFEST -cpanm : Parse-RecDescent-1.967015/lib/ -cpanm : Parse-RecDescent-1.967015/lib/Parse/ -cpanm : Parse-RecDescent-1.967015/lib/Parse/RecDescent.pm -cpanm : Parse-RecDescent-1.967015/README -cpanm : Parse-RecDescent-1.967015/Build.PL -cpanm : Parse-RecDescent-1.967015/META.json -cpanm : Parse-RecDescent-1.967015/tutorial/ -cpanm : Parse-RecDescent-1.967015/tutorial/TPJ_maze.gif -cpanm : Parse-RecDescent-1.967015/tutorial/TPJ-yacc-proc.gif -cpanm : Parse-RecDescent-1.967015/tutorial/TPJ_tree.gif -cpanm : Parse-RecDescent-1.967015/tutorial/TPJ-PRD-proc.gif -cpanm : Parse-RecDescent-1.967015/tutorial/tutorial.html -cpanm : Parse-RecDescent-1.967015/t/ -cpanm : Parse-RecDescent-1.967015/t/00.load.t -cpanm : Parse-RecDescent-1.967015/t/reproducible.t -cpanm : Parse-RecDescent-1.967015/t/reentry.t -cpanm : Parse-RecDescent-1.967015/t/precompile.t -cpanm : Parse-RecDescent-1.967015/t/skip.t -cpanm : Parse-RecDescent-1.967015/t/separated_repetition.t -cpanm : Parse-RecDescent-1.967015/t/pod.t -cpanm : Parse-RecDescent-1.967015/t/leftop_cap.t -cpanm : Parse-RecDescent-1.967015/t/text.t -cpanm : Parse-RecDescent-1.967015/t/util.pl -cpanm : Parse-RecDescent-1.967015/t/01.basics.t -cpanm : Parse-RecDescent-1.967015/t/autotree.t -cpanm : Parse-RecDescent-1.967015/t/re_capture_return.t -cpanm : Parse-RecDescent-1.967015/t/skip_dynamic.t -cpanm : Parse-RecDescent-1.967015/META.yml -cpanm : Parse-RecDescent-1.967015/ToDo -cpanm : Entering Parse-RecDescent-1.967015 -cpanm : Checking configure dependencies from META.json -cpanm : Checking if you have ExtUtils::MakeMaker 6.58 ... Yes (7.38) -cpanm : Running Build.PL -cpanm : Configuring Parse-RecDescent-1.967015 ... Created MYMETA.yml and MYMETA.json -cpanm : Creating new 'Build' script for 'Parse-RecDescent' version '1.967015' -cpanm : Checking dependencies from MYMETA.json ... -cpanm : Checking if you have Text::Balanced 1.95 ... Yes (2.03) -cpanm : Checking if you have Test::More 0 ... Yes (1.302168) -cpanm : OK -cpanm : Building and testing Parse-RecDescent-1.967015 ... Building Parse-RecDescent -cpanm : # Testing Parse::RecDescent 1.967015 -cpanm : t/00.load.t ............... ok -cpanm : t/01.basics.t ............. ok -cpanm : t/autotree.t .............. ok -cpanm : t/leftop_cap.t ............ ok -cpanm : t/pod.t ................... skipped: Test::Pod 1.14 required for testing POD -cpanm : t/precompile.t ............ ok -cpanm : t/re_capture_return.t ..... ok -cpanm : t/reentry.t ............... ok -cpanm : t/reproducible.t .......... ok -cpanm : t/separated_repetition.t .. ok -cpanm : t/skip.t .................. ok -cpanm : t/skip_dynamic.t .......... ok -cpanm : t/text.t .................. ok -cpanm : All tests successful. -cpanm : Files=13, Tests=138, 2 wallclock secs ( 0.07 usr 0.03 sys + 1.77 cusr 0.17 csys = 2.04 CPU) -cpanm : Result: PASS -cpanm : Building Parse-RecDescent -cpanm : Installing /home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/site_perl/5.31.5/Parse/RecDescent.pm -cpanm : OK -cpanm : Successfully installed Parse-RecDescent-1.967015 -cpanm : Installing /home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/site_perl/5.31.5/x86_64-linux-thread-multi/.meta/Parse-RecDescent-1.967015/MYMETA.json -cpanm : Installing /home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/site_perl/5.31.5/x86_64-linux-thread-multi/.meta/Parse-RecDescent-1.967015/install.json cpanm : Searching Pegex (0.66) on cpanmetadb ... -cpanm : --2019-11-11 18:08:56-- http://cpanmetadb.plackperl.org/v1.0/package/Pegex +cpanm : --2019-11-11 18:41:57-- http://cpanmetadb.plackperl.org/v1.0/package/Pegex cpanm : Resolving cpanmetadb.plackperl.org (cpanmetadb.plackperl.org)... 151.101.18.217 cpanm : Connecting to cpanmetadb.plackperl.org (cpanmetadb.plackperl.org)|151.101.18.217|:80... connected. cpanm : HTTP request sent, awaiting response... 200 OK cpanm : Length: 510 [text/yaml] cpanm : Saving to: 'STDOUT' cpanm : -cpanm : 0K 100% 38.0M=0s +cpanm : 0K 100% 35.3M=0s cpanm : -cpanm : 2019-11-11 18:08:56 (38.0 MB/s) - written to stdout [510/510] +cpanm : 2019-11-11 18:41:57 (35.3 MB/s) - written to stdout [510/510] cpanm : cpanm : --> Working on Pegex -cpanm : Fetching http://www.cpan.org/authors/id/I/IN/INGY/Pegex-0.70.tar.gz ... --2019-11-11 18:08:56-- http://www.cpan.org/authors/id/I/IN/INGY/Pegex-0.70.tar.gz +cpanm : Fetching http://www.cpan.org/authors/id/I/IN/INGY/Pegex-0.70.tar.gz ... --2019-11-11 18:41:57-- http://www.cpan.org/authors/id/I/IN/INGY/Pegex-0.70.tar.gz cpanm : Resolving www.cpan.org (www.cpan.org)... 151.101.18.217 cpanm : Connecting to www.cpan.org (www.cpan.org)|151.101.18.217|:80... connected. cpanm : HTTP request sent, awaiting response... 200 OK @@ -6630,10 +4783,10 @@ cpanm : Length: 147249 (144K) [application/x-gzip] cpanm : Saving to: 'Pegex-0.70.tar.gz' cpanm : cpanm : 0K .......... .......... .......... .......... .......... 34% 1.26M 0s -cpanm : 50K .......... .......... .......... .......... .......... 69% 1.78M 0s -cpanm : 100K .......... .......... .......... .......... ... 100% 99.5M=0.07s +cpanm : 50K .......... .......... .......... .......... .......... 69% 1.77M 0s +cpanm : 100K .......... .......... .......... .......... ... 100% 119M=0.07s cpanm : -cpanm : 2019-11-11 18:08:56 (2.11 MB/s) - 'Pegex-0.70.tar.gz' saved [147249/147249] +cpanm : 2019-11-11 18:41:57 (2.11 MB/s) - 'Pegex-0.70.tar.gz' saved [147249/147249] cpanm : cpanm : Unpacking Pegex-0.70.tar.gz cpanm : OK @@ -6773,8 +4926,8 @@ cpanm : Pegex-0.70/inc/t/compiler-equivalence.tml.json cpanm : Pegex-0.70/example/calculator/lib/Precedence.pm cpanm : Entering Pegex-0.70 cpanm : Checking configure dependencies from META.json -cpanm : Checking if you have File::ShareDir::Install 0.06 ... Yes (0.13) cpanm : Checking if you have ExtUtils::MakeMaker 6.58 ... Yes (7.38) +cpanm : Checking if you have File::ShareDir::Install 0.06 ... Yes (0.13) cpanm : Running Makefile.PL cpanm : Configuring Pegex-0.70 ... Warning: prerequisite YAML::XS 0.74 not found. cpanm : Checking if your kit is complete... @@ -6784,36 +4937,36 @@ cpanm : Writing Makefile for Pegex cpanm : Writing MYMETA.yml and MYMETA.json cpanm : Checking dependencies from MYMETA.json ... cpanm : Checking if you have Scalar::Util 0 ... Yes (1.52) -cpanm : Checking if you have ExtUtils::MakeMaker 0 ... Yes (7.38) -cpanm : Checking if you have YAML::XS 0.74 ... No cpanm : Checking if you have JSON::PP 0 ... Yes (4.04) +cpanm : Checking if you have YAML::XS 0.74 ... No +cpanm : Checking if you have ExtUtils::MakeMaker 0 ... Yes (7.38) cpanm : Searching YAML::XS (0.74) on cpanmetadb ... cpanm : OK cpanm : ==> Found dependencies: YAML::XS -cpanm : --2019-11-11 18:08:57-- http://cpanmetadb.plackperl.org/v1.0/package/YAML::XS +cpanm : --2019-11-11 18:41:58-- http://cpanmetadb.plackperl.org/v1.0/package/YAML::XS cpanm : Resolving cpanmetadb.plackperl.org (cpanmetadb.plackperl.org)... 151.101.18.217 cpanm : Connecting to cpanmetadb.plackperl.org (cpanmetadb.plackperl.org)|151.101.18.217|:80... connected. cpanm : HTTP request sent, awaiting response... 200 OK cpanm : Length: 141 [text/yaml] cpanm : Saving to: 'STDOUT' cpanm : -cpanm : 0K 100% 17.8M=0s +cpanm : 0K 100% 10.5M=0s cpanm : -cpanm : 2019-11-11 18:08:57 (17.8 MB/s) - written to stdout [141/141] +cpanm : 2019-11-11 18:41:58 (10.5 MB/s) - written to stdout [141/141] cpanm : cpanm : --> Working on YAML::XS -cpanm : Fetching http://www.cpan.org/authors/id/T/TI/TINITA/YAML-LibYAML-0.80.tar.gz ... --2019-11-11 18:08:57-- http://www.cpan.org/authors/id/T/TI/TINITA/YAML-LibYAML-0.80.tar.gz +cpanm : Fetching http://www.cpan.org/authors/id/T/TI/TINITA/YAML-LibYAML-0.80.tar.gz ... --2019-11-11 18:41:58-- http://www.cpan.org/authors/id/T/TI/TINITA/YAML-LibYAML-0.80.tar.gz cpanm : Resolving www.cpan.org (www.cpan.org)... 151.101.18.217 cpanm : Connecting to www.cpan.org (www.cpan.org)|151.101.18.217|:80... connected. cpanm : HTTP request sent, awaiting response... 200 OK cpanm : Length: 150024 (147K) [application/x-gzip] cpanm : Saving to: 'YAML-LibYAML-0.80.tar.gz' cpanm : -cpanm : 0K .......... .......... .......... .......... .......... 34% 1.17M 0s -cpanm : 50K .......... .......... .......... .......... .......... 68% 1.26M 0s -cpanm : 100K .......... .......... .......... .......... ...... 100% 77.5M=0.08s +cpanm : 0K .......... .......... .......... .......... .......... 34% 1.18M 0s +cpanm : 50K .......... .......... .......... .......... .......... 68% 1.24M 0s +cpanm : 100K .......... .......... .......... .......... ...... 100% 123M=0.08s cpanm : -cpanm : 2019-11-11 18:08:57 (1.76 MB/s) - 'YAML-LibYAML-0.80.tar.gz' saved [150024/150024] +cpanm : 2019-11-11 18:41:58 (1.76 MB/s) - 'YAML-LibYAML-0.80.tar.gz' saved [150024/150024] cpanm : cpanm : Unpacking YAML-LibYAML-0.80.tar.gz cpanm : OK @@ -6921,14 +5074,14 @@ cpanm : Generating a Unix-style Makefile cpanm : Writing Makefile for YAML::LibYAML cpanm : Writing MYMETA.yml and MYMETA.json cpanm : Checking dependencies from MYMETA.json ... -cpanm : Checking if you have ExtUtils::MakeMaker 0 ... Yes (7.38) cpanm : Checking if you have Test::More 0.88 ... Yes (1.302168) +cpanm : Checking if you have ExtUtils::MakeMaker 0 ... Yes (7.38) cpanm : OK -cpanm : Building and testing YAML-LibYAML-0.80 ... cp lib/YAML/LibYAML.pod blib/lib/YAML/LibYAML.pod -cpanm : cp lib/YAML/XS.pod blib/lib/YAML/XS.pod +cpanm : Building and testing YAML-LibYAML-0.80 ... cp lib/YAML/XS.pod blib/lib/YAML/XS.pod +cpanm : cp lib/YAML/LibYAML.pod blib/lib/YAML/LibYAML.pod cpanm : cp lib/YAML/LibYAML.pm blib/lib/YAML/LibYAML.pm cpanm : cp lib/YAML/XS.pm blib/lib/YAML/XS.pm -cpanm : make[1]: Entering directory '/home/binary_c/.cpanm/work/1573495707.3722/YAML-LibYAML-0.80/LibYAML' +cpanm : make[1]: Entering directory '/home/binary_c/.cpanm/work/1573497691.3722/YAML-LibYAML-0.80/LibYAML' cpanm : cp lib/YAML/XS/LibYAML.pm ../blib/lib/YAML/XS/LibYAML.pm cpanm : Running Mkbootstrap for LibYAML () cpanm : chmod 644 "LibYAML.bs" @@ -6950,16 +5103,16 @@ cpanm : cc -shared -O2 -mtune=generic -march=x86-64 -L/usr/local/lib -fstack-pr cpanm : \ cpanm : cpanm : chmod 755 ../blib/arch/auto/YAML/XS/LibYAML/LibYAML.so -cpanm : make[1]: Leaving directory '/home/binary_c/.cpanm/work/1573495707.3722/YAML-LibYAML-0.80/LibYAML' -cpanm : make[1]: Entering directory '/home/binary_c/.cpanm/work/1573495707.3722/YAML-LibYAML-0.80/LibYAML' +cpanm : make[1]: Leaving directory '/home/binary_c/.cpanm/work/1573497691.3722/YAML-LibYAML-0.80/LibYAML' +cpanm : make[1]: Entering directory '/home/binary_c/.cpanm/work/1573497691.3722/YAML-LibYAML-0.80/LibYAML' cpanm : "/home/binary_c/perl5/perlbrew/perls/perl-5.31.5/bin/perl5.31.5" -MExtUtils::Command::MM -e 'cp_nonempty' -- LibYAML.bs ../blib/arch/auto/YAML/XS/LibYAML/LibYAML.bs 644 -cpanm : make[1]: Leaving directory '/home/binary_c/.cpanm/work/1573495707.3722/YAML-LibYAML-0.80/LibYAML' -cpanm : make[1]: Entering directory '/home/binary_c/.cpanm/work/1573495707.3722/YAML-LibYAML-0.80/LibYAML' +cpanm : make[1]: Leaving directory '/home/binary_c/.cpanm/work/1573497691.3722/YAML-LibYAML-0.80/LibYAML' +cpanm : make[1]: Entering directory '/home/binary_c/.cpanm/work/1573497691.3722/YAML-LibYAML-0.80/LibYAML' cpanm : "/home/binary_c/perl5/perlbrew/perls/perl-5.31.5/bin/perl5.31.5" -MExtUtils::Command::MM -e 'cp_nonempty' -- LibYAML.bs ../blib/arch/auto/YAML/XS/LibYAML/LibYAML.bs 644 cpanm : PERL_DL_NONLAZY=1 "/home/binary_c/perl5/perlbrew/perls/perl-5.31.5/bin/perl5.31.5" "-I../blib/lib" "-I../blib/arch" test.pl cpanm : 1..1 cpanm : ok 1 - Tests for libyaml extension are all defined at the top level -cpanm : make[1]: Leaving directory '/home/binary_c/.cpanm/work/1573495707.3722/YAML-LibYAML-0.80/LibYAML' +cpanm : make[1]: Leaving directory '/home/binary_c/.cpanm/work/1573497691.3722/YAML-LibYAML-0.80/LibYAML' cpanm : PERL_DL_NONLAZY=1 "/home/binary_c/perl5/perlbrew/perls/perl-5.31.5/bin/perl5.31.5" "-MExtUtils::Command::MM" "-MTest::Harness" "-e" "undef *Test::Harness::Switches; test_harness(0, 'blib/lib', 'blib/arch')" t/*.t cpanm : t/000-require-modules.t .. ok cpanm : t/alias.t ................ ok @@ -7007,11 +5160,11 @@ cpanm : t/tags.t ................. ok cpanm : t/tied.t ................. ok cpanm : t/utf8.t ................. ok cpanm : All tests successful. -cpanm : Files=44, Tests=356, 5 wallclock secs ( 0.19 usr 0.07 sys + 3.68 cusr 0.49 csys = 4.43 CPU) +cpanm : Files=44, Tests=356, 4 wallclock secs ( 0.20 usr 0.07 sys + 3.72 cusr 0.45 csys = 4.44 CPU) cpanm : Result: PASS -cpanm : make[1]: Entering directory '/home/binary_c/.cpanm/work/1573495707.3722/YAML-LibYAML-0.80/LibYAML' +cpanm : make[1]: Entering directory '/home/binary_c/.cpanm/work/1573497691.3722/YAML-LibYAML-0.80/LibYAML' cpanm : "/home/binary_c/perl5/perlbrew/perls/perl-5.31.5/bin/perl5.31.5" -MExtUtils::Command::MM -e 'cp_nonempty' -- LibYAML.bs ../blib/arch/auto/YAML/XS/LibYAML/LibYAML.bs 644 -cpanm : make[1]: Leaving directory '/home/binary_c/.cpanm/work/1573495707.3722/YAML-LibYAML-0.80/LibYAML' +cpanm : make[1]: Leaving directory '/home/binary_c/.cpanm/work/1573497691.3722/YAML-LibYAML-0.80/LibYAML' cpanm : Files found in blib/arch: installing files in blib/lib into architecture dependent library tree cpanm : Installing /home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/site_perl/5.31.5/x86_64-linux-thread-multi/auto/YAML/XS/LibYAML/LibYAML.so cpanm : Installing /home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/site_perl/5.31.5/x86_64-linux-thread-multi/YAML/LibYAML.pod @@ -7025,44 +5178,44 @@ cpanm : Successfully installed YAML-LibYAML-0.80 cpanm : Installing /home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/site_perl/5.31.5/x86_64-linux-thread-multi/.meta/YAML-LibYAML-0.80/MYMETA.json cpanm : Installing /home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/site_perl/5.31.5/x86_64-linux-thread-multi/.meta/YAML-LibYAML-0.80/install.json cpanm : Building and testing Pegex-0.70 ... cp share/pegex.pgx blib/lib/auto/share/dist/Pegex/pegex.pgx -cpanm : cp lib/Pegex/Bootstrap.pm blib/lib/Pegex/Bootstrap.pm -cpanm : cp lib/Pegex/Module.pm blib/lib/Pegex/Module.pm -cpanm : cp lib/Pegex/Optimizer.pm blib/lib/Pegex/Optimizer.pm -cpanm : cp lib/Pegex.pm blib/lib/Pegex.pm -cpanm : cp lib/Pegex/Tutorial/JSON.pod blib/lib/Pegex/Tutorial/JSON.pod -cpanm : cp lib/Pegex/API.pod blib/lib/Pegex/API.pod -cpanm : cp lib/Pegex/Parser.pod blib/lib/Pegex/Parser.pod -cpanm : cp lib/Pegex/Base.pm blib/lib/Pegex/Base.pm -cpanm : cp lib/Pegex/Regex.pm blib/lib/Pegex/Regex.pm -cpanm : cp lib/Pegex/Input.pm blib/lib/Pegex/Input.pm -cpanm : cp lib/Pegex/Compiler.pod blib/lib/Pegex/Compiler.pod -cpanm : cp lib/Pegex/Receiver.pod blib/lib/Pegex/Receiver.pod -cpanm : cp lib/Pegex/Tree.pm blib/lib/Pegex/Tree.pm -cpanm : cp lib/Pegex/Tutorial.pod blib/lib/Pegex/Tutorial.pod -cpanm : cp lib/Pegex/Tutorial/Calculator.pod blib/lib/Pegex/Tutorial/Calculator.pod -cpanm : cp lib/Pegex/Tree/Wrap.pm blib/lib/Pegex/Tree/Wrap.pm +cpanm : cp lib/Pegex/Tree/Wrap.pod blib/lib/Pegex/Tree/Wrap.pod cpanm : cp lib/Pegex.pod blib/lib/Pegex.pod +cpanm : cp lib/Pegex/Miscellany.pod blib/lib/Pegex/Miscellany.pod +cpanm : cp lib/Pegex/Tree/Wrap.pm blib/lib/Pegex/Tree/Wrap.pm cpanm : cp lib/Pegex/Pegex/AST.pm blib/lib/Pegex/Pegex/AST.pm -cpanm : cp lib/Pegex/Pegex/Grammar.pm blib/lib/Pegex/Pegex/Grammar.pm +cpanm : cp lib/Pegex/Tree.pm blib/lib/Pegex/Tree.pm +cpanm : cp lib/Pegex/Grammar.pm blib/lib/Pegex/Grammar.pm +cpanm : cp lib/Pegex/Tutorial.pod blib/lib/Pegex/Tutorial.pod +cpanm : cp lib/Pegex/Pegex/Grammar.pod blib/lib/Pegex/Pegex/Grammar.pod cpanm : cp lib/Pegex/Resources.pod blib/lib/Pegex/Resources.pod cpanm : cp lib/Pegex/Receiver.pm blib/lib/Pegex/Receiver.pm -cpanm : cp lib/Pegex/Miscellany.pod blib/lib/Pegex/Miscellany.pod -cpanm : cp lib/Pegex/Tree/Wrap.pod blib/lib/Pegex/Tree/Wrap.pod -cpanm : cp lib/Pegex/Module.pod blib/lib/Pegex/Module.pod +cpanm : cp lib/Pegex/Grammar/Atoms.pm blib/lib/Pegex/Grammar/Atoms.pm cpanm : cp lib/Pegex/Compiler.pm blib/lib/Pegex/Compiler.pm -cpanm : cp lib/Pegex/Syntax.pod blib/lib/Pegex/Syntax.pod -cpanm : cp lib/Pegex/Parser.pm blib/lib/Pegex/Parser.pm +cpanm : cp lib/Pegex/API.pod blib/lib/Pegex/API.pod +cpanm : cp lib/Pegex/Input.pod blib/lib/Pegex/Input.pod +cpanm : cp lib/Pegex/Regex.pod blib/lib/Pegex/Regex.pod cpanm : cp lib/Pegex/Grammar/Atoms.pod blib/lib/Pegex/Grammar/Atoms.pod +cpanm : cp lib/Pegex.pm blib/lib/Pegex.pm +cpanm : cp lib/Pegex/Module.pod blib/lib/Pegex/Module.pod +cpanm : cp lib/Pegex/Parser.pod blib/lib/Pegex/Parser.pod +cpanm : cp lib/Pegex/Parser.pm blib/lib/Pegex/Parser.pm +cpanm : cp lib/Pegex/Module.pm blib/lib/Pegex/Module.pm +cpanm : cp lib/Pegex/Tutorial/JSON.pod blib/lib/Pegex/Tutorial/JSON.pod +cpanm : cp lib/Pegex/Optimizer.pm blib/lib/Pegex/Optimizer.pm +cpanm : cp lib/Pegex/Grammar.pod blib/lib/Pegex/Grammar.pod +cpanm : cp lib/Pegex/Syntax.pod blib/lib/Pegex/Syntax.pod +cpanm : cp lib/Pegex/Compiler.pod blib/lib/Pegex/Compiler.pod cpanm : cp lib/Pegex/Tree.pod blib/lib/Pegex/Tree.pod -cpanm : cp lib/Pegex/Overview.pod blib/lib/Pegex/Overview.pod -cpanm : cp lib/Pegex/Regex.pod blib/lib/Pegex/Regex.pod -cpanm : cp lib/Pegex/Input.pod blib/lib/Pegex/Input.pod cpanm : cp lib/Pegex/Parser/Indent.pm blib/lib/Pegex/Parser/Indent.pm -cpanm : cp lib/Pegex/Grammar/Atoms.pm blib/lib/Pegex/Grammar/Atoms.pm +cpanm : cp lib/Pegex/Tutorial/Calculator.pod blib/lib/Pegex/Tutorial/Calculator.pod +cpanm : cp lib/Pegex/Pegex/Grammar.pm blib/lib/Pegex/Pegex/Grammar.pm +cpanm : cp lib/Pegex/Receiver.pod blib/lib/Pegex/Receiver.pod +cpanm : cp lib/Pegex/Overview.pod blib/lib/Pegex/Overview.pod +cpanm : cp lib/Pegex/Regex.pm blib/lib/Pegex/Regex.pm +cpanm : cp lib/Pegex/Input.pm blib/lib/Pegex/Input.pm cpanm : cp lib/Pegex/Bootstrap.pod blib/lib/Pegex/Bootstrap.pod -cpanm : cp lib/Pegex/Grammar.pm blib/lib/Pegex/Grammar.pm -cpanm : cp lib/Pegex/Grammar.pod blib/lib/Pegex/Grammar.pod -cpanm : cp lib/Pegex/Pegex/Grammar.pod blib/lib/Pegex/Pegex/Grammar.pod +cpanm : cp lib/Pegex/Base.pm blib/lib/Pegex/Base.pm +cpanm : cp lib/Pegex/Bootstrap.pm blib/lib/Pegex/Bootstrap.pm cpanm : Skip blib/lib/auto/share/dist/Pegex/pegex.pgx (unchanged) cpanm : PERL_DL_NONLAZY=1 "/home/binary_c/perl5/perlbrew/perls/perl-5.31.5/bin/perl5.31.5" "-MExtUtils::Command::MM" "-MTest::Harness" "-e" "undef *Test::Harness::Switches; test_harness(0, 'blib/lib', 'blib/arch')" t/*.t cpanm : t/000-compile-modules.t ... ok @@ -7133,7 +5286,7 @@ cpanm : t/sample.t ................ ok cpanm : t/tree-pegex.t ............ ok cpanm : t/tree.t .................. ok cpanm : All tests successful. -cpanm : Files=20, Tests=267, 2 wallclock secs ( 0.13 usr 0.03 sys + 1.82 cusr 0.21 csys = 2.19 CPU) +cpanm : Files=20, Tests=267, 2 wallclock secs ( 0.13 usr 0.03 sys + 1.83 cusr 0.21 csys = 2.20 CPU) cpanm : Result: PASS cpanm : Skip blib/lib/auto/share/dist/Pegex/pegex.pgx (unchanged) cpanm : Installing /home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/site_perl/5.31.5/Pegex.pm @@ -7180,20 +5333,182 @@ cpanm : OK cpanm : Successfully installed Pegex-0.70 cpanm : Installing /home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/site_perl/5.31.5/x86_64-linux-thread-multi/.meta/Pegex-0.70/MYMETA.json cpanm : Installing /home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/site_perl/5.31.5/x86_64-linux-thread-multi/.meta/Pegex-0.70/install.json +cpanm : Searching Parse::RecDescent (1.967009) on cpanmetadb ... +cpanm : --2019-11-11 18:42:10-- http://cpanmetadb.plackperl.org/v1.0/package/Parse::RecDescent +cpanm : Resolving cpanmetadb.plackperl.org (cpanmetadb.plackperl.org)... 151.101.18.217 +cpanm : Connecting to cpanmetadb.plackperl.org (cpanmetadb.plackperl.org)|151.101.18.217|:80... connected. +cpanm : HTTP request sent, awaiting response... 200 OK +cpanm : Length: 805 [text/yaml] +cpanm : Saving to: 'STDOUT' +cpanm : +cpanm : 0K 100% 100M=0s +cpanm : +cpanm : 2019-11-11 18:42:10 (100 MB/s) - written to stdout [805/805] +cpanm : +cpanm : --> Working on Parse::RecDescent +cpanm : Fetching http://www.cpan.org/authors/id/J/JT/JTBRAUN/Parse-RecDescent-1.967015.tar.gz ... --2019-11-11 18:42:10-- http://www.cpan.org/authors/id/J/JT/JTBRAUN/Parse-RecDescent-1.967015.tar.gz +cpanm : Resolving www.cpan.org (www.cpan.org)... 151.101.18.217 +cpanm : Connecting to www.cpan.org (www.cpan.org)|151.101.18.217|:80... connected. +cpanm : HTTP request sent, awaiting response... 200 OK +cpanm : Length: 176996 (173K) [application/x-gzip] +cpanm : Saving to: 'Parse-RecDescent-1.967015.tar.gz' +cpanm : +cpanm : 0K .......... .......... .......... .......... .......... 28% 1.09M 0s +cpanm : 50K .......... .......... .......... .......... .......... 57% 2.02M 0s +cpanm : 100K .......... .......... .......... .......... .......... 86% 65.7M 0s +cpanm : 150K .......... .......... .. 100% 125M=0.07s +cpanm : +cpanm : 2019-11-11 18:42:11 (2.41 MB/s) - 'Parse-RecDescent-1.967015.tar.gz' saved [176996/176996] +cpanm : +cpanm : Unpacking Parse-RecDescent-1.967015.tar.gz +cpanm : OK +cpanm : Parse-RecDescent-1.967015/ +cpanm : Parse-RecDescent-1.967015/Changes +cpanm : Parse-RecDescent-1.967015/demo/ +cpanm : Parse-RecDescent-1.967015/demo/demo_dot.pl +cpanm : Parse-RecDescent-1.967015/demo/demo_LaTeXish.pl +cpanm : Parse-RecDescent-1.967015/demo/demo_parsetree.pl +cpanm : Parse-RecDescent-1.967015/demo/demo_separators.pl +cpanm : Parse-RecDescent-1.967015/demo/demo_metaRD.pm +cpanm : Parse-RecDescent-1.967015/demo/demo_restructure_easy.pl +cpanm : Parse-RecDescent-1.967015/demo/demo_OOautoparsetree.pl +cpanm : Parse-RecDescent-1.967015/demo/demo_logic.pl +cpanm : Parse-RecDescent-1.967015/demo/demo_selfmod.pl +cpanm : Parse-RecDescent-1.967015/demo/demo_undumper.pl +cpanm : Parse-RecDescent-1.967015/demo/demo_quicklist.pl +cpanm : Parse-RecDescent-1.967015/demo/demo_mccoy.pl +cpanm : Parse-RecDescent-1.967015/demo/demo_autoscoresep.pl +cpanm : Parse-RecDescent-1.967015/demo/demo.pl +cpanm : Parse-RecDescent-1.967015/demo/demo_lisplike.pl +cpanm : Parse-RecDescent-1.967015/demo/demo_derived.pl +cpanm : Parse-RecDescent-1.967015/demo/demo_skipcomment.pl +cpanm : Parse-RecDescent-1.967015/demo/demo_buildcalc.pl +cpanm : Parse-RecDescent-1.967015/demo/demo_recipe.pl +cpanm : Parse-RecDescent-1.967015/demo/demo_piecewise.pl +cpanm : Parse-RecDescent-1.967015/demo/demo_simplequery.pl +cpanm : Parse-RecDescent-1.967015/demo/demo_language.pl +cpanm : Parse-RecDescent-1.967015/demo/demo_PerlCSV.pl +cpanm : Parse-RecDescent-1.967015/demo/demo_implicit.pl +cpanm : Parse-RecDescent-1.967015/demo/demo_decomment.pl +cpanm : Parse-RecDescent-1.967015/demo/demo_autostub.pl +cpanm : Parse-RecDescent-1.967015/demo/demo_eval.pl +cpanm : Parse-RecDescent-1.967015/demo/demo_LaTeXish_autoact.pl +cpanm : Parse-RecDescent-1.967015/demo/demo_perlparsing.pl +cpanm : Parse-RecDescent-1.967015/demo/demo_leftop.pl +cpanm : Parse-RecDescent-1.967015/demo/demo_NL2SQL.pl +cpanm : Parse-RecDescent-1.967015/demo/demo_decomment_nonlocal.pl +cpanm : Parse-RecDescent-1.967015/demo/demo_precalc.pl +cpanm : Parse-RecDescent-1.967015/demo/demo_cpp.pl +cpanm : Parse-RecDescent-1.967015/demo/demo_simple.pl +cpanm : Parse-RecDescent-1.967015/demo/demo_matchrule2.pl +cpanm : Parse-RecDescent-1.967015/demo/demo_embedding.pl +cpanm : Parse-RecDescent-1.967015/demo/demo_errors.pl +cpanm : Parse-RecDescent-1.967015/demo/demo_delete.pl +cpanm : Parse-RecDescent-1.967015/demo/demo.c +cpanm : Parse-RecDescent-1.967015/demo/demo_another_Cgrammar.pl +cpanm : Parse-RecDescent-1.967015/demo/demo_whoson.pl +cpanm : Parse-RecDescent-1.967015/demo/demo_tokens.pl +cpanm : Parse-RecDescent-1.967015/demo/demo_codeblock.pl +cpanm : Parse-RecDescent-1.967015/demo/demo_textgen.pl +cpanm : Parse-RecDescent-1.967015/demo/demo_Cgrammar_v2.pl +cpanm : Parse-RecDescent-1.967015/demo/demo_methods.pl +cpanm : Parse-RecDescent-1.967015/demo/demo_Cgrammar.pl +cpanm : Parse-RecDescent-1.967015/demo/demo_simpleXML.pl +cpanm : Parse-RecDescent-1.967015/demo/demo_street.pl +cpanm : Parse-RecDescent-1.967015/demo/demo_bad.pl +cpanm : Parse-RecDescent-1.967015/demo/demo_opreps.pl +cpanm : Parse-RecDescent-1.967015/demo/demo_arithmetic.pl +cpanm : Parse-RecDescent-1.967015/demo/demo_restructure_painful.pl +cpanm : Parse-RecDescent-1.967015/demo/demo_itemhash.pl +cpanm : Parse-RecDescent-1.967015/demo/demo_autorule.pl +cpanm : Parse-RecDescent-1.967015/demo/demo_calc.pl +cpanm : Parse-RecDescent-1.967015/demo/demo_scoredsep.pl +cpanm : Parse-RecDescent-1.967015/demo/demo_operator.pl +cpanm : Parse-RecDescent-1.967015/demo/demo_leftassoc.pl +cpanm : Parse-RecDescent-1.967015/demo/demo_template.pl +cpanm : Parse-RecDescent-1.967015/demo/demo_randomsentence.pl +cpanm : Parse-RecDescent-1.967015/demo/demo_lexer.pl +cpanm : Parse-RecDescent-1.967015/demo/demo_matchrule.pl +cpanm : Parse-RecDescent-1.967015/demo/demo_OOparsetree.pl +cpanm : Parse-RecDescent-1.967015/Makefile.PL +cpanm : Parse-RecDescent-1.967015/MANIFEST +cpanm : Parse-RecDescent-1.967015/lib/ +cpanm : Parse-RecDescent-1.967015/lib/Parse/ +cpanm : Parse-RecDescent-1.967015/lib/Parse/RecDescent.pm +cpanm : Parse-RecDescent-1.967015/README +cpanm : Parse-RecDescent-1.967015/Build.PL +cpanm : Parse-RecDescent-1.967015/META.json +cpanm : Parse-RecDescent-1.967015/tutorial/ +cpanm : Parse-RecDescent-1.967015/tutorial/TPJ_maze.gif +cpanm : Parse-RecDescent-1.967015/tutorial/TPJ-yacc-proc.gif +cpanm : Parse-RecDescent-1.967015/tutorial/TPJ_tree.gif +cpanm : Parse-RecDescent-1.967015/tutorial/TPJ-PRD-proc.gif +cpanm : Parse-RecDescent-1.967015/tutorial/tutorial.html +cpanm : Parse-RecDescent-1.967015/t/ +cpanm : Parse-RecDescent-1.967015/t/00.load.t +cpanm : Parse-RecDescent-1.967015/t/reproducible.t +cpanm : Parse-RecDescent-1.967015/t/reentry.t +cpanm : Parse-RecDescent-1.967015/t/precompile.t +cpanm : Parse-RecDescent-1.967015/t/skip.t +cpanm : Parse-RecDescent-1.967015/t/separated_repetition.t +cpanm : Parse-RecDescent-1.967015/t/pod.t +cpanm : Parse-RecDescent-1.967015/t/leftop_cap.t +cpanm : Parse-RecDescent-1.967015/t/text.t +cpanm : Parse-RecDescent-1.967015/t/util.pl +cpanm : Parse-RecDescent-1.967015/t/01.basics.t +cpanm : Parse-RecDescent-1.967015/t/autotree.t +cpanm : Parse-RecDescent-1.967015/t/re_capture_return.t +cpanm : Parse-RecDescent-1.967015/t/skip_dynamic.t +cpanm : Parse-RecDescent-1.967015/META.yml +cpanm : Parse-RecDescent-1.967015/ToDo +cpanm : Entering Parse-RecDescent-1.967015 +cpanm : Checking configure dependencies from META.json +cpanm : Checking if you have ExtUtils::MakeMaker 6.58 ... Yes (7.38) +cpanm : Running Build.PL +cpanm : Configuring Parse-RecDescent-1.967015 ... Created MYMETA.yml and MYMETA.json +cpanm : Creating new 'Build' script for 'Parse-RecDescent' version '1.967015' +cpanm : Checking dependencies from MYMETA.json ... +cpanm : Checking if you have Test::More 0 ... Yes (1.302168) +cpanm : Checking if you have Text::Balanced 1.95 ... Yes (2.03) +cpanm : OK +cpanm : Building and testing Parse-RecDescent-1.967015 ... Building Parse-RecDescent +cpanm : # Testing Parse::RecDescent 1.967015 +cpanm : t/00.load.t ............... ok +cpanm : t/01.basics.t ............. ok +cpanm : t/autotree.t .............. ok +cpanm : t/leftop_cap.t ............ ok +cpanm : t/pod.t ................... skipped: Test::Pod 1.14 required for testing POD +cpanm : t/precompile.t ............ ok +cpanm : t/re_capture_return.t ..... ok +cpanm : t/reentry.t ............... ok +cpanm : t/reproducible.t .......... ok +cpanm : t/separated_repetition.t .. ok +cpanm : t/skip.t .................. ok +cpanm : t/skip_dynamic.t .......... ok +cpanm : t/text.t .................. ok +cpanm : All tests successful. +cpanm : Files=13, Tests=138, 2 wallclock secs ( 0.07 usr 0.02 sys + 1.78 cusr 0.17 csys = 2.04 CPU) +cpanm : Result: PASS +cpanm : Building Parse-RecDescent +cpanm : Installing /home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/site_perl/5.31.5/Parse/RecDescent.pm +cpanm : OK +cpanm : Successfully installed Parse-RecDescent-1.967015 +cpanm : Installing /home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/site_perl/5.31.5/x86_64-linux-thread-multi/.meta/Parse-RecDescent-1.967015/MYMETA.json +cpanm : Installing /home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/site_perl/5.31.5/x86_64-linux-thread-multi/.meta/Parse-RecDescent-1.967015/install.json cpanm : Already tried YAML::XS. Skipping. cpanm : Building and testing Inline-C-0.81 ... cp share/inline-c.pgx blib/lib/auto/share/dist/Inline-C/inline-c.pgx -cpanm : cp lib/Inline/C/ParseRecDescent.pod blib/lib/Inline/C/ParseRecDescent.pod -cpanm : cp lib/Inline/C/Cookbook.pod blib/lib/Inline/C/Cookbook.pod +cpanm : cp lib/Inline/C/Parser/Pegex/Grammar.pm blib/lib/Inline/C/Parser/Pegex/Grammar.pm cpanm : cp lib/Inline/C/Parser.pm blib/lib/Inline/C/Parser.pm cpanm : cp lib/Inline/C.pm blib/lib/Inline/C.pm -cpanm : cp lib/Inline/C/Parser/RegExp.pm blib/lib/Inline/C/Parser/RegExp.pm +cpanm : cp lib/Inline/C/ParseRecDescent.pod blib/lib/Inline/C/ParseRecDescent.pod +cpanm : cp lib/Inline/C.pod blib/lib/Inline/C.pod cpanm : cp lib/Inline/C/Parser/Pegex/AST.pm blib/lib/Inline/C/Parser/Pegex/AST.pm -cpanm : cp lib/Inline/C/ParseRegExp.pod blib/lib/Inline/C/ParseRegExp.pod +cpanm : cp lib/Inline/C/Parser/RegExp.pm blib/lib/Inline/C/Parser/RegExp.pm +cpanm : cp lib/Inline/C/Parser/RecDescent.pm blib/lib/Inline/C/Parser/RecDescent.pm cpanm : cp lib/Inline/C/Parser/Pegex.pm blib/lib/Inline/C/Parser/Pegex.pm -cpanm : cp lib/Inline/C/Parser/Pegex/Grammar.pm blib/lib/Inline/C/Parser/Pegex/Grammar.pm -cpanm : cp lib/Inline/C.pod blib/lib/Inline/C.pod +cpanm : cp lib/Inline/C/Cookbook.pod blib/lib/Inline/C/Cookbook.pod cpanm : cp lib/Inline/C/ParsePegex.pod blib/lib/Inline/C/ParsePegex.pod -cpanm : cp lib/Inline/C/Parser/RecDescent.pm blib/lib/Inline/C/Parser/RecDescent.pm +cpanm : cp lib/Inline/C/ParseRegExp.pod blib/lib/Inline/C/ParseRegExp.pod cpanm : Skip blib/lib/auto/share/dist/Inline-C/inline-c.pgx (unchanged) cpanm : PERL_DL_NONLAZY=1 "/home/binary_c/perl5/perlbrew/perls/perl-5.31.5/bin/perl5.31.5" "-MExtUtils::Command::MM" "-MTest::Harness" "-e" "undef *Test::Harness::Switches; test_harness(0, 'blib/lib', 'blib/arch')" t/*.t cpanm : t/000-require-modules.t ............ ok @@ -7239,7 +5554,7 @@ cpanm : Test Summary Report cpanm : ------------------- cpanm : t/parse-pegex.t (Wstat: 0 Tests: 24 Failed: 0) cpanm : TODO passed: 4, 7-9 -cpanm : Files=36, Tests=161, 67 wallclock secs ( 0.17 usr 0.04 sys + 58.81 cusr 9.62 csys = 68.64 CPU) +cpanm : Files=36, Tests=161, 68 wallclock secs ( 0.17 usr 0.06 sys + 59.01 cusr 9.54 csys = 68.78 CPU) cpanm : Result: PASS cpanm : Skip blib/lib/auto/share/dist/Inline-C/inline-c.pgx (unchanged) cpanm : Installing /home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/site_perl/5.31.5/auto/share/dist/Inline-C/inline-c.pgx @@ -7266,7 +5581,12 @@ Something failed to install for module Inline::C --> Working on List::MoreUtils Fetching http://www.cpan.org/authors/id/R/RE/REHSACK/List-MoreUtils-0.428.tar.gz ... OK Configuring List-MoreUtils-0.428 ... OK -==> Found dependencies: List::MoreUtils::XS, Exporter::Tiny, Test::LeakTrace +==> Found dependencies: Test::LeakTrace, List::MoreUtils::XS, Exporter::Tiny +--> Working on Test::LeakTrace +Fetching http://www.cpan.org/authors/id/L/LE/LEEJO/Test-LeakTrace-0.16.tar.gz ... OK +Configuring Test-LeakTrace-0.16 ... OK +Building and testing Test-LeakTrace-0.16 ... OK +Successfully installed Test-LeakTrace-0.16 --> Working on List::MoreUtils::XS Fetching http://www.cpan.org/authors/id/R/RE/REHSACK/List-MoreUtils-XS-0.428.tar.gz ... OK Configuring List-MoreUtils-XS-0.428 ... OK @@ -7277,22 +5597,17 @@ Fetching http://www.cpan.org/authors/id/T/TO/TOBYINK/Exporter-Tiny-1.002001.tar. Configuring Exporter-Tiny-1.002001 ... OK Building and testing Exporter-Tiny-1.002001 ... OK Successfully installed Exporter-Tiny-1.002001 ---> Working on Test::LeakTrace -Fetching http://www.cpan.org/authors/id/L/LE/LEEJO/Test-LeakTrace-0.16.tar.gz ... OK -Configuring Test-LeakTrace-0.16 ... OK -Building and testing Test-LeakTrace-0.16 ... OK -Successfully installed Test-LeakTrace-0.16 Building and testing List-MoreUtils-0.428 ... OK Successfully installed List-MoreUtils-0.428 4 distributions installed -Removing intermediate container 5a183d64d63e - ---> 524156326890 -Step 42/53 : WORKDIR /home/binary_c/progs/stars/binary_c/src/perl/modules_targz - ---> Running in 491f12e5f9ca -Removing intermediate container 491f12e5f9ca - ---> b3d840e64329 -Step 43/53 : RUN cpanm List::MoreUtils && cpanm Carp::Always::Color --notest && cpanm Sort::Key && perl ./install_all.pl && cpanm Proc::ProcessTable && cpanm Cpanel::JSON::XS && cpanm -v ./binary_grid-v2.1.4.tar.gz - ---> Running in 50eeaf6e00d5 +Removing intermediate container 11d3cb20c76b + ---> e4cb31f09d80 +Step 44/53 : WORKDIR /home/binary_c/progs/stars/binary_c/src/perl/modules_targz + ---> Running in a3332847098e +Removing intermediate container a3332847098e + ---> a226dba9a0b4 +Step 45/53 : RUN cpanm List::MoreUtils && cpanm Carp::Always::Color --notest && cpanm Sort::Key && perl ./install_all.pl && cpanm Proc::ProcessTable && cpanm Cpanel::JSON::XS && cpanm -v ./binary_grid-v2.1.4.tar.gz + ---> Running in 36245d6e27aa List::MoreUtils is up to date. (0.428) --> Working on Carp::Always::Color Fetching http://www.cpan.org/authors/id/D/DO/DOY/Carp-Always-Color-0.08.tar.gz ... OK @@ -7399,89 +5714,61 @@ Configuring spacing_functions-0.02 ... OK Fetching file:///home/binary_c/progs/stars/binary_c/src/perl/modules_targz/spacing_functions-0.02.tar.gz ... OK Configuring spacing_functions-0.02 ... OK Building spacing_functions-0.02 ... OK -Successfully installed spacing_functions-0.02 -1 distribution installed -Install Binning-0.03.tar.gz using cpanm ---> Working on ./Binning-0.03.tar.gz -Fetching file:///home/binary_c/progs/stars/binary_c/src/perl/modules_targz/Binning-0.03.tar.gz ... OK -Configuring Binning-0.03 ... OK -<== Installed dependencies for ./Binning-0.03.tar.gz. Finishing. ---> Working on ./Binning-0.03.tar.gz -Fetching file:///home/binary_c/progs/stars/binary_c/src/perl/modules_targz/Binning-0.03.tar.gz ... OK -Configuring Binning-0.03 ... OK -Building Binning-0.03 ... OK -Successfully installed Binning-0.03 -1 distribution installed -Install IMF-0.05.tar.gz using cpanm ---> Working on ./IMF-0.05.tar.gz -Fetching file:///home/binary_c/progs/stars/binary_c/src/perl/modules_targz/IMF-0.05.tar.gz ... OK -Configuring IMF-0.05 ... OK -<== Installed dependencies for ./IMF-0.05.tar.gz. Finishing. ---> Working on ./IMF-0.05.tar.gz -Fetching file:///home/binary_c/progs/stars/binary_c/src/perl/modules_targz/IMF-0.05.tar.gz ... OK -Configuring IMF-0.05 ... OK -Building IMF-0.05 ... OK -Successfully installed IMF-0.05 -1 distribution installed -Install Maths_Double-0.01.tar.gz using cpanm ---> Working on ./Maths_Double-0.01.tar.gz -Fetching file:///home/binary_c/progs/stars/binary_c/src/perl/modules_targz/Maths_Double-0.01.tar.gz ... OK -Configuring Maths_Double-0.01 ... OK -<== Installed dependencies for ./Maths_Double-0.01.tar.gz. Finishing. ---> Working on ./Maths_Double-0.01.tar.gz -Fetching file:///home/binary_c/progs/stars/binary_c/src/perl/modules_targz/Maths_Double-0.01.tar.gz ... OK -Configuring Maths_Double-0.01 ... OK -Building Maths_Double-0.01 ... OK -Successfully installed Maths_Double-0.01 -1 distribution installed -Install binary_grid-v2.1.4.tar.gz using cpanm ---> Working on ./binary_grid-v2.1.4.tar.gz -Fetching file:///home/binary_c/progs/stars/binary_c/src/perl/modules_targz/binary_grid-v2.1.4.tar.gz ... OK -Configuring binary_grid-v2.1.4 ... OK -==> Found dependencies: Sys::Info, Hook::LexWrap, inc::Module::Install, IO::Interactive, File::Type, Devel::Size, File::Remove, Sub::Identify ---> Working on Sys::Info -Fetching http://www.cpan.org/authors/id/B/BU/BURAK/Sys-Info-0.7811.tar.gz ... OK -Configuring Sys-Info-0.7811 ... OK -==> Found dependencies: Sys::Info::Driver::Linux, Sys::Info::Base, Test::Sys::Info ---> Working on Sys::Info::Driver::Linux -Fetching http://www.cpan.org/authors/id/B/BU/BURAK/Sys-Info-Driver-Linux-0.7905.tar.gz ... OK -Configuring Sys-Info-Driver-Linux-0.7905 ... OK -==> Found dependencies: Unix::Processors, Config::General, Test::Sys::Info, Sys::Info::Base ---> Working on Unix::Processors -Fetching http://www.cpan.org/authors/id/W/WS/WSNYDER/Unix-Processors-2.046.tar.gz ... OK -Configuring Unix-Processors-2.046 ... OK -Building and testing Unix-Processors-2.046 ... OK -Successfully installed Unix-Processors-2.046 ---> Working on Config::General -Fetching http://www.cpan.org/authors/id/T/TL/TLINDEN/Config-General-2.63.tar.gz ... OK -Configuring Config-General-2.63 ... OK -Building and testing Config-General-2.63 ... OK -Successfully installed Config-General-2.63 ---> Working on Test::Sys::Info -Fetching http://www.cpan.org/authors/id/B/BU/BURAK/Test-Sys-Info-0.23.tar.gz ... OK -Configuring Test-Sys-Info-0.23 ... OK -Building and testing Test-Sys-Info-0.23 ... OK -Successfully installed Test-Sys-Info-0.23 ---> Working on Sys::Info::Base -Fetching http://www.cpan.org/authors/id/B/BU/BURAK/Sys-Info-Base-0.7807.tar.gz ... OK -Configuring Sys-Info-Base-0.7807 ... OK -==> Found dependencies: Text::Template::Simple ---> Working on Text::Template::Simple -Fetching http://www.cpan.org/authors/id/B/BU/BURAK/Text-Template-Simple-0.91.tar.gz ... OK -Configuring Text-Template-Simple-0.91 ... OK -Building and testing Text-Template-Simple-0.91 ... OK -Successfully installed Text-Template-Simple-0.91 -Building and testing Sys-Info-Base-0.7807 ... OK -Successfully installed Sys-Info-Base-0.7807 -Building and testing Sys-Info-Driver-Linux-0.7905 ... OK -Successfully installed Sys-Info-Driver-Linux-0.7905 -Building and testing Sys-Info-0.7811 ... OK -Successfully installed Sys-Info-0.7811 ---> Working on Hook::LexWrap -Fetching http://www.cpan.org/authors/id/E/ET/ETHER/Hook-LexWrap-0.26.tar.gz ... OK -Configuring Hook-LexWrap-0.26 ... OK -Building and testing Hook-LexWrap-0.26 ... OK -Successfully installed Hook-LexWrap-0.26 +Successfully installed spacing_functions-0.02 +1 distribution installed +Install Binning-0.03.tar.gz using cpanm +--> Working on ./Binning-0.03.tar.gz +Fetching file:///home/binary_c/progs/stars/binary_c/src/perl/modules_targz/Binning-0.03.tar.gz ... OK +Configuring Binning-0.03 ... OK +<== Installed dependencies for ./Binning-0.03.tar.gz. Finishing. +--> Working on ./Binning-0.03.tar.gz +Fetching file:///home/binary_c/progs/stars/binary_c/src/perl/modules_targz/Binning-0.03.tar.gz ... OK +Configuring Binning-0.03 ... OK +Building Binning-0.03 ... OK +Successfully installed Binning-0.03 +1 distribution installed +Install IMF-0.05.tar.gz using cpanm +--> Working on ./IMF-0.05.tar.gz +Fetching file:///home/binary_c/progs/stars/binary_c/src/perl/modules_targz/IMF-0.05.tar.gz ... OK +Configuring IMF-0.05 ... OK +<== Installed dependencies for ./IMF-0.05.tar.gz. Finishing. +--> Working on ./IMF-0.05.tar.gz +Fetching file:///home/binary_c/progs/stars/binary_c/src/perl/modules_targz/IMF-0.05.tar.gz ... OK +Configuring IMF-0.05 ... OK +Building IMF-0.05 ... OK +Successfully installed IMF-0.05 +1 distribution installed +Install Maths_Double-0.01.tar.gz using cpanm +--> Working on ./Maths_Double-0.01.tar.gz +Fetching file:///home/binary_c/progs/stars/binary_c/src/perl/modules_targz/Maths_Double-0.01.tar.gz ... OK +Configuring Maths_Double-0.01 ... OK +<== Installed dependencies for ./Maths_Double-0.01.tar.gz. Finishing. +--> Working on ./Maths_Double-0.01.tar.gz +Fetching file:///home/binary_c/progs/stars/binary_c/src/perl/modules_targz/Maths_Double-0.01.tar.gz ... OK +Configuring Maths_Double-0.01 ... OK +Building Maths_Double-0.01 ... OK +Successfully installed Maths_Double-0.01 +1 distribution installed +Install binary_grid-v2.1.4.tar.gz using cpanm +--> Working on ./binary_grid-v2.1.4.tar.gz +Fetching file:///home/binary_c/progs/stars/binary_c/src/perl/modules_targz/binary_grid-v2.1.4.tar.gz ... OK +Configuring binary_grid-v2.1.4 ... OK +==> Found dependencies: Sub::Identify, IO::Interactive, File::Remove, inc::Module::Install, File::Type, Sys::Info, Hook::LexWrap, Devel::Size +--> Working on Sub::Identify +Fetching http://www.cpan.org/authors/id/R/RG/RGARCIA/Sub-Identify-0.14.tar.gz ... OK +Configuring Sub-Identify-0.14 ... OK +Building and testing Sub-Identify-0.14 ... OK +Successfully installed Sub-Identify-0.14 +--> Working on IO::Interactive +Fetching http://www.cpan.org/authors/id/B/BD/BDFOY/IO-Interactive-1.022.tar.gz ... OK +Configuring IO-Interactive-1.022 ... OK +Building and testing IO-Interactive-1.022 ... OK +Successfully installed IO-Interactive-1.022 +--> Working on File::Remove +Fetching http://www.cpan.org/authors/id/S/SH/SHLOMIF/File-Remove-1.58.tar.gz ... OK +Configuring File-Remove-1.58 ... OK +Building and testing File-Remove-1.58 ... OK +Successfully installed File-Remove-1.58 --> Working on inc::Module::Install Fetching http://www.cpan.org/authors/id/E/ET/ETHER/Module-Install-1.19.tar.gz ... OK ==> Found dependencies: YAML::Tiny @@ -7491,7 +5778,7 @@ Configuring YAML-Tiny-1.73 ... OK Building and testing YAML-Tiny-1.73 ... OK Successfully installed YAML-Tiny-1.73 Configuring Module-Install-1.19 ... OK -==> Found dependencies: Module::ScanDeps, File::Remove +==> Found dependencies: Module::ScanDeps --> Working on Module::ScanDeps Fetching http://www.cpan.org/authors/id/R/RS/RSCHUPP/Module-ScanDeps-1.27.tar.gz ... OK Configuring Module-ScanDeps-1.27 ... OK @@ -7503,36 +5790,64 @@ Building and testing Test-Requires-0.10 ... OK Successfully installed Test-Requires-0.10 Building and testing Module-ScanDeps-1.27 ... OK Successfully installed Module-ScanDeps-1.27 ---> Working on File::Remove -Fetching http://www.cpan.org/authors/id/S/SH/SHLOMIF/File-Remove-1.58.tar.gz ... OK -Configuring File-Remove-1.58 ... OK -Building and testing File-Remove-1.58 ... OK -Successfully installed File-Remove-1.58 Building and testing Module-Install-1.19 ... OK Successfully installed Module-Install-1.19 ---> Working on IO::Interactive -Fetching http://www.cpan.org/authors/id/B/BD/BDFOY/IO-Interactive-1.022.tar.gz ... OK -Configuring IO-Interactive-1.022 ... OK -Building and testing IO-Interactive-1.022 ... OK -Successfully installed IO-Interactive-1.022 --> Working on File::Type Fetching http://www.cpan.org/authors/id/P/PM/PMISON/File-Type-0.22.tar.gz ... OK Configuring File-Type-0.22 ... OK Building and testing File-Type-0.22 ... OK Successfully installed File-Type-0.22 +--> Working on Sys::Info +Fetching http://www.cpan.org/authors/id/B/BU/BURAK/Sys-Info-0.7811.tar.gz ... OK +Configuring Sys-Info-0.7811 ... OK +==> Found dependencies: Sys::Info::Base, Test::Sys::Info, Sys::Info::Driver::Linux +--> Working on Sys::Info::Base +Fetching http://www.cpan.org/authors/id/B/BU/BURAK/Sys-Info-Base-0.7807.tar.gz ... OK +Configuring Sys-Info-Base-0.7807 ... OK +==> Found dependencies: Text::Template::Simple +--> Working on Text::Template::Simple +Fetching http://www.cpan.org/authors/id/B/BU/BURAK/Text-Template-Simple-0.91.tar.gz ... OK +Configuring Text-Template-Simple-0.91 ... OK +Building and testing Text-Template-Simple-0.91 ... OK +Successfully installed Text-Template-Simple-0.91 +Building and testing Sys-Info-Base-0.7807 ... OK +Successfully installed Sys-Info-Base-0.7807 +--> Working on Test::Sys::Info +Fetching http://www.cpan.org/authors/id/B/BU/BURAK/Test-Sys-Info-0.23.tar.gz ... OK +Configuring Test-Sys-Info-0.23 ... OK +Building and testing Test-Sys-Info-0.23 ... OK +Successfully installed Test-Sys-Info-0.23 +--> Working on Sys::Info::Driver::Linux +Fetching http://www.cpan.org/authors/id/B/BU/BURAK/Sys-Info-Driver-Linux-0.7905.tar.gz ... OK +Configuring Sys-Info-Driver-Linux-0.7905 ... OK +==> Found dependencies: Unix::Processors, Config::General +--> Working on Unix::Processors +Fetching http://www.cpan.org/authors/id/W/WS/WSNYDER/Unix-Processors-2.046.tar.gz ... OK +Configuring Unix-Processors-2.046 ... OK +Building and testing Unix-Processors-2.046 ... OK +Successfully installed Unix-Processors-2.046 +--> Working on Config::General +Fetching http://www.cpan.org/authors/id/T/TL/TLINDEN/Config-General-2.63.tar.gz ... OK +Configuring Config-General-2.63 ... OK +Building and testing Config-General-2.63 ... OK +Successfully installed Config-General-2.63 +Building and testing Sys-Info-Driver-Linux-0.7905 ... OK +Successfully installed Sys-Info-Driver-Linux-0.7905 +Building and testing Sys-Info-0.7811 ... OK +Successfully installed Sys-Info-0.7811 +--> Working on Hook::LexWrap +Fetching http://www.cpan.org/authors/id/E/ET/ETHER/Hook-LexWrap-0.26.tar.gz ... OK +Configuring Hook-LexWrap-0.26 ... OK +Building and testing Hook-LexWrap-0.26 ... OK +Successfully installed Hook-LexWrap-0.26 --> Working on Devel::Size Fetching http://www.cpan.org/authors/id/N/NW/NWCLARK/Devel-Size-0.83.tar.gz ... OK Configuring Devel-Size-0.83 ... OK Building and testing Devel-Size-0.83 ... OK Successfully installed Devel-Size-0.83 ---> Working on Sub::Identify -Fetching http://www.cpan.org/authors/id/R/RG/RGARCIA/Sub-Identify-0.14.tar.gz ... OK -Configuring Sub-Identify-0.14 ... OK -Building and testing Sub-Identify-0.14 ... OK -Successfully installed Sub-Identify-0.14 <== Installed dependencies for ./binary_grid-v2.1.4.tar.gz. Finishing. 17 distributions installed -[91m! Installing ./binary_grid-v2.1.4.tar.gz failed. See /home/binary_c/.cpanm/work/1573495944.4442/build.log for details. Retry with --force to force install it. +[91m! Installing ./binary_grid-v2.1.4.tar.gz failed. See /home/binary_c/.cpanm/work/1573497933.4443/build.log for details. Retry with --force to force install it. [0m--> Working on ./binary_grid-v2.1.4.tar.gz Fetching file:///home/binary_c/progs/stars/binary_c/src/perl/modules_targz/binary_grid-v2.1.4.tar.gz ... OK Configuring binary_grid-v2.1.4 ... OK @@ -7572,7 +5887,7 @@ Building and testing Cpanel-JSON-XS-4.17 ... OK Successfully installed Cpanel-JSON-XS-4.17 1 distribution installed [91mcpanm (App::cpanminus) 1.7044 on perl 5.031005 built for x86_64-linux-thread-multi -Work directory is /home/binary_c/.cpanm/work/1573495963.1 +Work directory is /home/binary_c/.cpanm/work/1573497952.1 [0m[91mYou have make /usr/bin/make [0m[91mYou have /usr/bin/wget [0m[91mYou have /bin/tar: tar (GNU tar) 1.29 @@ -7606,73 +5921,73 @@ binary_grid-v2.1.4/README [91mEntering binary_grid-v2.1.4 [0m[91mChecking configure dependencies from META.json [0m[91mChecking if you have ExtUtils::MakeMaker 6.58 ... [0m[91mYes (7.38) -[0mConfiguring binary_grid-v2.1.4 ... [91mRunning Makefile.PL -[0mChecking if your kit is complete... +[0m[91mRunning Makefile.PL +[0mConfiguring binary_grid-v2.1.4 ... Checking if your kit is complete... Looks good Generating a Unix-style Makefile Writing Makefile for binary_grid Writing MYMETA.yml and MYMETA.json [91mChecking dependencies from MYMETA.json ... -[0m[91mChecking if you have Test::utf8 1.01 ... [0m[91mYes (1.01) -Checking if you have ExtUtils::MakeMaker 7.32 ... [0m[91mYes (7.38) -Checking if you have Hash::RobMerge 0.12 ... [0m[91mYes (0.14) -Checking if you have rob_misc 0.14 ... [0m[91mYes (0.16) -Checking if you have Carp 1.43 ... [0m[91mYes (1.50) -Checking if you have common::sense 3.74 ... [0m[91mYes (3.74) +[0m[91mChecking if you have Data::Serializer 0.6 ... [0m[91mYes (0.60) +Checking if you have Test::utf8 1.01 ... [0m[91mYes (1.01) +Checking if you have Sys::Hostname 1.2 ... [0m[91mYes (1.23) +Checking if you have IO::File 1.16 ... [0m[91mYes (1.41) +[0m[91mChecking if you have common::sense 3.74 ... [0m[91mYes (3.74) +[0m[91mChecking if you have Inline 0.44 ... [0m[91mYes (0.83) +Checking if you have Sort::Key 1.33 ... [0m[91mYes (1.33) +Checking if you have Sys::Info 0.78 ... [0m[91mYes (0.7811) +Checking if you have RobInterpolation 0.04 ... [0m[91mYes (0.04) Checking if you have binary_stars 0.04 ... [0m[91mYes (0.05) -Checking if you have Data::Dumper 2.167 ... [0m[91mYes (2.174) +Checking if you have Inline::C 0.78 ... [0m[91mYes (0.81) +Checking if you have spacing_functions 0.02 ... [0m[91mYes (0.02) Checking if you have Clone 0.39 ... [0m[91mYes (0.43) +Checking if you have Hook::LexWrap 0.26 ... [0m[91mYes (0.26) +Checking if you have distribution_functions 0.05 ... [0m[91mYes (0.05) +Checking if you have Data::Serializer::Raw 0.02 ... [0m[91mYes (0.02) Checking if you have Sub::Identify 0.14 ... [0m[91mYes (0.14) +Checking if you have inc::Module::Install 1.19 ... [0m[91mYes (1.19) +Checking if you have Carp::Always::Color 0.08 ... [0m[91mYes (0.08) +Checking if you have rob_misc 0.14 ... [0m[91mYes (0.16) +Checking if you have File::Type 0.22 ... [0m[91mYes (0.22) +Checking if you have threads::shared 1.58 ... [0m[91mYes (1.61) +Checking if you have Hash::RobMerge 0.12 ... [0m[91mYes (0.14) Checking if you have Thread::Queue 3.12 ... [0m[91mYes (3.13) +Checking if you have File::Remove 1.57 ... [0m[91mYes (1.58) +Checking if you have Exporter 5.72 ... [0m[91mYes (5.74) +Checking if you have Carp 1.43 ... [0m[91mYes (1.50) +Checking if you have vars 1.03 ... [0m[91mYes (1.05) Checking if you have threads 2.21 ... [0m[91mYes (2.23) +Checking if you have Compress::Zlib 2.074 ... [0m[91mYes (2.090) Checking if you have IO::Interactive 1.022 ... [0m[91mYes (1.022) -Checking if you have Data::Serializer 0.6 ... [0m[91mYes (0.60) -Checking if you have RobInterpolation 0.04 ... [0m[91mYes (0.04) -Checking if you have Data::Serializer::Raw 0.02 ... [0m[91mYes (0.02) -[0m[91mChecking if you have File::Type 0.22 ... [0m[91mYes (0.22) -Checking if you have spacing_functions 0.02 ... [0m[91mYes (0.02) -Checking if you have File::Remove 1.57 ... [0m[91mYes (1.58) +Checking if you have ExtUtils::MakeMaker 7.32 ... [0m[91mYes (7.38) +Checking if you have Sub::Uplevel 0.28 ... [0m[91mYes (0.2800) +Checking if you have Term::ANSIColor 4.06 ... [0m[91mYes (4.06) Checking if you have File::Copy::Recursive 0.4 ... [0m[91mYes (0.45) -Checking if you have Inline 0.44 ... [0m[91mYes (0.83) -Checking if you have constant 1.33 ... [0m[91mYes (1.33) Checking if you have IO::Select 1.22 ... [0m[91mYes (1.41) +Checking if you have constant 1.33 ... [0m[91mYes (1.33) +Checking if you have Data::Dumper 2.167 ... [0m[91mYes (2.174) Checking if you have Carp::Always 0.13 ... [0m[91mYes (0.16) -Checking if you have Inline::C 0.78 ... [0m[91mYes (0.81) -Checking if you have Hook::LexWrap 0.26 ... [0m[91mYes (0.26) -Checking if you have inc::Module::Install 1.19 ... [0m[91mYes (1.19) -Checking if you have Exporter 5.72 ... [0m[91mYes (5.74) -Checking if you have Carp::Always::Color 0.08 ... [0m[91mYes (0.08) -Checking if you have vars 1.03 ... [0m[91mYes (1.05) -Checking if you have distribution_functions 0.05 ... [0m[91mYes (0.05) -Checking if you have IO::File 1.16 ... [0m[91mYes (1.41) Checking if you have Devel::Size 0.81 ... [0m[91mYes (0.83) -Checking if you have Sort::Key 1.33 ... [0m[91mYes (1.33) -Checking if you have threads::shared 1.58 ... [0m[91mYes (1.61) -Checking if you have Sub::Uplevel 0.28 ... [0m[91mYes (0.2800) -Checking if you have Compress::Zlib 2.074 ... [0m[91mYes (2.090) -Checking if you have Term::ANSIColor 4.06 ... [0m[91mYes (4.06) -Checking if you have Sys::Hostname 1.2 ... [0m[91mYes (1.23) -Checking if you have Sys::Info 0.78 ... [0m[91mYes (0.7811) [0mOK -Building and testing binary_grid-v2.1.4 ... cp lib/binary_grid/C.pm blib/lib/binary_grid/C.pm -cp lib/binary_grid/slurm.pm blib/lib/binary_grid/slurm.pm +Building and testing binary_grid-v2.1.4 ... cp lib/binary_grid/condor.pm blib/lib/binary_grid/condor.pm +cp lib/binary_grid.pm blib/lib/binary_grid.pm cp lib/binary_grid2.pm blib/lib/binary_grid2.pm AutoSplitting blib/lib/binary_grid2.pm (blib/lib/auto/binary_grid2) -cp lib/binary_grid.pm blib/lib/binary_grid.pm -cp lib/binary_grid/condor.pm blib/lib/binary_grid/condor.pm +cp lib/binary_grid/slurm.pm blib/lib/binary_grid/slurm.pm +cp lib/binary_grid/C.pm blib/lib/binary_grid/C.pm cp lib/binary_grid/Perl.pm blib/lib/binary_grid/Perl.pm "/home/binary_c/perl5/perlbrew/perls/perl-5.31.5/bin/perl5.31.5" -Mblib -MInline=NOISY,_INSTALL_ -Mbinary_grid::C -e"my %A = (modinlname => 'binary_grid-C.inl', module => 'binary_grid::C'); my %S = (API => \%A); Inline::satisfy_makefile_dep(\%S);" v2.1.4 blib/arch Have binary_c-config at /home/binary_c/progs/stars/binary_c/src/../binary_c-config -[91mChecking whether to build binary_grid::C (host 50eeaf6e00d5) ... +[91mChecking whether to build binary_grid::C (host 36245d6e27aa) ... Binary_c source and shared library found: building C backend [0mHave binary_c-config at /home/binary_c/progs/stars/binary_c/src/../binary_c-config Have binary_c-config at /home/binary_c/progs/stars/binary_c/src/../binary_c-config Have binary_c-config at /home/binary_c/progs/stars/binary_c/src/../binary_c-config Have binary_c-config at /home/binary_c/progs/stars/binary_c/src/../binary_c-config -Building binary_grid::C backend with source (binary_c.h) at /home/binary_c/progs/stars/binary_c/src on 50eeaf6e00d5 +Building binary_grid::C backend with source (binary_c.h) at /home/binary_c/progs/stars/binary_c/src on 36245d6e27aa Options: cc = gcc -ccflags = -fPIC -DALIGNSIZE=16 -std=gnu99 -mtune=generic -ffast-math -fno-associative-math -fno-finite-math-only -fsignaling-nans -fomit-frame-pointer -DCPUFREQ=3500 -DLINUX -DLARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -DGIT_REVISION=1:20191111:2503b49 -DGIT_URL=gitlab@gitlab.eps.surrey.ac.uk:ri0005/binary_c.git -I/usr/include -DUSE_GSL -D__HAVE_LIBGSL__ -D__HAVE_DRAND48__ -D__HAVE_MALLOC_H__ -D__HAVE_PKG_CONFIG__ -D__HAVE_VALGRIND__ -D__SHOW_STARDATA__ -D__DIFF_STARDATA__ -O3 -D_SEARCH_H +ccflags = -fPIC -DALIGNSIZE=16 -std=gnu99 -mtune=generic -ffast-math -fno-associative-math -fno-finite-math-only -fsignaling-nans -fomit-frame-pointer -DCPUFREQ=3500 -DLINUX -DLARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -DGIT_REVISION=1:20191111:d2804db -DGIT_URL=gitlab@gitlab.eps.surrey.ac.uk:ri0005/binary_c.git -I/usr/include -DUSE_GSL -D__HAVE_LIBGSL__ -D__HAVE_DRAND48__ -D__HAVE_MALLOC_H__ -D__HAVE_PKG_CONFIG__ -D__HAVE_VALGRIND__ -D__SHOW_STARDATA__ -D__DIFF_STARDATA__ -O3 -D_SEARCH_H ld = cc libs = -L/home/binary_c/progs/stars/binary_c/src -L -lbinary_c -lc -lm -lgsl -lgslcblas -lm -lgsl -lc -lm -ldl inc = -I/home/binary_c/progs/stars/binary_c -I/home/binary_c/progs/stars/binary_c/src -I/home/binary_c/progs/stars/binary_c/src @@ -7683,10 +5998,10 @@ inc = -I/home/binary_c/progs/stars/binary_c -I/home/binary_c/progs/stars/bina Information about the processing of your Inline C code: Your source code needs to be compiled. I'll use this build directory: -/home/binary_c/.cpanm/work/1573495963.1/binary_grid-v2.1.4/_Inline/build/binary_grid/C +/home/binary_c/.cpanm/work/1573497952.1/binary_grid-v2.1.4/_Inline/build/binary_grid/C and I'll install the executable as: -/home/binary_c/.cpanm/work/1573495963.1/binary_grid-v2.1.4/blib/arch/auto/binary_grid/C/C.so +/home/binary_c/.cpanm/work/1573497952.1/binary_grid-v2.1.4/blib/arch/auto/binary_grid/C/C.so get_maps Stage [0m[91mThe following Inline C function(s) have been successfully bound to Perl: @@ -7708,88 +6023,112 @@ Starting Build Glue 1 Stage [0m[91mFinished Build Glue 1 Stage Starting Build Glue 2 Stage -[0m[91mFinished Build Glue 2 Stage +Finished Build Glue 2 Stage Starting Build Glue 3 Stage [0m[91mFinished Build Glue 3 Stage Starting Build Compile Stage [0m[91m Starting "perl Makefile.PL" Stage -[0m[91mWarning (mostly harmless): No library found for -lbinary_c [0mGenerating a Unix-style Makefile Writing Makefile for binary_grid::C Writing MYMETA.yml and MYMETA.json [91m Finished "perl Makefile.PL" Stage Starting "make" Stage -[0mmake[1]: Entering directory '/home/binary_c/.cpanm/work/1573495963.1/binary_grid-v2.1.4/_Inline/build/binary_grid/C' +[0mmake[1]: Entering directory '/home/binary_c/.cpanm/work/1573497952.1/binary_grid-v2.1.4/_Inline/build/binary_grid/C' Running Mkbootstrap for C () chmod 644 "C.bs" "/home/binary_c/perl5/perlbrew/perls/perl-5.31.5/bin/perl5.31.5" -MExtUtils::Command::MM -e 'cp_nonempty' -- C.bs blib/arch/auto/binary_grid/C/C.bs 644 "/home/binary_c/perl5/perlbrew/perls/perl-5.31.5/bin/perl5.31.5" "/home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/5.31.5/ExtUtils/xsubpp" -typemap "/home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/5.31.5/ExtUtils/typemap" C.xs > C.xsc mv C.xsc C.c -gcc -c -iquote"/home/binary_c/.cpanm/work/1573495963.1/binary_grid-v2.1.4" -I/home/binary_c/progs/stars/binary_c -I/home/binary_c/progs/stars/binary_c/src -I/home/binary_c/progs/stars/binary_c/src -fPIC -DALIGNSIZE=16 -std=gnu99 -mtune=generic -ffast-math -fno-associative-math -fno-finite-math-only -fsignaling-nans -fomit-frame-pointer -DCPUFREQ=3500 -DLINUX -DLARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -DGIT_REVISION=1:20191111:2503b49 -DGIT_URL=gitlab@gitlab.eps.surrey.ac.uk:ri0005/binary_c.git -I/usr/include -DUSE_GSL -D__HAVE_LIBGSL__ -D__HAVE_DRAND48__ -D__HAVE_MALLOC_H__ -D__HAVE_PKG_CONFIG__ -D__HAVE_VALGRIND__ -D__SHOW_STARDATA__ -D__DIFF_STARDATA__ -O3 -D_SEARCH_H -DVERSION=\"v2.1.4\" -DXS_VERSION=\"v2.1.4\" -fPIC "-I/home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/5.31.5/x86_64-linux-thread-multi/CORE" C.c +gcc -c -iquote"/home/binary_c/.cpanm/work/1573497952.1/binary_grid-v2.1.4" -I/home/binary_c/progs/stars/binary_c -I/home/binary_c/progs/stars/binary_c/src -I/home/binary_c/progs/stars/binary_c/src -fPIC -DALIGNSIZE=16 -std=gnu99 -mtune=generic -ffast-math -fno-associative-math -fno-finite-math-only -fsignaling-nans -fomit-frame-pointer -DCPUFREQ=3500 -DLINUX -DLARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -DGIT_REVISION=1:20191111:d2804db -DGIT_URL=gitlab@gitlab.eps.surrey.ac.uk:ri0005/binary_c.git -I/usr/include -DUSE_GSL -D__HAVE_LIBGSL__ -D__HAVE_DRAND48__ -D__HAVE_MALLOC_H__ -D__HAVE_PKG_CONFIG__ -D__HAVE_VALGRIND__ -D__SHOW_STARDATA__ -D__DIFF_STARDATA__ -O3 -D_SEARCH_H -DVERSION=\"v2.1.4\" -DXS_VERSION=\"v2.1.4\" -fPIC "-I/home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/5.31.5/x86_64-linux-thread-multi/CORE" C.c rm -f blib/arch/auto/binary_grid/C/C.so -LD_RUN_PATH="/usr/lib/x86_64-linux-gnu" cc -shared -L/usr/local/lib -fstack-protector-strong C.o -o blib/arch/auto/binary_grid/C/C.so \ - -L/home/binary_c/progs/stars/binary_c/src -lc -lm -lgsl -lgslcblas -lm -lgsl -lc -lm -ldl \ +LD_RUN_PATH="/home/binary_c/progs/stars/binary_c/src:/usr/lib/x86_64-linux-gnu" cc -shared -L/usr/local/lib -fstack-protector-strong C.o -o blib/arch/auto/binary_grid/C/C.so \ + -L/home/binary_c/progs/stars/binary_c/src -lbinary_c -lc -lm -lgsl -lgslcblas -lm -lgsl -lc -lm -ldl \ chmod 755 blib/arch/auto/binary_grid/C/C.so -make[1]: Leaving directory '/home/binary_c/.cpanm/work/1573495963.1/binary_grid-v2.1.4/_Inline/build/binary_grid/C' +make[1]: Leaving directory '/home/binary_c/.cpanm/work/1573497952.1/binary_grid-v2.1.4/_Inline/build/binary_grid/C' [91m Finished "make" Stage [0m[91m Starting "make install" Stage -[0mmake[1]: Entering directory '/home/binary_c/.cpanm/work/1573495963.1/binary_grid-v2.1.4/_Inline/build/binary_grid/C' +[0mmake[1]: Entering directory '/home/binary_c/.cpanm/work/1573497952.1/binary_grid-v2.1.4/_Inline/build/binary_grid/C' "/home/binary_c/perl5/perlbrew/perls/perl-5.31.5/bin/perl5.31.5" -MExtUtils::Command::MM -e 'cp_nonempty' -- C.bs blib/arch/auto/binary_grid/C/C.bs 644 Files found in blib/arch: installing files in blib/lib into architecture dependent library tree -Installing /home/binary_c/.cpanm/work/1573495963.1/binary_grid-v2.1.4/blib/arch/auto/binary_grid/C/C.so -make[1]: Leaving directory '/home/binary_c/.cpanm/work/1573495963.1/binary_grid-v2.1.4/_Inline/build/binary_grid/C' +Installing /home/binary_c/.cpanm/work/1573497952.1/binary_grid-v2.1.4/blib/arch/auto/binary_grid/C/C.so +make[1]: Leaving directory '/home/binary_c/.cpanm/work/1573497952.1/binary_grid-v2.1.4/_Inline/build/binary_grid/C' [91m Finished "make install" Stage -[0m[91m Starting Cleaning Up Stage + Starting Cleaning Up Stage Finished Cleaning Up Stage -[0m[91mFinished Build Compile Stage +Finished Build Compile Stage [0m[91mRedefine evcode_version_string to use C -[0m[91mRedefine evcode_args_list to use C -[0m[91mRedefine tbse to use C +Redefine evcode_args_list to use C +Redefine tbse to use C [0m[91mRedefine tbse_kill to use C [0m[91mRedefine tbse_land to use C -[0m[91mRedefine tbse_launch to use C +Redefine tbse_launch to use C [0m[91mRedefine tbse_line to use C [0m[91mRedefine tbse_restart to use C [0m[91mRedefine kill_flexigrid_evcode_pid to use C -[0m[91mRedefine kill_flexigrid_evcode_pids to use C +Redefine kill_flexigrid_evcode_pids to use C [0m[91mRedefine suicide to use C [0m[91mRedefine stop_flexigrid_threads to use C [0m[91mRedefine minimum_period_for_RLOF to use C [0m[91mbinary_grid API subroutines claimed by binary_grid::C [0m"/home/binary_c/perl5/perlbrew/perls/perl-5.31.5/bin/perl5.31.5" -Mblib -MInline=NOISY,_INSTALL_ -Mbinary_grid2 -e"my %A = (modinlname => 'binary_grid2.inl', module => 'binary_grid2'); my %S = (API => \%A); Inline::satisfy_makefile_dep(\%S);" v2.1.4 blib/arch +"/home/binary_c/perl5/perlbrew/perls/perl-5.31.5/bin/perl5.31.5" -Mblib -MInline=NOISY,_INSTALL_ -Mbinary_grid::slurm -e"my %A = (modinlname => 'binary_grid-slurm.inl', module => 'binary_grid::slurm'); my %S = (API => \%A); Inline::satisfy_makefile_dep(\%S);" v2.1.4 blib/arch +[91mDefine binary_grid2::slurm->slurm_grid +Define binary_grid2::slurm->slurm_workingdir +Define binary_grid2::slurm->write_slurm_script +Define binary_grid2::slurm->set_slurm_job_status +Define binary_grid2::slurm->get_slurm_job_status +Define binary_grid2::slurm->check_and_merge_slurm_jobs +Define binary_grid2::slurm->check_slurm_jobs_done +[0m[91mDefine binary_grid2::slurm->merge_slurm_jobs +Define binary_grid2::slurm->slurm_submit +[0m[91mDefine binary_grid2::slurm->jobid +[0m[91mDefine binary_grid2::slurm->slurm_script_data +Define binary_grid2::slurm->datafiles_string_comma +[0m[91mDefine binary_grid2::slurm->datafiles_string +Define binary_grid2::slurm->slurm_rerun_command +[0m[91mDefine binary_grid2::slurm->slurm_check_joining_file +[0m[91mDefine binary_grid2::slurm->slurm_job_hook +Define binary_grid2::slurm->grid_interrupted +[0m[91mDefine binary_grid2::slurm->check_for_saved_snapshot +Define binary_grid2::slurm->pre_load_snapshot +[0m[91mDefine binary_grid2::slurm->post_load_snapshot +Define binary_grid2::slurm->checkpoint +[0m[91mDefine binary_grid2::slurm->increment_checkpoint_time +[0m[91mDefine binary_grid2::slurm->output_allowed +[0m"/home/binary_c/perl5/perlbrew/perls/perl-5.31.5/bin/perl5.31.5" -Mblib -MInline=NOISY,_INSTALL_ -Mbinary_grid::Perl -e"my %A = (modinlname => 'binary_grid-Perl.inl', module => 'binary_grid::Perl'); my %S = (API => \%A); Inline::satisfy_makefile_dep(\%S);" v2.1.4 blib/arch "/home/binary_c/perl5/perlbrew/perls/perl-5.31.5/bin/perl5.31.5" -Mblib -MInline=NOISY,_INSTALL_ -Mbinary_grid::condor -e"my %A = (modinlname => 'binary_grid-condor.inl', module => 'binary_grid::condor'); my %S = (API => \%A); Inline::satisfy_makefile_dep(\%S);" v2.1.4 blib/arch [91mDefine binary_grid2::condor->condor_grid Define binary_grid2::condor->condor_workingdir Define binary_grid2::condor->make_condor_script Define binary_grid2::condor->premake_condor_outfiles Define binary_grid2::condor->write_condor_script -[0m[91mDefine binary_grid2::condor->set_condor_job_status +Define binary_grid2::condor->set_condor_job_status Define binary_grid2::condor->get_condor_job_status [0m[91mDefine binary_grid2::condor->check_and_merge_condor_jobs -[0m[91mDefine binary_grid2::condor->check_condor_jobs_done +Define binary_grid2::condor->check_condor_jobs_done [0m[91mDefine binary_grid2::condor->merge_condor_jobs -Define binary_grid2::condor->condor_submit -[0m[91mDefine binary_grid2::condor->jobid +[0m[91mDefine binary_grid2::condor->condor_submit +Define binary_grid2::condor->jobid Define binary_grid2::condor->condor_script_data [0m[91mDefine binary_grid2::condor->datafiles_string_comma [0m[91mDefine binary_grid2::condor->datafiles_string [0m[91mDefine binary_grid2::condor->condor_rerun_command -[0m[91mDefine binary_grid2::condor->condor_check_joining_file +Define binary_grid2::condor->condor_check_joining_file [0m[91mDefine binary_grid2::condor->condor_job_hook -[0m[91mDefine binary_grid2::condor->grid_interrupted +Define binary_grid2::condor->grid_interrupted [0m[91mDefine binary_grid2::condor->check_for_saved_snapshot -[0m[91mDefine binary_grid2::condor->pre_load_snapshot +Define binary_grid2::condor->pre_load_snapshot [0m[91mDefine binary_grid2::condor->post_load_snapshot [0m[91mDefine binary_grid2::condor->checkpoint -[0m[91mDefine binary_grid2::condor->increment_checkpoint_time +Define binary_grid2::condor->increment_checkpoint_time Define binary_grid2::condor->output_allowed [0m"/home/binary_c/perl5/perlbrew/perls/perl-5.31.5/bin/perl5.31.5" -Mblib -MInline=NOISY,_INSTALL_ -Mbinary_grid -e"my %A = (modinlname => 'binary_grid.inl', module => 'binary_grid'); my %S = (API => \%A); Inline::satisfy_makefile_dep(\%S);" v2.1.4 blib/arch [91mDefine binary_grid2::condor->condor_grid @@ -7797,19 +6136,19 @@ Define binary_grid2::condor->condor_workingdir Define binary_grid2::condor->make_condor_script Define binary_grid2::condor->premake_condor_outfiles Define binary_grid2::condor->write_condor_script -[0m[91mDefine binary_grid2::condor->set_condor_job_status -Define binary_grid2::condor->get_condor_job_status -[0m[91mDefine binary_grid2::condor->check_and_merge_condor_jobs +Define binary_grid2::condor->set_condor_job_status +[0m[91mDefine binary_grid2::condor->get_condor_job_status +Define binary_grid2::condor->check_and_merge_condor_jobs [0m[91mDefine binary_grid2::condor->check_condor_jobs_done -[0m[91mDefine binary_grid2::condor->merge_condor_jobs +Define binary_grid2::condor->merge_condor_jobs [0m[91mDefine binary_grid2::condor->condor_submit -[0m[91mDefine binary_grid2::condor->jobid +Define binary_grid2::condor->jobid [0m[91mDefine binary_grid2::condor->condor_script_data [0m[91mDefine binary_grid2::condor->datafiles_string_comma [0m[91mDefine binary_grid2::condor->datafiles_string [0m[91mDefine binary_grid2::condor->condor_rerun_command -Define binary_grid2::condor->condor_check_joining_file -Define binary_grid2::condor->condor_job_hook +[0m[91mDefine binary_grid2::condor->condor_check_joining_file +[0m[91mDefine binary_grid2::condor->condor_job_hook [0m[91mDefine binary_grid2::condor->grid_interrupted [0m[91mDefine binary_grid2::condor->check_for_saved_snapshot [0m[91mDefine binary_grid2::condor->pre_load_snapshot @@ -7840,32 +6179,7 @@ Define binary_grid2::condor->condor_job_hook [0m[91mDefine binary_grid2::slurm->checkpoint [0m[91mDefine binary_grid2::slurm->increment_checkpoint_time [0m[91mDefine binary_grid2::slurm->output_allowed -[0m"/home/binary_c/perl5/perlbrew/perls/perl-5.31.5/bin/perl5.31.5" -Mblib -MInline=NOISY,_INSTALL_ -Mbinary_grid::slurm -e"my %A = (modinlname => 'binary_grid-slurm.inl', module => 'binary_grid::slurm'); my %S = (API => \%A); Inline::satisfy_makefile_dep(\%S);" v2.1.4 blib/arch -[91mDefine binary_grid2::slurm->slurm_grid -Define binary_grid2::slurm->slurm_workingdir -Define binary_grid2::slurm->write_slurm_script -Define binary_grid2::slurm->set_slurm_job_status -Define binary_grid2::slurm->get_slurm_job_status -Define binary_grid2::slurm->check_and_merge_slurm_jobs -Define binary_grid2::slurm->check_slurm_jobs_done -[0m[91mDefine binary_grid2::slurm->merge_slurm_jobs -Define binary_grid2::slurm->slurm_submit -Define binary_grid2::slurm->jobid -[0m[91mDefine binary_grid2::slurm->slurm_script_data -Define binary_grid2::slurm->datafiles_string_comma -[0m[91mDefine binary_grid2::slurm->datafiles_string -Define binary_grid2::slurm->slurm_rerun_command -[0m[91mDefine binary_grid2::slurm->slurm_check_joining_file -Define binary_grid2::slurm->slurm_job_hook -[0m[91mDefine binary_grid2::slurm->grid_interrupted -Define binary_grid2::slurm->check_for_saved_snapshot -Define binary_grid2::slurm->pre_load_snapshot -[0m[91mDefine binary_grid2::slurm->post_load_snapshot -Define binary_grid2::slurm->checkpoint -[0m[91mDefine binary_grid2::slurm->increment_checkpoint_time -[0m[91mDefine binary_grid2::slurm->output_allowed -[0m"/home/binary_c/perl5/perlbrew/perls/perl-5.31.5/bin/perl5.31.5" -Mblib -MInline=NOISY,_INSTALL_ -Mbinary_grid::Perl -e"my %A = (modinlname => 'binary_grid-Perl.inl', module => 'binary_grid::Perl'); my %S = (API => \%A); Inline::satisfy_makefile_dep(\%S);" v2.1.4 blib/arch -PERL_DL_NONLAZY=1 "/home/binary_c/perl5/perlbrew/perls/perl-5.31.5/bin/perl5.31.5" "-MExtUtils::Command::MM" "-MTest::Harness" "-e" "undef *Test::Harness::Switches; test_harness(0, 'blib/lib', 'blib/arch')" t/*.t +[0mPERL_DL_NONLAZY=1 "/home/binary_c/perl5/perlbrew/perls/perl-5.31.5/bin/perl5.31.5" "-MExtUtils::Command::MM" "-MTest::Harness" "-e" "undef *Test::Harness::Switches; test_harness(0, 'blib/lib', 'blib/arch')" t/*.t [91mDefine binary_grid2::condor->condor_grid Define binary_grid2::condor->condor_workingdir Define binary_grid2::condor->make_condor_script @@ -7877,46 +6191,46 @@ Define binary_grid2::condor->check_and_merge_condor_jobs Define binary_grid2::condor->check_condor_jobs_done Define binary_grid2::condor->merge_condor_jobs Define binary_grid2::condor->condor_submit -[0m[91mDefine binary_grid2::condor->jobid +Define binary_grid2::condor->jobid Define binary_grid2::condor->condor_script_data -Define binary_grid2::condor->datafiles_string_comma +[0m[91mDefine binary_grid2::condor->datafiles_string_comma Define binary_grid2::condor->datafiles_string Define binary_grid2::condor->condor_rerun_command [0m[91mDefine binary_grid2::condor->condor_check_joining_file [0m[91mDefine binary_grid2::condor->condor_job_hook -Define binary_grid2::condor->grid_interrupted +[0m[91mDefine binary_grid2::condor->grid_interrupted [0m[91mDefine binary_grid2::condor->check_for_saved_snapshot Define binary_grid2::condor->pre_load_snapshot [0m[91mDefine binary_grid2::condor->post_load_snapshot [0m[91mDefine binary_grid2::condor->checkpoint -Define binary_grid2::condor->increment_checkpoint_time +[0m[91mDefine binary_grid2::condor->increment_checkpoint_time [0m[91mDefine binary_grid2::condor->output_allowed [0m[91mDefine binary_grid2::slurm->slurm_grid Define binary_grid2::slurm->slurm_workingdir Define binary_grid2::slurm->write_slurm_script -[0m[91mDefine binary_grid2::slurm->set_slurm_job_status +Define binary_grid2::slurm->set_slurm_job_status Define binary_grid2::slurm->get_slurm_job_status [0m[91mDefine binary_grid2::slurm->check_and_merge_slurm_jobs -Define binary_grid2::slurm->check_slurm_jobs_done +[0m[91mDefine binary_grid2::slurm->check_slurm_jobs_done Define binary_grid2::slurm->merge_slurm_jobs -[0m[91mDefine binary_grid2::slurm->slurm_submit -Define binary_grid2::slurm->jobid +Define binary_grid2::slurm->slurm_submit +[0m[91mDefine binary_grid2::slurm->jobid Define binary_grid2::slurm->slurm_script_data [0m[91mDefine binary_grid2::slurm->datafiles_string_comma -Define binary_grid2::slurm->datafiles_string +[0m[91mDefine binary_grid2::slurm->datafiles_string Define binary_grid2::slurm->slurm_rerun_command [0m[91mDefine binary_grid2::slurm->slurm_check_joining_file -Define binary_grid2::slurm->slurm_job_hook -Define binary_grid2::slurm->grid_interrupted +[0m[91mDefine binary_grid2::slurm->slurm_job_hook +[0m[91mDefine binary_grid2::slurm->grid_interrupted [0m[91mDefine binary_grid2::slurm->check_for_saved_snapshot -Define binary_grid2::slurm->pre_load_snapshot +[0m[91mDefine binary_grid2::slurm->pre_load_snapshot [0m[91mDefine binary_grid2::slurm->post_load_snapshot [0m[91mDefine binary_grid2::slurm->checkpoint -Define binary_grid2::slurm->increment_checkpoint_time -Define binary_grid2::slurm->output_allowed +[0m[91mDefine binary_grid2::slurm->increment_checkpoint_time +[0m[91mDefine binary_grid2::slurm->output_allowed [0mt/binary_grid.t .. ok All tests successful. -Files=1, Tests=1, 1 wallclock secs ( 0.02 usr 0.01 sys + 0.27 cusr 0.04 csys = 0.34 CPU) +Files=1, Tests=1, 0 wallclock secs ( 0.02 usr 0.00 sys + 0.29 cusr 0.02 csys = 0.33 CPU) Result: PASS Files found in blib/arch: installing files in blib/lib into architecture dependent library tree Installing /home/binary_c/perl5/perlbrew/perls/perl-5.31.5/lib/site_perl/5.31.5/x86_64-linux-thread-multi/auto/binary_grid/C/C.so @@ -7932,54 +6246,40 @@ Appending installation info to /home/binary_c/perl5/perlbrew/perls/perl-5.31.5/l OK Successfully installed binary_grid-v2.1.4 1 distribution installed -Removing intermediate container 50eeaf6e00d5 - ---> ef6afea1abff -Step 44/53 : WORKDIR /home/binary_c - ---> Running in c24f8212eebf -Removing intermediate container c24f8212eebf - ---> 7266fbae0556 -Step 45/53 : RUN rm -rf /home/binary_c/.cpanm/sources && rm -rf /home/binary_c/.cpanm/work - ---> Running in 29154a62546b -Removing intermediate container 29154a62546b - ---> 9211ea00f9f7 +Removing intermediate container 36245d6e27aa + ---> a7e32c7768cd Step 46/53 : WORKDIR /home/binary_c - ---> Running in 66b4f939f97b -Removing intermediate container 66b4f939f97b - ---> ee7e0ce0cac0 -Step 47/53 : RUN echo "alias psb='cd progs/stars/binary_c'" >> /home/binary_c/.profile && echo "alias psb='cd progs/stars/binary_c'" >> /home/binary_c/.bashrc && echo "export PATH=.:$PATH" >> /home/binary_c/.bashrc && echo "export PATH=.:$PATH" >> /home/binary_c/.profile - ---> Running in f4623c2b31f5 -Removing intermediate container f4623c2b31f5 - ---> cc6fa5d295a5 -Step 48/53 : USER root - ---> Running in 538c00b6fcfc -Removing intermediate container 538c00b6fcfc - ---> bd9eb206a529 -Step 49/53 : RUN rm -rf /var/lib/apt/lists/* - ---> Running in 12a457d86fab -Removing intermediate container 12a457d86fab - ---> e968067384b0 -Step 50/53 : USER binary_c - ---> Running in 6d05c641bcc5 -Removing intermediate container 6d05c641bcc5 - ---> d8e50ee9eaf0 -Step 51/53 : WORKDIR /home/binary_c/progs/stars/binary_c - ---> Running in 65852f10112c -Removing intermediate container 65852f10112c - ---> 54df345a675d -Step 52/53 : RUN make clean || true - ---> Running in f904b1f5afca -Make on 16 CPUs -[1;31mmake: Makefile: No such file or directory[0m -[1;31mmake: *** No rule to make target 'Makefile'. Stop.[0m - - -Done (return ) took 0.01 s -Removing intermediate container f904b1f5afca - ---> cfa1c70d00ec + ---> Running in 316375b24d36 +Removing intermediate container 316375b24d36 + ---> 4009791f91fb +Step 47/53 : RUN rm -rf /home/binary_c/.cpanm/sources && rm -rf /home/binary_c/.cpanm/work + ---> Running in 948fc853c5b6 +Removing intermediate container 948fc853c5b6 + ---> a0ebbc550e33 +Step 48/53 : WORKDIR /home/binary_c + ---> Running in ca32209f33b3 +Removing intermediate container ca32209f33b3 + ---> b50e3837e38d +Step 49/53 : RUN echo "alias psb='cd progs/stars/binary_c'" >> /home/binary_c/.profile && echo "alias psb='cd progs/stars/binary_c'" >> /home/binary_c/.bashrc && echo "export PATH=.:$PATH" >> /home/binary_c/.bashrc && echo "export PATH=.:$PATH" >> /home/binary_c/.profile + ---> Running in 3ffca7f94e0a +Removing intermediate container 3ffca7f94e0a + ---> be9b5030cb4e +Step 50/53 : USER root + ---> Running in 670a16857b3d +Removing intermediate container 670a16857b3d + ---> 295af8e84ab7 +Step 51/53 : RUN rm -rf /var/lib/apt/lists/* + ---> Running in 28593fdb59d7 +Removing intermediate container 28593fdb59d7 + ---> 42daea84c446 +Step 52/53 : USER binary_c + ---> Running in 32dc985592ac +Removing intermediate container 32dc985592ac + ---> f4ff47b1baf9 Step 53/53 : WORKDIR /home/binary_c - ---> Running in 8b4f7dce6e5e -Removing intermediate container 8b4f7dce6e5e - ---> 940fbc8a3ad7 + ---> Running in c8ed1ef9c6ab +Removing intermediate container c8ed1ef9c6ab + ---> 19ac76fe07ce [Warning] One or more build-args [CACHE_DATE] were not consumed -Successfully built 940fbc8a3ad7 +Successfully built 19ac76fe07ce Successfully tagged binary_c:latest diff --git a/docker/build.sh b/docker/build.sh index 95366230a..66ba10ae5 100755 --- a/docker/build.sh +++ b/docker/build.sh @@ -10,16 +10,17 @@ WD=$PWD # set cache date to 'date ...' for a unique (non-cached build) -#CACHE_DATE=$(date +%Y-%m-%d:%H:%M:%S) -CACHE_DATE=today +CACHE_DATE=$(date +%Y-%m-%d:%H:%M:%S) # default +# or today to use the cache +#CACHE_DATE=today # which git branch do we want? -#GIT_BRANCH=master -GIT_BRANCH=izzard-discs +GIT_BRANCH=master # default +#GIT_BRANCH=izzard-discs # TMPDIR is our temporary space : usually mktemp is good enough # but you may want to change this location manually -TMPDIR=$(mktemp -d -t ci-XXXXXXXXXX) +TMPDIR=$(mktemp -d -t ci-XXXXXXXXXX) # default ############################################################ # get binary_c version string -- GitLab