Compare commits

...

5 Commits

Author SHA1 Message Date
Lovell Fuller
946976ba8f Prerelease 0.33.0-alpha.6 2023-10-09 10:46:16 +01:00
Lovell Fuller
29a83250a4 CI: Add smoke test for npm-published package
These tests will fail on their first run as a tag will exist but
the matching packages will not yet have been published.

The workflow can be manually re-run after publishing to npm.

Eventually, when there's some form of automated publishing, this
logic can become part of the post-publish checks.
2023-10-09 07:59:47 +01:00
Lovell Fuller
3f54ef7525 Remove extraneous rpath
The sharp.node shared library should now always end up being
nested either 3 subdirectories deep into the package root or exist
within same namespace of the node_modules tree.
2023-10-09 07:58:14 +01:00
Lovell Fuller
4dc2467f49 CI: simplify prebuild file copying 2023-10-08 23:07:02 +01:00
Lovell Fuller
f54ceb0973 CI: create prebuilds in src directory 2023-10-08 21:49:58 +01:00
14 changed files with 105 additions and 26 deletions

View File

@@ -42,7 +42,7 @@ jobs:
sudo docker exec sharp sh -c "npm run clean"
sudo docker exec sharp sh -c "npm install --ignore-scripts"
sudo docker exec sharp sh -c "npm test"
- run: "[[ -n $CIRCLE_TAG ]] && sudo docker exec --env prebuild_upload sharp sh -c \"npx prebuild --upload=$prebuild_upload\" || true"
- run: "[[ -n $CIRCLE_TAG ]] && sudo docker exec --env prebuild_upload sharp sh -c \"cd src && ln -s ../package.json && npx prebuild --upload=$prebuild_upload\" || true"
linux-arm64-glibc-node-20:
resource_class: arm.medium
machine:
@@ -83,7 +83,7 @@ jobs:
sudo docker exec sharp sh -c "npm run clean"
sudo docker exec sharp sh -c "npm install --ignore-scripts"
sudo docker exec sharp sh -c "npm test"
- run: "[[ -n $CIRCLE_TAG ]] && sudo docker exec --env prebuild_upload sharp sh -c \"npx prebuild --upload=$prebuild_upload\" || true"
- run: "[[ -n $CIRCLE_TAG ]] && sudo docker exec --env prebuild_upload sharp sh -c \"cd src && ln -s ../package.json && npx prebuild --upload=$prebuild_upload\" || true"
linux-arm64-musl-node-20:
resource_class: arm.medium
machine:

View File

@@ -114,7 +114,10 @@ jobs:
if: matrix.prebuild && startsWith(github.ref, 'refs/tags/')
env:
prebuild_upload: ${{ secrets.GITHUB_TOKEN }}
run: npx prebuild
run: |
node -e "require('fs').cpSync('package.json', 'src/package.json')"
cd src
npx prebuild
github-runner-qemu:
permissions:
contents: write
@@ -142,7 +145,7 @@ jobs:
npm run clean
npm install --ignore-scripts
npx mocha --no-config --spec=test/unit/io.js --timeout=30000
[[ -n $prebuild_upload ]] && npx prebuild || true
[[ -n $prebuild_upload ]] && cd src && ln -s ../package.json && npx prebuild || true
macstadium-runner:
permissions:
contents: write
@@ -187,4 +190,4 @@ jobs:
if: matrix.prebuild && startsWith(github.ref, 'refs/tags/')
env:
prebuild_upload: ${{ secrets.GITHUB_TOKEN }}
run: npx prebuild
run: cd src && ln -s ../package.json && npx prebuild

78
.github/workflows/npm.yml vendored Normal file
View File

@@ -0,0 +1,78 @@
name: "npm release smoke test"
on:
push:
tags:
- "v**"
permissions: {}
jobs:
release-smoke-test:
name: "${{ github.ref }} ${{ matrix.name }}"
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
include:
- name: linux-x64
os: ubuntu-22.04
- name: darwin-x64
os: macos-11
- name: win32-x64
os: windows-2019
steps:
- name: Install Node.js
uses: actions/setup-node@v3
with:
node-version: 20
- name: Install Deno
uses: denoland/setup-deno@v1
with:
deno-version: v1.x
- name: Install Bun
if: ${{ !contains(matrix.os, 'windows') }}
uses: oven-sh/setup-bun@v1
with:
bun-version: latest
- name: Version
id: version
uses: actions/github-script@v6
with:
script: |
core.setOutput('semver', context.ref.replace('refs/tags/v',''))
- name: Create package.json
uses: DamianReeves/write-file-action@v1
with:
path: package.json
contents: |
{
"dependencies": {
"sharp": "${{ steps.version.outputs.semver }}"
}
}
- name: Create release.mjs
uses: DamianReeves/write-file-action@v1
with:
path: release.mjs
contents: |
import { createRequire } from 'node:module';
import { deepStrictEqual } from 'node:assert';
const require = createRequire(import.meta.url);
const sharp = require('sharp');
deepStrictEqual(['.jpg', '.jpeg', '.jpe'], sharp.format.jpeg.input.fileSuffix);
- name: Run with Node.js
run: |
npm install --ignore-scripts
node release.mjs
- name: Run with Deno
run: deno run --allow-read --allow-ffi release.mjs
- name: Run with Bun
if: ${{ !contains(matrix.os, 'windows') }}
run: |
bun install --ignore-scripts
bun release.mjs

View File

@@ -1,6 +1,6 @@
{
"name": "@sharpen/sharp-darwin-arm64",
"version": "0.0.1-alpha.5",
"version": "0.0.1-alpha.6",
"description": "Prebuilt sharp for use with macOS ARM64",
"homepage": "https://sharp.pixelplumbing.com",
"repository": {

View File

@@ -1,6 +1,6 @@
{
"name": "@sharpen/sharp-darwin-x64",
"version": "0.0.1-alpha.5",
"version": "0.0.1-alpha.6",
"description": "Prebuilt sharp for use with macOS x64",
"homepage": "https://sharp.pixelplumbing.com",
"repository": {

View File

@@ -1,6 +1,6 @@
{
"name": "@sharpen/sharp-linux-arm",
"version": "0.0.1-alpha.5",
"version": "0.0.1-alpha.6",
"description": "Prebuilt sharp for use with Linux (glibc) ARM (32-bit)",
"homepage": "https://sharp.pixelplumbing.com",
"repository": {

View File

@@ -1,6 +1,6 @@
{
"name": "@sharpen/sharp-linux-arm64",
"version": "0.0.1-alpha.5",
"version": "0.0.1-alpha.6",
"description": "Prebuilt sharp for use with Linux (glibc) ARM64",
"homepage": "https://sharp.pixelplumbing.com",
"repository": {

View File

@@ -1,6 +1,6 @@
{
"name": "@sharpen/sharp-linux-x64",
"version": "0.0.1-alpha.5",
"version": "0.0.1-alpha.6",
"description": "Prebuilt sharp for use with Linux (glibc) x64",
"homepage": "https://sharp.pixelplumbing.com",
"repository": {

View File

@@ -1,6 +1,6 @@
{
"name": "@sharpen/sharp-linuxmusl-arm64",
"version": "0.0.1-alpha.5",
"version": "0.0.1-alpha.6",
"description": "Prebuilt sharp for use with Linux (musl) ARM64",
"homepage": "https://sharp.pixelplumbing.com",
"repository": {

View File

@@ -1,6 +1,6 @@
{
"name": "@sharpen/sharp-linuxmusl-x64",
"version": "0.0.1-alpha.5",
"version": "0.0.1-alpha.6",
"description": "Prebuilt sharp for use with Linux (musl) x64",
"homepage": "https://sharp.pixelplumbing.com",
"repository": {

View File

@@ -1,6 +1,6 @@
{
"name": "@sharpen/sharp-win32-ia32",
"version": "0.0.1-alpha.5",
"version": "0.0.1-alpha.6",
"description": "Prebuilt sharp for use with Windows x86 (32-bit)",
"homepage": "https://sharp.pixelplumbing.com",
"repository": {

View File

@@ -1,6 +1,6 @@
{
"name": "@sharpen/sharp-win32-x64",
"version": "0.0.1-alpha.5",
"version": "0.0.1-alpha.6",
"description": "Prebuilt sharp for use with Windows x64",
"homepage": "https://sharp.pixelplumbing.com",
"repository": {

View File

@@ -1,7 +1,7 @@
{
"name": "sharp",
"description": "High performance Node.js image processing, the fastest module to resize JPEG, PNG, WebP, GIF, AVIF and TIFF images",
"version": "0.33.0-alpha.5",
"version": "0.33.0-alpha.6",
"author": "Lovell Fuller <npm@lovell.info>",
"homepage": "https://github.com/lovell/sharp",
"contributors": [
@@ -139,8 +139,8 @@
"semver": "^7.5.4"
},
"optionalDependencies": {
"@sharpen/sharp-darwin-arm64": "0.0.1-alpha.5",
"@sharpen/sharp-darwin-x64": "0.0.1-alpha.5",
"@sharpen/sharp-darwin-arm64": "0.0.1-alpha.6",
"@sharpen/sharp-darwin-x64": "0.0.1-alpha.6",
"@sharpen/sharp-libvips-darwin-arm64": "0.0.1-alpha.2",
"@sharpen/sharp-libvips-darwin-x64": "0.0.1-alpha.2",
"@sharpen/sharp-libvips-linux-arm": "0.0.1-alpha.2",
@@ -148,13 +148,13 @@
"@sharpen/sharp-libvips-linux-x64": "0.0.1-alpha.2",
"@sharpen/sharp-libvips-linuxmusl-arm64": "0.0.1-alpha.2",
"@sharpen/sharp-libvips-linuxmusl-x64": "0.0.1-alpha.2",
"@sharpen/sharp-linux-arm": "0.0.1-alpha.5",
"@sharpen/sharp-linux-arm64": "0.0.1-alpha.5",
"@sharpen/sharp-linux-x64": "0.0.1-alpha.5",
"@sharpen/sharp-linuxmusl-arm64": "0.0.1-alpha.5",
"@sharpen/sharp-linuxmusl-x64": "0.0.1-alpha.5",
"@sharpen/sharp-win32-ia32": "0.0.1-alpha.5",
"@sharpen/sharp-win32-x64": "0.0.1-alpha.5"
"@sharpen/sharp-linux-arm": "0.0.1-alpha.6",
"@sharpen/sharp-linux-arm64": "0.0.1-alpha.6",
"@sharpen/sharp-linux-x64": "0.0.1-alpha.6",
"@sharpen/sharp-linuxmusl-arm64": "0.0.1-alpha.6",
"@sharpen/sharp-linuxmusl-x64": "0.0.1-alpha.6",
"@sharpen/sharp-win32-ia32": "0.0.1-alpha.6",
"@sharpen/sharp-win32-x64": "0.0.1-alpha.6"
},
"devDependencies": {
"@sharpen/sharp-libvips-dev": "0.0.1-alpha.2",

View File

@@ -154,7 +154,6 @@
'OTHER_LDFLAGS': [
# Ensure runtime linking is relative to sharp.node
'-Wl,-rpath,\'@loader_path/../../sharp-libvips-<(platform_and_arch)/lib\'',
'-Wl,-rpath,\'@loader_path/../../node_modules/@sharpen/sharp-libvips-<(platform_and_arch)/lib\'',
'-Wl,-rpath,\'@loader_path/../../../node_modules/@sharpen/sharp-libvips-<(platform_and_arch)/lib\''
]
}
@@ -175,7 +174,6 @@
'-Wl,-s',
'-Wl,--disable-new-dtags',
'-Wl,-rpath=\'$$ORIGIN/../../sharp-libvips-<(platform_and_arch)/lib\'',
'-Wl,-rpath=\'$$ORIGIN/../../node_modules/@sharpen/sharp-libvips-<(platform_and_arch)/lib\'',
'-Wl,-rpath=\'$$ORIGIN/../../../node_modules/@sharpen/sharp-libvips-<(platform_and_arch)/lib\''
]
}