46 Commits
1.0.1 ... 1.5.0

Author SHA1 Message Date
Shivam Mathur
1d41d22536 Fix Linux cache 2021-03-15 00:38:01 +05:30
Shivam Mathur
e8a5ac648c Clear cache
Update dependencies

Update ubuntu YAML labels in README
2021-03-13 02:24:16 +05:30
Shivam Mathur
61c3ac571e Fix libs workflow 2021-03-08 21:14:58 +05:30
github-actions[bot]
07f87f7871 Updating lists 2021-03-07 17:15:41 +00:00
Shivam Mathur
5a367d30f4 Add lists for libraries
Add workflow to update library lists

Refactor extensions.sh
2021-03-07 22:41:52 +05:30
Shivam Mathur
ac5140901c Remove lists
Fix extension dependency setup on linux

Update Node.js dependencies
2021-03-07 03:21:44 +05:30
Shivam Mathur
7df1333d2b Merge pull request #20 from shivammathur/develop
1.4.0
2020-12-30 14:20:37 -08:00
Shivam Mathur
9ef47bc1b1 Change extensions directory for PHP 5.3 on Ubuntu
Add support for PHP 5.6+ on MacOS ARM

Update lists for PHP 5.3

Clear cache

Bump version to 1.4.0
2020-12-31 03:47:46 +05:30
Shivam Mathur
bc3f3bc008 Merge pull request #19 from shivammathur/develop
1.3.3
2020-12-16 23:49:46 -08:00
Shivam Mathur
30e4da7ed2 Adjust extension_dir for PHP 8 on Ubuntu
Reset extension cache

Update dependencies

Update lists
2020-12-17 13:16:33 +05:30
Shivam Mathur
1b7b26deeb Merge pull request #18 from shivammathur/develop
1.3.2
2020-11-26 21:14:56 +05:30
Shivam Mathur
0487f686e2 Clear cache
Bump version to 1.3.2

Update dependencies
2020-11-26 21:14:34 +05:30
Shivam Mathur
f5a7bad686 Merge pull request #17 from shivammathur/develop
1.3.1
2020-10-24 07:40:06 +05:30
Shivam Mathur
d48014e2bb Add PHP 8.1 and macos-11.0 to the README
Update Node.js dependencies

Bump version to 1.3.1
2020-10-24 07:31:37 +05:30
Shivam Mathur
3809746e7d Merge pull request #16 from shivammathur/develop
1.3.0
2020-10-13 14:29:02 +05:30
Shivam Mathur
f55a0043ab Add support for PHP 8.1
Add support for alias latest

Bump version to 1.3.0
2020-10-13 14:22:54 +05:30
Shivam Mathur
154644c7b4 Merge pull request #15 from shivammathur/develop
1.2.0
2020-09-30 10:13:45 +05:30
Shivam Mathur
60ee2fe878 Bump version to 1.2.0 2020-09-30 10:08:07 +05:30
Shivam Mathur
4db45d6171 Merge pull request #14 from shivammathur/develop
1.1.3
2020-08-10 12:39:37 +05:30
Shivam Mathur
7045a9c4c7 Add cubrid to the lists
Update README

Bump version to 1.1.3
2020-08-10 12:22:10 +05:30
Shivam Mathur
506984d835 Merge pull request #13 from shivammathur/develop
1.1.2
2020-08-04 06:50:24 +05:30
Shivam Mathur
f94c56d97f Change PHP 8.0 prefix for linux
Update extension lists

Bump version to 1.1.2
2020-08-04 05:55:46 +05:30
Shivam Mathur
4309c25508 Merge pull request #12 from shivammathur/develop
Hotfix in 1.1.1
2020-07-18 22:16:55 +05:30
Shivam Mathur
7af896286c Update dependencies
Apply GHSA-p6mc-m468-83gw advisory to fix prototype pollution in lodash
2020-07-18 22:09:33 +05:30
Shivam Mathur
9666885116 Merge pull request #11 from shivammathur/develop
1.1.1
2020-06-19 10:37:03 +05:30
Shivam Mathur
7963f6b10a Bump version to 1.1.1 2020-06-19 10:27:23 +05:30
Shivam Mathur
0fe00bc9bd Update README 2020-06-03 17:26:02 +05:30
Shivam Mathur
1cc42c3174 Merge pull request #10 from shivammathur/develop
1.1.0
2020-06-03 17:22:37 +05:30
Shivam Mathur
4bb3575393 Bump version to 1.1.0 2020-06-03 17:12:35 +05:30
Shivam Mathur
44c50f8364 Update lists 2020-06-03 17:04:40 +05:30
Shivam Mathur
76f84c1a27 Merge pull request #9 from shivammathur/develop
1.0.6
2020-05-10 13:59:34 +05:30
Shivam Mathur
28ef0db7df Filter extensions marked for removal 2020-05-10 13:56:23 +05:30
Shivam Mathur
340bfd72bd Merge pull request #8 from shivammathur/develop
1.0.5
2020-04-10 00:59:29 +05:30
Shivam Mathur
f8f6d27d7e Bump version to 1.0.5 2020-04-10 00:24:25 +05:30
Shivam Mathur
767583b9f4 Reset key for PCOV on PHP8 on windows 2020-04-10 00:16:26 +05:30
Shivam Mathur
ac19b1282b Merge pull request #7 from shivammathur/develop
Bump version to 1.0.4
2020-03-18 13:18:25 +05:30
Shivam Mathur
88757fba3a Bump version to 1.0.4 2020-03-18 13:02:49 +05:30
Shivam Mathur
dfd930a5db Merge pull request #6 from shivammathur/develop
1.0.3
2020-03-08 08:34:01 +05:30
Shivam Mathur
4b0b4ed06d Bump version to 1.0.3 2020-03-08 07:34:46 +05:30
Shivam Mathur
9b6656a45d Change ext_dir path to match macports on old PHP 2020-03-06 08:00:40 +05:30
Shivam Mathur
095a49d348 Add checks to improve running time on linux 2020-03-06 07:59:49 +05:30
Shivam Mathur
ac44aa2d8a Merge pull request #5 from shivammathur/develop
1.0.2
2020-02-29 22:24:38 +05:30
Shivam Mathur
4e92df292a Bump version to 1.0.2 2020-02-29 16:08:49 +05:30
Shivam Mathur
9e0a21bc53 Add ubuntu release to the cache key 2020-02-29 16:08:48 +05:30
Shivam Mathur
b354d92cc6 Fix arguments 2020-02-29 15:43:09 +05:30
Shivam Mathur
a3c9016503 Update extension_dir for old PHP on darwin 2020-02-25 09:01:23 +05:30
23 changed files with 14095 additions and 2507 deletions

View File

@@ -1,7 +1,7 @@
{
"env": { "node": true, "jest": true },
"parser": "@typescript-eslint/parser",
"parserOptions": { "ecmaVersion": 2020, "sourceType": "module" },
"parserOptions": { "ecmaVersion": 2019, "sourceType": "module" },
"extends": [
"eslint:recommended",
"plugin:@typescript-eslint/eslint-recommended",
@@ -10,7 +10,7 @@
"plugin:import/warnings",
"plugin:import/typescript",
"plugin:prettier/recommended",
"prettier/@typescript-eslint"
"prettier"
],
"plugins": ["@typescript-eslint", "jest"],
"rules": {

6
.github/FUNDING.yml vendored
View File

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

View File

@@ -1,23 +1,42 @@
---
name: Bug report
about: Create a report to help us improve
about: Nice, you found a bug!
title: ''
labels: ''
assignees: ''
labels: 'bug'
assignees: 'shivammathur'
---
**Describe the bug**
A clear and concise description of what the bug is.
<!-- Please describe the bug concisely. -->
**Version**
- [ ] I have checked releases and the bug exists in the latest patch version of `v1`.
- [ ] `v2`
- [ ] `v1`
**Runners**
<!-- Please mark the GitHub Action runner your workflow uses. -->
- [ ] GitHub Hosted
- [ ] Self Hosted
**Operating systems**
<!-- Please mention the operating systems your workflow uses. -->
**PHP versions**
<!-- Please mention the PHP versions your workflow uses. -->
**To Reproduce**
Please provide the GitHub Action `.yml` file.
<!-- Please provide the relevant steps of your workflow `.yml` file. -->
**Expected behavior**
A clear and concise description of what you expected to happen.
<!-- A clear and concise description of what you expected to happen. -->
**Screenshots**
If applicable, add screenshots to help explain your problem.
**Screenshots/Logs**
<!-- If applicable, add screenshots or logs to help explain your problem. -->
**Additional context**
Add any other context about the problem here.
<!-- Add any other context about the problem here. -->
**Are you willing to submit a PR?**
<!-- We accept pull requests targeting the develop branch. -->

View File

@@ -1,20 +1,26 @@
---
name: Feature request
about: Suggest an idea for this project
about: Suggest a new feature
title: ''
labels: ''
assignees: ''
labels: 'enhancement'
assignees: 'shivammathur'
---
**Is your feature request related to a problem? Please describe.**
A clear and concise description of what the problem is. Ex. I want to improve [...]
**Describe the feature**
<!-- Please describe concisely the feature you want to add. -->
**Describe the solution you'd like**
A clear and concise description of what you want to happen.
**Version**
- [ ] I have checked releases and the feature is missing in the latest patch version of `v1`.
**Describe alternatives you've considered**
A clear and concise description of any alternative solutions or features you've considered.
**Underlying issue**
<!-- Please describe the issue this would solve. -->
**Describe alternatives**
<!-- Please mention any alternative solutions you've considered. -->
**Additional context**
Add any other context or screenshots about the feature request here.
<!-- Add any other context or screenshots about the feature request here. -->
**Are you willing to submit a PR?**
<!-- We accept pull requests targeting the develop branch. -->

View File

@@ -7,14 +7,13 @@ labels: bug or enhancement
## A Pull Request should be associated with an Issue.
> We wish to have discussions in Issues. A single issue may be targeted by multiple PRs.
> If you're offering a new feature or fixing anything, we'd like to know beforehand in Issues,
> and potentially we'll be able to point development in a particular direction.
> If you're fixing a bug, adding a new feature or improving something please provide the details in Issues,
> so that the development can be pointed in the intended direction.
Related issue:
Related issue: <!-- Please link the related issue -->
> Further notes in [Contribution Guidelines](.github/CONTRIBUTING.md)
> Thank you! We are open to PRs, but please understand if for technical reasons we are unable to accept each and any PR
> Thank you for your contribution.
### Description
@@ -26,7 +25,12 @@ This PR [briefly explain what it does]
- [ ] I have run `npm run format` before the commit.
- [ ] I have run `npm run lint` before the commit.
- [ ] I have run `npm run release` before the commit.
- [ ] `npm test` returns with no unit test errors.
- [ ] `npm test` returns with no unit test errors and all code covered.
> In case this PR edits any scripts:
- [ ] I have checked the edited scripts for syntax.
- [ ] I have tested the changes in an integration test (If yes, provide workflow link).
<!--
- Please target the develop branch when submitting the pull request.

View File

@@ -1,33 +0,0 @@
---
name: 🐞 Bug Fix
about: You have a fix for a bug?
labels: bug
---
## A Pull Request should be associated with an Issue.
> We wish to have discussions in Issues. A single issue may be targeted by multiple PRs.
> If you're offering a new feature or fixing anything, we'd like to know beforehand in Issues,
> and potentially we'll be able to point development in a particular direction.
Related issue:
> Further notes in [Contribution Guidelines](.github/CONTRIBUTING.md)
> Thank you! We are open to PRs, but please understand if for technical reasons we are unable to accept each and any PR
### Description
This PR [briefly explain what it does]
> In case this PR introduced TypeScript/JavaScript code changes:
- [ ] I have written test cases for the changes in this pull request.
- [ ] I have run `npm run format` before the commit.
- [ ] I have run `npm run lint` before the commit.
- [ ] I have run `npm run release` before the commit.
- [ ] `npm test` returns with no unit test errors.
<!--
- Please target the develop branch when submitting the pull request.
-->

View File

@@ -1,33 +0,0 @@
---
name: ⚙ Improvement
about: You have some improvement to make cache-extensions better?
labels: enhancement
---
## A Pull Request should be associated with an Issue.
> We wish to have discussions in Issues. A single issue may be targeted by multiple PRs.
> If you're offering a new feature or fixing anything, we'd like to know beforehand in Issues,
> and potentially we'll be able to point development in a particular direction.
Related issue:
> Further notes in [Contribution Guidelines](.github/CONTRIBUTING.md)
> Thank you! We are open to PRs, but please understand if for technical reasons we are unable to accept each and any PR
### Description
This PR [briefly explain what it does]
> In case this PR introduced TypeScript/JavaScript code changes:
- [ ] I have written test cases for the changes in this pull request.
- [ ] I have run `npm run format` before the commit.
- [ ] I have run `npm run lint` before the commit.
- [ ] I have run `npm run release` before the commit.
- [ ] `npm test` returns with no unit test errors.
<!--
- Please target the develop branch when submitting the pull request.
-->

View File

@@ -1,33 +0,0 @@
---
name: 🎉 New Feature
about: You have implemented some neat idea that you want to make part of cache-extensions?
labels: enhancement
---
## A Pull Request should be associated with an Issue.
> We wish to have discussions in Issues. A single issue may be targeted by multiple PRs.
> If you're offering a new feature or fixing anything, we'd like to know beforehand in Issues,
> and potentially we'll be able to point development in a particular direction.
Related issue:
> Further notes in [Contribution Guidelines](.github/CONTRIBUTING.md)
> Thank you! We are open to PRs, but please understand if for technical reasons we are unable to accept each and any PR
### Description
This PR [briefly explain what it does]
> In case this PR introduced TypeScript/JavaScript code changes:
- [ ] I have written test cases for the changes in this pull request.
- [ ] I have run `npm run format` before the commit.
- [ ] I have run `npm run lint` before the commit.
- [ ] I have run `npm run release` before the commit.
- [ ] `npm test` returns with no unit test errors.
<!--
- Please target the develop branch when submitting the pull request.
-->

66
.github/workflows/libs.yml vendored Normal file
View File

@@ -0,0 +1,66 @@
name: Libs workflow
on:
workflow_dispatch:
schedule:
- cron: '0 15 * * *'
jobs:
update:
name: update
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [ubuntu-20.04, ubuntu-18.04, ubuntu-16.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
- name: Upload Artifact
uses: actions/upload-artifact@v2
with:
name: lists
path: |
/tmp/*-libs
sync:
name: sync
needs: update
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v2
with:
ref: develop
fetch-depth: 0
- name: Download lists
uses: actions/download-artifact@v2
with:
name: lists
path: src/lists
- name: Update tags and branches
run: |
push_ref() {
ref=$1
git push -f https://${{ github.repository_owner }}:${{ secrets.GITHUB_TOKEN }}@github.com/${{ github.repository }}.git "$ref" || true
}
git config --local user.email "$bot_user_id+github-actions[bot]@users.noreply.github.com"
git config --local user.name "github-actions[bot]"
if [ "$(git status --porcelain=v1 2>/dev/null | wc -l)" != "0" ]; then
git add .
git commit -m "Updating lists"
fi
push_ref develop
semver=$(git tag --sort=-refname | awk 'match($0, /^[0-9]+\.[0-9]+\.[0-9]+$/)' | head -n 1)
rolling=$(git tag --sort=-refname | awk 'match($0, /^v[0-9]/)' | head -n 1)
for branch in master releases/$rolling; do
git checkout $branch
if [ "$(git rev-parse "$branch")" != "$(git rev-parse develop)" ]; then
git merge --allow-unrelated-histories develop || true
fi
push_ref "$branch"
done
for tag in $semver $rolling; do
git tag -fa "$tag" -m "Update %1 tag"
push_ref "$tag"
done

View File

@@ -1,11 +1,12 @@
{
"arrowParens": "avoid",
"bracketSpacing": false,
"endOfLine": "auto",
"parser": "typescript",
"printWidth": 80,
"tabWidth": 2,
"useTabs": false,
"semi": true,
"singleQuote": true,
"tabWidth": 2,
"trailingComma": "none",
"bracketSpacing": false,
"arrowParens": "avoid",
"parser": "typescript"
}
"useTabs": false
}

View File

@@ -3,8 +3,8 @@
<p align="center">
<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"></a>
<a href="#tada-php-support" title="PHP Versions Supported"><img alt="PHP Versions Supported" src="https://img.shields.io/badge/php-%3E%3D%205.3-8892BF.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>
</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.
@@ -14,9 +14,13 @@ Cache PHP extensions in [GitHub Actions](https://github.com/features/actions "Gi
- [PHP Support](#tada-php-support)
- [OS/Platform Support](#cloud-osplatform-support)
- [Usage](#memo-usage)
- [Inputs](#inputs)
- [Workflow](#workflow)
- [Thread Safe Setup](#thread-safe-setup)
- [License](#scroll-license)
- [Contributions](#1-contributions)
- [Support this project](#sparkling_heart-support-this-project)
- [Support This Project](#sparkling_heart-support-this-project)
- [Dependencies](#package-dependencies)
## :tada: PHP Support
@@ -28,30 +32,51 @@ Cache PHP extensions in [GitHub Actions](https://github.com/features/actions "Gi
|5.6|`Stable`|`End of life`|
|7.0|`Stable`|`End of life`|
|7.1|`Stable`|`End of life`|
|7.2|`Stable`|`Security fixes only`|
|7.3|`Stable`|`Active`|
|7.2|`Stable`|`End of life`|
|7.3|`Stable`|`Security fixes only`|
|7.4|`Stable`|`Active`|
|8.0|`Experimental`|`In development`|
|8.0|`Stable`|`Active`|
|8.1|`Nightly`|`In development`|
## :cloud: OS/Platform Support
|Virtual environment|matrix.operating-system|
|Virtual environment|YAML workflow label|
|--- |--- |
|Windows Server 2019|`windows-latest` or `windows-2019`|
|Ubuntu 18.04|`ubuntu-latest` or `ubuntu-18.04`|
|Ubuntu 20.04|`ubuntu-latest` or `ubuntu-20.04`|
|Ubuntu 18.04|`ubuntu-18.04`|
|Ubuntu 16.04|`ubuntu-16.04`|
|macOS X Catalina 10.15|`macos-latest` or `macOS-10.15`|
|macOS Catalina 10.15|`macos-latest` or `macOS-10.15`|
|macOS Big Sur 11.0|`macOS-11.0`|
## :memo: Usage
Inputs supported by this GitHub Action.
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.
- php-version `required`
- extensions `required`
- key `required`
### Inputs
#### `php-version` (required)
- Specify the PHP version you want to set up.
- Accepts a `string`. For example `'7.4'`.
- 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.
#### `key` (required)
- Specify the key to identify the cache version.
- Accepts any `string`. For example `cache-v1`.
- Changing this would reset the cache.
See [action.yml](action.yml "Metadata for this GitHub Action") and usage below for more info.
### Workflow
> Cache extensions in a PHP workflow
```yaml
@@ -71,7 +96,7 @@ jobs:
uses: actions/checkout@v2
- name: Setup cache environment
id: cache-env
id: extcache
uses: shivammathur/cache-extensions@v1
with:
php-version: ${{ matrix.php-versions }}
@@ -79,11 +104,11 @@ jobs:
key: ${{ env.key }}
- name: Cache extensions
uses: actions/cache@v1
uses: actions/cache@v2
with:
path: ${{ steps.cache-env.outputs.dir }}
key: ${{ steps.cache-env.outputs.key }}
restore-keys: ${{ steps.cache-env.outputs.key }}
path: ${{ steps.extcache.outputs.dir }}
key: ${{ steps.extcache.outputs.key }}
restore-keys: ${{ steps.extcache.outputs.key }}
- name: Setup PHP
uses: shivammathur/setup-php@v2
@@ -92,19 +117,35 @@ jobs:
extensions: ${{ env.extensions }}
```
### Thread Safe Setup
If you set up both `TS` and `NTS` PHP versions on `Windows` in your workflow, please add `${{ env.phpts }}` to `key` and `restore-keys` inputs in `actions/cache` step in the above workflow to avoid a conflicting cache.
```yaml
- name: Cache extensions
uses: actions/cache@v2
with:
path: ${{ steps.extcache.outputs.dir }}
key: ${{ steps.extcache.outputs.key }}-${{ env.phpts }}
restore-keys: ${{ steps.extcache.outputs.key }}-${{ env.phpts }}
```
## :scroll: License
The scripts and documentation in this project are released 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 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.
## :+1: Contributions
Contributions are welcome! See [Contributor's Guide](.github/CONTRIBUTING.md "shivammathur/cache-extensions contribution guide"). If you face any issues while using this or want to suggest a feature/improvement, create an issue [here](https://github.com/shivammathur/cache-extensions/issues "Issues reported").
## :sparkling_heart: Support this project
## :sparkling_heart: Support This Project
If this action helped you.
- Please star the project and share it with the community.
- If you blog, write about your experience while using this action.
- I maintain this in my free time, please support me with a [Patreon](https://www.patreon.com/shivammathur "Shivam Mathur Patreon") subscription or a one time contribution using [Paypal](https://www.paypal.me/shivammathur "Shivam Mathur PayPal").
- If you need any help using this, please contact me using [Codementor](https://www.codementor.io/shivammathur "Shivam Mathur Codementor")
- 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.
## :package: Dependencies
- [Node.js dependencies](https://github.com/shivammathur/setup-php/network/dependencies "Node.js dependencies")

View File

@@ -1,4 +1,5 @@
import * as install from '../src/cache';
import * as cache from '../src/cache';
import * as utils from '../src/utils';
/**
* Mock cache.ts
@@ -6,13 +7,16 @@ import * as install from '../src/cache';
jest.mock('../src/cache', () => ({
run: jest.fn().mockImplementation(
async (): Promise<string> => {
const version: string = process.env['php-version'] || '';
const extensions: string = process.env['extensions'] || '';
let version: string = process.env['php-version'] || '';
version = version.length > 1 ? version.slice(0, 3) : version + '.0';
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
'bash ' + script_path + ' "' + extensions + '" ' + key + ' ' + version
);
}
)
@@ -22,10 +26,8 @@ jest.mock('../src/cache', () => ({
* Function to set the process.env
*
* @param version
* @param os
* @param extension_csv
* @param ini_values_csv
* @param coverage_driver
* @param extensions
* @param key
*/
function setEnv(
version: string | number,
@@ -40,15 +42,19 @@ function setEnv(
describe('Install', () => {
it('Test Run', async () => {
setEnv('7.0', 'xdebug, pcov', 'cache-v1');
// @ts-ignore
const script: string = await install.run();
expect(script).toContain('bash extensions.sh "xdebug, pcov-cache-v1" 7.0');
const script: string = '' + (await cache.run());
expect(script).toContain('bash extensions.sh "xdebug, pcov" cache-v1 7.0');
});
it('Test Run', async () => {
setEnv('7.4', 'xdebug, zip', 'cache-v2');
// @ts-ignore
const script: string = await install.run();
expect(script).toContain('bash extensions.sh "xdebug, zip-cache-v2" 7.4');
const script: string = '' + (await cache.run());
expect(script).toContain('bash extensions.sh "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');
});
});

View File

@@ -1,5 +1,3 @@
import * as fs from 'fs';
import * as path from 'path';
import * as utils from '../src/utils';
jest.mock('@actions/core', () => ({
@@ -9,14 +7,32 @@ jest.mock('@actions/core', () => ({
}));
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'] = 'cache-extensions';
process.env['undefined'] = '';
expect(await utils.getInput('test', false)).toBe('cache-extensions');
expect(await utils.getInput('undefined', false)).toBe('');
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 filterExtensions', async () => {
expect(await utils.filterExtensions('a,:b,c')).toBe('a,c');
expect(await utils.filterExtensions('a, :b, c')).toBe('a, c');
});
});

314
dist/index.js vendored
View File

@@ -19,7 +19,13 @@ module.exports =
/******/ };
/******/
/******/ // Execute the module function
/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
/******/ var threw = true;
/******/ try {
/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
/******/ threw = false;
/******/ } finally {
/******/ if(threw) delete installedModules[moduleId];
/******/ }
/******/
/******/ // Flag the module as loaded
/******/ module.l = true;
@@ -354,13 +360,20 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
var __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];
result["default"] = mod;
return result;
};
Object.defineProperty(exports, "__esModule", { value: true });
const os = __webpack_require__(87);
const events = __webpack_require__(614);
const child = __webpack_require__(129);
const path = __webpack_require__(622);
const io = __webpack_require__(1);
const ioUtil = __webpack_require__(672);
const os = __importStar(__webpack_require__(87));
const events = __importStar(__webpack_require__(614));
const child = __importStar(__webpack_require__(129));
const path = __importStar(__webpack_require__(622));
const io = __importStar(__webpack_require__(1));
const ioUtil = __importStar(__webpack_require__(672));
/* eslint-disable @typescript-eslint/unbound-method */
const IS_WINDOWS = process.platform === 'win32';
/*
@@ -804,6 +817,12 @@ class ToolRunner extends events.EventEmitter {
resolve(exitCode);
}
});
if (this.options.input) {
if (!cp.stdin) {
throw new Error('child process missing stdin');
}
cp.stdin.end(this.options.input);
}
});
});
}
@@ -934,6 +953,32 @@ class ExecState extends events.EventEmitter {
/***/ }),
/***/ 82:
/***/ (function(__unusedmodule, exports) {
"use strict";
// We use any as a valid input type
/* eslint-disable @typescript-eslint/no-explicit-any */
Object.defineProperty(exports, "__esModule", { value: true });
/**
* Sanitizes an input into a string so it can be passed into issueCommand safely
* @param input input to sanitize into a string
*/
function toCommandValue(input) {
if (input === null || input === undefined) {
return '';
}
else if (typeof input === 'string' || input instanceof String) {
return input;
}
return JSON.stringify(input);
}
exports.toCommandValue = toCommandValue;
//# sourceMappingURL=utils.js.map
/***/ }),
/***/ 87:
/***/ (function(module) {
@@ -941,6 +986,42 @@ module.exports = require("os");
/***/ }),
/***/ 102:
/***/ (function(__unusedmodule, exports, __webpack_require__) {
"use strict";
// For internal use, subject to change.
var __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];
result["default"] = mod;
return result;
};
Object.defineProperty(exports, "__esModule", { value: true });
// We use any as a valid input type
/* eslint-disable @typescript-eslint/no-explicit-any */
const fs = __importStar(__webpack_require__(747));
const os = __importStar(__webpack_require__(87));
const utils_1 = __webpack_require__(82);
function issueCommand(command, message) {
const filePath = process.env[`GITHUB_${command}`];
if (!filePath) {
throw new Error(`Unable to find environment variable for file command ${command}`);
}
if (!fs.existsSync(filePath)) {
throw new Error(`Missing file at path: ${filePath}`);
}
fs.appendFileSync(filePath, `${utils_1.toCommandValue(message)}${os.EOL}`, {
encoding: 'utf8'
});
}
exports.issueCommand = issueCommand;
//# sourceMappingURL=file-command.js.map
/***/ }),
/***/ 129:
/***/ (function(module) {
@@ -953,43 +1034,97 @@ module.exports = require("child_process");
"use strict";
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];
result["default"] = mod;
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
__setModuleDefault(result, mod);
return result;
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.filterExtensions = exports.parseVersion = exports.getInput = exports.readEnv = void 0;
const core = __importStar(__webpack_require__(470));
/**
* Function to read environment variable and return a string value.
*
* @param property
*/
async function readEnv(property) {
const value = process.env[property];
switch (value) {
case undefined:
return '';
default:
return value;
}
}
exports.readEnv = readEnv;
/**
* Function to get inputs from both with and env annotations.
*
* @param name
* @param mandatory
*/
function getInput(name, mandatory) {
return __awaiter(this, void 0, void 0, function* () {
const input = process.env[name];
switch (input) {
case '':
case undefined:
return core.getInput(name, { required: mandatory });
default:
return input;
}
});
async function getInput(name, mandatory) {
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 '';
}
}
exports.getInput = getInput;
/**
* Function to parse PHP version.
*
* @param version
*/
async function parseVersion(version) {
switch (version) {
case 'latest':
return '7.4';
default:
switch (true) {
case version.length > 1:
return version.slice(0, 3);
default:
return version + '.0';
}
}
}
exports.parseVersion = parseVersion;
/**
* Function to filter extensions
*
* @param extension_csv
*/
async function filterExtensions(extension_csv) {
return extension_csv
.split(',')
.filter(extension => {
return extension.trim()[0] != ':';
})
.join(',');
}
exports.filterExtensions = filterExtensions;
/***/ }),
@@ -1015,6 +1150,7 @@ var __importStar = (this && this.__importStar) || function (mod) {
};
Object.defineProperty(exports, "__esModule", { value: true });
const os = __importStar(__webpack_require__(87));
const utils_1 = __webpack_require__(82);
/**
* Commands
*
@@ -1069,13 +1205,13 @@ class Command {
}
}
function escapeData(s) {
return (s || '')
return utils_1.toCommandValue(s)
.replace(/%/g, '%25')
.replace(/\r/g, '%0D')
.replace(/\n/g, '%0A');
}
function escapeProperty(s) {
return (s || '')
return utils_1.toCommandValue(s)
.replace(/%/g, '%25')
.replace(/\r/g, '%0D')
.replace(/\n/g, '%0A')
@@ -1109,6 +1245,8 @@ var __importStar = (this && this.__importStar) || function (mod) {
};
Object.defineProperty(exports, "__esModule", { value: true });
const command_1 = __webpack_require__(431);
const file_command_1 = __webpack_require__(102);
const utils_1 = __webpack_require__(82);
const os = __importStar(__webpack_require__(87));
const path = __importStar(__webpack_require__(622));
/**
@@ -1131,11 +1269,21 @@ var ExitCode;
/**
* Sets env variable for this action and future actions in the job
* @param name the name of the variable to set
* @param val the value of the variable
* @param val the value of the variable. Non-string values will be converted to a string via JSON.stringify
*/
// eslint-disable-next-line @typescript-eslint/no-explicit-any
function exportVariable(name, val) {
process.env[name] = val;
command_1.issueCommand('set-env', { name }, val);
const convertedVal = utils_1.toCommandValue(val);
process.env[name] = convertedVal;
const filePath = process.env['GITHUB_ENV'] || '';
if (filePath) {
const delimiter = '_GitHubActionsFileCommandDelimeter_';
const commandValue = `${name}<<${delimiter}${os.EOL}${convertedVal}${os.EOL}${delimiter}`;
file_command_1.issueCommand('ENV', commandValue);
}
else {
command_1.issueCommand('set-env', { name }, convertedVal);
}
}
exports.exportVariable = exportVariable;
/**
@@ -1151,7 +1299,13 @@ exports.setSecret = setSecret;
* @param inputPath
*/
function addPath(inputPath) {
command_1.issueCommand('add-path', {}, inputPath);
const filePath = process.env['GITHUB_PATH'] || '';
if (filePath) {
file_command_1.issueCommand('PATH', inputPath);
}
else {
command_1.issueCommand('add-path', {}, inputPath);
}
process.env['PATH'] = `${inputPath}${path.delimiter}${process.env['PATH']}`;
}
exports.addPath = addPath;
@@ -1174,12 +1328,22 @@ exports.getInput = getInput;
* Sets the value of an output.
*
* @param name name of the output to set
* @param value value to store
* @param value value to store. Non-string values will be converted to a string via JSON.stringify
*/
// eslint-disable-next-line @typescript-eslint/no-explicit-any
function setOutput(name, value) {
command_1.issueCommand('set-output', { name }, value);
}
exports.setOutput = setOutput;
/**
* Enables or disables the echoing of commands into stdout for the rest of the step.
* Echoing is disabled by default if ACTIONS_STEP_DEBUG is not set.
*
*/
function setCommandEcho(enabled) {
command_1.issue('echo', enabled ? 'on' : 'off');
}
exports.setCommandEcho = setCommandEcho;
//-----------------------------------------------------------------------
// Results
//-----------------------------------------------------------------------
@@ -1196,6 +1360,13 @@ exports.setFailed = setFailed;
//-----------------------------------------------------------------------
// Logging Commands
//-----------------------------------------------------------------------
/**
* Gets whether Actions Step Debug is on or not
*/
function isDebug() {
return process.env['RUNNER_DEBUG'] === '1';
}
exports.isDebug = isDebug;
/**
* Writes debug message to user log
* @param message debug message
@@ -1206,18 +1377,18 @@ function debug(message) {
exports.debug = debug;
/**
* Adds an error issue
* @param message error issue message
* @param message error issue message. Errors will be converted to string via toString()
*/
function error(message) {
command_1.issue('error', message);
command_1.issue('error', message instanceof Error ? message.toString() : message);
}
exports.error = error;
/**
* Adds an warning issue
* @param message warning issue message
* @param message warning issue message. Errors will be converted to string via toString()
*/
function warning(message) {
command_1.issue('warning', message);
command_1.issue('warning', message instanceof Error ? message.toString() : message);
}
exports.warning = warning;
/**
@@ -1275,8 +1446,9 @@ exports.group = group;
* Saves state for current action, the state can only be retrieved by this action's post job execution.
*
* @param name name of the state to store
* @param value value to store
* @param value value to store. Non-string values will be converted to a string via JSON.stringify
*/
// eslint-disable-next-line @typescript-eslint/no-explicit-any
function saveState(name, value) {
command_1.issueCommand('save-state', { name }, value);
}
@@ -1523,23 +1695,27 @@ function isUnixExecutable(stats) {
"use strict";
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];
result["default"] = mod;
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
__setModuleDefault(result, mod);
return result;
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.run = void 0;
const exec_1 = __webpack_require__(986);
const core = __importStar(__webpack_require__(470));
const path = __importStar(__webpack_require__(622));
@@ -1547,20 +1723,17 @@ const utils = __importStar(__webpack_require__(163));
/**
* Run the script
*/
function run() {
return __awaiter(this, void 0, void 0, function* () {
try {
let version = yield utils.getInput('php-version', true);
version = version.length > 1 ? version.slice(0, 3) : version + '.0';
const extensions = yield utils.getInput('extensions', true);
const key = yield utils.getInput('key', true);
const script_path = path.join(__dirname, '../src/extensions.sh');
yield exec_1.exec('bash ' + script_path + ' "' + extensions + '-' + key + '" ' + version);
}
catch (error) {
core.setFailed(error.message);
}
});
async function run() {
try {
const version = await utils.parseVersion(await utils.getInput('php-version', true));
const extensions = await utils.filterExtensions(await utils.getInput('extensions', true));
const key = await utils.getInput('key', true);
const script_path = path.join(__dirname, '../src/extensions.sh');
await exec_1.exec('bash ' + script_path + ' "' + extensions + '" ' + key + ' ' + version);
}
catch (error) {
core.setFailed(error.message);
}
}
exports.run = run;
// call the run function
@@ -1590,8 +1763,15 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
var __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];
result["default"] = mod;
return result;
};
Object.defineProperty(exports, "__esModule", { value: true });
const tr = __webpack_require__(9);
const tr = __importStar(__webpack_require__(9));
/**
* Exec a command.
* Output will be streamed to the live console.

13201
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@@ -1,6 +1,6 @@
{
"name": "cache-extensions",
"version": "1.0.1",
"version": "1.5.1",
"private": false,
"description": "Cache extensions in GitHub Actions",
"main": "dist/index.js",
@@ -24,31 +24,31 @@
"author": "shivammathur",
"license": "MIT",
"dependencies": {
"@actions/core": "^1.2.2",
"@actions/exec": "^1.0.3"
"@actions/core": "^1.2.6",
"@actions/exec": "^1.0.4"
},
"devDependencies": {
"@types/jest": "^25.1.2",
"@types/node": "^13.7.1",
"@typescript-eslint/eslint-plugin": "^2.19.2",
"@typescript-eslint/parser": "^2.19.2",
"@zeit/ncc": "^0.21.1",
"eslint": "^6.8.0",
"eslint-config-prettier": "^6.10.0",
"eslint-plugin-import": "^2.20.1",
"eslint-plugin-jest": "^23.7.0",
"eslint-plugin-prettier": "^3.1.2",
"husky": "^4.2.3",
"jest": "^25.1.0",
"jest-circus": "^25.1.0",
"prettier": "^1.19.1",
"ts-jest": "^25.2.0",
"typescript": "^3.7.5"
"@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"
},
"husky": {
"skipCI": true,
"hooks": {
"pre-commit": "npm run format && npm run lint && npm run build && npm run release"
"pre-commit": "npm run format && npm run lint && npm run test && npm run build && npm run release"
}
}
}

View File

@@ -1,4 +1,4 @@
import {exec} from '@actions/exec/lib/exec';
import {exec} from '@actions/exec';
import * as core from '@actions/core';
import * as path from 'path';
import * as utils from './utils';
@@ -8,13 +8,16 @@ import * as utils from './utils';
*/
export async function run(): Promise<void> {
try {
let version: string = await utils.getInput('php-version', true);
version = version.length > 1 ? version.slice(0, 3) : version + '.0';
const extensions: string = await utils.getInput('extensions', true);
const version: string = await utils.parseVersion(
await utils.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
'bash ' + script_path + ' "' + extensions + '" ' + key + ' ' + version
);
} catch (error) {
core.setFailed(error.message);

View File

@@ -1,65 +1,219 @@
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() {
apiv=$1
old_versions_linux="5.[4-5]"
if [ "$version" = "5.3" ]; then
echo "/home/runner/php/5.3.29/lib/php/extensions/no-debug-non-zts-$apiv"
elif [[ "$version" =~ $old_versions_linux ]]; then
echo "/usr/lib/php5/$apiv"
elif [ "$version" = "8.0" ]; then
echo "/home/runner/php/8.0/lib/php/extensions/no-debug-non-zts-$apiv"
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/$apiv"
echo "/usr/lib/php/$api_version"
fi
}
darwin_extension_dir() {
apiv=$1
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-$apiv"
echo "/opt/local/lib/php${version/./}/extensions/no-debug-non-zts-$api_version"
else
echo "/usr/local/lib/php/pecl/$apiv"
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_apiv() {
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" ;;
*)
if [ "$version" = "8.0" ]; then
php_h="https://raw.githubusercontent.com/php/php-src/master/main/php.h"
else
semver=$(curl -sSL --retry 5 https://github.com/php/php-src/releases | grep "$flags" "(php-$version.[0-9]+)".zip | head -n 1 | grep "$flags" '[0-9]+\.[0-9]+\.[0-9]+')
php_h="https://raw.githubusercontent.com/php/php-src/PHP-$semver/main/php.h"
fi
curl -sSL --retry 5 "$php_h" | grep "PHP_API_VERSION" | cut -d' ' -f 3
;;
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
}
version=$2
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
flags='-Po'
apiv=$(get_apiv)
dir=$(linux_extension_dir "$apiv")
sudo mkdir -p "$dir" && sudo chown -R "$USER":"$(id -g -n)" "$(dirname "$dir")"
. /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
flags='-Eo'
apiv=$(get_apiv)
dir=$(darwin_extension_dir "$apiv")
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" | openssl dgst -sha256 | cut -d ' ' -f 2)
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"
echo "::set-output name=key::$key"

777
src/lists/bionic-libs Normal file
View File

@@ -0,0 +1,777 @@
lib32gcc1
lib32stdc++6
lib32z1
libaccountsservice0
libacl1
libaio1
libapparmor1
libapr1
libaprutil1
libaprutil1-dbd-sqlite3
libaprutil1-ldap
libapt-inst2.0
libapt-pkg5.0
libarchive13
libargon2-0
libargon2-1
libasan4
libasan5
libasan6
libasn1-8-heimdal
libasound2
libasound2-data
libaspell15
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-160
libbinutils
libbison-dev
libblas-dev
libblas3
libblkid1
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
libcc1-0
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
libcroco3
libcryptsetup12
libcups2
libcurl3-gnutls
libcurl4
libdata-dump-perl
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-export1100
libdns1100
libdpkg-perl
libdrm-amdgpu1
libdrm-common
libdrm-intel1
libdrm-nouveau2
libdrm-radeon1
libdrm2
libdumbnet1
libdw1
libdwarf1
libeatmydata1
libedit2
libefiboot1
libefivar1
libelf1
libenchant1c2a
libencode-locale-perl
libepoxy0
liberror-perl
libestr0
libevent-2.1-6
libevent-core-2.1-6
libevent-pthreads-2.1-6
libexif-dev
libexif12
libexpat1
libexpat1-dev
libext2fs2
libfakeroot
libfastjson4
libfbclient2
libfcgi-perl
libfdisk1
libffi-dev
libffi6
libfftw3-double3
libfile-basedir-perl
libfile-desktopentry-perl
libfile-listing-perl
libfile-mimeinfo-perl
libfont-afm-perl
libfontconfig1
libfontconfig1-dev
libfontenc1
libfreetype6
libfreetype6-dev
libfribidi0
libfuse2
libgbm-dev
libgbm1
libgc1c2
libgcc-10-dev
libgcc-7-dev
libgcc-8-dev
libgcc-9-dev
libgcc-s1
libgcc1
libgconf-2-4
libgcrypt20
libgd3
libgdbm-compat4
libgdbm5
libgdiplus
libgdk-pixbuf2.0-0
libgdk-pixbuf2.0-common
libgdk-pixbuf2.0-dev
libgeoip1
libgflags2.2
libgfortran-10-dev
libgfortran-7-dev
libgfortran-8-dev
libgfortran-9-dev
libgfortran4
libgfortran5
libgif7
libgirepository-1.0-1
libgl1
libgl1-mesa-dri
libglade2-0
libglade2.0-cil
libglapi-mesa
libglib2.0-0
libglib2.0-bin
libglib2.0-cil
libglib2.0-data
libglib2.0-dev
libglib2.0-dev-bin
libglvnd0
libglx-mesa0
libglx0
libgmp-dev
libgmp10
libgmpxx4ldbl
libgnutls30
libgomp1
libgoogle-glog0v5
libgpg-error0
libgpgme11
libgpm2
libgraphite2-3
libgraphite2-dev
libgsl-dev
libgsl23
libgslcblas0
libgssapi-krb5-2
libgssapi3-heimdal
libgtk-3-0
libgtk-3-common
libgtk2.0-0
libgtk2.0-cil
libgtk2.0-common
libharfbuzz-dev
libharfbuzz-gobject0
libharfbuzz-icu0
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.6-0
libhx509-5-heimdal
libice-dev
libice6
libicu-dev
libicu-le-hb-dev
libicu-le-hb0
libicu60
libicu65
libiculx60
libidn11
libidn2-0
libilmbase-dev
libilmbase12
libio-html-perl
libio-socket-ssl-perl
libip4tc0
libip6tc0
libipc-system-simple-perl
libiptc0
libirs160
libisc-export169
libisc169
libisccc160
libisccfg160
libisl19
libisns0
libisoburn1
libisofs6
libitm1
libjansson4
libjbig-dev
libjbig0
libjpeg-dev
libjpeg-turbo8
libjpeg-turbo8-dev
libjpeg8
libjpeg8-dev
libjq1
libjs-jquery
libjson-c3
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
libldap-common
libldb1
liblldb-6.0
liblldb-8
liblldb-9
libllvm10
libllvm6.0
libllvm8
libllvm9
liblmdb0
liblocale-gettext-perl
liblqr-1-0
liblqr-1-0-dev
liblsan0
libltdl-dev
libltdl7
liblttng-ust-ctl4
liblttng-ust0
liblua5.2-0
liblvm2app2.2
liblvm2cmd2.02
liblwp-mediatypes-perl
liblwp-protocol-https-perl
liblwres160
liblxc-common
liblxc1
liblz4-1
liblzma-dev
liblzma5
liblzo2-2
libmagic-dev
libmagic-mgc
libmagic1
libmagickcore-6-arch-config
libmagickcore-6-headers
libmagickcore-6.q16-3
libmagickcore-6.q16-3-extra
libmagickcore-6.q16-dev
libmagickcore-dev
libmagickwand-6-headers
libmagickwand-6.q16-3
libmagickwand-6.q16-dev
libmagickwand-dev
libmailtools-perl
libmcrypt4
libmediainfo0v5
libmemcached11
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
libmpfr6
libmpx2
libmspack0
libmysqlclient-dev
libmysqlclient20
libncurses5
libncurses5-dev
libncursesw5
libnet-dbus-perl
libnet-http-perl
libnet-smtp-ssl-perl
libnet-ssleay-perl
libnet1
libnetfilter-conntrack3
libnetplan0
libnettle6
libnewt0.52
libnfnetlink0
libnghttp2-14
libnginx-mod-http-geoip
libnginx-mod-http-image-filter
libnginx-mod-http-xslt-filter
libnginx-mod-mail
libnginx-mod-stream
libnih1
libnl-3-200
libnl-genl-3-200
libnorm1
libnotify4
libnpth0
libnspr4
libnss-systemd
libnss3
libntfs-3g88
libnuma1
libobjc-7-dev
libobjc4
libodbc1
libogg0
libomp-9-dev
libomp5-9
libonig4
libopenexr-dev
libopenexr22
libp11-kit0
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
libparted2
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.26
libpfm4
libpgm-5.2-0
libpipeline1
libpixman-1-0
libpixman-1-dev
libplymouth4
libpng-dev
libpng16-16
libpolkit-agent-1-0
libpolkit-backend-1-0
libpolkit-gobject-1-0
libpopt0
libpq-dev
libpq5
libprocps6
libprotobuf-c1
libprotobuf10
libproxy1v5
libpsl5
libpthread-stubs0-dev
libpython-dev
libpython-stdlib
libpython2.7
libpython2.7-dev
libpython2.7-minimal
libpython2.7-stdlib
libpython3-dev
libpython3-stdlib
libpython3.6
libpython3.6-dev
libpython3.6-minimal
libpython3.6-stdlib
libqdbm14
libquadmath0
librabbitmq4
libre2-4
libreadline-dev
libreadline5
libreadline7
librecode0
librest-0.7-0
libroken18-heimdal
librpm8
librpmbuild8
librpmio8
librpmsign8
librsvg2-2
librsvg2-common
librsvg2-dev
librtmp1
libruby2.5
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
libssl-dev
libssl1.0.0
libssl1.1
libstdc++-10-dev
libstdc++-7-dev
libstdc++-8-dev
libstdc++-9-dev
libstdc++6
libstemmer0d
libsvn1
libsybdb5
libsystemd0
libtalloc2
libtasn1-6
libtbb2
libtcl8.6
libtdb1
libtevent0
libtext-charwidth-perl
libtext-iconv-perl
libtext-unidecode-perl
libtext-wrapi18n-perl
libthai-data
libthai0
libtidy5deb1
libtie-ixhash-perl
libtiff-dev
libtiff5
libtiff5-dev
libtiffxx5
libtimedate-perl
libtinfo-dev
libtinfo5
libtinyxml2-6
libtk8.6
libtommath1
libtool
libtry-tiny-perl
libtsan0
libu2f-udev
libubsan0
libubsan1
libucl1
libudev1
libunistring2
libunwind8
liburcu6
liburi-perl
libusb-1.0-0
libutempter0
libuuid1
libuv1
libvorbis0a
libvorbisfile3
libvpx5
libvulkan1
libwayland-client0
libwayland-cursor0
libwayland-egl1
libwayland-server0
libwbclient0
libwebp6
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
libxcb1
libxcb1-dev
libxcomposite1
libxcursor1
libxdamage1
libxdmcp-dev
libxdmcp6
libxext-dev
libxext6
libxfixes3
libxfont2
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
libxtables12
libxtst6
libxv1
libxxf86dga1
libxxf86vm1
libyajl2
libyaml-0-2
libzen0v5
libzip4
libzmq5
libzstd1
python3-oauthlib

785
src/lists/focal-libs Normal file
View File

@@ -0,0 +1,785 @@
lib32gcc-s1
lib32stdc++6
lib32z1
libaccountsservice0
libacl1
libaio1
libapparmor1
libappstream4
libapr1
libaprutil1
libaprutil1-dbd-sqlite3
libaprutil1-ldap
libapt-pkg6.0
libarchive13
libargon2-1
libaria2-0
libasan4
libasan5
libasan6
libasn1-8-heimdal
libasound2
libasound2-data
libaspell15
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
libbinutils
libblas-dev
libblas3
libblkid-dev
libblkid1
libboost-context1.71.0
libboost-filesystem1.71.0
libboost-program-options1.71.0
libboost-thread1.71.0
libbrotli1
libbsd0
libburn4
libbz2-1.0
libbz2-dev
libc++-10-dev
libc++-dev
libc++1-10
libc++abi-10-dev
libc++abi-dev
libc++abi1-10
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
libcbor0.6
libcc1-0
libcgi-fast-perl
libcgi-pm-perl
libcgroup1
libcilkrts5
libclang-common-10-dev
libclang-common-8-dev
libclang-common-9-dev
libclang-cpp10
libclang-cpp9
libclang1-10
libclang1-8
libcolord2
libcom-err2
libcrypt-dev
libcrypt1
libcryptsetup12
libctf-nobfd0
libctf0
libcups2
libcurl3-gnutls
libcurl4
libdata-dump-perl
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-export1109
libdpkg-perl
libdrm-amdgpu1
libdrm-common
libdrm-intel1
libdrm-nouveau2
libdrm-radeon1
libdrm2
libdw1
libdwarf1
libeatmydata1
libedit2
libefiboot1
libefivar1
libelf1
libenchant-2-2
libencode-locale-perl
libepoxy0
liberror-perl
libestr0
libevent-2.1-7
libevent-core-2.1-7
libevent-pthreads-2.1-7
libexif-dev
libexif12
libexpat1
libexpat1-dev
libext2fs2
libfakeroot
libfastjson4
libfbclient2
libfcgi-perl
libfdisk1
libffi-dev
libffi7
libfftw3-double3
libfido2-1
libfile-basedir-perl
libfile-desktopentry-perl
libfile-listing-perl
libfile-mimeinfo-perl
libfl2
libfont-afm-perl
libfontconfig1
libfontconfig1-dev
libfontenc1
libfreetype-dev
libfreetype6
libfreetype6-dev
libfribidi0
libfuse2
libfuse3-3
libfwupd2
libfwupdplugin1
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
libgcrypt20
libgd3
libgdbm-compat4
libgdbm6
libgdiplus
libgdk-pixbuf2.0-0
libgdk-pixbuf2.0-bin
libgdk-pixbuf2.0-common
libgdk-pixbuf2.0-dev
libgflags2.2
libgfortran-10-dev
libgfortran-8-dev
libgfortran-9-dev
libgfortran5
libgif7
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
libgoogle-glog0v5
libgpg-error0
libgpgme11
libgpm2
libgraphite2-3
libgsl-dev
libgsl23
libgslcblas0
libgssapi-krb5-2
libgssapi3-heimdal
libgstreamer1.0-0
libgtk-3-0
libgtk-3-common
libgudev-1.0-0
libgusb2
libharfbuzz0b
libhavege1
libhcrypto4-heimdal
libheimbase1-heimdal
libheimntlm0-heimdal
libhogweed5
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
libhx509-5-heimdal
libice-dev
libice6
libicu-dev
libicu66
libidn11
libidn2-0
libilmbase-dev
libilmbase24
libio-html-perl
libio-socket-ssl-perl
libio-stringy-perl
libip4tc2
libip6tc2
libipc-system-simple-perl
libisc-export1105
libisl22
libisns0
libisoburn1
libisofs6
libitm1
libjansson4
libjbig-dev
libjbig0
libjemalloc2
libjpeg-dev
libjpeg-turbo8
libjpeg-turbo8-dev
libjpeg8
libjpeg8-dev
libjq1
libjs-jquery
libjs-xmlextras
libjson-c4
libjson-glib-1.0-0
libjson-glib-1.0-common
libjte2
libk5crypto3
libkeyutils1
libklibc
libkmod2
libkrb5-26-heimdal
libkrb5-3
libkrb5support0
libksba8
liblapack-dev
liblapack3
liblcms2-2
liblcms2-dev
libldap-2.4-2
libldap-common
liblldb-10
liblldb-8
liblldb-9
libllvm10
libllvm11
libllvm8
libllvm9
liblmdb0
liblocale-gettext-perl
liblqr-1-0
liblqr-1-0-dev
liblsan0
libltdl-dev
libltdl7
liblttng-ust-ctl4
liblttng-ust0
liblua5.2-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
libmcrypt4
libmecab2
libmediainfo0v5
libmemcached11
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
libmount-dev
libmount1
libmpc3
libmpdec2
libmpfr6
libmpx2
libmspack0
libmysqlclient-dev
libmysqlclient21
libncurses-dev
libncurses5
libncurses6
libncursesw5
libncursesw6
libnet-dbus-perl
libnet-http-perl
libnet-smtp-ssl-perl
libnet-ssleay-perl
libnet1
libnetfilter-conntrack3
libnetplan0
libnettle7
libnewt0.52
libnfnetlink0
libnftnl11
libnghttp2-14
libnginx-mod-http-image-filter
libnginx-mod-http-xslt-filter
libnginx-mod-mail
libnginx-mod-stream
libnl-3-200
libnorm1
libnotify4
libnpth0
libnspr4
libnss-systemd
libnss3
libntfs-3g883
libnuma1
libobjc-8-dev
libobjc-9-dev
libobjc4
libodbc1
libogg0
libomp-10-dev
libomp5-10
libonig5
libopenexr-dev
libopenexr24
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
libparted2
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.30
libpfm4
libpgm-5.2-0
libpipeline1
libpixman-1-0
libpixman-1-dev
libplymouth5
libpng-dev
libpng16-16
libpolkit-agent-1-0
libpolkit-gobject-1-0
libpopt0
libpq-dev
libpq5
libprocps8
libprotobuf-c1
libprotobuf17
libproxy1v5
libpsl5
libpthread-stubs0-dev
libpython2-stdlib
libpython2.7-minimal
libpython2.7-stdlib
libpython3-dev
libpython3-stdlib
libpython3.8
libpython3.8-dev
libpython3.8-minimal
libpython3.8-stdlib
libqdbm14
libquadmath0
librabbitmq4
libre2-5
libreadline-dev
libreadline5
libreadline8
librest-0.7-0
libroken18-heimdal
librpm8
librpmbuild8
librpmio8
librpmsign8
librsvg2-2
librsvg2-common
librsvg2-dev
librtmp1
libruby2.7
libsasl2-2
libsasl2-modules
libsasl2-modules-db
libsctp1
libseccomp2
libsecret-1-0
libsecret-1-dev
libsecret-common
libselinux1
libselinux1-dev
libsemanage-common
libsemanage1
libsensors-config
libsensors5
libsepol1
libsepol1-dev
libserf-1-1
libsgutils2-2
libsigsegv2
libslang2
libsm-dev
libsm6
libsmartcols1
libsmbios-c2
libsnmp-base
libsnmp35
libsodium23
libsoup-gnome2.4-1
libsoup2.4-1
libsqlite3-0
libsqlite3-dev
libss2
libssh-4
libssh2-1
libssl-dev
libssl1.1
libstdc++-10-dev
libstdc++-7-dev
libstdc++-8-dev
libstdc++-9-dev
libstdc++6
libstemmer0d
libsvn1
libsybdb5
libsystemd0
libtalloc2
libtasn1-6
libtbb2
libtcl8.6
libtdb1
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
libtinfo5
libtinfo6
libtinyxml2-6a
libtk8.6
libtommath1
libtool
libtry-tiny-perl
libtsan0
libtss2-esys0
libu2f-udev
libubsan0
libubsan1
libuchardet0
libucl1
libudev1
libunistring2
libunwind8
liburcu6
liburi-perl
libusb-1.0-0
libutempter0
libutf8proc2
libuuid1
libuv1
libvorbis0a
libvorbisfile3
libvpx6
libvulkan1
libwayland-client0
libwayland-cursor0
libwayland-egl1
libwayland-server0
libwbclient0
libwebp6
libwebpmux3
libwind0-heimdal
libwmf-dev
libwmf0.2-7
libwrap0
libwww-perl
libwww-robotrules-perl
libwxbase3.0-0v5
libwxgtk3.0-gtk3-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
libxext-dev
libxext6
libxfixes3
libxfont2
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
libxmlb1
libxmlrpc-epi0
libxmlsec1
libxmlsec1-openssl
libxmu6
libxmuu1
libxpm4
libxrandr2
libxrender-dev
libxrender1
libxshmfence1
libxslt1.1
libxss1
libxt-dev
libxt6
libxtables12
libxtst6
libxv1
libxxf86dga1
libxxf86vm1
libyajl2
libyaml-0-2
libz3-4
libz3-dev
libzen0v5
libzip4
libzmq5
libzstd1
python3-launchpadlib
python3-oauthlib
python3-wadllib

754
src/lists/xenial-libs Normal file
View File

@@ -0,0 +1,754 @@
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

View File

@@ -1,6 +1,21 @@
import * as fs from 'fs';
import * as core from '@actions/core';
/**
* Function to read environment variable and return a string value.
*
* @param property
*/
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.
*
@@ -11,12 +26,49 @@ export async function getInput(
name: string,
mandatory: boolean
): Promise<string> {
const input = process.env[name];
switch (input) {
case '':
case undefined:
return core.getInput(name, {required: mandatory});
default:
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';
}
}
}
/**
* Function to filter extensions
*
* @param extension_csv
*/
export async function filterExtensions(extension_csv: string): Promise<string> {
return extension_csv
.split(',')
.filter(extension => {
return extension.trim()[0] != ':';
})
.join(',');
}

View File

@@ -2,7 +2,7 @@
"compilerOptions": {
/* Basic Options */
// "incremental": true, /* Enable incremental compilation */
"target": "es6", /* Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017', 'ES2018', 'ES2019' or 'ESNEXT'. */
"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. */