ALT Linux Team development discussions
 help / color / mirror / Atom feed
* [devel]  golang policy
@ 2016-01-31 15:33 Denis Pynkin
  2016-02-01  7:36 ` Alexey Gladkov
  2019-12-13  7:21 ` Ildar Mulyukov
  0 siblings, 2 replies; 9+ messages in thread
From: Denis Pynkin @ 2016-01-31 15:33 UTC (permalink / raw)
  To: ALT Linux Team development discussions

Hi, 

А как у нас планируется работать с пакетами, написанными на Go?
Пакетить все зависимости в отдельные src или можно какие-то аналоги для
bundle, как предлагают в Fedora Project?

--
wbr,d4s


^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [devel] golang policy
  2016-01-31 15:33 [devel] golang policy Denis Pynkin
@ 2016-02-01  7:36 ` Alexey Gladkov
  2016-02-01 15:29   ` Denis Pynkin
  2019-12-13  7:21 ` Ildar Mulyukov
  1 sibling, 1 reply; 9+ messages in thread
From: Alexey Gladkov @ 2016-02-01  7:36 UTC (permalink / raw)
  To: ALT Linux Team development discussions

On Sun, Jan 31, 2016 at 06:33:30PM +0300, Denis Pynkin wrote:
> Hi, 
> 
> А как у нас планируется работать с пакетами, написанными на Go?
> Пакетить все зависимости в отдельные src или можно какие-то аналоги для
> bundle, как предлагают в Fedora Project?

Политика в многом схожая с Fedora. Не все пакеты несут зависимости с
собой (например в виде Godeps). Для таких проектов зависимости
пакетируются.

Буквально вчера в сизиф пошёл новый golang и rpm-build-golang, где была
предпринята попытка упорядочить зоопарк golang-пакетов.

Если есть идеи по этому поводу рад буду обсудить ))

-- 
Rgrds, legion



^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [devel] golang policy
  2016-02-01  7:36 ` Alexey Gladkov
@ 2016-02-01 15:29   ` Denis Pynkin
  2016-02-01 15:41     ` Dmitry V. Levin
  2016-02-01 16:27     ` Alexey Gladkov
  0 siblings, 2 replies; 9+ messages in thread
From: Denis Pynkin @ 2016-02-01 15:29 UTC (permalink / raw)
  To: ALT Linux Team development discussions; +Cc: Alexey Gladkov

On Mon, Feb 01, 2016 at 08:36:28AM +0100, Alexey Gladkov wrote:
> > А как у нас планируется работать с пакетами, написанными на Go?
> > Пакетить все зависимости в отдельные src или можно какие-то аналоги для
> > bundle, как предлагают в Fedora Project?
> 
> Политика в многом схожая с Fedora. Не все пакеты несут зависимости с
> собой (например в виде Godeps). Для таких проектов зависимости
> пакетируются.

к своему стыду, не знал про godeps.
Я правильно понимаю, что godeps поможет в создании bundle либо отдельных
пакетиков с зависимостями?

> Буквально вчера в сизиф пошёл новый golang и rpm-build-golang, где была
> предпринята попытка упорядочить зоопарк golang-пакетов.

пока не пришло. ждем-с в репозитории.

> Если есть идеи по этому поводу рад буду обсудить ))

Собственно, мозговой штурм сегодня привел меня к безрадостному заключению,
что bundle зависимостей для каждого пакета go, чуть ли не единственый
выход. У нас же нет жесткого bundling policy?
С т.з. безопасности меня это очень напрягает, откровенно говоря.

Рано или поздно появятся пакеты, которым нужна одна и та же зависимость,
но разных версий (и разным API) :( 
В рамках bundle это решается легко, с распиленными на кусочки 
зависимостями -- уже сложнее.

Дальше, не совсем понятно, как работать с исходниками в случае bundle.
Пока пришел к выводу, что собственно код программы -- калька из апстрима,
а все зависимости в отдельный гит, по сути снапшотом, и отдельным bundle пакетом,
который провайдит только bundle-пакет.

Еще вопрос -- поддерживает ли наш rpm зависимости вида:
BuildRequires: golang(github.com/gorilla/context) ?

ЗЫ буду рад, если окажется что по поводу bundle я заблуждаюсь.

--
wbr,d4s


^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [devel] golang policy
  2016-02-01 15:29   ` Denis Pynkin
@ 2016-02-01 15:41     ` Dmitry V. Levin
  2016-02-01 16:27     ` Alexey Gladkov
  1 sibling, 0 replies; 9+ messages in thread
From: Dmitry V. Levin @ 2016-02-01 15:41 UTC (permalink / raw)
  To: ALT Linux Team development discussions

[-- Attachment #1: Type: text/plain, Size: 577 bytes --]

On Mon, Feb 01, 2016 at 06:29:22PM +0300, Denis Pynkin wrote:
[...]
> Еще вопрос -- поддерживает ли наш rpm зависимости вида:
> BuildRequires: golang(github.com/gorilla/context) ?

$ rpmquery --provides perl-base | grep -E '([^/]*/){2,}'
perl(Config/Perl/V.pm) = 0.240
perl(File/Spec/Functions.pm) = 3.560
perl(File/Spec/Unix.pm) = 3.560
perl(Hash/Util/FieldHash.pm) = 1.150
perl(IO/Socket/INET.pm) = 1.350
perl(IO/Socket/UNIX.pm) = 1.260
perl(List/Util/XS.pm) = 1.410
perl(PerlIO/via/QuotedPrint.pm) = 0.080
perl(Tie/Hash/NamedCapture.pm) = 0.090


-- 
ldv

[-- Attachment #2: Type: application/pgp-signature, Size: 819 bytes --]

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [devel] golang policy
  2016-02-01 15:29   ` Denis Pynkin
  2016-02-01 15:41     ` Dmitry V. Levin
@ 2016-02-01 16:27     ` Alexey Gladkov
  2016-02-16 12:51       ` Denis Pynkin
  1 sibling, 1 reply; 9+ messages in thread
From: Alexey Gladkov @ 2016-02-01 16:27 UTC (permalink / raw)
  To: Denis Pynkin; +Cc: ALT Linux Team development discussions

On Mon, Feb 01, 2016 at 06:29:22PM +0300, Denis Pynkin wrote:
> к своему стыду, не знал про godeps.
> Я правильно понимаю, что godeps поможет в создании bundle либо отдельных
> пакетиков с зависимостями?

Godeps (github.com/tools/godep) способ зафиксировать конкретные ревизии у
зависимостей в go.

Другой способ для разработчика библиотеки на go зафиксировать ревизию это
использовать gopkg.in .

> Собственно, мозговой штурм сегодня привел меня к безрадостному заключению,
> что bundle зависимостей для каждого пакета go, чуть ли не единственый
> выход. У нас же нет жесткого bundling policy?
> С т.з. безопасности меня это очень напрягает, откровенно говоря.
> 
> Рано или поздно появятся пакеты, которым нужна одна и та же зависимость,
> но разных версий (и разным API) :( 

По задумке создателей go библиотеки должны быть всегда обратно совместимы
или же import path должен быть изменён ))

> В рамках bundle это решается легко, с распиленными на кусочки 
> зависимостями -- уже сложнее.

Зато так легче отслеживать где и какой ревизии библиотека используется в
дистрибутиве. Особенно это важно т.к. после сборки нет возможности узнать
из чего была собрана программа на go.

Представьте решение задачи с bundle по устранению уязвимости в
golang.org/x/crypto/ssh. Кто с этим модулем собран и с какой ревизией.

> Дальше, не совсем понятно, как работать с исходниками в случае bundle.
> Пока пришел к выводу, что собственно код программы -- калька из апстрима,
> а все зависимости в отдельный гит, по сути снапшотом, и отдельным bundle пакетом,
> который провайдит только bundle-пакет.

Я пока тоже не имею однозначного мнения на этот счёт. Если и делать
bundle-пакет или bundle-бранч, то через godep, чтобы можно было
автоматизировать проверку этих зависимостей.

> Еще вопрос -- поддерживает ли наш rpm зависимости вида:
> BuildRequires: golang(github.com/gorilla/context) ?

Да. Я рассматривал этот вариант как основной.

-- 
Rgrds, legion



^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [devel] golang policy
  2016-02-01 16:27     ` Alexey Gladkov
@ 2016-02-16 12:51       ` Denis Pynkin
  2016-02-16 13:05         ` Alexey Gladkov
  0 siblings, 1 reply; 9+ messages in thread
From: Denis Pynkin @ 2016-02-16 12:51 UTC (permalink / raw)
  To: Alexey Gladkov; +Cc: ALT Linux Team development discussions, Denis Pynkin

On Mon, Feb 01, 2016 at 05:27:04PM +0100, Alexey Gladkov wrote:

> > Дальше, не совсем понятно, как работать с исходниками в случае bundle.
> > Пока пришел к выводу, что собственно код программы -- калька из апстрима,
> > а все зависимости в отдельный гит, по сути снапшотом, и отдельным bundle пакетом,
> > который провайдит только bundle-пакет.
> 
> Я пока тоже не имею однозначного мнения на этот счёт. Если и делать
> bundle-пакет или bundle-бранч, то через godep, чтобы можно было
> автоматизировать проверку этих зависимостей.
> 
> > Еще вопрос -- поддерживает ли наш rpm зависимости вида:
> > BuildRequires: golang(github.com/gorilla/context) ?
> 
> Да. Я рассматривал этот вариант как основной.

пока пробую резать на пакетики, но что-то я не совсем понимаю, что
у нас с путями для golang

Например, упаковал я, пользуясь примерами, github.com/gorilla/websocket в пакет
golang-github-gorilla-websocket-devel и вижу, что все файлы *.go кладутся по
пути: /usr/share/gocode/src/github.com/gorilla/websocket

а при сборке зависимого от него пакета вижу ошибку:

+ /usr/share/golang/golang-build lxc
exec.go:11:2: cannot find package "github.com/gorilla/websocket" in any of:
  /usr/lib64/golang/src/github.com/gorilla/websocket (from $GOROOT)
  /usr/src/RPM/BUILD/lxd-2.0.0/.build/src/github.com/gorilla/websocket (from $GOPATH)

почему у нас игнорируется /usr/share/gocode?

Кривохак в %build в виде "export GOPATH="%go_path:$BUILDDIR"" работает, но
мне кажется, что это лучше поправить в rpm-build-golang.

Или я где-то что-то недопонимаю?

--
wbr,d4s


^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [devel] golang policy
  2016-02-16 12:51       ` Denis Pynkin
@ 2016-02-16 13:05         ` Alexey Gladkov
  0 siblings, 0 replies; 9+ messages in thread
From: Alexey Gladkov @ 2016-02-16 13:05 UTC (permalink / raw)
  To: Denis Pynkin; +Cc: ALT Linux Team development discussions

On Tue, Feb 16, 2016 at 03:51:55PM +0300, Denis Pynkin wrote:
> пока пробую резать на пакетики, но что-то я не совсем понимаю, что
> у нас с путями для golang
> 
> Например, упаковал я, пользуясь примерами, github.com/gorilla/websocket в пакет
> golang-github-gorilla-websocket-devel и вижу, что все файлы *.go кладутся по
> пути: /usr/share/gocode/src/github.com/gorilla/websocket
> 
> а при сборке зависимого от него пакета вижу ошибку:
> 
> + /usr/share/golang/golang-build lxc
> exec.go:11:2: cannot find package "github.com/gorilla/websocket" in any of:
>   /usr/lib64/golang/src/github.com/gorilla/websocket (from $GOROOT)
>   /usr/src/RPM/BUILD/lxd-2.0.0/.build/src/github.com/gorilla/websocket (from $GOPATH)
> 
> почему у нас игнорируется /usr/share/gocode?
> 
> Кривохак в %build в виде "export GOPATH="%go_path:$BUILDDIR"" работает, но
> мне кажется, что это лучше поправить в rpm-build-golang.
> 
> Или я где-то что-то недопонимаю?

Путь для системных модулей /usr/lib64/golang, для сторонних библиотек
используется /usr/share/gocode, который нужно добавлять GOPATH (как вы и
сделали). Класть src в архитектурно зависимую директорию не имеет.

-- 
Rgrds, legion



^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [devel] golang policy
  2016-01-31 15:33 [devel] golang policy Denis Pynkin
  2016-02-01  7:36 ` Alexey Gladkov
@ 2019-12-13  7:21 ` Ildar Mulyukov
    1 sibling, 1 reply; 9+ messages in thread
From: Ildar Mulyukov @ 2019-12-13  7:21 UTC (permalink / raw)
  To: ALT Linux Team development discussions

On Mon, Feb 1, 2016 at 10:38 AM Denis Pynkin <denis.pynkin@gmail.com> wrote:
> А как у нас планируется работать с пакетами, написанными на Go?
> Пакетить все зависимости в отдельные src или можно какие-то аналоги для
> bundle, как предлагают в Fedora Project?

Коллеги,
какие у нас новости на эту тему? мне кажется, собирать по пакету на
каждую зависимость --- нереальный объём. Тут только роботы, возможно,
справятся.
Какие у нас варианты?
Спасибо. С уважением, Ильдар
-- 
Ildar Mulyukov,
(ΙΧΘΥΣ) child of God

email: ildar.mulyukov@gmail.com
matrix: @ildar:matrix.org
GoogleTalk: ildar.mulyukov@gmail.com
blog: http://johan-notes.blogspot.com/

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [devel] golang policy
  @ 2021-10-12 14:44     ` Anton Farygin
  0 siblings, 0 replies; 9+ messages in thread
From: Anton Farygin @ 2021-10-12 14:44 UTC (permalink / raw)
  To: devel

On 28.12.2019 15:40, Alexey Shabalin wrote:
>
>
> пт, 13 дек. 2019 г., 10:22 Ildar Mulyukov <ildar.mulyukov@gmail.com>:
>
>     On Mon, Feb 1, 2016 at 10:38 AM Denis Pynkin
>     <denis.pynkin@gmail.com> wrote:
>     > А как у нас планируется работать с пакетами, написанными на Go?
>     > Пакетить все зависимости в отдельные src или можно какие-то
>     аналоги для
>     > bundle, как предлагают в Fedora Project?
>
>     Коллеги,
>     какие у нас новости на эту тему? мне кажется, собирать по пакету на
>     каждую зависимость --- нереальный объём. Тут только роботы, возможно,
>     справятся.
>     Какие у нас варианты?
>     Спасибо. С уважением, Ильдар
>
>
> Упаковываем зависимости вместе с пакетом(вендоризируем - складываем в 
> vendor). На каждую зависимость делать отдельный пакет нет смысла.
> Примеры можно посмотреть в пакетах telegraf, traefik(в спеке есть 
> инструкция по подготовке к вендоризации).
> Для вендоризации используеются:
> - dep ensure -vendor-only (для старых проектов)
> - go mod vendor (для проектов, которые перешли на новую схему)

Вообще про policy хороший вопрос.

Понадобилось мне упаковать утилиту, написанную на go.

по примеру из других пакетов vendor я сделал и утилита собирается.

Но в других пакетах есть какие-то странные вещи типа %golang_prepare

В нём делается:

$ rpm --eval %golang_prepare
/usr/share/golang/golang-prepare

Который вообще делает что-то такое:

#!/bin/sh -eu

BUILDDIR="${BUILDDIR?}"
IMPORT_PATH="${IMPORT_PATH?}"

mkdir-vp--"$BUILDDIR/src/$IMPORT_PATH"
cp-alv--* "$BUILDDIR/src/$IMPORT_PATH"

Никакой документации на предмет того, что принято писать в BUILDDIR и 
IMPORT_PATH я не нашёл.




^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2021-10-12 14:44 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-01-31 15:33 [devel] golang policy Denis Pynkin
2016-02-01  7:36 ` Alexey Gladkov
2016-02-01 15:29   ` Denis Pynkin
2016-02-01 15:41     ` Dmitry V. Levin
2016-02-01 16:27     ` Alexey Gladkov
2016-02-16 12:51       ` Denis Pynkin
2016-02-16 13:05         ` Alexey Gladkov
2019-12-13  7:21 ` Ildar Mulyukov
2021-10-12 14:44     ` Anton Farygin

ALT Linux Team development discussions

This inbox may be cloned and mirrored by anyone:

	git clone --mirror http://lore.altlinux.org/devel/0 devel/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 devel devel/ http://lore.altlinux.org/devel \
		devel@altlinux.org devel@altlinux.ru devel@lists.altlinux.org devel@lists.altlinux.ru devel@linux.iplabs.ru mandrake-russian@linuxteam.iplabs.ru sisyphus@linuxteam.iplabs.ru
	public-inbox-index devel

Example config snippet for mirrors.
Newsgroup available over NNTP:
	nntp://lore.altlinux.org/org.altlinux.lists.devel


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git