You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

2.4 KiB

libsecp256k1 Deployment Guide

All build scripts have been updated to ensure libsecp256k1.so is placed next to the executable.

Updated Scripts

1. GitHub Actions (.github/workflows/go.yml)

  • Build job: Installs libsecp256k1 from source, enables CGO
  • Release job: Builds with CGO, copies libsecp256k1.so to release-binaries/
  • Both the binary and library are included in releases

2. Deployment Script (scripts/deploy.sh)

  • Builds with CGO_ENABLED=1
  • Copies pkg/crypto/p8k/libsecp256k1.so next to the binary
  • Installs both binary and library to $GOBIN/

3. Benchmark Script (scripts/benchmark.sh)

  • Builds benchmark binary with CGO_ENABLED=1
  • Copies library to cmd/benchmark/ directory

4. Profile Script (cmd/benchmark/profile.sh)

  • Builds relay with CGO_ENABLED=1
  • Copies library next to relay binary
  • Copies library to benchmark run directory

5. Test Deploy Script (scripts/test-deploy-local.sh)

  • Tests build with CGO_ENABLED=1
  • Verifies library is copied correctly

Runtime Requirements

The library will be found automatically if:

  1. It's in the same directory as the executable
  2. It's in a standard library path (/usr/local/lib, /usr/lib)
  3. LD_LIBRARY_PATH includes the directory containing it

Distribution

When distributing binaries, include both:

  • orly (or other binary name)
  • libsecp256k1.so

Users can run with:

./orly

Or explicitly set the library path:

LD_LIBRARY_PATH=. ./orly

Building from Source

All scripts automatically handle the library placement:

# Deploy to production
./scripts/deploy.sh

# Build for local testing
CGO_ENABLED=1 go build -o orly .
cp pkg/crypto/p8k/libsecp256k1.so .

Test Scripts Updated

All test scripts now ensure libsecp256k1.so is available:

Test Scripts

  • scripts/runtests.sh - Sets CGO_ENABLED=1 and LD_LIBRARY_PATH
  • scripts/test.sh - Sets CGO_ENABLED=1 and LD_LIBRARY_PATH
  • scripts/test_policy.sh - Sets CGO_ENABLED=1 and LD_LIBRARY_PATH
  • scripts/test-managed-acl.sh - Sets CGO_ENABLED=1 and LD_LIBRARY_PATH
  • scripts/test-workflow-local.sh - Matches GitHub Actions with CGO enabled

Docker Files

  • cmd/benchmark/Dockerfile.next-orly - Copies libsecp256k1.so to /app/
  • cmd/benchmark/Dockerfile.benchmark - Builds and includes libsecp256k1

All test environments now have access to libsecp256k1.so for CGO-based cryptographic operations.