summaryrefslogtreecommitdiff
path: root/scripts/context/stubs/install/first-setup.sh
blob: 83af6a97e67f3f1519a180a11a63712cf80085d9 (plain)
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
#!/bin/sh

# Takes the same arguments as mtx-update

# you may change this if you want ...
CONTEXTROOT="$PWD/tex"

# suggested by Tobias Florek to check for rsync
if [ ! -x "`which rsync`" ]; then
	echo "You need to install rsync first."
	exit 1
fi

system=`uname -s`
cpu=`uname -m`

case "$system" in
	# linux
	Linux)
		if command -v ldd >/dev/null && ldd --version 2>&1 | grep -E '^musl' >/dev/null
		then
			libc=musl
		else
			libc=glibc
		fi
		case "$cpu" in
			i*86)
				case "$libc" in
					glibc) platform="linux" ;;
					musl) platform="linuxmusl" ;;
				esac ;;
			x86_64|ia64)
				case "$libc" in
					glibc) platform="linux-64" ;;
					musl) platform="linuxmusl-64" ;;
				esac ;;

			# a little bit of cheating with ppc64 (won't work on Gentoo)
			ppc|ppc64) platform="linux-ppc" ;;

			# we currently support just mipsel, but Debian is lying (reports mips64)
			# we need more hacks to fix the situation, this is just a temporary solution
			mips|mips64|mipsel|mips64el) platform="linux-mipsel" ;;

			armv7l) platform="linux-armhf"
				# machine id output by uname(1) is insufficent to determine whether this
				# is a soft or hard float system so we check ourselves.
				# a) binutils, this should work almost everywhere
				if $(which readelf >/dev/null 2>&1); then
					readelf -A /proc/self/exe | grep -q '^ \+Tag_ABI_VFP_args'
					if [ $? != 0 ]; then
						platform="linux-armel"
					fi
				# b) debian-specific fallback
				elif $(which dpkg >/dev/null 2>&1); then
					if [ "$(dpkg --print-architecture)" = armel ]; then
						platform="linux-armel"
					fi
				fi
				# else go with hard fp
				;;

			*) platform="unknown" ;;
		esac ;;
	# Mac OS X
	Darwin)
		case "$cpu" in
			i*86) platform="osx-intel" ;;
			x86_64) platform="osx-64" ;;
			ppc*|powerpc|power*|Power*) platform="osx-ppc" ;;
			*) platform="unknown" ;;
		esac ;;
	# FreeBSD
	FreeBSD|freebsd)
		case "$cpu" in
			i*86) platform="freebsd" ;;
			amd64) platform="freebsd-amd64" ;;
			*) platform="unknown" ;;
		esac ;;
	# kFreeBSD (debian)
	GNU/kFreeBSD)
		case "$cpu" in
			#i*86) platform="kfreebsd-i386" ;;
			#x86_64|amd64) platform="kfreebsd-amd64" ;;
			*) platform="unknown" ;;
		esac ;;
	# OpenBSD
	OpenBSD)
		version=`uname -r`
		case "$cpu" in
			i*86) platform="openbsd${version}" ;;
			amd64) platform="openbsd${version}-amd64" ;;
			*) platform="unknown" ;;
		esac ;;
	# cygwin
	CYGWIN*)
		case "$cpu" in
			i*86) platform="mswin" ;; # cygwin
            # Pavneet Arora. 20190924.  For Cygwin 64-bit platform should be win64.
			x86_64|ia64) platform="win64" ;; # cygwin-64
			*) platform="unknown" ;;
		esac ;;
	# UWIN
	UWIN*)
		case "$cpu" in
			i*86) platform="mswin" ;;
			*) platform="unknown" ;;
		esac ;;
	# SunOS/Solaris
	SunOS)
		case "$cpu" in
			sparc) platform="solaris-sparc" ;;
			i86pc) platform="solaris-intel" ;;
			*) platform="unknown" ;;
		esac ;;
	*) platform="unknown"
esac

# temporary patch for 64-bit Leopard with 32-bit kernel
if test "$platform" = "osx-intel"; then
	# if running Snow Leopard or later
	# better: /usr/bin/sw_vers -productVersion
	if test `uname -r|cut -f1 -d"."` -ge 10 ; then
		# if working on 64-bit hardware
		if test `sysctl -n hw.cpu64bit_capable` = 1; then
			# snowleopard32=TRUE
			platform="osx-64"
		fi
	fi
fi

if test "$platform" = "unknown" ; then
	echo "Error: your system \"$system $cpu\" is not supported yet."
	echo "Please report to the ConTeXt mailing-list (ntg-context@ntg.nl)"
	exit
elif test "$platform" = "linux-ppc" ; then
	echo "Error: support for your system \"$platform\" has been dropped."
	echo "Please ask on to the ConTeXt mailing-list if you still need it (ntg-context@ntg.nl)"
	exit
fi

# if you want to enforce some specific platform
# (when 'uname' doesn't agree with true architecture), uncomment and modify next line:
# platform=linux

# download or rsync the latest scripts first
rsync -rlptv rsync://contextgarden.net/minimals/setup/$platform/bin .

# use native windows binaries on cygwin
# Pavneet Arora. 20190924.
# ..Commented out the following section entirely.
#if test "$platform" = "cygwin" ; then
#	platform=mswin
#fi

# download or update the distribution
# you may remove the --context=beta switch if you want to use "current"
# you can use --engine=luatex if you want just mkiv
env PATH="$PWD/bin:$CONTEXTROOT/texmf-$platform/bin:$PATH" MTX_PLATFORM="$platform" \
./bin/mtxrun --script ./bin/mtx-update.lua --force --update --make --context=beta --engine=luatex --platform="$platform" --texroot="$CONTEXTROOT" $@
echo "./bin/mtxrun --script ./bin/mtx-update.lua --force --update --make --context=beta --engine=luatex --platform=\"$platform\" --texroot=\"$CONTEXTROOT\" $@"

echo
echo "When you want to use context, you need to initialize the tree by typing:"
echo
echo "  . $CONTEXTROOT/setuptex"
echo
echo "in your shell or add"
echo "  \"$CONTEXTROOT/texmf-$platform/bin\""
echo "to PATH variable if you want to set it permanently."
echo "This can usually be done in .bashrc, .bash_profile"
echo "(or whatever file is used to initialize your shell)."
echo