mirror of
https://github.com/xen-project/xen.git
synced 2026-10-28 10:11:27 +01:00
Introduce python binding for libxl. The binding is not yet complete but serveral methods are implemented and tested. Those which are implemented provide examples of the two or three basic patterns that most future methods should follow. Over 5,000 lines of boilerplate is automatically generated to wrap and export all relevant libxl structure definitions. There are a few places where such code cannot be fully auto-generated and special hooks are declared and stubbed where, for example, conversion between libxl_file_reference and a python file object is required. Signed-off-by: Gianni Tedesco <gianni.tedesco@citrix.com> Signed-off-by: Ian Jackson <ian.jackson@eu.citrix.com>
98 lines
2.9 KiB
Makefile
98 lines
2.9 KiB
Makefile
XEN_ROOT = ../..
|
|
include $(XEN_ROOT)/tools/Rules.mk
|
|
|
|
.PHONY: all
|
|
all: build
|
|
|
|
# For each new supported translation, add its name here, eg 'fr_FR'
|
|
# to cause the .po file to be built & installed, eg
|
|
LINGUAS :=
|
|
POPACKAGE := xen-xm
|
|
PODIR := xen/xm/messages
|
|
POTFILE := $(PODIR)/xen-xm.pot
|
|
I18NSRCFILES = $(shell find xen/xm/ -name '*.py')
|
|
CATALOGS = $(patsubst %,xen/xm/messages/%.mo,$(LINGUAS))
|
|
NLSDIR = $(SHAREDIR)/locale
|
|
XENPATH = "xen/util/path.py"
|
|
|
|
genpath-target = $(call buildmakevars2file,$(XENPATH))
|
|
$(eval $(genpath-target))
|
|
|
|
.PHONY: build buildpy
|
|
buildpy: genpath genwrap.py $(XEN_ROOT)/tools/libxl/libxl.idl \
|
|
$(XEN_ROOT)/tools/libxl/libxltypes.py
|
|
PYTHONPATH=$(XEN_ROOT)/tools/libxl $(PYTHON) genwrap.py \
|
|
$(XEN_ROOT)/tools/libxl/libxl.idl \
|
|
xen/lowlevel/xl/_pyxl_types.h \
|
|
xen/lowlevel/xl/_pyxl_types.c
|
|
CC="$(CC)" CFLAGS="$(CFLAGS)" $(PYTHON) setup.py build
|
|
|
|
build: buildpy refresh-pot refresh-po $(CATALOGS)
|
|
|
|
# NB we take care to only update the .pot file it strings have
|
|
# actually changed. This is complicated by the embedded date
|
|
# string, hence the sed black magic. This avoids the expensive
|
|
# re-generation of .po files on every single build
|
|
refresh-pot: $(I18NSRCFILES)
|
|
xgettext --default-domain=$(POPACKAGE) \
|
|
--keyword=N_ \
|
|
--keyword=_ \
|
|
-o $(POTFILE)-tmp \
|
|
$(I18NSRCFILES)
|
|
sed -f remove-potcdate.sed < $(POTFILE) > $(POTFILE)-1
|
|
sed -f remove-potcdate.sed < $(POTFILE)-tmp > $(POTFILE)-2
|
|
set -e; if cmp -s $(POTFILE)-1 $(POTFILE)-2; then \
|
|
rm -f $(POTFILE)-tmp $(POTFILE)-1 $(POTFILE)-2; \
|
|
else \
|
|
mv $(POTFILE)-tmp $(POTFILE); \
|
|
rm -f $(POTFILE)-1 $(POTFILE)-2; \
|
|
fi
|
|
|
|
refresh-po: $(POTFILE)
|
|
set -e; for l in $(LINGUAS); do \
|
|
if $(MSGMERGE) $(PODIR)/$$l.po $(POTFILE) > $(PODIR)/$$l-tmp ; then \
|
|
mv -f $(PODIR)/$$l-tmp $(PODIR)/$$l.po ; \
|
|
echo "$(MSGMERGE) of $$l.po succeeded" ; \
|
|
else \
|
|
echo "$(MSGMERGE) of $$l.po failed" ; \
|
|
rm -f $(PODIR)/$$l-tmp ; \
|
|
fi \
|
|
done
|
|
|
|
%.mo: %.po
|
|
$(MSGFMT) -c -o $@ $<
|
|
|
|
.PHONY: install
|
|
install: install-messages install-dtd
|
|
CC="$(CC)" CFLAGS="$(CFLAGS)" $(PYTHON) setup.py install \
|
|
$(PYTHON_PREFIX_ARG) --root="$(DESTDIR)" --force
|
|
|
|
install-dtd: all
|
|
$(INSTALL_DIR) $(DESTDIR)$(SHAREDIR)/xen
|
|
$(INSTALL_DATA) xen/xm/create.dtd $(DESTDIR)$(SHAREDIR)/xen
|
|
|
|
install-messages: all
|
|
set -e; if which $(MSGFMT) >/dev/null ; then \
|
|
$(INSTALL_DIR) $(DESTDIR)$(NLSDIR); \
|
|
for l in $(LINGUAS); do \
|
|
$(INSTALL_DIR) $(DESTDIR)$(NLSDIR)/$$l; \
|
|
$(INSTALL_DIR) $(DESTDIR)$(NLSDIR)/$$l/LC_MESSAGES; \
|
|
$(INSTALL_DATA) $(PODIR)/$$l.mo \
|
|
$(DESTDIR)$(NLSDIR)/$$l/LC_MESSAGES/$(POPACKAGE).mo; \
|
|
done ; \
|
|
fi
|
|
|
|
.PHONY: test
|
|
test:
|
|
export LD_LIBRARY_PATH=$$(readlink -f ../libxc):$$(readlink -f ../xenstore); $(PYTHON) test.py -b -u
|
|
|
|
.PHONY: clean
|
|
clean:
|
|
rm -f $(XENPATH)
|
|
rm -rf build *.pyc *.pyo *.o *.a *~ $(CATALOGS) xen/util/auxbin.pyc
|
|
rm -f xen/lowlevel/xl/_pyxl_types.h
|
|
rm -f xen/lowlevel/xl/_pyxl_types.c
|
|
rm -f $(DEPS)
|
|
|
|
-include $(DEPS)
|