라이센스 조건을 준수하기 위해 임베디드 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
.
.
.