Meu currículo. Entrada LaTeX, saída PDF.
Makefiles são ótimos para automatizar construções, instalações e testes.
Mas esse não é o fim de Make. Eu usei makefiles para fazer muitas tarefas, como limpar logs, manter páginas espelhadas e downloads, conectá-los em crontabs e suítes de teste ...
Como o script, acho que existe um grande escopo de automação com Makefiles. Particularmente quando você precisa de uma cadeia de acionamento baseada em dependência.
Que coisas diferentes você fez usando o Makefiles?
O que você está planejando fazer mais com eles, talvez em um dia chuvoso?
Meu currículo. Entrada LaTeX, saída PDF.
Eu gosto muito do Makefiles, especialmente para administradores de sistemas juniores.
Atualizar o arquivo de zona de ligação?
Não há problema: o destino tem checkzone
e checkconfig
(falta de memória) e só sudo cp <editlocation> <reallocation>; git commit -a ....
se tudo parecer bem ...
Complexo ?
Não há problema em gravá-lo em um Makefile
Eu usei muito o Makefiles em qualquer lugar onde um script fosse apropriado também. De forma geral, eu os combino, /usr/local/[s]bin/
é onde estão os scripts de "etapa única" e o Makefile está no diretório de trabalho do serviço em questão.
Na verdade, eu os usei muito mais pelas razões acima do que pelos sistemas de compilação - isto é, se você não contar látex e construir do upstream.
Como somos praticamente uma loja Ruby, eu uso Rake em vez de Make. Eu automatizei o seguinte com o Rake, e não deve ser muito difícil fazer isso com o Make:
Manutenção do nó EC2. Crie e termine instâncias.
Crie um tarball e faça o upload para S3.
Implemente as configurações do servidor; principalmente chamando o rsync para diretórios e copiando diretamente arquivos singleton.
Converta o código DSL Ruby em dados JSON.
Lide com lançamentos de software em um repositório git (criando novas ramificações, tags, etc.).
sendmail.cf de volta nos 8,9 dias, se bem me lembro.
Eu usei makefiles para manipular a transformação XML de fontes DocBook. Dessa forma, eu poderia pipilar todos os comandos e fazer "pdf" ou "make wordml" a partir da mesma fonte, dependendo de quem era o público-alvo.
Nada realmente. Acho a sintaxe do Makefile horrível para a maioria das tarefas do dia-a-dia e tento apenas interagir com Makefiles quando absolutamente necessário. Para tarefas de administração do sistema, não vejo o que eles oferecem em um script Bash ou Python. Para a criação de software, existem sistemas de criação melhores por aí.
Eu usei para "imprimir todas as notas desde a última impressão" em um diretório de anotações aleatório:
printflag: *.txt printcmd $? echo "printcmd $?" > $@
Eu ecoei o comando no arquivo de sinalização para que eu pudesse "printflag" para reimprimir o mesmo conjunto, se necessário;
para manter o DNS / DHCP / etc.:
edit hosts.dat # maintain single file with all relevant info make # work copies for visual check, diffs, etc., if needed make install # put into deploy-from-here location make deploy # push changed files to servers make restart # restart appropriate server processes here and there
(ou apenas "editar hosts.dat; fazer reinicialização" para os insensatos)
e como uma maneira rápida e suja de gerar scripts manuais para procedimentos - isto é, apenas use pseudo-alvos e faça com que os comandos makefile ecoem algo como "do step Foo" - quando você precisar de algo mais sofisticado do que tsort
Eu sei que algumas pessoas costumavam usar scripts Makefile em vez de scripts init. Isso efetivamente os fez executar paralelamente e definir dependências entre etapas.
Tags automation linux scripting