Skip to content

Commit c5e3ab9

Browse files
committed
Move platform selection to NodeOS module
1 parent 13efdd5 commit c5e3ab9

7 files changed

Lines changed: 58 additions & 103 deletions

File tree

package.json

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -40,21 +40,16 @@
4040
"bin-man": "^0.2.0",
4141
"bin-pwd": "^0.0.0",
4242
"davius": "^0.0.1",
43-
"dhcpjs": "^0.5.0",
43+
"dhcpjs": "^0.5.1",
4444
"fs-extra": "^0.30.0",
45-
"genext2fs": "^1.4.1-0",
4645
"ifconfig": "NodeOS/ifconfig",
4746
"ip": "NodeOS/ip",
48-
"loadtest": "^2.0.4",
47+
"loadtest": "^2.2.0",
4948
"logon": "^0.1.3",
5049
"node-bin-getty": "NodeOS/node-bin-getty",
5150
"node-wget": "^0.4.2",
52-
"nodeos-barebones": "NodeOS/nodeos-barebones",
53-
"nodeos-cross-toolchain": "NodeOS/nodeos-cross-toolchain",
54-
"nodeos-initramfs": "NodeOS/nodeos-initramfs",
55-
"nodeos-nodejs": "^6.8.1",
5651
"nodeos-reverse-proxy": "^0.1.0",
57-
"npm": "^3.10.8",
52+
"npm": "^3.10.9",
5853
"nsh": "piranna/nsh",
5954
"ntp-client": "^0.5.3",
6055
"palmtree": "^2.5.0",
@@ -63,7 +58,10 @@
6358
"slap": "^0.1.60"
6459
},
6560
"devDependencies": {
66-
"qemu": "^2.6.0"
61+
"nodeos-cross-toolchain": "NodeOS/nodeos-cross-toolchain#raspi2",
62+
"nodeos-nodejs": "^6.9.1",
63+
"qemu": "^2.6.0",
64+
"tar-fs": "piranna/tar-fs"
6765
},
6866
"description": "Generate a read-write users filesystem for NodeOS for demo purposses",
6967
"repository": {
File renamed without changes.
File renamed without changes.
File renamed without changes.

scripts/build

Lines changed: 23 additions & 68 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,10 @@
11
#!/usr/bin/env bash
22

3-
# This script prepares the users filesystem
4-
53
GRN="\e[32m"
64
CLR="\e[0m"
75

86

97
TOOLCHAIN=`node -p "require('nodeos-cross-toolchain')"`
10-
BAREBONES=`node -p "require('nodeos-barebones')"`
11-
INITRAMFS=`node -p "require('nodeos-initramfs')"`
128

139
NODE_DIR=`node -p "require('nodeos-nodejs')"`
1410

@@ -18,11 +14,11 @@ source scripts/utils.sh || exit $?
1814
PATH=$TOOLCHAIN/bin:$PATH
1915

2016

21-
# Clean object dir and return the input error
22-
function err(){
23-
rmStep $STEP_DIR
24-
exit $1
25-
}
17+
# Build cross-compiler (if needed)
18+
(
19+
cd $TOOLCHAIN
20+
BITS=$BITS CPU=$CPU MACHINE=$MACHINE npm run build || exit $?
21+
) || exit $?
2622

2723

2824
#
@@ -31,7 +27,7 @@ function err(){
3127

3228
OBJ_ROOT=$OBJECTS/root
3329
OBJ_NODEOS=$OBJECTS/nodeos
34-
OUT_DIR=`pwd`/out/$CPU
30+
OUT_DIR=`pwd`/out/$CPU.tar.gz
3531

3632

3733
#
@@ -44,32 +40,32 @@ if [[ ! -d $STEP_DIR ]]; then
4440
echo -e "${WHT}Generating root user folder${CLR}"
4541

4642
# Force re-creation of usersfs
47-
rm -rf $OUT_DIR || exit 14
43+
rm -rf $OUT_DIR || exit 10
4844

4945
(
50-
mkdir -p $STEP_DIR || exit 10
46+
mkdir -p $STEP_DIR || exit 11
5147

5248
#
5349
# Install system dependencies
5450
#
5551

5652
PACKAGES=`node -p "require('./package.json').nodeosDependenciesRoot.join(' ')"`
57-
eval "$NPMi" -g $PACKAGES || exit 11
53+
eval "$NPMi" -g $PACKAGES || exit 12
5854

5955

6056
#
6157
# Services to be started at boot
6258
#
6359

64-
mkdir -p $STEP_DIR/etc &&
65-
cp palmtree.json $STEP_DIR/etc/ || exit 12
60+
mkdir -p $STEP_DIR/etc &&
61+
cp resources/palmtree.json $STEP_DIR/etc/ || exit 13
6662

6763

6864
#
6965
# Init file for the user
7066
#
7167

72-
ln -sf bin/palmtree $STEP_DIR/init || exit 13
68+
ln -sf bin/palmtree $STEP_DIR/init || exit 14
7369
) || err $?
7470

7571
echo -e "${GRN}Successfully generated root user folder${CLR}"
@@ -86,32 +82,32 @@ if [[ ! -d $STEP_DIR ]]; then
8682
echo -e "${WHT}Generating nodeos user folder${CLR}"
8783

8884
# Force re-creation of usersfs
89-
rm -rf $OUT_DIR || exit 25
85+
rm -rf $OUT_DIR || exit 20
9086

9187
(
92-
mkdir -p $STEP_DIR || exit 20
88+
mkdir -p $STEP_DIR || exit 21
9389

9490
#
9591
# Install user dependencies
9692
#
9793

9894
PACKAGES=`node -p "require('./package.json').nodeosDependenciesNodeos.join(' ')"`
99-
eval "$NPMi" -g $PACKAGES || exit 21
95+
eval "$NPMi" -g $PACKAGES || exit 22
10096

10197

10298
#
10399
# Copy nodeos user login info
104100
#
105101

106-
mkdir -p $STEP_DIR/etc &&
107-
cp logon.json $STEP_DIR/etc/ || exit 22
102+
mkdir -p $STEP_DIR/etc &&
103+
cp resources/logon.json $STEP_DIR/etc/ || exit 23
108104

109105

110106
#
111107
# Dummy init file for the user
112108
#
113109

114-
cp init.js $STEP_DIR/init || exit 23
110+
cp resources/init.js $STEP_DIR/init || exit 24
115111

116112

117113
#
@@ -126,7 +122,7 @@ if [[ ! -d $STEP_DIR ]]; then
126122
(
127123
cd $SRC_DIR
128124

129-
eval "$NPMi" || exit 24
125+
eval "$NPMi" || exit 25
130126
) || exit $?
131127

132128

@@ -142,7 +138,7 @@ if [[ ! -d $STEP_DIR ]]; then
142138
# (
143139
# cd $SRC_DIR
144140
#
145-
# eval "$NPMi" --has_cairo=false --has_X11=false || exit 25
141+
# eval "$NPMi" --has_cairo=false --has_X11=false || exit 26
146142
# ) || exit $?
147143
) || err $?
148144

@@ -159,50 +155,9 @@ STEP_DIR=$OUT_DIR
159155
if [[ ! -f $STEP_DIR ]]; then
160156
mkdir -p `dirname $STEP_DIR`
161157

162-
case $PLATFORM in
163-
docker|vagga)
164-
cp $BAREBONES/out/latest $STEP_DIR/barebones.tar || err 30
165-
cp $INITRAMFS/out/latest $STEP_DIR/initramfs.tar || err 31
166-
167-
chmod -R go= "$OBJECTS" || err 32
168-
169-
ln -sf ../build/$CPU out/latest || err 33
170-
;;
171-
172-
pc_* | raspberry_*)
173-
DISK_SIZE=192 # Size in MB
174-
175-
(
176-
cd $OBJECTS
177-
../../scripts/gendevicetable.js nodeos 1 1 || exit 40
178-
) > $STEP_DIR || err $?
179-
180-
genext2fs -b $((DISK_SIZE*1024)) \
181-
--root $OBJECTS \
182-
--devtable $STEP_DIR \
183-
--block-size 1024 \
184-
--bytes-per-inode 4096 \
185-
--reserved-percentage 0 \
186-
--creator-os linux \
187-
--allow-holes \
188-
--squash $STEP_DIR || err 41
189-
190-
# Set filesystem features and users files permissions
191-
tune2fs $STEP_DIR -O has_journal,filetype > /dev/null || err 42
192-
e2fsck -y $STEP_DIR > /dev/null
193-
if [ $? -gt 2 ]; then
194-
err 43
195-
fi
196-
197-
# Mark the newly created filesystem image as the latest one
198-
ln -sf $CPU out/latest || err 44
199-
;;
200-
201-
*)
202-
echo -e "${RED}Unknown platform '$PLATFORM'${CLR}"
203-
err 50
204-
;;
205-
esac
158+
scripts/pack.js "$OBJECTS" nodeos 1 1 | gzip > $STEP_DIR || err 30
159+
160+
ln -sf $CPU.tar.gz out/latest || err 32
206161
fi
207162

208163

scripts/gendevicetable.js

Lines changed: 0 additions & 26 deletions
This file was deleted.

scripts/pack.js

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
#!/usr/bin/env node
2+
3+
const pack = require('tar-fs').pack
4+
5+
6+
const argv = process.argv.slice(2)
7+
8+
const root = argv[0]
9+
const dir = argv[1]
10+
const uid = argv[2]
11+
const gid = argv[3]
12+
13+
14+
pack(root,
15+
{
16+
map: function(header)
17+
{
18+
if(header.name.split('/')[0] === dir)
19+
{
20+
header.uid = uid
21+
header.gid = gid
22+
}
23+
24+
return header
25+
},
26+
umask: 0x077
27+
})
28+
.pipe(process.stdout)

0 commit comments

Comments
 (0)