forked from Plemya-x/ALR
		
	fix: remove duplicates correctly
This commit is contained in:
		@@ -203,8 +203,12 @@ func (b *Builder) BuildPackage(ctx context.Context) ([]string, []string, error)
 | 
			
		||||
	buildDepends = removeDuplicates(buildDepends)
 | 
			
		||||
	optDepends = removeDuplicates(optDepends)
 | 
			
		||||
	depends = removeDuplicates(depends)
 | 
			
		||||
	sources = removeDuplicates(sources)
 | 
			
		||||
	checksums = removeDuplicates(checksums)
 | 
			
		||||
 | 
			
		||||
	if len(sources) != len(checksums) {
 | 
			
		||||
		slog.Error(gotext.Get("The checksums array must be the same length as sources"))
 | 
			
		||||
		os.Exit(1)
 | 
			
		||||
	}
 | 
			
		||||
	sources, checksums = removeDuplicatesSources(sources, checksums)
 | 
			
		||||
 | 
			
		||||
	mergedVars := types.BuildVars{
 | 
			
		||||
		Sources:   sources,
 | 
			
		||||
@@ -544,11 +548,6 @@ func (b *Builder) buildALRDeps(ctx context.Context, depends []string) (builtPath
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (b *Builder) getSources(ctx context.Context, dirs types.Directories, bv *types.BuildVars) error {
 | 
			
		||||
	if len(bv.Sources) != len(bv.Checksums) {
 | 
			
		||||
		slog.Error(gotext.Get("The checksums array must be the same length as sources"))
 | 
			
		||||
		os.Exit(1)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	for i, src := range bv.Sources {
 | 
			
		||||
		opts := dl.Options{
 | 
			
		||||
			Name:        fmt.Sprintf("%s[%d]", bv.Name, i),
 | 
			
		||||
 
 | 
			
		||||
@@ -313,3 +313,24 @@ func removeDuplicates(slice []string) []string {
 | 
			
		||||
 | 
			
		||||
	return result
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func removeDuplicatesSources(sources, checksums []string) ([]string, []string) {
 | 
			
		||||
	seen := map[string]string{}
 | 
			
		||||
	keys := make([]string, 0)
 | 
			
		||||
	for i, s := range sources {
 | 
			
		||||
		if val, ok := seen[s]; !ok || strings.EqualFold(val, "SKIP") {
 | 
			
		||||
			if !ok {
 | 
			
		||||
				keys = append(keys, s)
 | 
			
		||||
			}
 | 
			
		||||
			seen[s] = checksums[i]
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	newSources := make([]string, len(keys))
 | 
			
		||||
	newChecksums := make([]string, len(keys))
 | 
			
		||||
	for i, k := range keys {
 | 
			
		||||
		newSources[i] = k
 | 
			
		||||
		newChecksums[i] = seen[k]
 | 
			
		||||
	}
 | 
			
		||||
	return newSources, newChecksums
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user