[РЕШЕНО] Ошибка сборки TWRP - ТОЛЬКО на Arch Linux

Собираю TWRP на исхах 5.1. Java-7. Проблема в том, что ровно на тех же исхах, ровно на том же конфиге образ успешно собирается и запускается на Debian и Calculate Linux. А на Арче вот такая ошибка, причём уже не первый раз (хотя бывает и довольно редко):

host C: mkbootimg <= system/core/mkbootimg/mkbootimg.c
system/core/mkbootimg/mkbootimg.c: In function 'main':
system/core/mkbootimg/mkbootimg.c:212:9: error: 'strncpy' specified bound 1024 equals destination size [-Werror=stringop-truncation]
         strncpy((char *)hdr.extra_cmdline, cmdline, BOOT_EXTRA_ARGS_SIZE);
         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
cc1: all warnings being treated as errors
make: *** [build/core/binary.mk:700: /home/yurius/omni/out/host/linux-x86/obj32/EXECUTABLES/mkbootimg_intermediates/mkbootimg.o] Error 1
make: *** Waiting for unfinished jobs....
In function 'rule_map_new',
    inlined from 'parse' at external/sepolicy/tools/check_seapp.c:970:17:
external/sepolicy/tools/check_seapp.c:580:5: error: 'strncat' output truncated before terminating nul copying as many bytes from a string as its length [-Werror=stringop-truncation]
     strncat(new_map->key, k->key, key_len);
     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
external/sepolicy/tools/check_seapp.c: In function 'parse':
external/sepolicy/tools/check_seapp.c:565:19: note: length computed here
     int key_len = strlen(k->key);
                   ^~~~~~~~~~~~~~
In function 'rule_map_new',
    inlined from 'parse' at external/sepolicy/tools/check_seapp.c:970:17:
external/sepolicy/tools/check_seapp.c:581:5: error: 'strncat' output truncated before terminating nul copying as many bytes from a string as its length [-Werror=stringop-truncation]
     strncat(new_map->key, k->value, val_len);
     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
external/sepolicy/tools/check_seapp.c: In function 'parse':
external/sepolicy/tools/check_seapp.c:566:19: note: length computed here
     int val_len = strlen(k->value);
                   ^~~~~~~~~~~~~~~~
cc1: all warnings being treated as errors
make: *** [build/core/binary.mk:700: /home/yurius/omni/out/host/linux-x86/obj32/EXECUTABLES/checkseapp_intermediates/check_seapp.o] Error 1

#### make failed to build some targets (01:05 (mm:ss)) ####

Гугление ничего существенного не дало. Кто-то может подсказать, что бы это значило?
yurius
Гугление ничего существенного не дало.
Не то гуглил. Возникающие варнинги считаются gcc ошибками - указаны и файлы и номера строк. Смотри и исправляй.
Но можно и не исправлять, а попробовать применить приведенную подсказку -Werror=stringop-truncation - что должно пропустить данный варнинг, но не факт.
Пробуй, но, как правило, исправишь, а дальше могут вылезти новые. Так что если этим никогда не занимался, то успех около нуля.
Ошибки не исчезают с опытом - они просто умнеют
yurius
образ успешно собирается и запускается на Debian
У нас более новая весия gcc, а потому и проблемы при сборке. Но можно попробовать другой варинт, но гарантии дать не могу.
Собираешь пакет на Debian, потом его конвертируешь в пакет Arch (не помню название утилиты, поищи в блогах) и устанавливаешь.
Ошибки не исчезают с опытом - они просто умнеют
vasek
У нас более новая весия gcc, а потому и проблемы при сборке.
Вот это я уже и понял, посмотрев, что на дебиане gcc-6, а на кальке gcc-7. А как мне сдаунгрейдить gcc-8 до 7? Пытаюсь

downgrader gcc

, выбираю 7.3, вылазит ошибка

loading packages...
warning: downgrading package gcc (8.1.1+20180531-1 => 7.3.0-1)
resolving dependencies...
warning: cannot resolve "gcc-libs=7.3.0-1", a dependency of "gcc"
:: The following package cannot be upgraded due to unresolvable dependencies:
      gcc

:: Do you want to skip the above package for this upgrade? [y/N]
error: failed to prepare transaction (could not satisfy dependencies)
:: unable to satisfy dependency 'gcc-libs=7.3.0-1' required by gcc
[email protected]:~/omni$
yurius
Пытаюсь downgrader gcc
Имхо, этого делать не нужно. Пробуй способы, которые описал - или добавь флаг -Wno-error=stringop-truncation или сконвертируй deb-пакет в наш пакет.

PS - исправил описку (заменил Werror на Wno-error)
Ошибки не исчезают с опытом - они просто умнеют
vasek
добавь флаг -Werror=stringop-truncation
Куда и как добавить? Конкретно?

Я добавлял такие флаги в BoardConfig.mk :

TARGET_GLOBAL_CFLAGS += -Wno-error=implicit-fallthrough
TARGET_GLOBAL_CPPFLAGS += -Wno-error=implicit-fallthrough

- никакого эффекта. Или не их надо, или не так, или не туда?...
В подробности не лез, но насколько понял уже имеется [PATCH 1/1] [build] fix stringop truncation warning with GCC 8.x
GCC 8.x gives a warning about stringop truncation:

util/elf2efi.c:497:2: error: ‘strncpy’ specified bound 8 equals destination
size [-Werror=stringop-truncation]

It assumes that strncpy() is intended to copy strings, which are NULL
terminated. We do copy fixed size memory regions, so use memcpy() instead.

Давать какие то советы не буду так как сам с этим stringop truncation не разобрался, а влазить капитально в это пока нет ни времени, ни желания, так как чтобы понять и дать совет, нужно самому собрать и проработать данные ошибки.
Уже не раз писал, раз любите собирать сами, то нужно учиться и самим исправлять ошибки. В этом деле особых помощников не бывает.
Ошибки не исчезают с опытом - они просто умнеют
Попробуй тупо заменить в указанных файлах/строках strncpy на memcpy
Ошибки не исчезают с опытом - они просто умнеют
vasek
Попробуй тупо заменить в указанных файлах/строках strncpy на memcpy
Попробую, если ничего лучшего не найду. А куда можно баг-репорт сделать про эти ошибки?
yurius
А куда можно баг-репорт сделать про эти ошибки?
Это не bug - исходник не соответствует требованиям gcc 8.1.1. Приведи его в соответствие и варнингов, считающихся ошибками, не будет.
Это происходит постоянно, в большей или меньшей степени, при сборке устаревших исходников (не приведенных в соответствие с новыми требованиями gcc). Потому и не советуют новичкам самим собирать пакеты - есть оффициальный репозитарий, оттуда и ставьте пвакеты. А если захотели не оффициальных конфет, то и не нужно жаловаться.
Ошибки не исчезают с опытом - они просто умнеют
 
Зарегистрироваться или войдите чтобы оставить сообщение.