Tente usar o scripts/diffconfig
da árvore de origem do kernel do Linux.
Uso:
diffconfig config-a config-b
Mostra uma lista de linhas removidas, modificadas e adicionadas ao arquivo config-b em relação a config-a.
Eu tenho uma situação na qual eu tenho dois arquivos de configuração do kernel (para a mesma fonte do kernel). Ambos têm uma parte da funcionalidade que eu preciso (em um, o USB funciona corretamente, no outro, o segundo I2C).
Eu sei que as diferenças entre os dois arquivos de configuração, do ponto de vista do menuconfig, incluem apenas algumas opções selecionadas. (Mas não sabe quais)
No entanto, quando os arquivos de configuração são comparados manualmente (entre dois arquivos .config), as diferenças não são simples de identificar. Eu tentei mesclar manualmente sem sucesso. Tenho certeza que terei sucesso eventualmente, mas acredito que o processo poderia ser muito mais indolor se os arquivos fossem comparados de uma maneira que aparecessem no menuconfig.
Isso pode ser alcançado e, em caso afirmativo, como?
Tente usar o scripts/diffconfig
da árvore de origem do kernel do Linux.
Uso:
diffconfig config-a config-b
Mostra uma lista de linhas removidas, modificadas e adicionadas ao arquivo config-b em relação a config-a.
Existe um script na fonte do kernel;
scripts/kconfig/merge_config.sh
Serão necessárias duas configurações do kernel como argumentos - ele unirá o segundo no topo do primeiro. Qualquer coisa na segunda configuração irá substituir a primeira configuração - mesmo que seja uma linha como "# CONFIG_ não está definido"
Veja o link
Você pode tentar sort
ing os arquivos antes de comparar:
meld <(sort config-a) <(sort config-b)
Se os dois arquivos forem gerados por make menuconfig
, eles terão as opções na mesma ordem, então um simples diff
(via Meld ou qualquer frontend que você goste) dará um resultado útil.
Você pode obter algo mais legível se ignorar as linhas de comentários:
diff -I '^#' old.config new.config
Se, por algum motivo, os arquivos não estiverem na mesma ordem, você poderá classificá-los. Isso tem o lado negativo de colocar as opções relacionadas longe. Mais uma vez, remova os comentários. Use comm
para remover as linhas comuns.
comm -3 <(<old.config grep '^[^#]' | sort) <(<new.config grep '^[^#]' | sort)