This wiki is obsolete, see the NorduGrid web pages for up to date information.
MS Windows
NOTE: This page is out of date and is kept for purely historical reasons. |
ARC is working on Windows (XP, Vista)
Bugs
Reports on the testing of the latest and previous versions can be found on https://www.knowarc.eu/wiki/index.php/Final_ARC_Release/Client_tests#CLI_Windows.
Packages
You need to install these packages:
- ARC1 MS Windows installer ARC1-Hamburg-release
- Globus Toolkit (v4.21) MS Windows installer: Globus-package-v4.21
Document
Deliverable 5.3-1 Native client interface on MS Windows and Mac OS-X
Environment setup
Control panel->System->Special->Environment variables->System variables
You need to set these variables:
- X509_USER_CERT
- X509_USER_KEY
Automatic testing
Example client configuration
Here are some test services.
ARC0, ARC1, Unicore job submission
- RFC proxy creation for these middlewares:
C:\>arcproxy Your identity: /C=HU/O=NIIF CA/OU=GRID/OU=NIIF/CN=Gabor Roczei/emailAddress=roczei@niif.hu ...............................................++++++ ...............................++++++ Proxy generation succeeded Your proxy is valid until: Wed, 08 Jul 2009 21:37:09 GMT C:\>
- ARC0:
C:\>arcsub -z client.xml -c arc0 test.jsdl Job submitted with jobid: gsiftp://knowarc1.grid.niif.hu:2811/jobs/318731247053967475390863 C:\>
- ARC1:
C:\>arcsub -z client.xml -c arex2 test.jsdl Job submitted with jobid: https://interop.grid.niif.hu:2010/arex-x509/15711247053729737964426 C:\>
- Unicore
C:\>arcsub -z client.xml -c unicore test.jsdl Job submitted with jobid: https://testbed5.grid.upjs.sk:8080/KnowARC-testbed/services/BESActivity?res=447c8dd6-5e2c-4be7-bbca-6a50ec86ec44 C:\>
CREAM job submission
VOMS file:
[roczei@knowarc1:~] $cat /etc/vomses "gin.ggf.org" "kuiken.nikhef.nl" "15050" "/O=dutchgrid/O=hosts/OU=nikhef.nl/CN=kuiken.nikhef.nl" "gin.ggf.org" "pamela" "voms.cnaf.infn.it" "15013" "/C=IT/O=INFN/OU=Host/L=CNAF/CN=voms.cnaf.infn.it" "pamela" "atlas-old" "voms.cern.ch" "15001" "/C=CH/O=CERN/OU=GRID/CN=host/voms.cern.ch" "atlas-old" "atlas-lcg" "lcg-voms.cern.ch" "15001" "/C=CH/O=CERN/OU=GRID/CN=host/lcg-voms.cern.ch" "atlas-lcg" "knowarc.eu" "arthur.hep.lu.se" "15001" "/O=Grid/O=NorduGrid/CN=host/arthur.hep.lu.se" "knowarc.eu" "atlas" "voms.cern.ch" "15001" "/DC=ch/DC=cern/OU=computers/CN=voms.cern.ch" "atlas" "nordugrid.org" "voms.uninett.no" "15015" "/O=Grid/O=NorduGrid/CN=host/voms.ndgf.org" "nordugrid.org" "playground.knowarc.eu" "arthur.hep.lu.se" "15002" "/O=Grid/O=NorduGrid/CN=host/arthur.hep.lu.se" "playground.knowarc.eu" "dteam" "lcg-voms.cern.ch" "15004" "/DC=ch/DC=cern/OU=computers/CN=lcg-voms.cern.ch" "dteam" [roczei@knowarc1:~] $
- Legacy proxy creation
C:\>arcproxy -O -S knowarc.eu Your identity: /C=HU/O=NIIF CA/OU=GRID/OU=NIIF/CN=Gabor Roczei/emailAddress=roczei@niif.hu ......++++++ ....++++++ Contacting VOMS server (named knowarc.eu ): arthur.hep.lu.se on port: 15001 Proxy generation succeeded Your proxy is valid until: Wed, 08 Jul 2009 21:39:25 GMT C:\>
C:\>arcsub -z client.xml -c cream job.jdl Job submitted with jobid: https://cream.grid.upjs.sk:8443/ce-cream/services/CREAM2/CREAM534149033 C:\>
ARC1 win32 development environment install
Download
The size of this zip file is 240 MByte:
http://www.knowarc.eu/download/win32-arc-development.zip
The environment need about 1 GByte when you uncompress it.
These directories will be created (uncompress dir should be the "c:\"):
c:\GTK c:\Globus c:\MinGW c:\OpenSSL c:\Python24 c:\msys
MSYS shell executable
c:\msys\1.0\msys.bat
Limitation
This python error has not fixed yet:
test -z "C:\Python24\Lib\site-packages" || /bin/mkdir -p "C:\Python24\Lib\site-packages" /bin/sh ../libtool --mode=install /bin/install -c '_arc.la' 'C:\Python24\Lib\site-packages/_arc.la' libtool: install: /bin/install -c .libs/_arc.dll.a C:\Python24\Lib\site-packages/_arc.dll.a /bin/install: cannot create regular file `C:Python24Libsite-packages/_arc.dll.a': No such file or directory make[2]: *** [install-pythonLTLIBRARIES] Error 1 make[2]: Leaving directory `/home/Rendszergazda/arc1/python' make[1]: *** [install-am] Error 2 make[1]: Leaving directory `/home/Rendszergazda/arc1/python' make: *** [install-recursive] Error 1
Resolution:
Copy these files to the install directory (C:\Python24\Lib\site-packages) because we have not found other solution yet
Example configure command
./configure CXXFLAGS="-g -O0 -I/usr/local/include -I/usr/local/include/python2.4" OPENSSL_CFLAGS="-I/c/OpenSSL/include" \ OPENSSL_LIBS="-L/c/OpenSSL -lssl32 -leay32" --prefix=/c/arc1 LDFLAGS="-L/usr/local/bin -L/usr/local/lib -L/usr/local/BerkeleyDB.4.7/bin \ -L/usr/local/lib/python2.4" --with-dbcxx-include="/usr/local/BerkeleyDB.4.7/include" --disable-java --enable-storage-service \ --enable-sched-service --enable-paul-service --enable-hopi-service --enable-compiler-service --enable-charon-service \ --enable-isi-service --enable-python
SVN clients
GUI (TortoiseSVN)
http://sourceforge.net/projects/tortoisesvn/files/Application/
CLI (Subversion)
http://subversion.tigris.org/getting.html#binary-packages
Globus packages
The same set of Globus packages is available as for Fedora and Debian modulo the globus-rls-server (we don't need the server to run on Windows, and it has additional external dependencies) and globus-usage (it is only used to build globus-rls-server).
RPM repo (binary packages):
http://www.grid.tsl.uu.se/repos/globus-mingw/noarch/
RPM repo (source packages):
http://www.grid.tsl.uu.se/repos/globus-mingw/src/
Windows installer:
http://www.grid.tsl.uu.se/repos/globus-mingw/GlobusInstaller.exe
Build instructions (specfiles) for cross-compilation can be found under:
http://svn.nordugrid.org/repos/workarea/T5.2/fedora-distribution/
Test listing
Important: please set the GLOBUS_LOCATION variable
$ export HOMEDRIVE='Z:' $ export HOMEPATH='\home\ellert' $ export GLOBUS_LOCATION='Z:\usr\i686-pc-mingw32\sys-root\mingw' $ mkdir ~/.wine/drive_c/windows/system32/drivers/etc $ ln -s /etc/grid-security ~/.wine/drive_c/windows/system32/drivers/etc $ /usr/i686-pc-mingw32/sys-root/mingw/bin/grid-proxy-init.exe -pwstdin fixme:toolhelp:CreateToolhelp32Snapshot Unimplemented: heap list snapshot fixme:toolhelp:Heap32ListFirst : stub Your identity: /O=Grid/O=NorduGrid/OU=fysast.uu.se/CN=Mattias Ellert <passphrase was here> Creating proxy .................................... Done Your proxy is valid until: Mon May 11 10:48:36 2009 $ /usr/i686-pc-mingw32/sys-root/mingw/bin/grid-proxy-info.exe fixme:toolhelp:CreateToolhelp32Snapshot Unimplemented: heap list snapshot fixme:toolhelp:Heap32ListFirst : stub subject : /O=Grid/O=NorduGrid/OU=fysast.uu.se/CN=Mattias Ellert/CN=735918324 issuer : /O=Grid/O=NorduGrid/OU=fysast.uu.se/CN=Mattias Ellert identity : /O=Grid/O=NorduGrid/OU=fysast.uu.se/CN=Mattias Ellert type : RFC 3820 compliant impersonation proxy strength : 512 bits path : Z:\home\ellert\x509up_uellert timeleft : 11:58:44 $ /usr/i686-pc-mingw32/sys-root/mingw/bin/globus-url-copy.exe gsiftp://grid.tsl.uu.se/storage /test/echo.sh echo.sh fixme:toolhelp:CreateToolhelp32Snapshot Unimplemented: heap list snapshot fixme:toolhelp:Heap32ListFirst : stub fixme:ntdll:NtQueryInformationFile Unsupported class (16) $ cat echo.sh #!/bin/sh echo $* $ /usr/i686-pc-mingw32/sys-root/mingw/bin/globus-rls-cli.exe query lrc lfn __storage_service__ rls://grid.tsl.uu.se fixme:toolhelp:CreateToolhelp32Snapshot Unimplemented: heap list snapshot fixme:toolhelp:Heap32ListFirst : stub __storage_service__ se://alice.grid.upjs.sk:8000/sse __storage_service__ se://knowarc1.grid.niif.hu:8000/se __storage_service__ se://morpheus.dcgc.dk:8000/se __storage_service__ se://pgs02.grid.upjs.sk:8000/sse
The "fixme" lines will not show up if you are running on a real Windows. The -pwstdin flag for grid-proxy-init should not be necessary either (wine doesn't do _getch() very well).
Portability issues
- Directory separator handling: MS Windows is using this “\” while Unix systems has “/”. The solution was to modify the source code to handle different directory separators using the generic macros G_DIR_SEPARATOR_S and G_DIR_SEPARATOR from glibmm, as these are operating system independent solutions.
- Temporary directory location is different on MS Windows compared to Unix systems. The MS Windows temporary directory is located in the local user directory but on Unix it is put in a "central" place (“/tmp”). To solve this problem in a platform independent way, the source code was adapted to use the glibmm method named Glib::get_tmp_dir().
- Duplicate name definitions
- An internal ARC method named CopyFile conflicted with method provided by the MinGW framework. This was resolved by renaming the ARC method to ARCCopyFile.
- The Arc namespace conflicted with components in the MS Windows GDI (Graphics Device Interface). The solution was to disable GDI as this is not used by the client interface. Initially target for Unix, parts of the source code relied on Unix specific password data structures, which does not exist on MS windows. To accommodate this, a new structure (“passwd”) was defined in the Arc specific win32.h header file.
- Proxy creation
- Proxy file creation using the arcproxy utility produced incorrect expiration times. The affected OpenSSL code in ARC was corrected.
- For the CREAM ACC flavour, the created proxy time was inconsistent and resulted in a delegation failure. The solution was to shift the proxy time a few minutes.
- Thread handling
- Since the pthread library is not part of the MinGW/MSYS environment, a custom ARC Thread method, Arc::CreateThreadFunction, was created as a wrapper method for Glib thread creation. The LDAP DMC was modified appropriately to use this creation of LDAP binding threads.
- ARC job submission caused a thread lock due to a blocking problem in ARC TargetGenerator method. It was corrected using Glib::Mutex::Lock.
- An array overflow inside the ARC DMC caused the arccp program to enter in an infinite loop and consume all available memory. This problem was removed by increasing the array size appropriately.
- The command line parsing required users to add an extra dash ('-') for any optional argument. This was solved by upgrading glibmm to version 2.6 on MS Windows.