cache-extensions 1.10.1 → 1.11.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,10 +1,10 @@
1
1
  <h1 align="center">Cache PHP extensions in GitHub Actions</h1>
2
2
 
3
3
  <p align="center">
4
- <a href="https://github.com/shivammathur/cache-extensions" title="Cache PHP extensions in GitHub Actions"><img alt="GitHub Actions status" src="https://github.com/shivammathur/cache-extensions/workflows/Main%20workflow/badge.svg"></a>
4
+ <a href="https://github.com/shivammathur/cache-extensions" title="Cache PHP extensions in GitHub Actions"><img alt="GitHub Actions status" src="https://github.com/shivammathur/cache-extensions/workflows/Node%20test%20workflow/badge.svg"></a>
5
5
  <a href="https://codecov.io/gh/shivammathur/cache-extensions" title="Code coverage"><img alt="Codecov Code Coverage" src="https://codecov.io/gh/shivammathur/cache-extensions/branch/master/graph/badge.svg"></a>
6
6
  <a href="https://github.com/shivammathur/cache-extensions/blob/master/LICENSE" title="license"><img alt="LICENSE" src="https://img.shields.io/badge/license-MIT-428f7e.svg?logo=open%20source%20initiative&logoColor=white&labelColor=555555"></a>
7
- <a href="#tada-php-support" title="PHP Versions Supported"><img alt="PHP Versions Supported" src="https://img.shields.io/badge/php-5.3%20to%208.3-777bb3.svg?logo=php&logoColor=white&labelColor=555555"></a>
7
+ <a href="#tada-php-support" title="PHP Versions Supported"><img alt="PHP Versions Supported" src="https://img.shields.io/badge/php-5.3%20to%208.4-777bb3.svg?logo=php&logoColor=white&labelColor=555555"></a>
8
8
  </p>
9
9
 
10
10
  Cache PHP extensions in [GitHub Actions](https://github.com/features/actions "GitHub Actions"). This action has to be used along with [shivammathur/setup-php](https://github.com/shivammathur/setup-php "Setup PHP") and [actions/cache](https://github.com/actions/cache "Cache in GitHub Actions") GitHub Actions. It configures the environment required to cache PHP extensions. Refer to [Usage](#memo-usage "How to use this") section for details and example workflow.
@@ -45,13 +45,17 @@ Cache PHP extensions in [GitHub Actions](https://github.com/features/actions "Gi
45
45
 
46
46
  | Virtual environment | YAML workflow label |
47
47
  |---------------------|------------------------------------|
48
+ | Ubuntu 24.04 | `ubuntu-24.04` |
48
49
  | Ubuntu 22.04 | `ubuntu-latest` or `ubuntu-22.04` |
49
50
  | Ubuntu 20.04 | `ubuntu-20.04` |
50
51
  | Windows Server 2022 | `windows-latest` or `windows-2022` |
51
52
  | Windows Server 2019 | `windows-2019` |
53
+ | macOS Sonoma 14.x | `macos-14` |
52
54
  | macOS Ventura 13.x | `macos-13` |
53
55
  | macOS Monterey 12.x | `macos-latest` or `macos-12` |
54
56
 
57
+ **Note**: Support for self-hosted runners for the above operating systems is in beta. If you use this action on a self-hosted runner, please report any issues you find.
58
+
55
59
  ## :memo: Usage
56
60
 
57
61
  Use this GitHub Action when the extensions you are adding in [setup-php](https://github.com/shivammathur/setup-php "setup-php GitHub Action") are installed and take a long time to set up. If you are using extensions which have the result `Installed and enabled` in the logs like `pecl` extensions on `Ubuntu` or extensions which have custom support, it is recommended to use this action to cache your extensions.
@@ -108,7 +112,7 @@ jobs:
108
112
  key: cache-v1 # can be any string, change to clear the extension cache.
109
113
  steps:
110
114
  - name: Checkout
111
- uses: actions/checkout@v3
115
+ uses: actions/checkout@v4
112
116
 
113
117
  - name: Setup cache environment
114
118
  id: extcache
@@ -119,7 +123,7 @@ jobs:
119
123
  key: ${{ env.key }}
120
124
 
121
125
  - name: Cache extensions
122
- uses: actions/cache@v3
126
+ uses: actions/cache@v4
123
127
  with:
124
128
  path: ${{ steps.extcache.outputs.dir }}
125
129
  key: ${{ steps.extcache.outputs.key }}
@@ -138,7 +142,7 @@ If you set up both `TS` and `NTS` PHP versions in your workflow, please add `${{
138
142
 
139
143
  ```yaml
140
144
  - name: Cache extensions
141
- uses: actions/cache@v3
145
+ uses: actions/cache@v4
142
146
  with:
143
147
  path: ${{ steps.extcache.outputs.dir }}
144
148
  key: ${{ steps.extcache.outputs.key }}-${{ env.phpts }}
@@ -155,10 +159,9 @@ Contributions are welcome! See [Contributor's Guide](.github/CONTRIBUTING.md "sh
155
159
 
156
160
  ## :sparkling_heart: Support This Project
157
161
 
158
- If this action helped you.
162
+ This project is generously supported by many users and organisations via [GitHub Sponsors](https://github.com/sponsors/shivammathur).
159
163
 
160
- - Please star the project and share it. If you blog, please share your experience of using this action.
161
- - Please support our work by sponsoring using [GitHub sponsors](https://github.com/sponsors/shivammathur).
164
+ <a href="https://github.com/sponsors/shivammathur"><img src="https://setup-php.com/sponsors.svg?" alt="Sponsor shivammathur"></a>
162
165
 
163
166
  ## :package: Dependencies
164
167
 
package/lib/cache.js CHANGED
@@ -23,7 +23,8 @@ var __importStar = (this && this.__importStar) || function (mod) {
23
23
  return result;
24
24
  };
25
25
  Object.defineProperty(exports, "__esModule", { value: true });
26
- exports.run = exports.handleDependencies = void 0;
26
+ exports.handleDependencies = handleDependencies;
27
+ exports.run = run;
27
28
  const exec_1 = require("@actions/exec");
28
29
  const cache = __importStar(require("@actions/cache"));
29
30
  const core = __importStar(require("@actions/core"));
@@ -47,7 +48,6 @@ async function handleDependencies(extensions, version) {
47
48
  }
48
49
  }
49
50
  }
50
- exports.handleDependencies = handleDependencies;
51
51
  async function run() {
52
52
  try {
53
53
  const version = await spu.parseVersion(await spu.readPHPVersion());
@@ -60,7 +60,6 @@ async function run() {
60
60
  core.setFailed(error.message);
61
61
  }
62
62
  }
63
- exports.run = run;
64
63
  (async () => {
65
64
  await run();
66
65
  })().catch(error => {
package/lib/cache.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cache.js","sourceRoot":"","sources":["../src/cache.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,wCAAmC;AACnC,sDAAwC;AACxC,oDAAsC;AACtC,yDAA2C;AAC3C,uCAAyB;AACzB,2CAA6B;AAC7B,+CAAiC;AAQ1B,KAAK,UAAU,kBAAkB,CACtC,UAAkB,EAClB,OAAe;IAEf,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;QACxE,MAAM,SAAS,GAAW,CAAC,MAAM,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,GAAG,OAAO,CAAC;QACnE,MAAM,SAAS,GAAW,IAAI,CAAC,IAAI,CACjC,MAAM,GAAG,CAAC,OAAO,CAAC,mBAAmB,CAAC,EACtC,MAAM,CACP,CAAC;QACF,MAAM,SAAS,GAAuB,MAAM,KAAK,CAAC,YAAY,CAC5D,CAAC,SAAS,CAAC,EACX,SAAS,EACT,CAAC,SAAS,CAAC,CACZ,CAAC;QACF,MAAM,IAAA,WAAI,EAAC,MAAM,KAAK,CAAC,UAAU,CAAC,cAAc,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC;QACxE,IAAI,CAAC,SAAS,IAAI,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YAC3C,IAAI,CAAC;gBACH,MAAM,KAAK,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,EAAE,SAAS,CAAC,CAAC;YAChD,CAAC;YAAC,MAAM,CAAC;gBACP,MAAM,KAAK,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,EAAE,SAAS,GAAG,SAAS,CAAC,CAAC;YAC5D,CAAC;QACH,CAAC;IACH,CAAC;AACH,CAAC;AAxBD,gDAwBC;AAKM,KAAK,UAAU,GAAG;IACvB,IAAI,CAAC;QACH,MAAM,OAAO,GAAW,MAAM,GAAG,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,cAAc,EAAE,CAAC,CAAC;QAC3E,MAAM,UAAU,GAAW,MAAM,KAAK,CAAC,gBAAgB,CACrD,MAAM,GAAG,CAAC,QAAQ,CAAC,YAAY,EAAE,IAAI,CAAC,CACvC,CAAC;QACF,MAAM,GAAG,GAAW,MAAM,GAAG,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QACpD,MAAM,IAAA,WAAI,EAAC,MAAM,KAAK,CAAC,UAAU,CAAC,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;QACrE,MAAM,kBAAkB,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;IAChD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,CAAC,SAAS,CAAE,KAAe,CAAC,OAAO,CAAC,CAAC;IAC3C,CAAC;AACH,CAAC;AAZD,kBAYC;AAGD,CAAC,KAAK,IAAI,EAAE;IACV,MAAM,GAAG,EAAE,CAAC;AACd,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;IACjB,IAAI,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC;QAC9C,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAChC,CAAC;SAAM,IAAI,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,iBAAiB,CAAC,IAAI,EAAE,CAAC;QACvD,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAC3B,CAAC;SAAM,CAAC;QACN,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAC9B,CAAC;AACH,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"cache.js","sourceRoot":"","sources":["../src/cache.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAcA,gDAwBC;AAKD,kBAYC;AAvDD,wCAAmC;AACnC,sDAAwC;AACxC,oDAAsC;AACtC,yDAA2C;AAC3C,uCAAyB;AACzB,2CAA6B;AAC7B,+CAAiC;AAQ1B,KAAK,UAAU,kBAAkB,CACtC,UAAkB,EAClB,OAAe;IAEf,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;QACxE,MAAM,SAAS,GAAW,CAAC,MAAM,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,GAAG,OAAO,CAAC;QACnE,MAAM,SAAS,GAAW,IAAI,CAAC,IAAI,CACjC,MAAM,GAAG,CAAC,OAAO,CAAC,mBAAmB,CAAC,EACtC,MAAM,CACP,CAAC;QACF,MAAM,SAAS,GAAuB,MAAM,KAAK,CAAC,YAAY,CAC5D,CAAC,SAAS,CAAC,EACX,SAAS,EACT,CAAC,SAAS,CAAC,CACZ,CAAC;QACF,MAAM,IAAA,WAAI,EAAC,MAAM,KAAK,CAAC,UAAU,CAAC,cAAc,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC;QACxE,IAAI,CAAC,SAAS,IAAI,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YAC3C,IAAI,CAAC;gBACH,MAAM,KAAK,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,EAAE,SAAS,CAAC,CAAC;YAChD,CAAC;YAAC,MAAM,CAAC;gBACP,MAAM,KAAK,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,EAAE,SAAS,GAAG,SAAS,CAAC,CAAC;YAC5D,CAAC;QACH,CAAC;IACH,CAAC;AACH,CAAC;AAKM,KAAK,UAAU,GAAG;IACvB,IAAI,CAAC;QACH,MAAM,OAAO,GAAW,MAAM,GAAG,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,cAAc,EAAE,CAAC,CAAC;QAC3E,MAAM,UAAU,GAAW,MAAM,KAAK,CAAC,gBAAgB,CACrD,MAAM,GAAG,CAAC,QAAQ,CAAC,YAAY,EAAE,IAAI,CAAC,CACvC,CAAC;QACF,MAAM,GAAG,GAAW,MAAM,GAAG,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QACpD,MAAM,IAAA,WAAI,EAAC,MAAM,KAAK,CAAC,UAAU,CAAC,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;QACrE,MAAM,kBAAkB,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;IAChD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,CAAC,SAAS,CAAE,KAAe,CAAC,OAAO,CAAC,CAAC;IAC3C,CAAC;AACH,CAAC;AAGD,CAAC,KAAK,IAAI,EAAE;IACV,MAAM,GAAG,EAAE,CAAC;AACd,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;IACjB,IAAI,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC;QAC9C,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAChC,CAAC;SAAM,IAAI,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,iBAAiB,CAAC,IAAI,EAAE,CAAC;QACvD,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAC3B,CAAC;SAAM,CAAC;QACN,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAC9B,CAAC;AACH,CAAC,CAAC,CAAC"}
package/lib/utils.js CHANGED
@@ -23,14 +23,15 @@ var __importStar = (this && this.__importStar) || function (mod) {
23
23
  return result;
24
24
  };
25
25
  Object.defineProperty(exports, "__esModule", { value: true });
26
- exports.scriptCall = exports.filterExtensions = exports.getOutput = void 0;
26
+ exports.getOutput = getOutput;
27
+ exports.filterExtensions = filterExtensions;
28
+ exports.scriptCall = scriptCall;
27
29
  const fs = __importStar(require("fs"));
28
30
  const path = __importStar(require("path"));
29
31
  const spu = __importStar(require("setup-php/lib/utils"));
30
32
  async function getOutput(output) {
31
33
  return fs.readFileSync(path.join(await spu.readEnv('RUNNER_TEMP'), output), 'utf8');
32
34
  }
33
- exports.getOutput = getOutput;
34
35
  async function filterExtensions(extension_csv) {
35
36
  return JSON.stringify(extension_csv
36
37
  .split(',')
@@ -39,10 +40,8 @@ async function filterExtensions(extension_csv) {
39
40
  })
40
41
  .join(','));
41
42
  }
42
- exports.filterExtensions = filterExtensions;
43
43
  async function scriptCall(fn, ...args) {
44
44
  const script = path.join(__dirname, '../src/scripts/cache.sh');
45
45
  return ['bash', script, fn, ...args].join(' ');
46
46
  }
47
- exports.scriptCall = scriptCall;
48
47
  //# sourceMappingURL=utils.js.map
package/lib/utils.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,uCAAyB;AACzB,2CAA6B;AAC7B,yDAA2C;AAKpC,KAAK,UAAU,SAAS,CAAC,MAAc;IAC5C,OAAO,EAAE,CAAC,YAAY,CACpB,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC,EACnD,MAAM,CACP,CAAC;AACJ,CAAC;AALD,8BAKC;AAOM,KAAK,UAAU,gBAAgB,CAAC,aAAqB;IAC1D,OAAO,IAAI,CAAC,SAAS,CACnB,aAAa;SACV,KAAK,CAAC,GAAG,CAAC;SACV,MAAM,CAAC,SAAS,CAAC,EAAE;QAClB,OAAO,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC;IACpC,CAAC,CAAC;SACD,IAAI,CAAC,GAAG,CAAC,CACb,CAAC;AACJ,CAAC;AATD,4CASC;AAQM,KAAK,UAAU,UAAU,CAC9B,EAAU,EACV,GAAG,IAAc;IAEjB,MAAM,MAAM,GAAW,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,yBAAyB,CAAC,CAAC;IACvE,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,GAAG,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACjD,CAAC;AAND,gCAMC"}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAOA,8BAKC;AAOD,4CASC;AAQD,gCAMC;AA1CD,uCAAyB;AACzB,2CAA6B;AAC7B,yDAA2C;AAKpC,KAAK,UAAU,SAAS,CAAC,MAAc;IAC5C,OAAO,EAAE,CAAC,YAAY,CACpB,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC,EACnD,MAAM,CACP,CAAC;AACJ,CAAC;AAOM,KAAK,UAAU,gBAAgB,CAAC,aAAqB;IAC1D,OAAO,IAAI,CAAC,SAAS,CACnB,aAAa;SACV,KAAK,CAAC,GAAG,CAAC;SACV,MAAM,CAAC,SAAS,CAAC,EAAE;QAClB,OAAO,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC;IACpC,CAAC,CAAC;SACD,IAAI,CAAC,GAAG,CAAC,CACb,CAAC;AACJ,CAAC;AAQM,KAAK,UAAU,UAAU,CAC9B,EAAU,EACV,GAAG,IAAc;IAEjB,MAAM,MAAM,GAAW,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,yBAAyB,CAAC,CAAC;IACvE,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,GAAG,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACjD,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "cache-extensions",
3
- "version": "1.10.1",
3
+ "version": "1.11.1",
4
4
  "private": false,
5
5
  "description": "Cache PHP extensions in GitHub Actions",
6
6
  "main": "lib/cache.js",
@@ -19,7 +19,7 @@
19
19
  "lint": "eslint **/src/*.ts --cache --fix",
20
20
  "format": "prettier --write **/src/*.ts && git add .",
21
21
  "format-check": "prettier --check **/src/*.ts",
22
- "release": "ncc build -o dist && git add -f dist/",
22
+ "release": "ncc build -m -o dist && git add -f dist/",
23
23
  "test": "jest"
24
24
  },
25
25
  "repository": {
@@ -38,24 +38,24 @@
38
38
  "@actions/cache": "^3.2.4",
39
39
  "@actions/core": "^1.10.1",
40
40
  "@actions/exec": "^1.1.1",
41
- "setup-php": "2.30.0"
41
+ "setup-php": "2.31.1"
42
42
  },
43
43
  "devDependencies": {
44
- "@types/jest": "^29.5.12",
45
- "@types/node": "^20.11.28",
46
- "@typescript-eslint/eslint-plugin": "^7.2.0",
47
- "@typescript-eslint/parser": "^7.2.0",
44
+ "@types/jest": "^29.5.13",
45
+ "@types/node": "^22.5.5",
46
+ "@typescript-eslint/eslint-plugin": "^8.6.0",
47
+ "@typescript-eslint/parser": "^8.6.0",
48
48
  "@vercel/ncc": "^0.38.1",
49
- "eslint": "^8.57.0",
49
+ "eslint": "^8.57.1",
50
50
  "eslint-config-prettier": "^9.1.0",
51
- "eslint-plugin-import": "^2.29.1",
52
- "eslint-plugin-jest": "^27.9.0",
53
- "eslint-plugin-prettier": "^5.1.3",
51
+ "eslint-plugin-import": "^2.30.0",
52
+ "eslint-plugin-jest": "^28.8.3",
53
+ "eslint-plugin-prettier": "^5.2.1",
54
54
  "jest": "^29.7.0",
55
55
  "jest-circus": "^29.7.0",
56
- "prettier": "^3.2.5",
57
- "ts-jest": "^29.1.2",
58
- "typescript": "^5.4.2"
56
+ "prettier": "^3.3.3",
57
+ "ts-jest": "^29.2.5",
58
+ "typescript": "^5.6.2"
59
59
  },
60
60
  "bugs": {
61
61
  "url": "https://github.com/shivammathur/cache-extensions/issues"
@@ -53,7 +53,6 @@ imagick
53
53
  imap
54
54
  j
55
55
  j
56
- j
57
56
  k
58
57
  l
59
58
  l
@@ -142,6 +141,8 @@ sqlsrv
142
141
  ssh2
143
142
  swoole
144
143
  t
144
+ t
145
+ t
145
146
  u
146
147
  u
147
148
  u
@@ -110,6 +110,8 @@ libdbusmenu-glib4
110
110
  libdbusmenu-gtk3-4
111
111
  libdconf1
112
112
  libdebconfclient0
113
+ libdeflate-dev
114
+ libdeflate0
113
115
  libdevmapper-event1.02.1
114
116
  libdevmapper1.02.1
115
117
  libdjvulibre-dev
@@ -241,6 +243,7 @@ libidn11
241
243
  libidn2-0
242
244
  libilmbase-dev
243
245
  libilmbase24
246
+ libimagequant0
244
247
  libio-html-perl
245
248
  libip4tc2
246
249
  libip6tc2
@@ -549,6 +552,7 @@ libpgm-5.2-0
549
552
  libpipeline1
550
553
  libpixman-1-0
551
554
  libpixman-1-dev
555
+ libpkgconf3
552
556
  libplymouth5
553
557
  libpng-dev
554
558
  libpng16-16
@@ -577,6 +581,7 @@ libqmi-glib5
577
581
  libqmi-proxy
578
582
  libquadmath0
579
583
  librabbitmq4
584
+ libraqm0
580
585
  libre2-5
581
586
  libreadline-dev
582
587
  libreadline5
@@ -657,13 +662,15 @@ libtinfo-dev
657
662
  libtinfo5
658
663
  libtinfo6
659
664
  libtinyxml2-6a
665
+ libtirpc-common
666
+ libtirpc-dev
667
+ libtirpc3
660
668
  libtk8.6
661
669
  libtommath1
662
670
  libtool
663
671
  libtsan0
664
672
  libtss2-esys0
665
673
  libtypes-serialiser-perl
666
- libu2f-udev
667
674
  libubsan1
668
675
  libuchardet0
669
676
  libucl1
@@ -177,7 +177,6 @@ libgcab-1.0-0
177
177
  libgcc-10-dev
178
178
  libgcc-11-dev
179
179
  libgcc-12-dev
180
- libgcc-13-dev
181
180
  libgcc-9-dev
182
181
  libgcc-s1
183
182
  libgconf-2-4
@@ -194,7 +193,6 @@ libgdk-pixbuf2.0-common
194
193
  libgfortran-10-dev
195
194
  libgfortran-11-dev
196
195
  libgfortran-12-dev
197
- libgfortran-13-dev
198
196
  libgfortran-9-dev
199
197
  libgfortran5
200
198
  libgif7
@@ -239,7 +237,6 @@ libhtml-template-perl
239
237
  libhttp-date-perl
240
238
  libhttp-message-perl
241
239
  libhunspell-1.7-0
242
- libhwasan0
243
240
  libice-dev
244
241
  libice6
245
242
  libicu-dev
@@ -565,6 +562,7 @@ libpgm-5.3-0
565
562
  libpipeline1
566
563
  libpixman-1-0
567
564
  libpixman-1-dev
565
+ libpkgconf3
568
566
  libplymouth5
569
567
  libpng-dev
570
568
  libpng16-16
@@ -644,7 +642,6 @@ libssl3
644
642
  libstdc++-10-dev
645
643
  libstdc++-11-dev
646
644
  libstdc++-12-dev
647
- libstdc++-13-dev
648
645
  libstdc++-9-dev
649
646
  libstdc++6
650
647
  libstemmer0d
@@ -688,7 +685,6 @@ libtss2-tcti-device0
688
685
  libtss2-tcti-mssim0
689
686
  libtss2-tcti-swtpm0
690
687
  libtypes-serialiser-perl
691
- libu2f-udev
692
688
  libubsan1
693
689
  libuchardet0
694
690
  libucl1
@@ -0,0 +1,540 @@
1
+ lib32gcc-s1
2
+ lib32stdc++6
3
+ libacl1
4
+ libaio1t64
5
+ libaom3
6
+ libapparmor1
7
+ libappstream5
8
+ libapr1t64
9
+ libaprutil1-dbd-sqlite3
10
+ libaprutil1-ldap
11
+ libaprutil1t64
12
+ libapt-pkg6.0t64
13
+ libarchive13t64
14
+ libargon2-1
15
+ libaria2-0
16
+ libasan8
17
+ libasound2-data
18
+ libasound2t64
19
+ libaspell15
20
+ libassuan0
21
+ libatasmart4
22
+ libatk-bridge2.0-0t64
23
+ libatk1.0-0t64
24
+ libatm1t64
25
+ libatomic1
26
+ libatspi2.0-0t64
27
+ libattr1
28
+ libaudit-common
29
+ libaudit1
30
+ libavahi-client3
31
+ libavahi-common-data
32
+ libavahi-common3
33
+ libbinutils
34
+ libblkid1
35
+ libblockdev-crypto3
36
+ libblockdev-fs3
37
+ libblockdev-loop3
38
+ libblockdev-mdraid3
39
+ libblockdev-nvme3
40
+ libblockdev-part3
41
+ libblockdev-swap3
42
+ libblockdev-utils3
43
+ libblockdev3
44
+ libbpf1
45
+ libbpfcc
46
+ libbrotli1
47
+ libbsd0
48
+ libbytesize-common
49
+ libbytesize1
50
+ libbz2-1.0
51
+ libc-bin
52
+ libc-client2007e
53
+ libc-dev-bin
54
+ libc6
55
+ libc6-dev
56
+ libc6-i386
57
+ libcairo-gobject2
58
+ libcairo2
59
+ libcanberra0t64
60
+ libcap-ng0
61
+ libcap2
62
+ libcap2-bin
63
+ libcares2
64
+ libcbor0.10
65
+ libcc1-0
66
+ libcgi-fast-perl
67
+ libcgi-pm-perl
68
+ libclang-common-16-dev
69
+ libclang-common-17-dev
70
+ libclang-common-18-dev
71
+ libclang-cpp16t64
72
+ libclang-cpp17t64
73
+ libclang-cpp18
74
+ libclang-rt-16-dev
75
+ libclang-rt-17-dev
76
+ libclang-rt-18-dev
77
+ libclang1-16t64
78
+ libclang1-17t64
79
+ libclang1-18
80
+ libclone-perl
81
+ libcolord2
82
+ libcom-err2
83
+ libcommon-sense-perl
84
+ libcrypt-dev
85
+ libcrypt1
86
+ libcryptsetup12
87
+ libctf-nobfd0
88
+ libctf0
89
+ libcups2t64
90
+ libcurl3t64-gnutls
91
+ libcurl4t64
92
+ libdatrie1
93
+ libdb5.3t64
94
+ libdbus-1-3
95
+ libdbusmenu-glib4
96
+ libdbusmenu-gtk3-4
97
+ libdconf1
98
+ libde265-0
99
+ libdebconfclient0
100
+ libdeflate0
101
+ libdevmapper-event1.02.1
102
+ libdevmapper1.02.1
103
+ libdpkg-perl
104
+ libdrm-amdgpu1
105
+ libdrm-common
106
+ libdrm-intel1
107
+ libdrm-nouveau2
108
+ libdrm-radeon1
109
+ libdrm2
110
+ libduktape207
111
+ libdw1t64
112
+ libeatmydata1
113
+ libedit2
114
+ libefiboot1t64
115
+ libefivar1t64
116
+ libelf1t64
117
+ libenchant-2-2
118
+ libencode-locale-perl
119
+ libepoxy0
120
+ liberror-perl
121
+ libestr0
122
+ libevdev2
123
+ libevent-core-2.1-7t64
124
+ libevent-pthreads-2.1-7t64
125
+ libexpat1
126
+ libexpat1-dev
127
+ libext2fs2t64
128
+ libfakeroot
129
+ libfastjson4
130
+ libfbclient2
131
+ libfcgi-bin
132
+ libfcgi-perl
133
+ libfcgi0t64
134
+ libfdisk1
135
+ libffi-dev
136
+ libffi8
137
+ libfftw3-double3
138
+ libfido2-1
139
+ libflashrom1
140
+ libfontconfig1
141
+ libfontenc1
142
+ libfreetype6
143
+ libfribidi0
144
+ libfsverity0
145
+ libftdi1-2
146
+ libfuse3-3
147
+ libfwupd2
148
+ libgbm1
149
+ libgc1
150
+ libgcc-12-dev
151
+ libgcc-13-dev
152
+ libgcc-14-dev
153
+ libgcc-s1
154
+ libgcrypt20
155
+ libgd3
156
+ libgdbm-compat4t64
157
+ libgdbm6t64
158
+ libgdk-pixbuf-2.0-0
159
+ libgdk-pixbuf2.0-common
160
+ libgfortran-12-dev
161
+ libgfortran-13-dev
162
+ libgfortran-14-dev
163
+ libgfortran5
164
+ libgirepository-1.0-1
165
+ libgl1
166
+ libgl1-mesa-dri
167
+ libglapi-mesa
168
+ libglib2.0-0t64
169
+ libglib2.0-bin
170
+ libglib2.0-data
171
+ libglvnd0
172
+ libglx-mesa0
173
+ libglx0
174
+ libgmp-dev
175
+ libgmp10
176
+ libgmpxx4ldbl
177
+ libgnutls30t64
178
+ libgomp1
179
+ libgpg-error-l10n
180
+ libgpg-error0
181
+ libgpgme11t64
182
+ libgpm2
183
+ libgprofng0
184
+ libgraphite2-3
185
+ libgssapi-krb5-2
186
+ libgstreamer1.0-0
187
+ libgtk-3-0t64
188
+ libgtk-3-common
189
+ libgudev-1.0-0
190
+ libgusb2
191
+ libharfbuzz0b
192
+ libhashkit2t64
193
+ libhavege2
194
+ libheif-plugin-aomdec
195
+ libheif-plugin-libde265
196
+ libheif1
197
+ libhogweed6t64
198
+ libhtml-parser-perl
199
+ libhtml-tagset-perl
200
+ libhtml-template-perl
201
+ libhttp-date-perl
202
+ libhttp-message-perl
203
+ libhunspell-1.7-0
204
+ libhwasan0
205
+ libibverbs1
206
+ libice6
207
+ libicu-dev
208
+ libicu72
209
+ libicu74
210
+ libidn2-0
211
+ libinih1
212
+ libintl-perl
213
+ libintl-xs-perl
214
+ libio-html-perl
215
+ libip4tc2
216
+ libip6tc2
217
+ libisl23
218
+ libisns0t64
219
+ libitm1
220
+ libjansson4
221
+ libjbig0
222
+ libjcat1
223
+ libjpeg-turbo8
224
+ libjpeg8
225
+ libjq1
226
+ libjs-jquery
227
+ libjs-sphinxdoc
228
+ libjs-underscore
229
+ libjson-c5
230
+ libjson-glib-1.0-0
231
+ libjson-glib-1.0-common
232
+ libjson-perl
233
+ libjson-xs-perl
234
+ libk5crypto3
235
+ libkeyutils1
236
+ libklibc
237
+ libkmod2
238
+ libkrb5-3
239
+ libkrb5support0
240
+ libksba8
241
+ liblcms2-2
242
+ libldap-common
243
+ libldap2
244
+ liblerc4
245
+ liblldb-16t64
246
+ liblldb-17t64
247
+ liblldb-18
248
+ libllvm16t64
249
+ libllvm17t64
250
+ libllvm18
251
+ liblmdb0
252
+ liblocale-gettext-perl
253
+ liblqr-1-0
254
+ liblsan0
255
+ libltdl7
256
+ liblttng-ust-common1t64
257
+ liblttng-ust-ctl5t64
258
+ liblttng-ust1t64
259
+ liblua5.3-0
260
+ liblua5.4-0
261
+ liblvm2cmd2.03
262
+ liblwp-mediatypes-perl
263
+ liblz4-1
264
+ liblz4-dev
265
+ liblzma5
266
+ liblzo2-2
267
+ libmagic-mgc
268
+ libmagic1t64
269
+ libmagickcore-6.q16-7t64
270
+ libmagickwand-6.q16-7t64
271
+ libmaxminddb0
272
+ libmbim-glib4
273
+ libmbim-proxy
274
+ libmbim-utils
275
+ libmd0
276
+ libmecab2
277
+ libmediainfo0v5
278
+ libmemcached11t64
279
+ libmm-glib0
280
+ libmms0
281
+ libmnl0
282
+ libmodule-find-perl
283
+ libmodule-scandeps-perl
284
+ libmount1
285
+ libmpc3
286
+ libmpfr6
287
+ libmspack0t64
288
+ libmysqlclient-dev
289
+ libmysqlclient21
290
+ libncurses-dev
291
+ libncurses6
292
+ libncursesw6
293
+ libnetfilter-conntrack3
294
+ libnetplan1
295
+ libnettle8t64
296
+ libnewt0.52
297
+ libnfnetlink0
298
+ libnftables1
299
+ libnftnl11
300
+ libnghttp2-14
301
+ libnl-3-200
302
+ libnl-genl-3-200
303
+ libnl-route-3-200
304
+ libnorm1t64
305
+ libnpth0t64
306
+ libnspr4
307
+ libnss-systemd
308
+ libnss3
309
+ libntfs-3g89t64
310
+ libnuma1
311
+ libnvme1t64
312
+ libobjc-13-dev
313
+ libobjc4
314
+ libodbc2
315
+ libogg0
316
+ libonig5
317
+ libopeniscsiusr
318
+ libopenjp2-7
319
+ libp11-kit0
320
+ libpackagekit-glib2-18
321
+ libpam-cap
322
+ libpam-modules
323
+ libpam-modules-bin
324
+ libpam-runtime
325
+ libpam-systemd
326
+ libpam0g
327
+ libpango-1.0-0
328
+ libpangocairo-1.0-0
329
+ libpangoft2-1.0-0
330
+ libparted2t64
331
+ libpcap0.8t64
332
+ libpci3
333
+ libpciaccess0
334
+ libpcre2-16-0
335
+ libpcre2-32-0
336
+ libpcre2-8-0
337
+ libpcre2-dev
338
+ libpcre2-posix3
339
+ libperl5.38t64
340
+ libpfm4
341
+ libpgm-5.3-0t64
342
+ libpipeline1
343
+ libpixman-1-0
344
+ libpkgconf3
345
+ libplymouth5
346
+ libpng16-16t64
347
+ libpolkit-agent-1-0
348
+ libpolkit-gobject-1-0
349
+ libpopt0
350
+ libpq-dev
351
+ libpq5
352
+ libproc-processtable-perl
353
+ libproc2-0
354
+ libprotobuf-c1
355
+ libprotobuf-lite32t64
356
+ libpsl5t64
357
+ libpython3-dev
358
+ libpython3-stdlib
359
+ libpython3.12-dev
360
+ libpython3.12-minimal
361
+ libpython3.12-stdlib
362
+ libpython3.12t64
363
+ libqdbm14t64
364
+ libqmi-glib5
365
+ libqmi-proxy
366
+ libqmi-utils
367
+ libqrtr-glib0
368
+ libquadmath0
369
+ librabbitmq4
370
+ libraw23t64
371
+ libre2-10
372
+ libreadline8t64
373
+ libreiserfscore0t64
374
+ librpm9t64
375
+ librpmbuild9t64
376
+ librpmio9t64
377
+ librpmsign9t64
378
+ librtmp1
379
+ libruby
380
+ libruby3.2
381
+ libsasl2-2
382
+ libsasl2-modules
383
+ libsasl2-modules-db
384
+ libseccomp2
385
+ libselinux1
386
+ libsemanage-common
387
+ libsemanage2
388
+ libsensors-config
389
+ libsensors5
390
+ libsepol2
391
+ libsframe1
392
+ libsgutils2-1.46-2
393
+ libsharpyuv0
394
+ libsigsegv2
395
+ libslang2
396
+ libslirp0
397
+ libsm6
398
+ libsmartcols1
399
+ libsnappy1v5
400
+ libsnmp-base
401
+ libsnmp40t64
402
+ libsodium23
403
+ libsort-naturally-perl
404
+ libsqlite3-0
405
+ libss2
406
+ libssh-4
407
+ libssh2-1t64
408
+ libssl-dev
409
+ libssl3t64
410
+ libstdc++-12-dev
411
+ libstdc++-13-dev
412
+ libstdc++-14-dev
413
+ libstdc++6
414
+ libstemmer0d
415
+ libsubid4
416
+ libsybdb5
417
+ libsystemd-shared
418
+ libsystemd0
419
+ libtalloc2
420
+ libtasn1-6
421
+ libtcl8.6
422
+ libtdb1
423
+ libterm-readkey-perl
424
+ libtext-charwidth-perl
425
+ libtext-iconv-perl
426
+ libtext-unidecode-perl
427
+ libtext-wrapi18n-perl
428
+ libthai-data
429
+ libthai0
430
+ libtidy5deb1
431
+ libtiff6
432
+ libtimedate-perl
433
+ libtinfo6
434
+ libtinyxml2-10
435
+ libtirpc-common
436
+ libtirpc3t64
437
+ libtk8.6
438
+ libtommath1
439
+ libtool
440
+ libtraceevent1
441
+ libtraceevent1-plugin
442
+ libtracefs1
443
+ libtsan2
444
+ libtss2-esys-3.0.2-0t64
445
+ libtss2-mu-4.0.1-0t64
446
+ libtss2-rc0t64
447
+ libtss2-sys1t64
448
+ libtss2-tcti-cmd0t64
449
+ libtss2-tcti-device0t64
450
+ libtss2-tcti-mssim0t64
451
+ libtss2-tcti-swtpm0t64
452
+ libtypes-serialiser-perl
453
+ libubsan1
454
+ libuchardet0
455
+ libudev1
456
+ libudisks2-0
457
+ libunistring5
458
+ libunwind8
459
+ liburcu8t64
460
+ liburi-perl
461
+ libusb-1.0-0
462
+ libutempter0
463
+ libuuid1
464
+ libuv1t64
465
+ libvolume-key1
466
+ libvorbis0a
467
+ libvorbisfile3
468
+ libvulkan1
469
+ libwayland-client0
470
+ libwayland-cursor0
471
+ libwayland-egl1
472
+ libwayland-server0
473
+ libwbclient0
474
+ libwebp7
475
+ libwebpdemux2
476
+ libwebpmux3
477
+ libwrap0
478
+ libx11-6
479
+ libx11-data
480
+ libx11-xcb1
481
+ libxau6
482
+ libxaw7
483
+ libxcb-dri2-0
484
+ libxcb-dri3-0
485
+ libxcb-glx0
486
+ libxcb-present0
487
+ libxcb-randr0
488
+ libxcb-render0
489
+ libxcb-shm0
490
+ libxcb-sync1
491
+ libxcb-xfixes0
492
+ libxcb1
493
+ libxcomposite1
494
+ libxcursor1
495
+ libxdamage1
496
+ libxdmcp6
497
+ libxext6
498
+ libxfixes3
499
+ libxfont2
500
+ libxft2
501
+ libxi6
502
+ libxinerama1
503
+ libxkbcommon0
504
+ libxkbfile1
505
+ libxml-libxml-perl
506
+ libxml-namespacesupport-perl
507
+ libxml-sax-base-perl
508
+ libxml-sax-perl
509
+ libxml2
510
+ libxml2-dev
511
+ libxmlb2
512
+ libxmlsec1t64
513
+ libxmlsec1t64-openssl
514
+ libxmu6
515
+ libxmuu1
516
+ libxpm4
517
+ libxrandr2
518
+ libxrender1
519
+ libxshmfence1
520
+ libxslt1.1
521
+ libxss1
522
+ libxt6t64
523
+ libxtables12
524
+ libxtst6
525
+ libxxf86vm1
526
+ libxxhash0
527
+ libyajl2
528
+ libyaml-0-2
529
+ libyaml-dev
530
+ libz3-4
531
+ libz3-dev
532
+ libzen0t64
533
+ libzip4t64
534
+ libzmq5
535
+ libzstd-dev
536
+ libzstd1
537
+ python3-launchpadlib
538
+ python3-oauthlib
539
+ python3-wadllib
540
+ texinfo-lib
@@ -12,6 +12,7 @@ add_log() {
12
12
  printf "\033[32;1m%s \033[0m\033[34;1m%s \033[0m\033[90;1m%s\033[0m\n" "$mark" "$subject" "Added $subject"
13
13
  else
14
14
  printf "\033[31;1m%s \033[0m\033[34;1m%s \033[0m\033[90;1m%s\033[0m\n" "$mark" "$subject" "Failed to setup $subject"
15
+ [ "${fail_fast:?}" = "true" ] && exit 1
15
16
  fi
16
17
  done
17
18
  }
@@ -78,25 +79,40 @@ extension_dir_linux() {
78
79
  fi
79
80
  }
80
81
 
82
+ linux_php_semver() {
83
+ local php_config=/usr/bin/php-config"${version:?}"
84
+ if [ -e "$php_config" ]; then
85
+ grep -Eo 'version="[0-9]+(\.[0-9]+){2}((-?[a-zA-Z]+([0-9]+)?)?){2}' "$php_config" | cut -d '"' -f 2
86
+ fi
87
+ }
88
+
81
89
  data() {
82
90
  old_versions="5.[3-5]"
83
- date='20220831'
91
+ date='20240716'
92
+ arch=$(uname -m)
84
93
  if [ "$os" = "Linux" ]; then
85
- . /etc/lsb-release
86
- os=$os-$DISTRIB_CODENAME
94
+ . /etc/os-release
95
+ os=$os-$VERSION_CODENAME-$arch
87
96
  api_version=$(get_api_version)
97
+ key="$key$(linux_php_semver)"
88
98
  dir=$(extension_dir_linux "$api_version")
89
99
  sudo mkdir -p "$dir/deps" && fix_ownership "$dir"
90
100
  elif [ "$os" = "Darwin" ]; then
101
+ os_version=$(sw_vers -productVersion)
102
+ os=$os-$os_version-$arch
91
103
  api_version=$(get_api_version)
92
104
  dir=$(extension_dir_darwin "$api_version")
93
105
  sudo mkdir -p "$dir/deps" && fix_ownership "$dir"
94
106
  else
95
- os="Windows"
107
+ os="Windows-$arch"
96
108
  dir='C:\\tools\\php\\ext'
97
109
  fi
98
110
  job="${GITHUB_REPOSITORY}-${GITHUB_WORKFLOW}-${GITHUB_JOB}"
99
- key="$(echo -n "$extensions-$key-$job" | openssl dgst -sha256 | cut -d ' ' -f 2)"
111
+ if command -v "sha256sum" >/dev/null; then
112
+ key="$(echo -n "$extensions-$key-$job" | sha256sum | cut -d ' ' -f 1)"
113
+ else
114
+ key="$(echo -n "$extensions-$key-$job" | openssl dgst -sha256 | cut -d ' ' -f 2)"
115
+ fi
100
116
  key="$os"-"$version"-"$key"-"$date"
101
117
  echo "$dir" > "${RUNNER_TEMP:?}"/dir
102
118
  echo "$key" > "${RUNNER_TEMP:?}"/key
@@ -106,15 +122,21 @@ data() {
106
122
 
107
123
  dependencies() {
108
124
  if [ "$os" = "Linux" ] || [ "$os" = "Darwin" ]; then
109
- export tick="✓"
110
- export cross="✗"
111
125
  export ext_config_directory="/tmp/extcache"
112
126
  export deps_cache_directory="${RUNNER_TOOL_CACHE}"/deps
113
127
  sudo mkdir -p "$deps_cache_directory"
114
- script_dir=$(cd "$(dirname "${BASH_SOURCE[0]}")" >/dev/null 2>&1 && pwd)
128
+ setup_dependencies "$extensions" "$(cat "${RUNNER_TEMP:?}"/dir)"
129
+ fi
130
+ }
131
+
132
+ init() {
133
+ export tick="✓"
134
+ export cross="✗"
135
+ script_dir=$(cd "$(dirname "${BASH_SOURCE[0]}")" >/dev/null 2>&1 && pwd)
136
+ if [[ "$os" = "Linux" || "$os" = "Darwin" ]]; then
115
137
  # shellcheck disable=SC1090
116
138
  . "$script_dir/$(echo "$os" | tr '[:upper:]' '[:lower:]').sh"
117
- setup_dependencies "$extensions" "$(cat "${RUNNER_TEMP:?}"/dir)"
139
+ self_hosted_helper
118
140
  fi
119
141
  }
120
142
 
@@ -122,6 +144,6 @@ run=$1
122
144
  extensions=$2
123
145
  version=$3
124
146
  key=$4
125
- os=$(uname -s)
126
-
147
+ os="$(uname -s)"
148
+ init
127
149
  $run
@@ -82,6 +82,7 @@ setup_extensions() {
82
82
  add_library_helper() {
83
83
  dep_name=$1
84
84
  cache_dir=$2
85
+ [ -e "$cache_dir"/list ] && grep -Eq "^$dep_name" "$cache_dir"/list && return
85
86
  echo "$dep_name" | sudo tee -a "$cache_dir"/list >/dev/null 2>&1
86
87
  (
87
88
  cd "$brew_cellar" || exit 1
@@ -97,9 +98,10 @@ add_library() {
97
98
  lib=$1
98
99
  cache_dir=$2
99
100
  brew list "$lib" &>/dev/null || brew install "$lib"
100
- IFS=' ' read -r -a deps_array <<<"$(brew deps "$lib" | tr '\n' ' ')"
101
+ IFS=' ' read -r -a deps_array <<<"$(brew deps --formula "$lib" | tr '\n' ' ')"
101
102
  to_wait=()
102
103
  for dep_name in "$lib" "${deps_array[@]}"; do
104
+ dep_name="$(basename "$dep_name")"
103
105
  add_library_helper "$dep_name" "$cache_dir" &
104
106
  to_wait+=($!)
105
107
  done
@@ -142,13 +144,13 @@ setup_libraries() {
142
144
  sudo cp -a "$tap_dir"/"$ext_tap"/.github/deps/"$extension"/*.rb "$tap_dir"/"$core_tap"/Formula/ 2>/dev/null || true
143
145
  sudo mkdir -p "$ext_deps_dir"
144
146
  echo "::group::Logs to set up libraries required for $extension"
145
- for lib in "${libraries_array[@]}"; do
146
- if ! [ -e "$ext_deps_dir"/list ]; then
147
+ if ! [ -e "$ext_deps_dir"/list ]; then
148
+ for lib in "${libraries_array[@]}"; do
147
149
  add_library "$lib" "$ext_deps_dir"
148
- else
149
- restore_library "$ext_deps_dir"
150
- fi
151
- done
150
+ done
151
+ else
152
+ restore_library "$ext_deps_dir"
153
+ fi
152
154
  echo "::endgroup::"
153
155
  add_log "$tick" "${libraries_array[@]}"
154
156
  }
@@ -165,8 +167,16 @@ setup_dependencies() {
165
167
  add_brew_tap "$ext_tap"
166
168
  for extension in "${extensions_array[@]}"; do
167
169
  IFS=' ' read -r -a dependency_array <<<"$(get_dependencies "$extension")"
168
- IFS=' ' read -r -a extension_array <<<"$(echo "${dependency_array[@]}" | grep -Eo "[a-z]*@" | sed 's/@//' | tr '\n' ' ')"
169
- IFS=' ' read -r -a libraries_array <<<"${dependency_array[@]//shivammathur*/}"
170
+ libraries_array=()
171
+ extension_array=()
172
+ for item in "${dependency_array[@]}"; do
173
+ if ! [[ "$item" == *"shivammathur"* ]]; then
174
+ libraries_array+=("$item")
175
+ else
176
+ formula_name="$(basename "$item")"
177
+ grep -q AbstractPhpExtension "$tap_dir/$ext_tap/Formula/$formula_name.rb" && extension_array+=("$item") || libraries_array+=("$item")
178
+ fi
179
+ done
170
180
  if [[ -n "${libraries_array[*]// /}" ]]; then
171
181
  step_log "Setup libraries for $extension"
172
182
  setup_libraries "$extension" "${libraries_array[@]}"
@@ -179,6 +189,10 @@ setup_dependencies() {
179
189
  fi
180
190
  }
181
191
 
192
+ self_hosted_helper() {
193
+ :
194
+ }
195
+
182
196
  export HOMEBREW_CHANGE_ARCH_TO_ARM=1
183
197
  export HOMEBREW_NO_INSTALL_CLEANUP=1
184
198
  export HOMEBREW_NO_AUTO_UPDATE=1
@@ -1,12 +1,37 @@
1
- link_apt_fast() {
2
- if ! command -v apt-fast >/dev/null; then
3
- sudo ln -sf /usr/bin/apt-get /usr/bin/apt-fast
1
+ read_env() {
2
+ fail_fast="${fail_fast:-${FAIL_FAST:-false}}"
3
+ [[ -z "${ImageOS}" && -z "${ImageVersion}" || -n ${ACT} ]] && _runner=self-hosted || _runner=github
4
+ runner="${runner:-${RUNNER:-$_runner}}"
5
+
6
+ if [[ "$runner" = "github" && $_runner = "self-hosted" ]]; then
7
+ fail_fast=true
8
+ add_log "${cross:?}" "Runner" "Runner set as github in self-hosted environment"
4
9
  fi
5
10
  }
6
11
 
7
- add_sudo() {
8
- if ! command -v sudo >/dev/null; then
9
- apt-get install -y sudo || (apt-get update && apt-get install -y sudo)
12
+ check_package() {
13
+ apt-cache policy "$1" 2>/dev/null | grep -q 'Candidate'
14
+ }
15
+
16
+ add_package() {
17
+ package=$1
18
+ if ! command -v "$package" >/dev/null; then
19
+ check_package "$package" || apt-get update >/dev/null 2>&1
20
+ apt-get install -y "$package" >/dev/null 2>&1 || (apt-get update >/dev/null 2>&1 && apt-get install -y "$package" >/dev/null 2>&1)
21
+ fi
22
+ }
23
+
24
+ add_ppa_package() {
25
+ package=$1
26
+ package_link="$(get_package_link "$package")"
27
+ curl -o /tmp/"$package.deb" -sL "$package_link"
28
+ sudo DEBIAN_FRONTEND=noninteractive dpkg -i "/tmp/$package.deb"
29
+ }
30
+
31
+ link_apt_fast() {
32
+ if ! command -v apt-fast >/dev/null; then
33
+ sudo ln -sf /usr/bin/apt-get /usr/bin/apt-fast
34
+ trap "sudo rm -f /usr/bin/apt-fast 2>/dev/null" exit
10
35
  fi
11
36
  }
12
37
 
@@ -23,7 +48,7 @@ get_dependencies() {
23
48
  package=$1
24
49
  prefix=$2
25
50
  list_deps="$(grep "${package#*-}" "${script_dir:?}"/../lists/linux-deps | cut -d '=' -f 2 | grep -Eo "$prefix.*")"
26
- package_deps="$(sed -e '/Package:\s'"$package$"'/,/^\s*$/!d' /tmp/Packages | grep -Eo "^Depends.*" | tr ',' '\n' | awk -v ORS='' '/^\s'"$prefix"'/{print$0}' | sed -e 's/([^()]*)//g' | sort | uniq | xargs echo -n)"
51
+ IFS=$'\n' read -d '' -r -a package_deps < <(sed -n '/Package:\s'"$package"'/,/^$/p' /tmp/Packages | grep '^Depends:' | cut -d ':' -f2- | tr ',' '\n' | grep -E '^\s*'"$prefix" | cut -d '(' -f1 | sed 's/^\s*//;s/\s*$//' | sort -u);
27
52
  deps=()
28
53
  [[ -n "${list_deps[*]}" ]] && deps+=("${list_deps[@]}")
29
54
  [[ -n "${package_deps[*]}" ]] && deps+=("${package_deps[@]}")
@@ -58,6 +83,7 @@ setup_extensions() {
58
83
  extension_dir=$1
59
84
  IFS=' ' read -r -a dependency_extension_array <<<"$(echo "$2" | xargs -n1 | sort | uniq | xargs)"
60
85
  to_wait=()
86
+ step_log "Setup extensions"
61
87
  for dependency_extension in "${dependency_extension_array[@]}"; do
62
88
  setup_extensions_helper "$dependency_extension" "$extension_dir" &
63
89
  to_wait+=($!)
@@ -68,11 +94,13 @@ setup_extensions() {
68
94
 
69
95
  filter_libraries() {
70
96
  libraries="$(echo "$1" | xargs -n1 | sort | uniq | xargs)"
71
- for library in $libraries; do
72
- if grep -i -q -w "$library" "${script_dir:?}"/../lists/"$VERSION_CODENAME"-libs; then
73
- libraries=${libraries//$library/}
74
- fi
75
- done
97
+ if [ "$runner" = "github" ]; then
98
+ for library in $libraries; do
99
+ if grep -i -q -w "$library" "${script_dir:?}"/../lists/"$VERSION_CODENAME"-libs; then
100
+ libraries=${libraries//$library/}
101
+ fi
102
+ done
103
+ fi
76
104
  echo "$libraries"
77
105
  }
78
106
 
@@ -80,16 +108,22 @@ setup_libraries() {
80
108
  libraries=$1
81
109
  if [[ -n "${libraries// /}" ]]; then
82
110
  libraries=$(filter_libraries "$libraries")
111
+ if [[ "$libraries" = *libgd* ]]; then
112
+ check_package 'libavif[0-9]*$' && libraries="$libraries libavif[0-9]*$"
113
+ check_package 'libheif[0-9]*$' && libraries="$libraries libheif[0-9]*$"
114
+ check_package 'libraqm[0-9]*$' && libraries="$libraries libraqm[0-9]*$"
115
+ check_package 'libraqm[0-9]*$' && libraries="$libraries libimagequant[0-9]*$"
116
+ fi
83
117
  if [[ -n "${libraries// /}" ]]; then
84
118
  step_log "Setup libraries"
85
119
  IFS=' ' read -r -a libraries_array <<<"$libraries"
86
- link_apt_fast
87
120
  echo "::group::Logs to set up required libraries"
88
121
  sudo DEBIAN_FRONTEND=noninteractive apt-fast install --no-install-recommends --no-upgrade -y "${libraries_array[@]}" || (sudo DEBIAN_FRONTEND=noninteractive apt-get update && sudo DEBIAN_FRONTEND=noninteractive apt-fast install --no-install-recommends --no-upgrade -y "${libraries_array[@]}")
89
122
  ec="$?"
123
+ [[ "$libraries" = *libgd* ]] && add_ppa_package libgd3
90
124
  echo "::endgroup::"
91
125
  if [ "$ec" -eq "0" ]; then mark="${tick:?}"; else mark="${cross:?}"; fi
92
- add_log "$mark" "${libraries_array[@]}"
126
+ add_log "$mark" "${libraries_array[@]//\[0-9]*$/}"
93
127
  fi
94
128
  fi
95
129
  }
@@ -98,7 +132,6 @@ setup_dependencies() {
98
132
  extensions=$1
99
133
  extension_dir=$2
100
134
  [[ -z "${extensions// }" ]] && return
101
- add_sudo
102
135
  IFS=' ' read -r -a extensions_array <<<"$(echo "$extensions" | sed -e "s/pdo[_-]//g" -Ee "s/^|,\s*/ php$version-/g")"
103
136
  . /etc/os-release
104
137
  sudo rm -rf "${ext_config_directory:?}" || true
@@ -112,8 +145,10 @@ setup_dependencies() {
112
145
  extension_packages="$extension_packages ${dependency_extension_packages_array[*]}"
113
146
  extension_packages="${extension_packages//php$version-common/}"
114
147
  for dependency_extension in "${dependency_extension_packages_array[@]}"; do
115
- mkdir -p "$ext_config_directory/${extension_package#*-}"
116
- add_config "${extension_package#*-}" "$dependency_extension"
148
+ if [ "${dependency_extension#*-}" != 'common' ]; then
149
+ mkdir -p "$ext_config_directory/${extension_package#*-}"
150
+ add_config "${extension_package#*-}" "${dependency_extension#*-}"
151
+ fi
117
152
  done
118
153
  done
119
154
  if [[ -n "${libraries// /}" ]]; then
@@ -123,3 +158,10 @@ setup_dependencies() {
123
158
  setup_extensions "$extension_dir" "${extension_packages//php$version-/}"
124
159
  fi
125
160
  }
161
+
162
+ self_hosted_helper() {
163
+ add_package sudo
164
+ add_package curl
165
+ link_apt_fast
166
+ read_env
167
+ }