Skip to content

Commit

Permalink
feat: Fix rocksdb on arm (#97)
Browse files Browse the repository at this point in the history
* switch to @farcasterxyz/rocksdb

* update rocksdb in node package

* fix typeroots

* fix broken dependency & rebuild bcrypto

* chore(release): 1.0.4-alpha
  • Loading branch information
0xSulpiride authored Oct 5, 2023
1 parent e345246 commit 0522a07
Show file tree
Hide file tree
Showing 17 changed files with 184 additions and 47 deletions.
4 changes: 3 additions & 1 deletion Dockerfile
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
FROM node:18-alpine as build_src
FROM --platform=${BUILDPLATFORM:-amd64} node:18-alpine as build_src
WORKDIR /usr/app
RUN apk update && apk add --no-cache g++ make python3 && rm -rf /var/cache/apk/*

Expand All @@ -18,6 +18,8 @@ COPY --from=build_src /usr/app .
RUN yarn install --non-interactive --frozen-lockfile --production --force
RUN npx [email protected] bootstrap --ignore-scripts -- --production --no-optional

RUN cd node_modules/bcrypto && yarn install

FROM node:18-alpine
WORKDIR /usr/app
COPY --from=build_deps /usr/app .
Expand Down
2 changes: 1 addition & 1 deletion lerna.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
],
"npmClient": "yarn",
"useWorkspaces": true,
"version": "1.0.3-alpha",
"version": "1.0.4-alpha",
"stream": "true",
"command": {
"version": {
Expand Down
7 changes: 6 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"name": "root",
"private": true,
"version": "1.0.3-alpha",
"version": "1.0.4-alpha",
"engines": {
"node": ">=18.0.0"
},
Expand All @@ -17,7 +17,12 @@
"release:publish": "lerna publish from-package --yes --no-verify-access",
"release:docker": "exit 0"
},
"dependencies": {
"abstract-leveldown": "7.2.0",
"lru-cache": "^6.0.0"
},
"devDependencies": {
"@types/abstract-leveldown": "7.2.1",
"@types/compression": "1.7.2",
"@types/jest": "29.2.3",
"@types/node": "18.11.9",
Expand Down
6 changes: 3 additions & 3 deletions packages/api/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "api",
"version": "1.0.3-alpha",
"version": "1.0.4-alpha",
"description": "The API module of Etherspot bundler client",
"author": "Etherspot",
"homepage": "https://https://github.com/etherspot/skandha#readme",
Expand Down Expand Up @@ -35,12 +35,12 @@
"class-transformer": "0.5.1",
"class-validator": "0.14.0",
"ethers": "5.7.2",
"executor": "1.0.3-alpha",
"executor": "1.0.4-alpha",
"fastify": "4.14.1",
"pino": "8.11.0",
"pino-pretty": "10.0.0",
"reflect-metadata": "0.1.13",
"types": "1.0.3-alpha"
"types": "1.0.4-alpha"
},
"devDependencies": {
"@types/connect": "3.4.35"
Expand Down
12 changes: 6 additions & 6 deletions packages/cli/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "cli",
"version": "1.0.3-alpha",
"version": "1.0.4-alpha",
"description": "> TODO: description",
"author": "zincoshine <[email protected]>",
"homepage": "https://https://github.com/etherspot/skandha#readme",
Expand Down Expand Up @@ -38,14 +38,14 @@
"@libp2p/peer-id-factory": "2.0.1",
"@libp2p/prometheus-metrics": "1.1.3",
"@multiformats/multiaddr": "12.1.3",
"api": "1.0.3-alpha",
"db": "1.0.3-alpha",
"executor": "1.0.3-alpha",
"api": "1.0.4-alpha",
"db": "1.0.4-alpha",
"executor": "1.0.4-alpha",
"find-up": "5.0.0",
"got": "12.5.3",
"js-yaml": "4.1.0",
"node": "1.0.3-alpha",
"types": "1.0.3-alpha",
"node": "1.0.4-alpha",
"types": "1.0.4-alpha",
"yargs": "17.6.2"
},
"devDependencies": {
Expand Down
6 changes: 3 additions & 3 deletions packages/db/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "db",
"version": "1.0.3-alpha",
"version": "1.0.4-alpha",
"description": "The DB module of Etherspot bundler client",
"author": "Etherspot",
"homepage": "https://github.com/etherspot/etherspot-bundler#readme",
Expand Down Expand Up @@ -32,8 +32,8 @@
},
"dependencies": {
"@chainsafe/ssz": "0.10.1",
"rocksdb": "5.2.1",
"types": "1.0.3-alpha"
"@farcaster/rocksdb": "5.5.0",
"types": "1.0.4-alpha"
},
"devDependencies": {
"@types/rocksdb": "3.0.1",
Expand Down
2 changes: 1 addition & 1 deletion packages/db/src/rocksDb.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import path from "node:path";
import rocks from "rocksdb";
import rocks from "@farcaster/rocksdb";
// eslint-disable-next-line import/no-extraneous-dependencies
import { IDbController } from "types/lib";

Expand Down
9 changes: 7 additions & 2 deletions packages/db/tsconfig.build.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,11 @@
"include": ["src"],
"compilerOptions": {
"outDir": "lib",
"typeRoots": ["../../node_modules/@types", "./node_modules/@types", "../../types"]
}
"typeRoots": [
"../../types",
"../../node_modules/@types",
"./node_modules/@types",
]
},
"noImplicitAny": false,
}
6 changes: 3 additions & 3 deletions packages/executor/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "executor",
"version": "1.0.3-alpha",
"version": "1.0.4-alpha",
"description": "The Relayer module of Etherspot bundler client",
"author": "Etherspot",
"homepage": "https://https://github.com/etherspot/skandha#readme",
Expand Down Expand Up @@ -33,7 +33,7 @@
"dependencies": {
"async-mutex": "0.4.0",
"ethers": "5.7.2",
"params": "1.0.3-alpha",
"types": "1.0.3-alpha"
"params": "1.0.4-alpha",
"types": "1.0.4-alpha"
}
}
17 changes: 8 additions & 9 deletions packages/node/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "node",
"version": "1.0.3-alpha",
"version": "1.0.4-alpha",
"description": "The bundler node module of Etherspot bundler client",
"author": "Etherspot",
"homepage": "https://https://github.com/etherspot/skandha#readme",
Expand Down Expand Up @@ -42,6 +42,7 @@
"@chainsafe/ssz": "0.10.2",
"@chainsafe/threads": "1.10.0",
"@ethersproject/abi": "5.7.0",
"@farcaster/rocksdb": "5.5.0",
"@libp2p/bootstrap": "6.0.3",
"@libp2p/interface-connection": "3.0.2",
"@libp2p/interface-connection-manager": "1.3.8",
Expand All @@ -55,31 +56,29 @@
"@libp2p/tcp": "6.1.0",
"@multiformats/multiaddr": "11.4.0",
"abstract-leveldown": "7.2.0",
"api": "1.0.3-alpha",
"api": "1.0.4-alpha",
"datastore-core": "8.0.1",
"db": "1.0.3-alpha",
"db": "1.0.4-alpha",
"ethers": "5.7.2",
"executor": "1.0.3-alpha",
"executor": "1.0.4-alpha",
"it-filter": "1.0.2",
"it-map": "1.0.5",
"it-sort": "1.0.0",
"it-take": "1.0.1",
"libp2p": "0.42.2",
"params": "1.0.3-alpha",
"params": "1.0.4-alpha",
"prettier": "2.8.4",
"rocksdb": "5.2.1",
"snappy": "7.2.2",
"snappyjs": "0.7.0",
"stream-to-it": "0.2.4",
"strict-event-emitter-types": "2.0.0",
"types": "1.0.3-alpha",
"utils": "1.0.3-alpha",
"types": "1.0.4-alpha",
"utils": "1.0.4-alpha",
"varint": "6.0.0",
"xxhash-wasm": "1.0.2"
},
"devDependencies": {
"@types/abstract-leveldown": "7.2.1",
"@types/rocksdb": "3.0.1",
"@types/varint": "6.0.1"
},
"overrides": {
Expand Down
2 changes: 1 addition & 1 deletion packages/node/src/network/peers/datastore-rocks.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import filter from "it-filter";
import map from "it-map";
import take from "it-take";
import sort from "it-sort";
import rocks from "rocksdb";
import rocks from "@farcaster/rocksdb";
import {
AbstractOpenOptions,
AbstractIteratorOptions,
Expand Down
6 changes: 5 additions & 1 deletion packages/node/tsconfig.build.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,11 @@
"include": ["src"],
"compilerOptions": {
"outDir": "lib",
"typeRoots": ["../../node_modules/@types", "./node_modules/@types", "../../types"]
"typeRoots": [
"../../types",
"../../node_modules/@types",
"./node_modules/@types"
]
},
"noImplicitAny": false,
}
6 changes: 3 additions & 3 deletions packages/params/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "params",
"version": "1.0.3-alpha",
"version": "1.0.4-alpha",
"description": "Various bundler parameters",
"author": "Etherspot",
"homepage": "https://github.com/etherspot/skandha#readme",
Expand All @@ -26,8 +26,8 @@
"@eth-optimism/sdk": "3.0.0",
"@mantleio/sdk": "0.2.1",
"ethers": "5.7.2",
"types": "1.0.3-alpha",
"utils": "1.0.3-alpha"
"types": "1.0.4-alpha",
"utils": "1.0.4-alpha"
},
"scripts": {
"clean": "rm -rf lib && rm -f *.tsbuildinfo",
Expand Down
2 changes: 1 addition & 1 deletion packages/types/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "types",
"version": "1.0.3-alpha",
"version": "1.0.4-alpha",
"description": "The types of Etherspot bundler client",
"author": "Etherspot",
"homepage": "https://https://github.com/etherspot/skandha#readme",
Expand Down
4 changes: 2 additions & 2 deletions packages/utils/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "utils",
"version": "1.0.3-alpha",
"version": "1.0.4-alpha",
"description": "utils of Etherspot bundler client",
"author": "Etherspot",
"homepage": "https://https://github.com/etherspot/skandha#readme",
Expand Down Expand Up @@ -37,6 +37,6 @@
"case": "^1.6.3",
"pino": "8.11.0",
"pino-pretty": "10.0.0",
"types": "1.0.3-alpha"
"types": "1.0.4-alpha"
}
}
122 changes: 122 additions & 0 deletions types/rocksdb/index.d.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,122 @@
// Type definitions for @farcaster/rocksdb 3.0
// Project: https://github.com/farcasterxyz/rocksdb
// Definitions by: Meirion Hughes <https://github.com/MeirionHughes>
// Daniel Byrne <https://github.com/danwbyrne>
// Paul Fletcher-Hill <https://github.com/pfletcherhill>
// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
// TypeScript Version: 2.3

/// <reference types="node" />

// If we ever start using the upstream rocksdb package again, remove this
// wrapper `module` declaration. It's only needed because our forked package is
// scoped to @farcaster.
declare module "@farcaster/rocksdb" {
import {
AbstractBatch,
AbstractChainedBatch,
AbstractGetOptions,
AbstractIterator,
AbstractIteratorOptions,
AbstractLevelDOWN,
AbstractOpenOptions,
AbstractOptions,
ErrorCallback,
ErrorValueCallback,
} from "abstract-leveldown";

interface RocksDB extends AbstractLevelDOWN<RocksDB.Bytes, RocksDB.Bytes> {
open(cb: ErrorCallback): void;
open(options: RocksDB.OpenOptions, cb: ErrorCallback): void;

get(key: RocksDB.Bytes, cb: ErrorValueCallback<RocksDB.Bytes>): void;
get(
key: RocksDB.Bytes,
options: RocksDB.GetOptions,
cb: ErrorValueCallback<RocksDB.Bytes>
): void;

put(key: RocksDB.Bytes, value: RocksDB.Bytes, cb: ErrorCallback): void;
put(
key: RocksDB.Bytes,
value: RocksDB.Bytes,
options: RocksDB.PutOptions,
cb: ErrorCallback
): void;

del(key: RocksDB.Bytes, cb: ErrorCallback): void;
del(
key: RocksDB.Bytes,
options: RocksDB.DelOptions,
cb: ErrorCallback
): void;

batch(): AbstractChainedBatch<RocksDB.Bytes, RocksDB.Bytes>;
batch(
array: AbstractBatch[],
cb: ErrorCallback
): AbstractChainedBatch<RocksDB.Bytes, RocksDB.Bytes>;
batch(
array: AbstractBatch[],
options: RocksDB.BatchOptions,
cb: ErrorCallback
): AbstractChainedBatch<RocksDB.Bytes, RocksDB.Bytes>;

approximateSize(
start: RocksDB.Bytes,
end: RocksDB.Bytes,
cb: RocksDB.ErrorSizeCallback
): void;
compactRange(
start: RocksDB.Bytes,
end: RocksDB.Bytes,
cb: ErrorCallback
): void;
getProperty(property: string): string;
iterator(options?: RocksDB.IteratorOptions): RocksDB.Iterator;
}

namespace RocksDB {
type Bytes = string | Buffer;
type ErrorSizeCallback = (err: Error | undefined, size: number) => void;
type OpenOptions = AbstractOpenOptions;

interface GetOptions extends AbstractGetOptions {
fillCache?: boolean | undefined;
}

interface PutOptions extends AbstractOptions {
sync?: boolean | undefined;
}

interface DelOptions extends AbstractOptions {
sync?: boolean | undefined;
}

interface BatchOptions extends AbstractOptions {
sync?: boolean | undefined;
}

interface IteratorOptions extends AbstractIteratorOptions<Bytes> {
fillCache?: boolean | undefined;
}

interface Iterator extends AbstractIterator<Bytes, Bytes> {
seek(key: Bytes): void;
binding: any;
cache: any;
finished: any;
fastFuture: any;
}

interface Constructor {
new (location: string): RocksDB;
(location: string): RocksDB;
destroy(location: string, cb: ErrorCallback): void;
repair(location: string, cb: ErrorCallback): void;
}
}

const RocksDB: RocksDB.Constructor;
export default RocksDB;
}
Loading

0 comments on commit 0522a07

Please sign in to comment.