10 Commits

Author SHA1 Message Date
9cb0a5e9ad Merge pull request 'chore: update package name in Makefile' (#45) from Maks1mS/ALR:fix/correct-set-version into master
Reviewed-on: #45
2025-03-12 15:18:01 +00:00
1a57ccdb83 chore: update package name in Makefile 2025-03-12 15:11:19 +03:00
615cd83fb7 Merge pull request 'fix: resolve absolute path of ScriptDir' (#44) from Maks1mS/ALR:fix/use-abs-scriptdir-path into master
Reviewed-on: #44
2025-03-11 17:30:49 +00:00
27e2f54653 fix: resolve absolute path of ScriptDir 2025-03-11 20:28:41 +03:00
af57165c89 Небольшие правки и исправления. 2025-03-10 14:50:02 +03:00
3770c82240 Merge pull request 'fix: add db.Init() in bash completion' (#42) from Maks1mS/ALR:fix/add-db-init-in-completion into master
Reviewed-on: #42
2025-03-09 20:59:05 +00:00
2dff463303 i18n: update ru translation 2025-03-09 17:32:19 +03:00
9085e38454 fix: add db.Init() in bash completion 2025-03-09 17:30:02 +03:00
a7d016abc9 Замена устаревшего метода установки в шаблоне alr gen pip 2025-03-02 13:50:11 +03:00
4a5cca2d0f Замена устаревшего метода установки в шаблоне alr gen pip 2025-03-02 13:34:22 +03:00
10 changed files with 87 additions and 74 deletions

View File

@@ -21,7 +21,7 @@ build: check-no-root $(BIN)
export CGO_ENABLED := 0
$(BIN):
go build -ldflags="-X 'gitea.plemya-x.ru/xpamych/ALR/internal/config.Version=$(GIT_VERSION)'" -o $@
go build -ldflags="-X 'gitea.plemya-x.ru/Plemya-x/ALR/internal/config.Version=$(GIT_VERSION)'" -o $@
check-no-root:
@if [[ "$$(whoami)" == 'root' ]]; then \

View File

@@ -7,9 +7,9 @@
# ALR (Any Linux Repository)
ALR - это независимая от дистрибутива система сборки для Linux, аналогичная [AUR](https://wiki.archlinux.org/title/Arch_User_Repository). В настоящее время она находится в стадии бета-тестирования. Исправлено большинство основных ошибок и добавлено большинство важных функций. alr готов к общему использованию, но все еще может время от времени ломаться или заменяться.
ALR - это независимая от дистрибутива система сборки для Linux (форк [LURE](https://github.com/lure-sh/lure), аналогичная [AUR](https://wiki.archlinux.org/title/Arch_User_Repository). В настоящее время она находится в стадии бета-тестирования. Исправлено большинство основных ошибок и добавлено большинство важных функций. ALR готов к общему использованию, но все еще может время от времени ломаться или изменяться.
ALR написан на чистом Go и после сборки не имеет зависимостей. Единственное, для повышения привилегий ALR требуется команда, такая как `sudo`, `doas` и т.д., а также поддерживаемый менеджер пакетов. В настоящее время ALR поддерживает `apt`, `pacman`, `apk`, `dnf`, `yum`, and `zypper`. Если в вашей системе существует поддерживаемый менеджер пакетов, он будет обнаружен и использован автоматически.
ALR написан на чистом Go и после сборки не имеет зависимостей. Для повышения привилегий ALR требуется команда, такая как `sudo`, `doas` и т.д., а также поддерживаемый менеджер пакетов. В настоящее время ALR поддерживает `apt`, `apt-get` `pacman`, `apk`, `dnf`, `yum`, and `zypper`. Если в вашей системе используется поддерживаемый менеджер пакетов, то он будет обнаружен и использован автоматически.
---
@@ -23,14 +23,14 @@ ALR написан на чистом Go и после сборки не имее
curl -fsSL plemya-x.ru/alr/install.sh | bash
```
**ВАЖНО**: При этом скрипт будет загружен и запущен с <https://gitea.plemya-x.ru/Plemya-x/ALR/src/branch/master/scripts/install.sh>. Пожалуйста, просматривайте любые скрипты, которые вы скачиваете из Интернета (включая этот), прежде чем запускать их.
**ВАЖНО**: При этом скрипт будет загружен и запущен с <https://plemya-x.ru/alr/install.sh>. Пожалуйста, просматривайте любые скрипты, которые вы скачиваете из Интернета (включая этот), прежде чем запускать их.
### Сборка из исходного кода
Чтобы собрать ALR из исходного кода, вам понадобится версия Go 1.18 или новее. Как только Go будет установлен, клонируйте это репозиторий и запустите:
```shell
make build
make build -B
sudo make install
```
@@ -44,7 +44,7 @@ ALR был создан потому, что упаковка программн
## Документация
Документация по всем этим вопросам находится в [Wiki](https://gitea.plemya-x.ru/xpamych/ALR/wiki/Home).
Документация находится в [Wiki](https://disc.plemya-x.ru/c/alr/wiki-alr).
---
@@ -52,17 +52,15 @@ ALR был создан потому, что упаковка программн
Репозитории alr - это git-хранилища, которые содержат каталог для каждого пакета с файлом `alr.sh` внутри. Файл `alr.sh` содержит все инструкции по сборке пакета и информацию о нем. Скрипты `alr.sh` аналогичны скриптам Aur PKGBUILD.
Например, репозиторий [Plemya-x/xpamych-alr-repo](https://gitea.plemya-x.ru/Plemya-x/xpamych-alr-repo.git) можно подключить так:
Например, репозиторий [Plemya-x/alr-repo](https://gitea.plemya-x.ru/Plemya-x/alr-repo.git) можно подключить так:
```
alr addrepo --name xpamych-alr-repo --url https://gitea.plemya-x.ru/Plemya-x/xpamych-alr-repo.git
alr addrepo --name alr-repo --url https://gitea.plemya-x.ru/Plemya-x/alr-repo.git
```
---
## Соцсети
VK - https://vk.com/plemya_kh
Discord - https://discord.com/channels/817759634105827358/1261631565084233749
Telegram - https://t.me/plemyakh
## Спасибы
@@ -75,3 +73,6 @@ Telegram - https://t.me/plemyakh
- <https://github.com/goreleaser/nfpm>
- <https://github.com/charmbracelet/bubbletea>
- <https://gitlab.com/cznic/sqlite>
Благодарим за активное участие в развитии проекта:
- Maks1mS <maxim@slipenko.com>

View File

@@ -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.6%</text>
<text x="86" y="14">19.6%</text>
<text x="86" y="15" fill="#010101" fill-opacity=".3">19.5%</text>
<text x="86" y="14">19.5%</text>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 926 B

After

Width:  |  Height:  |  Size: 926 B

View File

@@ -50,9 +50,9 @@ func BuildCmd() *cli.Command {
Usage: gotext.Get("Path to the build script"),
},
&cli.StringFlag{
Name: "script-package",
Aliases: []string{"sp"},
Usage: gotext.Get("Specify package in script (for multi package script only)"),
Name: "subpackage",
Aliases: []string{"sb"},
Usage: gotext.Get("Specify subpackage in script (for multi package script only)"),
},
&cli.StringFlag{
Name: "package",

View File

@@ -119,6 +119,11 @@ func InstallCmd() *cli.Command {
BashComplete: func(c *cli.Context) {
cfg := config.New()
db := database.New(cfg)
err := db.Init(c.Context)
if err != nil {
slog.Error(gotext.Get("Error initialization database"), "err", err)
os.Exit(1)
}
result, err := db.GetPkgs(c.Context, "true")
if err != nil {
slog.Error(gotext.Get("Error getting packages"), "err", err)

View File

@@ -91,7 +91,7 @@ func TestDownloadWithoutCache(t *testing.T) {
},
{
name: "git download",
path: "git+%s/git-downloader/git/Plemya-x/xpamych-alr-repo",
path: "git+%s/git-downloader/git/Plemya-x/alr-repo",
expected: func(t *testing.T, err error, tmpdir string) {
assert.NoError(t, err)

View File

@@ -18,7 +18,7 @@ msgid "Path to the build script"
msgstr ""
#: build.go:55
msgid "Specify package in script (for multi package script only)"
msgid "Specify subpackage in script (for multi package script only)"
msgstr ""
#: build.go:60
@@ -158,15 +158,15 @@ msgstr ""
msgid "Command install expected at least 1 argument, got %d"
msgstr ""
#: install.go:146
#: install.go:151
msgid "Remove an installed package"
msgstr ""
#: install.go:151
#: install.go:156
msgid "Command remove expected at least 1 argument, got %d"
msgstr ""
#: install.go:163
#: install.go:168
msgid "Error removing packages"
msgstr ""
@@ -357,77 +357,77 @@ msgstr ""
msgid "Error while running app"
msgstr ""
#: pkg/build/build.go:153
#: pkg/build/build.go:156
msgid "Failed to prompt user to view build script"
msgstr ""
#: pkg/build/build.go:157
#: pkg/build/build.go:160
msgid "Building package"
msgstr ""
#: pkg/build/build.go:228
#: pkg/build/build.go:231
msgid "Downloading sources"
msgstr ""
#: pkg/build/build.go:250
#: pkg/build/build.go:253
msgid "Building package metadata"
msgstr ""
#: pkg/build/build.go:272
#: pkg/build/build.go:275
msgid "Compressing package"
msgstr ""
#: pkg/build/build.go:426
#: pkg/build/build.go:434
msgid ""
"Your system's CPU architecture doesn't match this package. Do you want to "
"build anyway?"
msgstr ""
#: pkg/build/build.go:440
#: pkg/build/build.go:448
msgid "This package is already installed"
msgstr ""
#: pkg/build/build.go:464
#: pkg/build/build.go:472
msgid "Installing build dependencies"
msgstr ""
#: pkg/build/build.go:505
#: pkg/build/build.go:513
msgid "Installing dependencies"
msgstr ""
#: pkg/build/build.go:540
#: pkg/build/build.go:548
msgid "The checksums array must be the same length as sources"
msgstr ""
#: pkg/build/build.go:591
#: pkg/build/build.go:599
msgid "Would you like to remove the build dependencies?"
msgstr ""
#: pkg/build/build.go:654
#: pkg/build/build.go:662
msgid "Executing prepare()"
msgstr ""
#: pkg/build/build.go:664
#: pkg/build/build.go:672
msgid "Executing build()"
msgstr ""
#: pkg/build/build.go:694 pkg/build/build.go:714
#: pkg/build/build.go:702 pkg/build/build.go:722
msgid "Executing %s()"
msgstr ""
#: pkg/build/build.go:773
#: pkg/build/build.go:781
msgid "Error installing native packages"
msgstr ""
#: pkg/build/build.go:797
#: pkg/build/build.go:805
msgid "Error installing package"
msgstr ""
#: pkg/build/build.go:857
#: pkg/build/build.go:864
msgid "AutoProv is not implemented for this package format, so it's skipped"
msgstr ""
#: pkg/build/build.go:868
#: pkg/build/build.go:875
msgid "AutoReq is not implemented for this package format, so it's skipped"
msgstr ""

View File

@@ -5,15 +5,15 @@
msgid ""
msgstr ""
"Project-Id-Version: unnamed project\n"
"PO-Revision-Date: 2025-02-27 14:27+0300\n"
"PO-Revision-Date: 2025-03-09 17:31+0300\n"
"Last-Translator: Maxim Slipenko <maks1ms@alt-gnome.ru>\n"
"Language-Team: Russian\n"
"Language: ru\n"
"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
@@ -25,8 +25,8 @@ msgid "Path to the build script"
msgstr "Путь к скрипту сборки"
#: build.go:55
msgid "Specify package in script (for multi package script only)"
msgstr "Укажите пакет в скрипте (только для многопакетного скрипта)"
msgid "Specify subpackage in script (for multi package script only)"
msgstr "Укажите подпакет в скрипте (только для многопакетного скрипта)"
#: build.go:60
msgid "Name of the package to build and its repo (example: default/go-bin)"
@@ -165,15 +165,15 @@ msgstr "Установить новый пакет"
msgid "Command install expected at least 1 argument, got %d"
msgstr "Для команды install ожидался хотя бы 1 аргумент, получено %d"
#: install.go:146
#: install.go:151
msgid "Remove an installed package"
msgstr "Удалить установленный пакет"
#: install.go:151
#: install.go:156
msgid "Command remove expected at least 1 argument, got %d"
msgstr "Для команды remove ожидался хотя бы 1 аргумент, получено %d"
#: install.go:163
#: install.go:168
msgid "Error removing packages"
msgstr "Ошибка при удалении пакетов"
@@ -371,27 +371,27 @@ msgstr "Показать справку"
msgid "Error while running app"
msgstr "Ошибка при запуске приложения"
#: pkg/build/build.go:153
#: pkg/build/build.go:156
msgid "Failed to prompt user to view build script"
msgstr "Не удалось предложить пользователю просмотреть скрипт сборки"
#: pkg/build/build.go:157
#: pkg/build/build.go:160
msgid "Building package"
msgstr "Сборка пакета"
#: pkg/build/build.go:228
#: pkg/build/build.go:231
msgid "Downloading sources"
msgstr "Скачивание источников"
#: pkg/build/build.go:250
#: pkg/build/build.go:253
msgid "Building package metadata"
msgstr "Сборка метаданных пакета"
#: pkg/build/build.go:272
#: pkg/build/build.go:275
msgid "Compressing package"
msgstr "Сжатие пакета"
#: pkg/build/build.go:426
#: pkg/build/build.go:434
msgid ""
"Your system's CPU architecture doesn't match this package. Do you want to "
"build anyway?"
@@ -399,52 +399,52 @@ msgstr ""
"Архитектура процессора вашей системы не соответствует этому пакету. Вы все "
"равно хотите выполнить сборку?"
#: pkg/build/build.go:440
#: pkg/build/build.go:448
msgid "This package is already installed"
msgstr "Этот пакет уже установлен"
#: pkg/build/build.go:464
#: pkg/build/build.go:472
msgid "Installing build dependencies"
msgstr "Установка зависимостей сборки"
#: pkg/build/build.go:505
#: pkg/build/build.go:513
msgid "Installing dependencies"
msgstr "Установка зависимостей"
#: pkg/build/build.go:540
#: pkg/build/build.go:548
msgid "The checksums array must be the same length as sources"
msgstr "Массив контрольных сумм должен быть той же длины, что и источники"
#: pkg/build/build.go:591
#: pkg/build/build.go:599
msgid "Would you like to remove the build dependencies?"
msgstr "Хотели бы вы удалить зависимости сборки?"
#: pkg/build/build.go:654
#: pkg/build/build.go:662
msgid "Executing prepare()"
msgstr "Исполнение prepare()"
#: pkg/build/build.go:664
#: pkg/build/build.go:672
msgid "Executing build()"
msgstr "Исполнение build()"
#: pkg/build/build.go:694 pkg/build/build.go:714
#: pkg/build/build.go:702 pkg/build/build.go:722
msgid "Executing %s()"
msgstr "Исполнение %s()"
#: pkg/build/build.go:773
#: pkg/build/build.go:781
msgid "Error installing native packages"
msgstr "Ошибка при установке нативных пакетов"
#: pkg/build/build.go:797
#: pkg/build/build.go:805
msgid "Error installing package"
msgstr "Ошибка при установке пакета"
#: pkg/build/build.go:857
#: pkg/build/build.go:864
msgid "AutoProv is not implemented for this package format, so it's skipped"
msgstr ""
"AutoProv не реализовано для этого формата пакета, поэтому будет пропущено"
#: pkg/build/build.go:868
#: pkg/build/build.go:875
msgid "AutoReq is not implemented for this package format, so it's skipped"
msgstr ""
"AutoReq не реализовано для этого формата пакета, поэтому будет пропущено"

View File

@@ -111,7 +111,10 @@ func (b *Builder) BuildPackage(ctx context.Context) ([]string, []string, error)
return nil, nil, err
}
dirs := b.getDirs(basePkg)
dirs, err := b.getDirs(basePkg)
if err != nil {
return nil, nil, err
}
builtPaths := make([]string, 0)
@@ -379,14 +382,19 @@ func (b *Builder) executeFirstPass(
}
// Функция getDirs возвращает соответствующие директории для скрипта
func (b *Builder) getDirs(basePkg string) types.Directories {
func (b *Builder) getDirs(basePkg string) (types.Directories, error) {
scriptPath, err := filepath.Abs(b.opts.Script)
if err != nil {
return types.Directories{}, err
}
baseDir := filepath.Join(b.config.GetPaths(b.ctx).PkgsDir, basePkg) // Определяем базовую директорию
return types.Directories{
BaseDir: baseDir,
SrcDir: filepath.Join(baseDir, "src"),
PkgDir: filepath.Join(baseDir, "pkg"),
ScriptDir: filepath.Dir(b.opts.Script),
}
ScriptDir: filepath.Dir(scriptPath),
}, nil
}
// Функция executeSecondPass выполняет скрипт сборки второй раз без каких-либо ограничений. Возвращается декодер,
@@ -844,7 +852,6 @@ func (b *Builder) buildPkgMetadata(
if err != nil {
return nil, err
}
slog.Info("contents", "contents", contents)
pkgInfo.Overridables.Contents = contents
if len(vars.AutoProv) == 1 && decoder.IsTruthy(vars.AutoProv[0]) {

View File

@@ -32,19 +32,19 @@ deps=("python3")
deps_arch=("python")
deps_alpine=("python3")
build_deps=("python3" "python3-setuptools")
build_deps_arch=("python" "python-setuptools")
build_deps_alpine=("python3" "py3-setuptools")
build_deps=("python3" "python3-pip")
build_deps_arch=("python" "python-pip")
build_deps_alpine=("python3" "py3-pip")
sources=("https://files.pythonhosted.org/packages/source/{{.SourceURL.Filename | firstchar}}/{{.Info.Name}}/{{.SourceURL.Filename}}")
checksums=('blake2b-256:{{.SourceURL.Digests.blake2b_256}}')
build() {
cd "$srcdir/{{.Info.Name}}-${version}"
python3 setup.py build
python3 -m build
}
package() {
cd "$srcdir/{{.Info.Name}}-${version}"
python3 setup.py install --root="${pkgdir}/" --optimize=1 || return 1
pip install --root="${pkgdir}/" . --no-deps --disable-pip-version-check
}