Created
October 17, 2024 21:48
-
-
Save nlgranger/9ecc0b4f0a9e1c0079860bdc7cfb11f7 to your computer and use it in GitHub Desktop.
PKGBUILD skeleton genetator for projects with git submodules
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# example of generate output using https://github.com/tianocore/edk2 | |
sources=( | |
"berkeley-softfloat-3::git+file:///home/ngranger/Downloads/edk2/src/berkeley-softfloat-3" | |
"brotli::git+file:///home/ngranger/Downloads/edk2/src/brotli" | |
"cmocka::git+file:///home/ngranger/Downloads/edk2/src/cmocka" | |
"cryptography::git+file:///home/ngranger/Downloads/edk2/src/cryptography" | |
"edk2-cmocka::git+file:///home/ngranger/Downloads/edk2/src/edk2-cmocka" | |
"engine::git+file:///home/ngranger/Downloads/edk2/src/engine" | |
"googletest::git+file:///home/ngranger/Downloads/edk2/src/googletest" | |
"jansson::git+file:///home/ngranger/Downloads/edk2/src/jansson" | |
"krb5::git+file:///home/ngranger/Downloads/edk2/src/krb5" | |
"libprov::git+file:///home/ngranger/Downloads/edk2/src/libprov" | |
"libspdm::git+file:///home/ngranger/Downloads/edk2/src/libspdm" | |
"mbedtls::git+file:///home/ngranger/Downloads/edk2/src/mbedtls" | |
"oniguruma::git+file:///home/ngranger/Downloads/edk2/src/oniguruma" | |
"openssl::git+file:///home/ngranger/Downloads/edk2/src/openssl" | |
"public-mipi-sys-t::git+file:///home/ngranger/Downloads/edk2/src/public-mipi-sys-t" | |
"pugixml::git+file:///home/ngranger/Downloads/edk2/src/pugixml" | |
"pylibfdt::git+file:///home/ngranger/Downloads/edk2/src/pylibfdt" | |
"subhook::git+file:///home/ngranger/Downloads/edk2/src/subhook" | |
"wycheproof::git+file:///home/ngranger/Downloads/edk2/src/wycheproof" | |
) | |
checksums=( | |
"SKIP" | |
"SKIP" | |
"SKIP" | |
"SKIP" | |
"SKIP" | |
"SKIP" | |
"SKIP" | |
"SKIP" | |
"SKIP" | |
"SKIP" | |
"SKIP" | |
"SKIP" | |
"SKIP" | |
"SKIP" | |
"SKIP" | |
"SKIP" | |
"SKIP" | |
"SKIP" | |
"SKIP" | |
"SKIP" | |
"SKIP" | |
"SKIP" | |
"SKIP" | |
"SKIP" | |
"SKIP" | |
"SKIP" | |
"SKIP" | |
"SKIP" | |
"SKIP" | |
) | |
prepare() { | |
repo="." | |
git -C $repo submodule init | |
git -C $repo config submodule.SoftFloat.url "file://$srcdir/berkeley-softfloat-3" | |
git -C $repo config submodule.BaseTools/Source/C/BrotliCompress/brotli.url "file://$srcdir/brotli" | |
git -C $repo config submodule.CryptoPkg/Library/MbedTlsLib/mbedtls.url "file://$srcdir/mbedtls" | |
git -C $repo config submodule.CryptoPkg/Library/OpensslLib/openssl.url "file://$srcdir/openssl" | |
git -C $repo config submodule.MdeModulePkg/Library/BrotliCustomDecompressLib/brotli.url "file://$srcdir/brotli" | |
git -C $repo config submodule.MdeModulePkg/Universal/RegularExpressionDxe/oniguruma.url "file://$srcdir/oniguruma" | |
git -C $repo config submodule.MdePkg/Library/BaseFdtLib/libfdt.url "file://$srcdir/pylibfdt" | |
git -C $repo config submodule.MdePkg/Library/MipiSysTLib/mipisyst.url "file://$srcdir/public-mipi-sys-t" | |
git -C $repo config submodule.RedfishPkg/Library/JsonLib/jansson.url "file://$srcdir/jansson" | |
git -C $repo config submodule.SecurityPkg/DeviceSecurity/SpdmLib/libspdm.url "file://$srcdir/libspdm" | |
git -C $repo config submodule.UnitTestFrameworkPkg/Library/CmockaLib/cmocka.url "file://$srcdir/edk2-cmocka" | |
git -C $repo config submodule.UnitTestFrameworkPkg/Library/GoogleTestLib/googletest.url "file://$srcdir/googletest" | |
git -C $repo config submodule.UnitTestFrameworkPkg/Library/SubhookLib/subhook.url "file://$srcdir/subhook" | |
git -C $repo -c protocol.file.allow=always submodule update | |
repo="./CryptoPkg/Library/OpensslLib/openssl" | |
git -C $repo submodule init | |
git -C $repo config submodule.gost-engine.url "file://$srcdir/engine" | |
git -C $repo config submodule.krb5.url "file://$srcdir/krb5" | |
git -C $repo config submodule.pyca.cryptography.url "file://$srcdir/cryptography" | |
git -C $repo config submodule.wycheproof.url "file://$srcdir/wycheproof" | |
git -C $repo -c protocol.file.allow=always submodule update | |
repo="./CryptoPkg/Library/OpensslLib/openssl/gost-engine" | |
git -C $repo submodule init | |
git -C $repo config submodule.libprov.url "file://$srcdir/libprov" | |
git -C $repo -c protocol.file.allow=always submodule update | |
repo="./MdePkg/Library/MipiSysTLib/mipisyst" | |
git -C $repo submodule init | |
git -C $repo config submodule.external/googletest.url "file://$srcdir/googletest" | |
git -C $repo config submodule.external/pugixml.url "file://$srcdir/pugixml" | |
git -C $repo -c protocol.file.allow=always submodule update | |
repo="./SecurityPkg/DeviceSecurity/SpdmLib/libspdm" | |
git -C $repo submodule init | |
git -C $repo config submodule.os_stub/mbedtlslib/mbedtls.url "file://$srcdir/mbedtls" | |
git -C $repo config submodule.os_stub/openssllib/openssl.url "file://$srcdir/openssl" | |
git -C $repo config submodule.unit_test/cmockalib/cmocka.url "file://$srcdir/cmocka" | |
git -C $repo -c protocol.file.allow=always submodule update | |
repo="./SecurityPkg/DeviceSecurity/SpdmLib/libspdm/os_stub/openssllib/openssl" | |
git -C $repo submodule init | |
git -C $repo config submodule.gost-engine.url "file://$srcdir/engine" | |
git -C $repo config submodule.krb5.url "file://$srcdir/krb5" | |
git -C $repo config submodule.pyca.cryptography.url "file://$srcdir/cryptography" | |
git -C $repo config submodule.wycheproof.url "file://$srcdir/wycheproof" | |
git -C $repo -c protocol.file.allow=always submodule update | |
repo="./SecurityPkg/DeviceSecurity/SpdmLib/libspdm/os_stub/openssllib/openssl/gost-engine" | |
git -C $repo submodule init | |
git -C $repo config submodule.libprov.url "file://$srcdir/libprov" | |
git -C $repo -c protocol.file.allow=always submodule update | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env sh | |
# To be run inside the desired repo (cloned recursively) | |
# propose a repo name based on the url (filename without .git) | |
function repo_name { | |
git config --get remote.origin.url | sed 's|.*/\([^/.]*\)\(.git\)*$|\1|g' | |
} | |
# print commands to update submodules urls to $srcdir (recursive) | |
function configure_repo { | |
[ -f "$1/.gitmodules" ] || return | |
echo " repo=\"$1\"" | |
echo " git -C \$repo submodule init" | |
git -C $1 submodule foreach -q 'echo $name $sm_path' | while read -r sm_name sm_path; do | |
name=$(git -C $1/$sm_path config --get remote.origin.url | sed 's|.*/\([^/.]*\)\(.git\)*$|\1|g') | |
echo " git -C \$repo config submodule.$sm_name.url \"file://\$srcdir/$name\"" | |
done | |
echo " git -C \$repo -c protocol.file.allow=always submodule update" | |
echo "" | |
git -C $1 submodule foreach -q 'echo $sm_path' | while read -r sm_path; do | |
configure_repo $1/$sm_path | |
done | |
} | |
# -- sources -- | |
echo "sources=(" | |
# parent repo | |
git config get remote.origin.url | |
# submodules | |
git submodule foreach --recursive -q 'git -C $toplevel config get submodule.$name.url' | sort -u | sed 's|.*/\([^/.]*\)\(.git\)*$| "\1::git+\0"|g' | |
echo ")" | |
echo "" | |
# -- checksums -- | |
echo "checksums=(" | |
# parent repo | |
echo ' "SKIP"' | |
# submodules | |
git submodule foreach --recursive -q 'echo " \"SKIP\""' | |
echo ")" | |
echo "" | |
# -- prepare -- | |
echo "prepare() {" | |
echo "" | |
configure_repo . | |
echo "}" |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment