<commit_before># Si estamos empaquetando, definir el directorio de compilación
TARGET?=
PREFIX?= /usr/local
# Nombre de la red
NETWORK?= lvpn

# Agregar otros directorios acá para incluir natpmp, etc.
DIRS=etc/generate-ipv6-address-0.1
#DIRS+= etc/libnatpmp etc/miniupnp/miniupnpc

LIBDIR?= $(PREFIX)/lib/$(NETWORK)
DOC?= $(PREFIX)/share/$(NETWORK)/doc
HOSTS?= $(PREFIX)/share/$(NETWORK)/hosts
BEADLE?= $(PREFIX)/share/$(NETWORK)/beadle
# La configuración de tinc
TINC?= /etc/tinc/$(NETWORK)
# `lvpn`
LVPN?= $(PREFIX)/bin/$(NETWORK)

# Flags por defecto para el daemon
FLAGS?= --logfile -U nobody
# Tamaño de las llaves
KEYSIZE?= 4096
# Puerto por defecto
PORT?= 655

# Las subredes
SUBNET?= 192.168.9.0/24
SUBNET6?= 2001:1291:200:83ab::/64

# Gettext
TEXTDOMAINDIR?= $(PREFIX)/share/locale
TEXTDOMAIN?= $(NETWORK)

# Encontrar dinámicamente todos los .in
SOURCES=$(wildcard *.in **/*.in)
OBJECTS=$(patsubst %.in,%.out,$(SOURCES))
DOC=$(wildcard doc/**/*.markdown)
MAN=$(patsubst %.markdown,%.1,$(DOC))

all: $(OBJECTS) $(DIRS)

# Compilar los etc/
.PHONY: $(DIRS)
$(DIRS):
	$(MAKE) -C $@

# Reemplazar todas las variables en los .in y pasarlas a los .out
$(OBJECTS):
	sed -e "s/@NETWORK@/$(NETWORK)/g" \
	    -e "s,@LIBDIR@,$(LIBDIR),g" \
	    -e "s,@DOC@,$(DOC),g" \
	    -e "s,@HOSTS@,$(HOSTS),g" \
	    -e "s,@BEADLE@,$(BEADLE),g" \
	    -e "s,@TINC@,$(TINC),g" \
	    -e "s,@LVPN@,$(LVPN),g" \
	    -e "s/@FLAGS@/$(FLAGS)/g" \
	    -e "s/@KEYSIZE@/$(KEYSIZE)/g" \
	    -e "s/@PORT@/$(PORT)/g" \
	    -e "s,@SUBNET@,$(SUBNET),g" \
	    -e "s,@SUBNET6@,$(SUBNET6),g" \
	    -e "s,@TEXTDOMAINDIR@,$(TEXTDOMAINDIR),g" \
	    -e "s/@TEXTDOMAIN@/$(TEXTDOMAIN)/g" \
	    $(patsubst %.out,%.in,$@) > $@

# Generar los manuales
$(MAN):
	pandoc --standalone \
	       --output="$@" \
	       --to=man \
	       $(patsubst %.1,%.markdown,$@)

man: $(MAN)

install: all
	mkdir -p $(TARGET)$(PREFIX)/bin \
	         $(TARGET)$(LIBDIR) \
	         $(TARGET)$(HOSTS) \
	         $(TARGET)$(BEADLE) \
	         $(TARGET)$(TEXTDOMAINDIR)/$(TEXTDOMAIN) \
	         $(TARGET)$(PREFIX)/share/man1/{en,es}

	cp    hosts/* $(TARGET)$(HOSTS)/
	cp -r lib/* $(TARGET)$(LIBDIR)/

# TODO usar $MAN
	cp doc/en/* $(TARGET)$(PREFIX)/share/man1/en/
	cp doc/es/* $(TARGET)$(PREFIX)/share/man1/es/

# TODO instalar automáticamente los .out en sus destinos
	install -D -m755 lvpn.out $(TARGET)$(PREFIX)/bin/lvpn

## TODO encontrar los bundled automáticamente
	test -f etc/generate-ipv6-address-0.1/`uname -m`-generate-ipv6-address && \
	install -m755 etc/generate-ipv6-address-0.1/`uname -m`-generate-ipv6-address \
	              $(TARGET)$(PREFIX)/bin/generate-ipv6-address

# Opcional
	-test -f etc/libnatpmp/natpmpc-shared && \
	install -m755 etc/libnatpmp/natpmpc-shared \
	              $(TARGET)$(PREFIX)/bin/natpmpc

# Opcional
	-test -f etc/miniupnp/miniupnpc/upnpc-shared && \
	install -m755 etc/miniupnp/miniupnpc/upnpc-shared \
	              $(TARGET)$(PREFIX)/bin/upnpc
##

clean:
	rm -rf $(OBJECTS)

man-clean:
	rm -rf $(MAN)<commit_msg>Instalar locales<commit_after># Si estamos empaquetando, definir el directorio de compilación
TARGET?=
PREFIX?= /usr/local
# Nombre de la red
NETWORK?= lvpn

# Agregar otros directorios acá para incluir natpmp, etc.
DIRS=etc/generate-ipv6-address-0.1
#DIRS+= etc/libnatpmp etc/miniupnp/miniupnpc

LIBDIR?= $(PREFIX)/lib/$(NETWORK)
DOC?= $(PREFIX)/share/$(NETWORK)/doc
HOSTS?= $(PREFIX)/share/$(NETWORK)/hosts
BEADLE?= $(PREFIX)/share/$(NETWORK)/beadle
# La configuración de tinc
TINC?= /etc/tinc/$(NETWORK)
# `lvpn`
LVPN?= $(PREFIX)/bin/$(NETWORK)

# Flags por defecto para el daemon
FLAGS?= --logfile -U nobody
# Tamaño de las llaves
KEYSIZE?= 4096
# Puerto por defecto
PORT?= 655

# Las subredes
SUBNET?= 192.168.9.0/24
SUBNET6?= 2001:1291:200:83ab::/64

# Gettext
TEXTDOMAINDIR?= $(PREFIX)/share/locale
TEXTDOMAIN?= $(NETWORK)

# Encontrar dinámicamente todos los .in
SOURCES=$(wildcard *.in **/*.in)
OBJECTS=$(patsubst %.in,%.out,$(SOURCES))
DOC=$(wildcard doc/**/*.markdown)
MAN=$(patsubst %.markdown,%.1,$(DOC))
PO=$(wildcard locale/**/LC_MESSAGES/*.po)
MO=$(patsubst %.po,%.mo,$(PO))

RSYNC=rsync -av --no-owner --no-group

all: $(OBJECTS) $(DIRS) locale

# Compilar los etc/
.PHONY: $(DIRS)
$(DIRS):
	$(MAKE) -C $@

# Reemplazar todas las variables en los .in y pasarlas a los .out
$(OBJECTS):
	sed -e "s/@NETWORK@/$(NETWORK)/g" \
	    -e "s,@LIBDIR@,$(LIBDIR),g" \
	    -e "s,@DOC@,$(DOC),g" \
	    -e "s,@HOSTS@,$(HOSTS),g" \
	    -e "s,@BEADLE@,$(BEADLE),g" \
	    -e "s,@TINC@,$(TINC),g" \
	    -e "s,@LVPN@,$(LVPN),g" \
	    -e "s/@FLAGS@/$(FLAGS)/g" \
	    -e "s/@KEYSIZE@/$(KEYSIZE)/g" \
	    -e "s/@PORT@/$(PORT)/g" \
	    -e "s,@SUBNET@,$(SUBNET),g" \
	    -e "s,@SUBNET6@,$(SUBNET6),g" \
	    -e "s,@TEXTDOMAINDIR@,$(TEXTDOMAINDIR),g" \
	    -e "s/@TEXTDOMAIN@/$(TEXTDOMAIN)/g" \
	    $(patsubst %.out,%.in,$@) > $@

# Generar los manuales
$(MAN):
	pandoc --standalone \
	       --output="$@" \
	       --to=man \
	       $(patsubst %.1,%.markdown,$@)

man: $(MAN)

$(MO):
	msgfmt -o $@ $(patsubst %.mo,%.po,$@)

locale: $(MO)

install: all
	mkdir -p $(TARGET)$(PREFIX)/bin \
	         $(TARGET)$(LIBDIR) \
	         $(TARGET)$(HOSTS) \
	         $(TARGET)$(BEADLE) \
	         $(TARGET)$(TEXTDOMAINDIR)/$(TEXTDOMAIN)/en/LC_MESSAGES \
	         $(TARGET)$(PREFIX)/share/man1/

	cp    hosts/* $(TARGET)$(HOSTS)/
	cp -r lib/* $(TARGET)$(LIBDIR)/

	$(RSYNC) --exclude="*.markdown" doc/ $(TARGET)$(PREFIX)/share/man1/
	$(RSYNC) --exclude="*.po" locale/ $(TARGET)$(TEXTDOMAINDIR)/$(TEXTDOMAIN)/

# TODO instalar automáticamente los .out en sus destinos
	install -D -m755 lvpn.out $(TARGET)$(PREFIX)/bin/lvpn

## TODO encontrar los bundled automáticamente
	test -f etc/generate-ipv6-address-0.1/`uname -m`-generate-ipv6-address && \
	install -m755 etc/generate-ipv6-address-0.1/`uname -m`-generate-ipv6-address \
	              $(TARGET)$(PREFIX)/bin/generate-ipv6-address

# Opcional
	-test -f etc/libnatpmp/natpmpc-shared && \
	install -m755 etc/libnatpmp/natpmpc-shared \
	              $(TARGET)$(PREFIX)/bin/natpmpc

# Opcional
	-test -f etc/miniupnp/miniupnpc/upnpc-shared && \
	install -m755 etc/miniupnp/miniupnpc/upnpc-shared \
	              $(TARGET)$(PREFIX)/bin/upnpc
##

clean:
	rm -rf $(OBJECTS)

man-clean:
	rm -rf $(MAN)

locale-clean:
	rm -rf $(MO)

clean-all: clean man-clean locale-clean
{'fraction_non_alphanumeric': 0.21586250394197415, 'fraction_numerical': 0.020025228634500156, 'mean_word_length': 3.2399732620320854, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 5, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 2, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '1801999', 'n_tokens_mistral': 2855, 'n_tokens_neox': 2666, 'n_words': 497}