@@ -248,7 +248,7 @@ func (g *Grapher) GraphFromSrcInfos(ctx context.Context, graph *topo.Graph[strin
248248
249249 aurPkgsAdded := []* aurc.Pkg {}
250250 for pkgBuildDir , pkgbuild := range srcInfos {
251- aurPkgs , err := makeAURPKGFromSrcinfo (g .dbExecutor , pkgbuild )
251+ aurPkgs , err := PackagesFromSrcinfo (g .dbExecutor , pkgbuild )
252252 if err != nil {
253253 return nil , err
254254 }
@@ -836,18 +836,31 @@ func (g *Grapher) provideMenu(dep string, options []aur.Pkg) *aur.Pkg {
836836 }
837837}
838838
839- func makeAURPKGFromSrcinfo (dbExecutor db.Executor , srcInfo * gosrc.Srcinfo ) ([]* aur.Pkg , error ) {
839+ // PackagesFromSrcinfo converts repository metadata into package metadata used
840+ // by dependency resolution and local package information displays.
841+ func PackagesFromSrcinfo (dbExecutor db.Executor , srcInfo * gosrc.Srcinfo ) ([]* aur.Pkg , error ) {
840842 pkgs := make ([]* aur.Pkg , 0 , 1 )
841843
842844 alpmArch , err := dbExecutor .AlpmArchitectures ()
843845 if err != nil {
844- return nil , err
846+ return nil , fmt . Errorf ( "reading architectures for .SRCINFO: %w" , err )
845847 }
846848
847849 alpmArch = append (alpmArch , "" ) // srcinfo assumes no value as ""
848850
849851 getDesc := func (pkg * gosrc.Package ) string { return cmp .Or (pkg .Pkgdesc , srcInfo .Pkgdesc ) }
850852
853+ // srcInfo.Packages holds only the per-package overrides; anything declared
854+ // once at the pkgbase level lives on srcInfo itself. Fall back to it so a
855+ // plain (non-split) PKGBUILD does not report these as empty.
856+ fallback := func (pkg , base []string ) []string {
857+ if len (pkg ) > 0 {
858+ return pkg
859+ }
860+
861+ return base
862+ }
863+
851864 for i := range srcInfo .Packages {
852865 pkg := & srcInfo .Packages [i ]
853866
@@ -858,16 +871,16 @@ func makeAURPKGFromSrcinfo(dbExecutor db.Executor, srcInfo *gosrc.Srcinfo) ([]*a
858871 PackageBase : srcInfo .Pkgbase ,
859872 Version : srcInfo .Version (),
860873 Description : getDesc (pkg ),
861- URL : pkg .URL ,
874+ URL : cmp . Or ( pkg .URL , srcInfo . URL ) ,
862875 Depends : slices .Concat (archStringToString (alpmArch , pkg .Depends ), archStringToString (alpmArch , srcInfo .Depends )),
863876 MakeDepends : archStringToString (alpmArch , srcInfo .MakeDepends ),
864877 CheckDepends : archStringToString (alpmArch , srcInfo .CheckDepends ),
865878 Conflicts : slices .Concat (archStringToString (alpmArch , pkg .Conflicts ), archStringToString (alpmArch , srcInfo .Conflicts )),
866879 Provides : slices .Concat (archStringToString (alpmArch , pkg .Provides ), archStringToString (alpmArch , srcInfo .Provides )),
867880 Replaces : slices .Concat (archStringToString (alpmArch , pkg .Replaces ), archStringToString (alpmArch , srcInfo .Replaces )),
868881 OptDepends : slices .Concat (archStringToString (alpmArch , pkg .OptDepends ), archStringToString (alpmArch , srcInfo .OptDepends )),
869- Groups : pkg .Groups ,
870- License : pkg .License ,
882+ Groups : fallback ( pkg .Groups , srcInfo . Groups ) ,
883+ License : fallback ( pkg .License , srcInfo . License ) ,
871884 Keywords : []string {},
872885 })
873886 }
0 commit comments