SW360/SPDX Liteを利用して、AGLリリースソフトを簡単に確認出来るようにする

この記事は[OpenChain Advent Calender](https://qiita.com/advent-calendar/2019/openchainjapanswg)の19日目の記事です

#はじめに
車載向けOSSコミュニティの[AGL(AutomotiveGradeLinux)](https://www.automotivelinux.org/)で使用しているソフトウェアについて、[OpenChain](https://www.openchainproject.org/)にて議論が進められている[SW360](https://projects.eclipse.org/proposals/sw360)と[SPDX Lite](https://spdx.org/)を利用して、AGLで使用しているソフトウェアを誰でも簡単に確認出来る方法を紹介します
尚今回の内容については2020CESのAGLデモブース内のOpenChainブースでも紹介予定です
[OpenChain and AGL Collaborate to Facilitate Open Source Compliance in Automotive Production](https://www.openchainproject.org/news/2019/12/05/openchain-and-agl-collaborate-to-facilitate-open-source-compliance-in-automotive-production)

#AGLのリリースソフトウェアについて
AGLでは年2回ソフトウェアをリリースしており、現状の最新ソフトはIcefish RC3 (v8.99.3)が年明けの正式リリースに向けて、リリースの準備が進められています。AGLリリースノートについて、この[ページ](https://wiki.automotivelinux.org/agl-distro/release-notes)を参照して下さい。
ビルド済みのソフトについても公開されており、Yoctoビルド時に出力される[license.manifest](https://download.automotivelinux.org/AGL/release/icefish/8.99.2/qemuarm64/deploy/licenses/agl-demo-platform-crosssdk-qemuarm64-20191206223152/license.manifest)を確認すれば、AGLでどのようなソフトウェアが使用されているか、下記のように確認する事が出来ます

```PACKAGE NAME: af-binder
PACKAGE VERSION: master+gitAUTOINC+82a9d79621
RECIPE NAME: af-binder
LICENSE: Apache-2.0
```
このように
・パッケージ名
・バージョン
・ライセンス
を確認する事が出来ますが、AGLでは1,500～1,600位のソフトウェアが使用されており、license.manifestを確認するのはそれなりに苦労するため、SW360/SPDX Liteを利用して誰でも簡単にAGLのリリースソフトウェアを確認出来るようにしたいと思います

#今回の環境の全体イメージ
SW360にはSPDXをインポートして使用する想定のため、[meta-spdxscanner](https://github.com/dl9pf/meta-spdxscanner)を利用して、AGLリリースソフトからSPDXファイルを作成します。SW360では[SW360tools](https://github.com/ubinux/SW360tools)を利用してSPDX Liteをアウトプット可能なため、EXCELを使用してAGLのソフトウェアを誰でも簡単に確認する事が可能です
![無題.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/152253/3e03a641-9684-3a8c-4941-2543a13e3409.png)

#環境のセットアップ
##meta-spdxscanner

AGLでは下記のように[meta-spdxscanner](https://git.automotivelinux.org/AGL/AGL-repo/tree/default.xml)がサポートされていますので、
```  <!-- meta-spdxscanner - support for fossology -->
  <project name="dl9pf/meta-spdxscanner" path="external/meta-spdxscanner" remote="github" revision="483f79e66eb76b0f1bebe1e3a0a0327b0ba59f16" upstream="thud"/>
```
spdxscannerが使用するfossdriverをセットアップします。セットアップ方法は[10日目](https://qiita.com/y-ashiduka/items/86a88e4138a7fadc14a1)の記事を参考にして下さい
セットアップ完了後、https://github.com/dl9pf/meta-spdxscanner を参考に local.conf を編集しbitbakeを実行して、SPDXファイルを出力します
```$ bitbake agl-demo-platform –-runall=spdx # will generate all agl-demo-platform spdx
$ bitbake package_name -c spdx # will generate spdx of a specified package
```

##SW360
SW360のセットアップについては、この[記事](https://qiita.com/K-Hama/items/90a6105a16400ce3e718)を参考にセットアップを実施します
今回はSW360からSPDX Lite(EXCEL)を出力したいので、[SW360tools](https://github.com/ubinux/SW360tools)を追加でセットアップします

#SPDXファイルの取り込みから、SPDX Liteの出力
環境のセットアップが完了したら、生成したSPDXファイルをSW360にインポートします
![無題.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/152253/e1167226-b004-5d3e-8f04-e8f81e6cb679.png)

インポートが完了するとSW360にインポートしたソフトウェアが表示されます
![無題.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/152253/0eb60f5e-b225-ba6c-6212-41e30a4c8e07.png)

SW360toolsを使用すると出力するSPDXの項目を選択する事が可能となり、SPDX Liteなど必要な情報だけを最小限にしてcsv形式で出力する事が可能です
![無題.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/152253/40eec3f4-459f-57db-2d5f-98c7f8b28fb8.png)

SW360が使用出来ない環境でも、Excelで出力したファイルをいつでも簡単に参照する事が可能となります
![無題.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/152253/292c6f11-4cb0-73a3-932e-707ec7164883.png)

#さいごに
駆け足での紹介になってしまいましたが、実際の開発現場に使用する際に課題と感じた事を下記します
・meta-spdxscannerを使用してSPDXを出力する時間が、bitbakeのビルド時間よりも長く、CIに組み込むには課題がある
・SPDXファイルをSW360にインポートする時に、ファイル数が100を超えると読み込み途中でフリーズが発生する時がある
・Dockerfileのメンテナンスが遅れており、環境構築にコストがかかる
他にも運用面での課題もあるかと思いますが、AGLなどのオープンな場所で少しずつFBしながら、実績を積みたいと思います

#明日のテーマは・・・
明日は「OSSのコンプライアンス体制構築をするうえでの留意事項」について
Promotion SWGにも参加頂いているDLA Piperのパートナー弁護士である野中さんにご担当頂く予定です