Automake distcheck de fontes com link simbólico

1

Eu mantenho um makefile "master" para um projeto com muitos submódulos, cada um com sua própria estrutura de autotools. Este projeto é testado em várias configurações (por exemplo, construído em backends de versões diferentes) e pode ser construído em diferentes plataformas / arquiteturas usando o mesmo diretório home sobre NFS ou com cross-compilers. Tudo isso é feito pegando a área de trabalho de checkout (git repo clone), "clonando (*)" a fonte para um diretório separado para a configuração atual da compilação e configure ing / autogen ing clone of sources poluindo o checkout original) e, finalmente, construindo-o fora da árvore, bem apoiado por autotools.

A parte "(*) clonagem" é implementada de várias maneiras, como cp / tar da cópia da área de trabalho original para o "clone de origem", ou criando uma estrutura de diretório no clone preenchida com links simbólicos relativos a arquivos originais no espaço de trabalho principal. E aqui estão dragões:)

O clone fonte preenchido por arquivos naturais é auto-suficiente e passa bem os trabalhos do automake, e em particular os dist (e distcheck ) - ao contrário do "symlink clone" onde make dist aparentemente tarballs os links simbólicos relativos "como está", então depois de desalinhar eles não apontam para lugar algum.

O lado positivo dos links simbólicos é que um desenvolvedor pode editar arquivos no espaço de trabalho e reconstruir todas as plataformas em uma mágica, sem comprometê-las a git, etc. - acelerando os ciclos de iteração (pelo menos enquanto novos arquivos não forem adicionados - apenas re "make" dos já editados. Também é consideravelmente menos espaço de armazenamento e sobrecarga de tempo do que copiar os mesmos arquivos várias vezes.

Então a pergunta é: É possível "fazer dist" um diretório preenchido por links simbólicos relativos a fontes originais? Talvez algum "dist gancho" ou outras maneiras de substituir como o tarball é feito? (seria aceitável se o procedimento dist criasse arquivos reais em seu subdiretório dedicado, por exemplo, desreferenciando links simbólicos fonte-dir)

Ou simplesmente não é factível e não podemos ter o bolo e comê-lo? :)

(para referência, o Makefile "principal" em questão está no link )

    
por Jim Klimov 08.08.2017 / 10:27

0 respostas