blob: 237f365466e1f7e646cef00ee2f5108f180634f7 [file] [log] [blame]
Marc Kupietz84da39d2024-07-25 20:23:50 +02001ifneq (,$(filter test,$(MAKECMDGOALS)))
2SRC_DIR = test/resources/DNB
3YEARS=13 18
4else
Marc Kupietzbadc4282024-07-26 15:45:22 +02005SRC_DIR ?= ./DeLiKo@DNB
Marc Kupietz13e28582024-04-19 11:26:01 +02006YEARS ?= $(shell seq -w 2012 2024 | sed 's/^.*\([0-9][0-9]\)/\1/')
Marc Kupietz84da39d2024-07-25 20:23:50 +02007endif
Marc Kupietzdeb95462024-04-15 20:26:14 +02008
Marc Kupietz1a422662024-03-16 09:34:10 +01009BUILD_DIR = build
10TARGET_DIR ?= target
Marc Kupietzb7696992024-03-18 17:41:15 +010011DEPLOY_HOST ?= compute.ids-mannheim.de
12DEPLOY_USER ?= korap
13DEPLOY_PATH ?= /export/netapp/korap4dnb
Marc Kupietz48c6a682024-03-24 15:27:08 +010014MAX_THREADS ?= $(shell nproc)
Marc Kupietz975996e2024-04-13 13:46:37 +020015MAKE ?= make -j $(shell nproc)
Marc Kupietz3146b632024-04-23 09:40:25 +020016KORAPXML2CONLLU_HEAP ?= $(shell echo "$$(($(MAX_THREADS) * 2500))")
Marc Kupietzd059d2d2024-04-15 18:58:39 +020017KORAPXML2CONLLU ?= java -Xmx$(KORAPXML2CONLLU_HEAP)m -jar lib/korapxml2conllu.jar
Marc Kupietzbec2ff02024-07-26 11:14:46 +020018SAXON ?= 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
Marc Kupietz1a422662024-03-16 09:34:10 +010019
Marc Kupietz5652c812024-04-19 11:42:00 +020020.DELETE_ON_ERROR:
21
Marc Kupietz84da39d2024-07-25 20:23:50 +020022.PHONY: all clean test i5 i5valid krill index deploy show-server-log show-server-status
Marc Kupietz1a422662024-03-16 09:34:10 +010023
Marc Kupietz5652c812024-04-19 11:42:00 +020024.PRECIOUS: $(TARGET_DIR)/%.i5.xml $(TARGET_DIR)/dnb%.pre.i5.xml %.zip %.tree_tagger.zip %.ud.zip %.marmot-malt.zip %.spacy.zip %.i5.xml %.tar
Marc Kupietz1a422662024-03-16 09:34:10 +010025
Marc Kupietzfeed26a2024-03-17 19:16:23 +010026all: index
Marc Kupietz1a422662024-03-16 09:34:10 +010027
Marc Kupietzdeb95462024-04-15 20:26:14 +020028krill: $(foreach year,$(YEARS),$(TARGET_DIR)/dnb$(year).krill.tar)
Marc Kupietz3d82f562024-03-16 10:19:03 +010029
Marc Kupietzab1f3ac2024-04-16 14:56:43 +020030index: $(TARGET_DIR)/dnb.index
Marc Kupietzdeb95462024-04-15 20:26:14 +020031
Marc Kupietz84da39d2024-07-25 20:23:50 +020032EPUBS := $(wildcard $(SRC_DIR)/**/*.epub)
33
Marc Kupietz8a1e4652024-04-21 15:55:03 +020034$(TARGET_DIR)/dnb%.i5.xml: $(TARGET_DIR)/dnb%.pre.i5.xml xslt/pass2.xsl xslt/pass3.xsl models/dereko_domains_s.classifier
Marc Kupietz28f48e12024-04-14 16:17:05 +020035 $(SAXON) -xsl:xslt/pass2.xsl $< | $(SAXON) -xsl:xslt/pass3.xsl - > $@
Marc Kupietzfa445da2024-03-16 10:46:22 +010036
Marc Kupietz84da39d2024-07-25 20:23:50 +020037$(TARGET_DIR)/dnb%.pre.i5.xml: $(patsubst %.epub,$(TARGET_DIR)/%.i5.xml,$(notdir $(EPUBS)))
Marc Kupietz93a52eb2024-07-26 18:17:17 +020038 rm -f $(TARGET_DIR)/filelist$*.txt
Marc Kupietzdeb95462024-04-15 20:26:14 +020039 head -n -1 xslt/idsCorpus-template.xml | sed -e 's/{YY}/$*/' > $@
Marc Kupietz93a52eb2024-07-26 18:17:17 +020040 @find -L $(SRC_DIR) -type f -name '*.epub' | sort -u | while read src; do \
41 f=$(TARGET_DIR)/$$(basename $${src%.epub}).i5.xml; \
42 if ! grep -q "$$f" $(TARGET_DIR)/filelist$*.txt && head -500 "$$f" | grep -Eq '<pubDate type="year">..$*'; then \
43 echo $$f >> $(TARGET_DIR)/filelist$*.txt; \
Marc Kupietzb926f252024-04-14 08:57:11 +020044 cat "$$f" >> $@; \
45 fi; \
Marc Kupietz93a52eb2024-07-26 18:17:17 +020046 done
Marc Kupietz1a422662024-03-16 09:34:10 +010047 tail -n 1 xslt/idsCorpus-template.xml >> $@
48
Marc Kupietz161d0112024-07-25 11:09:04 +020049
Marc Kupietz84677242024-04-27 11:46:07 +020050test: models/dereko_domains_s.classifier i5valid test/test-xml.sh
Marc Kupietz73a26bf2024-04-26 17:36:44 +020051 bash test/test-xml.sh
Marc Kupietz1a422662024-03-16 09:34:10 +010052
Marc Kupietzdeb95462024-04-15 20:26:14 +020053i5: $(foreach year,$(YEARS),$(TARGET_DIR)/dnb$(year).i5.xml)
Marc Kupietz157e0792024-04-13 12:46:42 +020054
Marc Kupietzdeb95462024-04-15 20:26:14 +020055i5valid: i5
56 xmllint --noout --valid $(foreach year,$(YEARS),$(TARGET_DIR)/dnb$(year).i5.xml)
Marc Kupietz157e0792024-04-13 12:46:42 +020057
Marc Kupietz84da39d2024-07-25 20:23:50 +020058
59$(BUILD_DIR)/%: $(SRC_DIR)/**/%.epub
Marc Kupietz1a422662024-03-16 09:34:10 +010060 mkdir -p $@
61 echo "Converting $< to $@"
62 unzip -q -o $< -d $@
Marc Kupietz51714ed2024-04-13 12:47:39 +020063 chmod -R ug+rwX $@
Rebecca Wilm2eab6342024-08-04 13:14:17 +020064 echo "<originalPath>$<</originalPath>" > $@/originalPath.xml
Marc Kupietz1a422662024-03-16 09:34:10 +010065
Marc Kupietzdfbc3f42024-03-16 11:46:41 +010066$(TARGET_DIR)/%.i5.xml: $(BUILD_DIR)/% xslt/epub2i5.xsl xslt/idsCorpus-template.xml
Marc Kupietz1a422662024-03-16 09:34:10 +010067 mkdir -p $(TARGET_DIR)
68 echo "Converting $< to $@"
Marc Kupietz74fb31d2024-04-19 11:44:49 +020069 $(SAXON) -xsl:xslt/epub2i5.xsl $(shell find $< -name "*.opf") > $@ || (echo "WARN: ignoring invalid $@" && > $@)
Marc Kupietz1a422662024-03-16 09:34:10 +010070
71%.zip: %.i5.xml
72 tei2korapxml -l warn -s -tk - < $< > $@
73
74%.tree_tagger.zip: %.zip
Marc Kupietzfa445da2024-03-16 10:46:22 +010075 $(KORAPXML2CONLLU) $< | pv | docker run --rm -i korap/conllu2treetagger -l german | conllu2korapxml > $@
Marc Kupietz1a422662024-03-16 09:34:10 +010076
77%.spacy.zip: %.zip
Marc Kupietzfa445da2024-03-16 10:46:22 +010078 $(KORAPXML2CONLLU) $< | pv | docker run --rm -i korap/conllu2spacy | conllu2korapxml > $@
Marc Kupietz1a422662024-03-16 09:34:10 +010079
Marc Kupietz8ea92282024-03-24 14:55:55 +010080models/de.marmot:
81 mkdir -p models
Marc Kupietze8c80f32024-03-24 15:27:28 +010082 curl -sL -o $@ https://cistern.cis.lmu.de/marmot/models/CURRENT/spmrl/de.marmot
Marc Kupietz8ea92282024-03-24 14:55:55 +010083
84models/german.mco:
85 mkdir -p models
Marc Kupietze8c80f32024-03-24 15:27:28 +010086 curl -sL -o $@ https://corpora.ids-mannheim.de/tools/$@
Marc Kupietz8ea92282024-03-24 14:55:55 +010087
Marc Kupietza5538652024-04-21 15:49:30 +020088models/dereko_domains_s.classifier:
89 mkdir -p models
90 curl -sL -o $@ https://corpora.ids-mannheim.de/tools/$@
91
Marc Kupietz8ea92282024-03-24 14:55:55 +010092%.marmot-malt.zip: %.zip models/de.marmot models/german.mco
Marc Kupietzccf09042024-04-21 17:19:36 +020093 $(KORAPXML2CONLLU) -T $(MAX_THREADS) -t marmot:models/de.marmot -P malt:models/german.mco $< | conllu2korapxml -f "marmot dependency:malt" > $@
Marc Kupietz8ea92282024-03-24 14:55:55 +010094
Marc Kupietz1a422662024-03-16 09:34:10 +010095%.ud.zip: %.zip
Marc Kupietzfa445da2024-03-16 10:46:22 +010096 $(KORAPXML2CONLLU) $< | pv | ./scripts/udpipe2 | conllu2korapxml > $@
Marc Kupietz1a422662024-03-16 09:34:10 +010097
Marc Kupietzd653bb82024-04-21 12:52:51 +020098%.krill.tar: %.zip %.marmot-malt.zip %.tree_tagger.zip
Marc Kupietz87597512024-04-15 18:31:34 +020099 mkdir -p ${BUILD_DIR}/krill/$(basename $@)
Marc Kupietz3d82f562024-03-16 10:19:03 +0100100 mkdir -p $(basename $@)
Marc Kupietz5f0db262024-07-26 12:31:47 +0200101 K2K_TRANSLATOR_TEXT=1 korapxml2krill archive --quiet -w -z -cfg krill-korap4dnb.cfg -c ${BUILD_DIR}/krill/$(basename $@)/korapxml2krill.cache -j $(MAX_THREADS) -te ${BUILD_DIR}/krill/$(basename $@) --non-word-tokens --meta I5 -i $< -i $(word 2,$^) -i $(word 3,$^) -o $(basename $@)
Marc Kupietz1a422662024-03-16 09:34:10 +0100102
Marc Kupietzfc328622024-03-16 14:31:34 +0100103%.json: %.krill.tar
104 rm -rf $@
105 mkdir -p $@
106 for f in $<; do tar -C $@ -xf $$f; done
Marc Kupietz1a422662024-03-16 09:34:10 +0100107
Marc Kupietz3ccadbf2024-07-27 12:28:25 +0200108
109.NOTPARALLEL: $(TARGET_DIR)/dnb.index
110
111$(TARGET_DIR)/dnb.index: $(foreach year,$(YEARS),$(TARGET_DIR)/dnb$(year).index)
112
113%.index: %.json
114 @echo "Addinng $< to index"
Marc Kupietz22ad4b72024-03-17 16:24:21 +0100115 rm -rf $@
Marc Kupietz3ccadbf2024-07-27 12:28:25 +0200116 java -jar lib/Krill-Indexer.jar -c lib/krill.conf -i $< -o $(TARGET_DIR)/dnb.index
117 touch $@
Marc Kupietz22ad4b72024-03-17 16:24:21 +0100118
Marc Kupietzab1f3ac2024-04-16 14:56:43 +0200119$(TARGET_DIR)/dnb.index.tar.xz: $(TARGET_DIR)/dnb.index
Marc Kupietz22ad4b72024-03-17 16:24:21 +0100120 tar -I 'xz -T0' -C $(dir $<) -cf $@ $(notdir $<)
121
Marc Kupietzb7696992024-03-18 17:41:15 +0100122deploy: $(TARGET_DIR)/dnb.index.tar.xz korap4dnb-compose.yml
123 rsync -v $^ $(DEPLOY_USER)@$(DEPLOY_HOST):$(DEPLOY_PATH)/
124 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"
125
126show-server-log:
127 ssh $(DEPLOY_USER)@$(DEPLOY_HOST) "cd $(DEPLOY_PATH) && docker compose -p korap4dnb --profile=lite -f korap4dnb-compose.yml logs -f"
128
129show-server-status:
130 ssh $(DEPLOY_USER)@$(DEPLOY_HOST) "cd $(DEPLOY_PATH) && docker compose -p korap4dnb --profile=lite -f korap4dnb-compose.yml ps"
131
Marc Kupietz1a422662024-03-16 09:34:10 +0100132clean:
133 rm -rf $(BUILD_DIR) $(TARGET_DIR)