diff --git a/public/uk/porting-koreader-on-pocketbook-602.gmi b/public/uk/porting-koreader-on-pocketbook-602.gmi index 32f9c4e..11d58b6 100644 --- a/public/uk/porting-koreader-on-pocketbook-602.gmi +++ b/public/uk/porting-koreader-on-pocketbook-602.gmi @@ -81,7 +81,7 @@ elseif codename == "602" then ## Крос-компіляція PocketBook / ARMv6 на Linux / amd64 -Запустити готові бінарники для PocketBook з асету відповідних релізів на GitHub не вийде, бо вони зкомпільовані для сучасних ARM (мабуть 64) і при такій спробі, в crash.log буде помилка: +Запустити готові бінарники (application/koreader) для PocketBook з асету відповідних релізів на GitHub не вийде, бо вони зкомпільовані для сучасних ARM і при такій спробі, в crash.log буде помилка: ``` crash.log Illegal instruction @@ -97,27 +97,83 @@ ARMv6-compatible processor rev 6 (v6l) Я спочатку подумав, що самий хитрий і вирішив просто підмінити бінарники з іншого релізу: => https://github.com/koreader/koreader/releases/download/v2025.10/koreader-linux-armv7l-v2025.10.tar.xz -Але не все так склалося як гадалося: у цьому наборі зовсім інша структура та набори файлів. Отже довелось таки розгортати середовище для крос-компіляції. Минаючи довгу передісторію, потрібно виконати наступні кроки, попередньо ознайомившись з актуальною документацією: +Але не все так склалося як гадалося: у цьому наборі зовсім інша структура та набори файлів. Отже довелось таки розгортати середовище для крос-компіляції. Минаючи довгу передісторію, потрібно виконати кроки в розділах нижче, попередньо ознайомившись з актуальною документацією: => https://github.com/koreader/koreader/blob/master/doc/Building.md Building => https://github.com/koreader/koreader/blob/master/doc/Building_targets.md Building targets => https://github.com/koreader/koreader/blob/master/doc/Porting.md Porting -### koxtoolchain +### crosstool-ng -Завантажуємо середовище: +Це залежність koxtoolchain, даний розділ можна пропустити якщо не плануєте збирати koxtoolchain з сорсу. -=> https://github.com/koreader/koxtoolchain/releases/tag/2025.05 +Згадую про crosstool-ng, бо на системах (зокрема Fedora 43) з останніми версіями wget є баг: +=> https://github.com/NiLuJe/crosstool-ng/issues/9 -Розпаковуємо в теку, де лежать бінарні файли, або створюємо симлінки. В мене деякі тимчасові бінарники лежать окремо, в $HOME/Bins - цей шлях я використовую в $PATH: +і готове рішення: +=> https://github.com/crosstool-ng/crosstool-ng/pull/2439 Remove --passive-ftp from wget usage #2439 -``` bash -export PATH="$PATH:$HOME/Bins/kindle/x-tools/arm-kindle-linux-gnueabi/bin:$PATH" +Але для PocketBook (в koxtoolchain) використовується стара залежність, яку я локально замінив на свою гілку зі ще одним, додатковим випилом --passive-ftp: +=> https://github.com/NiLuJe/crosstool-ng/pull/10 + +Щоб застосувати мою гілку, не чекаючи мержу, оновлюємо джерела секції "pocketbook": + +``` scripts/scripts.mk +# змінюємо рядки ~196-197 + pocketbook) + # NOTE: Prevent libstdc++ from pulling in utimensat@GLIBC_2.6 + export glibcxx_cv_utimensat=no + + Build_CT-NG \ + https://github.com/oooo-ps/crosstool-ng.git \ + remove--passive-ftp \ + "arm-${1}-linux-gnueabi" ``` -### koreader +### Збірка koreader на базі патчу koxtoolchain -Встановивши koxtoolchain, спочатку ставимо залежності для вашої операційної системи: +``` bash +git clone https://github.com/koreader/koxtoolchain.git +cd koxtoolchain +``` + +Для секції PocketBook, я оновив рядок ARCH_FLAGS: + +``` refs/x-compile.sh + PB ) + # NOTE: The TC itself is built in ARM mode, otherwise glibc 2.9 doesn't build (fails with a "r15 not allowed here" assembler error on csu/libc-start.o during the early multilib start-files step). + # AFAICT, the official SDK doesn't make a specific choice on that front (i.e., it passes neither -marm not -mthumb. That usually means ARM)... + # NOTE: This is probably related to our choice of -mcpu target, as the kindle TC builds just fine on the same glibc version... for armv6j ;). + # ARCH_FLAGS="-march=armv7-a -mtune=cortex-a8 -mfpu=neon -mfloat-abi=softfp -mthumb" + ARCH_FLAGS="-march=armv6j -mtune=arm1136jf-s -mfpu=vfp -mfloat-abi=softfp -mthumb" +``` + +Компілюємо: + +``` bash +./gen-tc.sh pocketbook +``` +* можливо, доведеться довстановити: +``` bash +sudo dnf install texinfo help2man +``` + +### Збірка koreader на базі релізу kindle + +Цей метод мені порадили тут: +=> https://github.com/koreader/koreader/issues/14600#issuecomment-3523865864 + +Завантажуємо бінарний реліз Kindle: + +=> https://github.com/koreader/koxtoolchain/releases/download/2025.05/kindle.tar.gz + +Розпаковуємо його в потрібну теку або створюємо туди симлінки: + +``` bash +export PATH="$PATH:$HOME/x-tools/arm-kindle-linux-gnueabi/bin:$PATH" +``` + +Додатково ставимо залежності для вашої операційної системи: => https://github.com/koreader/koreader/blob/master/doc/Building.md#prerequisites Prerequisites @@ -130,7 +186,7 @@ git clone https://github.com/koreader/koreader.git cd koreader && ./kodev fetch-thirdparty ``` -Перед тим, як продовжити, мені порадили спробувати змінити у файлі: +Так як у цьому випадку використовуюється підміна платформи бінарниками ARM Kindle, замінюємо: ``` base/Makefile.defs CHOST?=arm-pocketbook-linux-gnueabi @@ -156,8 +212,6 @@ cd koreader && ./kodev fetch-thirdparty ./kodev release pocketbook ``` -Тут в мене виникла інша проблема, тому закінчу цей матеріал як з нею розберусь. - ## Посилання => https://github.com/koreader/koreader/issues/14600 Тема №14600 на GitHub (дякую усім, хто долучився) \ No newline at end of file