forked from Plemya-x/ALR
		
	fix: remove duplicates correctly
This commit is contained in:
		| @@ -11,7 +11,7 @@ | ||||
|     <g fill="#fff" text-anchor="middle" font-family="DejaVu Sans,Verdana,Geneva,sans-serif" font-size="11"> | ||||
|         <text x="33.5" y="15" fill="#010101" fill-opacity=".3">coverage</text> | ||||
|         <text x="33.5" y="14">coverage</text> | ||||
|         <text x="86" y="15" fill="#010101" fill-opacity=".3">19.5%</text> | ||||
|         <text x="86" y="14">19.5%</text> | ||||
|         <text x="86" y="15" fill="#010101" fill-opacity=".3">19.4%</text> | ||||
|         <text x="86" y="14">19.4%</text> | ||||
|     </g> | ||||
| </svg> | ||||
|   | ||||
| Before Width: | Height: | Size: 926 B After Width: | Height: | Size: 926 B | 
| @@ -365,69 +365,69 @@ msgstr "" | ||||
| msgid "Building package" | ||||
| msgstr "" | ||||
|  | ||||
| #: pkg/build/build.go:231 | ||||
| #: pkg/build/build.go:208 | ||||
| msgid "The checksums array must be the same length as sources" | ||||
| msgstr "" | ||||
|  | ||||
| #: pkg/build/build.go:235 | ||||
| msgid "Downloading sources" | ||||
| msgstr "" | ||||
|  | ||||
| #: pkg/build/build.go:253 | ||||
| #: pkg/build/build.go:257 | ||||
| msgid "Building package metadata" | ||||
| msgstr "" | ||||
|  | ||||
| #: pkg/build/build.go:275 | ||||
| #: pkg/build/build.go:279 | ||||
| msgid "Compressing package" | ||||
| msgstr "" | ||||
|  | ||||
| #: pkg/build/build.go:434 | ||||
| #: pkg/build/build.go:438 | ||||
| msgid "" | ||||
| "Your system's CPU architecture doesn't match this package. Do you want to " | ||||
| "build anyway?" | ||||
| msgstr "" | ||||
|  | ||||
| #: pkg/build/build.go:448 | ||||
| #: pkg/build/build.go:452 | ||||
| msgid "This package is already installed" | ||||
| msgstr "" | ||||
|  | ||||
| #: pkg/build/build.go:472 | ||||
| #: pkg/build/build.go:476 | ||||
| msgid "Installing build dependencies" | ||||
| msgstr "" | ||||
|  | ||||
| #: pkg/build/build.go:513 | ||||
| #: pkg/build/build.go:517 | ||||
| msgid "Installing dependencies" | ||||
| msgstr "" | ||||
|  | ||||
| #: pkg/build/build.go:548 | ||||
| msgid "The checksums array must be the same length as sources" | ||||
| msgstr "" | ||||
|  | ||||
| #: pkg/build/build.go:599 | ||||
| #: pkg/build/build.go:598 | ||||
| msgid "Would you like to remove the build dependencies?" | ||||
| msgstr "" | ||||
|  | ||||
| #: pkg/build/build.go:662 | ||||
| #: pkg/build/build.go:661 | ||||
| msgid "Executing prepare()" | ||||
| msgstr "" | ||||
|  | ||||
| #: pkg/build/build.go:672 | ||||
| #: pkg/build/build.go:671 | ||||
| msgid "Executing build()" | ||||
| msgstr "" | ||||
|  | ||||
| #: pkg/build/build.go:702 pkg/build/build.go:722 | ||||
| #: pkg/build/build.go:701 pkg/build/build.go:721 | ||||
| msgid "Executing %s()" | ||||
| msgstr "" | ||||
|  | ||||
| #: pkg/build/build.go:781 | ||||
| #: pkg/build/build.go:780 | ||||
| msgid "Error installing native packages" | ||||
| msgstr "" | ||||
|  | ||||
| #: pkg/build/build.go:805 | ||||
| #: pkg/build/build.go:804 | ||||
| msgid "Error installing package" | ||||
| msgstr "" | ||||
|  | ||||
| #: pkg/build/build.go:864 | ||||
| #: pkg/build/build.go:863 | ||||
| msgid "AutoProv is not implemented for this package format, so it's skipped" | ||||
| msgstr "" | ||||
|  | ||||
| #: pkg/build/build.go:875 | ||||
| #: pkg/build/build.go:874 | ||||
| msgid "AutoReq is not implemented for this package format, so it's skipped" | ||||
| msgstr "" | ||||
|  | ||||
|   | ||||
| @@ -12,8 +12,8 @@ msgstr "" | ||||
| "MIME-Version: 1.0\n" | ||||
| "Content-Type: text/plain; charset=UTF-8\n" | ||||
| "Content-Transfer-Encoding: 8bit\n" | ||||
| "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && " | ||||
| "n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" | ||||
| "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" | ||||
| "%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" | ||||
| "X-Generator: Gtranslator 47.1\n" | ||||
|  | ||||
| #: build.go:44 | ||||
| @@ -379,19 +379,23 @@ msgstr "Не удалось предложить пользователю про | ||||
| msgid "Building package" | ||||
| msgstr "Сборка пакета" | ||||
|  | ||||
| #: pkg/build/build.go:231 | ||||
| #: pkg/build/build.go:208 | ||||
| msgid "The checksums array must be the same length as sources" | ||||
| msgstr "Массив контрольных сумм должен быть той же длины, что и источники" | ||||
|  | ||||
| #: pkg/build/build.go:235 | ||||
| msgid "Downloading sources" | ||||
| msgstr "Скачивание источников" | ||||
|  | ||||
| #: pkg/build/build.go:253 | ||||
| #: pkg/build/build.go:257 | ||||
| msgid "Building package metadata" | ||||
| msgstr "Сборка метаданных пакета" | ||||
|  | ||||
| #: pkg/build/build.go:275 | ||||
| #: pkg/build/build.go:279 | ||||
| msgid "Compressing package" | ||||
| msgstr "Сжатие пакета" | ||||
|  | ||||
| #: pkg/build/build.go:434 | ||||
| #: pkg/build/build.go:438 | ||||
| msgid "" | ||||
| "Your system's CPU architecture doesn't match this package. Do you want to " | ||||
| "build anyway?" | ||||
| @@ -399,52 +403,48 @@ msgstr "" | ||||
| "Архитектура процессора вашей системы не соответствует этому пакету. Вы все " | ||||
| "равно хотите выполнить сборку?" | ||||
|  | ||||
| #: pkg/build/build.go:448 | ||||
| #: pkg/build/build.go:452 | ||||
| msgid "This package is already installed" | ||||
| msgstr "Этот пакет уже установлен" | ||||
|  | ||||
| #: pkg/build/build.go:472 | ||||
| #: pkg/build/build.go:476 | ||||
| msgid "Installing build dependencies" | ||||
| msgstr "Установка зависимостей сборки" | ||||
|  | ||||
| #: pkg/build/build.go:513 | ||||
| #: pkg/build/build.go:517 | ||||
| msgid "Installing dependencies" | ||||
| msgstr "Установка зависимостей" | ||||
|  | ||||
| #: pkg/build/build.go:548 | ||||
| msgid "The checksums array must be the same length as sources" | ||||
| msgstr "Массив контрольных сумм должен быть той же длины, что и источники" | ||||
|  | ||||
| #: pkg/build/build.go:599 | ||||
| #: pkg/build/build.go:598 | ||||
| msgid "Would you like to remove the build dependencies?" | ||||
| msgstr "Хотели бы вы удалить зависимости сборки?" | ||||
|  | ||||
| #: pkg/build/build.go:662 | ||||
| #: pkg/build/build.go:661 | ||||
| msgid "Executing prepare()" | ||||
| msgstr "Исполнение prepare()" | ||||
|  | ||||
| #: pkg/build/build.go:672 | ||||
| #: pkg/build/build.go:671 | ||||
| msgid "Executing build()" | ||||
| msgstr "Исполнение build()" | ||||
|  | ||||
| #: pkg/build/build.go:702 pkg/build/build.go:722 | ||||
| #: pkg/build/build.go:701 pkg/build/build.go:721 | ||||
| msgid "Executing %s()" | ||||
| msgstr "Исполнение %s()" | ||||
|  | ||||
| #: pkg/build/build.go:781 | ||||
| #: pkg/build/build.go:780 | ||||
| msgid "Error installing native packages" | ||||
| msgstr "Ошибка при установке нативных пакетов" | ||||
|  | ||||
| #: pkg/build/build.go:805 | ||||
| #: pkg/build/build.go:804 | ||||
| msgid "Error installing package" | ||||
| msgstr "Ошибка при установке пакета" | ||||
|  | ||||
| #: pkg/build/build.go:864 | ||||
| #: pkg/build/build.go:863 | ||||
| msgid "AutoProv is not implemented for this package format, so it's skipped" | ||||
| msgstr "" | ||||
| "AutoProv не реализовано для этого формата пакета, поэтому будет пропущено" | ||||
|  | ||||
| #: pkg/build/build.go:875 | ||||
| #: pkg/build/build.go:874 | ||||
| msgid "AutoReq is not implemented for this package format, so it's skipped" | ||||
| msgstr "" | ||||
| "AutoReq не реализовано для этого формата пакета, поэтому будет пропущено" | ||||
|   | ||||
| @@ -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