mirror of
git://projects.qi-hardware.com/openwrt-xburst.git
synced 2024-12-12 00:44:03 +02:00
[backfire] merge r22814, r22815, r22819, r22871, r23084, r23102 and r23171
git-svn-id: svn://svn.openwrt.org/openwrt/branches/backfire@23203 3c298f89-4303-0410-b956-a3cf2f4a3e73
This commit is contained in:
parent
30bbe8bbe5
commit
f30b232516
@ -15,7 +15,7 @@ import getopt
|
|||||||
opt_dryrun = False
|
opt_dryrun = False
|
||||||
|
|
||||||
|
|
||||||
def parseVer_1234(match):
|
def parseVer_1234(match, filepath):
|
||||||
progname = match.group(1)
|
progname = match.group(1)
|
||||||
progversion = (int(match.group(2)) << 64) |\
|
progversion = (int(match.group(2)) << 64) |\
|
||||||
(int(match.group(3)) << 48) |\
|
(int(match.group(3)) << 48) |\
|
||||||
@ -23,7 +23,7 @@ def parseVer_1234(match):
|
|||||||
(int(match.group(5)) << 16)
|
(int(match.group(5)) << 16)
|
||||||
return (progname, progversion)
|
return (progname, progversion)
|
||||||
|
|
||||||
def parseVer_123(match):
|
def parseVer_123(match, filepath):
|
||||||
progname = match.group(1)
|
progname = match.group(1)
|
||||||
try:
|
try:
|
||||||
patchlevel = match.group(5)
|
patchlevel = match.group(5)
|
||||||
@ -39,7 +39,7 @@ def parseVer_123(match):
|
|||||||
patchlevel
|
patchlevel
|
||||||
return (progname, progversion)
|
return (progname, progversion)
|
||||||
|
|
||||||
def parseVer_12(match):
|
def parseVer_12(match, filepath):
|
||||||
progname = match.group(1)
|
progname = match.group(1)
|
||||||
try:
|
try:
|
||||||
patchlevel = match.group(4)
|
patchlevel = match.group(4)
|
||||||
@ -54,18 +54,24 @@ def parseVer_12(match):
|
|||||||
patchlevel
|
patchlevel
|
||||||
return (progname, progversion)
|
return (progname, progversion)
|
||||||
|
|
||||||
def parseVer_r(match):
|
def parseVer_r(match, filepath):
|
||||||
progname = match.group(1)
|
progname = match.group(1)
|
||||||
progversion = (int(match.group(2)) << 64)
|
progversion = (int(match.group(2)) << 64)
|
||||||
return (progname, progversion)
|
return (progname, progversion)
|
||||||
|
|
||||||
def parseVer_ymd(match):
|
def parseVer_ymd(match, filepath):
|
||||||
progname = match.group(1)
|
progname = match.group(1)
|
||||||
progversion = (int(match.group(2)) << 64) |\
|
progversion = (int(match.group(2)) << 64) |\
|
||||||
(int(match.group(3)) << 48) |\
|
(int(match.group(3)) << 48) |\
|
||||||
(int(match.group(4)) << 32)
|
(int(match.group(4)) << 32)
|
||||||
return (progname, progversion)
|
return (progname, progversion)
|
||||||
|
|
||||||
|
def parseVer_GIT(match, filepath):
|
||||||
|
progname = match.group(1)
|
||||||
|
st = os.stat(filepath)
|
||||||
|
progversion = int(st.st_mtime) << 64
|
||||||
|
return (progname, progversion)
|
||||||
|
|
||||||
extensions = (
|
extensions = (
|
||||||
".tar.gz",
|
".tar.gz",
|
||||||
".tar.bz2",
|
".tar.bz2",
|
||||||
@ -77,6 +83,7 @@ extensions = (
|
|||||||
)
|
)
|
||||||
|
|
||||||
versionRegex = (
|
versionRegex = (
|
||||||
|
(re.compile(r"(.+)[-_]([0-9a-fA-F]{40,40})"), parseVer_GIT), # xxx-GIT_SHASUM
|
||||||
(re.compile(r"(.+)[-_](\d+)\.(\d+)\.(\d+)\.(\d+)"), parseVer_1234), # xxx-1.2.3.4
|
(re.compile(r"(.+)[-_](\d+)\.(\d+)\.(\d+)\.(\d+)"), parseVer_1234), # xxx-1.2.3.4
|
||||||
(re.compile(r"(.+)[-_](\d\d\d\d)-?(\d\d)-?(\d\d)"), parseVer_ymd), # xxx-YYYY-MM-DD
|
(re.compile(r"(.+)[-_](\d\d\d\d)-?(\d\d)-?(\d\d)"), parseVer_ymd), # xxx-YYYY-MM-DD
|
||||||
(re.compile(r"(.+)[-_](\d+)\.(\d+)\.(\d+)(\w?)"), parseVer_123), # xxx-1.2.3a
|
(re.compile(r"(.+)[-_](\d+)\.(\d+)\.(\d+)(\w?)"), parseVer_123), # xxx-1.2.3a
|
||||||
@ -102,10 +109,12 @@ class Entry:
|
|||||||
self.directory = directory
|
self.directory = directory
|
||||||
self.filename = filename
|
self.filename = filename
|
||||||
self.progname = ""
|
self.progname = ""
|
||||||
|
self.fileext = ""
|
||||||
|
|
||||||
for ext in extensions:
|
for ext in extensions:
|
||||||
if filename.endswith(ext):
|
if filename.endswith(ext):
|
||||||
filename = filename[0:0-len(ext)]
|
filename = filename[0:0-len(ext)]
|
||||||
|
self.fileext = ext
|
||||||
break
|
break
|
||||||
else:
|
else:
|
||||||
print self.filename, "has an unknown file-extension"
|
print self.filename, "has an unknown file-extension"
|
||||||
@ -113,7 +122,8 @@ class Entry:
|
|||||||
for (regex, parseVersion) in versionRegex:
|
for (regex, parseVersion) in versionRegex:
|
||||||
match = regex.match(filename)
|
match = regex.match(filename)
|
||||||
if match:
|
if match:
|
||||||
(self.progname, self.version) = parseVersion(match)
|
(self.progname, self.version) = parseVersion(
|
||||||
|
match, directory + "/" + filename + self.fileext)
|
||||||
break
|
break
|
||||||
else:
|
else:
|
||||||
print self.filename, "has an unknown version pattern"
|
print self.filename, "has an unknown version pattern"
|
||||||
|
@ -26,6 +26,10 @@ $valid_mk or die "Unsupported version of make found: $mk\n";
|
|||||||
my @feeds;
|
my @feeds;
|
||||||
my %build_packages;
|
my %build_packages;
|
||||||
my %installed;
|
my %installed;
|
||||||
|
my %feed_cache;
|
||||||
|
|
||||||
|
my $feed_package = {};
|
||||||
|
my $feed_src = {};
|
||||||
|
|
||||||
sub parse_config() {
|
sub parse_config() {
|
||||||
my $line = 0;
|
my $line = 0;
|
||||||
@ -148,16 +152,22 @@ sub update_feed_via($$$$) {
|
|||||||
|
|
||||||
sub get_feed($) {
|
sub get_feed($) {
|
||||||
my $feed = shift;
|
my $feed = shift;
|
||||||
|
|
||||||
|
if (!defined($feed_cache{$feed})) {
|
||||||
my $file = "./feeds/$feed.index";
|
my $file = "./feeds/$feed.index";
|
||||||
|
|
||||||
clear_packages();
|
clear_packages();
|
||||||
|
|
||||||
-f $file or do {
|
-f $file or do {
|
||||||
print "Ignoring feed '$feed' - index missing\n";
|
print "Ignoring feed '$feed' - index missing\n";
|
||||||
return;
|
return;
|
||||||
};
|
};
|
||||||
parse_package_metadata($file) or return;
|
parse_package_metadata($file) or return;
|
||||||
return { %package };
|
$feed_cache{$feed} = [ { %package }, { %srcpackage } ];
|
||||||
|
}
|
||||||
|
|
||||||
|
$feed_package = $feed_cache{$feed}->[0];
|
||||||
|
$feed_src = $feed_cache{$feed}->[1];
|
||||||
|
return $feed_cache{$feed}->[0];
|
||||||
}
|
}
|
||||||
|
|
||||||
sub get_installed() {
|
sub get_installed() {
|
||||||
@ -174,8 +184,8 @@ sub search_feed {
|
|||||||
|
|
||||||
return unless @substr > 0;
|
return unless @substr > 0;
|
||||||
get_feed($feed);
|
get_feed($feed);
|
||||||
foreach my $name (sort { lc($a) cmp lc($b) } keys %package) {
|
foreach my $name (sort { lc($a) cmp lc($b) } keys %$feed_package) {
|
||||||
my $pkg = $package{$name};
|
my $pkg = $feed_package->{$name};
|
||||||
my $substr;
|
my $substr;
|
||||||
my $pkgmatch = 1;
|
my $pkgmatch = 1;
|
||||||
|
|
||||||
@ -211,8 +221,8 @@ sub list_feed {
|
|||||||
my $feed = shift;
|
my $feed = shift;
|
||||||
|
|
||||||
get_feed($feed);
|
get_feed($feed);
|
||||||
foreach my $name (sort { lc($a) cmp lc($b) } keys %package) {
|
foreach my $name (sort { lc($a) cmp lc($b) } keys %$feed_package) {
|
||||||
my $pkg = $package{$name};
|
my $pkg = $feed_package->{$name};
|
||||||
next if $pkg->{vdepends};
|
next if $pkg->{vdepends};
|
||||||
if($pkg->{name}) {
|
if($pkg->{name}) {
|
||||||
printf "\%-32s\t\%s\n", $pkg->{name}, $pkg->{title};
|
printf "\%-32s\t\%s\n", $pkg->{name}, $pkg->{title};
|
||||||
@ -293,10 +303,13 @@ sub install_package {
|
|||||||
$feed or do {
|
$feed or do {
|
||||||
$installed{$name} and return 0;
|
$installed{$name} and return 0;
|
||||||
# TODO: check if it's already installed within ./package directory
|
# TODO: check if it's already installed within ./package directory
|
||||||
$srcpackage{$name} or -d "./package/$name" or warn "WARNING: No feed for package '$name' found, maybe it's already part of the standard packages?\n";
|
$feed_src->{$name} or -d "./package/$name" or warn "WARNING: No feed for package '$name' found, maybe it's already part of the standard packages?\n";
|
||||||
return 0;
|
return 0;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
# switch to the metadata for the selected feed
|
||||||
|
get_feed($feed->[1]);
|
||||||
|
|
||||||
my $pkg = $feed{$feed->[1]}->{$name} or return 1;
|
my $pkg = $feed{$feed->[1]}->{$name} or return 1;
|
||||||
$pkg->{name} or do {
|
$pkg->{name} or do {
|
||||||
$installed{$name} and return 0;
|
$installed{$name} and return 0;
|
||||||
@ -327,8 +340,8 @@ sub install_package {
|
|||||||
return 1;
|
return 1;
|
||||||
};
|
};
|
||||||
|
|
||||||
# install all dependencies
|
# install all dependencies referenced from the source package
|
||||||
foreach my $vpkg (@{$srcpackage{$src}}, $pkg) {
|
foreach my $vpkg (@{$feed_src->{$src}}) {
|
||||||
foreach my $dep (@{$vpkg->{depends}}, @{$vpkg->{builddepends}}, @{$vpkg->{"builddepends/host"}}) {
|
foreach my $dep (@{$vpkg->{depends}}, @{$vpkg->{builddepends}}, @{$vpkg->{"builddepends/host"}}) {
|
||||||
next if $dep =~ /@/;
|
next if $dep =~ /@/;
|
||||||
$dep =~ s/^\+//;
|
$dep =~ s/^\+//;
|
||||||
@ -384,11 +397,12 @@ sub install {
|
|||||||
if (!defined($opts{p}) or $opts{p} eq $f->[1]) {
|
if (!defined($opts{p}) or $opts{p} eq $f->[1]) {
|
||||||
printf "Installing all packages from feed %s.\n", $f->[1];
|
printf "Installing all packages from feed %s.\n", $f->[1];
|
||||||
get_feed($f->[1]);
|
get_feed($f->[1]);
|
||||||
foreach my $name (sort { lc($a) cmp lc($b) } keys %package) {
|
foreach my $name (sort { lc($a) cmp lc($b) } keys %$feed_package) {
|
||||||
my $p = $package{$name};
|
my $p = $feed_package->{$name};
|
||||||
next if $p->{vdepends};
|
next if $p->{vdepends};
|
||||||
if( $p->{name} ) {
|
if( $p->{name} ) {
|
||||||
install_package($feed, $p->{name}) == 0 or $ret = 1;
|
install_package($feed, $p->{name}) == 0 or $ret = 1;
|
||||||
|
get_feed($f->[1]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -638,6 +638,9 @@ sub gen_package_mk() {
|
|||||||
$pkg->{buildonly} and $config = "";
|
$pkg->{buildonly} and $config = "";
|
||||||
print "package-$config += $pkg->{subdir}$pkg->{src}\n";
|
print "package-$config += $pkg->{subdir}$pkg->{src}\n";
|
||||||
if ($pkg->{variant}) {
|
if ($pkg->{variant}) {
|
||||||
|
if (!defined($done{$pkg->{src}})) {
|
||||||
|
print "\$(curdir)/$pkg->{subdir}$pkg->{src}/default-variant := $pkg->{variant}\n";
|
||||||
|
}
|
||||||
print "\$(curdir)/$pkg->{subdir}$pkg->{src}/variants += \$(if $config,$pkg->{variant})\n"
|
print "\$(curdir)/$pkg->{subdir}$pkg->{src}/variants += \$(if $config,$pkg->{variant})\n"
|
||||||
}
|
}
|
||||||
$pkg->{prereq} and print "prereq-$config += $pkg->{subdir}$pkg->{src}\n";
|
$pkg->{prereq} and print "prereq-$config += $pkg->{subdir}$pkg->{src}\n";
|
||||||
@ -772,6 +775,7 @@ sub gen_package_mk() {
|
|||||||
next unless $cmds;
|
next unless $cmds;
|
||||||
print <<EOF
|
print <<EOF
|
||||||
|
|
||||||
|
ifndef DUMP_TARGET_DB
|
||||||
\$(TARGET_DIR)/etc/uci-defaults/$preconfig: FORCE
|
\$(TARGET_DIR)/etc/uci-defaults/$preconfig: FORCE
|
||||||
( \\
|
( \\
|
||||||
$cmds \\
|
$cmds \\
|
||||||
@ -780,6 +784,8 @@ $cmds \\
|
|||||||
ifneq (\$(IMAGEOPT)\$(CONFIG_IMAGEOPT),)
|
ifneq (\$(IMAGEOPT)\$(CONFIG_IMAGEOPT),)
|
||||||
package/preconfig: \$(TARGET_DIR)/etc/uci-defaults/$preconfig
|
package/preconfig: \$(TARGET_DIR)/etc/uci-defaults/$preconfig
|
||||||
endif
|
endif
|
||||||
|
endif
|
||||||
|
|
||||||
EOF
|
EOF
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user