[ -L "$2" ] && [ "$$(readlink "$2")" = "$3" ])
###--------------------------------------------------------------------------
+### Python extensions.
+
+CC = gcc
+CFLAGS = -O2 -g -Wall
+
+LD = $(CC)
+LDFLAGS =
+
+c-source = $(foreach c,$1,src/$c)
+c-object = $(foreach c,$1,$(STATE)/obj/$(basename $c).o)
+
+PYEXT_PKGFLAGS := $(shell pkg-config --cflags python2)
+PYEXT_CFLAGS = -fPIC -fno-strict-aliasing $(PYEXT_PKGFLAGS)
+PYEXT_LDFLAGS = -shared
+
+PYEXTS += jobclient
+jobclient_SOURCES = jobclient.c
+
+PYEXT_ALLSRC = $(foreach x,$(PYEXTS),\
+ $(call c-source,$($x_SOURCES)))
+PYEXT_ALLOBJ = $(foreach x,$(PYEXTS),\
+ $(call c-object,$($x_SOURCES)))
+$(PYEXT_ALLOBJ): $(STATE)/obj/%.o: src/%.c
+ $(V_AT)mkdir -p $(dir $@)
+ $(call v_tag,CC)$(CC) -c $(CFLAGS) $(PYEXT_CFLAGS) -o$@ $<
+
+PYMODULES = $(foreach x,$(PYEXTS),$(STATE)/lib/python/$x.so)
+all:: $(PYMODULES)
+$(PYMODULES): $(STATE)/lib/python/%.so: $$(call c-object,$$($$*_SOURCES))
+ $(V_AT)mkdir -p $(dir $@)
+ $(call v_tag,LD)$(LD) $(LDFLAGS) $(PYEXT_LDFLAGS) -o$@ $^
+
+###--------------------------------------------------------------------------
### Scripts.
SCRIPTS += mkbuildchroot
## In a chroot, `/etc/apt/sources.list' links to
## `/usr/local.schroot/etc/apt/sources.$d' for the appropriate distribution.
-APT_SOURCES = $(foreach d,$(DISTS), $(LOCAL)/etc/apt/sources.$d)
-CLEANFILES += $(APT_SOURCES)
+APT_SOURCES = $(foreach d,$(DISTS),$(LOCAL)/etc/apt/sources.$d)
all:: $(APT_SOURCES)
-$(foreach d,$(DISTS), $(STATE)/etc/apt/aptsrc.$d): $(STATE)/etc/apt/aptsrc.%:
+$(foreach d,$(DISTS),$(STATE)/etc/apt/aptsrc.$d): $(STATE)/etc/apt/aptsrc.%:
$(V_AT)mkdir -p $(dir $@)
$(call v_tag,GEN){ \
echo "### -*-conf-*- GENERATED by distorted-chroot: do not edit"; \
$(call v_tag,GEN)bin/mkaptsrc \
$(APTSRC) $($*_APTSRC) $(STATE)/etc/apt/aptsrc.$* \
>$@.new && mv $@.new $@
+CLEANFILES += $(APT_SOURCES)
## In a chroot, a link `/etc/apt/apt.conf.d/FOO' is created for each file in
## `/usr/local.schroot/etc/apt/apt.conf.d/FOO'.
$(STATE)/config.sh: $(schroot-config_FILE)
$(call v_tag,SYMLINK)ln -sf $(notdir $<) $@
-schroot-config:: $(STATE)/etc/schroot/sbuild.schroot
-$(STATE)/etc/schroot/sbuild.schroot: $(STATE)/bin/mkchrootconf
+schroot-config:: $(LOCAL)/etc/schroot/sbuild.schroot
+$(LOCAL)/etc/schroot/sbuild.schroot: $(STATE)/bin/mkchrootconf
$(V_AT)mkdir -p $(dir $@)
$(call v_tag,GEN)$(STATE)/bin/mkchrootconf >$@.new && \
$(ROOTLY) chown root:root $@.new && mv $@.new $@
-check::; $(call check-symlink,WARN,/etc/schroot/chroot.d/sbuild,$(HERE)/$(STATE)/etc/schroot/sbuild.schroot)
+CLEANFILES += $(LOCAL)/etc/schroot/sbuild.schroot
+check::; $(call check-symlink,WARN,/etc/schroot/chroot.d/sbuild,$(HERE)/$(LOCAL)/etc/schroot/sbuild.schroot)
-schroot-config:: $(STATE)/etc/schroot/sbuild.profile/copyfiles
-$(STATE)/etc/schroot/sbuild.profile/copyfiles: $(schroot-config_STAMP)
+schroot-config:: $(LOCAL)/etc/schroot/sbuild.profile/copyfiles
+$(LOCAL)/etc/schroot/sbuild.profile/copyfiles: $(schroot-config_STAMP)
$(V_AT)mkdir -p $(dir $@)
$(call v_tag,GEN){ \
echo "### -*-conf-*- GENERATED by distorted-chroot: do not edit"; \
for i in $(SCHROOT_COPYFILES); do echo "$$i"; done; \
} >$@.new && mv $@.new $@
+CLEANFILES += $(LOCAL)/etc/schroot/sbuild.profile/copyfiles
-schroot-config:: $(STATE)/etc/schroot/sbuild.profile/nssdatabases
-$(STATE)/etc/schroot/sbuild.profile/nssdatabases: $(schroot-config_STAMP)
+schroot-config:: $(LOCAL)/etc/schroot/sbuild.profile/nssdatabases
+$(LOCAL)/etc/schroot/sbuild.profile/nssdatabases: $(schroot-config_STAMP)
$(V_AT)mkdir -p $(dir $@)
$(call v_tag,GEN){ \
echo "### -*-conf-*- GENERATED by distorted-chroot: do not edit"; \
for i in $(SCHROOT_NSSDATABASES); do echo "$$i"; done; \
} >$@.new && mv $@.new $@
+CLEANFILES += $(LOCAL)/etc/schroot/sbuild.profile/nssdatabases
-schroot-config:: $(STATE)/etc/schroot/sbuild.profile/fstab
-$(STATE)/etc/schroot/sbuild.profile/fstab: \
+schroot-config:: $(LOCAL)/etc/schroot/sbuild.profile/fstab
+$(LOCAL)/etc/schroot/sbuild.profile/fstab: \
etc/sbuild.fstab.in $(schroot-config_STAMP)
$(V_AT)mkdir -p $(dir $@)
$(call v_tag,SUBST)$(call subst-file,### -*-conf-*-) \
<$< >$@.new && mv $@.new $@
+CLEANFILES += $(LOCAL)/etc/schroot/sbuild.profile/fstab
-check::; $(call check-symlink,WARN,/etc/schroot/sbuild,$(HERE)/$(STATE)/etc/schroot/sbuild.profile)
+check::; $(call check-symlink,WARN,/etc/schroot/sbuild,$(HERE)/$(LOCAL)/etc/schroot/sbuild.profile)
-schroot-config:: $(STATE)/etc/sbuild.conf
-$(STATE)/etc/sbuild.conf: etc/sbuild.conf.in $(schroot-config_STAMP)
+schroot-config:: $(LOCAL)/etc/sbuild.conf
+$(LOCAL)/etc/sbuild.conf: etc/sbuild.conf.in $(schroot-config_STAMP)
$(V_AT)mkdir -p $(dir $@)
$(call v_tag,SUBST)$(call subst-file,### -*-perl-*-) \
<$< >$@.new && mv $@.new $@
-check::; $(call check-symlink,WARN,/etc/sbuild/sbuild.conf,$(HERE)/$(STATE)/etc/sbuild.conf)
+CLEANFILES += $(LOCAL)/etc/sbuild.conf
+check::; $(call check-symlink,WARN,/etc/sbuild/sbuild.conf,$(HERE)/$(LOCAL)/etc/sbuild.conf)
check::; $(call check-executable,WARN,/usr/local.schroot/hacks/apt-get)
SCHROOT_SCRIPTS += 11private
SCHROOT_SCRIPTS += 15binfmt
SCHROOT_SCRIPTS += 51chrootenv
-COPY_SCHROOT_SCRIPTS = $(addprefix $(STATE)/etc/schroot/setup.d/,$(SCHROOT_SCRIPTS))
+COPY_SCHROOT_SCRIPTS = $(addprefix $(LOCAL)/etc/schroot/setup.d/,$(SCHROOT_SCRIPTS))
schroot-config:: $(COPY_SCHROOT_SCRIPTS)
$(COPY_SCHROOT_SCRIPTS): \
- $(STATE)/etc/schroot/setup.d/%: etc/schroot-scripts/%
+ $(LOCAL)/etc/schroot/setup.d/%: etc/schroot-scripts/%
$(V_AT)mkdir -p $(dir $@)
$(call v_tag,COPY)cp $< $@.new && mv $@.new $@
+CLEANFILES += $(COPY_SCHROOT_SCRIPTS)
CHECK_SCHROOT_SCRIPTS = $(addprefix check-script/,$(SCHROOT_SCRIPTS))
check:: $(CHECK_SCHROOT_SCRIPTS)
$(CHECK_SCHROOT_SCRIPTS): check-script/%:
- $(call check-symlink,WARN,/etc/schroot/setup.d/$*,$(HERE)/$(STATE)/etc/schroot/setup.d/$*)
+ $(call check-symlink,WARN,/etc/schroot/setup.d/$*,$(HERE)/$(LOCAL)/etc/schroot/setup.d/$*)
.PHONY: $(addprefix check-script/,$(SCHROOT_SCRIPTS))
###--------------------------------------------------------------------------