| Marc Kupietz | 84da39d | 2024-07-25 20:23:50 +0200 | [diff] [blame] | 1 | ifneq (,$(filter test,$(MAKECMDGOALS))) |
| 2 | SRC_DIR = test/resources/DNB |
| Marc Kupietz | 9c10667 | 2024-09-30 15:01:55 +0200 | [diff] [blame] | 3 | YEARS=13 18 23 |
| Marc Kupietz | 84da39d | 2024-07-25 20:23:50 +0200 | [diff] [blame] | 4 | else |
| Marc Kupietz | badc428 | 2024-07-26 15:45:22 +0200 | [diff] [blame] | 5 | SRC_DIR ?= ./DeLiKo@DNB |
| Marc Kupietz | 956aa49 | 2025-10-22 14:14:42 +0200 | [diff] [blame] | 6 | YEARS ?= $(shell seq -w 2024 -1 2005 | sed 's/^.*\([0-9][0-9]\)/\1/') |
| 7 | #YEARS ?= $(shell seq -w 2005 2023 | sed 's/^.*\([0-9][0-9]\)/\1/') |
| Marc Kupietz | 84da39d | 2024-07-25 20:23:50 +0200 | [diff] [blame] | 8 | endif |
| Marc Kupietz | deb9546 | 2024-04-15 20:26:14 +0200 | [diff] [blame] | 9 | |
| Marc Kupietz | 1a42266 | 2024-03-16 09:34:10 +0100 | [diff] [blame] | 10 | BUILD_DIR = build |
| 11 | TARGET_DIR ?= target |
| Marc Kupietz | b769699 | 2024-03-18 17:41:15 +0100 | [diff] [blame] | 12 | DEPLOY_HOST ?= compute.ids-mannheim.de |
| 13 | DEPLOY_USER ?= korap |
| 14 | DEPLOY_PATH ?= /export/netapp/korap4dnb |
| Marc Kupietz | ade7572 | 2025-11-02 17:27:57 +0100 | [diff] [blame] | 15 | MAX_THREADS ?= 8 # $(shell nproc) |
| Marc Kupietz | 975996e | 2024-04-13 13:46:37 +0200 | [diff] [blame] | 16 | MAKE ?= make -j $(shell nproc) |
| Marc Kupietz | 881c123 | 2025-10-28 15:36:48 +0100 | [diff] [blame] | 17 | SLACK ?= slack |
| Marc Kupietz | 133333e | 2025-02-20 18:08:17 +0100 | [diff] [blame] | 18 | KORAPXMLTOOL_HEAP ?= $(shell echo "$$(($(MAX_THREADS) * 2500))") |
| Marc Kupietz | 36ec600 | 2026-03-15 17:49:54 +0100 | [diff] [blame] | 19 | KORAPXMLTOOL ?= bin/korapxmltool |
| 20 | MARMOTMALTOOL ?= bin/korapxmltool |
| 21 | SPACYXMLTOOL ?= bin/korapxmltool |
| 22 | KORAPXMLTOOL_MODELS_PATH ?= models |
| 23 | export KORAPXMLTOOL_MODELS_PATH |
| 24 | |
| Marc Kupietz | 0014c5c | 2024-09-30 09:12:33 +0200 | [diff] [blame] | 25 | SAXON ?= java -Djava.util.logging.config.file=/logging.properties -cp lib/saxon-ee-12.5.jar:lib/xmlresolver-5.2.2.jar:lib/textclassifier.jar:lib/xmlresolver-5.2.2-data.jar net.sf.saxon.Transform -expand:off -catalog:"lib/dtds/xhtml11/xhtmlcatalog.xml;lib/dtds/xhtml/dtd/xhtmlcatalog.xml" |
| Marc Kupietz | 1a42266 | 2024-03-16 09:34:10 +0100 | [diff] [blame] | 26 | |
| Marc Kupietz | 5652c81 | 2024-04-19 11:42:00 +0200 | [diff] [blame] | 27 | .DELETE_ON_ERROR: |
| 28 | |
| Marc Kupietz | ced34de | 2025-03-31 10:01:54 +0200 | [diff] [blame] | 29 | .PHONY: all clean test i5 i5valid krill malt index deploy show-server-log show-server-status |
| Marc Kupietz | 1a42266 | 2024-03-16 09:34:10 +0100 | [diff] [blame] | 30 | |
| Marc Kupietz | 16659b2 | 2024-09-14 09:53:38 +0200 | [diff] [blame] | 31 | |
| Marc Kupietz | 57ddb67 | 2026-03-15 17:01:17 +0100 | [diff] [blame^] | 32 | .PRECIOUS: $(TARGET_DIR)/%.i5.xml $(TARGET_DIR)/dnb%.pre.i5.xml %.zip %.tree_tagger.zip %.ud.zip %.marmot-malt.zip %.spacy.zip %.corenlp.zip %.gender.zip %.i5.xml %.tar |
| Marc Kupietz | 1a42266 | 2024-03-16 09:34:10 +0100 | [diff] [blame] | 33 | |
| Marc Kupietz | feed26a | 2024-03-17 19:16:23 +0100 | [diff] [blame] | 34 | all: index |
| Marc Kupietz | 1a42266 | 2024-03-16 09:34:10 +0100 | [diff] [blame] | 35 | |
| Marc Kupietz | deb9546 | 2024-04-15 20:26:14 +0200 | [diff] [blame] | 36 | krill: $(foreach year,$(YEARS),$(TARGET_DIR)/dnb$(year).krill.tar) |
| Marc Kupietz | 3d82f56 | 2024-03-16 10:19:03 +0100 | [diff] [blame] | 37 | |
| Marc Kupietz | ab1f3ac | 2024-04-16 14:56:43 +0200 | [diff] [blame] | 38 | index: $(TARGET_DIR)/dnb.index |
| Marc Kupietz | deb9546 | 2024-04-15 20:26:14 +0200 | [diff] [blame] | 39 | |
| Marc Kupietz | 956aa49 | 2025-10-22 14:14:42 +0200 | [diff] [blame] | 40 | # EPUBS := ($shell cat .epubs_cache) |
| Marc Kupietz | 84da39d | 2024-07-25 20:23:50 +0200 | [diff] [blame] | 41 | EPUBS := $(wildcard $(SRC_DIR)/**/*.epub) |
| 42 | |
| Marc Kupietz | 8a1e465 | 2024-04-21 15:55:03 +0200 | [diff] [blame] | 43 | $(TARGET_DIR)/dnb%.i5.xml: $(TARGET_DIR)/dnb%.pre.i5.xml xslt/pass2.xsl xslt/pass3.xsl models/dereko_domains_s.classifier |
| Marc Kupietz | 28f48e1 | 2024-04-14 16:17:05 +0200 | [diff] [blame] | 44 | $(SAXON) -xsl:xslt/pass2.xsl $< | $(SAXON) -xsl:xslt/pass3.xsl - > $@ |
| Marc Kupietz | fa445da | 2024-03-16 10:46:22 +0100 | [diff] [blame] | 45 | |
| Marc Kupietz | 84da39d | 2024-07-25 20:23:50 +0200 | [diff] [blame] | 46 | $(TARGET_DIR)/dnb%.pre.i5.xml: $(patsubst %.epub,$(TARGET_DIR)/%.i5.xml,$(notdir $(EPUBS))) |
| Marc Kupietz | 93a52eb | 2024-07-26 18:17:17 +0200 | [diff] [blame] | 47 | rm -f $(TARGET_DIR)/filelist$*.txt |
| Marc Kupietz | deb9546 | 2024-04-15 20:26:14 +0200 | [diff] [blame] | 48 | head -n -1 xslt/idsCorpus-template.xml | sed -e 's/{YY}/$*/' > $@ |
| Marc Kupietz | 93a52eb | 2024-07-26 18:17:17 +0200 | [diff] [blame] | 49 | @find -L $(SRC_DIR) -type f -name '*.epub' | sort -u | while read src; do \ |
| 50 | f=$(TARGET_DIR)/$$(basename $${src%.epub}).i5.xml; \ |
| Marc Kupietz | 9c10667 | 2024-09-30 15:01:55 +0200 | [diff] [blame] | 51 | if ! grep -sq "$$f" $(TARGET_DIR)/filelist$*.txt && head -500 "$$f" | grep -Eq '<pubDate type="year">..$*'; then \ |
| Marc Kupietz | 93a52eb | 2024-07-26 18:17:17 +0200 | [diff] [blame] | 52 | echo $$f >> $(TARGET_DIR)/filelist$*.txt; \ |
| Marc Kupietz | b926f25 | 2024-04-14 08:57:11 +0200 | [diff] [blame] | 53 | cat "$$f" >> $@; \ |
| 54 | fi; \ |
| Marc Kupietz | 93a52eb | 2024-07-26 18:17:17 +0200 | [diff] [blame] | 55 | done |
| Marc Kupietz | 1a42266 | 2024-03-16 09:34:10 +0100 | [diff] [blame] | 56 | tail -n 1 xslt/idsCorpus-template.xml >> $@ |
| 57 | |
| Marc Kupietz | 161d011 | 2024-07-25 11:09:04 +0200 | [diff] [blame] | 58 | |
| Marc Kupietz | 8467724 | 2024-04-27 11:46:07 +0200 | [diff] [blame] | 59 | test: models/dereko_domains_s.classifier i5valid test/test-xml.sh |
| Marc Kupietz | 73a26bf | 2024-04-26 17:36:44 +0200 | [diff] [blame] | 60 | bash test/test-xml.sh |
| Marc Kupietz | 1a42266 | 2024-03-16 09:34:10 +0100 | [diff] [blame] | 61 | |
| Marc Kupietz | deb9546 | 2024-04-15 20:26:14 +0200 | [diff] [blame] | 62 | i5: $(foreach year,$(YEARS),$(TARGET_DIR)/dnb$(year).i5.xml) |
| Marc Kupietz | 157e079 | 2024-04-13 12:46:42 +0200 | [diff] [blame] | 63 | |
| Marc Kupietz | deb9546 | 2024-04-15 20:26:14 +0200 | [diff] [blame] | 64 | i5valid: i5 |
| 65 | xmllint --noout --valid $(foreach year,$(YEARS),$(TARGET_DIR)/dnb$(year).i5.xml) |
| Marc Kupietz | 157e079 | 2024-04-13 12:46:42 +0200 | [diff] [blame] | 66 | |
| Marc Kupietz | 84da39d | 2024-07-25 20:23:50 +0200 | [diff] [blame] | 67 | |
| 68 | $(BUILD_DIR)/%: $(SRC_DIR)/**/%.epub |
| Marc Kupietz | 7e365ee | 2024-09-22 12:03:06 +0200 | [diff] [blame] | 69 | mkdir -p $@.tmp |
| Marc Kupietz | 1a42266 | 2024-03-16 09:34:10 +0100 | [diff] [blame] | 70 | echo "Converting $< to $@" |
| Marc Kupietz | 7e365ee | 2024-09-22 12:03:06 +0200 | [diff] [blame] | 71 | echo "<originalPath>$<</originalPath>" > $@.tmp/originalPath.xml |
| 72 | unzip -q -o $< -d $@.tmp |
| 73 | chmod -R ug+rwX $@.tmp |
| 74 | mv $@.tmp $@ |
| Marc Kupietz | 1a42266 | 2024-03-16 09:34:10 +0100 | [diff] [blame] | 75 | |
| Marc Kupietz | dfbc3f4 | 2024-03-16 11:46:41 +0100 | [diff] [blame] | 76 | $(TARGET_DIR)/%.i5.xml: $(BUILD_DIR)/% xslt/epub2i5.xsl xslt/idsCorpus-template.xml |
| Marc Kupietz | 1a42266 | 2024-03-16 09:34:10 +0100 | [diff] [blame] | 77 | mkdir -p $(TARGET_DIR) |
| 78 | echo "Converting $< to $@" |
| Marc Kupietz | 1c3ebca | 2024-09-22 13:49:28 +0200 | [diff] [blame] | 79 | $(SAXON) -xsl:xslt/epub2i5.xsl $(shell find $< -name "*.opf") $(shell if cat `find $< -name originalPath.xml` | grep -iq buchpreis; then echo buchpreis=1; fi)> $@ || \ |
| Marc Kupietz | 2c7bc7e | 2024-09-30 14:09:25 +0200 | [diff] [blame] | 80 | (sleep 5 && $(SAXON) -xsl:xslt/epub2i5.xsl $(shell find $< -name "*.opf") $(shell if cat `find $< -name originalPath.xml` | grep -iq buchpreis; then echo buchpreis=1; fi) debug=1 > $@) || (echo "WARN: ignoring invalid $@" && > $@) |
| Marc Kupietz | 1c3ebca | 2024-09-22 13:49:28 +0200 | [diff] [blame] | 81 | |
| Marc Kupietz | 1a42266 | 2024-03-16 09:34:10 +0100 | [diff] [blame] | 82 | %.zip: %.i5.xml |
| Marc Kupietz | 9893729 | 2026-03-14 17:28:05 +0100 | [diff] [blame] | 83 | docker run --rm -i korap/tei2korapxml:latest -l warn -s -tk - < $< > $@ 2> >(tee $(@:.zip=.log) >&2) |
| 84 | printf "%s\t%s\n" "$$(grep -c '<idsText ' $<)" "$$(unzip -l $@ | grep data.xml | wc -l)" |
| Marc Kupietz | 1a42266 | 2024-03-16 09:34:10 +0100 | [diff] [blame] | 85 | |
| 86 | %.tree_tagger.zip: %.zip |
| Marc Kupietz | de26594 | 2026-03-15 16:12:22 +0100 | [diff] [blame] | 87 | $(KORAPXMLTOOL) -T treetagger -t zip -f -D $(TARGET_DIR) $< |
| Marc Kupietz | 1a42266 | 2024-03-16 09:34:10 +0100 | [diff] [blame] | 88 | |
| Marc Kupietz | 57ddb67 | 2026-03-15 17:01:17 +0100 | [diff] [blame^] | 89 | %.gender.zip: %.zip | bin/conllu-gender |
| Marc Kupietz | de26594 | 2026-03-15 16:12:22 +0100 | [diff] [blame] | 90 | $(KORAPXMLTOOL) -j 1 -A "bin/conllu-gender -s" -l WARNING -F gender -t zip --force -D $(TARGET_DIR) $< |
| 91 | |
| 92 | %.spacy.zip: %.zip | bin/korapxmltool |
| 93 | $(KORAPXMLTOOL) -P spacy -t zip --force -D $(TARGET_DIR) $< |
| Marc Kupietz | 1a42266 | 2024-03-16 09:34:10 +0100 | [diff] [blame] | 94 | |
| Marc Kupietz | 8ea9228 | 2024-03-24 14:55:55 +0100 | [diff] [blame] | 95 | models/de.marmot: |
| 96 | mkdir -p models |
| Marc Kupietz | e8c80f3 | 2024-03-24 15:27:28 +0100 | [diff] [blame] | 97 | curl -sL -o $@ https://cistern.cis.lmu.de/marmot/models/CURRENT/spmrl/de.marmot |
| Marc Kupietz | 8ea9228 | 2024-03-24 14:55:55 +0100 | [diff] [blame] | 98 | |
| 99 | models/german.mco: |
| 100 | mkdir -p models |
| Marc Kupietz | e8c80f3 | 2024-03-24 15:27:28 +0100 | [diff] [blame] | 101 | curl -sL -o $@ https://corpora.ids-mannheim.de/tools/$@ |
| Marc Kupietz | 8ea9228 | 2024-03-24 14:55:55 +0100 | [diff] [blame] | 102 | |
| Marc Kupietz | a553865 | 2024-04-21 15:49:30 +0200 | [diff] [blame] | 103 | models/dereko_domains_s.classifier: |
| 104 | mkdir -p models |
| 105 | curl -sL -o $@ https://corpora.ids-mannheim.de/tools/$@ |
| 106 | |
| Marc Kupietz | 36ec600 | 2026-03-15 17:49:54 +0100 | [diff] [blame] | 107 | models/german-fast.tagger: |
| 108 | mkdir -p models |
| 109 | curl -sL -o $@ https://corpora.ids-mannheim.de/tools/$@ |
| 110 | |
| 111 | models/germanSR.ser.gz: |
| 112 | mkdir -p models |
| 113 | curl -sL -o $@ https://corpora.ids-mannheim.de/tools/$@ |
| 114 | |
| Marc Kupietz | 57ddb67 | 2026-03-15 17:01:17 +0100 | [diff] [blame^] | 115 | bin/conllu-gender: |
| 116 | mkdir -p bin |
| 117 | curl -sL -o $@ https://corpora.ids-mannheim.de/tools/$@ |
| 118 | chmod +x $@ |
| 119 | |
| Marc Kupietz | 8ea9228 | 2024-03-24 14:55:55 +0100 | [diff] [blame] | 120 | %.marmot-malt.zip: %.zip models/de.marmot models/german.mco |
| Marc Kupietz | 36ec600 | 2026-03-15 17:49:54 +0100 | [diff] [blame] | 121 | $(MARMOTMALTOOL) -T marmot -P malt -t zip -f -D $(TARGET_DIR) $< |
| 122 | |
| 123 | %.corenlp.zip: %.zip models/de.marmot models/german.mco |
| 124 | $(MARMOTMALTOOL) -T corenlp -P corenlp -t zip -f -D $(TARGET_DIR) $< |
| Marc Kupietz | ced34de | 2025-03-31 10:01:54 +0200 | [diff] [blame] | 125 | |
| 126 | malt: $(foreach year,$(YEARS),$(TARGET_DIR)/dnb$(year).marmot-malt.zip) |
| Marc Kupietz | 8ea9228 | 2024-03-24 14:55:55 +0100 | [diff] [blame] | 127 | |
| Marc Kupietz | 1a42266 | 2024-03-16 09:34:10 +0100 | [diff] [blame] | 128 | %.ud.zip: %.zip |
| Marc Kupietz | 133333e | 2025-02-20 18:08:17 +0100 | [diff] [blame] | 129 | $(KORAPXMLTOOL) $< | pv | ./scripts/udpipe2 | conllu2korapxml > $@ |
| Marc Kupietz | 1a42266 | 2024-03-16 09:34:10 +0100 | [diff] [blame] | 130 | |
| Marc Kupietz | 57ddb67 | 2026-03-15 17:01:17 +0100 | [diff] [blame^] | 131 | %.krill.tar: %.zip %.marmot-malt.zip %.tree_tagger.zip %.spacy.zip %.corenlp.zip %.gender.zip |
| 132 | # mkdir -p ${BUILD_DIR}/krill/$(basename $@) |
| 133 | # mkdir -p $(basename $@) |
| 134 | # K2K_PUBLISHER_STRING=1 K2K_TRANSLATOR_TEXT=1 korapxml2krill archive -w -z -cfg krill-korap4dnb.cfg -c ${BUILD_DIR}/krill/$(basename $@)/korapxml2krill.cache -j 30 -te ${BUILD_DIR}/krill/$(basename $@) --non-word-tokens --meta I5 -i $< -i $(word 2,$^) -i $(word 3,$^) -i $(word 4,$^) -o $(basename $@) |
| 135 | K2K_PUBLISHER_STRING=1 K2K_TRANSLATOR_TEXT=1 $(KORAPXMLTOOL) --non-word-tokens -linfo -f -t krill -D $(TARGET_DIR) $^ |
| Marc Kupietz | 881c123 | 2025-10-28 15:36:48 +0100 | [diff] [blame] | 136 | $(SLACK) "$(basename $@) krill archive created" |
| Marc Kupietz | 1a42266 | 2024-03-16 09:34:10 +0100 | [diff] [blame] | 137 | |
| Marc Kupietz | fc32862 | 2024-03-16 14:31:34 +0100 | [diff] [blame] | 138 | %.json: %.krill.tar |
| 139 | rm -rf $@ |
| 140 | mkdir -p $@ |
| 141 | for f in $<; do tar -C $@ -xf $$f; done |
| Marc Kupietz | 1a42266 | 2024-03-16 09:34:10 +0100 | [diff] [blame] | 142 | |
| Marc Kupietz | 956aa49 | 2025-10-22 14:14:42 +0200 | [diff] [blame] | 143 | krill: $(foreach year,$(YEARS),$(TARGET_DIR)/dnb$(year).krill.tar) |
| Marc Kupietz | 3ccadbf | 2024-07-27 12:28:25 +0200 | [diff] [blame] | 144 | |
| Marc Kupietz | 3ccadbf | 2024-07-27 12:28:25 +0200 | [diff] [blame] | 145 | |
| Marc Kupietz | 22ad4b7 | 2024-03-17 16:24:21 +0100 | [diff] [blame] | 146 | |
| Marc Kupietz | ab1f3ac | 2024-04-16 14:56:43 +0200 | [diff] [blame] | 147 | $(TARGET_DIR)/dnb.index.tar.xz: $(TARGET_DIR)/dnb.index |
| Marc Kupietz | 22ad4b7 | 2024-03-17 16:24:21 +0100 | [diff] [blame] | 148 | tar -I 'xz -T0' -C $(dir $<) -cf $@ $(notdir $<) |
| 149 | |
| Marc Kupietz | b769699 | 2024-03-18 17:41:15 +0100 | [diff] [blame] | 150 | deploy: $(TARGET_DIR)/dnb.index.tar.xz korap4dnb-compose.yml |
| 151 | rsync -v $^ $(DEPLOY_USER)@$(DEPLOY_HOST):$(DEPLOY_PATH)/ |
| 152 | ssh $(DEPLOY_USER)@$(DEPLOY_HOST) "mkdir -p $(DEPLOY_PATH) && cd $(DEPLOY_PATH) && docker compose -p korap4dnb --profile=lite -f $(notdir $(word 2,$^)) up -d --dry-run && docker compose -p korap4dnb stop && (mv -f dnb.index dnb.index.bak || true) && tar Jxvf $(notdir $<) && docker compose -p korap4dnb --profile=lite -f $(notdir $(word 2,$^)) up -d" |
| 153 | |
| 154 | show-server-log: |
| 155 | ssh $(DEPLOY_USER)@$(DEPLOY_HOST) "cd $(DEPLOY_PATH) && docker compose -p korap4dnb --profile=lite -f korap4dnb-compose.yml logs -f" |
| 156 | |
| 157 | show-server-status: |
| 158 | ssh $(DEPLOY_USER)@$(DEPLOY_HOST) "cd $(DEPLOY_PATH) && docker compose -p korap4dnb --profile=lite -f korap4dnb-compose.yml ps" |
| 159 | |
| Marc Kupietz | 1a42266 | 2024-03-16 09:34:10 +0100 | [diff] [blame] | 160 | clean: |
| 161 | rm -rf $(BUILD_DIR) $(TARGET_DIR) |
| Marc Kupietz | 8d09006 | 2024-09-22 12:09:29 +0200 | [diff] [blame] | 162 | |
| Marc Kupietz | cd8c0ec | 2025-11-02 17:36:22 +0100 | [diff] [blame] | 163 | $(TARGET_DIR)/dnb.index: $(foreach year,$(YEARS),$(TARGET_DIR)/dnb$(year).krill.tar) |
| Marc Kupietz | 8d09006 | 2024-09-22 12:09:29 +0200 | [diff] [blame] | 164 | rm -rf $@ |
| Marc Kupietz | 6e73bdd | 2025-11-02 19:58:32 +0100 | [diff] [blame] | 165 | java -jar lib/Krill-Indexer.jar --progress -c lib/krill.conf -i $(subst " ",;,$^) -o $@ |