Skip to content

Commit ca7a737

Browse files
committed
More 2022 logic
1 parent 931d840 commit ca7a737

File tree

3 files changed

+127
-76
lines changed

3 files changed

+127
-76
lines changed

common.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,8 @@ const colors = {
1414
}
1515
const rst = '\x1b[0m'
1616

17+
export const is2022orLater = process.env.ImageOS >= 'win22'
18+
1719
export const version = JSON.parse(fs.readFileSync(`${__dirname}\\package.json`, 'utf8')).version
1820

1921
export const download = async (uri, dest, log = true) => {

dist/index.js

Lines changed: 64 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -138,6 +138,7 @@ const run = async () => {
138138
"use strict";
139139
__nccwpck_require__.r(__webpack_exports__);
140140
/* harmony export */ __nccwpck_require__.d(__webpack_exports__, {
141+
/* harmony export */ "is2022orLater": () => (/* binding */ is2022orLater),
141142
/* harmony export */ "version": () => (/* binding */ version),
142143
/* harmony export */ "download": () => (/* binding */ download),
143144
/* harmony export */ "ruby": () => (/* binding */ ruby),
@@ -166,6 +167,8 @@ const colors = {
166167
}
167168
const rst = '\x1b[0m'
168169

170+
const is2022orLater = process.env.ImageOS >= 'win22'
171+
169172
const version = JSON.parse(fs.readFileSync(__nccwpck_require__.ab + "package.json", 'utf8')).version
170173

171174
const download = async (uri, dest, log = true) => {
@@ -292,7 +295,7 @@ const fs = __nccwpck_require__(747)
292295
const core = __nccwpck_require__(948)
293296

294297
// , updateKeyRing
295-
const { download, execSync, execSyncQ, grpSt, grpEnd, getInput, win2nix } = __nccwpck_require__(734)
298+
const { download, execSync, execSyncQ, grpSt, grpEnd, getInput, is2022orLater, win2nix } = __nccwpck_require__(734)
296299

297300
// group start time
298301
let msSt
@@ -376,17 +379,20 @@ const openssl = async () => {
376379
// await download(`${uri}.sig`, `${fn}.sig`)
377380

378381
await download(uri, fn)
382+
checkSpace
379383
execSync(`pacman.exe -Udd --noconfirm --noprogressbar ${fn}`)
380384
grpEnd(msSt)
381385
mingwPkgs = mingwPkgs.replace(/\bopenssl\b/gi, '').trim()
382-
}
386+
} else if (is2022orLater && ruby.abiVers >= '2.5.0 ')
387+
mingwPkgs = mingwPkgs.replace(/\bopenssl\b/gi, '').trim()
383388
}
384389

385390
// Updates MSYS2 MinGW gcc items
386391
const updateGCC = async () => {
387392
// TODO: code for installing gcc 9.2.0-1 or 9.1.0-3
388393

389394
msSt = grpSt(`Upgrading gcc for Ruby ${ruby.vers}`)
395+
checkSpace
390396
let gccPkgs = ['', 'binutils', 'crt', 'dlfcn', 'headers', 'libiconv', 'isl', 'make', 'mpc', 'mpfr', 'pkgconf', 'windows-default-manifest', 'libwinpthread', 'libyaml', 'winpthreads', 'zlib', 'gcc-libs', 'gcc']
391397
execSync(`pacman.exe ${msys2Sync} --nodeps ${args} ${gccPkgs.join(pre)}`)
392398
grpEnd(msSt)
@@ -405,23 +411,32 @@ const installMSYS2 = async () => {
405411
core.info('Installed MSYS2 for Ruby 2.4 and later')
406412
}
407413

414+
let checkSpaceIsDone = false
415+
416+
// disable slow disk space check
417+
const checkSpace = () => {
418+
if (!checkSpaceIsDone) {
419+
execSync("sed -i 's/^CheckSpace/#CheckSpace/g' C:/msys64/etc/pacman.conf")
420+
checkSpaceIsDone = true
421+
}
422+
}
423+
408424
// install MinGW packages from mingw input
409425
const runMingw = async () => {
410426

411-
if (ruby.abiVers >= '2.4') {
412-
// disable slow disk space check
413-
execSync("sed -i 's/^CheckSpace/#CheckSpace/g' C:/msys64/etc/pacman.conf")
427+
if (ruby.abiVers >= '2.4' && !is2022orLater) {
414428
msSt = grpSt(`pacman.exe -Sy pacman-mirrors`)
429+
checkSpace
415430
execSync(`pacman.exe -Sy ${args} pacman-mirrors`)
416431
grpEnd(msSt)
417432
}
418433

419434
if (mingwPkgs.includes('_upgrade_')) {
420-
if (ruby.abiVers >= '2.4') {
435+
if (ruby.abiVers >= '2.4' && !is2022orLater) {
421436
await updateGCC()
422437
msys2Sync = '-S'
423438
}
424-
mingwPkgs = mingwPkgs.replace(/\b_upgrade_\b/g, '').trim()
439+
mingwPkgs = mingwPkgs.replace(/\b_upgrade_\b/gi, '').trim()
425440
}
426441

427442
/* _msvc_ can be used when building mswin Rubies
@@ -432,46 +447,57 @@ const runMingw = async () => {
432447
return
433448
}
434449

435-
if (mingwPkgs !== '') {
436-
if (ruby.abiVers >= '2.4.0') {
450+
if (ruby.abiVers >= '2.4.0') {
451+
let list = ''
452+
if (mingwPkgs !== '') {
453+
if (is2022orLater) {
454+
const preInstalled2022 = /\b(dlfcn|gmp|libffi|libyaml|ragel|readline)\b/gi
455+
mingwPkgs = mingwPkgs.replace(preInstalled2022, '').trim()
456+
}
437457
if (mingwPkgs.includes('openssl')) {
438458
await openssl()
439459
}
440460
if (mingwPkgs !== '') {
441461
let pkgs = mingwPkgs.split(/\s+/)
442462
pkgs.unshift('')
443-
let list = pkgs.join(pre)
444-
if (msys2Pkgs !== '') {
445-
list += ' ' + msys2Pkgs
446-
msys2Pkgs = ''
447-
}
448-
msSt = grpSt(`pacman.exe -S ${list}`)
449-
execSync(`pacman.exe ${msys2Sync} ${args} ${list}`)
450-
grpEnd(msSt)
463+
list = pkgs.join(pre)
451464
}
452-
} else {
453-
// install old DevKit packages
454-
let toInstall = []
455-
let pkgs = mingwPkgs.split(/\s+/)
456-
pkgs.forEach( (pkg) => {
457-
if (old_pkgs[pkg]) {
458-
toInstall.push({ pkg: pkg, uri: old_pkgs[pkg]})
459-
} else {
460-
core.warning(`Package '${pkg}' is not available`)
461-
}
462-
})
463-
if (toInstall.length !== 0) {
464-
const list = toInstall.map(item => item.pkg).join(' ')
465-
msSt = grpSt(`installing MSYS packages: ${list}`)
466-
for (const item of toInstall) {
467-
let fn = `${dlPath}\\${item.pkg}.tar.lzma`
468-
await download(item.uri, fn)
469-
let cmd = `7z x -tlzma ${fn} -so | 7z x -aoa -si -ttar -o${dirDK7z}`
470-
execSyncQ(cmd)
471-
}
472-
grpEnd(msSt)
465+
}
466+
if (msys2Pkgs !== '') {
467+
if (is2022orLater) msys2Pkgs = msys2Pkgs.replace(/\bbison\b/gi, '').trim()
468+
if (msys2Pkgs !== '') {
469+
list += ' ' + msys2Pkgs
470+
msys2Pkgs = ''
473471
}
474472
}
473+
if (list !== '') {
474+
msSt = grpSt(`pacman.exe -S ${list}`)
475+
checkSpace
476+
execSync(`pacman.exe ${msys2Sync} ${args} ${list}`)
477+
grpEnd(msSt)
478+
}
479+
} else if (mingwPkgs !== '') {
480+
// install old DevKit packages
481+
let toInstall = []
482+
let pkgs = mingwPkgs.split(/\s+/)
483+
pkgs.forEach( (pkg) => {
484+
if (old_pkgs[pkg]) {
485+
toInstall.push({ pkg: pkg, uri: old_pkgs[pkg]})
486+
} else {
487+
core.warning(`Package '${pkg}' is not available`)
488+
}
489+
})
490+
if (toInstall.length !== 0) {
491+
const list = toInstall.map(item => item.pkg).join(' ')
492+
msSt = grpSt(`installing MSYS packages: ${list}`)
493+
for (const item of toInstall) {
494+
let fn = `${dlPath}\\${item.pkg}.tar.lzma`
495+
await download(item.uri, fn)
496+
let cmd = `7z x -tlzma ${fn} -so | 7z x -aoa -si -ttar -o${dirDK7z}`
497+
execSyncQ(cmd)
498+
}
499+
grpEnd(msSt)
500+
}
475501
}
476502
}
477503

mingw.js

Lines changed: 61 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ const fs = require('fs')
44
const core = require('@actions/core')
55

66
// , updateKeyRing
7-
const { download, execSync, execSyncQ, grpSt, grpEnd, getInput, win2nix } = require('./common')
7+
const { download, execSync, execSyncQ, grpSt, grpEnd, getInput, is2022orLater, win2nix } = require('./common')
88

99
// group start time
1010
let msSt
@@ -88,17 +88,20 @@ const openssl = async () => {
8888
// await download(`${uri}.sig`, `${fn}.sig`)
8989

9090
await download(uri, fn)
91+
checkSpace
9192
execSync(`pacman.exe -Udd --noconfirm --noprogressbar ${fn}`)
9293
grpEnd(msSt)
9394
mingwPkgs = mingwPkgs.replace(/\bopenssl\b/gi, '').trim()
94-
}
95+
} else if (is2022orLater && ruby.abiVers >= '2.5.0 ')
96+
mingwPkgs = mingwPkgs.replace(/\bopenssl\b/gi, '').trim()
9597
}
9698

9799
// Updates MSYS2 MinGW gcc items
98100
const updateGCC = async () => {
99101
// TODO: code for installing gcc 9.2.0-1 or 9.1.0-3
100102

101103
msSt = grpSt(`Upgrading gcc for Ruby ${ruby.vers}`)
104+
checkSpace
102105
let gccPkgs = ['', 'binutils', 'crt', 'dlfcn', 'headers', 'libiconv', 'isl', 'make', 'mpc', 'mpfr', 'pkgconf', 'windows-default-manifest', 'libwinpthread', 'libyaml', 'winpthreads', 'zlib', 'gcc-libs', 'gcc']
103106
execSync(`pacman.exe ${msys2Sync} --nodeps ${args} ${gccPkgs.join(pre)}`)
104107
grpEnd(msSt)
@@ -117,23 +120,32 @@ const installMSYS2 = async () => {
117120
core.info('Installed MSYS2 for Ruby 2.4 and later')
118121
}
119122

123+
let checkSpaceIsDone = false
124+
125+
// disable slow disk space check
126+
const checkSpace = () => {
127+
if (!checkSpaceIsDone) {
128+
execSync("sed -i 's/^CheckSpace/#CheckSpace/g' C:/msys64/etc/pacman.conf")
129+
checkSpaceIsDone = true
130+
}
131+
}
132+
120133
// install MinGW packages from mingw input
121134
const runMingw = async () => {
122135

123-
if (ruby.abiVers >= '2.4') {
124-
// disable slow disk space check
125-
execSync("sed -i 's/^CheckSpace/#CheckSpace/g' C:/msys64/etc/pacman.conf")
136+
if (ruby.abiVers >= '2.4' && !is2022orLater) {
126137
msSt = grpSt(`pacman.exe -Sy pacman-mirrors`)
138+
checkSpace
127139
execSync(`pacman.exe -Sy ${args} pacman-mirrors`)
128140
grpEnd(msSt)
129141
}
130142

131143
if (mingwPkgs.includes('_upgrade_')) {
132-
if (ruby.abiVers >= '2.4') {
144+
if (ruby.abiVers >= '2.4' && !is2022orLater) {
133145
await updateGCC()
134146
msys2Sync = '-S'
135147
}
136-
mingwPkgs = mingwPkgs.replace(/\b_upgrade_\b/g, '').trim()
148+
mingwPkgs = mingwPkgs.replace(/\b_upgrade_\b/gi, '').trim()
137149
}
138150

139151
/* _msvc_ can be used when building mswin Rubies
@@ -144,45 +156,56 @@ const runMingw = async () => {
144156
return
145157
}
146158

147-
if (mingwPkgs !== '') {
148-
if (ruby.abiVers >= '2.4.0') {
159+
if (ruby.abiVers >= '2.4.0') {
160+
let list = ''
161+
if (mingwPkgs !== '') {
162+
if (is2022orLater) {
163+
const preInstalled2022 = /\b(dlfcn|gmp|libffi|libyaml|ragel|readline)\b/gi
164+
mingwPkgs = mingwPkgs.replace(preInstalled2022, '').trim()
165+
}
149166
if (mingwPkgs.includes('openssl')) {
150167
await openssl()
151168
}
152169
if (mingwPkgs !== '') {
153170
let pkgs = mingwPkgs.split(/\s+/)
154171
pkgs.unshift('')
155-
let list = pkgs.join(pre)
156-
if (msys2Pkgs !== '') {
157-
list += ' ' + msys2Pkgs
158-
msys2Pkgs = ''
159-
}
160-
msSt = grpSt(`pacman.exe -S ${list}`)
161-
execSync(`pacman.exe ${msys2Sync} ${args} ${list}`)
162-
grpEnd(msSt)
172+
list = pkgs.join(pre)
163173
}
164-
} else {
165-
// install old DevKit packages
166-
let toInstall = []
167-
let pkgs = mingwPkgs.split(/\s+/)
168-
pkgs.forEach( (pkg) => {
169-
if (old_pkgs[pkg]) {
170-
toInstall.push({ pkg: pkg, uri: old_pkgs[pkg]})
171-
} else {
172-
core.warning(`Package '${pkg}' is not available`)
173-
}
174-
})
175-
if (toInstall.length !== 0) {
176-
const list = toInstall.map(item => item.pkg).join(' ')
177-
msSt = grpSt(`installing MSYS packages: ${list}`)
178-
for (const item of toInstall) {
179-
let fn = `${dlPath}\\${item.pkg}.tar.lzma`
180-
await download(item.uri, fn)
181-
let cmd = `7z x -tlzma ${fn} -so | 7z x -aoa -si -ttar -o${dirDK7z}`
182-
execSyncQ(cmd)
183-
}
184-
grpEnd(msSt)
174+
}
175+
if (msys2Pkgs !== '') {
176+
if (is2022orLater) msys2Pkgs = msys2Pkgs.replace(/\bbison\b/gi, '').trim()
177+
if (msys2Pkgs !== '') {
178+
list += ' ' + msys2Pkgs
179+
msys2Pkgs = ''
180+
}
181+
}
182+
if (list !== '') {
183+
msSt = grpSt(`pacman.exe -S ${list}`)
184+
checkSpace
185+
execSync(`pacman.exe ${msys2Sync} ${args} ${list}`)
186+
grpEnd(msSt)
187+
}
188+
} else if (mingwPkgs !== '') {
189+
// install old DevKit packages
190+
let toInstall = []
191+
let pkgs = mingwPkgs.split(/\s+/)
192+
pkgs.forEach( (pkg) => {
193+
if (old_pkgs[pkg]) {
194+
toInstall.push({ pkg: pkg, uri: old_pkgs[pkg]})
195+
} else {
196+
core.warning(`Package '${pkg}' is not available`)
197+
}
198+
})
199+
if (toInstall.length !== 0) {
200+
const list = toInstall.map(item => item.pkg).join(' ')
201+
msSt = grpSt(`installing MSYS packages: ${list}`)
202+
for (const item of toInstall) {
203+
let fn = `${dlPath}\\${item.pkg}.tar.lzma`
204+
await download(item.uri, fn)
205+
let cmd = `7z x -tlzma ${fn} -so | 7z x -aoa -si -ttar -o${dirDK7z}`
206+
execSyncQ(cmd)
185207
}
208+
grpEnd(msSt)
186209
}
187210
}
188211
}

0 commit comments

Comments
 (0)