Bug 27654 - Собрать Go
Summary: Собрать Go
Status: CLOSED FIXED
Alias: None
Product: Sisyphus
Classification: Development
Component: gcc4.7-go (show other bugs)
Version: unstable
Hardware: all Linux
: P3 enhancement
Assignee: Sergey Bolshakov
QA Contact: qa-sisyphus
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2012-08-21 01:58 MSK by Alexey Gladkov
Modified: 2012-09-30 20:31 MSK (History)
4 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Alexey Gladkov 2012-08-21 01:58:16 MSK
Не могли бы вы собрать Go ?
Comment 1 Sergey Bolshakov 2012-08-21 02:47:52 MSK
зачем бы ?
Comment 2 Alexey Gladkov 2012-08-21 03:07:47 MSK
Он достаточно давно существует и некоторые люди начали его использовать. И мне либо самостоятельно заморачиваться сборкой: https://code.google.com/p/go/, либо gccgo. Если его сборка слишком геморная в gcc, то я буду пробовать собрать их. Хотя в fedora его в gcc собирают.
Comment 3 Sergey Bolshakov 2012-08-21 23:27:12 MSK
в #78023 собран. нельзя ли проверить ?
Comment 4 Alexey Gladkov 2012-08-22 00:10:06 MSK
$ cat z.go 

package main

func main() {
	print("Hello!\n");
}

$ gccgo z.go 
/usr/bin/ld: cannot find -lgobegin
collect2: ld returned 1 exit status

Не работает.

Нашёл на http://golang.org/doc/install/gccgo, что нужна поддержка в binutils.
Comment 5 Alexey Gladkov 2012-08-22 00:37:13 MSK
Забыл сказать, что объектник нормально компилится, спасибо:

$ gccgo -c z.go && echo OK
OK

$ file z.o 
z.o: ELF 64-bit LSB relocatable, x86-64, version 1 (SYSV), not stripped
Comment 6 Sergey Bolshakov 2012-08-22 01:30:34 MSK
в таком виде нужен libgo4.6-devel-statiс
иначе gccgo -shared ...
Comment 7 Sergey Bolshakov 2012-08-22 01:32:11 MSK
gold у нас есть, в виде ld.gold, на него можно переключиться альтернативой
Comment 8 Sergey Bolshakov 2012-08-22 01:33:12 MSK
собственно, хорошо бы понять, выкладывать это в сизиф или лучше не стоит :]
Comment 9 Alexey Gladkov 2012-08-22 01:51:40 MSK
(В ответ на комментарий №8)
> собственно, хорошо бы понять, выкладывать это в сизиф или лучше не стоит :]

Чего-то пока не работает:

$ readlink -ev /usr/bin/ld
/usr/bin/ld.gold

$ gccgo z.go 
/usr/bin/ld: error: cannot find -lgobegin
../sysdeps/x86_64/elf/start.S:109: error: undefined reference to 'main'
collect2: ld returned 1 exit status

При этом я уверен, что программа должна работать т.к. вот их статически  собранная версия:

$ ./go run /tmp/z.go 
Hello!
Comment 10 Sergey Bolshakov 2012-08-22 02:46:21 MSK
после установки devel-static у меня работает, безо всякого gold
Comment 11 Alexey Gladkov 2012-08-22 14:04:33 MSK
(В ответ на комментарий №10)
> после установки devel-static у меня работает, безо всякого gold

Так работает. Осталось понять почему не работает только с libgo4.6-devel. Если так и должно быть, то наверно стоит перенести эти *.a в devel пакет... иначе как-то странно, что нормально собирается только с static.
Comment 12 Sergey Bolshakov 2012-08-22 14:25:39 MSK
существование glibc-devel-static тебя не удивляет ?
Comment 13 Alexey Gladkov 2012-08-22 14:54:21 MSK
(В ответ на комментарий №12)
> существование glibc-devel-static тебя не удивляет ?

Не удивляет. Меня бы удивила необходимость этого пакета для сборки абсолютно всех пакетов (статических и нет). Тогда возникает вопрос, зачем нужен -devel, если его всё равно не достаточно.
Comment 14 Dmitry V. Levin 2012-08-22 14:56:41 MSK
(In reply to comment #3)
> в #78023 собран. нельзя ли проверить ?

Пакет libgo4.6 надо переименовать в libgo0, по аналогии с libgcc1, libgcj_bc1, libgfortran3, libgomp1, libmudflap0, libobjc3, libquadmath0, libstdc++6.
Comment 15 Dmitry V. Levin 2012-08-22 15:05:30 MSK
(In reply to comment #10)
> после установки devel-static у меня работает, безо всякого gold

По аналогии с fortran, где
$ rpmquery -lp gcc4.6-fortran-4.6.3-alt4.x86_64.rpm |grep '\.a$'
/usr/lib64/gcc/x86_64-alt-linux/4.6.3/libgfortranbegin.a
$ rpmquery -lp libgfortran4.6-devel-static-4.6.3-alt4.x86_64.rpm |grep '\.a$'
/usr/lib64/gcc/x86_64-alt-linux/4.6.3/libgfortran.a

в случае с go, скорее всего, лучше применить такую же раскладку:
libgobegin.a переложить в gcc4.6-go, а libgo.a оставить в -devel-static.
Comment 16 Alexey Gladkov 2012-08-22 15:37:00 MSK
(В ответ на комментарий №15)
> По аналогии с fortran, где
> $ rpmquery -lp gcc4.6-fortran-4.6.3-alt4.x86_64.rpm |grep '\.a$'
> /usr/lib64/gcc/x86_64-alt-linux/4.6.3/libgfortranbegin.a
> $ rpmquery -lp libgfortran4.6-devel-static-4.6.3-alt4.x86_64.rpm |grep '\.a$'
> /usr/lib64/gcc/x86_64-alt-linux/4.6.3/libgfortran.a
> 
> в случае с go, скорее всего, лучше применить такую же раскладку:
> libgobegin.a переложить в gcc4.6-go, а libgo.a оставить в -devel-static.

Было бы здорово.
Comment 17 Repository Robot 2012-08-22 23:58:00 MSK
gcc4.6-4.6.3-alt5 -> sisyphus:

* Mon Aug 20 2012 Sergey Bolshakov <sbolshakov@altlinux> 4.6.3-alt5
- Go language support packaged (closes: #27654)
Comment 18 Dmitry V. Levin 2012-08-27 04:35:53 MSK
* Mon Aug 27 2012 Dmitry V. Levin <ldv@altlinux> 4.6.3-alt7
- Backported upstream changes to fix build with glibc-2.16.
- Disabled go backend for a while because it doesn't build
  with glibc-2.16.
Comment 19 Alexey Gladkov 2012-09-12 15:55:14 MSK
А можно всё-таки его вернуть ?
Comment 20 Sergey Bolshakov 2012-09-12 16:03:31 MSK
в 4.6 врядли, в 4.7 попытаемся (скоро :)
Comment 21 Vladimir Lettiev 2012-09-12 22:22:40 MSK
А нативный golang никто не пытался собрать?
Comment 22 Alexey Gladkov 2012-09-13 00:43:33 MSK
(В ответ на комментарий №21)
> А нативный golang никто не пытался собрать?

Я постараюсь собрать. Теперь у меня нет альтернатив.
Comment 23 Vladimir Lettiev 2012-09-13 07:09:59 MSK
(В ответ на комментарий №22)
> (В ответ на комментарий №21)
> > А нативный golang никто не пытался собрать?
> 
> Я постараюсь собрать. Теперь у меня нет альтернатив.

Вчера я пытался собрать. Наткнулся на определённые проблемы со сборкой: бинарники не проходят проверку verify-elf. Хоть утилиты запускаются и работают, но, например,
$ LD_BIND_NOW=1 /usr/bin/go
/usr/bin/go: error while loading shared libraries: unexpected reloc type 0x00050002

Пытаюсь понять как это победить.

git://git.altlinux.org/people/crux/packages/go.git
Comment 24 Alexey Gladkov 2012-09-13 11:34:40 MSK
Ого! Я не ожидал, что go кому-нибудь ещё нужен и интересен.
Comment 25 Dmitry V. Levin 2012-09-30 20:31:18 MSK
Hopefully fixed in gcc4.7-go