Makefile: Create `$(LOCAL)/share/man/'.
[distorted-chroot] / Makefile
index fbbc961..dbd1714 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -316,6 +316,39 @@ check-symlink               = $(call check,$1,"\`$2' is not a link to \`$3'", \
        [ -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
@@ -340,11 +373,10 @@ $(SUBST_SCRIPTS): $(STATE)/bin/%: bin/% $(STATE)/config.sh
 
 ## 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"; \
@@ -358,6 +390,7 @@ $(APT_SOURCES): $(LOCAL)/etc/apt/sources.%: \
        $(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'.
@@ -404,8 +437,8 @@ check::; $(call check-symlink,ERR,/schroot,/run/schroot/mount)
 
 %print-varlist          = { \
        echo "\#\#\# -*-sh-*- GENERATED by distorted-chroot: do not edit"; \
-       $(foreach v,$1, echo $v=\''$(subst ','\'\\\'\'',$($v))'\';) \
-} #'
+       $(foreach v,$1, echo $v=\'$(call squote,$($v))\';) \
+}
 schroot-config_HASH    := \
        $(shell $(call %print-varlist,$(CONFIG_VARS)) | \
                sha256sum | cut -c1-32)
@@ -413,75 +446,82 @@ schroot-config_FILE        = $(STATE)/config.sh-$(schroot-config_HASH)
 $(schroot-config_FILE):
        $(V_AT)mkdir -p $(STATE)
        $(V_AT)rm -f $(STATE)/config.sh-*
-       $(call v_tag,STAMP)$(call %print-varlist,$(CONFIG_VARS)) \
+       $(call v_tag,GEN)$(call %print-varlist,$(CONFIG_VARS)) \
                >$@.new && mv $@.new $@
 
 schroot-config:: $(STATE)/config.sh
 $(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))
 
 ###--------------------------------------------------------------------------
 ### `/usr/local/' structure.
 
 LOCAL_COMMON_DIRS       = share/ src/
-all:: $(foreach d,$(LOCAL_COMMON_DIRS),$(LOCAL)/$d)
-$(foreach d,$(LOCAL_COMMON_DIRS),$(LOCAL)/$d):
+LOCAL_EXTRA_DIRS        = share/man/
+all:: $(foreach d,$(LOCAL_COMMON_DIRS) $(LOCAL_EXTRA_DIRS),$(LOCAL)/$d)
+$(foreach d,$(LOCAL_COMMON_DIRS) $(LOCAL_EXTRA_DIRS),$(LOCAL)/$d):
        $(V_AT)mkdir -p $(dir $(patsubst %/,%,$@))
        $(call v_tag,MKDIR)mkdir $@
 
@@ -521,12 +561,12 @@ setup-chroots: $(BUILD_CHROOTS)
 $(BUILD_CHROOTS): chroot/%: $(STATE)/stamp/chroot.%
 .PHONY: setup-chroots $(BUILD_CHROOTS)
 
-$(CHROOT_STAMPS): $(STATE)/stamp/chroot.%: \
-               $$(call chroot-deps,$(STATE)/stamp/cross-tools.,$$*)
+$(CHROOT_STAMPS): $(STATE)/stamp/chroot.%:
        $(V_AT)mkdir -p $(dir $@) log/
        $(MAKE) \
                $(STATE)/bin/mkbuildchroot $(STATE)/bin/install-cross-tools \
-               $(STATE)/etc/schroot/sbuild.schroot
+               $(STATE)/etc/schroot/sbuild.schroot \
+               $$(call chroot-deps,$(STATE)/stamp/cross-tools.,$$*)
        $(call v_tag,CHROOT)$(call v_log,setup-chroot.$*, \
                $(SILENCE_LVM); \
                $(ROOTLY) $(STATE)/bin/mkbuildchroot \