ライセンス条件に準拠するために、組み込みLinuxディストリビューションのLGPLv3ライセンスソフトウェアコンポーネントを提供したいと思います。私はルートファイルシステムを構築するためにYoctoを使用しています。リファレンスマニュアルに美しい台本私が使用するもの:
#!/bin/bash
src_release_dir="source-release"
mkdir -p $src_release_dir
for a in tmp-glibc/deploy/sources/*; do
for d in $a/*; do
# Get package name from path
p=`basename $d`
p=${p%-*}
p=${p%-*}
# Only archive GPL packages (update *GPL* regex for your license check)
numfiles=`ls tmp-glibc/deploy/licenses/$p/*LGPLv3 2> /dev/null | wc -l`
if [ $numfiles -gt 1 ]; then
echo Archiving $p
mkdir -p $src_release_dir/$p/source
cp $d/* $src_release_dir/$p/source 2> /dev/null
mkdir -p $src_release_dir/$p/license
cp tmp/deploy/licenses/$p/* $src_release_dir/$p/license 2> /dev/null
fi
done
done
問題は、このスクリプトを使用して次のファイルを検出できないことです。
~/build/build$ ls tmp-glibc/deploy/licenses/qtlocation/*LGPLv3
tmp-glibc/deploy/licenses/qtlocation/LICENSE.LGPLv3
助ける! ?
【書き直す】 助けを借りていくつかの問題を解決しました。shellcheck.net「エコ」を追加しました。
「if」の直前:
#!/bin/bash
src_release_dir="source-release"
mkdir -p $src_release_dir
for a in tmp-glibc/deploy/sources/*; do
for d in $a/*; do
# Get package name from path
p=$(basename "$d")
p=${p%-*}
p=${p%-*}
# Only archive GPL packages (update *GPL* regex for your license check)
numfiles=$(ls tmp-glibc/deploy/licenses/"$p"/*LGPLv3 2> /dev/null | wc -l)
echo "$p"
if [ "$numfiles" -gt 1 ]; then
echo Archiving "$p"
mkdir -p $src_release_dir/"$p"/source
cp "$d"/* $src_release_dir/"$p"/source 2> /dev/null
mkdir -p $src_release_dir/"$p"/license
cp tmp/deploy/licenses/"$p"/* $src_release_dir/"$p"/license 2> /dev/null
fi
done
done
私はここでこれを実行します:
$ ls
bitbake-cookerdaemon.log downloads lgpl.sh source-release sstate-cache tmp-glibc
$ ls tmp-glibc/deploy/sources/
allarch-oe-linux arm-oe-linux-gnueabi x86_64-linux
出力:
./lgpl.sh
bt-enable
ca-certificates
eth0-up
iso-codes
liberation-fonts
linux-firmware
matrix-gui-apps-images
matrix-gui-submenus
os-release
packagegroup-arago-tisdk-graphics
packagegroup-core-ssh-openssh
run-postinsts
.
.
.