#
# **************************************************************
# *                  SIMUSOL PROYECT                           *
# *                                                            *
# *         simpack o simusol-pack for SIMUSOL                                    *
# *                                                            *
# *                                                            *
# *   Developed by                                             *
# *   Diego.Saravia@gmail.com, 2016                            *
# *   and could be used with GPL                               *
# *   or every free license with copyleft needed.              *
# *   http://www.simusol.org                                   *
# **************************************************************

# This file is part of simusol-pack
#
#    simusol-pack is free software: you can redistribute it and/or modify
#    it under the terms of the GNU General Public License as published by
#    the Free Software Foundation, either version 3 of the License, or
#    (at your option) any later version.
#
#    Table is distributed in the hope that it will be useful,
#    but WITHOUT ANY WARRANTY; without even the implied warranty of
#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#    GNU General Public License for more details.
#
#    You should have received a copy of the GNU General Public License
#    along with Table.  If not, see <http://www.gnu.org/licenses/>.


#PREFIX=/usr/local

# para que no ejecute el primer objetivo de makefile.lib
all:

include share/summapack/data/makefile.lib
### otros que usen: poner el path de sumapack completo


#este paquete debe ser independiente de todo, si bien se  instala normalemente con el simusol-make

#NAME=simusol-summapack
#VERSION=0.1


#STABLE=last
#STABLE=UNSTABLE

#BASETMP := $(shell $(shellpath) mktemp -d |sed -e's/\n//'|sed -e's/^\/tmp\///')
# con := permanece cte
$(call charla,BASETMP: ${BASETMP}) 


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

$(call charla,SERVERSUBIR: ${SERVERSUBIR})
$(call charla,SERVERDIR: ${SERVERDIR})
$(call charla,SERVERUSER: ${SERVERUSER})

$(call charla,BINFILES $(BINFILES))
$(call charla,IBINFILES $(IBINFILES))
$(call charla,SHAREFILES $(SHAREFILES))
$(call charla,ISHAREFILES $(ISHAREFILES))
$(call charla,ISHAREDIRS $(ISHAREDIRS))
$(call charla,ETCFILES $(ETCFILES))
$(call charla,IETCFILES $(IETCFILES))
$(call charla,IPKGFILES $(IPKGFILES))


#DISTRO=$(shell bin/distro.sh)   si no esta instalado no funcionara
#$(info DISTRO $(DISTO))

$(call charla,DESTDIR $(DESTDIR) PREFIX $(PREFIX))


#$(SUDO) no ponemos sudo, que se instale normalmente usando sudo make o root o su o  falle
# esta comodidad la dejamos para make de mas nivel
# para que no protesten paquetes de otras distros


#$(SUDO) install makefile.lib  $(PREFIX)/share/simusol
#	$(call copytree,/tmp/dist/${NAME}-${VERSION}/,,$(SHAREDIRSRC),$(BINDIRSRC),$(PKGDIRSRC),$(ETCDIRSRC),/tmp/dist/${NAME}-${VERSION}/) 

#curdir es builtin

# DESTDIR=/tmp/$(BASETMP)
$(call charla,PREFIX $(PREFIX)  DESTDIR $(DESTDIR) ETCDIR $(ETCDIR) PKGDIR $(PKGDIR))
installdistvie: clean
	echo "PACKAGE DISTRIBUTION FILE ${PACKV}-${VERSION}-AI.tgz (architecture independent) $(PREFIX)"
	rm -rf /tmp/$(BASETMP) ; 
	mkdir -p /tmp/$(BASETMP) ;
	$(call copytree, /tmp/${BASETMP}$(PREFIX), /tmp/${BASETMP},,$(PREFIX)) 
	cd  /tmp/${BASETMP}; tar -c . | gzip -n> $(CURDIR)/../${PACKV}-${VERSION}-AI.tgz
	md5sum  ../${PACKV}-${VERSION}-AI.tgz>../${PACKV}-${VERSION}-AI.tgz.md5.

#reemplazado por tgzvbuild en makefile.lib
installdistXXXX: clean
	echo "PACKAGE DISTRIBUTION FILE ${PACKV}-${VERSION}-AI.tgz (architecture independent) $(PREFIX)"
	rm -rf /tmp/$(BASETMP) ; 
	mkdir -p /tmp/$(BASETMP) ;
	make DESTDIR=/tmp/$(BASETMP) PREFIX=/usr PKGDIR=$(PKGDIR) install
	cd  /tmp/${BASETMP}; tar -c . | gzip -n> $(CURDIR)/../${PACKV}-${VERSION}-AI.tgz
	md5sum  ../${PACKV}-${VERSION}-AI.tgz>../${PACKV}-${VERSION}-AI.tgz.md5.

#if dist sudo=
# pkgfiles deben ser instaladas en share para que se las coloque en la pc objeto
# y en el raiz del paquete para poder usar el makefile y quiene lo use pueda ver las licencias e instrucciones

preparelocal:
	 sudo apt install libtemplate-perl

# ojo ifeq para todo el make
#ifeq ($(UUU),0)
#                $(error No corrio como root, salir)
#endif
# esto solo funciona en paquete summapack, por eso va aca
# si no es root funciona dando errores, a menos que exista un DESDIR, entonces puede funcionar ok

# ojo poner /var/cache/summapack en arbol! y copytree de var, ver HOME
# make prueba: makefile.lib con el proyecto de ejemplo (pedido del autor,
# 07/10/2026; ver share/summapack/data/MAKEFILE-LIB.md)
# make instalarlib: solo la biblioteca y su catalogo, donde la buscan los
# proyectos (findfirstSB: /usr, /usr/local o ~). Sin root: PREFIX=$(HOME).
# Es la unica copia que vale (paso 5 del plan del 07/10/2026; MAKEFILE-LIB.md).
instalarlib:  ## instala solo makefile.lib y MAKEFILE-LIB.md en $(DESTDIR)$(PREFIX)/share/summapack/data
	install -D -m 755 share/summapack/data/makefile.lib $(DESTDIR)$(PREFIX)/share/summapack/data/makefile.lib
	install -D -m 644 share/summapack/data/MAKEFILE-LIB.md $(DESTDIR)$(PREFIX)/share/summapack/data/MAKEFILE-LIB.md

prueba:  ## prueba makefile.lib (pruebas/prueba-lib.sh) y los scripts de bin/ (pruebas/prueba-bin.sh)
	pruebas/prueba-lib.sh share/summapack/data/makefile.lib
	pruebas/prueba-bin.sh

rpm: export SUMMA_REQUIERE_RPM=1

pkg deb rpm tgz:  ## una construccion desde .summa produce los formatos disponibles
	./hacer-pkg

install:  ## instala summapack en $(DESTDIR)$(PREFIX)
	@test ! -e listado.ls || { echo 'SummaPack: listado.ls previo; revisar antes de instalar' >&2; exit 1; }
	@test ! -e "$(DESTDIR)$(PREFIX)/share/summapack/install-manifest.json" || { echo 'SummaPack: ya hay una instalacion manual; desinstalarla primero' >&2; exit 1; }
	@test ! -e "$(DESTDIR)$(PREFIX)/bin/summapack" || { echo 'SummaPack: ya existe el ejecutable; no sobrescribir una instalacion ajena' >&2; exit 1; }
	@test ! -e "$(DESTDIR)/etc/ld.so.conf.d/local.conf" || { echo 'SummaPack: local.conf ya existe; no sobrescribir configuracion ajena' >&2; exit 1; }
	@test ! -e "$(DESTDIR)/etc/summapack.yaml" || { echo 'SummaPack: summapack.yaml ya existe; no sobrescribir configuracion ajena' >&2; exit 1; }
	echo install de $(PACK), $(DOWNLOAD)
	install -d $(DOWNLOAD); test 0 = 0;
	echo "D:/var/cache/summapack" >> listado.ls ; test 0=0;\
	echo seccion copytree de la instalacion de Summapack
	$(call copytree,$(DESTDIR)$(PREFIX),$(DESTDIR),,$(DESTDIR)$(PREFIX))
	cp  bin/distro.sh $(DESTDIR)$(PREFIX)/bin/distro.sh
	install -D -m 755 subir-doc "$(DESTDIR)$(PREFIX)/bin/subir-doc"
	install -D -m 755 subir-pagina "$(DESTDIR)$(PREFIX)/bin/subir-pagina"
	install -D -m 755 sincronizar-pagina "$(DESTDIR)$(PREFIX)/bin/sincronizar-pagina"
	install -D -m 644 share/summapack/data/subir_pagina.py "$(DESTDIR)$(PREFIX)/share/summapack/data/subir_pagina.py"
	install -D -m 644 share/summapack/data/sincronizar_web.py "$(DESTDIR)$(PREFIX)/share/summapack/data/sincronizar_web.py"
	install -D -m 644 share/summapack/data/paginas-web.json "$(DESTDIR)$(PREFIX)/share/summapack/data/paginas-web.json"
	install -D -m 644 doc/SINCRONIZAR-WEB.md "$(DESTDIR)$(PREFIX)/share/doc/summapack/SINCRONIZAR-WEB.md"
	# No actualizar la base de manuales del anfitrion al preparar DESTDIR.
	@if test -z "$(DESTDIR)" && command -v mandb >/dev/null; then mandb >/dev/null || true; fi
	python3 bin/manifiesto-instalacion registrar --prefix "$(PREFIX)" --destdir "$(DESTDIR)" --listado listado.ls
	echo fin instalacion $(PACK)

uninstall:  ## desinstala solo los archivos intactos de una instalacion manual
	python3 bin/manifiesto-instalacion desinstalar --prefix "$(PREFIX)" --destdir "$(DESTDIR)"

# nota: sacar ese cp a distro.sh y cambiar todos los usos por distro

#### no se puede poner la postinst en /bin, cada paquete pondria la suya
# poner un directorio pkgoper con todos estos
post:
	chmod 777 $(DOWNLOAD)
	chmod -f 666 $(DOWNLOAD)/*

# -f en caso sea reinstalacion


# create full documentantion, from that help routines to .sh y .pl and infofiles, and html pages, and pdf
# form help routines to man

#${DOWNLOAD}:
#	sudo mkdir -p ${DOWNLOAD}
#	sudo chmod -R a+w ${DOWNLOAD}
#	sudo chmod -R a+r ${DOWNLOAD}

# sera medio al pedo sin sudo???? el chmod, no se puede
# download si no esta instalado summapack va a HOME/var/cache/summapack
# aqui instalando summapack
# solo usar si el paquete es summapack



# el bootstrap: installsumma.sh baja bajar-paquetes e instalar-tgz de aca
# installsumma.sh, bajar-paquetes (autonomo) y el diccionario, en la raiz de
# descargas: es lo que hace falta para instalar cualquier paquete
SUBIR_CONF := $(wildcard $(HOME)/.config/simusol/subir)
ifneq ($(SUBIR_CONF),)
SUBIR_SERVIDOR ?= $(shell . $(SUBIR_CONF); echo $$SUBIR_SERVIDOR)
SUBIR_USUARIO ?= $(shell . $(SUBIR_CONF); echo $$SUBIR_USUARIO)
SUBIR_DIR ?= $(shell . $(SUBIR_CONF); echo $$SUBIR_DIR)
endif
SUBIR_DESTINO ?= $(or $(SUBIR_USUARIO),www-data)@$(or $(SUBIR_SERVIDOR),simusol.org):$(or $(SUBIR_DIR),/var/www/simusol.org/public_html/downloads)
.PHONY: subir-readme subir-bootstrap
subir-readme:  ## publica solo la guia 0-README-como-instalar en la raiz de descargas
	scp doc/0-README-como-instalar $(SUBIR_DESTINO)/

subir-bootstrap:  ## sube la guia, installsumma.sh, bajar-paquetes y catalogos a descargas [publica]
	scp doc/0-README-como-instalar bin/installsumma.sh bin/bajar-paquetes share/summapack/data/diccionariodepaquetes share/summapack/data/fuentesexternas $(SUBIR_DESTINO)/

subir-comunes-fuentes:  ## sube distros/salida/comunes/fuentes (espejo-fuentes) a comunes/fuentes/ del servidor [publica]
	@[ -f distros/salida/comunes/fuentes/SHA256SUMS ] || { echo "falta correr distros/espejo-fuentes"; exit 1; }
	ssh $(firstword $(subst :, ,$(SUBIR_DESTINO))) 'mkdir -p $(lastword $(subst :, ,$(SUBIR_DESTINO)))/comunes/fuentes'
	scp distros/salida/comunes/fuentes/* $(SUBIR_DESTINO)/comunes/fuentes/

uploadsummapack: upload subir-bootstrap
	scp bin/distro.sh www-data@ututo.org:/var/www/ututo.org/public_html/cms/downloads/
	scp bin/distro.sh www-data@simusol.org:/var/www/simusol.org/public_html/downloads/
	scp share/summapack/data/makefile.lib www-data@simusol.org:/var/www/simusol.org/public_html/downloads/

