HOWTO Run Gluex Software on Windows
Introduction
Gluex software runs on windows 10 out of the box*
Is it 1 April joke? - No. It is April 2nd and it is not a joke.
How? - Windows now comes with a new feature which is known by several names (common for all devilish): "Windows subsystem for linux"(WSL) or "Bash on Windows" or "Bash on Ubuntu on Windows" or even "lxrun".
WSL provides a Linux-compatible kernel interface (containing no Linux kernel code), with user-mode binaries from Ubuntu running on top of it.
Roughly saying it is Ubuntu running on Windows kernel inside Windows.
Links:
WSL vs. Virtual machines vs. Cygwin
- Compared to VMs - WSL is a thin layer, which addresses linux system calls to NT kernel. Potentially performance is not wasted by virtualization, no problems like space on virtual disks. WSL has full access to windows file system and resources. Actually, it IS Windows running Ubuntu rig.
- Compared to Cygwin - Cygwin works in similar way but there is a huge difference. Software must be built/rebuilt for cygwin using cygwin environment. WSL is intended to be binary compatible with Ubuntu. And other-compatible too. So one can grab .deb package and use it. Or ctrl+c ctrl+v from askubuntu.com and it will just work. Because of this gluex software runs out of the box on WSL but it is often a pain to build a big codebase on cygwin.
Windows 15063.11 - known as "Creators update". Official release is planned on April 11, 2017 but RC is available now. Historically, when WSL appeared in 2015 as an alfa feature, it had a number of bugs. Now it is beta, many things where significantly improved and work smoothly (like running X11 apps). Starting with "Creators update" WSL comes with Ubuntu 16.04 (was 14.04 before).
GlueX offline software was (roughly) tested on 15063.11. It most probably should work on older versions too, but is not recommended because of the above reasons.
Out of the box - WSL now comes with ALL versions of Windows 10. It is just one command to install and activate it.
Installation
WSL installation:
- One has to enable "Developer mode" (type it in the search bar, and click that switch)
- Open terminal and write lxrun /install. After several questions installation is complete.
- To run it just print bash in terminal
Because the native Windows terminal (cmd.exe) is a shame, it is a good idea to use something like xfce-terminal. To do this:
- install XMing X11 server. (don't use VcXsrv, it has problems with OpenGL)
- put export DISPLAY=:0 in .bashrc
- install xfce4-terminal (sudo apt-get install xfce4-terminal)
- run it: bash -l -c xfce4-terminal
Stackoverlow question with more details
Gluex prerequesties
This Ubuntu version comes without compilers. Before installing hdpm prerequisites one has to also install build-essential
> sudo apt install build-essential
Gluex software
Just use hdpm as usual including installation of prerequesties printed by hdpm.
Other distributions
It is possible to install other linux distributions, including centos 7. But it requires more effort WSL Distribution Switcher
Run GlueX software
Features that where verified to work:
- JANA and co - HDGeant runs OK. For a sake of experiment, resulting hddm file was moved to some external Windows NTFS disk. Jana was able to process it.
- ROOT - root works. All features that where tested (like root files, DSelector) run without problems
- OpenGL - Surprisingly, GlueX geometry converted to ROOT was even rendered with OpenGL (does it rendered with DirectX under the hood???)
- Geant 4 - Has not been tested yet.
TL; DR; It was tested that our software runs on WSL, which is Ubuntu with windows kernel running on windows.