25 Feb
2009
25 Feb
'09
13:59
On Mon, Feb 23, 2009 at 01:54:12AM +0100, Marcus Hüwe wrote: > I wrote a small patch to inject rpm/deb/whatever data to the buildinfo > calculation. This means one can collect the rpm/deb provides and requires > of local packages and send them to the obs which uses them to calculate > the buildinfo for local builds. Heh, this is a feature that was actually already discussed with Peter but never reached the implementation phase. > Usecase: > * you submitted a new package to the obs: before you can build a local package > which depends on this new package you have to wait until the obs has built it > (now you could simply do sth. like "osc build ... -p /path/to/local/pkgs" > and it'll directly start the local build). > > How it works: > A client like osc collects the requires and provides of some local packages, > stores these information in a xml file and finally creates a cpio archive > which contains the xml + a spec/dsc file and sends it to the obs. > (Note: I decided to store the data in a xml because I didn't want to introduce > yet another metadata format - this results in less additional code) How about using Build.pm's internal format? > Example xml: > <localdeps> > <package name="foobar" version="3.0.1" release="0" arch="i586"> > <provides>foobar = 3.0.1-0</provides> > <requires>glibc</requires> > <requires>libfoo-devel >= 2.0</requires> > </package> > ... > </localdeps> > [...] @@ -1370,6 +1372,7 @@ if (!$cgi->{'internal'}) { for (@bdeps) { my $p = $dep2rpm{$_}->{'path'}; + next unless $p; push @bdepsp, "$reporoot/$dep2prp{$_}/$arch/:full/$p"; } @bdepsp = getbinarydata(@bdepsp); @@ -1381,6 +1384,7 @@ ($_->{'project'}, $_->{'repository'}) = split('/', $dep2prp{$_->{'name'}} , 2); } my $r = $bdepsp{$_->{'name'}}; + $r = $ldeps->{$_->{'name'}} if (defined($ldeps) && !defined($r)); if ($r) { $_->{'version'} = $r->{'version'}; $_->{'release'} = $r->{'release'} if exists $r->{'release'}; > [...] > + my %localdeps; > + # FIXME: is there a to check for the cpio magic? Of course there is, it must start with "070701". You can use this for autodetection, i.e. no need for the "cpio" switch. Have you already patched osc so that it sends the extra data? Cheers, Micha. -- Michael Schroeder mls@suse.de SUSE LINUX Products GmbH, GF Markus Rex, HRB 16746 AG Nuernberg main(_){while(_=~getchar())putchar(~_-1/(~(_|32)/13*2-11)*13);} -- To unsubscribe, e-mail: opensuse-buildservice+unsubscribe@opensuse.org For additional commands, e-mail: opensuse-buildservice+help@opensuse.org