#ejecutar make install  cuando pida clave sudo dar
# debe tenerse sudo
USERID=$(shell id -u)
USERNAME=$(shell id -un)
FEC=$(shell date '+%Y-%m-%d')
SHELL=/bin/bash
DISTRO=$(shell distro.sh)


# antes de lib
all: all2
#install

define findfirstSB
$(shell $(shellpath) test -x /usr/$1  && echo /usr;\
                 test -x /usr/local/$1  && echo /usr/local;\
                 test -x ~/$1  && echo ~;)
endef
PREFIXMLIB=$(call findfirstSB,/share/summapack/data/makefile.lib)
$(info makelib: ${PREFIXMLIB}) 
include $(PREFIXMLIB)/share/summapack/data/makefile.lib


# cada vez que lo invocas lo hace?
#BASETMP = $(shell $(shellpath) mktemp -d |sed -e's/\n//')
BASETMP := $(shell $(shellpath) mktemp -d |sed -e's/\n//'|sed -e's/^\/tmp\///')

$(info base ${BASETMP})

SUDO=sudo #ver makefile gral del viejo simusol

SCEPTRESIMUSOL=$(call findfirst,bin/sceptre)
SIMUSOL=$(call findfirst,bin/simusol)
DIASIMUSOL=$(call findfirst,bin/dia)

$(info DIA: ${DIASIMUSOL})

$(info SIMUSOL: ${SIMUSOL})

$(info SCEPTRE: ${SCEPTRESIMUSOL})

PREFIX=/usr/local
DOT=/
DOC=doc/simusol/pkgs/$(PACK)
SHARE=/share
PREFIXSIM=${PREFIX}${SHARE}${DOT}simusol
PREFIXDOWN=${PREFIX}${SHARE}${DOT}down
DOWN = ${PREFIXDOWN}/pkg
SERVERBAJAR=http://simusol.org/downloads

SERVERSUBIR=simusol.org
SERVERDIR=/var/www/simusol.org/public_html/downloads
SERVERUSER=www-data

sceptresimusolNAME = sceptre-simusol-last.tar.gz
sceptresimusolDIR = $(SERVERBAJAR)/${sceptresimusolNAME}

simusolNAME=simusol-last.tar.gz
simusolDIR=$(SERVERBAJAR)/${simusolNAME}

diasimusolNAME=dia_simusol-last.tar.gz
diasimusolDIR=$(SERVERBAJAR)/${diasimusolNAME}


# cambia de nombre de simusol-summapack a summapack
simusolpackNAME=summapack-last.tar.gz
simusolpackDIR=$(SERVERBAJAR)/${simusolpackNAME}




# debian no suele tener instalado sudo, en ubuntu la gente no suele conocer la clave de root para su
# si no necesita internet o instalar paquetes no lo intenta como forma de saber si lo tiene que hacer
# apt debiera comprobar si estan, si no estan hacer update por el mismo
#dpkg-query -W -f='${Status}'  KKK 2>/dev/null | grep -c "ok installed"
#http://superuser.com/questions/427318/test-if-a-package-is-installed-in-apt/427898

# con gfortran version 4 hay errores en algunos archivos de simusol
#verificar si existe repo antes de add
#ls /etc/apt/sources.list.d/ubuntu-toolchain-r-ubuntu-test* | wc -l

# no se los pone como dependencias pq se usa sudo

all2:
	sudo mkdir -p ${DOWN}
	sudo chmod a+w ${DOWN}
	sudo chmod a+r ${DOWN}
	sudo make uno  updsceptre upddiasimusol updsimusol

uno: updsimusolpack installcompanion


#sudo make upd
#	sudo make updsceptre
#	sudo make upddiasimusol

#sudo make 
#




non:
	make makenonsudo
	sudo make makeinstall 




### instala solo si falta
### necesita usar sudo si instala en /usr
insimusolpack:  
	$(call download,$(SCEPTRESIMUSOL),$(DOWN),${simusolpackNAME},${simusolpackDIR},simusol-pack,SimusolPack,$(call compilation))

### reinstala
#simusol-summapack es el nombre con el cual esta creado el paquete que se baja
#NOta simusol-summapack se renombra a summapack

updsimusolpack: 
	$(call download,,$(DOWN),${simusolpackNAME},${simusolpackDIR},summapack,SummaPack,$(call compilation))



###############################

##############################

### instala solo si falta
### necesita usar sudo si instala en /usr
insceptre:  
	$(call download,$(SCEPTRESIMUSOL),$(DOWN),${sceptresimusolNAME},${sceptresimusolDIR},sceptre-simusol,Sceptre,$(call compilation))

### reinstala
updsceptre: 
	$(call download,,$(DOWN),${sceptresimusolNAME},${sceptresimusolDIR},sceptre-simusol,Sceptre,$(call compilation))



###############################
insimusol:
	$(call download,$(SIMUSOL),$(DOWN),${simusolNAME},${simusolDIR},simusol,Simusol,$(call simusolcomp))

updsimusol: 
	$(call download,,$(DOWN),${simusolNAME},${simusolDIR},simusol,Simusol,$(call simusolcomp))


define simusolcomp
	 make ; \
	 echo NO hacer caso al ejecutar simusol.usuario.instalar 
endef

################################
indiasimusol:
	$(call download,$(DIASIMUSOL),$(DOWN),${diasimusolNAME},${diasimusolDIR},dia-simusol,DiaSimusol,$(call compilation))


upddiasimusol: 
	$(call download,,$(DOWN),${diasimusolNAME},${diasimusolDIR},dia-simusol,DiaSimusol,$(call compilation))


installcompanion:
	sudo packinstall.pl $(DISTRO) sudo REPO-pp:ubuntu-toolchain-r/test  dia gnuplot-x11 libxml-parser-perl gcc gfortran gfortran-6 build-essential xdg-utils mc emacs

#################################


makenonsudo:
	@if [ "$(USERID)" = "0" ]; then echo "No correr como sudo o root"; exit 2; fi
	cd sceptre-simusol-2016-0.1; make clean; make

makeinstall: 
	@if [ "$(USERID)" != "0" ]; then echo "Correr como sudo o root"; exit 2; fi
	cd sceptre-simusol-2016-0.1; make install;
	cd simusol; make install


installpkg:
	@if [ "$(USERID)" != "0" ]; then echo "Correr como sudo o root"; exit 2; fi
	if test `ls /etc/apt/sources.list.d/ubuntu-toolchain-r-ubuntu-test* 2>/dev/null | wc -l` == 0 ; then \
		sudo add-apt-repository -y ppa:ubuntu-toolchain-r/test; exit 0; \
	fi;
	OKI=`dpkg-query -W -f='$${Status}' sudo`;\
	for PROG in dia gnuplot-x11 libxml-parser-perl gcc gfortran gfortran-6 build-essential xdg-utils mc emacs; do \
	     OKP=`dpkg-query -W -f='$${Status}' $$PROG`; \
	     if test x"$$OKP" = x ; then \
	        break; \
	     fi;\
	done;\
	echo "SUDO: $$OKI OTROSAPT:  $$OKP" ; \
	if  test  \( x"$$OKP" = x \) -o \( x"$$OKI" = x \) ; then \
	      if test x"$$OKI" = x ; then \
	        echo "Ahora le pedira la contraseña de root (su)" ;\
		su - -c "apt-get update" ; exit 0;\
	      else \
	        echo "Ahora le pedira la contraseña de usuario (sudo)" ;\
		sudo apt-get update ; exit 0;\
	      fi; \
	fi;  \
	if test x"$$OKI" = x ; then \
	 echo "INSTALAR SUDO $$OKI"; \
	 echo "ahora le pedira la contraseña de root, mas adelante la de usuario para sudo" ;\
	 su - -c "apt-get  --force-yes --yes install sudo && adduser $(USERNAME) sudo" ; \
	 exit ;\
	fi;
	if test x"$$OKP" == x ; then \
		sudo apt-get  --force-yes --yes install dia gnuplot-x11 libxml-parser-perl gcc gfortran gfortran-6 build-essential xdg-utils mc emacs ; exit 0;\
	fi;
	if test -e /usr/bin/gfortran-6 ; then \
		sudo rm /usr/bin/gfortran ;\
		sudo ln -s /usr/bin/gfortran-6 /usr/bin/gfortran;\
	fi;

# no es necesario poner la distro


#	packinstall.pl $(DISTRO) libhttp-dav-perl Getopt::Long YAML::Any Time::localtime File::stat Config File::HomeDir File::Find HTTP::DAV HTTP::Request LWP::UserAgent File::Basename Pod::Usage HTML::TagParser Term::ReadKey Text::ASCIITable File::Path  LWP::Simple;

installx:
	@if [ "$(USERID)" = "0" ]; then echo "No correr como sudo, cuando necesite el programa lo hara."; exit 2; fi
	if test `ls /etc/apt/sources.list.d/ubuntu-toolchain-r-ubuntu-test* 2>/dev/null | wc -l` == 0 ; then \
		sudo add-apt-repository -y ppa:ubuntu-toolchain-r/test; exit 0; \
	fi;
	OKI=`dpkg-query -W -f='$${Status}' sudo`;\
	for PROG in dia gnuplot-x11 libxml-parser-perl gcc gfortran gfortran-6 build-essential xdg-utils mc emacs; do \
	     OKP=`dpkg-query -W -f='$${Status}' $$PROG`; \
	     if test x"$$OKP" = x ; then \
	        break; \
	     fi;\
	done;\
	echo "SUDO: $$OKI OTROSAPT:  $$OKP" ; \
	if  test  \( x"$$OKP" = x \) -o \( x"$$OKI" = x \) ; then \
	      if test x"$$OKI" = x ; then \
	        echo "Ahora le pedira la contraseña de root (su)" ;\
		su - -c "apt-get update" ; exit 0;\
	      else \
	        echo "Ahora le pedira la contraseña de usuario (sudo)" ;\
		sudo apt-get update ; exit 0;\
	      fi; \
	fi;  \
	if test x"$$OKI" = x ; then \
	 echo "INSTALAR SUDO $$OKI"; \
	 echo "ahora le pedira la contraseña de root, mas adelante la de usuario para sudo" ;\
	 su - -c "apt-get  --force-yes --yes install sudo && adduser $(USERNAME) sudo" ; \
	 exit ;\
	fi;
	if test x"$$OKP" == x ; then \
		sudo apt-get  --force-yes --yes install dia gnuplot-x11 libxml-parser-perl gcc gfortran gfortran-6 build-essential xdg-utils mc emacs ; exit 0;\
	fi;
	if test -e /usr/bin/gfortran-6 ; then \
		sudo rm /usr/bin/gfortran ;\
		sudo ln -s /usr/bin/gfortran-6 /usr/bin/gfortran;\
	fi;
	@echo $(USERID) - $(USERNAME)
	cd simusol; sudo make clean; sudo make install
	cd sceptre-simusol-2016-0.1; make clean; make; sudo make install
	echo BORRAR sit antes de hacer tar -xvf con este archivo

#gvfs-bin
#usermod -aG sudo usuario
#gpasswd -a usuario sudo
# en instalar debe haber algo que se instala con otra version de fortran, porque si se hace el orden al reves no fuinciona

cleanlocal:
	sudo rm -f instalar/listado.ls sceptre-simusol-2016-0.1/listado.ls *~ instalar/*~ sceptre-simusol-2016-0.1/*~ ; echo 0
	cd instalar; sudo make clean
	cd sceptre-simusol-2016-0.1; make clean

#dist:   cleanlocal
#	cd ..; tar -zcvf simusol-instalar-todo-$(FEC).tar.gz  sit/*; cd sit; \
#	md5sum ../simusol-instalar-todo-$(FEC).tar.gz > ../simusol-instalar-todo-$(FEC).tar.gz.md5; \
#	ls -l ../simusol-instalar-todo-$(FEC).tar.gz*;  \

#upload: dist
#	scp  ../simusol-instalar-todo-$(FEC).tar.gz  ../simusol-instalar-todo-$(FEC).tar.gz.md5 www-data@simusol.org:/var/www/simusol.org/public_html/downloads	;\
	ssh www-data@simusol.org "cd /var/www/simusol.org/public_html/downloads; rm -f simusol-instalar-todo-last.tar.gz;  rm -f simusol-instalar-todo-last.tar.gz.md5; ln -s simusol-instalar-todo-$(FEC).tar.gz simusol-instalar-todo-last.tar.gz; ln -s simusol-instalar-todo-$(FEC).tar.gz.md5 simusol-instalar-todo-last.tar.gz.md5;";\

#pdv-rio
#automake
#sudo add-apt-repository ppa:texlive-backports/ppa

#emacs texlive-base  texlive-lang-spanish texlive-latex-base latex-beameer texlive-latex-extra texlive-fonts-recommended  
#texlive evince
#texlive-base si se desea trabajar con la documentación.
#nautilus-open-terminal
#gnome-terminal   # en debian para que funcione icono








rmsceptre:
	$(call rmbin,Sceptre,sceptre,$(SCEPTRESIMUSOL))

rmfsceptre: rmsceptre
	$(call rmfbin,Sceptre,${sceptresimusolNAME})


#rmsceptre insceptre

# como no esta terminado el paquete sceptre
setsceptremd5:
	$(call mkmd5,${DOWN},${sceptresimusolNAME},${sceptresimusolDIR})




#########################################################################


rmsimusol:
	$(call rmbin,Simusol,simusol)

rmfsimusol: rmsimusol
	$(call rmfbin,Simusol,${simusolNAME})


#rmsimusol insimusol


#	 if test x$(SUDO) != x ; then \
#	   sudo -n make install ; \
#	  else\
#	   make install;\
#	 fi; \
# ver de eliminar simusol.usuario.instalar, que lo haga simusol si no esta hecho
# debe ejecutarse en el simusol-gui cada vez 



#########################################################################
rmdiasimusol:
	$(call rmbin,DiaSimusol,dia)

rmfdiasimusol: rmdiasimusol
	$(call rmfbin,DiaSimusol,${diasimusolNAME})






#	 if test x$(SUDO) != x ; then \
#	   sudo -n make install ; \
#	  else\
#	   make install;\
#	 fi; \
# ver de eliminar simusol.usuario.instalar, que lo haga simusol si no esta hecho
# debe ejecutarse en el simusol-gui cada vez 

######################################################################################################

# ojo, si se lo llama dentro de sudo hay problemas!!!!!!!!!!!!





# solo borra targets
# sudo sin n fallara enla interfaz grafica

# en realidad sceptre solo se instala por ahora en /usr/local
# /usr esta reservado para paquetes buinarios del sistema, o sea este make nunca instalara asi
# por ahora no se puede instalar sin sudo

# se podria verificar la fecha o algun cheksum, para proceder (siempre) o antes de proceder (a pedido)

#define mkmd5
#	mkdir -p /tmp/saved  2>/dev/null; exit 0;
#	chmod a+w /tmp/saved; exit 0;
#	mv -f $1/$2 /tmp/saved; exit 0;
#	rm -f $1/$2; exit 0;
#	wget --no-check-certificate -c -P $1 $3; 
#	md5sum -t   $1/$2 > $1/$2.md5 ;
#	scp  $1/$2.md5 wwwrun@$(SERVERSUBIR):/srv/www/htdocs/simusol/simusolsite/downloads/$2.md5
#endef
