Skip to content

Commit 15425f9

Browse files
committed
arm: do not use CI to try to build arm and create some manual scripts files
1 parent 0625984 commit 15425f9

File tree

8 files changed

+71
-4
lines changed

8 files changed

+71
-4
lines changed

Diff for: .circleci/config.yml

+5-1
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,11 @@ orbs:
8484
condition: <<parameters.node-version>>
8585
steps:
8686
- run: |
87-
[ -f /usr/local/bin/node<<parameters.node-version>> ] && ln -s /usr/local/bin/node<<parameters.node-version>> /usr/local/bin/node || true
87+
if [ -x "$(command -v nvm)" ]; then
88+
nvm use <<parameters.node-version>>
89+
else
90+
[ -f /usr/local/bin/node<<parameters.node-version>> ] && ln -s /usr/local/bin/node<<parameters.node-version>> /usr/local/bin/node || true
91+
fi
8892
- run:
8993
name: Setup Environment Variables
9094
command: |

Diff for: .dockerignore

+8-1
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,17 @@
22
.idea/
33
.nyc_output/
44
.vscode/
5+
api/
56
build/
7+
cache/
8+
coverage/
9+
debug/
610
deps/
711
dist/
12+
docs/
13+
examples/
814
lib/binding/node_libcurl.node
915
node_modules/
16+
tsconfig.tsbuildinfo
1017
website/
11-
docs/
18+
yarn-error.log

Diff for: cache/.gitignore

+4
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
# This directory is used for cache of deps of dockerfiles used for
2+
# Some custom builds done manually
3+
*
4+
!.gitignore

Diff for: scripts/arm/README.md

+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
## ARM Prebuilt Binaries
2+
3+
Those are scripts to create prebuilt binaries for the addon on ARM architecture.
4+
5+
They were built to be run from Windows (hence the powershell script).

Diff for: scripts/arm/armv7.dockerfile

+6
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
FROM jonathancardoso/ci-arm32v7
2+
3+
# docker run --rm --name node-libcurl-arm32v7 -it -v E:\\jc\\node-libcurl:/home/circleci/node-libcurl -v /home/circleci/node-libcurl/node_modules/ -v E:\\jc\\.cache\\electron:/home/circleci/.cache/electron -v E:\\jc\\node-libcurl\\debug\\image-deps-arm32v7:/home/circleci/deps/ node-libcurl-arm32v7
4+
# cd ~/node-libcurl && sudo chown circleci:circleci -R ./ && sudo chown circleci:circleci -R ~/.cache
5+
# PUBLISH_BINARY=false GIT_TAG="" GIT_COMMIT="" TARGET_ARCH="armv7" ./scripts/ci/build.sh
6+
ENTRYPOINT [ "/bin/bash" ]

Diff for: scripts/arm/publish-binary.ps1

+29
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
param (
2+
[ValidateSet('armv7')][string]$arch = "armv7",
3+
[string]$libcurl = "7.64.1",
4+
[string]$token = $env:GITHUB_RELEASE_TOKEN,
5+
[string]$node = "10"
6+
)
7+
8+
$currentDir = Get-Location
9+
$imageName = "node-libcurl-$arch"
10+
11+
Write-Host $arch
12+
Write-Host $token
13+
Write-Host $currentDir
14+
Write-Host $imageName
15+
16+
docker build -t $imageName -f "${currentDir}/scripts/arm/${arch}.dockerfile" .
17+
18+
docker run --rm --name $imageName -it `
19+
-v "${currentDir}:/home/circleci/node-libcurl/" `
20+
-v "/home/circleci/node-libcurl/node_modules/" `
21+
-v "/home/circleci/node-libcurl/debug/" `
22+
-v "${currentDir}/cache/image-deps-${arch}:/home/circleci/deps/" `
23+
-e PUBLISH_BINARY=true `
24+
-e TARGET_ARCH=$arch `
25+
-e LIBCURL_RELEASE=$libcurl `
26+
-e LATEST_LIBCURL_RELEASE=$libcurl `
27+
--entrypoint "/bin/bash" `
28+
$imageName `
29+
-c "source ~/.bashrc && nvm use $node && ~/node-libcurl/scripts/arm/publish-binary.sh"

Diff for: scripts/arm/publish-binary.sh

+10
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
#!/bin/bash
2+
3+
cd ~/node-libcurl
4+
5+
user=$(whoami)
6+
7+
# fix permissions for directories created when mounting volumes from Windows
8+
sudo chown $user:$user -R ./ && sudo chown $user:$user -R ~/.cache
9+
10+
./scripts/ci/build.sh

Diff for: scripts/ci/build.sh

+4-2
Original file line numberDiff line numberDiff line change
@@ -193,7 +193,7 @@ ls -al $OPENLDAP_BUILD_FOLDER/lib
193193
# Build libcurl
194194
###################
195195
LIBCURL_ORIGINAL_RELEASE=${LIBCURL_RELEASE:-LATEST}
196-
LATEST_LIBCURL_RELEASE=$(./scripts/ci/get-latest-libcurl-version.sh)
196+
LATEST_LIBCURL_RELEASE=${LATEST_LIBCURL_RELEASE:-$(./scripts/ci/get-latest-libcurl-version.sh)}
197197
LIBCURL_RELEASE=$LIBCURL_ORIGINAL_RELEASE
198198
if [[ $LIBCURL_RELEASE == "LATEST" ]]; then
199199
LIBCURL_RELEASE=$LATEST_LIBCURL_RELEASE
@@ -289,6 +289,8 @@ else
289289
fi
290290

291291
target=`echo $target | sed 's/^v//'`
292+
# ia32, x64, armv7, etc
293+
target_arch=${TARGET_ARCH:-"x64"}
292294

293295
# Build Addon
294296
export npm_config_curl_config_bin="$LIBCURL_DEST_FOLDER/build/$LIBCURL_RELEASE/bin/curl-config"
@@ -297,7 +299,7 @@ export npm_config_build_from_source="true"
297299
export npm_config_runtime="$runtime"
298300
export npm_config_dist_url="$dist_url"
299301
export npm_config_target="$target"
300-
export npm_config_target_arch="x64"
302+
export npm_config_target_arch="$target_arch"
301303

302304
yarn install --frozen-lockfile
303305

0 commit comments

Comments
 (0)