From 83b8f3b047ef1d57037708f0cfe0442354aec2c6 Mon Sep 17 00:00:00 2001 From: Maxim Slipenko Date: Wed, 16 Apr 2025 08:33:40 +0300 Subject: [PATCH] fix(i18n): pass LANG vars to _internal --- pkg/build/safe_common.go | 40 +++++++++++++++++++++++++++++++ pkg/build/safe_installer.go | 23 +----------------- pkg/build/safe_script_executor.go | 21 +--------------- 3 files changed, 42 insertions(+), 42 deletions(-) create mode 100644 pkg/build/safe_common.go diff --git a/pkg/build/safe_common.go b/pkg/build/safe_common.go new file mode 100644 index 0000000..7f1ec0b --- /dev/null +++ b/pkg/build/safe_common.go @@ -0,0 +1,40 @@ +// ALR - Any Linux Repository +// Copyright (C) 2025 Евгений Храмов +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program. If not, see . + +package build + +import ( + "os" + "os/exec" + "strings" +) + +func setCommonCmdEnv(cmd *exec.Cmd) { + cmd.Env = []string{ + "HOME=/var/cache/alr", + "LOGNAME=alr", + "USER=alr", + "PATH=/usr/bin:/bin:/usr/local/bin", + } + for _, env := range os.Environ() { + if strings.HasPrefix(env, "LANG=") || + strings.HasPrefix(env, "LANGUAGE=") || + strings.HasPrefix(env, "LC_") || + strings.HasPrefix(env, "ALR_LOG_LEVEL=") { + cmd.Env = append(cmd.Env, env) + } + } +} diff --git a/pkg/build/safe_installer.go b/pkg/build/safe_installer.go index 2d143e4..2305131 100644 --- a/pkg/build/safe_installer.go +++ b/pkg/build/safe_installer.go @@ -90,28 +90,7 @@ func GetSafeInstaller() (InstallerExecutor, func(), error) { return nil, nil, err } cmd := exec.Command(executable, "_internal-installer") - cmd.Env = []string{ - "HOME=/var/cache/alr", - "LOGNAME=alr", - "USER=alr", - "PATH=/usr/bin:/bin:/usr/local/bin", - "ALR_LOG_LEVEL=DEBUG", - } - - /* - uid, gid, err := utils.GetUidGidAlrUser() - if err != nil { - return nil, nil, err - } - - - cmd.SysProcAttr = &syscall.SysProcAttr{ - Credential: &syscall.Credential{ - Uid: uint32(uid), - Gid: uint32(gid), - }, - } - */ + setCommonCmdEnv(cmd) slog.Debug("safe installer setup", "uid", syscall.Getuid(), "gid", syscall.Getgid()) diff --git a/pkg/build/safe_script_executor.go b/pkg/build/safe_script_executor.go index a9b1cb7..49d4281 100644 --- a/pkg/build/safe_script_executor.go +++ b/pkg/build/safe_script_executor.go @@ -226,26 +226,7 @@ func GetSafeScriptExecutor() (ScriptExecutor, func(), error) { } cmd := exec.Command(executable, "_internal-safe-script-executor") - cmd.Env = []string{ - "HOME=/var/cache/alr", - "LOGNAME=alr", - "USER=alr", - "PATH=/usr/bin:/bin:/usr/local/bin", - "ALR_LOG_LEVEL=DEBUG", - } - /* - uid, gid, err := utils.GetUidGidAlrUser() - if err != nil { - return nil, nil, err - } - - cmd.SysProcAttr = &syscall.SysProcAttr{ - Credential: &syscall.Credential{ - Uid: uint32(uid), - Gid: uint32(gid), - }, - } - */ + setCommonCmdEnv(cmd) client := plugin.NewClient(&plugin.ClientConfig{ HandshakeConfig: HandshakeConfig,