Skip to content

Commit 8874c63

Browse files
committed
Use "mlocati/inspect-visualstudio" GitHub action
1 parent f6890dd commit 8874c63

File tree

3 files changed

+72
-229
lines changed

3 files changed

+72
-229
lines changed

.github/workflows/build.yml

Lines changed: 68 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -349,6 +349,17 @@ jobs:
349349
-
350350
name: Checkout
351351
uses: actions/checkout@v6
352+
-
353+
name: Detect Visual Studio
354+
if: matrix.compiler == 'msvc'
355+
id: vcvars
356+
uses: mlocati/inspect-visualstudio@v1
357+
with:
358+
architecture: ${{ matrix.bits }}
359+
windows-paths: |
360+
INCLUDE
361+
LIB
362+
PATH
352363
-
353364
name: Create directory structure
354365
shell: pwsh
@@ -376,6 +387,8 @@ jobs:
376387
name: Set variables
377388
id: vars
378389
shell: pwsh
390+
env:
391+
VC_PATH: ${{ steps.vcvars.outputs.path }}
379392
run: >
380393
./service/case-vars.ps1
381394
-Bits ${{ matrix.bits }}
@@ -389,6 +402,7 @@ jobs:
389402
-JsonCVersionDefault '${{ needs.versions.outputs.json-c-version-default }}'
390403
-GettextVersion '${{ needs.versions.outputs.gettext-version }}'
391404
-SignpathSigningPolicyDefault '${{ needs.versions.outputs.signpath-signing-policy-default }}'
405+
-VCPath $env:VC_PATH
392406
-
393407
name: Install Cygwin
394408
uses: cygwin/cygwin-install-action@v6
@@ -534,8 +548,8 @@ jobs:
534548
id: iconv-configure
535549
working-directory: src\libiconv-${{ needs.versions.outputs.iconv-version }}
536550
env:
537-
INCLUDE: ${{ steps.vars.outputs.include-env-var }}
538-
LIB: ${{ steps.vars.outputs.lib-env-var }}
551+
INCLUDE: ${{ steps.vcvars.outputs.include }}
552+
LIB: ${{ steps.vcvars.outputs.lib }}
539553
run: |
540554
mkdir build
541555
cd build
@@ -544,32 +558,32 @@ jobs:
544558
name: Compile iconv (1st time)
545559
working-directory: src\libiconv-${{ needs.versions.outputs.iconv-version }}\build
546560
env:
547-
INCLUDE: ${{ steps.vars.outputs.include-env-var }}
548-
LIB: ${{ steps.vars.outputs.lib-env-var }}
561+
INCLUDE: ${{ steps.vcvars.outputs.include }}
562+
LIB: ${{ steps.vcvars.outputs.lib }}
549563
run: make --jobs=$(nproc)
550564
-
551565
name: Check iconv (1st time)
552566
if: needs.versions.outputs.quick != 'yes'
553567
working-directory: src\libiconv-${{ needs.versions.outputs.iconv-version }}\build
554568
env:
555-
INCLUDE: ${{ steps.vars.outputs.include-env-var }}
556-
LIB: ${{ steps.vars.outputs.lib-env-var }}
569+
INCLUDE: ${{ steps.vcvars.outputs.include }}
570+
LIB: ${{ steps.vcvars.outputs.lib }}
557571
run: make --jobs=$(nproc) check
558572
-
559573
name: Install iconv (1st time)
560574
working-directory: src\libiconv-${{ needs.versions.outputs.iconv-version }}\build
561575
env:
562-
INCLUDE: ${{ steps.vars.outputs.include-env-var }}
563-
LIB: ${{ steps.vars.outputs.lib-env-var }}
576+
INCLUDE: ${{ steps.vcvars.outputs.include }}
577+
LIB: ${{ steps.vcvars.outputs.lib }}
564578
run: make --jobs=$(nproc) ${{ steps.vars.outputs.make-install-argument }}
565579
-
566580
name: Configure curl
567581
if: steps.vars.outputs.curl-version
568582
id: curl-configure
569583
working-directory: src\curl-${{ steps.vars.outputs.curl-version }}
570584
env:
571-
INCLUDE: ${{ steps.vars.outputs.include-env-var }}
572-
LIB: ${{ steps.vars.outputs.lib-env-var }}
585+
INCLUDE: ${{ steps.vcvars.outputs.include }}
586+
LIB: ${{ steps.vcvars.outputs.lib }}
573587
run: |
574588
mkdir build
575589
cd build
@@ -587,24 +601,24 @@ jobs:
587601
if: steps.vars.outputs.curl-version
588602
working-directory: src\curl-${{ steps.vars.outputs.curl-version }}\build\lib
589603
env:
590-
INCLUDE: ${{ steps.vars.outputs.include-env-var }}
591-
LIB: ${{ steps.vars.outputs.lib-env-var }}
604+
INCLUDE: ${{ steps.vcvars.outputs.include }}
605+
LIB: ${{ steps.vcvars.outputs.lib }}
592606
run: make --jobs=$(nproc) ${{ steps.vars.outputs.make-install-argument }}
593607
-
594608
name: Install curl - include
595609
if: steps.vars.outputs.curl-version
596610
working-directory: src\curl-${{ steps.vars.outputs.curl-version }}\build\include
597611
env:
598-
INCLUDE: ${{ steps.vars.outputs.include-env-var }}
599-
LIB: ${{ steps.vars.outputs.lib-env-var }}
612+
INCLUDE: ${{ steps.vcvars.outputs.include }}
613+
LIB: ${{ steps.vcvars.outputs.lib }}
600614
run: make --jobs=$(nproc) ${{ steps.vars.outputs.make-install-argument }}
601615
-
602616
name: Prepare JSON-C
603617
if: steps.vars.outputs.json-c-version
604618
working-directory: src\json-c-${{ steps.vars.outputs.json-c-version }}
605619
env:
606-
INCLUDE: ${{ steps.vars.outputs.include-env-var }}
607-
LIB: ${{ steps.vars.outputs.lib-env-var }}
620+
INCLUDE: ${{ steps.vcvars.outputs.include }}
621+
LIB: ${{ steps.vcvars.outputs.lib }}
608622
run: |
609623
mkdir build
610624
cd build
@@ -615,24 +629,24 @@ jobs:
615629
if: steps.vars.outputs.json-c-version
616630
working-directory: src\json-c-${{ steps.vars.outputs.json-c-version }}\build
617631
env:
618-
INCLUDE: ${{ steps.vars.outputs.include-env-var }}
619-
LIB: ${{ steps.vars.outputs.lib-env-var }}
632+
INCLUDE: ${{ steps.vcvars.outputs.include }}
633+
LIB: ${{ steps.vcvars.outputs.lib }}
620634
run: make --jobs=$(nproc) all
621635
-
622636
name: Install JSON-C
623637
if: steps.vars.outputs.json-c-version
624638
working-directory: src\json-c-${{ steps.vars.outputs.json-c-version }}\build
625639
env:
626-
INCLUDE: ${{ steps.vars.outputs.include-env-var }}
627-
LIB: ${{ steps.vars.outputs.lib-env-var }}
640+
INCLUDE: ${{ steps.vcvars.outputs.include }}
641+
LIB: ${{ steps.vcvars.outputs.lib }}
628642
run: make install/strip
629643
-
630644
name: Configure gettext
631645
id: gettext-configure
632646
working-directory: src\gettext-${{ needs.versions.outputs.gettext-version }}
633647
env:
634-
INCLUDE: ${{ steps.vars.outputs.include-env-var }}
635-
LIB: ${{ steps.vars.outputs.lib-env-var }}
648+
INCLUDE: ${{ steps.vcvars.outputs.include }}
649+
LIB: ${{ steps.vcvars.outputs.lib }}
636650
run: |
637651
mkdir build
638652
cd build
@@ -647,98 +661,98 @@ jobs:
647661
name: Compile gettext/gnulib-local
648662
working-directory: src\gettext-${{ needs.versions.outputs.gettext-version }}\build\gnulib-local
649663
env:
650-
INCLUDE: ${{ steps.vars.outputs.include-env-var }}
651-
LIB: ${{ steps.vars.outputs.lib-env-var }}
664+
INCLUDE: ${{ steps.vcvars.outputs.include }}
665+
LIB: ${{ steps.vcvars.outputs.lib }}
652666
run: make --jobs=$(nproc)
653667
-
654668
name: Check gettext/gnulib-local
655669
if: needs.versions.outputs.quick != 'yes'
656670
working-directory: src\gettext-${{ needs.versions.outputs.gettext-version }}\build\gnulib-local
657671
env:
658-
INCLUDE: ${{ steps.vars.outputs.include-env-var }}
659-
LIB: ${{ steps.vars.outputs.lib-env-var }}
672+
INCLUDE: ${{ steps.vcvars.outputs.include }}
673+
LIB: ${{ steps.vcvars.outputs.lib }}
660674
run: make --jobs=$(nproc) check
661675
-
662676
name: Install gettext/gnulib-local
663677
working-directory: src\gettext-${{ needs.versions.outputs.gettext-version }}\build\gnulib-local
664678
env:
665-
INCLUDE: ${{ steps.vars.outputs.include-env-var }}
666-
LIB: ${{ steps.vars.outputs.lib-env-var }}
679+
INCLUDE: ${{ steps.vcvars.outputs.include }}
680+
LIB: ${{ steps.vcvars.outputs.lib }}
667681
run: make --jobs=$(nproc) ${{ steps.vars.outputs.make-install-argument }}
668682
-
669683
name: Compile gettext/gettext-runtime
670684
working-directory: src\gettext-${{ needs.versions.outputs.gettext-version }}\build\gettext-runtime
671685
env:
672-
INCLUDE: ${{ steps.vars.outputs.include-env-var }}
673-
LIB: ${{ steps.vars.outputs.lib-env-var }}
686+
INCLUDE: ${{ steps.vcvars.outputs.include }}
687+
LIB: ${{ steps.vcvars.outputs.lib }}
674688
run: make --jobs=$(nproc)
675689
-
676690
name: Check gettext/gettext-runtime
677691
if: needs.versions.outputs.quick != 'yes'
678692
working-directory: src\gettext-${{ needs.versions.outputs.gettext-version }}\build\gettext-runtime
679693
env:
680-
INCLUDE: ${{ steps.vars.outputs.include-env-var }}
681-
LIB: ${{ steps.vars.outputs.lib-env-var }}
694+
INCLUDE: ${{ steps.vcvars.outputs.include }}
695+
LIB: ${{ steps.vcvars.outputs.lib }}
682696
run: make --jobs=$(nproc) check
683697
-
684698
name: Install gettext/gettext-runtime
685699
working-directory: src\gettext-${{ needs.versions.outputs.gettext-version }}\build\gettext-runtime
686700
env:
687-
INCLUDE: ${{ steps.vars.outputs.include-env-var }}
688-
LIB: ${{ steps.vars.outputs.lib-env-var }}
701+
INCLUDE: ${{ steps.vcvars.outputs.include }}
702+
LIB: ${{ steps.vcvars.outputs.lib }}
689703
run: make --jobs=$(nproc) ${{ steps.vars.outputs.make-install-argument }}
690704
-
691705
name: Compile gettext/libtextstyle
692706
working-directory: src\gettext-${{ needs.versions.outputs.gettext-version }}\build\libtextstyle
693707
env:
694-
INCLUDE: ${{ steps.vars.outputs.include-env-var }}
695-
LIB: ${{ steps.vars.outputs.lib-env-var }}
708+
INCLUDE: ${{ steps.vcvars.outputs.include }}
709+
LIB: ${{ steps.vcvars.outputs.lib }}
696710
run: make --jobs=$(nproc)
697711
-
698712
name: Check gettext/libtextstyle
699713
if: needs.versions.outputs.quick != 'yes'
700714
working-directory: src\gettext-${{ needs.versions.outputs.gettext-version }}\build\libtextstyle
701715
env:
702-
INCLUDE: ${{ steps.vars.outputs.include-env-var }}
703-
LIB: ${{ steps.vars.outputs.lib-env-var }}
716+
INCLUDE: ${{ steps.vcvars.outputs.include }}
717+
LIB: ${{ steps.vcvars.outputs.lib }}
704718
run: make --jobs=$(nproc) check
705719
-
706720
name: Install gettext/libtextstyle
707721
working-directory: src\gettext-${{ needs.versions.outputs.gettext-version }}\build\libtextstyle
708722
env:
709-
INCLUDE: ${{ steps.vars.outputs.include-env-var }}
710-
LIB: ${{ steps.vars.outputs.lib-env-var }}
723+
INCLUDE: ${{ steps.vcvars.outputs.include }}
724+
LIB: ${{ steps.vcvars.outputs.lib }}
711725
run: make --jobs=$(nproc) ${{ steps.vars.outputs.make-install-argument }}
712726
-
713727
name: Compile gettext/gettext-tools
714728
working-directory: src\gettext-${{ needs.versions.outputs.gettext-version }}\build\gettext-tools
715729
env:
716-
INCLUDE: ${{ steps.vars.outputs.include-env-var }}
717-
LIB: ${{ steps.vars.outputs.lib-env-var }}
730+
INCLUDE: ${{ steps.vcvars.outputs.include }}
731+
LIB: ${{ steps.vcvars.outputs.lib }}
718732
run: make --jobs=$(nproc)
719733
-
720734
name: Check gettext/gettext-tools
721735
if: needs.versions.outputs.quick != 'yes'
722736
working-directory: src\gettext-${{ needs.versions.outputs.gettext-version }}\build\gettext-tools
723737
env:
724-
INCLUDE: ${{ steps.vars.outputs.include-env-var }}
725-
LIB: ${{ steps.vars.outputs.lib-env-var }}
738+
INCLUDE: ${{ steps.vcvars.outputs.include }}
739+
LIB: ${{ steps.vcvars.outputs.lib }}
726740
run: XFAIL_TESTS='${{ steps.vars.outputs.gettext-xfail-gettext-tools }}' make --jobs=$(nproc) check
727741
-
728742
name: Install gettext/gettext-tools
729743
working-directory: src\gettext-${{ needs.versions.outputs.gettext-version }}\build\gettext-tools
730744
env:
731-
INCLUDE: ${{ steps.vars.outputs.include-env-var }}
732-
LIB: ${{ steps.vars.outputs.lib-env-var }}
745+
INCLUDE: ${{ steps.vcvars.outputs.include }}
746+
LIB: ${{ steps.vcvars.outputs.lib }}
733747
run: make --jobs=$(nproc) ${{ steps.vars.outputs.make-install-argument }}
734748
-
735749
# We need to rebuild iconv because it depends on gettext's libintl in order to be localizable
736750
name: Configure iconv (2nd time)
737751
if: needs.versions.outputs.quick != 'yes'
738752
working-directory: src\libiconv-${{ needs.versions.outputs.iconv-version }}
739753
env:
740-
INCLUDE: ${{ steps.vars.outputs.include-env-var }}
741-
LIB: ${{ steps.vars.outputs.lib-env-var }}
754+
INCLUDE: ${{ steps.vcvars.outputs.include }}
755+
LIB: ${{ steps.vcvars.outputs.lib }}
742756
run: |
743757
rm -rf build
744758
mkdir build
@@ -750,24 +764,24 @@ jobs:
750764
if: needs.versions.outputs.quick != 'yes'
751765
working-directory: src\libiconv-${{ needs.versions.outputs.iconv-version }}\build
752766
env:
753-
INCLUDE: ${{ steps.vars.outputs.include-env-var }}
754-
LIB: ${{ steps.vars.outputs.lib-env-var }}
767+
INCLUDE: ${{ steps.vcvars.outputs.include }}
768+
LIB: ${{ steps.vcvars.outputs.lib }}
755769
run: make --jobs=$(nproc)
756770
-
757771
name: Check iconv (2nd time)
758772
if: needs.versions.outputs.quick != 'yes'
759773
working-directory: src\libiconv-${{ needs.versions.outputs.iconv-version }}\build
760774
env:
761-
INCLUDE: ${{ steps.vars.outputs.include-env-var }}
762-
LIB: ${{ steps.vars.outputs.lib-env-var }}
775+
INCLUDE: ${{ steps.vcvars.outputs.include }}
776+
LIB: ${{ steps.vcvars.outputs.lib }}
763777
run: make --jobs=$(nproc) check
764778
-
765779
name: Install iconv (2nd time)
766780
if: needs.versions.outputs.quick != 'yes'
767781
working-directory: src\libiconv-${{ needs.versions.outputs.iconv-version }}\build
768782
env:
769-
INCLUDE: ${{ steps.vars.outputs.include-env-var }}
770-
LIB: ${{ steps.vars.outputs.lib-env-var }}
783+
INCLUDE: ${{ steps.vcvars.outputs.include }}
784+
LIB: ${{ steps.vcvars.outputs.lib }}
771785
run: make --jobs=$(nproc) ${{ steps.vars.outputs.make-install-argument }}
772786
-
773787
name: Finalize install dir

service/case-vars.ps1

Lines changed: 4 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,9 @@ param (
2929
[ValidateLength(1, [int]::MaxValue)]
3030
[string] $GettextVersion,
3131
[Parameter(Mandatory = $false)]
32-
[string] $SignpathSigningPolicyDefault
32+
[string] $SignpathSigningPolicyDefault,
33+
[Parameter(Mandatory = $false)]
34+
[string] $VCPath
3335
)
3436

3537
$ErrorActionPreference = 'Stop'
@@ -89,9 +91,6 @@ $cygwinPath = @(
8991
"$cygwinInstalledPath/bin"
9092
)
9193

92-
$includeEnvVar = ''
93-
$libEnvVar = ''
94-
9594
if ($Compiler -eq 'gcc') {
9695
$cygwinPackages += @(
9796
"mingw64-$mingwArchitecture-gcc-core"
@@ -152,17 +151,13 @@ if ($Compiler -eq 'gcc') {
152151
$SignpathSigningPolicy = $SignpathSigningPolicyDefault
153152
$CollectPrograms = $true
154153
} elseif ($Compiler -eq 'msvc') {
155-
$vcvars = [VCVars]::new($Bits)
156154
$cygwinPackages += @(
157155
"mingw64-$mingwArchitecture-binutils" # iconv requires windres
158156
"mingw64-$mingwArchitecture-gcc-core" # windres requires gcc
159157
)
160-
161-
foreach ($p in $vcvars.GetPathDirs()) {
158+
foreach ($p in ($VCPath -split ';')) {
162159
$cygwinPath += ConvertTo-CygwinPath -WindowsPath $p
163160
}
164-
$includeEnvVar = $vcvars.GetIncludeDirs() -join ';'
165-
$libEnvVar = $vcvars.GetLibDirs() -join ';'
166161
$cc = "'$cygwinToolsPath/compile cl -nologo'"
167162
$cxx = "'$cygwinToolsPath/compile cl -nologo'"
168163
$ld = 'link'
@@ -468,8 +463,6 @@ Add-GithubOutput -Name 'mingw-architecture' -Value $mingwArchitecture
468463
Add-GithubOutput -Name 'mingw-host' -Value $mingwHost
469464
Add-GithubOutput -Name 'cldr-plural-works' -Value $(if ($cldrPluralWorks) { 'yes' } else { 'no' })
470465
Add-GithubOutput -Name 'cldr-simplify-plurals-xml' -Value $(if ($cldrSimplifyPluralsXml) { 'yes' } else { 'no' })
471-
Add-GithubOutput -Name 'include-env-var' -Value $includeEnvVar
472-
Add-GithubOutput -Name 'lib-env-var' -Value $libEnvVar
473466
Add-GithubOutput -Name 'make-install-argument' -Value $makeInstallArgument
474467
Add-GithubOutput -Name 'iconv-configure-args' -Value $(Join-Arguments $iconvConfigureArgs)
475468
Add-GithubOutput -Name 'curl-version' -Value $CurlVersion

0 commit comments

Comments
 (0)