# Обновление Gentoo + кривые руки + отсутствие мозга

## alal

Друзья, всем привет. 

Прошу помощи с обновлением системы. Давно (с полгода-год) у меня не обновилась система, вышла ошибка. Я уже не помню, какая именно, забил тогда на это. Сейчас решил все же дообновить систему, но видимо что-то пошло не так. 

Подскажите, как привести систему в актуальное состояние? С чего начать вообще? Какую диагностику снять? 

В настоящий момент при выполнении 

emerge -a1 sys-devel/binutils sys-libs/binutils-libs

получаю:

```

 x86_64-pc-linux-gnu-gcc -c -DHAVE_CONFIG_H -O2 -pipe -march=core2 -mtune=generic -fstack-protector  -I. -I/var/tmp/portage/sys-devel/binutils-2.32-r1/work/binutils-2.32/libiberty/../include  -W -Wall -Wwrite-strings -Wc++-compat -Wstrict-prototypes -Wshadow=local -pedantic  -D_GNU_SOURCE -fpic /var/tmp/portage/sys-devel/binutils-2.32-r1/work/binutils-2.32/libiberty/fibheap.c -o pic/fibheap.o; \

else true; fi

distcc[4496] (dcc_parse_hosts) Warning: /etc/distcc/hosts contained no hosts; can't distribute work

distcc[4496] (dcc_build_somewhere) Warning: failed to distribute, running locally instead

distcc[4496] (dcc_parse_hosts) Warning: /etc/distcc/hosts contained no hosts; can't distribute work

/var/tmp/portage/sys-devel/binutils-2.32-r1/work/binutils-2.32/libiberty/fibheap.c: In function ‘fibheap_replace_key_data’:

/var/tmp/portage/sys-devel/binutils-2.32-r1/work/binutils-2.32/libiberty/fibheap.c:38:24: error: ‘LONG_MIN’ undeclared (first use in this function)

 #define FIBHEAPKEY_MIN LONG_MIN

                        ^

/var/tmp/portage/sys-devel/binutils-2.32-r1/work/binutils-2.32/libiberty/fibheap.c:220:30: note: in expansion of macro ‘FIBHEAPKEY_MIN’

   if (okey == key && okey != FIBHEAPKEY_MIN)

                              ^~~~~~~~~~~~~~

/var/tmp/portage/sys-devel/binutils-2.32-r1/work/binutils-2.32/libiberty/fibheap.c:38:24: note: each undeclared identifier is reported only once for each function it appears in

 #define FIBHEAPKEY_MIN LONG_MIN

                        ^

/var/tmp/portage/sys-devel/binutils-2.32-r1/work/binutils-2.32/libiberty/fibheap.c:220:30: note: in expansion of macro ‘FIBHEAPKEY_MIN’

   if (okey == key && okey != FIBHEAPKEY_MIN)

                              ^~~~~~~~~~~~~~

/var/tmp/portage/sys-devel/binutils-2.32-r1/work/binutils-2.32/libiberty/fibheap.c: In function ‘fibheap_delete_node’:

/var/tmp/portage/sys-devel/binutils-2.32-r1/work/binutils-2.32/libiberty/fibheap.c:38:24: error: ‘LONG_MIN’ undeclared (first use in this function)

 #define FIBHEAPKEY_MIN LONG_MIN

                        ^

/var/tmp/portage/sys-devel/binutils-2.32-r1/work/binutils-2.32/libiberty/fibheap.c:261:36: note: in expansion of macro ‘FIBHEAPKEY_MIN’

   fibheap_replace_key (heap, node, FIBHEAPKEY_MIN);

                                    ^~~~~~~~~~~~~~

distcc[4496] ERROR: compile /var/tmp/portage/sys-devel/binutils-2.32-r1/work/binutils-2.32/libiberty/fibheap.c on localhost failed

make[2]: *** [Makefile:753: fibheap.o] Error 1

make[2]: Leaving directory '/var/tmp/portage/sys-devel/binutils-2.32-r1/work/build/libiberty'

make[1]: *** [Makefile:8332: all-libiberty] Error 2

make[1]: Leaving directory '/var/tmp/portage/sys-devel/binutils-2.32-r1/work/build'

make: *** [Makefile:850: all] Error 2

 * ERROR: sys-devel/binutils-2.32-r1::gentoo failed (compile phase):

 *   emake failed

```

Подскажите, с чего начать, что почитать?

Нашел похожую намою ошибку, но как её устранить не пойму  :Sad:  https://www.linuxquestions.org/questions/linux-newbie-8/gcc-4-7-1-libiberty-fibheap-c-220-30-error-%27long_min%27-undeclared-first-use-i-4175453077/

----------

## alal

Нет такого файла: 

```
alexey@me ~ $ ls -la  /var/tmp/portage/sys-devel/

итого 12

drwxrwxr-x  3 portage portage 4096 сен  4 15:33 .

drwxrwxr-x 26 portage portage 4096 сен  4 15:33 ..

drwxr-xr-x  7 portage portage 4096 сен  4 15:33 binutils-2.32-r1

alexey@me ~ $ 
```

А разве должен быть?

----------

## Vladimir Kunschikov

Проверь limits.h в /usr/include/limits.h  - не переписан ли, нет ли дубликатов. LONG_MIN берётся оттуда. Файлик из sys-libs/glibc

----------

## TigerJr

Кривые руки + отсутствие мозга это если вы начали обновление на рабочей системе без тестирования, тут ошибка понятная - вопросы к разработчикам(почитать у них в баг-трекере)

Есть аналогичная тема на английском языке от 2015 года, версия пакета 2.25, в теме указанно [SOLVED]

https://forums.gentoo.org/viewtopic-t-1032192-start-0.html

----------

## alal

 *Vladimir Kunschikov wrote:*   

> Проверь limits.h в /usr/include/limits.h  - не переписан ли, нет ли дубликатов. LONG_MIN берётся оттуда. Файлик из sys-libs/glibc

 

У меня такая каша в системе, я даже не знаю, с каким файлом сравнивать  :Sad: 

```

me / # find -name "limits.h"  

./var/tmp/portage/net-libs/gnutls-3.6.7/work/gnutls-3.6.7-abi_x86_64.amd64/gl/limits.h

./var/tmp/portage/dev-libs/libunistring-0.9.10/work/libunistring-0.9.10-abi_x86_64.amd64/lib/limits.h

./usr/i686-pc-linux-gnu/usr/include/limits.h

./usr/i686-pc-linux-gnu/usr/include/linux/limits.h

./usr/include/limits.h

./usr/include/linux/limits.h

./usr/src/linux-4.14.52-gentoo/include/uapi/linux/limits.h

./usr/src/linux-4.14.52-gentoo/arch/arm/include/asm/limits.h

./usr/src/linux-4.14.78-gentoo/include/uapi/linux/limits.h

./usr/src/linux-4.14.78-gentoo/arch/arm/include/asm/limits.h

./usr/src/linux-4.14.83-gentoo/include/uapi/linux/limits.h

./usr/src/linux-4.14.83-gentoo/arch/arm/include/asm/limits.h

./usr/src/linux-4.14.65-gentoo/include/uapi/linux/limits.h

./usr/src/linux-4.14.65-gentoo/arch/arm/include/asm/limits.h

./usr/src/linux-4.19.37-gentoo/include/uapi/linux/limits.h

./usr/src/linux-4.19.37-gentoo/arch/arm/include/asm/limits.h

./usr/lib64/gcc/i686-pc-linux-gnu/4.8.4/include/g++-v4/tr1/limits.h

./usr/lib64/gcc/i686-pc-linux-gnu/4.8.4/include-fixed/limits.h

./usr/lib64/gcc/x86_64-pc-linux-gnu/8.3.0/include/g++-v8/tr1/limits.h

./usr/lib64/gcc/x86_64-pc-linux-gnu/8.3.0/include-fixed/limits.h

./usr/lib64/gcc/x86_64-pc-linux-gnu/7.3.0/include/g++-v7/tr1/limits.h

./usr/lib64/gcc/x86_64-pc-linux-gnu/7.3.0/include-fixed/limits.h

me / # 

```

в /usr/include/limits.h там действительно есть LONG_MIN, но закомментирован... 

```
me / # grep LONG_MIN /usr/include/limits.h

#  define LONG_MIN      (-LONG_MAX - 1L)

#   define LLONG_MIN    (-LLONG_MAX - 1LL)

/* The <limits.h> files in some gcc versions don't define LLONG_MIN,

# ifndef LLONG_MIN

#  define LLONG_MIN     (-LLONG_MAX-1)

me / # 

```

Где взять актуальный limits.h

----------

## Vladimir Kunschikov

Всё в порядке с limits.h  - решетка в сишнике это не комментарий.

Значит не инклюдит в исходнике.

Попробуй реемергнуть с -march=native?

----------

## alal

 *Vladimir Kunschikov wrote:*   

> Всё в порядке с limits.h  - решетка в сишнике это не комментарий.
> 
> Значит не инклюдит в исходнике.
> 
> Попробуй реемергнуть с -march=native?

 

Результат тот же самый: 

```

me / # emerge -a1 sys-devel/binutils sys-libs/binutils-libs

...

/var/tmp/portage/sys-devel/binutils-2.32-r1/work/binutils-2.32/libiberty/fibheap.c: In function ‘fibheap_replace_key_data’:

/var/tmp/portage/sys-devel/binutils-2.32-r1/work/binutils-2.32/libiberty/fibheap.c:38:24: error: ‘LONG_MIN’ undeclared (first use in this function)

 #define FIBHEAPKEY_MIN LONG_MIN

                        ^

/var/tmp/portage/sys-devel/binutils-2.32-r1/work/binutils-2.32/libiberty/fibheap.c:220:30: note: in expansion of macro ‘FIBHEAPKEY_MIN’

   if (okey == key && okey != FIBHEAPKEY_MIN)

                              ^~~~~~~~~~~~~~

/var/tmp/portage/sys-devel/binutils-2.32-r1/work/binutils-2.32/libiberty/fibheap.c:38:24: note: each undeclared identifier is reported only once for each function it appears in

 #define FIBHEAPKEY_MIN LONG_MIN

                        ^

/var/tmp/portage/sys-devel/binutils-2.32-r1/work/binutils-2.32/libiberty/fibheap.c:220:30: note: in expansion of macro ‘FIBHEAPKEY_MIN’

   if (okey == key && okey != FIBHEAPKEY_MIN)

                              ^~~~~~~~~~~~~~

/var/tmp/portage/sys-devel/binutils-2.32-r1/work/binutils-2.32/libiberty/fibheap.c: In function ‘fibheap_delete_node’:

/var/tmp/portage/sys-devel/binutils-2.32-r1/work/binutils-2.32/libiberty/fibheap.c:38:24: error: ‘LONG_MIN’ undeclared (first use in this function)

 #define FIBHEAPKEY_MIN LONG_MIN

                        ^

/var/tmp/portage/sys-devel/binutils-2.32-r1/work/binutils-2.32/libiberty/fibheap.c:261:36: note: in expansion of macro ‘FIBHEAPKEY_MIN’

   fibheap_replace_key (heap, node, FIBHEAPKEY_MIN);

                                    ^~~~~~~~~~~~~~

distcc[4496] ERROR: compile /var/tmp/portage/sys-devel/binutils-2.32-r1/work/binutils-2.32/libiberty/fibheap.c on localhost failed

make[2]: *** [Makefile:753: fibheap.o] Error 1

make[2]: Leaving directory '/var/tmp/portage/sys-devel/binutils-2.32-r1/work/build/libiberty'

make[1]: *** [Makefile:8332: all-libiberty] Error 2

make[1]: Leaving directory '/var/tmp/portage/sys-devel/binutils-2.32-r1/work/build'

make: *** [Makefile:850: all] Error 2

 * ERROR: sys-devel/binutils-2.32-r1::gentoo failed (compile phase):

 *   emake failed

 * 

 * If you need support, post the output of `emerge --info '=sys-devel/binutils-2.32-r1::gentoo'`,

 * the complete build log and the output of `emerge -pqv '=sys-devel/binutils-2.32-r1::gentoo'`.

 * The complete build log is located at '/var/tmp/portage/sys-devel/binutils-2.32-r1/temp/build.log'.

 * The ebuild environment file is located at '/var/tmp/portage/sys-devel/binutils-2.32-r1/temp/environment'.

 * Working directory: '/var/tmp/portage/sys-devel/binutils-2.32-r1/work/build'

 * S: '/var/tmp/portage/sys-devel/binutils-2.32-r1/work/binutils-2.32'

>>> Failed to emerge sys-devel/binutils-2.32-r1, Log file:

>>>  '/var/tmp/portage/sys-devel/binutils-2.32-r1/temp/build.log'

 * Messages for package sys-devel/binutils-2.32-r1:

 * ERROR: sys-devel/binutils-2.32-r1::gentoo failed (compile phase):

 *   emake failed

 * 

 * If you need support, post the output of `emerge --info '=sys-devel/binutils-2.32-r1::gentoo'`,

 * the complete build log and the output of `emerge -pqv '=sys-devel/binutils-2.32-r1::gentoo'`.

 * The complete build log is located at '/var/tmp/portage/sys-devel/binutils-2.32-r1/temp/build.log'.

 * The ebuild environment file is located at '/var/tmp/portage/sys-devel/binutils-2.32-r1/temp/environment'.

 * Working directory: '/var/tmp/portage/sys-devel/binutils-2.32-r1/work/build'

 * S: '/var/tmp/portage/sys-devel/binutils-2.32-r1/work/binutils-2.32'
```

```

me / # grep march /etc/portage/make.conf

#CFLAGS="-O2 -pipe -march=core2 -mcx16 -msahf -mfxsr --param l1-cache-size=32 --param l1-cache-line-size=64 --param l2-cache-size=512 -mtune=generic -fstack-protector"

FLAGS="-O2 -pipe -march=native -mcx16 -msahf -mfxsr --param l1-cache-size=32 --param l1-cache-line-size=64 --param l2-cache-size=512 -mtune=generic -fstack-protector"

me / # 

```

----------

## Vladimir Kunschikov

Закомментирован CFLAGS, добавлен FLAGS.  

me / # grep march /etc/portage/make.conf 

#CFLAGS="-O2 -pipe -march=core2 -mcx16 -msahf -mfxsr --param l1-cache-size=32 --param l1-cache-line-size=64 --param l2-cache-size=512 -mtune=generic -fstack-protector" 

FLAGS="-O2 -pipe -march=native -mcx16 -msahf -mfxsr --param l1-cache-size=32 --param l1-cache-line-size=64 --param l2-cache-size=512 -mtune=generic -fstack-protector" 

me / #

----------

