77 Commits
1.5.0 ... 1.7.1

Author SHA1 Message Date
github-actions[bot]
67605e7cb2 Updating lists 2022-05-30 05:41:41 +00:00
Shivam Mathur
a96cc5f73c Add support for ubuntu-22.04 2022-05-30 11:07:44 +05:30
github-actions[bot]
111a9ae78c Updating lists 2022-05-24 13:52:44 +00:00
github-actions[bot]
51ce802077 Updating lists 2022-04-07 15:13:17 +00:00
github-actions[bot]
6f1e8c47b9 Updating lists 2022-04-06 15:13:20 +00:00
github-actions[bot]
0a28ecc62d Updating lists 2022-04-04 15:08:21 +00:00
Shivam Mathur
257e3c93fb Handle cache errors 2022-03-22 10:31:41 +05:30
Shivam Mathur
f1c2fee180 Clear cache for mongodb and http on macOS 2022-03-04 07:01:05 +05:30
Shivam Mathur
bc065e2169 Bump actions/checkout to v3 2022-03-02 03:16:14 +00:00
Shivam Mathur
f77feb6ec0 Bump Node.js dependencies 2022-03-01 21:06:18 +05:30
Shivam Mathur
850e46eba6 Reset cache for vips on macOS 2022-02-24 23:25:53 +05:30
Shivam Mathur
fe198edd1a Bump version to 1.7.1 2022-02-10 06:54:20 +05:30
Shivam Mathur
9c9aa7fd23 Improve node tests workflow 2022-02-10 06:47:30 +05:30
Shivam Mathur
24eb15e5fa Fix import in cache.test.ts 2022-02-10 06:42:53 +05:30
Shivam Mathur
2f6e2f662c Add CodeQL workflow 2022-02-10 06:38:32 +05:30
Shivam Mathur
a4da3200ee Update Node.js dependencies 2022-02-10 06:38:32 +05:30
github-actions[bot]
959ba21b72 Updating lists 2022-01-18 15:14:29 +00:00
Shivam Mathur
5f06df1e0f Happy new year [skip ci] 2022-01-02 08:52:17 +00:00
Shivam Mathur
0d8f2cf62b Refactor workflows 2021-12-17 18:27:03 +05:30
Shivam Mathur
03f7f56b30 Bump Node version to 16.x 2021-12-17 18:27:03 +05:30
Shivam Mathur
79c4acf033 Add npm release workflow 2021-12-17 18:27:02 +05:30
Shivam Mathur
a173299cf0 Bump version to 1.7.0 2021-12-17 18:26:20 +05:30
Shivam Mathur
b0f769600b Add repo, workflow and job in cache key
Reset cache date
2021-12-17 09:53:59 +00:00
github-actions[bot]
fd96c6ef49 Updating lists 2021-12-13 15:05:37 +00:00
Shivam Mathur
506c0905f4 Update versions in README 2021-12-06 08:26:51 +05:30
github-actions[bot]
f509c0eeeb Updating lists 2021-12-02 15:02:55 +00:00
Shivam Mathur
354b2b75c4 Reset cache for PHP 8.1 and above 2021-11-24 13:02:42 +00:00
github-actions[bot]
75fdf09203 Updating lists 2021-11-10 15:12:14 +00:00
Shivam Mathur
2f58e22e3c Reset cache for imap on macOS 2021-10-22 11:36:38 +05:30
Shivam Mathur
2e789925e4 Bump macos cache 2021-10-05 13:09:10 +05:30
Shivam Mathur
5b215c413b Add patch for ca-certificate and reset cache on darwin 2021-10-05 12:54:35 +05:30
Shivam Mathur
20eb4f1c8b Update README 2021-09-27 04:01:02 +05:30
Shivam Mathur
21e27c8c67 Remove Ubuntu 16.04
Use /etc/os-release in release workflow
2021-09-22 05:34:52 +05:30
Shivam Mathur
da8a00bfab Suppress error if library is from lists 2021-09-19 20:09:38 +05:30
Shivam Mathur
59bc1e6fcf Fix to add dependency extensions config 2021-09-19 16:07:21 +05:30
Shivam Mathur
9b4ef64d32 Fix filter_extensions in darwin.sh 2021-09-19 08:03:18 +05:30
Shivam Mathur
e51a646160 Improve support for extensions with custom support on setup-php 2021-09-19 07:53:27 +05:30
Shivam Mathur
da71add69c Bump version to 1.6.2
Update Node.js dependencies
2021-09-19 06:28:55 +05:30
Shivam Mathur
b52930e590 Refactor to use setup-php 2021-09-19 06:06:31 +05:30
Shivam Mathur
3572ca5db9 Update README 2021-09-19 05:36:56 +05:30
Shivam Mathur
b8a361a25a Fix 8.1 cache
Reset cache date
2021-09-19 03:29:29 +05:30
github-actions[bot]
eb0ccb73d5 Updating lists 2021-09-16 15:05:10 +00:00
github-actions[bot]
2a56d34ea0 Updating lists 2021-09-01 12:36:03 +00:00
Shivam Mathur
075da4be87 Sort darwin extensions list 2021-09-01 18:00:01 +05:30
github-actions[bot]
b660f29789 Updating lists 2021-09-01 12:27:24 +00:00
Shivam Mathur
f73bbb0929 Update darwin extensions list in libs workflow
Rename workflow
2021-09-01 17:54:58 +05:30
Shivam Mathur
caa5d3f915 Minor refactor in darwin.sh 2021-09-01 17:43:30 +05:30
Shivam Mathur
6c67ee1261 Reset cache for PHP 8.1 2021-09-01 11:11:42 +05:30
Shivam Mathur
502885cc75 Update sponsor link in README [skip ci]. 2021-08-28 13:49:22 +05:30
Shivam Mathur
d3929ece8e Remove FUNDING.yml and use shivammathur/.github [skip ci] 2021-08-28 13:38:37 +05:30
Shivam Mathur
9355729f4a Reset cache on Windows 2021-08-23 20:06:03 +05:30
Shivam Mathur
7f4f2f921c Rename macos-11.0 to macos-11 2021-08-18 09:43:45 +05:30
Shivam Mathur
bcdf57190d Fix extension directory for PHP 8.1 on Linux
After d47fe5f570 extension directory for PHP 8.1 should be "/usr/lib/php/<phpapi>"
2021-08-17 12:27:15 +05:30
github-actions[bot]
fa913560e6 Updating lists 2021-08-04 15:10:27 +00:00
Shivam Mathur
90fc296fbc Add API version for PHP 8.1 2021-08-01 06:13:04 +05:30
Shivam Mathur
f851596ef0 Add support to skip dependency extensions 2021-07-23 11:04:34 +05:30
Shivam Mathur
319d6f9a6d Reset cache date for imagick, and apcu on PHP 8.1 2021-07-23 09:40:29 +05:30
Shivam Mathur
882ea8f750 Bump version to 1.6.1 2021-07-07 19:47:31 +05:30
Shivam Mathur
7e3d12a4c4 Skip restoring existing libraries
Cleanup add_library and its helper function in darwin.sh
2021-07-07 19:33:10 +05:30
Shivam Mathur
96afc02cad Fix library cache on macOS 2021-07-07 13:08:12 +05:30
Shivam Mathur
024a2e796f Add brew environment variables 2021-07-03 16:49:08 +05:30
Shivam Mathur
65ea75914e Add extension dependency support for Darwin
Refactor extension.sh to 3 scripts

Update dependencies

Minor fixes in cache.ts and tests

Improve get_api_version in cache.sh

Improve logs

Use @actions/cache to cache dependencies

Refactor linux.sh

Refactor Node.js code

Do not setup dependencies for old PHP

Remove duplicate dependency extensions in linux

Bump version to 1.6.0
2021-07-03 16:12:27 +05:30
Shivam Mathur
b9734e30e3 Reset cache if imagick is in extensions on macOS. 2021-06-30 20:41:22 +05:30
github-actions[bot]
a91eaeae66 Updating lists 2021-06-11 15:07:09 +00:00
github-actions[bot]
5fd9e31957 Updating lists 2021-06-03 15:16:23 +00:00
Shivam Mathur
3a9c03a639 Update dependencies
Update to Jest 27

Update tsconfig.json
2021-05-31 08:02:04 +05:30
github-actions[bot]
7c356bdccc Updating lists 2021-05-20 16:38:08 +00:00
github-actions[bot]
dc78eb217c Updating lists 2021-05-19 15:14:27 +00:00
github-actions[bot]
b98cea8adc Updating lists 2021-05-13 15:05:16 +00:00
Shivam Mathur
470b94d722 Clear cache on Windows for imagick 2021-05-12 19:43:35 +05:30
Shivam Mathur
acce7e61bc Update dependencies 2021-05-11 18:09:52 +05:30
github-actions[bot]
c2ce0737e9 Updating lists 2021-05-06 15:22:12 +00:00
github-actions[bot]
a6cb9851d8 Updating lists 2021-04-22 15:05:53 +00:00
Shivam Mathur
9d87cbc9e2 Update README.md 2021-04-06 13:55:10 +05:30
Shivam Mathur
dfaa2c7ea5 Fix extension_dir 2021-04-03 16:05:05 +05:30
github-actions[bot]
a0bace7fd6 Updating lists 2021-04-01 15:20:02 +00:00
github-actions[bot]
3da1e049db Updating lists 2021-03-18 15:22:07 +00:00
30 changed files with 63674 additions and 10153 deletions

View File

@@ -12,12 +12,5 @@
"plugin:prettier/recommended",
"prettier"
],
"plugins": ["@typescript-eslint", "jest"],
"rules": {
"camelcase": "off",
"require-atomic-updates": "off",
"@typescript-eslint/ban-ts-ignore": "off",
"@typescript-eslint/camelcase": "off",
"@typescript-eslint/no-unused-vars": "off"
}
"plugins": ["@typescript-eslint", "jest"]
}

7
.github/FUNDING.yml vendored
View File

@@ -1,7 +0,0 @@
# These are supported funding model platforms
open_collective: setup-php
tidelift: "npm/setup-php"
community_bridge: setup-php
patreon: shivammathur
custom: https://www.paypal.me/shivammathur

View File

@@ -0,0 +1,4 @@
name : CodeQL Configuration
paths:
- './src'

25
.github/workflows/codeql.yml vendored Normal file
View File

@@ -0,0 +1,25 @@
name: CodeQL Workflow
on:
workflow_dispatch:
schedule:
- cron: '0 15 * * 6'
jobs:
codeql:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v3
with:
fetch-depth: 2
- name: Initialize CodeQL
uses: github/codeql-action/init@v1
with:
config-file: ./.github/codeql/codeql-configuration.yml
languages: javascript
- name: Autobuild
uses: github/codeql-action/autobuild@v1
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v1

View File

@@ -1,4 +1,4 @@
name: Libs workflow
name: Git release workflow
on:
workflow_dispatch:
schedule:
@@ -10,12 +10,12 @@ jobs:
strategy:
fail-fast: false
matrix:
os: [ubuntu-20.04, ubuntu-18.04, ubuntu-16.04]
os: [ubuntu-22.04, ubuntu-20.04, ubuntu-18.04]
steps:
- name: Update lists
run: |
. /etc/lsb-release
dpkg -l | awk '($1 == "ii") && ($2 ~ /^lib|lib$/) { print $2 }' | sed 's/:amd64//' > /tmp/"$DISTRIB_CODENAME"-libs
. /etc/os-release
dpkg -l | awk '($1 == "ii") && ($2 ~ /^lib|lib$/) { print $2 }' | sed 's/:amd64//' > /tmp/"$VERSION_CODENAME"-libs
- name: Upload Artifact
uses: actions/upload-artifact@v2
with:
@@ -29,7 +29,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v2
uses: actions/checkout@v3
with:
ref: develop
fetch-depth: 0
@@ -38,6 +38,10 @@ jobs:
with:
name: lists
path: src/lists
- name: Update darwin extensions list
run: |
brew tap shivammathur/extensions
find "$(brew --repository shivammathur/extensions)"/.github/deps -mindepth 1 -type d -name "*" -exec basename {} \; | sort > src/lists/darwin-extensions
- name: Update tags and branches
run: |
push_ref() {

69
.github/workflows/node-release.yml vendored Normal file
View File

@@ -0,0 +1,69 @@
name: Node release workflow
on:
release:
types: [created]
workflow_dispatch:
inputs:
skip:
description: Skip release to repository
required: false
tag:
description: Tag name
required: true
jobs:
build:
runs-on: ubuntu-latest
permissions:
contents: read
packages: write
steps:
- name: Harden Runner
uses: step-security/harden-runner@v1
with:
allowed-endpoints:
github.com:443
npm.pkg.github.com:443
registry.npmjs.org:443
- name: Checkout release
if: github.event_name != 'workflow_dispatch'
uses: actions/checkout@v3
- name: Checkout tag
uses: actions/checkout@v3
if: github.event_name == 'workflow_dispatch'
with:
ref: ${{ github.event.inputs.tag }}
- name: Setup Node.js
uses: actions/setup-node@v2
with:
node-version: '16.x'
registry-url: https://registry.npmjs.org
- name: Install dependencies and add lib
run: |
npm install
npm run build
sed -i -e '/lib\//d' .gitignore
- name: Publish to NPM
if: "!contains(github.event.inputs.skip, 'skip-npm')"
run: npm publish --access public
env:
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
- name: Change to GitHub Packages registry
uses: actions/setup-node@v2
with:
registry-url: https://npm.pkg.github.com
scope: '@shivammathur'
- name: Patch package.json
run: |
sed -i 's#"name": "#"name": "@shivammathur/#' package.json
- name: Publish to GitHub Packages
if: "!contains(github.event.inputs.skip, 'skip-github-packages')"
run: npm publish
env:
NODE_AUTH_TOKEN: ${{ secrets.GITHUB_TOKEN }}

41
.github/workflows/node-test.yml vendored Normal file
View File

@@ -0,0 +1,41 @@
name: Node test workflow
on: [push, pull_request]
jobs:
run:
name: Run
runs-on: ${{ matrix.operating-system }}
strategy:
fail-fast: false
matrix:
operating-system: [ubuntu-latest, windows-latest, macos-latest]
steps:
- name: Checkout
uses: actions/checkout@v3
with:
fetch-depth: 2
- name: Setup Node.js 16.x
uses: actions/setup-node@v2
with:
node-version: 16.x
- name: Install dependencies
run: npm install
- name: Prettier Format Check
run: npm run format-check
- name: ESLint Check
run: npm run lint
- name: Run npm audit
run: npm audit
- name: Send Coverage
uses: codecov/codecov-action@v2
with:
token: ${{ secrets.CODECOV_TOKEN }}
files: coverage/lcov.info
name: github-actions-codecov-${{ matrix.operating-system }}
fail_ci_if_error: false
verbose: true

View File

@@ -1,31 +0,0 @@
name: Main workflow
on: [push, pull_request]
jobs:
run:
name: Run
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v2
- name: Setup Node.js 12.x
uses: actions/setup-node@v1
with:
node-version: 12.x
- name: Install dependencies
run: npm install
- name: Prettier Format Check
run: npm run format-check
- name: ESLint Check
run: npm run lint
- name: Run tests
run: npm test
- name: Send Coverage
continue-on-error: true
timeout-minutes: 1
run: curl -s https://codecov.io/bash | bash -s -- -t ${{secrets.CODECOV_TOKEN}} -f coverage/clover.xml -n github-actions-codecov-${{ matrix.operating-system }}-php${{ matrix.php-versions }}

View File

@@ -1,7 +1,7 @@
The MIT License (MIT)
Copyright (c) 2020 shivammathur and contributors
Copyright (c) 2020-2022 shivammathur and contributors
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal

View File

@@ -4,10 +4,10 @@
<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>
<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>
<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>
<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.1-777bb3.svg?logo=php&logoColor=white&labelColor=555555"></a>
<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.2-777bb3.svg?logo=php&logoColor=white&labelColor=555555"></a>
</p>
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 to see how to use this.
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.
## Contents
@@ -33,21 +33,24 @@ Cache PHP extensions in [GitHub Actions](https://github.com/features/actions "Gi
|7.0|`Stable`|`End of life`|
|7.1|`Stable`|`End of life`|
|7.2|`Stable`|`End of life`|
|7.3|`Stable`|`Security fixes only`|
|7.4|`Stable`|`Active`|
|7.3|`Stable`|`End of life`|
|7.4|`Stable`|`Security fixes only`|
|8.0|`Stable`|`Active`|
|8.1|`Nightly`|`In development`|
|8.1|`Stable`|`Active`|
|8.2|`Nightly`|`In development`|
## :cloud: OS/Platform Support
| Virtual environment | YAML workflow label |
|--- |--- |
|Windows Server 2019|`windows-latest` or `windows-2019`|
|----------------------|------------------------------------|
| Ubuntu 22.04 | `ubuntu-22.04` |
| Ubuntu 20.04 | `ubuntu-latest` or `ubuntu-20.04` |
| Ubuntu 18.04 | `ubuntu-18.04` |
|Ubuntu 16.04|`ubuntu-16.04`|
|macOS Catalina 10.15|`macos-latest` or `macOS-10.15`|
|macOS Big Sur 11.0|`macOS-11.0`|
| Windows Server 2022 | `windows-2022` |
| Windows Server 2019 | `windows-latest` or `windows-2019` |
| macOS Big Sur 12.x | `macOS-12` |
| macOS Big Sur 11.x | `macos-latest` or `macOS-11` |
| macOS Catalina 10.15 | `macOS-10.15` |
## :memo: Usage
@@ -58,14 +61,17 @@ Use this GitHub Action when the extensions you are adding in [setup-php](https:/
#### `php-version` (required)
- Specify the PHP version you want to set up.
- Accepts a `string`. For example `'7.4'`.
- Accepts a `string`. For example `'8.1'`.
- Accepts `latest` to set up the latest stable PHP version.
- Accepts `nightly` to set up a nightly build from the master branch of PHP.
- Accepts the format `d.x`, where `d` is the major version. For example `5.x`, `7.x` and `8.x`.
- See [PHP support](#tada-php-support) for supported PHP versions.
#### `extensions` (required)
- Specify the extensions you want to add or remove.
- Accepts a `string` in csv-format. For example `mbstring, , xdebug, :opcache`.
- Extensions prefixed with `:` are ignored.
- Specify the extensions you want to set up.
- Accepts a `string` in csv-format. For example `mbstring, xdebug, :opcache`.
- Extensions prefixed with `:` are ignored in output cache key.
#### `key` (required)
@@ -86,14 +92,14 @@ jobs:
strategy:
matrix:
operating-system: [ubuntu-latest, windows-latest, macos-latest]
php-versions: ['7.2', '7.3', '7.4']
php-versions: ['7.4', '8.0', '8.1']
name: PHP ${{ matrix.php-versions }} Test on ${{ matrix.operating-system }}
env:
extensions: intl, pcov
key: cache-v1 # can be any string, change to clear the extension cache.
steps:
- name: Checkout
uses: actions/checkout@v2
uses: actions/checkout@v3
- name: Setup cache environment
id: extcache
@@ -132,7 +138,7 @@ If you set up both `TS` and `NTS` PHP versions on `Windows` in your workflow, pl
## :scroll: License
The scripts and documentation in this project are under the [MIT License](LICENSE "License for shivammathur/cache-extensions"). This project has multiple [dependencies](https://github.com/shivammathur/cache-extensions/network/dependencies "Dependencies for this PHP Action"). Their licenses can be found in their respective repositories.
The code and documentation in this project are under the [MIT License](LICENSE "License for shivammathur/cache-extensions"). This project has multiple [dependencies](https://github.com/shivammathur/cache-extensions/network/dependencies "Dependencies for this PHP Action"). Their licenses can be found in their respective repositories.
## :+1: Contributions
@@ -143,9 +149,8 @@ Contributions are welcome! See [Contributor's Guide](.github/CONTRIBUTING.md "sh
If this action helped you.
- Please star the project and share it. If you blog, please share your experience of using this action.
- Please consider supporting our work by sponsoring using [Open Collective](https://opencollective.com/setup-php), [Paypal](https://www.paypal.me/shivammathur "Shivam Mathur PayPal") or [Patreon](https://www.patreon.com/shivammathur "Shivam Mathur Patreon").
- If you use this action at your company, please [reach out](mailto:contact@setup-php.com) to sponsor the project.
- Please support our work by sponsoring using [GitHub sponsors](https://github.com/sponsors/shivammathur).
## :package: Dependencies
- [Node.js dependencies](https://github.com/shivammathur/setup-php/network/dependencies "Node.js dependencies")
- [Node.js dependencies](https://github.com/shivammathur/cache-extensions/network/dependencies "Node.js dependencies")

View File

@@ -1,3 +1,5 @@
import * as path from 'path';
import * as spu from 'setup-php/lib/utils';
import * as cache from '../src/cache';
import * as utils from '../src/utils';
@@ -5,21 +7,16 @@ import * as utils from '../src/utils';
* Mock cache.ts
*/
jest.mock('../src/cache', () => ({
run: jest.fn().mockImplementation(
async (): Promise<string> => {
let version: string = process.env['php-version'] || '';
version = version.length > 1 ? version.slice(0, 3) : version + '.0';
run: jest.fn().mockImplementation(async (): Promise<string> => {
const version: string = await spu.parseVersion(
process.env['php-version'] || ''
);
const extensions = await utils.filterExtensions(
process.env['extensions'] || ''
);
const key: string = process.env['key'] || '';
const script_path = 'extensions.sh';
return (
'bash ' + script_path + ' "' + extensions + '" ' + key + ' ' + version
);
}
)
return await utils.scriptCall('test', extensions, key, version);
})
}));
/**
@@ -40,21 +37,22 @@ function setEnv(
}
describe('Install', () => {
const spath: string = path.join(__dirname, '../src/scripts/cache.sh');
it('Test Run', async () => {
setEnv('7.0', 'xdebug, pcov', 'cache-v1');
const script: string = '' + (await cache.run());
expect(script).toContain('bash extensions.sh "xdebug, pcov" cache-v1 7.0');
expect(script).toContain(`bash ${spath} test "xdebug, pcov" cache-v1 7.0`);
});
it('Test Run', async () => {
setEnv('7.4', 'xdebug, zip', 'cache-v2');
const script: string = '' + (await cache.run());
expect(script).toContain('bash extensions.sh "xdebug, zip" cache-v2 7.4');
expect(script).toContain(`bash ${spath} test "xdebug, zip" cache-v2 7.4`);
});
it('Test Run', async () => {
setEnv('7.4', 'xdebug, :zip', 'cache-v2');
const script: string = '' + (await cache.run());
expect(script).toContain('bash extensions.sh "xdebug" cache-v2 7.4');
expect(script).toContain(`bash ${spath} test "xdebug" cache-v2 7.4`);
});
});

View File

@@ -1,38 +1,33 @@
import * as fs from 'fs';
import * as path from 'path';
import * as utils from '../src/utils';
jest.mock('@actions/core', () => ({
getInput: jest.fn().mockImplementation(key => {
return ['cache-extensions'].indexOf(key) !== -1 ? key : '';
})
}));
async function cleanup(path: string): Promise<void> {
fs.unlink(path, error => {
if (error) {
console.log(error);
}
});
}
describe('Utils tests', () => {
it('checking readEnv', async () => {
process.env['test'] = 'setup-php';
expect(await utils.readEnv('test')).toBe('setup-php');
expect(await utils.readEnv('undefined')).toBe('');
});
it('checking getInput', async () => {
process.env['test'] = 'setup-php';
expect(await utils.getInput('test', false)).toBe('setup-php');
expect(await utils.getInput('cache-extensions', false)).toBe(
'cache-extensions'
);
expect(await utils.getInput('DoesNotExist', false)).toBe('');
expect(async () => {
await utils.getInput('DoesNotExist', true);
}).rejects.toThrow('Input required and not supplied: DoesNotExist');
});
it('checking parseVersion', async () => {
expect(await utils.parseVersion('7')).toBe('7.0');
expect(await utils.parseVersion('7.4')).toBe('7.4');
expect(await utils.parseVersion('latest')).toBe('7.4');
it('checking getOutput', async () => {
const temp_dir: string = process.env['RUNNER_TEMP'] || '';
const file_path: string = path.join(temp_dir, 'test');
fs.writeFileSync(file_path, 'test', {mode: 0o755});
expect(await utils.getOutput('test')).toBe('test');
await cleanup(file_path);
});
it('checking filterExtensions', async () => {
expect(await utils.filterExtensions('a,:b,c')).toBe('a,c');
expect(await utils.filterExtensions('a, :b, c')).toBe('a, c');
expect(await utils.filterExtensions('a,:b,c')).toBe('"a,c"');
expect(await utils.filterExtensions('a, :b, c')).toBe('"a, c"');
});
it('checking scriptCall', async () => {
const script: string = path.join(__dirname, '../src/scripts/cache.sh');
expect(await utils.scriptCall('test a b')).toBe(
['bash', script, 'test', 'a', 'b'].join(' ')
);
});
});

View File

@@ -15,5 +15,5 @@ inputs:
description: 'Key to version the cache hash.'
required: true
runs:
using: 'node12'
using: 'node16'
main: 'dist/index.js'

58748
dist/index.js vendored

File diff suppressed because one or more lines are too long

12137
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@@ -1,15 +1,25 @@
{
"name": "cache-extensions",
"version": "1.5.1",
"version": "1.7.1",
"private": false,
"description": "Cache extensions in GitHub Actions",
"main": "dist/index.js",
"description": "Cache PHP extensions in GitHub Actions",
"main": "lib/cache.js",
"types": "lib/cache.d.ts",
"directories": {
"lib": "lib",
"test": "__tests__",
"src": "src"
},
"files": [
"lib",
"src"
],
"scripts": {
"build": "tsc",
"lint": "eslint **/*.ts --cache",
"format": "prettier --write **/*.ts && git add .",
"format-check": "prettier --check **/*.ts",
"release": "ncc build src/cache.ts -o dist && git add -f dist/",
"lint": "eslint **/src/*.ts --cache --fix",
"format": "prettier --write **/src/*.ts && git add .",
"format-check": "prettier --check **/src/*.ts",
"release": "ncc build -o dist && git add -f dist/",
"test": "jest"
},
"repository": {
@@ -19,36 +29,38 @@
"keywords": [
"actions",
"php",
"setup"
"extension",
"cache"
],
"author": "shivammathur",
"license": "MIT",
"dependencies": {
"@actions/core": "^1.2.6",
"@actions/exec": "^1.0.4"
"@actions/cache": "^1.0.9",
"@actions/core": "^1.6.0",
"@actions/exec": "^1.1.0",
"setup-php": "2.17.1"
},
"devDependencies": {
"@types/jest": "^26.0.20",
"@types/node": "^14.14.34",
"@typescript-eslint/eslint-plugin": "^4.17.0",
"@typescript-eslint/parser": "^4.17.0",
"@zeit/ncc": "^0.22.3",
"eslint": "^7.21.0",
"eslint-config-prettier": "^8.1.0",
"eslint-plugin-import": "^2.22.1",
"eslint-plugin-jest": "^24.2.1",
"eslint-plugin-prettier": "^3.3.1",
"husky": "^4.3.8",
"jest": "^26.6.3",
"jest-circus": "^26.6.3",
"prettier": "^2.2.1",
"ts-jest": "^26.5.3",
"typescript": "^4.2.3"
"@types/jest": "^27.4.1",
"@types/node": "^17.0.21",
"@typescript-eslint/eslint-plugin": "^5.13.0",
"@typescript-eslint/parser": "^5.13.0",
"@vercel/ncc": "^0.33.3",
"eslint": "^8.10.0",
"eslint-config-prettier": "^8.4.0",
"eslint-plugin-import": "^2.25.4",
"eslint-plugin-jest": "^26.1.1",
"eslint-plugin-prettier": "^4.0.0",
"jest": "^27.5.1",
"jest-circus": "^27.5.1",
"prettier": "^2.5.1",
"ts-jest": "^27.1.3",
"typescript": "^4.6.2"
},
"husky": {
"skipCI": true,
"hooks": {
"bugs": {
"url": "https://github.com/shivammathur/cache-extensions/issues"
},
"simple-git-hooks": {
"pre-commit": "npm run format && npm run lint && npm run test && npm run build && npm run release"
}
}
}

View File

@@ -1,28 +1,70 @@
import {exec} from '@actions/exec';
import * as cache from '@actions/cache';
import * as core from '@actions/core';
import * as spu from 'setup-php/lib/utils';
import * as path from 'path';
import * as utils from './utils';
/**
* Handle dependencies
*
* @param extensions
* @param version
*/
export async function handleDependencies(
extensions: string,
version: string
): Promise<void> {
if (!/^5.[3-5]$/.test(version) && /linux|darwin/.test(process.platform)) {
const cache_key: string = (await utils.getOutput('key')) + '-deps';
const cache_dir: string = path.join(
await spu.readEnv('RUNNER_TOOL_CACHE'),
'deps'
);
const cache_hit: string | undefined = await cache.restoreCache(
[cache_dir],
cache_key,
[cache_key]
);
await exec(await utils.scriptCall('dependencies', extensions, version));
if (!cache_hit) {
try {
await cache.saveCache([cache_dir], cache_key);
} catch {
await cache.saveCache([cache_dir], cache_key + '-take-2');
}
}
}
}
/**
* Run the script
*/
export async function run(): Promise<void> {
try {
const version: string = await utils.parseVersion(
await utils.getInput('php-version', true)
const version: string = await spu.parseVersion(
await spu.getInput('php-version', true)
);
const extensions: string = await utils.filterExtensions(
await utils.getInput('extensions', true)
);
const key: string = await utils.getInput('key', true);
const script_path: string = path.join(__dirname, '../src/extensions.sh');
await exec(
'bash ' + script_path + ' "' + extensions + '" ' + key + ' ' + version
await spu.getInput('extensions', true)
);
const key: string = await spu.getInput('key', true);
await exec(await utils.scriptCall('data', extensions, version, key));
await handleDependencies(extensions, version);
} catch (error) {
core.setFailed(error.message);
core.setFailed((error as Error).message);
}
}
// call the run function
run();
(async () => {
await run();
})().catch(error => {
if (error.name === cache.ValidationError.name) {
core.setFailed(error.message);
} else if (error.name === cache.ReserveCacheError.name) {
core.info(error.message);
} else {
core.warning(error.message);
}
});

View File

@@ -1,219 +0,0 @@
step_log() {
message=$1
printf "\n\033[90;1m==> \033[0m\033[37;1m%s\033[0m\n" "$message"
}
add_log() {
mark=$1
shift
subjects=("$@")
for subject in "${subjects[@]}"; do
if [ "$mark" = "$tick" ]; then
printf "\033[32;1m%s \033[0m\033[34;1m%s \033[0m\033[90;1m%s\033[0m\n" "$mark" "$subject" "Added $subject"
else
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"
fi
done
}
fix_ownership() {
dir=$1
sudo chown -R "$USER":"$(id -g -n)" "$(dirname "$dir")"
}
link_apt_fast() {
if ! command -v apt-fast >/dev/null; then
sudo ln -sf /usr/bin/apt-get /usr/bin/apt-fast
fi
}
fetch_package() {
if ! [ -e /tmp/Packages ]; then
deb_build_arch=$(dpkg-architecture -q DEB_BUILD_ARCH)
curl -o /tmp/Packages.gz -sL "http://ppa.launchpad.net/ondrej/php/ubuntu/dists/$DISTRIB_CODENAME/main/binary-$deb_build_arch/Packages.gz"
gzip -df /tmp/Packages.gz
fi
}
get_dependencies() {
package=$1
prefix=$2
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
}
get_package_link() {
package=$1
trunk="http://ppa.launchpad.net/ondrej/php/ubuntu"
file=$(sed -e '/Package:\s'"$package$"'/,/^\s*$/!d' /tmp/Packages | grep -Eo "^Filename.*" | cut -d' ' -f 2 | tr -d '\r')
echo "$trunk/$file"
}
linux_extension_dir() {
api_version=$1
if [[ "$version" =~ $old_versions ]]; then
echo "/usr/lib/php5/$api_version"
elif [[ "$version" =~ 5.3|$nightly_versions ]]; then
echo "/usr/local/php/$version/lib/php/extensions/no-debug-non-zts-$api_version"
else
echo "/usr/lib/php/$api_version"
fi
}
darwin_extension_dir() {
api_version=$1
old_versions_darwin="5.[3-5]"
if [[ "$version" =~ $old_versions_darwin ]]; then
echo "/opt/local/lib/php${version/./}/extensions/no-debug-non-zts-$api_version"
else
if [[ "$(sysctl -n hw.optional.arm64 2>/dev/null)" == "1" ]]; then
echo "/opt/homebrew/lib/php/pecl/$api_version"
else
echo "/usr/local/lib/php/pecl/$api_version"
fi
fi
}
get_api_version() {
case $version in
5.3) echo "20090626" ;;
5.4) echo "20100525" ;;
5.5) echo "20121212" ;;
5.6) echo "20131226" ;;
7.0) echo "20151012" ;;
7.1) echo "20160303" ;;
7.2) echo "20170718" ;;
7.3) echo "20180731" ;;
7.4) echo "20190902" ;;
8.0) echo "20200930" ;;
*)
php_header="https://raw.githubusercontent.com/php/php-src/master/main/php.h"
curl -sSL --retry 5 "$php_header" | grep "PHP_API_VERSION" | cut -d' ' -f 3
;;
esac
}
add_config() {
dependent_extension=$1
dependency_extension=$2
echo "$dependency_extension" | sudo tee "$cache_directory/$dependent_extension/$dependency_extension" >/dev/null 2>&1
}
setup_extension() {
dependent_extension=$1
dependency_extension=$2
extension_dir=$3
if ! [ -e "$extension_dir/$dependency_extension.so" ]; then
extension_package_link="$(get_package_link "php$version-$dependency_extension")"
sudo curl -H "User-Agent: Debian APT-HTTP/GHA(ce)" -o "$dependency_extension".deb -sL "$extension_package_link"
sudo dpkg-deb -x "$dependency_extension".deb /
fix_ownership "$dir"
fi
if [ -e "$extension_dir/$dependency_extension.so" ]; then
add_config "$dependent_extension" "$dependency_extension"
add_log "$tick" "$dependency_extension"
else
add_log "$cross" "$dependency_extension"
fi
}
filter_dependencies_libs() {
libraries="$(echo "$1" | xargs -n1 | uniq | xargs)"
script_dir=$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )
for library in $libraries; do
if grep -i -q -w "$library" "$script_dir"/lists/"$DISTRIB_CODENAME"-libs; then
libraries=${libraries//$library/}
fi
done
echo "$libraries"
}
setup_dependencies_libs() {
libraries=$1
if [[ -n "${libraries// }" ]]; then
libraries=$(filter_dependencies_libs "$libraries")
if [[ -n "${libraries// }" ]]; then
step_log "Setup libraries"
IFS=' ' read -r -a libraries_array <<<"$libraries"
link_apt_fast
(
sudo DEBIAN_FRONTEND=noninteractive apt-fast install --no-install-recommends --no-upgrade -y "${libraries_array[@]}" >/dev/null 2>&1 &&
add_log "$tick" "${libraries_array[@]}"
) || add_log "$cross" "${libraries_array[@]}"
fi
fi
}
setup_dependencies_extensions() {
extension_dir=$1
shift
extensions_array=("$@")
. /etc/lsb-release
cache_directory=/tmp/extcache
sudo rm -rf "$cache_directory" || true
libraries=""
for extension_package in "${extensions_array[@]}"; do
fetch_package
libraries="$libraries $(get_dependencies "$extension_package" "lib")"
extension="${extension_package/php$version-/}"
if ! [ -d "$cache_directory"/"$extension" ]; then
extension_dependencies=$(get_dependencies "$extension_package" "php$version-")
extension_dependencies="${extension_dependencies//php$version-common/}"
if [[ -n "${extension_dependencies// }" ]]; then
step_log "Setup extensions for $extension"
extension_dependencies_array=()
IFS=' ' read -r -a extension_dependencies_array <<<"$extension_dependencies"
sudo mkdir -p "$cache_directory"/"$extension"
(
cd "$cache_directory" || exit 1
to_wait=()
for extension_dependeny_package in "${extension_dependencies_array[@]}"; do
if [[ -n "${extension_dependeny_package// }" ]]; then
extension_dependency=${extension_dependeny_package/php$version-/}
setup_extension "$extension" "$extension_dependency" "$extension_dir" &
to_wait+=($!)
fi
done
wait "${to_wait[@]}"
)
fi
fi
done
setup_dependencies_libs "$libraries"
}
setup_dependencies() {
extensions=$1
extension_dir=$2
if [[ -n "${extensions// }" ]]; then
IFS=' ' read -r -a extensions_array <<<"$(echo "$extensions" | sed -e "s/pdo[_-]//g" -Ee "s/^|,\s*/ php$version-/g")"
setup_dependencies_extensions "$extension_dir" "${extensions_array[@]}"
fi
}
extensions=$1
key=$2
version=$3
tick="✓"
cross="✗"
os=$(uname -s)
old_versions="5.[4-5]"
nightly_versions="8.[1-9]"
if [ "$os" = "Linux" ]; then
. /etc/lsb-release
os=$os-$DISTRIB_CODENAME
api_version=$(get_api_version)
dir=$(linux_extension_dir "$api_version")
sudo mkdir -p "$dir" && fix_ownership "$dir"
setup_dependencies "$extensions" "$dir"
elif [ "$os" = "Darwin" ]; then
api_version=$(get_api_version)
dir=$(darwin_extension_dir "$api_version")
sudo mkdir -p "$dir" && fix_ownership "$dir"
else
os="Windows"
dir='C:\\tools\\php\\ext'
fi
key="$os"-ext-"$version"-$(echo -n "$extensions-$key" | openssl dgst -sha256 | cut -d ' ' -f 2)
key="$key-20210313"
echo "::set-output name=dir::$dir"
echo "::set-output name=key::$key"

View File

@@ -70,15 +70,12 @@ libcgi-fast-perl
libcgi-pm-perl
libcgroup1
libcilkrts5
libclang-common-6.0-dev
libclang-common-8-dev
libclang-common-9-dev
libclang-cpp9
libclang1-6.0
libclang1-8
libclang1-9
libcolord2
libcom-err2
libcommon-sense-perl
libcroco3
libcryptsetup12
libcups2
@@ -153,7 +150,6 @@ libgbm1
libgc1c2
libgcc-10-dev
libgcc-7-dev
libgcc-8-dev
libgcc-9-dev
libgcc-s1
libgcc1
@@ -170,7 +166,6 @@ libgeoip1
libgflags2.2
libgfortran-10-dev
libgfortran-7-dev
libgfortran-8-dev
libgfortran-9-dev
libgfortran4
libgfortran5
@@ -274,7 +269,8 @@ libjs-jquery
libjson-c3
libjson-glib-1.0-0
libjson-glib-1.0-common
libjsoncpp1
libjson-perl
libjson-xs-perl
libjte1
libk5crypto3
libkeyutils1
@@ -291,12 +287,9 @@ liblcms2-dev
libldap-2.4-2
libldap-common
libldb1
liblldb-6.0
liblldb-8
liblldb-9
libllvm10
libllvm6.0
libllvm8
libllvm9
liblmdb0
liblocale-gettext-perl
@@ -305,8 +298,6 @@ liblqr-1-0-dev
liblsan0
libltdl-dev
libltdl7
liblttng-ust-ctl4
liblttng-ust0
liblua5.2-0
liblvm2app2.2
liblvm2cmd2.02
@@ -550,7 +541,7 @@ libpcre2-16-0
libpcre2-32-0
libpcre2-8-0
libpcre2-dev
libpcre2-posix2
libpcre2-posix3
libpcre3
libpcre3-dev
libpcre32-3
@@ -626,6 +617,7 @@ libslang2
libsm-dev
libsm6
libsmartcols1
libsnappy1v5
libsnmp-base
libsnmp30
libsodium23
@@ -639,7 +631,6 @@ libssl1.0.0
libssl1.1
libstdc++-10-dev
libstdc++-7-dev
libstdc++-8-dev
libstdc++-9-dev
libstdc++6
libstemmer0d
@@ -673,6 +664,7 @@ libtommath1
libtool
libtry-tiny-perl
libtsan0
libtypes-serialiser-perl
libu2f-udev
libubsan0
libubsan1
@@ -680,7 +672,6 @@ libucl1
libudev1
libunistring2
libunwind8
liburcu6
liburi-perl
libusb-1.0-0
libutempter0

1
src/lists/darwin-deps Normal file
View File

@@ -0,0 +1 @@
geos=geos

View File

@@ -0,0 +1,21 @@
amqp
couchbase
expect
gnupg
grpc
imagick
imap
mcrypt
memcached
mongodb
pecl_http
phalcon3
phalcon4
psr
rdkafka
redis
ssh2
swoole
vips
yaml
zmq

View File

@@ -14,7 +14,6 @@ libapt-pkg6.0
libarchive13
libargon2-1
libaria2-0
libasan4
libasan5
libasan6
libasn1-8-heimdal
@@ -22,6 +21,7 @@ libasound2
libasound2-data
libaspell15
libassuan0
libatasmart4
libatk-bridge2.0-0
libatk1.0-0
libatk1.0-data
@@ -40,6 +40,14 @@ libblas-dev
libblas3
libblkid-dev
libblkid1
libblockdev-crypto2
libblockdev-fs2
libblockdev-loop2
libblockdev-part-err2
libblockdev-part2
libblockdev-swap2
libblockdev-utils2
libblockdev2
libboost-context1.71.0
libboost-filesystem1.71.0
libboost-program-options1.71.0
@@ -75,16 +83,18 @@ libcc1-0
libcgi-fast-perl
libcgi-pm-perl
libcgroup1
libcilkrts5
libclang-common-10-dev
libclang-common-8-dev
libclang-common-9-dev
libclang-common-11-dev
libclang-common-12-dev
libclang-cpp10
libclang-cpp9
libclang-cpp11
libclang-cpp12
libclang1-10
libclang1-8
libclang1-11
libclang1-12
libcolord2
libcom-err2
libcommon-sense-perl
libcrypt-dev
libcrypt1
libcryptsetup12
@@ -161,13 +171,12 @@ libfuse2
libfuse3-3
libfwupd2
libfwupdplugin1
libfwupdplugin5
libgbm-dev
libgbm1
libgc1c2
libgcab-1.0-0
libgcc-10-dev
libgcc-7-dev
libgcc-8-dev
libgcc-9-dev
libgcc-s1
libgconf-2-4
@@ -182,7 +191,6 @@ libgdk-pixbuf2.0-common
libgdk-pixbuf2.0-dev
libgflags2.2
libgfortran-10-dev
libgfortran-8-dev
libgfortran-9-dev
libgfortran5
libgif7
@@ -260,6 +268,7 @@ libitm1
libjansson4
libjbig-dev
libjbig0
libjcat1
libjemalloc2
libjpeg-dev
libjpeg-turbo8
@@ -272,6 +281,8 @@ libjs-xmlextras
libjson-c4
libjson-glib-1.0-0
libjson-glib-1.0-common
libjson-perl
libjson-xs-perl
libjte2
libk5crypto3
libkeyutils1
@@ -288,12 +299,11 @@ liblcms2-dev
libldap-2.4-2
libldap-common
liblldb-10
liblldb-8
liblldb-9
liblldb-11
liblldb-12
libllvm10
libllvm11
libllvm8
libllvm9
libllvm12
liblmdb0
liblocale-gettext-perl
liblqr-1-0
@@ -301,8 +311,6 @@ liblqr-1-0-dev
liblsan0
libltdl-dev
libltdl7
liblttng-ust-ctl4
liblttng-ust0
liblua5.2-0
liblvm2cmd2.03
liblwp-mediatypes-perl
@@ -326,10 +334,13 @@ libmagickwand-6.q16-dev
libmagickwand-dev
libmailtools-perl
libmaxminddb0
libmbim-glib4
libmbim-proxy
libmcrypt4
libmecab2
libmediainfo0v5
libmemcached11
libmm-glib0
libmms0
libmnl0
libmono-2.0-1
@@ -481,14 +492,12 @@ libmount1
libmpc3
libmpdec2
libmpfr6
libmpx2
libmspack0
libmysqlclient-dev
libmysqlclient21
libncurses-dev
libncurses5
libncurses6
libncursesw5
libncursesw6
libnet-dbus-perl
libnet-http-perl
@@ -515,13 +524,12 @@ libnss-systemd
libnss3
libntfs-3g883
libnuma1
libobjc-8-dev
libobjc-9-dev
libobjc4
libodbc1
libogg0
libomp-10-dev
libomp5-10
libomp-11-dev
libomp5-11
libonig5
libopenexr-dev
libopenexr24
@@ -538,6 +546,7 @@ libpangocairo-1.0-0
libpangoft2-1.0-0
libpaper-utils
libpaper1
libparted-fs-resize0
libparted2
libpcap0.8
libpci3
@@ -548,6 +557,7 @@ libpcre2-32-0
libpcre2-8-0
libpcre2-dev
libpcre2-posix2
libpcre2-posix3
libpcre3
libpcre3-dev
libpcre32-3
@@ -582,6 +592,8 @@ libpython3.8-dev
libpython3.8-minimal
libpython3.8-stdlib
libqdbm14
libqmi-glib5
libqmi-proxy
libquadmath0
librabbitmq4
libre2-5
@@ -623,6 +635,7 @@ libsm-dev
libsm6
libsmartcols1
libsmbios-c2
libsnappy1v5
libsnmp-base
libsnmp35
libsodium23
@@ -636,8 +649,6 @@ libssh2-1
libssl-dev
libssl1.1
libstdc++-10-dev
libstdc++-7-dev
libstdc++-8-dev
libstdc++-9-dev
libstdc++6
libstemmer0d
@@ -672,12 +683,13 @@ libtool
libtry-tiny-perl
libtsan0
libtss2-esys0
libtypes-serialiser-perl
libu2f-udev
libubsan0
libubsan1
libuchardet0
libucl1
libudev1
libudisks2-0
libunistring2
libunwind8
liburcu6
@@ -687,6 +699,7 @@ libutempter0
libutf8proc2
libuuid1
libuv1
libvolume-key1
libvorbis0a
libvorbisfile3
libvpx6

660
src/lists/jammy-libs Normal file
View File

@@ -0,0 +1,660 @@
lib32gcc-s1
lib32stdc++6
lib32z1
libacl1
libaio1
libaom3
libapparmor1
libappstream4
libapr1
libaprutil1
libaprutil1-dbd-sqlite3
libaprutil1-ldap
libapt-pkg6.0
libarchive13
libargon2-1
libaria2-0
libasan5
libasan6
libasound2
libasound2-data
libaspell15
libassuan0
libatasmart4
libatk-bridge2.0-0
libatk1.0-0
libatk1.0-data
libatm1
libatomic1
libatspi2.0-0
libattr1
libaudit-common
libaudit1
libauthen-sasl-perl
libavahi-client3
libavahi-common-data
libavahi-common3
libavahi-glib1
libbinutils
libblas-dev
libblas3
libblkid-dev
libblkid1
libblockdev-crypto2
libblockdev-fs2
libblockdev-loop2
libblockdev-part-err2
libblockdev-part2
libblockdev-swap2
libblockdev-utils2
libblockdev2
libbpf0
libbrotli-dev
libbrotli1
libbsd0
libburn4
libbz2-1.0
libbz2-dev
libc++-14-dev
libc++-dev
libc++1-14
libc++abi-14-dev
libc++abi-dev
libc++abi1-14
libc-ares2
libc-bin
libc-client2007e
libc-dev-bin
libc6
libc6-dev
libc6-i386
libcairo-gobject2
libcairo-script-interpreter2
libcairo2
libcairo2-dev
libcap-ng0
libcap2
libcap2-bin
libcbor0.8
libcc1-0
libcgi-fast-perl
libcgi-pm-perl
libcgroup1
libclang-common-11-dev
libclang-common-12-dev
libclang-cpp11
libclang-cpp12
libclang1-11
libclang1-12
libclone-perl
libcolord2
libcom-err2
libcommon-sense-perl
libcrypt-dev
libcrypt1
libcryptsetup12
libctf-nobfd0
libctf0
libcups2
libcurl3-gnutls
libcurl4
libdata-dump-perl
libdatrie1
libdav1d5
libdb5.3
libdbus-1-3
libdbus-glib-1-2
libdconf1
libde265-0
libdebconfclient0
libdeflate-dev
libdeflate0
libdevmapper-event1.02.1
libdevmapper1.02.1
libdjvulibre-dev
libdjvulibre-text
libdjvulibre21
libdns-export1110
libdpkg-perl
libdrm-amdgpu1
libdrm-common
libdrm-nouveau2
libdrm-radeon1
libdrm2
libdw1
libeatmydata1
libedit2
libefiboot1
libefivar1
libelf1
libenchant-2-2
libencode-locale-perl
libepoxy0
liberror-perl
libestr0
libevent-core-2.1-7
libevent-pthreads-2.1-7
libexif-dev
libexif12
libexpat1
libexpat1-dev
libext2fs2
libfakeroot
libfastjson4
libfbclient2
libfcgi-bin
libfcgi-perl
libfcgi0ldbl
libfdisk1
libffi-dev
libffi8
libfftw3-double3
libfido2-1
libfile-basedir-perl
libfile-desktopentry-perl
libfile-listing-perl
libfile-mimeinfo-perl
libflashrom1
libfont-afm-perl
libfontconfig-dev
libfontconfig1
libfontconfig1-dev
libfontenc1
libfreetype-dev
libfreetype6
libfreetype6-dev
libfribidi0
libfsverity0
libftdi1-2
libfuse3-3
libfwupd2
libfwupdplugin5
libgbm-dev
libgbm1
libgc1
libgcab-1.0-0
libgcc-10-dev
libgcc-11-dev
libgcc-9-dev
libgcc-s1
libgconf-2-4
libgcrypt20
libgcrypt20-dev
libgd3
libgdbm-compat4
libgdbm6
libgdk-pixbuf-2.0-0
libgdk-pixbuf-2.0-dev
libgdk-pixbuf2.0-bin
libgdk-pixbuf2.0-common
libgfortran-10-dev
libgfortran-11-dev
libgfortran-9-dev
libgfortran5
libgirepository-1.0-1
libgl1
libgl1-mesa-dri
libglapi-mesa
libglib2.0-0
libglib2.0-bin
libglib2.0-data
libglib2.0-dev
libglib2.0-dev-bin
libglvnd0
libglx-mesa0
libglx0
libgmp-dev
libgmp10
libgmpxx4ldbl
libgnutls30
libgomp1
libgpg-error-dev
libgpg-error0
libgpgme11
libgpm2
libgraphite2-3
libgsl-dev
libgsl27
libgslcblas0
libgssapi-krb5-2
libgstreamer1.0-0
libgtk-3-0
libgtk-3-common
libgtkd-3-0
libgudev-1.0-0
libgusb2
libharfbuzz0b
libhavege2
libheif1
libhogweed6
libhtml-form-perl
libhtml-format-perl
libhtml-parser-perl
libhtml-tagset-perl
libhtml-template-perl
libhtml-tree-perl
libhttp-cookies-perl
libhttp-daemon-perl
libhttp-date-perl
libhttp-message-perl
libhttp-negotiate-perl
libhunspell-1.7-0
libice-dev
libice6
libicu-dev
libicu70
libidn2-0
libilmbase-dev
libilmbase25
libinih1
libintl-perl
libintl-xs-perl
libio-html-perl
libio-socket-ssl-perl
libio-stringy-perl
libip4tc2
libip6tc2
libipc-system-simple-perl
libisc-export1105
libisl23
libisns0
libisoburn1
libisofs6
libitm1
libjansson4
libjbig-dev
libjbig0
libjcat1
libjpeg-dev
libjpeg-turbo8
libjpeg-turbo8-dev
libjpeg8
libjpeg8-dev
libjq1
libjs-jquery
libjs-sphinxdoc
libjs-underscore
libjson-c5
libjson-glib-1.0-0
libjson-glib-1.0-common
libjson-perl
libjson-xs-perl
libjte2
libk5crypto3
libkeyutils1
libklibc
libkmod2
libkrb5-3
libkrb5support0
libksba8
liblapack-dev
liblapack3
liblcms2-2
liblcms2-dev
libldap-2.5-0
libldap-common
liblldb-11
liblldb-12
libllvm11
libllvm12
libllvm13
libllvm14
liblmdb0
liblocale-gettext-perl
liblqr-1-0
liblqr-1-0-dev
liblsan0
libltdl-dev
libltdl7
liblua5.3-0
liblvm2cmd2.03
liblwp-mediatypes-perl
liblwp-protocol-https-perl
liblz4-1
liblzma-dev
liblzma5
liblzo2-2
libmagic-dev
libmagic-mgc
libmagic1
libmagickcore-6-arch-config
libmagickcore-6-headers
libmagickcore-6.q16-6
libmagickcore-6.q16-6-extra
libmagickcore-6.q16-dev
libmagickcore-dev
libmagickwand-6-headers
libmagickwand-6.q16-6
libmagickwand-6.q16-dev
libmagickwand-dev
libmailtools-perl
libmaxminddb0
libmbim-glib4
libmbim-proxy
libmd0
libmecab2
libmediainfo0v5
libmemcached11
libmm-glib0
libmms0
libmnl0
libmodule-find-perl
libmodule-scandeps-perl
libmount-dev
libmount1
libmpc3
libmpdec3
libmpfr6
libmspack0
libmysqlclient-dev
libmysqlclient21
libncurses-dev
libncurses6
libncursesw6
libnet-dbus-perl
libnet-http-perl
libnet-smtp-ssl-perl
libnet-ssleay-perl
libnetfilter-conntrack3
libnetplan0
libnettle8
libnewt0.52
libnfnetlink0
libnftables1
libnftnl11
libnghttp2-14
libnginx-mod-http-geoip2
libnginx-mod-http-image-filter
libnginx-mod-http-xslt-filter
libnginx-mod-mail
libnginx-mod-stream
libnginx-mod-stream-geoip2
libnl-3-200
libnl-genl-3-200
libnorm1
libnpth0
libnsl-dev
libnsl2
libnspr4
libnss-systemd
libnss3
libntfs-3g89
libnuma1
libobjc-11-dev
libobjc4
libodbc2
libonig5
libopenexr-dev
libopenexr25
libopeniscsiusr
libopenjp2-7
libopenjp2-7-dev
libostree-1-1
libp11-kit0
libpackagekit-glib2-18
libpam-cap
libpam-modules
libpam-modules-bin
libpam-runtime
libpam-systemd
libpam0g
libpango-1.0-0
libpangocairo-1.0-0
libpangoft2-1.0-0
libpaper-utils
libpaper1
libparted-fs-resize0
libparted2
libpcap0.8
libpci3
libpcre16-3
libpcre2-16-0
libpcre2-32-0
libpcre2-8-0
libpcre2-dev
libpcre2-posix3
libpcre3
libpcre3-dev
libpcre32-3
libpcrecpp0v5
libperl5.34
libpfm4
libpgm-5.3-0
libphobos2-ldc-shared98
libpipeline1
libpixman-1-0
libpixman-1-dev
libplymouth5
libpng-dev
libpng16-16
libpolkit-agent-1-0
libpolkit-gobject-1-0
libpopt0
libpq-dev
libpq5
libproc-processtable-perl
libprocps8
libprotobuf-lite23
libproxy1v5
libpsl5
libpthread-stubs0-dev
libpython3-dev
libpython3-stdlib
libpython3.10
libpython3.10-dev
libpython3.10-minimal
libpython3.10-stdlib
libqdbm14
libqmi-glib5
libqmi-proxy
libquadmath0
librabbitmq4
libre2-9
libreadline-dev
libreadline8
librpm9
librpmbuild9
librpmio9
librpmsign9
librsvg2-2
librsvg2-common
librsvg2-dev
librtmp1
libruby3.0
libsasl2-2
libsasl2-modules
libsasl2-modules-db
libseccomp2
libsecret-1-0
libsecret-1-dev
libsecret-common
libselinux1
libselinux1-dev
libsemanage-common
libsemanage2
libsensors-config
libsensors5
libsepol-dev
libsepol2
libserf-1-1
libsgutils2-2
libsigsegv2
libslang2
libslirp0
libsm-dev
libsm6
libsmartcols1
libsmbios-c2
libsnappy1v5
libsnmp-base
libsnmp40
libsodium23
libsort-naturally-perl
libsoup2.4-1
libsoup2.4-common
libsqlite3-0
libsqlite3-dev
libss2
libssh-4
libssh2-1
libssl-dev
libssl1.1
libssl3
libstdc++-10-dev
libstdc++-11-dev
libstdc++-9-dev
libstdc++6
libstemmer0d
libsvn1
libsybdb5
libsystemd0
libtalloc2
libtasn1-6
libtcl8.6
libterm-readkey-perl
libtevent0
libtext-charwidth-perl
libtext-iconv-perl
libtext-unidecode-perl
libtext-wrapi18n-perl
libthai-data
libthai0
libtidy5deb1
libtie-ixhash-perl
libtiff-dev
libtiff5
libtiffxx5
libtimedate-perl
libtinfo-dev
libtinfo6
libtinyxml2-9
libtirpc-common
libtirpc-dev
libtirpc3
libtk8.6
libtommath1
libtool
libtry-tiny-perl
libtsan0
libtss2-esys-3.0.2-0
libtss2-mu0
libtss2-sys1
libtss2-tcti-cmd0
libtss2-tcti-device0
libtss2-tcti-mssim0
libtss2-tcti-swtpm0
libtypes-serialiser-perl
libu2f-udev
libubsan1
libuchardet0
libucl1
libudev1
libudisks2-0
libunistring2
libunwind-14
libunwind-14-dev
libunwind8
liburcu8
liburi-perl
libusb-1.0-0
libutempter0
libutf8proc2
libuuid1
libuv1
libvolume-key1
libvte-2.91-0
libvte-2.91-common
libvted-3-0
libvulkan1
libwayland-client0
libwayland-cursor0
libwayland-egl1
libwayland-server0
libwbclient0
libwebp7
libwebpdemux2
libwebpmux3
libwmf-0.2-7
libwmf-dev
libwmflite-0.2-7
libwrap0
libwww-perl
libwww-robotrules-perl
libx11-6
libx11-data
libx11-dev
libx11-protocol-perl
libx11-xcb1
libx265-199
libxau-dev
libxau6
libxaw7
libxcb-dri2-0
libxcb-dri3-0
libxcb-glx0
libxcb-present0
libxcb-render0
libxcb-render0-dev
libxcb-shape0
libxcb-shm0
libxcb-shm0-dev
libxcb-sync1
libxcb-xfixes0
libxcb1
libxcb1-dev
libxcomposite1
libxcursor1
libxdamage1
libxdmcp-dev
libxdmcp6
libxext-dev
libxext6
libxfixes3
libxfont2
libxft2
libxi6
libxinerama1
libxkbcommon0
libxkbfile-dev
libxkbfile1
libxml-libxml-perl
libxml-namespacesupport-perl
libxml-parser-perl
libxml-sax-base-perl
libxml-sax-perl
libxml-twig-perl
libxml-xpathengine-perl
libxml2
libxml2-dev
libxmlb2
libxmlsec1
libxmlsec1-openssl
libxmu6
libxmuu1
libxpm4
libxrandr2
libxrender-dev
libxrender1
libxshmfence1
libxslt1.1
libxss1
libxt-dev
libxt6
libxtables12
libxtst6
libxv1
libxxf86dga1
libxxf86vm1
libxxhash0
libyajl2
libyaml-0-2
libz3-4
libz3-dev
libzen0v5
libzip4
libzmq5
libzstd-dev
libzstd1
python3-launchpadlib
python3-oauthlib
python3-wadllib

4
src/lists/linux-deps Normal file
View File

@@ -0,0 +1,4 @@
geos=libgeos-dev
pdo_firebird=firebird-dev
oci8=libaio-dev
pdo_oci=libaio-dev

View File

@@ -1,754 +0,0 @@
lib32gcc1
lib32stdc++6
lib32z1
libaccountsservice0
libacl1
libaio1
libapparmor-perl
libapparmor1
libapr1
libaprutil1
libaprutil1-dbd-sqlite3
libaprutil1-ldap
libapt-inst2.0
libapt-pkg5.0
libarchive13
libargon2-1
libasan2
libasan4
libasan5
libasn1-8-heimdal
libasound2
libasound2-data
libaspell15
libasprintf0v5
libassuan0
libatk-bridge2.0-0
libatk1.0-0
libatk1.0-data
libatm1
libatomic1
libatspi2.0-0
libattr1
libaudit-common
libaudit1
libauthen-sasl-perl
libavahi-client3
libavahi-common-data
libavahi-common3
libbind9-140
libbison-dev
libblas-common
libblas-dev
libblas3
libblkid1
libboost-filesystem1.58.0
libboost-system1.58.0
libbsd0
libburn4
libbz2-1.0
libbz2-dev
libc++-dev
libc++-helpers
libc++1
libc++abi-dev
libc++abi1
libc-ares2
libc-bin
libc-client2007e
libc-dev-bin
libc6
libc6-dev
libc6-i386
libcairo-gobject2
libcairo-script-interpreter2
libcairo2
libcairo2-dev
libcanberra0
libcap-ng0
libcap2
libcap2-bin
libcapnp-0.5.3
libcc1-0
libcdt5
libcgi-fast-perl
libcgi-pm-perl
libcgraph6
libcgroup1
libcilkrts5
libclang-common-6.0-dev
libclang-common-8-dev
libclang-common-9-dev
libclang-cpp9
libclang1-6.0
libclang1-8
libcolord2
libcomerr2
libcroco3
libcryptsetup4
libcups2
libcurl3
libcurl3-gnutls
libdatrie1
libdb5.3
libdbus-1-3
libdbus-glib-1-2
libdbusmenu-glib4
libdbusmenu-gtk3-4
libdconf1
libdebconfclient0
libdevmapper-event1.02.1
libdevmapper1.02.1
libdjvulibre-dev
libdjvulibre-text
libdjvulibre21
libdns-export162
libdns162
libdpkg-perl
libdrm-amdgpu1
libdrm-common
libdrm-intel1
libdrm-nouveau2
libdrm-radeon1
libdrm2
libdumbnet1
libdw1
libeatmydata1
libedit2
libefivar0
libegl1-mesa
libelf1
libenchant1c2a
libencode-locale-perl
libepoxy0
liberror-perl
libestr0
libevent-2.0-5
libevent-core-2.0-5
libevent-pthreads-2.0-5
libexif-dev
libexif12
libexpat1
libexpat1-dev
libfakeroot
libfbclient2
libfcgi-perl
libfdisk1
libffi-dev
libffi6
libfftw3-double3
libfile-basedir-perl
libfile-desktopentry-perl
libfile-listing-perl
libfile-mimeinfo-perl
libfl-dev
libfont-afm-perl
libfontconfig1
libfontconfig1-dev
libfontenc1
libfreetype6
libfreetype6-dev
libfribidi0
libfuse2
libgbm-dev
libgbm1
libgc1c2
libgcc-5-dev
libgcc-7-dev
libgcc-8-dev
libgcc-9-dev
libgcc1
libgconf-2-4
libgcrypt20
libgd3
libgdbm3
libgdiplus
libgdk-pixbuf2.0-0
libgdk-pixbuf2.0-common
libgdk-pixbuf2.0-dev
libgeoip1
libgflags2v5
libgfortran-5-dev
libgfortran-8-dev
libgfortran-9-dev
libgfortran3
libgfortran5
libgif7
libgirepository-1.0-1
libgl1-mesa-dri
libgl1-mesa-glx
libglade2-0
libglade2.0-cil
libglapi-mesa
libglib2.0-0
libglib2.0-bin
libglib2.0-cil
libglib2.0-data
libglib2.0-dev
libgmp-dev
libgmp10
libgmpxx4ldbl
libgnutls-openssl27
libgnutls30
libgomp1
libgoogle-glog0v5
libgpg-error0
libgpm2
libgraphite2-3
libgraphviz-dev
libgsl-dev
libgsl2
libgssapi-krb5-2
libgssapi3-heimdal
libgtk-3-0
libgtk-3-bin
libgtk-3-common
libgtk2.0-0
libgtk2.0-cil
libgtk2.0-common
libgvc6
libgvc6-plugins-gtk
libgvpr2
libharfbuzz0b
libhavege1
libhcrypto4-heimdal
libheimbase1-heimdal
libheimntlm0-heimdal
libhogweed4
libhtml-form-perl
libhtml-format-perl
libhtml-parser-perl
libhtml-tagset-perl
libhtml-template-perl
libhtml-tree-perl
libhttp-cookies-perl
libhttp-daemon-perl
libhttp-date-perl
libhttp-message-perl
libhttp-negotiate-perl
libhunspell-1.3-0
libhx509-5-heimdal
libice-dev
libice6
libicu-dev
libicu55
libicu65
libidn11
libilmbase-dev
libilmbase12
libio-html-perl
libio-socket-ssl-perl
libipc-system-simple-perl
libisc-export160
libisc160
libisccc140
libisccfg140
libisl15
libisoburn1
libisofs6
libitm1
libjasper-dev
libjasper1
libjbig-dev
libjbig0
libjpeg-dev
libjpeg-turbo8
libjpeg-turbo8-dev
libjpeg8
libjpeg8-dev
libjs-jquery
libjson-c2
libjson-glib-1.0-0
libjson-glib-1.0-common
libjsoncpp1
libjte1
libk5crypto3
libkeyutils1
libklibc
libkmod2
libkrb5-26-heimdal
libkrb5-3
libkrb5support0
libksba8
liblapack-dev
liblapack3
liblcms2-2
liblcms2-dev
libldap-2.4-2
libldb1
liblldb-6.0
liblldb-8
liblldb-9
libllvm6.0
libllvm8
libllvm9
liblmdb0
liblocale-gettext-perl
liblqr-1-0
liblqr-1-0-dev
liblsan0
libltdl-dev
libltdl7
liblttng-ust-ctl2
liblttng-ust0
liblua5.1-0
liblua5.2-0
liblvm2app2.2
liblvm2cmd2.02
liblwp-mediatypes-perl
liblwp-protocol-https-perl
liblwres141
liblxc1
liblz4-1
liblzma-dev
liblzma5
liblzo2-2
libmagic-dev
libmagic1
libmagickcore-6-arch-config
libmagickcore-6-headers
libmagickcore-6.q16-2
libmagickcore-6.q16-2-extra
libmagickcore-6.q16-dev
libmagickcore-dev
libmagickwand-6-headers
libmagickwand-6.q16-2
libmagickwand-6.q16-dev
libmagickwand-dev
libmailtools-perl
libmcrypt4
libmediainfo0v5
libmemcached11
libmirclient9
libmircommon7
libmircore1
libmirprotobuf3
libmms0
libmnl0
libmono-2.0-1
libmono-2.0-dev
libmono-accessibility4.0-cil
libmono-cairo4.0-cil
libmono-cecil-private-cil
libmono-cil-dev
libmono-codecontracts4.0-cil
libmono-compilerservices-symbolwriter4.0-cil
libmono-corlib4.5-cil
libmono-cscompmgd0.0-cil
libmono-csharp4.0c-cil
libmono-custommarshalers4.0-cil
libmono-data-tds4.0-cil
libmono-db2-1.0-cil
libmono-debugger-soft4.0a-cil
libmono-http4.0-cil
libmono-i18n-cjk4.0-cil
libmono-i18n-mideast4.0-cil
libmono-i18n-other4.0-cil
libmono-i18n-rare4.0-cil
libmono-i18n-west4.0-cil
libmono-i18n4.0-all
libmono-i18n4.0-cil
libmono-ldap4.0-cil
libmono-management4.0-cil
libmono-messaging-rabbitmq4.0-cil
libmono-messaging4.0-cil
libmono-microsoft-build-engine4.0-cil
libmono-microsoft-build-framework4.0-cil
libmono-microsoft-build-tasks-v4.0-4.0-cil
libmono-microsoft-build-utilities-v4.0-4.0-cil
libmono-microsoft-build4.0-cil
libmono-microsoft-csharp4.0-cil
libmono-microsoft-visualc10.0-cil
libmono-microsoft-web-infrastructure1.0-cil
libmono-oracle4.0-cil
libmono-parallel4.0-cil
libmono-peapi4.0a-cil
libmono-posix4.0-cil
libmono-profiler
libmono-rabbitmq4.0-cil
libmono-relaxng4.0-cil
libmono-security4.0-cil
libmono-sharpzip4.84-cil
libmono-simd4.0-cil
libmono-smdiagnostics0.0-cil
libmono-sqlite4.0-cil
libmono-system-componentmodel-composition4.0-cil
libmono-system-componentmodel-dataannotations4.0-cil
libmono-system-configuration-install4.0-cil
libmono-system-configuration4.0-cil
libmono-system-core4.0-cil
libmono-system-data-datasetextensions4.0-cil
libmono-system-data-entity4.0-cil
libmono-system-data-linq4.0-cil
libmono-system-data-services-client4.0-cil
libmono-system-data-services4.0-cil
libmono-system-data4.0-cil
libmono-system-deployment4.0-cil
libmono-system-design4.0-cil
libmono-system-drawing-design4.0-cil
libmono-system-drawing4.0-cil
libmono-system-dynamic4.0-cil
libmono-system-enterpriseservices4.0-cil
libmono-system-identitymodel-selectors4.0-cil
libmono-system-identitymodel4.0-cil
libmono-system-io-compression-filesystem4.0-cil
libmono-system-io-compression4.0-cil
libmono-system-json-microsoft4.0-cil
libmono-system-json4.0-cil
libmono-system-ldap-protocols4.0-cil
libmono-system-ldap4.0-cil
libmono-system-management4.0-cil
libmono-system-messaging4.0-cil
libmono-system-net-http-formatting4.0-cil
libmono-system-net-http-webrequest4.0-cil
libmono-system-net-http4.0-cil
libmono-system-net4.0-cil
libmono-system-numerics-vectors4.0-cil
libmono-system-numerics4.0-cil
libmono-system-reactive-core2.2-cil
libmono-system-reactive-debugger2.2-cil
libmono-system-reactive-experimental2.2-cil
libmono-system-reactive-interfaces2.2-cil
libmono-system-reactive-linq2.2-cil
libmono-system-reactive-observable-aliases0.0-cil
libmono-system-reactive-platformservices2.2-cil
libmono-system-reactive-providers2.2-cil
libmono-system-reactive-runtime-remoting2.2-cil
libmono-system-reactive-windows-forms2.2-cil
libmono-system-reactive-windows-threading2.2-cil
libmono-system-reflection-context4.0-cil
libmono-system-runtime-caching4.0-cil
libmono-system-runtime-durableinstancing4.0-cil
libmono-system-runtime-serialization-formatters-soap4.0-cil
libmono-system-runtime-serialization4.0-cil
libmono-system-runtime4.0-cil
libmono-system-security4.0-cil
libmono-system-servicemodel-activation4.0-cil
libmono-system-servicemodel-discovery4.0-cil
libmono-system-servicemodel-internals0.0-cil
libmono-system-servicemodel-routing4.0-cil
libmono-system-servicemodel-web4.0-cil
libmono-system-servicemodel4.0a-cil
libmono-system-serviceprocess4.0-cil
libmono-system-threading-tasks-dataflow4.0-cil
libmono-system-transactions4.0-cil
libmono-system-web-abstractions4.0-cil
libmono-system-web-applicationservices4.0-cil
libmono-system-web-dynamicdata4.0-cil
libmono-system-web-extensions-design4.0-cil
libmono-system-web-extensions4.0-cil
libmono-system-web-http-selfhost4.0-cil
libmono-system-web-http-webhost4.0-cil
libmono-system-web-http4.0-cil
libmono-system-web-mobile4.0-cil
libmono-system-web-mvc3.0-cil
libmono-system-web-razor2.0-cil
libmono-system-web-regularexpressions4.0-cil
libmono-system-web-routing4.0-cil
libmono-system-web-services4.0-cil
libmono-system-web-webpages-deployment2.0-cil
libmono-system-web-webpages-razor2.0-cil
libmono-system-web-webpages2.0-cil
libmono-system-web4.0-cil
libmono-system-windows-forms-datavisualization4.0a-cil
libmono-system-windows-forms4.0-cil
libmono-system-windows4.0-cil
libmono-system-workflow-activities4.0-cil
libmono-system-workflow-componentmodel4.0-cil
libmono-system-workflow-runtime4.0-cil
libmono-system-xaml4.0-cil
libmono-system-xml-linq4.0-cil
libmono-system-xml-serialization4.0-cil
libmono-system-xml4.0-cil
libmono-system4.0-cil
libmono-tasklets4.0-cil
libmono-webbrowser4.0-cil
libmono-webmatrix-data4.0-cil
libmono-windowsbase4.0-cil
libmono-xbuild-tasks4.0-cil
libmonoboehm-2.0-1
libmonosgen-2.0-1
libmonosgen-2.0-dev
libmount1
libmpc3
libmpdec2
libmpfr4
libmpx0
libmpx2
libmspack0
libmysqlclient-dev
libmysqlclient20
libncurses5
libncurses5-dev
libncursesw5
libnet-dbus-perl
libnet-http-perl
libnet-smtp-ssl-perl
libnet-ssleay-perl
libnetfilter-conntrack3
libnettle6
libnewt0.52
libnfnetlink0
libnih-dbus1
libnih1
libnorm1
libnotify4
libnpth0
libnspr4
libnss3
libnss3-nssdb
libnuma1
libobjc-5-dev
libobjc4
libodbc1
libogg0
libomp-9-dev
libomp5-9
libonig2
libopenexr-dev
libopenexr22
libp11-kit0
libpam-modules
libpam-modules-bin
libpam-runtime
libpam-systemd
libpam0g
libpango-1.0-0
libpangocairo-1.0-0
libpangoft2-1.0-0
libpaper-utils
libpaper1
libparted2
libpathplan4
libpcap0.8
libpci3
libpciaccess0
libpcre16-3
libpcre2-16-0
libpcre2-32-0
libpcre2-8-0
libpcre2-dev
libpcre2-posix2
libpcre3
libpcre3-dev
libpcre32-3
libpcrecpp0v5
libperl5.22
libpfm4
libpgm-5.2-0
libpipeline1
libpixman-1-0
libpixman-1-dev
libplymouth4
libpng12-0
libpng12-dev
libpolkit-agent-1-0
libpolkit-backend-1-0
libpolkit-gobject-1-0
libpopt0
libpq-dev
libpq5
libprocps4
libprotobuf-lite9v5
libproxy1v5
libpthread-stubs0-dev
libpython-dev
libpython-stdlib
libpython2.7
libpython2.7-dev
libpython2.7-minimal
libpython2.7-stdlib
libpython3-dev
libpython3-stdlib
libpython3.5
libpython3.5-dev
libpython3.5-minimal
libpython3.5-stdlib
libqdbm14
libquadmath0
librabbitmq4
libre2-1v5
libreadline-dev
libreadline5
libreadline6
libreadline6-dev
librecode0
librest-0.7-0
libroken18-heimdal
librpm3
librpmbuild3
librpmio3
librpmsign3
librsvg2-2
librsvg2-common
librsvg2-dev
librtmp1
libruby2.3
libsasl2-2
libsasl2-modules
libsasl2-modules-db
libsctp1
libseccomp2
libsecret-1-0
libsecret-1-dev
libsecret-common
libselinux1
libsemanage-common
libsemanage1
libsensors4
libsepol1
libserf-1-1
libsigsegv2
libslang2
libsm-dev
libsm6
libsmartcols1
libsnmp-base
libsnmp30
libsodium23
libsoup-gnome2.4-1
libsoup2.4-1
libsqlite3-0
libsqlite3-dev
libss2
libssh2-1
libssl-dev
libssl-doc
libssl1.0.0
libssl1.1
libstdc++-5-dev
libstdc++-7-dev
libstdc++-8-dev
libstdc++-9-dev
libstdc++6
libstemmer0d
libsvn1
libsybdb5
libsystemd0
libtalloc2
libtasn1-6
libtbb2
libtcl8.6
libtcltk-ruby
libtdb1
libtevent0
libtext-charwidth-perl
libtext-iconv-perl
libtext-unidecode-perl
libtext-wrapi18n-perl
libthai-data
libthai0
libtidy5deb1
libtie-ixhash-perl
libtiff5
libtiff5-dev
libtiffxx5
libtimedate-perl
libtinfo-dev
libtinfo5
libtinyxml2-2v5
libtk8.6
libtool
libtsan0
libubsan0
libubsan1
libucl1
libudev1
libunwind8
liburcu4
liburi-perl
libusb-0.1-4
libusb-1.0-0
libustr-1.0-1
libutempter0
libuuid1
libvorbis0a
libvorbisfile3
libvpx3
libvulkan1
libwayland-client0
libwayland-cursor0
libwayland-egl1-mesa
libwayland-server0
libwbclient0
libwind0-heimdal
libwmf-dev
libwmf0.2-7
libwrap0
libwww-perl
libwww-robotrules-perl
libwxbase3.0-0v5
libwxgtk3.0-0v5
libx11-6
libx11-data
libx11-dev
libx11-protocol-perl
libx11-xcb1
libxau-dev
libxau6
libxaw7
libxcb-dri2-0
libxcb-dri3-0
libxcb-glx0
libxcb-present0
libxcb-render0
libxcb-render0-dev
libxcb-shape0
libxcb-shm0
libxcb-shm0-dev
libxcb-sync1
libxcb-xfixes0
libxcb1
libxcb1-dev
libxcomposite1
libxcursor1
libxdamage1
libxdmcp-dev
libxdmcp6
libxdot4
libxext-dev
libxext6
libxfixes3
libxfont1
libxft-dev
libxft2
libxi6
libxinerama1
libxkbcommon0
libxkbfile-dev
libxkbfile1
libxml-libxml-perl
libxml-namespacesupport-perl
libxml-parser-perl
libxml-sax-base-perl
libxml-sax-perl
libxml-twig-perl
libxml-xpathengine-perl
libxml2
libxml2-dev
libxmlrpc-epi0
libxmlsec1
libxmlsec1-openssl
libxmu6
libxmuu1
libxpm4
libxrandr2
libxrender-dev
libxrender1
libxshmfence1
libxslt1.1
libxss1
libxt-dev
libxt6
libxtables11
libxtst6
libxv1
libxxf86dga1
libxxf86vm1
libyaml-0-2
libz3-dev
libzen0v5
libzip4
libzmq5
libzstd1
python3-oauthlib

126
src/scripts/cache.sh Normal file
View File

@@ -0,0 +1,126 @@
step_log() {
message=$1
printf "\n\033[90;1m==> \033[0m\033[37;1m%s\033[0m\n" "$message"
}
add_log() {
mark=$1
shift
subjects=("$@")
for subject in "${subjects[@]}"; do
if [ "$mark" = "$tick" ]; then
printf "\033[32;1m%s \033[0m\033[34;1m%s \033[0m\033[90;1m%s\033[0m\n" "$mark" "$subject" "Added $subject"
else
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"
fi
done
}
get_api_version_from_repo() {
php_header="https://raw.githubusercontent.com/php/php-src/PHP-$version/main/php.h"
status_code=$(curl -sSL -o /tmp/php.h -w "%{http_code}" "$php_header")
if [ "$status_code" != "200" ]; then
curl -sSL --retry 5 "${php_header/PHP-$version/master}" | grep "PHP_API_VERSION" | cut -d' ' -f 3
else
grep "PHP_API_VERSION" /tmp/php.h | cut -d' ' -f 3
fi
}
get_api_version() {
case $version in
5.3) echo "20090626" ;;
5.4) echo "20100525" ;;
5.5) echo "20121212" ;;
5.6) echo "20131226" ;;
7.0) echo "20151012" ;;
7.1) echo "20160303" ;;
7.2) echo "20170718" ;;
7.3) echo "20180731" ;;
7.4) echo "20190902" ;;
8.0) echo "20200930" ;;
8.1) echo "20210902" ;;
*) get_api_version_from_repo ;;
esac
}
fix_ownership() {
dir=$1
sudo chown -R "$USER":"$(id -g -n)" "$(dirname "$dir")"
}
add_config() {
dependent_extension=$1
dependency_extension=$2
echo "$dependency_extension" | sudo tee "${ext_config_directory:?}/$dependent_extension/$dependency_extension" >/dev/null 2>&1
}
extension_dir_darwin() {
api_version=$1
if [[ "${version:?}" =~ ${old_versions:?} ]]; then
echo "/opt/local/lib/php${version/./}/extensions/no-debug-non-zts-$api_version"
else
if [[ "$(sysctl -n hw.optional.arm64 2>/dev/null)" == "1" ]]; then
echo "/opt/homebrew/lib/php/pecl/$api_version"
else
echo "/usr/local/lib/php/pecl/$api_version"
fi
fi
}
extension_dir_linux() {
api_version=$1
if [[ "${version:?}" =~ ${old_versions:?} ]]; then
echo "/usr/local/php/$version/lib/php/extensions/no-debug-non-zts-$api_version"
else
echo "/usr/lib/php/$api_version"
fi
}
data() {
old_versions="5.[3-5]"
date='20211217'
if [ "$os" = "Linux" ]; then
. /etc/lsb-release
os=$os-$DISTRIB_CODENAME
api_version=$(get_api_version)
dir=$(extension_dir_linux "$api_version")
sudo mkdir -p "$dir/deps" && fix_ownership "$dir"
elif [ "$os" = "Darwin" ]; then
[[ "$extensions" == *"vips"* ]] && date='20220224'
[[ "$extensions" =~ .*((pecl_)?http|mongodb).* ]] && date='20220304'
api_version=$(get_api_version)
dir=$(extension_dir_darwin "$api_version")
sudo mkdir -p "$dir/deps" && fix_ownership "$dir"
else
os="Windows"
dir='C:\\tools\\php\\ext'
fi
job="${GITHUB_REPOSITORY}-${GITHUB_WORKFLOW}-${GITHUB_JOB}"
key="$(echo -n "$extensions-$key-$job" | openssl dgst -sha256 | cut -d ' ' -f 2)"
key="$os"-"$version"-"$key"-"$date"
echo "$dir" > "${RUNNER_TEMP:?}"/dir
echo "$key" > "${RUNNER_TEMP:?}"/key
echo "::set-output name=dir::$dir"
echo "::set-output name=key::$key"
}
dependencies() {
if [ "$os" = "Linux" ] || [ "$os" = "Darwin" ]; then
export tick="✓"
export cross="✗"
export ext_config_directory="/tmp/extcache"
export deps_cache_directory="${RUNNER_TOOL_CACHE}"/deps
script_dir=$(cd "$(dirname "${BASH_SOURCE[0]}")" >/dev/null 2>&1 && pwd)
# shellcheck disable=SC1090
. "$script_dir/$(echo "$os" | tr '[:upper:]' '[:lower:]').sh"
setup_dependencies "$extensions" "$(cat "${RUNNER_TEMP:?}"/dir)"
fi
}
run=$1
extensions=$2
version=$3
key=$4
os=$(uname -s)
$run

189
src/scripts/darwin.sh Normal file
View File

@@ -0,0 +1,189 @@
fetch_brew_tap() {
tap=$1
tap_user=$(dirname "$tap")
tap_name=$(basename "$tap")
mkdir -p "$tap_dir/$tap_user"
curl -sL "https://github.com/$tap/archive/master.tar.gz" | sudo tar -xzf - -C "$tap_dir/$tap_user"
if [ -d "$tap_dir/$tap_user/$tap_name-master" ]; then
sudo mv "$tap_dir/$tap_user/$tap_name-master" "$tap_dir/$tap_user/$tap_name"
fi
}
add_brew_tap() {
tap=$1
if ! [ -d "$tap_dir/$tap" ]; then
if [ "${ImageOS:=}-${ImageVersion:=}" = "-" ]; then
brew tap --shallow "$tap" >/dev/null 2>&1
else
fetch_brew_tap "$tap" >/dev/null 2>&1
if ! [ -d "$tap_dir/$tap" ]; then
brew tap --shallow "$tap" >/dev/null 2>&1
fi
fi
fi
}
get_dependencies() {
extension=$1
list_deps="$(grep "$extension" "${script_dir:?}"/../lists/darwin-deps | cut -d '=' -f 2)"
formula_file="$tap_dir/$ext_tap/Formula/$extension@${version:?}.rb"
if [ -e "$formula_file" ]; then
formula_deps="$(grep "depends_on" "$formula_file" | cut -d '"' -f 2 | tr '\n' ' ')"
fi
deps=()
[[ -n "${list_deps[*]}" ]] && deps+=("${list_deps[@]}")
[[ -n "${formula_deps[*]}" ]] && deps+=("${formula_deps[@]}")
echo "${deps[@]}"
}
filter_extensions() {
extensions_array=("$@")
filtered_extensions=()
for ext in "${extensions_array[@]}"; do
if grep -i -q -w "$ext" "${script_dir:?}"/../lists/darwin-extensions ||
grep -q "$ext=" "${script_dir:?}"/../lists/darwin-deps; then
filtered_extensions+=("$ext")
fi
done
echo "${filtered_extensions[@]}"
}
setup_extensions_helper() {
dependent_extension=$1
dependency_extension=$2
extension_dir=$3
cached_extension="${deps_cache_directory:?}/$dependency_extension.so"
if ! [ -e "$cached_extension" ]; then
brew install "$dependency_extension@$version"
sudo find "$brew_cellar/$dependency_extension@${version:?}" -name "$dependency_extension.so" -exec cp {} "$cached_extension" \;
else
echo "Found $dependency_extension extension in cache"
sudo cp "$cached_extension" "$extension_dir/"
fi
add_config "$dependent_extension" "$dependency_extension"
}
setup_extensions() {
dependent_extension=$1
extension_dir=$2
shift 2
dependency_extensions_array=("$@")
sudo mkdir -p "$cache_directory"/"$extension"
echo "::group::Logs to set up extensions required for $extension"
for dependency_extension in "${dependency_extensions_array[@]}"; do
setup_extensions_helper "$dependent_extension" "$dependency_extension" "$extension_dir"
done
echo "::endgroup::"
add_log "${tick:?}" "${dependency_extensions_array[@]}"
}
add_library_helper() {
dep_name=$1
cache_dir=$2
echo "$dep_name" | sudo tee -a "$cache_dir"/list >/dev/null 2>&1
(
cd "$brew_cellar" || exit 1
if command -v gtar >/dev/null; then
sudo gtar -I "zstd -T0" -cf "$cache_dir"/"$dep_name".tar.zst "$dep_name"
else
sudo tar -cf - "$dep_name" | zstd -T0 > "$cache_dir"/"$dep_name".tar.zst
fi
)
}
add_library() {
lib=$1
cache_dir=$2
brew list "$lib" &>/dev/null || brew install "$lib"
IFS=' ' read -r -a deps_array <<<"$(brew deps "$lib" | tr '\n' ' ')"
to_wait=()
for dep_name in "$lib" "${deps_array[@]}"; do
add_library_helper "$dep_name" "$cache_dir" &
to_wait+=($!)
done
wait "${to_wait[@]}"
}
restore_library_helper() {
dep_name=$1
cache_dir=$2
if ! [ -d "$brew_cellar/$dep_name" ]; then
if command -v gtar >/dev/null; then
sudo gtar -I "zstd -d" -xf "$cache_dir"/"$dep_name".tar.zst -C "$brew_cellar"
else
sudo zstd -dq "$cache_dir"/"$dep_name".tar.zst && sudo tar -xf "$cache_dir"/"$dep_name".tar -C "$brew_cellar"
fi
fi
if ! [ -d "$brew_prefix/opt/$dep_name" ]; then
brew link --force --overwrite "$dep_name" 2>/dev/null || true
fi
}
restore_library() {
cache_dir=$1
to_wait=()
while read -r dep_name; do
restore_library_helper "$dep_name" "$cache_dir" &
to_wait+=($!)
done <"$cache_dir"/list
wait "${to_wait[@]}"
}
setup_libraries() {
extension=$1
shift 1
libraries_array=("$@")
ext_deps_dir="$deps_cache_directory/$extension"
sudo cp -a "$tap_dir"/"$ext_tap"/.github/deps/"$extension"/*.rb "$tap_dir"/"$core_tap"/Formula/ 2>/dev/null || true
sudo mkdir -p "$ext_deps_dir"
echo "::group::Logs to set up libraries required for $extension"
for lib in "${libraries_array[@]}"; do
if ! [ -e "$ext_deps_dir"/list ]; then
add_library "$lib" "$ext_deps_dir"
else
restore_library "$ext_deps_dir"
fi
done
echo "::endgroup::"
add_log "$tick" "${libraries_array[@]}"
}
setup_dependencies() {
extensions=$1
extension_dir=$2
cache_directory=/tmp/extcache
[[ -z "${extensions// /}" ]] && return
IFS=' ' read -r -a extensions_array <<<"$(echo "$extensions" | sed -e "s/pdo[_-]//g" -Ee "s/^|,\s*/ /g")"
IFS=' ' read -r -a extensions_array <<<"$(filter_extensions "${extensions_array[@]}")"
if [[ -n "${extensions_array[*]// /}" ]]; then
add_brew_tap "$php_tap"
add_brew_tap "$ext_tap"
# Remove once updated on the images
curl -o "$tap_dir"/"$core_tap"/Formula/ca-certificates.rb -sL https://raw.githubusercontent.com/"$core_tap"/master/Formula/ca-certificates.rb
for extension in "${extensions_array[@]}"; do
IFS=' ' read -r -a dependency_array <<<"$(get_dependencies "$extension")"
IFS=' ' read -r -a extension_array <<<"$(echo "${dependency_array[@]}" | grep -Eo "[a-z]*@" | sed 's/@//' | tr '\n' ' ')"
IFS=' ' read -r -a libraries_array <<<"${dependency_array[@]//shivammathur*/}"
if [[ -n "${libraries_array[*]// /}" ]]; then
step_log "Setup libraries for $extension"
setup_libraries "$extension" "${libraries_array[@]}"
fi
if [[ -n "${extension_array[*]// /}" ]] && [ "${skip_dependency_extensions:=}" != "true" ]; then
step_log "Setup extensions for $extension"
setup_extensions "$extension" "$extension_dir" "${extension_array[@]}"
fi
done
fi
}
export HOMEBREW_CHANGE_ARCH_TO_ARM=1
export HOMEBREW_NO_INSTALL_CLEANUP=1
export HOMEBREW_NO_AUTO_UPDATE=1
export HOMEBREW_NO_INSTALLED_DEPENDENTS_CHECK=1
brew_prefix="$(brew --prefix)"
brew_cellar="$brew_prefix/Cellar"
tap_dir="$(brew --repository)"/Library/Taps
core_tap=homebrew/homebrew-core
php_tap=shivammathur/homebrew-php
ext_tap=shivammathur/homebrew-extensions

117
src/scripts/linux.sh Normal file
View File

@@ -0,0 +1,117 @@
link_apt_fast() {
if ! command -v apt-fast >/dev/null; then
sudo ln -sf /usr/bin/apt-get /usr/bin/apt-fast
fi
}
fetch_package() {
if ! [ -e /tmp/Packages ]; then
. /etc/os-release
deb_build_arch=$(dpkg-architecture -q DEB_BUILD_ARCH)
curl -o /tmp/Packages.gz -sL "http://ppa.launchpad.net/ondrej/php/ubuntu/dists/$VERSION_CODENAME/main/binary-$deb_build_arch/Packages.gz"
gzip -df /tmp/Packages.gz
fi
}
get_dependencies() {
package=$1
prefix=$2
list_deps="$(grep "${package#*-}" "${script_dir:?}"/../lists/linux-deps | cut -d '=' -f 2 | grep -Eo "$prefix.*")"
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)"
deps=()
[[ -n "${list_deps[*]}" ]] && deps+=("${list_deps[@]}")
[[ -n "${package_deps[*]}" ]] && deps+=("${package_deps[@]}")
echo "${deps[@]}"
}
get_package_link() {
package=$1
trunk="http://ppa.launchpad.net/ondrej/php/ubuntu"
file=$(sed -e '/Package:\s'"$package$"'/,/^\s*$/!d' /tmp/Packages | grep -Eo "^Filename.*" | cut -d' ' -f 2 | tr -d '\r')
echo "$trunk/$file"
}
setup_extensions_helper() {
dependency_extension=$1
extension_dir=$2
cached_extension="${deps_cache_directory:?}/$dependency_extension.so"
if ! [ -e "$extension_dir/$dependency_extension.so" ]; then
if ! [ -e "$cached_extension" ]; then
extension_package_link="$(get_package_link "php${version:?}-$dependency_extension")"
sudo curl -H "User-Agent: Debian APT-HTTP/GHA(ce)" -o "/tmp/$dependency_extension".deb -sL "$extension_package_link"
sudo dpkg-deb -x "/tmp/$dependency_extension".deb /
sudo cp "$extension_dir/$dependency_extension.so" "$cached_extension"
fix_ownership "$extension_dir"
else
sudo cp "$cached_extension" "$extension_dir/"
fi
fi
}
setup_extensions() {
extension_dir=$1
IFS=' ' read -r -a dependency_extension_array <<<"$(echo "$2" | xargs -n1 | sort | uniq | xargs)"
to_wait=()
for dependency_extension in "${dependency_extension_array[@]}"; do
setup_extensions_helper "$dependency_extension" "$extension_dir" &
to_wait+=($!)
done
wait "${to_wait[@]}"
add_log "${tick:?}" "${dependency_extension_array[@]}"
}
filter_libraries() {
libraries="$(echo "$1" | xargs -n1 | sort | uniq | xargs)"
for library in $libraries; do
if grep -i -q -w "$library" "${script_dir:?}"/../lists/"$VERSION_CODENAME"-libs; then
libraries=${libraries//$library/}
fi
done
echo "$libraries"
}
setup_libraries() {
libraries=$1
if [[ -n "${libraries// /}" ]]; then
libraries=$(filter_libraries "$libraries")
if [[ -n "${libraries// /}" ]]; then
step_log "Setup libraries"
IFS=' ' read -r -a libraries_array <<<"$libraries"
link_apt_fast
echo "::group::Logs to set up required libraries"
sudo DEBIAN_FRONTEND=noninteractive apt-fast install --no-install-recommends --no-upgrade -y "${libraries_array[@]}"
ec="$?"
echo "::endgroup::"
if [ "$ec" -eq "0" ]; then mark="${tick:?}"; else mark="${cross:?}"; fi
add_log "$mark" "${libraries_array[@]}"
fi
fi
}
setup_dependencies() {
extensions=$1
extension_dir=$2
[[ -z "${extensions// }" ]] && return
IFS=' ' read -r -a extensions_array <<<"$(echo "$extensions" | sed -e "s/pdo[_-]//g" -Ee "s/^|,\s*/ php$version-/g")"
. /etc/os-release
sudo rm -rf "${ext_config_directory:?}" || true
libraries=""
extension_packages=""
for extension_package in "${extensions_array[@]}"; do
fetch_package
libraries="$libraries $(get_dependencies "$extension_package" "lib")"
IFS=' ' read -r -a dependency_extension_packages_array <<<"$(get_dependencies "$extension_package" "php$version-")"
extension_packages="$extension_packages ${dependency_extension_packages_array[*]}"
extension_packages="${extension_packages//php$version-common/}"
for dependency_extension in "${dependency_extension_packages_array[@]}"; do
mkdir -p "$ext_config_directory/${extension_package#*-}"
add_config "${extension_package#*-}" "$dependency_extension"
done
done
if [[ -n "${libraries// /}" ]]; then
setup_libraries "$libraries"
fi
if [[ -n "${extension_packages// /}" ]] && [ "${skip_dependency_extensions:=}" != "true" ]; then
setup_extensions "$extension_dir" "${extension_packages//php$version-/}"
fi
}

View File

@@ -1,62 +1,15 @@
import * as fs from 'fs';
import * as core from '@actions/core';
import * as path from 'path';
import * as spu from 'setup-php/lib/utils';
/**
* Function to read environment variable and return a string value.
*
* @param property
* Function to get outputs
*/
export async function readEnv(property: string): Promise<string> {
const value = process.env[property];
switch (value) {
case undefined:
return '';
default:
return value;
}
}
/**
* Function to get inputs from both with and env annotations.
*
* @param name
* @param mandatory
*/
export async function getInput(
name: string,
mandatory: boolean
): Promise<string> {
const input = core.getInput(name);
const env_input = await readEnv(name);
switch (true) {
case input != '':
return input;
case input == '' && env_input != '':
return env_input;
case input == '' && env_input == '' && mandatory:
throw new Error(`Input required and not supplied: ${name}`);
default:
return '';
}
}
/**
* Function to parse PHP version.
*
* @param version
*/
export async function parseVersion(version: string): Promise<string> {
switch (version) {
case 'latest':
return '7.4';
default:
switch (true) {
case version.length > 1:
return version.slice(0, 3);
default:
return version + '.0';
}
}
export async function getOutput(output: string): Promise<string> {
return fs.readFileSync(
path.join(await spu.readEnv('RUNNER_TEMP'), output),
'utf8'
);
}
/**
@@ -65,10 +18,26 @@ export async function parseVersion(version: string): Promise<string> {
* @param extension_csv
*/
export async function filterExtensions(extension_csv: string): Promise<string> {
return extension_csv
return JSON.stringify(
extension_csv
.split(',')
.filter(extension => {
return extension.trim()[0] != ':';
})
.join(',');
.join(',')
);
}
/**
* Function to get script call
*
* @param fn
* @param args
*/
export async function scriptCall(
fn: string,
...args: string[]
): Promise<string> {
const script: string = path.join(__dirname, '../src/scripts/cache.sh');
return ['bash', script, fn, ...args].join(' ');
}

View File

@@ -1,63 +1,19 @@
{
"compilerOptions": {
/* Basic Options */
// "incremental": true, /* Enable incremental compilation */
"target": "ES2019", /* Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017', 'ES2018', 'ES2019' or 'ESNEXT'. */
"module": "commonjs", /* Specify module code generation: 'none', 'commonjs', 'amd', 'system', 'umd', 'es2015', or 'ESNext'. */
// "allowJs": true, /* Allow javascript files to be compiled. */
// "checkJs": true, /* Report errors in .js files. */
// "jsx": "preserve", /* Specify JSX code generation: 'preserve', 'react-native', or 'react'. */
// "declaration": true, /* Generates corresponding '.d.ts' file. */
// "declarationMap": true, /* Generates a sourcemap for each corresponding '.d.ts' file. */
// "sourceMap": true, /* Generates corresponding '.map' file. */
// "outFile": "./", /* Concatenate and emit output to single file. */
"outDir": "./lib", /* Redirect output structure to the directory. */
"rootDir": "./src", /* Specify the root directory of input files. Use to control the output directory structure with --outDir. */
// "composite": true, /* Enable project compilation */
// "tsBuildInfoFile": "./", /* Specify file to store incremental compilation information */
// "removeComments": true, /* Do not emit comments to output. */
// "noEmit": true, /* Do not emit outputs. */
// "importHelpers": true, /* Import emit helpers from 'tslib'. */
// "downlevelIteration": true, /* Provide full support for iterables in 'for-of', spread, and destructuring when targeting 'ES5' or 'ES3'. */
// "isolatedModules": true, /* Transpile each file as a separate module (similar to 'ts.transpileModule'). */
/* Strict Type-Checking Options */
"strict": true, /* Enable all strict type-checking options. */
// "noImplicitAny": true, /* Raise error on expressions and declarations with an implied 'any' type. */
// "strictNullChecks": true, /* Enable strict null checks. */
// "strictFunctionTypes": true, /* Enable strict checking of function types. */
// "strictBindCallApply": true, /* Enable strict 'bind', 'call', and 'apply' methods on functions. */
// "strictPropertyInitialization": true, /* Enable strict checking of property initialization in classes. */
// "noImplicitThis": true, /* Raise error on 'this' expressions with an implied 'any' type. */
// "alwaysStrict": true, /* Parse in strict mode and emit "use strict" for each source file. */
/* Additional Checks */
// "noUnusedLocals": true, /* Report errors on unused locals. */
// "noUnusedParameters": true, /* Report errors on unused parameters. */
// "noImplicitReturns": true, /* Report error when not all code paths in function return a value. */
// "noFallthroughCasesInSwitch": true, /* Report errors for fallthrough cases in switch statement. */
/* Module Resolution Options */
// "moduleResolution": "node", /* Specify module resolution strategy: 'node' (Node.js) or 'classic' (TypeScript pre-1.6). */
// "baseUrl": "./", /* Base directory to resolve non-absolute module names. */
// "paths": {}, /* A series of entries which re-map imports to lookup locations relative to the 'baseUrl'. */
// "rootDirs": [], /* List of root folders whose combined content represents the structure of the project at runtime. */
// "typeRoots": [], /* List of folders to include type definitions from. */
// "types": [], /* Type declaration files to be included in compilation. */
// "allowSyntheticDefaultImports": true, /* Allow default imports from modules with no default export. This does not affect code emit, just typechecking. */
"esModuleInterop": true /* Enables emit interoperability between CommonJS and ES Modules via creation of namespace objects for all imports. Implies 'allowSyntheticDefaultImports'. */
// "preserveSymlinks": true, /* Do not resolve the real path of symlinks. */
// "allowUmdGlobalAccess": true, /* Allow accessing UMD globals from modules. */
/* Source Map Options */
// "sourceRoot": "", /* Specify the location where debugger should locate TypeScript files instead of source locations. */
// "mapRoot": "", /* Specify the location where debugger should locate map files instead of generated locations. */
// "inlineSourceMap": true, /* Emit a single file with source maps instead of having a separate file. */
// "inlineSources": true, /* Emit the source alongside the sourcemaps within a single file; requires '--inlineSourceMap' or '--sourceMap' to be set. */
/* Experimental Options */
// "experimentalDecorators": true, /* Enables experimental support for ES7 decorators. */
// "emitDecoratorMetadata": true, /* Enables experimental support for emitting type metadata for decorators. */
"declaration": true,
"esModuleInterop": true,
"lib": [
"ESNext"
],
"module": "commonjs",
"moduleResolution": "node",
"noImplicitAny": true,
"outDir": "./lib",
"removeComments": true,
"rootDir": "./src",
"sourceMap": true,
"strict": true,
"target": "ESNext"
},
"exclude": ["node_modules", "**/*.test.ts"]
"exclude": ["__tests__", "lib", "node_modules"]
}