forked from modflowpy/install-intelfortran-action
-
Notifications
You must be signed in to change notification settings - Fork 1
/
action.yml
128 lines (114 loc) · 5.44 KB
/
action.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
name: Install Intel Fortran
description: Install, cache, and configure environment for the Intel Fortran compiler
inputs:
path:
description: Install location
required: false
default: ~/.local/bin/ifort
setvars:
description: Whether to run scripts to configure oneAPI environment variables
required: false
default: 'true'
cache:
description: Whether to cache the installation
required: false
default: 'true'
outputs:
cache-hit:
description: Whether the installation was restored from cache
value: ${{ steps.cache-ifort.outputs.cache-hit }}
runs:
using: composite
steps:
- name: Set install path (Windows)
if: runner.os == 'Windows'
shell: pwsh
run: |
# normalize install path
$normalized = $(python3 $(Join-Path "$env:GITHUB_ACTION_PATH" "scripts" "normalize_path.py") "${{ inputs.path }}")
echo "normalized install dir path: $normalized"
# other locations fail on windows
$default = "C:\Program Files (x86)\Intel\oneAPI"
if (!($normalized -eq $default)) {
echo "overriding configured path with default Windows install path: '$default'"
$normalized = $default
}
echo "INTEL_HPCKIT_INSTALL_PATH=$normalized" | Out-File -FilePath "$env:GITHUB_ENV" -Encoding utf8 -Append
md -Force "$normalized"
- name: Set HPC kit environment variables
shell: bash
run: |
echo "setting HPC kit variables"
version="2023.1.0"
if [ "$RUNNER_OS" == "Linux" ]; then
echo "INTEL_HPCKIT_INSTALLER_URL=https:/registrationcenter-download.intel.com/akdlm/IRC_NAS/1ff1b38a-8218-4c53-9956-f0b264de35a4/l_HPCKit_p_$version.46346_offline.sh" >> $GITHUB_ENV
echo "INTEL_HPCKIT_COMPONENTS=intel.oneapi.lin.ifort-compiler" >> $GITHUB_ENV
elif [ "$RUNNER_OS" == "macOS" ]; then
echo "INTEL_HPCKIT_INSTALLER_URL=https:/registrationcenter-download.intel.com/akdlm/IRC_NAS/a99cb1c5-5af6-4824-9811-ae172d24e594/m_HPCKit_p_$version.44543_offline.dmg" >> $GITHUB_ENV
echo "INTEL_HPCKIT_COMPONENTS=intel.oneapi.mac.ifort-compiler" >> $GITHUB_ENV
else
echo "INTEL_HPCKIT_INSTALLER_URL=https:/registrationcenter-download.intel.com/akdlm/IRC_NAS/2a13d966-fcc5-4a66-9fcc-50603820e0c9/w_HPCKit_p_$version.46357_offline.exe" >> $GITHUB_ENV
echo "INTEL_HPCKIT_COMPONENTS=intel.oneapi.win.ifort-compiler" >> $GITHUB_ENV
fi
echo "using HPC kit version $version"
echo "INTEL_HPCKIT_VERSION=$version" >> $GITHUB_ENV
- name: Restore cache
if: runner.os == 'windows' && inputs.cache == 'true'
id: cache-ifort
uses: actions/cache/restore@v4
with:
path: ${{ env.INTEL_HPCKIT_INSTALL_PATH }}
key: intelfortran-${{ runner.os }}-${{ env.INTEL_HPCKIT_VERSION }}-${{ env.INTEL_HPCKIT_COMPONENTS }}
- name: Install compilers (Windows)
if: runner.os == 'Windows' && steps.cache-ifort.outputs.cache-hit != 'true'
shell: cmd
run: |
echo downloading and running HPC kit installer
call "%GITHUB_ACTION_PATH%\scripts\install_windows.bat" "${{ env.INTEL_HPCKIT_INSTALLER_URL }}" "${{ env.INTEL_HPCKIT_COMPONENTS }}"
- name: exclude unused files from cache
if: runner.os == 'windows' && inputs.cache == 'true' && steps.cache-ifort.outputs.cache-hit != 'true'
shell: bash
run: $GITHUB_ACTION_PATH/scripts/cache_exclude_windows.sh
- name: Save cache
if: inputs.cache == 'true' && steps.cache-ifort.outputs.cache-hit != 'true'
uses: actions/cache/save@v4
with:
path: ${{ env.INTEL_HPCKIT_INSTALL_PATH }}
key: intelfortran-${{ runner.os }}-${{ env.INTEL_HPCKIT_VERSION }}-${{ env.INTEL_HPCKIT_COMPONENTS }}
- name: Check compiler version (Windows)
if: runner.os == 'Windows'
shell: cmd
run: |
for /f "tokens=* usebackq" %%f in (`dir /b "%INTEL_HPCKIT_INSTALL_PATH%\compiler\" ^| findstr /V latest ^| sort`) do @set "LATEST=%%f"
echo INTEL_COMPILER_VERSION=%LATEST%>>"%GITHUB_ENV%"
- name: Configure system path (Windows)
if: runner.os == 'Windows'
shell: cmd
run: |
set bindir=%INTEL_HPCKIT_INSTALL_PATH%\compiler\%INTEL_COMPILER_VERSION%\windows\bin\intel64
echo adding compiler bin dir '%bindir%' to path
echo %bindir%>>"%GITHUB_PATH%"
echo INTEL_COMPILER_BIN_PATH=%bindir%>>"%GITHUB_ENV%"
- name: Set environment variables (Windows)
if: runner.os == 'Windows'
shell: cmd
run: |
echo FC=ifort>>"%GITHUB_ENV%"
echo ONEAPI_ROOT=%INTEL_HPCKIT_INSTALL_PATH%>>"%GITHUB_ENV%"
- name: Run setvars script (Windows)
if: runner.os == 'Windows' && inputs.setvars == 'true'
shell: cmd
run: |
for /f "tokens=* usebackq" %%f in (`dir /b "%INTEL_HPCKIT_INSTALL_PATH%\compiler\" ^| findstr /V latest ^| sort`) do @set "LATEST=%%f"
:: this script fails when install location is not the default
call "%INTEL_HPCKIT_INSTALL_PATH%\compiler\%LATEST%\env\vars.bat"
set | findstr /c:"oneAPI" >> "%GITHUB_ENV%"
- name: Set SETVARS_COMPLETED
if: inputs.setvars == 'true'
shell: bash
run: echo "SETVARS_COMPLETED=1" >> $GITHUB_ENV
# GitHub Actions prepends GNU linker to the PATH before all bash steps, hide it so MSVC linker is found
- name: Hide GNU linker (Windows)
if: runner.os == 'Windows'
shell: bash
run: mv "/usr/bin/link" "$RUNNER_TEMP/link"