changelog shortlog graph tags branches changeset files file revisions raw help

Mercurial > infra / annotate check.sh

changeset 371: 7dcabf3e0edc
parent: e2b8d0be0d24
author: Richard Westhaver <ellis@rwest.io>
date: Tue, 24 Sep 2024 15:53:24 -0400
permissions: -rwxr-xr-x
description: no link in bootstrap.sh
213
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
1
 #!/usr/bin/env sh
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
2
 set -eu
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
3
 main() {
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
4
   need_cmd uname
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
5
   need_cmd mktemp
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
6
   need_cmd chmod
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
7
   need_cmd mkdir
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
8
   need_cmd rm
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
9
   need_cmd rmdir
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
10
   need_cmd tar
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
11
   need_cmd zstd
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
12
   need_cmd hg
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
13
   need_cmd git
219
b1a96e0e3add profile in sxp only
Richard Westhaver <ellis@rwest.io>
parents: 218
diff changeset
14
   # need_cmd clang
213
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
15
   need_cmd grep
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
16
   need_cmd awk
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
17
   need_cmd head
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
18
   need_cmd tail
239
7c6e3bbfe8cd bootstrap mv
Richard Westhaver <ellis@rwest.io>
parents: 219
diff changeset
19
   export INFRA_HOST_CONFIG=$(cat /proc/sys/kernel/hostname).sxp
7c6e3bbfe8cd bootstrap mv
Richard Westhaver <ellis@rwest.io>
parents: 219
diff changeset
20
   rm -f $INFRA_HOST_CONFIG
213
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
21
   check_mem
218
f88e8a46080b check mem
Richard Westhaver <ellis@rwest.io>
parents: 217
diff changeset
22
   local _mem_total="$RETVAL"
213
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
23
   check_disk
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
24
   check_mod kvm
254
e2b8d0be0d24 autogen updates
Richard Westhaver <ellis@rwest.io>
parents: 251
diff changeset
25
   check_mod btrfs
213
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
26
   get_architecture || return 1
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
27
   local _arch="$RETVAL"
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
28
   assert_nz "$_arch" "arch"
251
80e639d0b203 quick fixes
Richard Westhaver <ellis@rwest.io>
parents: 239
diff changeset
29
   _write ";;; $INFRA_HOST_CONFIG -*- mode:skel -*-"
213
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
30
   _write ":arch \"$_arch\""
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
31
   kernel_version
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
32
   local _kernel_version="$RETVAL"
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
33
   _write ":kernel \"$_kernel_version\""
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
34
   check_cpus
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
35
   local _num_cpus="$RETVAL"
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
36
   _write ":cpus $_num_cpus"
218
f88e8a46080b check mem
Richard Westhaver <ellis@rwest.io>
parents: 217
diff changeset
37
   _write ":mem $_mem_total"
213
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
38
   case "$_arch" in
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
39
     *windows*)
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
40
       _write ":ext \"exe\""
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
41
       ;;
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
42
     *)
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
43
       _write ":ext nil"
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
44
   esac
254
e2b8d0be0d24 autogen updates
Richard Westhaver <ellis@rwest.io>
parents: 251
diff changeset
45
   say $INFRA_HOST_CONFIG
213
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
46
 }
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
47
 
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
48
 say() {
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
49
   printf '%s\n' "$1"
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
50
 }
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
51
 
219
b1a96e0e3add profile in sxp only
Richard Westhaver <ellis@rwest.io>
parents: 218
diff changeset
52
 say_var() {
b1a96e0e3add profile in sxp only
Richard Westhaver <ellis@rwest.io>
parents: 218
diff changeset
53
   say "$1=$(eval echo "\$$1" 2> /dev/null)"
b1a96e0e3add profile in sxp only
Richard Westhaver <ellis@rwest.io>
parents: 218
diff changeset
54
 }
b1a96e0e3add profile in sxp only
Richard Westhaver <ellis@rwest.io>
parents: 218
diff changeset
55
 
213
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
56
 _write() {
239
7c6e3bbfe8cd bootstrap mv
Richard Westhaver <ellis@rwest.io>
parents: 219
diff changeset
57
   say "$1" >> $INFRA_HOST_CONFIG
213
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
58
 }
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
59
 
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
60
 err() {
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
61
   say "$1" >&2
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
62
   exit 1
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
63
 }
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
64
 
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
65
 assert_nz() {
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
66
   if [ -z "$1" ]; then err "assert_nz $2"; fi
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
67
 }
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
68
 
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
69
 check_cmd() {
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
70
   command -v "$1" > /dev/null 2>&1
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
71
 }
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
72
 
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
73
 need_cmd() {
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
74
   if ! check_cmd "$1"; then
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
75
     err "need '$1' (command not found)"
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
76
   fi
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
77
 }
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
78
 
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
79
 ensure() {
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
80
   if ! "$@"; then err "command failed: $*"; fi
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
81
 }
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
82
 
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
83
 check_proc() {
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
84
   # Check for /proc by looking for the /proc/self/exe link
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
85
   # This is only run on Linux
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
86
   if ! test -L /proc/self/exe ; then
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
87
     err "fatal: Unable to find /proc/self/exe.  Is /proc mounted?  Installation cannot proceed without /proc."
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
88
   fi
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
89
 }
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
90
 
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
91
 get_bitness() {
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
92
   # Architecture detection without dependencies beyond coreutils.
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
93
   # ELF files start out "\x7fELF", and the following byte is
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
94
   #   0x01 for 32-bit and
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
95
   #   0x02 for 64-bit.
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
96
   # The printf builtin on some shells like dash only supports octal
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
97
   # escape sequences, so we use those.
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
98
   local _current_exe_head
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
99
   _current_exe_head=$(head -c 5 /proc/self/exe )
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
100
   if [ "$_current_exe_head" = "$(printf '\177ELF\001')" ]; then
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
101
     echo 32
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
102
   elif [ "$_current_exe_head" = "$(printf '\177ELF\002')" ]; then
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
103
     echo 64
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
104
   else
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
105
     err "unknown platform bitness"
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
106
   fi
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
107
 }
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
108
 
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
109
 is_host_amd64_elf() {
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
110
   # ELF e_machine detection without dependencies beyond coreutils.
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
111
   # Two-byte field at offset 0x12 indicates the CPU,
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
112
   # but we're interested in it being 0x3E to indicate amd64, or not that.
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
113
   local _current_exe_machine
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
114
   _current_exe_machine=$(head -c 19 /proc/self/exe | tail -c 1)
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
115
   [ "$_current_exe_machine" = "$(printf '\076')" ]
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
116
 }
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
117
 
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
118
 get_endianness() {
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
119
   local cputype=$1
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
120
   local suffix_eb=$2
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
121
   local suffix_el=$3
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
122
 
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
123
   # detect endianness without od/hexdump, like get_bitness() does.
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
124
   local _current_exe_endianness
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
125
   _current_exe_endianness="$(head -c 6 /proc/self/exe | tail -c 1)"
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
126
   if [ "$_current_exe_endianness" = "$(printf '\001')" ]; then
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
127
     echo "${cputype}${suffix_el}"
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
128
   elif [ "$_current_exe_endianness" = "$(printf '\002')" ]; then
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
129
     echo "${cputype}${suffix_eb}"
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
130
   else
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
131
     err "unknown platform endianness"
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
132
   fi
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
133
 }
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
134
 
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
135
 get_architecture() {
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
136
   local _ostype _cputype _bitness _arch _clibtype
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
137
   _ostype="$(uname -s)"
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
138
   _cputype="$(uname -m)"
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
139
   _clibtype="gnu"
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
140
 
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
141
   if [ "$_ostype" = Linux ]; then
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
142
     if [ "$(uname -o)" = Android ]; then
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
143
       _ostype=Android
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
144
     fi
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
145
     if ldd --version 2>&1 | grep -q 'musl'; then
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
146
       _clibtype="musl"
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
147
     fi
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
148
   fi
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
149
 
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
150
   if [ "$_ostype" = Darwin ] && [ "$_cputype" = i386 ]; then
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
151
     # Darwin `uname -m` lies
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
152
     if sysctl hw.optional.x86_64 | grep -q ': 1'; then
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
153
       _cputype=x86_64
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
154
     fi
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
155
   fi
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
156
 
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
157
   if [ "$_ostype" = SunOS ]; then
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
158
     # Both Solaris and illumos presently announce as "SunOS" in "uname -s"
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
159
     # so use "uname -o" to disambiguate.  We use the full path to the
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
160
     # system uname in case the user has coreutils uname first in PATH,
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
161
     # which has historically sometimes printed the wrong value here.
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
162
     if [ "$(/usr/bin/uname -o)" = illumos ]; then
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
163
       _ostype=illumos
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
164
     fi
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
165
 
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
166
     # illumos systems have multi-arch userlands, and "uname -m" reports the
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
167
     # machine hardware name; e.g., "i86pc" on both 32- and 64-bit x86
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
168
     # systems.  Check for the native (widest) instruction set on the
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
169
     # running kernel:
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
170
     if [ "$_cputype" = i86pc ]; then
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
171
       _cputype="$(isainfo -n)"
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
172
     fi
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
173
   fi
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
174
 
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
175
   case "$_ostype" in
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
176
 
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
177
     Android)
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
178
       _ostype=linux-android
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
179
       ;;
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
180
 
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
181
     Linux)
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
182
       check_proc
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
183
       _ostype=unknown-linux-$_clibtype
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
184
       _bitness=$(get_bitness)
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
185
       ;;
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
186
 
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
187
     FreeBSD)
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
188
       _ostype=unknown-freebsd
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
189
       ;;
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
190
 
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
191
     NetBSD)
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
192
       _ostype=unknown-netbsd
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
193
       ;;
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
194
 
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
195
     DragonFly)
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
196
       _ostype=unknown-dragonfly
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
197
       ;;
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
198
 
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
199
     Darwin)
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
200
       _ostype=apple-darwin
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
201
       ;;
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
202
 
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
203
     illumos)
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
204
       _ostype=unknown-illumos
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
205
       ;;
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
206
 
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
207
     MINGW* | MSYS* | CYGWIN* | Windows_NT)
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
208
       _ostype=pc-windows-gnu
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
209
       ;;
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
210
 
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
211
     *)
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
212
       err "unrecognized OS type: $_ostype"
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
213
       ;;
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
214
 
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
215
   esac
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
216
 
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
217
   case "$_cputype" in
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
218
 
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
219
     i386 | i486 | i686 | i786 | x86)
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
220
       _cputype=i686
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
221
       ;;
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
222
 
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
223
     xscale | arm)
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
224
       _cputype=arm
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
225
       if [ "$_ostype" = "linux-android" ]; then
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
226
         _ostype=linux-androideabi
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
227
       fi
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
228
       ;;
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
229
 
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
230
     armv6l)
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
231
       _cputype=arm
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
232
       if [ "$_ostype" = "linux-android" ]; then
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
233
         _ostype=linux-androideabi
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
234
       else
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
235
         _ostype="${_ostype}eabihf"
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
236
       fi
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
237
       ;;
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
238
 
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
239
     armv7l | armv8l)
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
240
       _cputype=armv7
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
241
       if [ "$_ostype" = "linux-android" ]; then
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
242
         _ostype=linux-androideabi
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
243
       else
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
244
         _ostype="${_ostype}eabihf"
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
245
       fi
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
246
       ;;
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
247
 
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
248
     aarch64 | arm64)
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
249
       _cputype=aarch64
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
250
       ;;
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
251
 
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
252
     x86_64 | x86-64 | x64 | amd64)
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
253
       _cputype=x86_64
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
254
       ;;
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
255
 
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
256
     mips)
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
257
       _cputype=$(get_endianness mips '' el)
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
258
       ;;
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
259
 
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
260
     mips64)
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
261
       if [ "$_bitness" -eq 64 ]; then
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
262
         # only n64 ABI is supported for now
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
263
         _ostype="${_ostype}abi64"
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
264
         _cputype=$(get_endianness mips64 '' el)
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
265
       fi
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
266
       ;;
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
267
 
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
268
     ppc)
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
269
       _cputype=powerpc
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
270
       ;;
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
271
 
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
272
     ppc64)
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
273
       _cputype=powerpc64
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
274
       ;;
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
275
 
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
276
     ppc64le)
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
277
       _cputype=powerpc64le
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
278
       ;;
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
279
 
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
280
     s390x)
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
281
       _cputype=s390x
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
282
       ;;
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
283
     riscv64)
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
284
       _cputype=riscv64gc
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
285
       ;;
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
286
     loongarch64)
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
287
       _cputype=loongarch64
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
288
       ;;
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
289
     *)
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
290
       err "unknown CPU type: $_cputype"
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
291
 
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
292
   esac
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
293
 
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
294
   # Detect 64-bit linux with 32-bit userland
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
295
   if [ "${_ostype}" = unknown-linux-gnu ] && [ "${_bitness}" -eq 32 ]; then
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
296
     case $_cputype in
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
297
       x86_64)
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
298
         if [ -n "${CPUTYPE:-}" ]; then
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
299
           _cputype="$CPUTYPE"
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
300
         else {
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
301
           # 32-bit executable for amd64 = x32
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
302
           if is_host_amd64_elf; then {
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
303
             echo "This host is running an x32 userland; as it stands, x32 support is poor," 1>&2
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
304
             echo "and there isn't a native toolchain -- you will have to install" 1>&2
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
305
             echo "multiarch compatibility with i686 and/or amd64, then select one" 1>&2
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
306
             echo "by re-running this script with the CPUTYPE environment variable" 1>&2
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
307
             echo "set to i686 or x86_64, respectively." 1>&2
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
308
             exit 1
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
309
           }; else
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
310
             _cputype=i686
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
311
           fi
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
312
         }; fi
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
313
         ;;
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
314
       mips64)
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
315
         _cputype=$(get_endianness mips '' el)
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
316
         ;;
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
317
       powerpc64)
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
318
         _cputype=powerpc
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
319
         ;;
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
320
       aarch64)
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
321
         _cputype=armv7
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
322
         if [ "$_ostype" = "linux-android" ]; then
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
323
           _ostype=linux-androideabi
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
324
         else
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
325
           _ostype="${_ostype}eabihf"
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
326
         fi
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
327
         ;;
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
328
       riscv64gc)
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
329
         err "riscv64 with 32-bit userland unsupported"
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
330
         ;;
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
331
     esac
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
332
   fi
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
333
 
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
334
   if [ "$_ostype" = "unknown-linux-gnueabihf" ] && [ "$_cputype" = armv7 ]; then
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
335
     if ensure grep '^Features' /proc/cpuinfo | grep -q -v neon; then
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
336
       # At least one processor does not have NEON.
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
337
       _cputype=arm
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
338
     fi
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
339
   fi
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
340
 
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
341
   _arch="${_cputype}-${_ostype}"
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
342
 
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
343
   RETVAL="$_arch"
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
344
 }
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
345
 
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
346
 mem_total () {
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
347
   local _mem_total
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
348
   _mem_total=$(awk '/MemTotal/ {print $2}' /proc/meminfo)
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
349
   RETVAL="$_mem_total"
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
350
 }
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
351
 
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
352
 check_mem () {
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
353
   mem_total
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
354
   local _mem_total="$RETVAL"
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
355
   local _mem_min=8388608 # 8Gb in kB
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
356
   if [ "$_mem_total" -lt "$_mem_min" ]; then
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
357
     err "not enough memory: $_mem_total < $_mem_min";
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
358
   fi
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
359
 }
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
360
 
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
361
 disk_free () {
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
362
   local _disk_free
217
Richard Westhaver <ellis@rwest.io>
parents: 213
diff changeset
363
   _disk_free=$(df . | tail -n1 | awk '{print $4}')
Richard Westhaver <ellis@rwest.io>
parents: 213
diff changeset
364
   RETVAL="${_disk_free}"
213
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
365
 }
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
366
 
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
367
 check_disk () {
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
368
   disk_free
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
369
   local _disk_free="$RETVAL"
217
Richard Westhaver <ellis@rwest.io>
parents: 213
diff changeset
370
   local _disk_min=33554432 # in bytes
213
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
371
   if [ "$_disk_free" -lt "$_disk_min" ]; then
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
372
     err "not enough disk space: $_disk_free < $_disk_min"
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
373
   fi
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
374
 }
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
375
 
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
376
 kernel_version () {
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
377
   local _kernel_version
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
378
   _kernel_version=$(uname -r)
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
379
   RETVAL="$_kernel_version"
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
380
 }
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
381
 
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
382
 check_mod () {
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
383
   if ! lsmod | grep -wq "$1"; then
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
384
     err "kernel module $1 isn't loaded"
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
385
   fi
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
386
 }
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
387
 
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
388
 num_cpus () {
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
389
   local _num_cpus
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
390
   _num_cpus=$(grep -c '^processor' /proc/cpuinfo 2>/dev/null)
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
391
   RETVAL="$_num_cpus"
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
392
   # sysctl -n hw.ncpu # nproc --all
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
393
 }
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
394
 
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
395
 check_cpus () {
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
396
   num_cpus
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
397
   local _num_cpus="$RETVAL"
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
398
   local _min_cpus=8
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
399
   if [ "$_num_cpus" -lt "$_min_cpus" ]; then
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
400
     err "not enough cpu threads ($_num_cpus < $_min_cpus)"
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
401
   fi
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
402
 }
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
403
 
219
b1a96e0e3add profile in sxp only
Richard Westhaver <ellis@rwest.io>
parents: 218
diff changeset
404
 print_env () {
b1a96e0e3add profile in sxp only
Richard Westhaver <ellis@rwest.io>
parents: 218
diff changeset
405
   say_var STASH
b1a96e0e3add profile in sxp only
Richard Westhaver <ellis@rwest.io>
parents: 218
diff changeset
406
   say_var STORE
b1a96e0e3add profile in sxp only
Richard Westhaver <ellis@rwest.io>
parents: 218
diff changeset
407
   say_var DIST
b1a96e0e3add profile in sxp only
Richard Westhaver <ellis@rwest.io>
parents: 218
diff changeset
408
   say_var PACKY_URL
b1a96e0e3add profile in sxp only
Richard Westhaver <ellis@rwest.io>
parents: 218
diff changeset
409
   say_var VC_URL
b1a96e0e3add profile in sxp only
Richard Westhaver <ellis@rwest.io>
parents: 218
diff changeset
410
   say_var INSTALL_PREFIX
b1a96e0e3add profile in sxp only
Richard Westhaver <ellis@rwest.io>
parents: 218
diff changeset
411
   say_var CC
b1a96e0e3add profile in sxp only
Richard Westhaver <ellis@rwest.io>
parents: 218
diff changeset
412
   say_var AR
b1a96e0e3add profile in sxp only
Richard Westhaver <ellis@rwest.io>
parents: 218
diff changeset
413
   say_var HG
b1a96e0e3add profile in sxp only
Richard Westhaver <ellis@rwest.io>
parents: 218
diff changeset
414
   say_var GIT
b1a96e0e3add profile in sxp only
Richard Westhaver <ellis@rwest.io>
parents: 218
diff changeset
415
   say_var LISP
b1a96e0e3add profile in sxp only
Richard Westhaver <ellis@rwest.io>
parents: 218
diff changeset
416
   say_var RUST
b1a96e0e3add profile in sxp only
Richard Westhaver <ellis@rwest.io>
parents: 218
diff changeset
417
   say_var LD
b1a96e0e3add profile in sxp only
Richard Westhaver <ellis@rwest.io>
parents: 218
diff changeset
418
   say_var SHELL
b1a96e0e3add profile in sxp only
Richard Westhaver <ellis@rwest.io>
parents: 218
diff changeset
419
   say_var DEV
b1a96e0e3add profile in sxp only
Richard Westhaver <ellis@rwest.io>
parents: 218
diff changeset
420
   say_var DEV_HOME
b1a96e0e3add profile in sxp only
Richard Westhaver <ellis@rwest.io>
parents: 218
diff changeset
421
   say_var ID
b1a96e0e3add profile in sxp only
Richard Westhaver <ellis@rwest.io>
parents: 218
diff changeset
422
   say_var WORKER
b1a96e0e3add profile in sxp only
Richard Westhaver <ellis@rwest.io>
parents: 218
diff changeset
423
   say_var WORKER_ID
b1a96e0e3add profile in sxp only
Richard Westhaver <ellis@rwest.io>
parents: 218
diff changeset
424
   say_var WORKER_HOME
b1a96e0e3add profile in sxp only
Richard Westhaver <ellis@rwest.io>
parents: 218
diff changeset
425
   say_var CARGO_HOME
b1a96e0e3add profile in sxp only
Richard Westhaver <ellis@rwest.io>
parents: 218
diff changeset
426
   say_var RUSTUP_HOME
b1a96e0e3add profile in sxp only
Richard Westhaver <ellis@rwest.io>
parents: 218
diff changeset
427
 }
b1a96e0e3add profile in sxp only
Richard Westhaver <ellis@rwest.io>
parents: 218
diff changeset
428
 
213
a7129c8e52d1 profiles, host.sxp
Richard Westhaver <ellis@rwest.io>
parents: 212
diff changeset
429
 main "$@" || exit 1