Создаю порт одной программы под FreeBSD. Столкнулся со следующей проблемой: автор софта при создании архива пользовался не gzip/bzip2, а zip.
При этом упаковывал он файлы, видимо, под форточками, в связи с чем часть файлов, относящихся к исходному тексту программы (а конкретно файла-заголовки (.h)), упакованы ЗАГЛАВНЫМИ БУКВАМИ.
zip, как известно, регистр букв запоминает. При этом в самих исходниках ссылки на эти заголовки прописаны строчными буквами (include "header.h"). В связи с чем при компиляции программы, естественно, возникает ошибка.
У меня есть четыре пути решения проблемы:
1. Пересобрать свой архив программы, создав нормальный tar.gz (и разместить его у себя на серваке).
2. Поправить соответствующим образом Makefile, чтобы при сборке софта из порта научить make каким-то образом задавать ключи команде unzip, чтобы все файлы распаковывались lowercase (unzip -l, по-моему).
3. Поправить соответствующим образом Makefile, чтобы перед сборкой софта скрипт пробегался бы по дереву программы и переименовывал необходимые файлы из заглавных в строчные.
4. Сделать патчи к исходникам, чтобы вставки include содержали бы ссылки за файлы с ЗАГЛАВНЫМИ БУКВАМИ (include "HEADER.H").
---
Первый и четвёртый варианты мне кажутся почему-то идеологически неизящными (хотя если я ошибаюсь, поправьте меня).
Второй вариант интереснее, но я не уверен, что можно задавать ключи команде unzip (по крайней мере в porter's handbook я это не нашёл).
ну, и третий вариант очевиден и, скорее всего, я на нём остановлюсь. Но хотелось бы в Makefile не перечислять все файлы, подлежащие переименованию (mv HEADER header; mv HEX hex etc), а эту процедуру как-то автоматизировать.
В этой связи подскажите pls процедуру на шелле (awk, tr etc), позволяющую пробежаться по дереву программы и переименовать все файлы из заглавных букв в строчные.
Заранее спасибо.