[Buildroot] [RFC] *clean targets

Peter Korsgaard jacmet at uclibc.org
Wed Oct 7 18:26:34 UTC 2009


>>>>> "Bernhard" == Bernhard Reutner-Fischer <rep.dot.nop at gmail.com> writes:

 Bernhard> Hi,
 Bernhard> Currently the clean target (as well as dirclean) does nothing useful.

 Bernhard> I propose the following change:

 Bernhard> # wipe target
 Bernhard> clean:
 Bernhard> # remove generated files, retain configs
 Bernhard> realclean:
 Bernhard> # remove generated files, including configs (but not DL_DIR!)
 Bernhard> distclean:
 Bernhard> # roll a release tarball, in gz, bz2, xz format
 Bernhard> release:

Sounds sensible. I would prefer to not touch the release target right
now, as I don't have xz installed, noone else needs it and I already
have my own release script signing the tarballs and uploading them.

 Bernhard> hm, something like this as a base (probably incomplete, but better than
 Bernhard> what we have now)

 Bernhard> diff --git a/Makefile b/Makefile
 Bernhard> index bbd49d4..ddd58ec 100644
 Bernhard> --- a/Makefile
 Bernhard> +++ b/Makefile
 Bernhard> @@ -444,19 +444,20 @@ external-deps:
 Bernhard>  # Cleanup and misc junk
 Bernhard>  #
 Bernhard>  #############################################################
 Bernhard> +# wipe target
 Bernhard>  clean: $(TARGETS_CLEAN)
 Bernhard> -	rm -rf $(STAGING_DIR) $(TARGET_DIR) $(IMAGE) $(BUILD_DIR)/.root $(STAMP_DIR)
 Bernhard> +	$(Q)rm -rf $(TARGET_DIR) $(IMAGE) $(BUILD_DIR)/.root $(STAMP_DIR)

Makes sense. Why would we want to run the -clean targets of all the
individual packages first? That just tends to take ages (and fails on
buggy packages), and we're nuking the TARGET_DIR afterwards anyway.

 
 Bernhard> -dirclean: $(TARGETS_DIRCLEAN)
 Bernhard> -	rm -rf $(STAGING_DIR) $(TARGET_DIR) $(IMAGE) $(BUILD_DIR)/.root $(STAMP_DIR)
 Bernhard> +# remove generated files, retain configs
 Bernhard> +dirclean: clean $(TARGETS_DIRCLEAN)
 Bernhard> +	$(Q)rm -rf $(STAGING_DIR) $(HOST_DIR) $(TOOLCHAIN_DIR)

Same comment about TARGETS_DIRCLEAN.

 
 Bernhard> -distclean:
 Bernhard> -ifeq ($(DL_DIR),$(TOPDIR)/dl)
 Bernhard> -	rm -rf $(DL_DIR)
 Bernhard> -endif
 Bernhard> -	rm -rf $(TOOLCHAIN_DIR) $(BUILD_DIR) $(BINARIES_DIR) \
 Bernhard> -	.config.cmd
 Bernhard> -	$(MAKE) -C $(CONFIG) clean
 Bernhard> +# remove generated files, including configs (but not DL_DIR!)
 Bernhard> +distclean: clean dirclean
 Bernhard> +	$(Q)$(MAKE) -C $(CONFIG) clean
 Bernhard> +	$(Q)rm -rf $(TOOLCHAIN_DIR) $(BUILD_DIR) $(BINARIES_DIR) \

dirclean already gets rid of those dirs.

 Bernhard> +		.config .config.cmd .config.old .auto.deps \
 Bernhard> +		$(BR2_DEPENDS_DIR)
 Bernhard>  release: distclean
 Bernhard> -	OUT=buildroot-$$(grep -A2 BR2_VERSION $(CONFIG_CONFIG_IN)|grep default|cut -f2 -d\"); \
 Bernhard> -	rm -rf ../$$OUT*; cp -al . ../$$OUT; cd ..; \
 Bernhard> -	tar cfz $$OUT.tar.gz --exclude .svn --exclude .git --exclude \*~ $$OUT; \
 Bernhard> -	rm -rf $$OUT
 Bernhard> +	$(Q)BR2_VERSION=$$(grep -A2 BR2_VERSION $(CONFIG_CONFIG_IN)|grep default|cut -f2 -d\"); \
 Bernhard> +	git archive HEAD --format=tar --prefix="buildroot-$$BR2_VERSION/" > ../buildroot-$$BR2_VERSION.tar; \

The git archive part is fine by me, but my script just expects the
.tar.gz, so I would like to keep it like that (for now atleast).

-- 
Bye, Peter Korsgaard



More information about the buildroot mailing list