cjdns: use temporary directory within the build environment 193/head
authorJo-Philipp Wich <jo@mein.io>
Mon, 6 Jun 2016 15:03:12 +0000 (17:03 +0200)
committerJo-Philipp Wich <jo@mein.io>
Mon, 6 Jun 2016 15:16:46 +0000 (17:16 +0200)
By default, cjdns' build system uses the system wide `/tmp` directory to store
intermediate build artifacts.

Unfortunately its build system fails to clean after itself, leaving thousands
of `jsmake-<hash>` directories behind, taking up precious inodes and massively
slowing down processes traversing the temporary directory:

    root@buildbot:~# find /tmp/ -maxdepth 1 -type d -name 'jsmake-*' | wc -l
    1581

Attempt to solve that problem by using the upstream-introduced
`CJDNS_BUILD_TMPDIR` environment variable in order to move the intermediate
artifacts from the system-wide `/tmp` to a temporary directory within the
package build dir which is properly deleted upon package rebuild cycles.

Signed-off-by: Jo-Philipp Wich <jo@mein.io>
cjdns/Makefile

index a81b49144cfe66598ccbddcd68088c09ffa49edf..8efd2821dd6eddcf385255d4bd0cd1e5801df3c0 100644 (file)
@@ -18,7 +18,7 @@ include $(TOPDIR)/rules.mk
 
 PKG_NAME:=cjdns
 PKG_VERSION:=0.17
-PKG_RELEASE:=2
+PKG_RELEASE:=3
 
 PKG_SOURCE_URL:=https://github.com/hyperboria/cjdns.git
 PKG_SOURCE_PROTO:=git
@@ -77,6 +77,7 @@ PKG_DO_VARS+= UCLIBC=1
 endif
 
 define Build/Compile
+       $(INSTALL_DIR) $(PKG_BUILD_DIR)/tmp
        CROSS="true" \
        CC="$(TARGET_CC)" \
        AR="$(TARGET_AR)" \
@@ -87,6 +88,7 @@ define Build/Compile
        TARGET_ARCH="$(CONFIG_ARCH)" \
        SSP_SUPPORT="$(CONFIG_SSP_SUPPORT)" \
        GYP_ADDITIONAL_ARGS="-f make-linux" \
+       CJDNS_BUILD_TMPDIR="$(PKG_BUILD_DIR)/tmp" \
        $(PKG_DO_VARS) \
        $(PKG_BUILD_DIR)/do
 endef