Не могу использовать ldflags с командой bee pack - PullRequest
1 голос
/ 03 июля 2019

Я пытаюсь скомпилировать beego с параметрами ldflags:

bee pack -v -ba="-ldflags '-s -w'" 

И иди жалуется на это:

go build -o /var/folders/XXX/XXX/T/beePack-4329015000/XXXX -ldflags='-s -w'
invalid value "'-s" for flag -ldflags: missing =<value> in <pattern>=<value>

Я использую последнюю версию Beego с go1.12.6. Похоже, что Beego разделяет командную строку с space и добавил несколько проверок.

Есть идеи?

EDIT

С -ldflags = '- s -w'

GOOS=linux bee pack -v -exr=vendor -ba="-ldflags='-s -w'"

Я получил:

+ go build -o /var/folders/xxx/xxx/T/beePack-2277518000/xxx -ldflags='-s -w'
invalid value "'-s" for flag -ldflags: missing =<value> in <pattern>=<value>

1 Ответ

0 голосов
/ 03 июля 2019

Я проверил исходный код инструмента пчелы. Это должна быть ошибка, и я бы открыл проблему в их репозитории GitHub.

Вот ссылка на соответствующий код . Пожалуйста, посмотрите на комментарии ниже.

    args := []string{"build", "-o", binPath}
    if len(buildArgs) > 0 {
        //Giulio: Here they split the input arguments using whitespace as delimiter.
        //In your case it would become: "-ldflags='-s -w'" => ["-ldflags='-s", "-w'"]
        args = append(args, strings.Fields(buildArgs)...)
    }

    if verbose {
        //Giulio: The print is fine, reconstruct the same string with strings.Join
        fmt.Fprintf(output, "\t%s%s+ go %s%s%s\n", "\x1b[32m", "\x1b[1m", strings.Join(args, " "), "\x1b[21m", "\x1b[0m")
    }
    //Giulio: but, here, they use the slice with splitted flags, i.e. ["-ldflags='-s", "-w'"], which is the real problem.
    execmd := exec.Command("go", args...)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...