Module: check_mk
Branch: master
Commit: be7b248465570716329879e6b6d6c81125080c97
URL:
http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=be7b2484655707…
Author: Lars Michelsen <lm(a)mathias-kettner.de>
Date: Fri Feb 10 13:31:00 2017 +0100
precompiled werk files: separated cmk and cmc files
Change-Id: Icb683d24efd39f8b47d5049b867ed827028738ce
---
Makefile | 22 ++++++++++++++++------
lib/werks.py | 15 +++++++++++----
scripts/precompile-werks | 8 ++++----
tests/lib/test_werks.py | 19 ++++++++++---------
4 files changed, 41 insertions(+), 23 deletions(-)
diff --git a/Makefile b/Makefile
index 26a1135..c370505 100644
--- a/Makefile
+++ b/Makefile
@@ -82,7 +82,8 @@ FILES_TO_FORMAT := $(wildcard $(addprefix agents/,*.cc *.c *.h)) \
$(wildcard $(addprefix enterprise/core/src/,*.cc *.h)) \
$(wildcard $(addprefix enterprise/core/src/checkhelper/,*.cc *.h))
-WERKS := $(wildcard $(addsuffix /.werks/[0-9]*,. enterprise))
+WERKS := $(wildcard .werks/[0-9]*)
+ENTERPRISE_WERKS := $(wildcard enterprise/.werks/[0-9]*)
JAVASCRIPT_SOURCES := $(filter-out %_min.js,$(wildcard $(addsuffix /web/htdocs/js/*.js,.
enterprise)))
JAVASCRIPT_MINI := $(patsubst %.js,%_min.js,$(JAVASCRIPT_SOURCES))
@@ -197,7 +198,7 @@ $(DISTNAME).tar.gz: mk-livestatus-$(VERSION).tar.gz .werks/werks
$(JAVASCRIPT_MI
@echo
"=============================================================================="
.werks/werks: $(WERKS)
- PYTHONPATH=. python scripts/precompile-werks
+ PYTHONPATH=. python scripts/precompile-werks .werks .werks/werks
# NOTE: Old tar versions (e.g. on CentOS 5) don't have the --transform option,
# so we do things in a slightly complicated way.
@@ -211,12 +212,16 @@ mk-livestatus-$(VERSION).tar.gz:
rm -rf mk-livestatus-$(VERSION)
ifeq ($(ENTERPRISE),yes)
+
+enterprise/.werks/werks: $(ENTERPRISE_WERKS)
+ PYTHONPATH=. python scripts/precompile-werks enterprise/.werks enterprise/.werks/werks
+
dist: cmc-$(VERSION).tar.gz
# We currently fake a package for cmc. Ugly...
-cmc-$(VERSION).tar.gz: config.h
- make -C livestatus distclean
- make -C enterprise/core distclean
+cmc-$(VERSION).tar.gz: config.h enterprise/.werks/werks
+ $(MAKE) -C livestatus distclean
+ $(MAKE) -C enterprise/core distclean
rm -rf cmc-$(VERSION)
mkdir cmc-$(VERSION)
tar cf - $(TAROPTS) \
@@ -239,6 +244,7 @@ cmc-$(VERSION).tar.gz: config.h
m4 | tar xf - -C cmc-$(VERSION)
mv cmc-$(VERSION)/enterprise/skel{,.permissions} cmc-$(VERSION)
mv cmc-$(VERSION)/enterprise/LIVEPROXYD.hook cmc-$(VERSION)
+ cp enterprise/.werks/werks cmc-$(VERSION)/werks
sed -i '1 i\include ../../Makefile.omd' cmc-$(VERSION)/Makefile
cd cmc-$(VERSION) && tar czf ../cmc-$(VERSION).tar.gz $(TAROPTS) .bugs *
rm -rf cmc-$(VERSION)
@@ -282,6 +288,8 @@ install:
install -m 644 enterprise/ChangeLog enterprise/EULA-*
$(DESTDIR)$(OMD_ROOT)/share/doc/check_mk_enterprise/
mkdir -p $(DESTDIR)$(OMD_ROOT)/share/diskspace
install -m 644 enterprise/diskspace
$(DESTDIR)$(OMD_ROOT)/share/diskspace/check_mk_enterprise
+ mkdir -p $(DESTDIR)$(OMD_ROOT)/share/check_mk/werks
+ install -m 644 werks-cmc $(DESTDIR)$(OMD_ROOT)/share/check_mk/werks
endif
packages:
@@ -356,7 +364,9 @@ clean:
rm -rf api clang-analyzer compile_commands.json dist.tmp rpm.topdir *.rpm *.deb *.exe \
mk-livestatus-*.tar.gz \
$(NAME)-*.tar.gz *~ counters autochecks \
- precompiled cache web/htdocs/js/*_min.js .werks/werks
+ precompiled cache web/htdocs/js/*_min.js \
+ .werks/werks \
+ enterprise/.werks/werks
find -name "*~" | xargs rm -f
mrproper:
diff --git a/lib/werks.py b/lib/werks.py
index c5fa43c..1694f7a 100644
--- a/lib/werks.py
+++ b/lib/werks.py
@@ -44,14 +44,21 @@ except NameError:
_ = lambda x: x # Fake i18n when not available
-def _compiled_werks_path():
- return cmk.paths.share_dir + "/werks/werks"
+def _compiled_werks_dir():
+ return cmk.paths.share_dir + "/werks"
def load():
werks = {}
- for werk_id, werk in json.load(open(_compiled_werks_path())).items():
- werks[int(werk_id)] = werk
+
+ for file_name in os.listdir(_compiled_werks_dir()):
+ if file_name != "werks" and not
file_name.startswith("werks-"):
+ continue
+
+ path = os.path.join(_compiled_werks_dir(), file_name)
+ for werk_id, werk in json.load(open(path)).items():
+ werks[int(werk_id)] = werk
+
return werks
diff --git a/scripts/precompile-werks b/scripts/precompile-werks
index f118567..694461c 100644
--- a/scripts/precompile-werks
+++ b/scripts/precompile-werks
@@ -1,10 +1,10 @@
#!/usr/bin/env python
import os
+import sys
import cmk.werks
-werks = cmk.werks.load_raw_files('.werks')
-if os.path.exists('enterprise/.werks'):
- werks.update(cmk.werks.load_raw_files('enterprise/.werks'))
+werk_dir, dest_file = sys.argv[1:]
-cmk.werks.write_precompiled_werks('.werks/werks', werks)
+werks = cmk.werks.load_raw_files(werk_dir)
+cmk.werks.write_precompiled_werks(dest_file, werks)
diff --git a/tests/lib/test_werks.py b/tests/lib/test_werks.py
index 3451cea..2e647f2 100644
--- a/tests/lib/test_werks.py
+++ b/tests/lib/test_werks.py
@@ -36,25 +36,26 @@ def test_enterprise_werks(site):
# assert cmk_omd_werks
def test_write_precompiled_werks(tmpdir, site, monkeypatch):
- tmp_path = "%s" % tmpdir.join("test-werks")
+ tmp_dir = "%s" % tmpdir
cmk_werks = cmk.werks.load_raw_files(os.path.join(testlib.cmk_path(),
".werks"))
assert len(cmk_werks) > 1000
assert [ w for w in cmk_werks.keys() if w >= 7500 ] == []
+ cmk.werks.write_precompiled_werks(os.path.join(tmp_dir, "werks"),
cmk_werks)
+
if site.version.edition() == "raw":
cmc_werks = cmk.werks.load_raw_files(os.path.join(testlib.cmc_path(),
".werks"))
assert len(cmc_werks) > 1000
assert [ w for w in cmc_werks.keys() if w < 8000 ] == []
- werks = {}
- werks.update(cmk_werks)
- if site.version.edition() == "raw":
- werks.update(cmc_werks)
-
- cmk.werks.write_precompiled_werks(tmp_path, werks)
+ cmk.werks.write_precompiled_werks(os.path.join(tmp_dir,
"werks-enterprise"), cmc_werks)
- monkeypatch.setattr(cmk.werks, "_compiled_werks_path", lambda: tmp_path)
+ monkeypatch.setattr(cmk.werks, "_compiled_werks_dir", lambda: tmp_dir)
werks_loaded = cmk.werks.load()
- assert werks == werks_loaded
+ merged_werks = cmk_werks
+ if site.version.edition() == "raw":
+ merged_werks.update(cmc_werks)
+
+ assert merged_werks == werks_loaded