mirror of
git://projects.qi-hardware.com/openwrt-xburst.git
synced 2024-11-24 02:48:26 +02:00
add proper package dependency handling
git-svn-id: svn://svn.openwrt.org/openwrt/branches/buildroot-ng/openwrt@3679 3c298f89-4303-0410-b956-a3cf2f4a3e73
This commit is contained in:
parent
61ad8a56f8
commit
ae5ab94ef5
@ -3,7 +3,6 @@ ifneq ($(DUMP),)
|
|||||||
all: dumpinfo
|
all: dumpinfo
|
||||||
else
|
else
|
||||||
all: compile
|
all: compile
|
||||||
endif
|
|
||||||
|
|
||||||
define Build/DefaultTargets
|
define Build/DefaultTargets
|
||||||
$(PKG_BUILD_DIR)/.prepared:
|
$(PKG_BUILD_DIR)/.prepared:
|
||||||
@ -12,18 +11,31 @@ $(PKG_BUILD_DIR)/.prepared:
|
|||||||
$(call Build/Prepare)
|
$(call Build/Prepare)
|
||||||
touch $$@
|
touch $$@
|
||||||
|
|
||||||
$(PKG_BUILD_DIR)/.configured:
|
$(PKG_BUILD_DIR)/.configured: $(PKG_BUILD_DIR)/.prepared
|
||||||
$(call Build/Configure)
|
$(call Build/Configure)
|
||||||
touch $$@
|
touch $$@
|
||||||
|
|
||||||
$(PKG_BUILD_DIR)/.built:
|
ifeq ($(shell $(SCRIPT_DIR)/timestamp.pl -p $(PKG_BUILD_DIR) .),.)
|
||||||
|
$(PKG_BUILD_DIR)/.prepared: clean
|
||||||
|
endif
|
||||||
|
|
||||||
|
$(PKG_BUILD_DIR)/.built: $(PKG_BUILD_DIR)/.configured
|
||||||
$(call Build/Compile)
|
$(call Build/Compile)
|
||||||
touch $$@
|
touch $$@
|
||||||
|
|
||||||
|
package-clean:
|
||||||
|
$(call Build/Clean)
|
||||||
|
rm -f $(PKG_BUILD_DIR)/.built
|
||||||
|
|
||||||
|
package-recompile:
|
||||||
|
rm -f $(PKG_BUILD_DIR)/.built
|
||||||
|
|
||||||
|
.PHONY: package-clean package-recompile
|
||||||
|
|
||||||
define Build/DefaultTargets
|
define Build/DefaultTargets
|
||||||
endef
|
endef
|
||||||
endef
|
endef
|
||||||
|
endif
|
||||||
|
|
||||||
define Package/Default
|
define Package/Default
|
||||||
CONFIGFILE:=
|
CONFIGFILE:=
|
||||||
@ -64,15 +76,24 @@ IDIR_$(1):=$(PKG_BUILD_DIR)/ipkg/$(1)
|
|||||||
INFO_$(1):=$(IPKG_STATE_DIR)/info/$(1).list
|
INFO_$(1):=$(IPKG_STATE_DIR)/info/$(1).list
|
||||||
|
|
||||||
ifneq ($(PACKAGE_$(1)),)
|
ifneq ($(PACKAGE_$(1)),)
|
||||||
compile-targets: $$(IPKG_$(1))
|
COMPILE_$(1):=1
|
||||||
endif
|
endif
|
||||||
ifneq ($(DEVELOPER),)
|
ifneq ($(DEVELOPER),)
|
||||||
compile-targets: $$(IPKG_$(1))
|
COMPILE_$(1):=1
|
||||||
endif
|
endif
|
||||||
ifeq ($(PACKAGE_$(1)),y)
|
ifeq ($(PACKAGE_$(1)),y)
|
||||||
install-targets: $$(INFO_$(1))
|
install-targets: $$(INFO_$(1))
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
ifneq ($$(COMPILE_$(1)),)
|
||||||
|
ifeq ($$(shell $(SCRIPT_DIR)/timestamp.pl -p -x ipkg $$(IPKG_$(1)) $(PKG_BUILD_DIR)),$(PKG_BUILD_DIR))
|
||||||
|
$(PKG_BUILD_DIR)/.built: package-recompile
|
||||||
|
endif
|
||||||
|
|
||||||
|
compile-targets: $$(IPKG_$(1))
|
||||||
|
endif
|
||||||
|
|
||||||
|
|
||||||
IDEPEND_$(1):=$$(strip $$(DEPENDS))
|
IDEPEND_$(1):=$$(strip $$(DEPENDS))
|
||||||
|
|
||||||
DUMPINFO += \
|
DUMPINFO += \
|
||||||
@ -103,19 +124,18 @@ $$(IDIR_$(1))/CONTROL/control: $(PKG_BUILD_DIR)/.prepared
|
|||||||
[ -f ./ipkg/$(1).$$$$file ] && cp ./ipkg/$(1).$$$$file $$(IDIR_$(1))/CONTROL/$$$$file || true; \
|
[ -f ./ipkg/$(1).$$$$file ] && cp ./ipkg/$(1).$$$$file $$(IDIR_$(1))/CONTROL/$$$$file || true; \
|
||||||
done
|
done
|
||||||
|
|
||||||
$$(IPKG_$(1)): $$(IDIR_$(1))/CONTROL/control $(PKG_BUILD_DIR)/.built $(PACKAGE_DIR)
|
$$(IPKG_$(1)): $$(IDIR_$(1))/CONTROL/control $(PKG_BUILD_DIR)/.built
|
||||||
$(call Package/$(1)/install,$$(IDIR_$(1)))
|
$(call Package/$(1)/install,$$(IDIR_$(1)))
|
||||||
|
mkdir -p $(PACKAGE_DIR)
|
||||||
$(IPKG_BUILD) $$(IDIR_$(1)) $(PACKAGE_DIR)
|
$(IPKG_BUILD) $$(IDIR_$(1)) $(PACKAGE_DIR)
|
||||||
|
|
||||||
$$(INFO_$(1)): $$(IPKG_$(1))
|
$$(INFO_$(1)): $$(IPKG_$(1))
|
||||||
$(IPKG) install $$(IPKG_$(1))
|
$(IPKG) install $$(IPKG_$(1))
|
||||||
|
|
||||||
$(1)-clean:
|
$(1)-clean:
|
||||||
rm -f $$(IPKG_$(1))
|
rm -f $(PACKAGE_DIR)/$(1)_*
|
||||||
clean: $(1)-clean
|
clean: $(1)-clean
|
||||||
|
|
||||||
PACKAGES += $(1)
|
|
||||||
|
|
||||||
ifneq ($(__DEFAULT_TARGETS),1)
|
ifneq ($(__DEFAULT_TARGETS),1)
|
||||||
$(eval $(call Build/DefaultTargets))
|
$(eval $(call Build/DefaultTargets))
|
||||||
endif
|
endif
|
||||||
@ -163,6 +183,10 @@ define Build/Compile
|
|||||||
$(call Build/Compile/Default)
|
$(call Build/Compile/Default)
|
||||||
endef
|
endef
|
||||||
|
|
||||||
|
define Build/Clean
|
||||||
|
$(MAKE) clean
|
||||||
|
endef
|
||||||
|
|
||||||
ifneq ($(DUMP),)
|
ifneq ($(DUMP),)
|
||||||
dumpinfo:
|
dumpinfo:
|
||||||
$(DUMPINFO)
|
$(DUMPINFO)
|
||||||
@ -191,14 +215,9 @@ install:
|
|||||||
@$(CMD_TRACE) "installing... "
|
@$(CMD_TRACE) "installing... "
|
||||||
@$(MAKE) install-targets $(MAKE_TRACE)
|
@$(MAKE) install-targets $(MAKE_TRACE)
|
||||||
|
|
||||||
mostlyclean:
|
|
||||||
rebuild:
|
rebuild:
|
||||||
$(CMD_TRACE) "rebuilding... "
|
$(CMD_TRACE) "rebuilding... "
|
||||||
@-$(MAKE) mostlyclean 2>&1 >/dev/null
|
$(MAKE) package-clean compile $(MAKE_TRACE)
|
||||||
if [ -f $(PKG_BUILD_DIR)/.built ]; then \
|
|
||||||
$(MAKE) clean $(MAKE_TRACE); \
|
|
||||||
fi
|
|
||||||
$(MAKE) compile $(MAKE_TRACE)
|
|
||||||
|
|
||||||
$(PACKAGE_DIR):
|
$(PACKAGE_DIR):
|
||||||
mkdir -p $@
|
mkdir -p $@
|
||||||
@ -210,4 +229,4 @@ clean:
|
|||||||
rm -rf $(PKG_BUILD_DIR)
|
rm -rf $(PKG_BUILD_DIR)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
.PHONY: all source prepare compile install clean dumpinfo
|
.PHONY: all source prepare compile install clean rebuild dumpinfo compile-targets install-targets clean-targets
|
||||||
|
3
rules.mk
3
rules.mk
@ -1,4 +1,7 @@
|
|||||||
|
ifeq ($(DUMP),)
|
||||||
include $(TOPDIR)/.config
|
include $(TOPDIR)/.config
|
||||||
|
endif
|
||||||
|
|
||||||
SHELL=/bin/bash
|
SHELL=/bin/bash
|
||||||
export SHELL
|
export SHELL
|
||||||
|
|
||||||
|
@ -1,31 +1,47 @@
|
|||||||
#!/usr/bin/perl
|
#!/usr/bin/perl
|
||||||
use strict;
|
use strict;
|
||||||
|
|
||||||
sub get_ts($) {
|
sub get_ts($$) {
|
||||||
my $path = shift;
|
my $path = shift;
|
||||||
|
my $options = shift;
|
||||||
my $ts = 0;
|
my $ts = 0;
|
||||||
open FIND, "find $path -not -path \\*.svn\\* -and -not -path \\*CVS\\* 2>/dev/null |";
|
my $fn = "";
|
||||||
|
-d "$path" and $path .= "/*";
|
||||||
|
open FIND, "find $path -not -path \\*.svn\\* -and -not -path \\*CVS\\* $options 2>/dev/null |";
|
||||||
while (<FIND>) {
|
while (<FIND>) {
|
||||||
open FILE, "<$_";
|
chomp;
|
||||||
|
my $file = $_;
|
||||||
|
open FILE, "<$file";
|
||||||
my @stat = stat FILE;
|
my @stat = stat FILE;
|
||||||
close FILE;
|
close FILE;
|
||||||
$ts = $stat[9] if ($stat[9] > $ts);
|
if ($stat[9] > $ts) {
|
||||||
|
$ts = $stat[9];
|
||||||
|
$fn = $file;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
close FIND;
|
close FIND;
|
||||||
return $ts;
|
return ($ts, $fn);
|
||||||
}
|
}
|
||||||
|
|
||||||
(@ARGV > 0) or push @ARGV, ".";
|
(@ARGV > 0) or push @ARGV, ".";
|
||||||
my $ts = 0;
|
my $ts = 0;
|
||||||
my $n = ".";
|
my $n = ".";
|
||||||
my %options;
|
my %options;
|
||||||
foreach my $path (@ARGV) {
|
while (@ARGV > 0) {
|
||||||
if ($path =~ /^-/) {
|
my $path = shift @ARGV;
|
||||||
|
if ($path =~ /^-x/) {
|
||||||
|
my $str = shift @ARGV;
|
||||||
|
$options{"-x"} .= " -and -not -path \\*".$str."\\*"
|
||||||
|
} elsif ($path =~ /^-/) {
|
||||||
$options{$path} = 1;
|
$options{$path} = 1;
|
||||||
} else {
|
} else {
|
||||||
my $tmp = get_ts($path);
|
my ($tmp, $fname) = get_ts($path, $options{"-x"});
|
||||||
if ($tmp > $ts) {
|
if ($tmp > $ts) {
|
||||||
|
if ($options{'-f'}) {
|
||||||
|
$n = $fname;
|
||||||
|
} else {
|
||||||
$n = $path;
|
$n = $path;
|
||||||
|
}
|
||||||
$ts = $tmp;
|
$ts = $tmp;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user