Closed Vadimatorik closed 1 year ago
Ну тут обычное java-приложение, надо настраивать пути. Как вариант, можно полный путь к jar-ке указать
Так. А почему закрыто-то? Скрипт в текущем виде, можно сказать, почти бесполезный. Я java никогда не релизел за пределами студии. Так что не пробовал. Может deb пакет можно собрать? Просто надо, чтобы он из системы спокойно вызывался. Как avr-gcc. И все.
Потому, что это точно никогда не будет исправлено, т.к. руки не дойдут ) Сейчас оно точно работает из IDE и при использовании avr-make. А в идеале тут от явы вообще лучше избавиться, но это пока мечты. Не уверен, что точно понимаю, в чем именно тут проблема, но выглядит так, что надо просто в sh-скрипт добавить полный путь к jar-файлу
Потому, что это точно никогда не будет исправлено, т.к. руки не дойдут )
Не-не. Важная тема.
Сейчас оно точно работает из IDE и при использовании avr-make.
С полными путями.
А в идеале тут от явы вообще лучше избавиться, но это пока мечты.
Полностью на котлин?
Не уверен, что точно понимаю, в чем именно тут проблема, но выглядит так, что надо просто в sh-скрипт добавить полный путь к jar-файлу
В целом да. Кстати только сейчас понял, что можно просто в скрипте путь до скрипта запросить и все. Как мне исправление запушить? Просто сюда новый код или как?
Полностью на котлин?
Оно уже на котлине. В идеале бы скомпилировать это дело в нативный код на kotlin-native
В целом да. Кстати только сейчас понял, что можно просто в скрипте путь до скрипта запросить и все. Как мне исправление запушить? Просто сюда новый код или как?
А что именно запушить? Там же полный путь до jar-ки указать, а он у каждого свой будет
А что именно запушить? Там же полный путь до jar-ки указать, а он у каждого свой будет
Авто определение. Чтобы скрипт сам подставлял путь до файла. Он ведь знает где скрипт лежит. Немного строковой магии и готово)
А, магия - это хорошо ) можно или МР-ом, или просто сюда текстом, а я добавлю в следующий релиз
Вот исправленная версия:
#!/usr/bin/env bash
SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )
java -jar ${SCRIPT_DIR}/the-rat.jar $1 $2 $3 $4 $5 $6 $7 $8 $9
Взял отсюда.
Работает из любой директории. Путь до скрипта прописан в PATH. Переносы все еще бесят)))
Суммарный скрипт вышел такой для сборки:
rm -rRdf build
mkdir build
ratc -gcc -list src/main.art build/main
ratc src/main.art build/main
Финально он собирает так:
Но у меня include прописаны напрямую. Как будут относительные пути - добавлю файлик тот с путями и попробую собрать уже без них.
Кстати говоря, а почему принимается выходной файл, а не директория? Логичнее просто директорию. А то выходят странные названия с двойным разрешением. Я вот указал директорию и у меня у основного hex файла нет разрешения. А если я его укажу - то будет криво работать для других двух файлов. Мне поставить карточку на этот момент?
У меня в целом есть вопросы к именованию. Почему avr-rat.lss, если я указывал другое? Я понимаю, что для среды. Но это неявная штука. Все же предлагаю указывать каталог для файлов. И туда уже всё пихать. И основываться на имени собираемого файла.
И еще. Почему невозможно получить одной строкой сразу и hex и map и lss?
Вот исправленная версия:
Супер, спасибо!
Кстати говоря, а почему принимается выходной файл, а не директория?
Потому, что оно еще может работать в режиме -gcc, и обрабатывать сразу кучу файлов в разных директориях. Тогда в аргументах передаются несколько пар source_file - dest_file
Мне поставить карточку на этот момент?
Думаю, пока не имеет смысла этим заморачиваться, "как сделать максимально удобно на все случаи жизни не сломав при этом то, что уже работает"
У меня в целом есть вопросы к именованию. Почему avr-rat.lss, если я указывал другое? Я понимаю, что для среды.
Как раз потому, что для среды ) Т.е. ситуация была такая, что резко захотелось добавить в среду листинг, максимально малой кровью за минимальное время. А то, что имя файла листинга не содержит в себе имя проекта - это не очень здорово, да, но жить вообщем не мешает. Все равно главная задача в том, чтобы сделать удобную IDE
И еще. Почему невозможно получить одной строкой сразу и hex и map и lss?
Все по той же причине - lss делался только для IDE и при его создании нельзя перекомпилировать hex (т.к. перекомпиляция - это команда Build, а листинг можно хотеть смотреть и без пересборки). А зачем вообще нужен листинг без IDE? файлом его даже смотреть неудобно будет. изначально я для этих целей пользовался дизассемблером, запускаемым из Makefile Да, понятно, что тут можно много чего улучшить, но, кмк, оно сильно не улучшит жизнь пользователю и есть более нужные доработки по всему этому делу
Потому, что оно еще может работать в режиме -gcc, и обрабатывать сразу кучу файлов в разных директориях. Тогда в аргументах передаются несколько пар source_file - dest_file
Первый раз про такой режим слышу... Ну ладно.
Думаю, пока не имеет смысла этим заморачиваться, "как сделать максимально удобно на все случаи жизни не сломав при этом то, что уже работает"
Да вот ХЗ. В текущем варианте как-то стыдно показывать людям) main.hex и main.hex.map... Костыльно. Про lss вообще молчу. Но да ладно. Пусть пока так. Ок.
Как раз потому, что для среды ) Т.е. ситуация была такая, что резко захотелось добавить в среду листинг, максимально малой кровью за минимальное время. А то, что имя файла листинга не содержит в себе имя проекта - это не очень здорово, да, но жить вообщем не мешает. Все равно главная задача в том, чтобы сделать удобную IDE
Ладно... Пока с IDE не определено - пойдет.
Все по той же причине - lss делался только для IDE и при его создании нельзя перекомпилировать hex (т.к. перекомпиляция - это команда Build, а листинг можно хотеть смотреть и без пересборки).
Понял-принял, ок.
А зачем вообще нужен листинг без IDE? файлом его даже смотреть неудобно будет. изначально я для этих целей пользовался дизассемблером, запускаемым из Makefile
Ну он сложно-читаемый, да. Зато можно точно понять, из чего hex создавался.
Да, понятно, что тут можно много чего улучшить, но, кмк, оно сильно не улучшит жизнь пользователю и есть более нужные доработки по всему этому делу
Ну, разве что, станет приятнее на вид выхлоп от CI)))
Первый раз про такой режим слышу... Ну ладно.
Обычный же режим ) Есть, например, проект на С и Rat, с кучей файлов, раскиданных по разным директориям. Совершенно обычный случай у меня. Все art-файлы надо скомпилировать в gcc-asm и сохранить в той же иерархической структуре. Компилировать поштучно, вызывать компилятор много раз - плохо и медленно. Поэтому нужен пакетный режим
Да вот ХЗ. В текущем варианте как-то стыдно показывать людям) main.hex и main.hex.map...
main.hex.map еще можно исправить, это не сложно. Но lss - он вообще для людей не предназначен был. Я бы вообще от него избавился и передавал листинг в IDE другим образом. Без инструмента, который может отображать этот листинг синхронно с исходниками он сильно неудобен. И формат файла не очень.
Текущий скрипт не приспособлен для того, чтобы его запускали как приложение:
Такое получаю, когда пытаюсь запустить его не из директории проекта. При этом в PATH путь к каталогу к компилятору есть.