tech-pkg archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: Cargo.lock change impacting url2pkg
I completely missed half of what I wrote being in one of the comments in
the issue you linked. Sorry about that!
Here's a patch I wrote to support both versions of the Cargo.lock format
in url2pkg, borrowing from the awk command used by make
print-cargo-depends. I haven't tested it much past the package that was causing
issues here, but it provided the same results as print-cargo-depends in that
case.
--- pkgtools/url2pkg/files/url2pkg.py.orig 2020-10-13 02:49:07.744300947 +0000
+++ pkgtools/url2pkg/files/url2pkg.py
@@ -922,9 +922,30 @@ class Adjuster:
if not self.wrksrc_isfile('Cargo.lock'):
return
- # "checksum cargo-package-name cargo-package-version
- for (name, version) in self.wrksrc_grep('Cargo.lock', r'^"checksum\s(\S+)\s(\S+)'):
- self.build_vars.append(Var('CARGO_CRATE_DEPENDS', '+=', f'{name}-{version}'))
+ # pull name and version from package entries
+ with self.wrksrc_open('Cargo.lock') as f:
+ name = None
+ version = None
+ for line in f:
+ if re.match(r'^\[\[package\]\]', line) != None:
+ # new package, reset name and version to be safe
+ name = None
+ version = None
+ continue
+
+ m = re.match(r'^name\s=\s"(\S+)"', line)
+ if m != None:
+ name = m[1]
+
+ m = re.match(r'^version\s=\s"(\S+)"', line)
+ if m != None:
+ version = m[1]
+
+ if re.match(r'^source\s=\s"(\S+)"', line) != None:
+ self.build_vars.append(Var('CARGO_CRATE_DEPENDS', '+=', f'{name}-{version}'))
+ # reset name and version
+ name = None
+ version = None
self.includes.append('../../lang/rust/cargo.mk')
On Mon, Oct 12, 2020 at 06:12:50PM -0700, snow flurry wrote:
> Looks like the format of Cargo.lock changed from having a single
> [metadata] section with all the checksums to a new format where the
> checksums are included in each package section
> (https://github.com/rust-lang/cargo/pull/7070 has more info). As of
> commit b9dfc09421b9f8cd19f4abbffe63c8bb48744ab6, ncspot started using
> that new format.
>
> Looking at Adjuster.adjust_cargo() in url2pkg, only the old format is
> checked. I'm not sure of a good way to handle the new format cleanly, or
> if others are already aware of the change to the lock file.
>
> In the meantime, I tried running "make print-cargo-depends" and that
> seemed to work fine with the version you have committed. Might be a
> usable workaround for now?
>
> On Mon, Oct 12, 2020 at 12:17:26PM +0000, voidpin wrote:
> > Cargo.lock format change making url2pkg unable to generate CARGO_CRATE_DEPENDS
> > list.
> >
> > See https://github.com/hrkfdn/ncspot/issues/286
> >
> > I've managed to update ncspot by generating the list from a few commits prior
> > to release and adjusting the versions according to upstream Cargo.lock file.
> >
> > Although, going forward would be good to fix the issue.
> > I have no clue how to handle this. Anyone?
> >
> > Sent with ProtonMail Secure Email.
Home |
Main Index |
Thread Index |
Old Index