[arch-projects] [dbscripts] [PATCH 0/5] Be less tightly coupled with SVN

Luke Shumaker lukeshu at lukeshu.com
Fri Jun 22 19:49:19 UTC 2018

On Fri, 22 Jun 2018 12:52:04 -0400,
Eli Schwartz wrote:
> On 06/19/2018 12:20 AM, Luke Shumaker wrote:
> > From: Luke Shumaker <lukeshu at parabola.nu>
> > 
> > This patchset is intended to clean up dbscripts' interaction with SVN.
> > Besides (IMO) improved code clarity, this should make it easier for those
> > who wish to replace SVN with something else.
> > 
> > There are two major themes here:
> >  1. Avoid asking SVN for information; to the extent possible, get all
> >     information directly from the pacman repos.
> Why is this a goal? Especially, because currently dbscripts will error
> out on you if you do something like create a PKGBUILD in a directory
> that doesn't match the pkgbase. This is a feature, because we don't want
> that to happen.

That should not change:
 - db-update will still do the check_pkgsvn and such that check the PKGBUILD
 - db-move, db-remove  will still  move/remove the PKGBUILD,  and will
   error if it isn't where they expect it.

Replacing SVN with something else (whether it be in Parabola, or in
dbscripts-rewrite) involves considering many interactions between
dbscripts and the VCS repo.  That's hard to do (as evidenced by issues
in the Parabola bug tracker, and by "TODO" comments in
dbscripts-rewrite).  By removing pointless interactions, we can come
up with a clean interface between dbscripts and the VCS (and I called
that interface `db-abs`)

> We want the PKGBUILDs repository to match the expected pacman repository
> action, so this information should always be sourced from the PKGBUILD.

And we want the pacman repository to match the PKGBUILDs repository,
so this information should always be sourced from the .db?

> There's a WIP rewrite here:
> https://wiki.archlinux.org/index.php/User:Bluewind/dbscripts-rewrite

Yes, I am aware of Florian's work (I did include the same URL in my
cover letter).

Though I haven't spoken with Florian, one of my big goals with this is
to make is work easier.  I believe that if this patchset is applied,
then the *only*[1] changes he will have to make are contained to the
`db-abs` file, which defines just a handful of functions that provide
a clean VCS-agnostic interface.

> Which has e.g. get_file_from_pkgrepo which cat's the PKGBUILD in a
> VCS-agnostic manner. This is the direction I think we want to take,

That's not entirely different than the direction I took it: I included
an abs_export function, which writes the files for a package (PKGBUILD
and other) to a given directory, in a VCS-agnostic manner.  I just
named it abs_export, rather than get_dir_from_pkgrepo.

>                                                                     and
> IMHO also has a lot more code clarity than a mini awk program reading
> from pacman's technically undocumented database format (makepkg/PKGBUILD
> is quite well documented, I'm not sure we make any guarantees about the
> database format except that libalpm can read it).

For what it's worth, the added AWK program is very similar to the one
already in `sourceballs`.

> >  2. Isolate SVN-interfacing code in to functions; making it clear what
> >     interfaces the PKGBUILD tracking needs to provide.
> The dbscripts-rewrite aims to do this too, but in a very different way.
> I'd like to keep to those semantics in order to reduce the effort it
> takes to merge those changes.

Like I said, one of my goals is to reduce that effort.

Unless I'm looking at the wrong git repo
(<https://github.com/gbsf/dbscripts>), it's already a lot of work; and
several of the interactions haven't been considered.  The check_pkgsvn
and check_splitpkgs consistency checks are simply removed and replaced
with "TODO" comments.  The bit where db-remove looks at SVN to handle
split packages (that I replaced with looking at the .db file) is
similarly replaced with a "TODO" comment.

This patchset is intended to make those tricky bits trivial.

> > This does not touch the test suite, which is still firmly SVN-dependent.

[1]: Ok, I lied; they'll have to edit `db-abs` *and* the test suite.

Happy hacking,
~ Luke Shumaker

More information about the arch-projects mailing list