-
Notifications
You must be signed in to change notification settings - Fork 112
Expand file tree
/
Copy pathsetup.sh
More file actions
executable file
·175 lines (166 loc) · 6.08 KB
/
Copy pathsetup.sh
File metadata and controls
executable file
·175 lines (166 loc) · 6.08 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
#!/usr/bin/env bash
set -e
MODE="full"
for arg in "$@"; do
case "$arg" in
--deps-only|--no-build) MODE="deps" ;;
--help|-h)
echo "usage: $0 [--deps-only]"
echo " (no args) install deps + build"
echo " --deps-only install deps only (no make)"
exit 0
;;
esac
done
OS="$(uname -s)"
if [ "$(id -u)" = "0" ]; then
SUDO=""
else
if command -v sudo &>/dev/null; then
SUDO="sudo"
else
SUDO=""
fi
fi
case "$OS" in
Darwin)
echo "[1/3] macOS detected"
if ! command -v brew &>/dev/null; then
echo "homebrew not found. installing..."
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
if [ -d /opt/homebrew/bin ]; then
eval "$(/opt/homebrew/bin/brew shellenv)"
elif [ -d /usr/local/bin ] && [ -x /usr/local/bin/brew ]; then
eval "$(/usr/local/bin/brew shellenv)"
fi
fi
ensure_brew_formula() {
local pkg="$1"
local check_path="$2"
if ! brew list --versions "$pkg" &>/dev/null; then
echo "installing $pkg..."
brew install "$pkg"
else
echo "$pkg already installed"
fi
if [ ! -e "$check_path" ]; then
echo "$pkg looks incomplete or broken (missing $check_path)"
echo "reinstalling $pkg..."
brew reinstall "$pkg"
fi
if [ ! -e "$check_path" ]; then
echo "error: $pkg is still incomplete after reinstall"
echo "expected file: $check_path"
exit 1
fi
}
OPENSSL_PREFIX="$(brew --prefix openssl@3 2>/dev/null || true)"
[ -n "$OPENSSL_PREFIX" ] || OPENSSL_PREFIX="/opt/homebrew/opt/openssl@3"
LEVELDB_PREFIX="$(brew --prefix leveldb 2>/dev/null || true)"
[ -n "$LEVELDB_PREFIX" ] || LEVELDB_PREFIX="/opt/homebrew/opt/leveldb"
ensure_brew_formula "openssl@3" "$OPENSSL_PREFIX/lib/libssl.3.dylib"
ensure_brew_formula "leveldb" "$LEVELDB_PREFIX/lib/libleveldb.1.dylib"
brew postinstall openssl@3 >/dev/null 2>&1 || true
if ! xcode-select -p &>/dev/null; then
echo "installing Xcode command line tools..."
xcode-select --install 2>/dev/null || true
echo "a GUI installer may have opened. re-run this script after it finishes."
exit 0
fi
;;
Linux)
echo "[1/3] linux detected"
if [ -f /etc/os-release ]; then
. /etc/os-release
echo "distro: ${ID:-unknown} ${VERSION_ID:-}"
fi
if command -v apt-get &>/dev/null; then
echo "installing dependencies (apt)..."
$SUDO apt-get update -qq
$SUDO env DEBIAN_FRONTEND=noninteractive apt-get install -y -qq \
build-essential g++ libssl-dev libleveldb-dev pkg-config make curl
elif command -v dnf &>/dev/null; then
echo "installing dependencies (dnf)..."
$SUDO dnf install -y gcc-c++ openssl-devel leveldb-devel make pkgconfig
elif command -v yum &>/dev/null; then
echo "installing dependencies (yum)..."
$SUDO yum install -y gcc-c++ openssl-devel leveldb-devel make pkgconfig
elif command -v zypper &>/dev/null; then
echo "installing dependencies (zypper)..."
$SUDO zypper install -y gcc-c++ libopenssl-devel leveldb-devel make pkg-config
elif command -v pacman &>/dev/null; then
echo "installing dependencies (pacman)..."
$SUDO pacman -S --noconfirm --needed gcc openssl leveldb make pkgconf
elif command -v apk &>/dev/null; then
echo "installing dependencies (apk)..."
$SUDO apk add --no-cache g++ openssl-dev leveldb-dev make pkgconfig musl-dev linux-headers
elif command -v emerge &>/dev/null; then
echo "installing dependencies (emerge)..."
$SUDO emerge --noreplace dev-libs/openssl dev-libs/leveldb sys-devel/gcc sys-devel/make
elif command -v xbps-install &>/dev/null; then
echo "installing dependencies (xbps)..."
$SUDO xbps-install -Sy gcc openssl-devel leveldb-devel make pkgconf
else
echo "unknown package manager. install manually: g++, libssl-dev, libleveldb-dev, make, pkg-config"
exit 1
fi
;;
FreeBSD)
echo "[1/3] FreeBSD detected"
$SUDO pkg install -y gcc openssl leveldb gmake pkgconf
;;
OpenBSD)
echo "[1/3] OpenBSD detected"
$SUDO pkg_add -I g++ openssl leveldb gmake
;;
NetBSD)
echo "[1/3] NetBSD detected"
$SUDO pkgin install -y gcc openssl leveldb gmake pkg-config
;;
MINGW*|MSYS*|CYGWIN*)
if [ "$MODE" = "deps" ]; then
echo "[1/1] detected windows shell ($OS) in deps-only mode"
echo "on windows, dependencies should be installed via setup.bat from cmd.exe"
echo "if you already ran setup.bat, this is fine - continuing"
exit 0
fi
echo "detected windows shell ($OS). run setup.bat from cmd.exe instead."
exit 1
;;
*)
echo "unsupported OS: $OS"
echo "on windows use setup.bat. please install manually: g++, libssl-dev, libleveldb-dev, make"
exit 1
;;
esac
if [ "$MODE" = "deps" ]; then
echo ""
echo "[2/2] dependencies installed (deps-only mode)"
exit 0
fi
echo ""
echo "[2/3] building octra wallet"
if ! command -v make &>/dev/null; then
if command -v gmake &>/dev/null; then
MAKE=gmake
else
echo "neither make nor gmake found"
exit 1
fi
else
MAKE=make
fi
OCTRA_SKIP_AUTOSETUP=1 $MAKE clean 2>/dev/null || true
if ! OCTRA_SKIP_AUTOSETUP=1 $MAKE; then
echo ""
echo "build failed"
exit 1
fi
echo ""
echo "[3/3] done"
echo ""
echo "start the wallet:"
echo "./octra_wallet"
echo ""
echo "then open http://127.0.0.1:8420 in your browser"
echo ""