diff options
| -rw-r--r-- | altosui/Makefile.am | 20 | ||||
| -rw-r--r-- | altosui/linux-install.sh | 190 | 
2 files changed, 206 insertions, 4 deletions
| diff --git a/altosui/Makefile.am b/altosui/Makefile.am index 32a3df97..20b234ab 100644 --- a/altosui/Makefile.am +++ b/altosui/Makefile.am @@ -171,6 +171,7 @@ DOC=$(ALTUSMETRUM_DOC) $(ALTOS_DOC) $(TELEMETRY_DOC) $(TEMPLATE_DOC)  # Distribution targets  LINUX_DIST=Altos-Linux-$(VERSION).tar.bz2 +LINUX_SH=Altos-Linux-$(VERSION).sh  MACOSX_DIST=Altos-Mac-$(VERSION).dmg  WINDOWS_DIST=Altos-Windows-$(VERSION_DASH).exe @@ -179,7 +180,7 @@ FAT_FILES=$(FATJAR) $(ALTOSLIB_CLASS) $(ALTOSUILIB_CLASS) $(FREETTS_CLASS) $(JFR  LINUX_LIBS=libaltos32.so libaltos64.so  LINUX_FILES=$(FAT_FILES) $(LINUX_LIBS) $(FIRMWARE) $(DOC) -LINUX_EXTRA=altosui-fat +LINUX_EXTRA=altosui-fat ../debian/altos.desktop ../debian/altusmetrum.xpm  MACOSX_INFO_PLIST=Info.plist  MACOSX_FILES=$(FAT_FILES) libaltos.dylib $(MACOSX_INFO_PLIST) $(DOC) ReadMe-Mac.rtf @@ -191,7 +192,7 @@ all-local: classes/altosui $(JAR) altosui altosui-test altosui-jdb  clean-local:  	-rm -rf classes $(JAR) $(FATJAR) \ -		$(LINUX_DIST) $(MACOSX_DIST) windows $(WINDOWS_DIST) $(ALTOSLIB_CLASS) $(ALTOSUILIB_CLASS) $(FREETTS_CLASS) \ +		$(LINUX_DIST) $(LINUX_SH) $(MACOSX_DIST) windows $(WINDOWS_DIST) $(ALTOSLIB_CLASS) $(ALTOSUILIB_CLASS) $(FREETTS_CLASS) \  		$(JFREECHART_CLASS) $(JCOMMON_CLASS) $(LIBALTOS) Manifest.txt Manifest-fat.txt altos-windows.log altos-windows.nsi \  		altosui altosui-test altosui-jdb macosx linux @@ -200,15 +201,20 @@ if FATINSTALL  FATTARGET=$(FATDIR)/$(VERSION)  LINUX_DIST_TARGET=$(FATTARGET)/$(LINUX_DIST) +LINUX_SH_TARGET=$(FATTARGET)/$(LINUX_SH)  MACOSX_DIST_TARGET=$(FATTARGET)/$(MACOSX_DIST)  WINDOWS_DIST_TARGET=$(FATTARGET)/$(WINDOWS_DIST) -fat: $(LINUX_DIST_TARGET) $(MACOSX_DIST_TARGET) $(WINDOWS_DIST_TARGET) +fat: $(LINUX_DIST_TARGET) $(LINUX_SH_TARGET) $(MACOSX_DIST_TARGET) $(WINDOWS_DIST_TARGET)  $(LINUX_DIST_TARGET): $(LINUX_DIST)  	mkdir -p $(FATTARGET)  	cp -p $< $@ +$(LINUX_SH_TARGET): $(LINUX_SH) +	mkdir -p $(FATTARGET) +	cp -p $< $@ +  $(MACOSX_DIST_TARGET): $(MACOSX_DIST)  	mkdir -p $(FATTARGET)  	cp -p $< $@ @@ -218,7 +224,7 @@ $(WINDOWS_DIST_TARGET): $(WINDOWS_DIST)  	cp -p $< $@  else -fat: $(LINUX_DIST) $(MACOSX_DIST) $(WINDOWS_DIST) +fat: $(LINUX_DIST) $(LINUX_SH) $(MACOSX_DIST) $(WINDOWS_DIST)  endif @@ -329,10 +335,16 @@ $(LINUX_DIST): $(LINUX_FILES) $(LINUX_EXTRA)  	-rm -rf linux  	mkdir -p linux/AltOS  	cp -p $(LINUX_FILES) linux/AltOS +	sed -e 's;/usr/bin;%BIN%;' -e 's;/usr/share/pixmaps;%BIN%;' $(srcdir)/../debian/altos.desktop > linux/AltOS/altos.desktop.in +	cp -p $(srcdir)/../debian/altusmetrum.xpm linux/AltOS/altusmetrum.xpm  	cp -p altosui-fat linux/AltOS/altosui  	chmod +x linux/AltOS/altosui  	tar cjf $@ -C linux AltOS +$(LINUX_SH): $(LINUX_DIST) linux-install.sh +	cat linux-install.sh $(LINUX_DIST) > $@ +	chmod +x $@ +  $(MACOSX_DIST): $(MACOSX_FILES) $(MACOSX_EXTRA) Makefile  	-rm -f $@  	-rm -rf macosx diff --git a/altosui/linux-install.sh b/altosui/linux-install.sh new file mode 100644 index 00000000..c5101eb4 --- /dev/null +++ b/altosui/linux-install.sh @@ -0,0 +1,190 @@ +#!/bin/sh + +can_ask=y + +finish() +{ +    if [ "$can_ask" = "y" ]; then +	echo "" +	echo -n "Press enter to continue..." +	read foo +    fi +    exit $1 +} + +# +# Make sure we have a terminal to talk to +# + +if tty -s; then +    : +else +    case "$DISPLAY" in +	"") +	echo 'No user input available' +	can_ask=n +	;; +	*) +	GUESS_XTERMS="x-terminal-emulator xterm rxvt roxterm gnome-terminal dtterm eterm Eterm kvt konsole aterm" +        for a in $GUESS_XTERMS; do +            if type $a >/dev/null 2>&1; then +                XTERM=$a +                break +            fi +        done +	case "$XTERM" in +	    "") +	    echo 'No terminal emulator available' +	    can_ask=n +	    ;; +	    *) +	    exec "$XTERM" -e "sh '$0'" +	    ;; +	esac +	;; +    esac +fi + +# +# Make sure we can run java +# + +echo -n "Checking for java..." + +if java -version > /dev/null 2>&1; then +    echo " found it." +else +    echo " java isn't working." +    echo "" +    echo "You'll need to install a java runtime system" +    echo "on this computer before AltOS will work properly." +    finish 1 +fi +     +# +# Pick an installation target +#  + +if [ '(' -d /opt -a -w /opt ')' -o '(' -d /opt/AltOS -a -w /opt/AltOS ')' ]; then +    target_default=/opt +else +    target_default="$HOME" +fi + +case "$#" in +0) +    echo -n "Installation location [default: $target_default] " +    if [ "$can_ask" = "y" ]; then +	read target +    else +	echo "" +	target="" +    fi +    case "$target" in +	"") +	target="$target_default" +	;; +    esac +    ;; +*) +    target="$1" +    ;; +esac + +target_altos="$target"/AltOS + +echo -n "Installing to $target..." + +# +# Make sure the target exists +# +mkdir -p "$target_altos" + +if [ ! -d "$target_altos" ]; then +    echo "$target_altos does not exist and cannot be created" +    finish 1 +fi + +if [ ! -w "$target_altos" ]; then +    echo "$target_altos cannot be written" +    finish 1 +fi + +# +# Unpack the tar archive appended to the end of this script +# +archive_line=`awk '/^__ARCHIVE_BELOW__/ {print NR + 1; exit 0; }' "$0"` + +tail -n+$archive_line "$0" | tar xjf - -C "$target" + +case $? in +0) +    echo " done." +    ;; +*) +    echo "Install failed." +    finish 1 +    ;; +esac + +# +# Create the .desktop file by editing the paths +# +case "$target" in +/*) +    target_abs="$target" +    ;; +*) +    target_abs=`pwd`/$target +    ;; +esac + +BIN="$target_abs"/AltOS + +desktop="$target"/AltOS/altos.desktop + +rm -f "$desktop" +sed "s;%BIN%;$BIN;" "$target"/AltOS/altos.desktop.in > "$desktop" + +# +# Figure out where to install the .desktop file. If we can, write it +# to the public /usr/share/applications, otherwise, write it to the +# per-user ~/.local/share/applications +# + +public=/usr/share/applications +private=$HOME/.local/share/applications +apps="" + +if [ -d "$public" -a -w "$public" ]; then +    apps="$public" +else +    mkdir -p "$private" >/dev/null 2>&1  +    if [ -d "$private" -a -w "$private" ]; then +	apps="$private" +    fi +fi +	 +case "$apps" in +"") +    echo "Cannot install application icon" +    finish 1 +    ;; +esac + +echo -n "Installing .desktop file to $apps..." + +cp "$desktop" "$apps" + +case "$?" in +0) +    echo " done." +    ;; +*) +    echo " failed." +    ;; +esac + +finish 0 + +__ARCHIVE_BELOW__ | 
