Eventualmente você vai achar um projeto bacana que não usa meson.build e o mantenedor demora anos para aceitar PR, se algum dia for.
Ou mesmo seu projeto está em contrato para sempre adicionar a LICENSE
em todas as builds e o mantenedor se recusa.
Para resolver esse pepino você pode adicionar aos seus subprojects/*.wrap
git patches.
Por exemplo, no meu projeto - onur - por ser uma pequena ferramenta CLI prefiro usar o ht do grande Hoyt ao invés do enorme GNOME glib, mas este projeto git não tem uma meson.build.
Uma simples wrap-git
para esse projeto, que sequer tem tags também, seria usando o master
:
./subprojects/ht.wrap
[wrap-git]
directory=ht
url=https://github.com/benhoyt/ht
revision=master
depth=1
Primeiro vamos pegar todos subprojetos meson subprojects download
, e adicionar a meson.build
na raiz deste:
./subprojects/ht
cat <<EOF | tee -a ./subprojects/ht/meson.build
project('ht', 'c', version: '1.0')
ht_sources = [
'ht.c',
'ht.h',
]
ht_lib = static_library('ht', ht_sources)
ht_dep = declare_dependency(
include_directories: include_directories('.'),
link_with: ht_lib)
EOF
cat ./subprojects/ht/meson.build
e criar o patch com:
mkdir -pv subprojects/{packagecache,packagefiles}
git -C ./subprojects/ht add meson.build
git -C ./subprojects/ht diff --cached > ./subprojects/packagefiles/ht-meson.patch
cat ./subprojects/packagefiles/ht-meson.patch
uma vez com o patch devemos apontar sua presença ao ht.wrap
:
echo "diff_files = ht-meson.patch" >> ./subprojects/ht.wrap
cat ./subprojects/ht.wrap
Pronto, vamos aplicar o patch:
meson subprojects purge --confirm
meson subprojects download
e compilar o projeto para confirmar:
CC=gcc meson setup ./build --wipe -D b_sanitize=none -D buildtype=release
meson compile -C ./build
O executável vai aparecer em ./build
como esperado.
Valeu!
Recomendação para leitura:
Informações gerais:
Top comments (0)