[d-kernel] Сборка модуля drbd

Михаил Якушин =?iso-8859-1?q?silicium_=CE=C1_altlinux=2Eru?=
Вс Сен 7 21:22:23 MSD 2008


Eugene Prokopiev wrote:
>>> А теперь новая проблема: в официальном тарболле drbd присутствует файл
>>> drbd/drbd_buildtag.c, в git его нет. По содержимому файла понятно, что
>>> он каким-то магическим образом генерируется. Как это происходит?
>>>
>>> Судя по
>> http://git.altlinux.org/people/lakostis/packages/drbd-tools.git
>>> с этой проблемой должен был столкнуться lakostis, но в спеке решения
>>> не зафиксировано - уже готовый drbd/drbd_buildtag.c лежит в бранче
>>> master и попадает в патч. Ау, lakostis, как ты генерировал этот файл?
>>>
>>>
>>  Этот файл вроде бы генерился толи скриптом идущем в составе tar-ballа толи
>> деланием специального make-targetа
> 
> в Makefile была цель, которую я было заподозрил, но она, насколько я
> понимаю, уже с готовым drbd_buildtag.c что-то делает:
> 
> # XXX this is newly created whenever the toplevel makefile does something.
> # however it is NOT updated when you just do a make in user/ or drbd/ ...
> #
> # update of drbd_buildtag.c is forced:
> .PHONY: drbd/drbd_buildtag.c
> drbd/drbd_buildtag.c:
>     $(MAKE) -C drbd drbd_buildtag.c
> 
> Других подозрительных мест я, перерыв весь тарболл, не нашел :(
> 
в drbd-8.2 в drbd/Makefile:
   drbd_buildtag.c:
         @is_tarball=`test -e ../.git/. && echo false || echo true`;\
         set -e; exec > $@.new; 
          \
         echo -e "/* automatically generated. DO NOT EDIT. */"; 
          \
         echo -e "const char * drbd_buildtag(void)\n{"; 
          \
         if $$is_tarball; then 
          \
           if ! test -e $@ ; then 
          \
                 echo >&2 "your DRBD source tree is broken. unpack 
again.";      \
                 exit 1; 
          \
           fi; 
          \
           grep return $@ ; 
          \
         else 
          \
           GITHEAD=$$(git-rev-parse HEAD); 
          \
           GITDIFF=$$(cd .. && git-diff --name-only HEAD | tr -s '\t\n' 
'  ' |   \
                 sed -e 's/^/ /;s/ *$$//'); 
          \
           echo -e "\treturn \"GIT-hash: $$GITHEAD$$GITDIFF\""; 
          \
         fi ; 
          \
         echo -e "\t\t\" build by $$USER@$$HOSTNAME, `date "+%F 
%T"`\";\n}";     \
         mv --force $@.new $@


Подробная информация о списке рассылки devel-kernel