Procházet zdrojové kódy

Improve ipfs installation on mesh clients

Bob Mottram před 8 roky
rodič
revize
3ea1b03436
No account linked to committer's email
3 změnil soubory, kde provedl 123 přidání a 136 odebrání
  1. 21
    45
      src/freedombone-app-ipfs
  2. 10
    0
      src/freedombone-image-mesh
  3. 92
    91
      src/freedombone-utils-go

+ 21
- 45
src/freedombone-app-ipfs Zobrazit soubor

@@ -32,7 +32,7 @@ VARIANTS='mesh'
32 32
 
33 33
 IPFS_GO_REPO_BASE="github.com/ipfs/go-ipfs"
34 34
 IPFS_GO_REPO="https://${IPFS_GO_REPO_BASE}"
35
-IPFS_COMMIT='20b06a4cbce8884f5b194da6e98cb11f2c77f166'
35
+IPFS_COMMIT='6fdfaaf6e4783ae1be7b348e7a6bc0640982c7df'
36 36
 IPFS_PORT=4001
37 37
 IPFS_NODE_VERSION='6.2.2'
38 38
 IPFS_N_VERSION='2.1.4'
@@ -382,46 +382,14 @@ function mesh_install_ipfs_go {
382 382
 
383 383
     mesh_upgrade_golang
384 384
 
385
-    GOPATH=/home/git/gvm/pkgsets/go${GO_VERSION}/global
385
+    GOPATH=/home/go/go${GO_VERSION}
386
+    IPFS_PATH=/usr/bin
386 387
 
387 388
     cat <<EOF > ${rootdir}/root/install_ipfs_go.sh
388
-#!/bin/bash
389
-
390 389
 export GOPATH=$GOPATH
390
+export GOROOT=/home/go
391 391
 
392
-if [ ${#GOPATH} -lt 1 ]; then
393
-    echo $'GOPATH was not set'
394
-    exit 62925
395
-fi
396
-
397
-if [ ! -d /home/git ]; then
398
-    adduser --disabled-login --gecos 'Gogs' git
399
-
400
-    # install Go
401
-    if ! grep -q "export GOPATH=" ~/.bashrc; then
402
-        echo "export GOPATH=\$GOPATH" >> ~/.bashrc
403
-    else
404
-        sed -i "s|export GOPATH=.*|export GOPATH=\$GOPATH|g" ~/.bashrc
405
-    fi
406
-    systemctl set-environment GOPATH=\$GOPATH
407
-    if ! grep -q "systemctl set-environment GOPATH=" ~/.bashrc; then
408
-        echo "systemctl set-environment GOPATH=\$GOPATH" >> ~/.bashrc
409
-    else
410
-        sed -i "s|systemctl set-environment GOPATH=.*|systemctl set-environment GOPATH=\$GOPATH|g" ~/.bashrc
411
-    fi
412
-    if [ ! -d \$GOPATH ]; then
413
-        mkdir -p \$GOPATH
414
-    fi
415
-fi
416
-
417
-IPFS_PATH=\$GOPATH/bin
418
-export PATH="\$GOPATH/bin:\$PATH:"
419
-echo 'export PATH="\$GOPATH/bin:\$PATH:";' >> /home/$MY_USERNAME/.bashrc
420
-
421
-if grep -q 'GOPATH/bin' ~/.bashrc; then
422
-    sed -i "s|systemctl set-environment GOPATH=.*|systemctl set-environment GOPATH=\$GOPATH|g" ~/.bashrc
423
-fi
424
-chown $MY_USERNAME:$MY_USERNAME /home/$MY_USERNAME/.bashrc
392
+IPFS_PATH=$IPFS_PATH
425 393
 
426 394
 echo "go get -u ${IPFS_GO_REPO_BASE}/cmd/ipfs"
427 395
 go get -u ${IPFS_GO_REPO_BASE}/cmd/ipfs
@@ -434,21 +402,24 @@ if [ ! -d $GOPATH/src/$IPFS_GO_REPO_BASE ]; then
434 402
     exit 63923
435 403
 fi
436 404
 
437
-cd \$GOPATH/src/$IPFS_GO_REPO_BASE
405
+cd \$GOPATH/src/${IPFS_GO_REPO_BASE}
438 406
 git checkout $IPFS_COMMIT -b $IPFS_COMMIT
439 407
 if [ ! "$?" = "0" ]; then
440 408
     exit 735639
441 409
 fi
442 410
 
411
+make install
412
+if [ ! "$?" = "0" ]; then
413
+    exit 6743895
414
+fi
415
+
443 416
 exit 0
444 417
 EOF
445 418
     chroot ${rootdir} chmod +x /root/install_ipfs_go.sh
446
-    chroot ${rootdir} /root/install_ipfs_go.sh
447
-    if [ ! "$?" = "0" ]; then
448
-        echo $'Failed to install ipfs go'
449
-        cat ${rootdir}/root/install_ipfs_go.sh
450
-        rm -f ${rootdir}/root/install_ipfs_go.sh
451
-        exit 365728
419
+    chroot ${rootdir} bash /root/install_ipfs_go.sh
420
+    if [ ! -f ${rootdir}$IPFS_PATH/ipfs ]; then
421
+        echo 'IPFS was not installed'
422
+        exit 73529
452 423
     fi
453 424
     chroot ${rootdir} rm -f /root/install_ipfs_go.sh
454 425
 
@@ -464,7 +435,7 @@ EOF
464 435
     echo "WorkingDirectory=/home/$MY_USERNAME" >> ${rootdir}/etc/systemd/system/ipfs.service
465 436
     echo "ExecStart=$IPFS_PATH/ipfs daemon --mount" >> ${rootdir}/etc/systemd/system/ipfs.service
466 437
     echo 'Restart=on-failure' >> ${rootdir}/etc/systemd/system/ipfs.service
467
-    echo "Environment=\"USER=$MY_USERNAME\" \"HOME=/home/$MY_USERNAME\" \"GOPATH=$GOPATH\" \"GVM_ROOT=$GVM_HOME\"" >> ${rootdir}/etc/systemd/system/ipfs.service
438
+    echo "Environment=\"USER=$MY_USERNAME\" \"HOME=/home/$MY_USERNAME\" \"GOPATH=$GOPATH\"" >> ${rootdir}/etc/systemd/system/ipfs.service
468 439
     echo '' >> ${rootdir}/etc/systemd/system/ipfs.service
469 440
     echo '[Install]' >> ${rootdir}/etc/systemd/system/ipfs.service
470 441
     echo 'WantedBy=multi-user.target' >> ${rootdir}/etc/systemd/system/ipfs.service
@@ -546,6 +517,11 @@ function install_ipfs_go {
546 517
         sed -i "s/ipfs commit.*/ipfs commit:$IPFS_COMMIT/g" $COMPLETION_FILE
547 518
     fi
548 519
 
520
+    make install
521
+    if [ ! "$?" = "0" ]; then
522
+        exit 547242
523
+    fi
524
+
549 525
     # initialise
550 526
     su -c "$IPFS_PATH/ipfs init -b 4096" - $MY_USERNAME
551 527
     if [ ! -d /home/$MY_USERNAME/.ipfs ]; then

+ 10
- 0
src/freedombone-image-mesh Zobrazit soubor

@@ -44,6 +44,8 @@ DEFAULT_USERNAME=fbone
44 44
 ZERONET_URL='http://127.0.0.1:43110'
45 45
 ZERONET_PORT=15441
46 46
 
47
+GO_VERSION=1.7
48
+
47 49
 TOX_NODES=
48 50
 #TOX_NODES=(
49 51
 #  '192.254.75.102,2607:5600:284::2,33445,951C88B7E75C867418ACDB5D273821372BB5BD652740BCDF623A4FA293E75D2F,Tox RELENG,US'
@@ -724,6 +726,14 @@ function setup_ipfs {
724 726
     IPFS_KEY_LENGTH=2048
725 727
     IPFS_COMMAND=$IPFS_PATH/ipfs
726 728
 
729
+    if [ -d /home/$MY_USERNAME/.ipfs ]; then
730
+        rm -rf /home/$MY_USERNAME/.ipfs
731
+    fi
732
+
733
+    if [ -f /home/git/gvm/bin/gvm ]; then
734
+        /home/git/gvm/bin/gvm use go${GO_VERSION} --default
735
+    fi
736
+
727 737
     su -c "$IPFS_COMMAND init -b $IPFS_KEY_LENGTH" - $MY_USERNAME
728 738
     if [ ! -d /home/$MY_USERNAME/.ipfs ]; then
729 739
         echo "IPFS could not be initialised for user $MY_USERNAME" >> $INSTALL_LOG

+ 92
- 91
src/freedombone-utils-go Zobrazit soubor

@@ -32,8 +32,9 @@
32 32
 # before getting to the version we want
33 33
 GO_INTERMEDIATE_VERSION=1.4.2
34 34
 
35
-GO_VERSION=1.5
35
+GO_VERSION=1.7
36 36
 
37
+GO_REPO="https://go.googlesource.com/go"
37 38
 GO_PACKAGE_MANAGER_REPO="https://github.com/gpmgo/gopm"
38 39
 GVM_HOME=/home/git/gvm
39 40
 GVM_REPO="https://github.com/moovweb/gvm"
@@ -62,117 +63,65 @@ function select_go_version {
62 63
     systemctl set-environment GOPATH=$GOPATH
63 64
 }
64 65
 
65
-function mesh_upgrade_golang {
66
+function mesh_upgrade_golang_from_source {
67
+    chroot "$rootdir" adduser --disabled-login --gecos 'go' ipfs
68
+
69
+    git clone $GO_REPO $rootdir/home/go/go${GO_VERSION}
70
+    cd $rootdir/home/go/go${GO_VERSION}
71
+    git checkout go${GO_VERSION} -b go${GO_VERSION}
72
+
73
+    git clone $GO_REPO $rootdir/home/go/go${GO_INTERMEDIATE_VERSION}
74
+    cd $rootdir/home/go/go${GO_INTERMEDIATE_VERSION}
75
+    git checkout go${GO_INTERMEDIATE_VERSION} -b go${GO_INTERMEDIATE_VERSION}
76
+
66 77
     cat <<EOF > ${rootdir}/root/upgrade_golang.sh
67 78
 #!/bin/bash
68 79
 
69
-export GVM_ROOT=$GVM_HOME
70
-
71 80
 apt-get -y install build-essential libc6-dev
72 81
 apt-get -y install gcc-multilib g++-multilib make
73 82
 apt-get -y install curl git mercurial binutils bison
74
-if [ ! -d $INSTALL_DIR ]; then
75
-    mkdir $INSTALL_DIR
76
-fi
77
-cd $INSTALL_DIR
78
-
79
-git clone $GVM_REPO gvm
80
-
81
-cd $INSTALL_DIR/gvm
82
-git checkout $GVM_COMMIT -b $GVM_COMMIT
83
-if [ ! -f binscripts/gvm-installer ]; then
84
-    echo $'gvm installer not found'
85
-fi
86
-chmod +x binscripts/gvm-installer
87
-
88
-if [ -d /root/.gvm ]; then
89
-    rm -rf /root/.gvm
90
-fi
91
-if [ -d $GVM_HOME ]; then
92
-    rm -rf $GVM_HOME
93
-fi
94
-if ! grep -q "export GVM_ROOT=" ~/.bashrc; then
95
-    echo "export GVM_ROOT=$GVM_HOME" >> ~/.bashrc
96
-else
97
-    sed -i "s|export GVM_ROOT=.*|export GVM_ROOT=$GVM_HOME|g" ~/.bashrc
98
-fi
99 83
 
100
-if [ ! -d /home/git ]; then
101
-    adduser --disabled-login --gecos 'Gogs' git
102
-fi
103
-if [ -d /home/git/Maildir ]; then
104
-    rm -rf /home/git/Maildir
84
+if [ -d /home/go/Maildir ]; then
85
+    rm -rf /home/go/Maildir
105 86
 fi
106 87
 
107
-./binscripts/gvm-installer master /home/git
88
+export GOROOT=/home/go
89
+export GOPATH=/home/go/go${GO_INTERMEDIATE_VERSION}
108 90
 
109
-if [ ! -d $GVM_HOME ]; then
110
-    echo $'Unable to install gvm'
111
-    exit 83537
112
-fi
113
-
114
-[[ -s "$GVM_HOME/scripts/gvm" ]] && source "$GVM_HOME/scripts/gvm"
115
-if [ ! -f $GVM_HOME/bin/gvm ]; then
116
-    echo $'gvm was not installed'
117
-fi
118
-if ! grep -q "export GVM_ROOT=" ~/.bashrc; then
119
-    echo "export GVM_ROOT=$GVM_HOME" >> ~/.bashrc
91
+cd /home/go/go${GO_INTERMEDIATE_VERSION}/src
92
+./all.bash
93
+if [ ! -f /home/go/go${GO_INTERMEDIATE_VERSION}/bin/go ]; then
94
+    exit 63722
120 95
 fi
121 96
 
122
-cd $GVM_HOME/bin
97
+export GOROOT_BOOTSTRAP=/home/go/go${GO_INTERMEDIATE_VERSION}
123 98
 
124
-$GVM_HOME/bin/gvm install go${GO_INTERMEDIATE_VERSION}
125
-if [ ! "\$?" = "0" ]; then
126
-    echo $"Unable to install intermediate go version ${GO_INTERMEDIATE_VERSION}"
127
-    if [ -f $GVM_HOME/logs/go-go${GO_INTERMEDIATE_VERSION}-compile.log ]; then
128
-        cat $GVM_HOME/logs/go-go${GO_INTERMEDIATE_VERSION}-compile.log
129
-    fi
130
-    exit 352872
131
-fi
132
-
133
-export GOROOT_BOOTSTRAP=/home/git/gvm/gos/go${GO_INTERMEDIATE_VERSION}
134
-
135
-$GVM_HOME/bin/gvm install go${GO_VERSION}
136
-if [ ! "\$?" = "0" ]; then
137
-    echo $"Unable to install go version ${GO_VERSION}"
138
-    if [ -f $GVM_HOME/logs/go-go${GO_VERSION}-compile.log ]; then
139
-        cat $GVM_HOME/logs/go-go${GO_VERSION}-compile.log
140
-    fi
141
-    exit 529252
99
+cd /home/go/go${GO_VERSION}/src
100
+./all.bash
101
+if [ ! -f /home/go/go${GO_VERSION}/bin/go ]; then
102
+    exit 528352
142 103
 fi
143 104
 
144
-chown -R git:git $GVM_HOME
145
-
146
-if [ ! -d $GVM_HOME/bin ]; then
147
-    echo $'GVM was not installed'
148
-    exit 629532
149
-fi
150
-
151
-if ! grep -q "GVM_ROOT=" ~/.bashrc; then
152
-    echo "export GVM_ROOT=$GVM_HOME" >> ~/.bashrc
153
-else
154
-    sed -i "s|export GVM_ROOT=.*|export GVM_ROOT=$GVM_HOME|g" ~/.bashrc
155
-fi
156
-
157
-cd $GVM_HOME/bin
158
-[[ -s "$GVM_HOME/scripts/gvm" ]] && source "$GVM_HOME/scripts/gvm"
159
-#$GVM_HOME/bin/gvm use go${GO_VERSION} --default
160
-#if [ ! "\$?" = "0" ]; then
161
-#    echo $"Unable to use go version ${GO_VERSION}"
162
-#    if [ -f $GVM_HOME/logs/go-go${GO_VERSION}-compile.log ]; then
163
-#        cat $GVM_HOME/logs/go-go${GO_VERSION}-compile.log
164
-#    fi
165
-#fi
166
-
167
-echo "export GOPATH=/home/git/gvm/pkgsets/go${GO_VERSION}/global" >> ~/.bashrc
168
-export GOPATH=/home/git/gvm/pkgsets/go${GO_VERSION}/global
105
+chown -R go:go /home/go
106
+
107
+export GOPATH=/home/go/go${GO_VERSION}
108
+export GOROOT=/home/go
109
+echo "export GOPATH=/home/go/go${GO_VERSION}" >> /home/go/.bashrc
110
+echo "export GOPATH=/home/go/go${GO_VERSION}" >> ~/.bashrc
111
+echo "export GOROOT=/home/go" >> /home/go/.bashrc
112
+echo "export GOROOT=/home/go" >> ~/.bashrc
113
+echo "systemctl set-environment GOPATH=\$GOPATH" >> ~/.bashrc
114
+echo "systemctl set-environment GOROOT=\$GOROOT" >> ~/.bashrc
115
+echo "systemctl set-environment GOPATH=\$GOPATH" >> /home/go/.bashrc
116
+echo "systemctl set-environment GOROOT=\$GOROOT" >> /home/go/.bashrc
169 117
 systemctl set-environment GOPATH=\$GOPATH
118
+systemctl set-environment GOROOT=\$GOROOT
170 119
 
171 120
 exit 0
172 121
 EOF
173 122
     chroot ${rootdir} chmod +x /root/upgrade_golang.sh
174 123
     chroot ${rootdir} /root/upgrade_golang.sh
175
-    if [ ! "$?" = "0" ]; then
124
+    if [ ! -f ${rootdir}/home/go/go${GO_VERSION}/bin/go ]; then
176 125
         echo $'Failed to upgrade golang'
177 126
         cat ${rootdir}/root/upgrade_golang.sh
178 127
         rm -f ${rootdir}/root/upgrade_golang.sh
@@ -181,6 +130,55 @@ EOF
181 130
     rm -f ${rootdir}/root/upgrade_golang.sh
182 131
 }
183 132
 
133
+function mesh_upgrade_golang {
134
+    chroot "$rootdir" adduser --disabled-login --gecos 'go' go
135
+
136
+    GOARCH=
137
+    if [[ $ARCHITECTURE == *"386" ]]; then
138
+        GOARCH=386
139
+    fi
140
+    if [[ $ARCHITECTURE == *"amd64" ]]; then
141
+        GOARCH=amd64
142
+    fi
143
+    if [[ $ARCHITECTURE == *"arm"* ]]; then
144
+        GOARCH=armv6l
145
+    fi
146
+    if [ ! $GOARCH ]; then
147
+        return
148
+    fi
149
+
150
+    GO_SOURCE=https://storage.googleapis.com/golang/go${GO_VERSION}.linux-${GOARCH}.tar.gz
151
+
152
+    if [ ! -d ${rootdir}${INSTALL_DIR} ]; then
153
+        chroot "$rootdir" mkdir -p ${INSTALL_DIR}
154
+    fi
155
+    cd ${rootdir}${INSTALL_DIR}
156
+    wget ${GO_SOURCE}
157
+    if [ ! -f ${rootdir}${INSTALL_DIR}/go${GO_VERSION}.linux-${GOARCH}.tar.gz ]; then
158
+        exit 26524
159
+    fi
160
+    chroot "$rootdir" tar -C /home/go -xzf ${INSTALL_DIR}/go${GO_VERSION}.linux-${GOARCH}.tar.gz
161
+    if [ ! -d ${rootdir}/home/go/go/bin ]; then
162
+        echo 'Go binary not installed'
163
+        exit 763562
164
+    fi
165
+    mv ${rootdir}/home/go/go ${rootdir}/home/go/go${GO_VERSION}
166
+    echo "export GOROOT=/home/go" >> $rootdir/root/.bashrc
167
+    echo "export GOROOT=/home/go" >> $rootdir/home/$MY_USERNAME/.bashrc
168
+    echo "export GOROOT=/home/go" >> $rootdir/home/go/.bashrc
169
+
170
+    echo "export GOPATH=\$GOROOT/go${GO_VERSION}/bin" >> $rootdir/root/.bashrc
171
+    echo "export GOPATH=\$GOROOT/go${GO_VERSION}/bin" >> $rootdir/home/$MY_USERNAME/.bashrc
172
+    echo "export GOPATH=\$GOROOT/go${GO_VERSION}/bin" >> $rootdir/home/go/.bashrc
173
+
174
+    echo 'export PATH=$PATH:$GOPATH' >> $rootdir/root/.bashrc
175
+    echo 'export PATH=$PATH:$GOPATH' >> $rootdir/home/$MY_USERNAME/.bashrc
176
+    echo 'export PATH=$PATH:$GOPATH' >> $rootdir/home/go/.bashrc
177
+    chroot "$rootdir" chown -R $MY_USERNAME:$MY_USERNAME /home/$MY_USERNAME
178
+    chroot "$rootdir" chown -R go:go /home/go
179
+    cp ${rootdir}/home/go/go${GO_VERSION}/bin/* ${rootdir}/usr/bin
180
+}
181
+
184 182
 function upgrade_golang {
185 183
     if [[ $SYSTEM_TYPE == "$VARIANT_WRITER" || $SYSTEM_TYPE == "$VARIANT_MAILBOX" || $SYSTEM_TYPE == "$VARIANT_CLOUD" || $SYSTEM_TYPE == "$VARIANT_SOCIAL" || $SYSTEM_TYPE == "$VARIANT_MEDIA" || $SYSTEM_TYPE == "$VARIANT_CHAT" || $SYSTEM_TYPE == "$VARIANT_MESH" ]]; then
186 184
         return
@@ -247,6 +245,9 @@ function upgrade_golang {
247 245
     if ! grep -q "export GVM_ROOT=" ~/.bashrc; then
248 246
         echo "export GVM_ROOT=$GVM_ROOT" >> ~/.bashrc
249 247
     fi
248
+    if ! grep -q 'PATH=$PATH:$GVM_ROOT/bin' ~/.bashrc; then
249
+        echo 'PATH=$PATH:$GVM_ROOT/bin' >> ~/.bashrc
250
+    fi
250 251
 
251 252
     export GOROOT_BOOTSTRAP=$GOROOT
252 253