From: Michael Olbrich <m.olbrich@pengutronix.de>
To: ptxdist@pengutronix.de
Subject: Re: [ptxdist] [PATCH 2/2] scripts/lib: also create CSV lists on "ptxdist make license-report"
Date: Thu, 29 Mar 2018 11:46:14 +0200 [thread overview]
Message-ID: <20180329094613.e4chicxs4pwkj52m@pengutronix.de> (raw)
In-Reply-To: <1522268587-2408-3-git-send-email-apr@cn-eng.de>
On Wed, Mar 28, 2018 at 10:23:07PM +0200, Andreas Pretzsch wrote:
> When calling "ptxdist make license-report", license reports for
> both the target- and the host-tools-packages are created.
>
> Based upon the license info files created during the regular build
> process, LaTeX files are generated, which are then converted into
> matching PDFs, containing package informations, license tags as well
> as the licenses themselves.
> These are called "report/license-report.pdf" respectively
> "report/license-report-tools.pdf".
>
> Extend this process to also create a list of these packages with the
> most basic fields as CSV:
> "name"|"version"|"licenses"|"flags"
> "somepackage"|"1.2.3"|"Apache-2.0"|"attribution"
> [...]
>
> These are called "report/license-report.csv" respectively
> "report/license-report-tools.csv".
>
> The compliance report and distribution creation, trigger via
> "ptxdist make license-compliance-distribution", is not modified,
> as it essentially contains just a subset of the above packages,
> namely all the Free and Open Source Software.
> This could be extended by a CSV file, too, but it will not aid
> in any verification of the overall distribution, as this has to
> be checked in total, not only with respect to the FOSS parts.
>
> Signed-off-by: Andreas Pretzsch <apr@cn-eng.de>
> ---
> Tested with PTXdist 2016.01.0, but given the minimal differences
> against PTXdist 2018.03.0, I assume this is still fine.
>
> scripts/lib/ptxd_make_license_report.sh | 21 ++++++++++++
> scripts/lib/ptxd_make_world_license.sh | 59 +++++++++++++++++++++++++++++++++
> 2 files changed, 80 insertions(+)
>
> diff --git a/scripts/lib/ptxd_make_license_report.sh b/scripts/lib/ptxd_make_license_report.sh
> index a6410d1..d6570ca 100644
> --- a/scripts/lib/ptxd_make_license_report.sh
> +++ b/scripts/lib/ptxd_make_license_report.sh
> @@ -194,6 +194,27 @@ ptxd_make_license_report() {
> ptxd_make_license_report_footer
> ) > "${ptx_license_target_tex}"
>
> + ptx_license_target_csv="${ptx_report_dir}/${pkg_section}/$(basename "${ptx_license_target%.pdf}.csv")"
> + (
> + local pkg_csv_file
> + ptxd_make_world_license_write_csv_header
> + for pkg in ${@}; do
> + pkg_lic="${ptxd_package_license_association[${pkg}]}"
> + if [ -z ${pkg_lic} ]; then
> + continue
> + fi
> + pkg_lic="${pkg_lic}/${pkg}"
> +
> + pkg_csv_file="${ptx_report_dir}/${pkg_lic}/license-report.csv"
> + if [ -r "${pkg_csv_file}" ]; then
> + cat "${pkg_csv_file}"
> + else
> + ptxd_bailout "no $(ptxd_print_path "${pkg_csv_file}")"
> + fi
> + done
> + ptxd_make_world_license_write_csv_footer
> + ) > "${ptx_license_target_csv}"
> +
Please create separate ptxd_make_license_report_tex /
ptxd_make_license_report_csv functions that are called by
ptxd_make_license_report.
> ptxd_make_license_report_build
> # mv "${ptx_license_target_tex%.tex}.pdf" "${ptx_license_target}"
> }
> diff --git a/scripts/lib/ptxd_make_world_license.sh b/scripts/lib/ptxd_make_world_license.sh
> index bba8ca3..39c696c 100644
> --- a/scripts/lib/ptxd_make_world_license.sh
> +++ b/scripts/lib/ptxd_make_world_license.sh
> @@ -209,6 +209,63 @@ ptxd_make_world_license_write_tex() {
> }
> export -f ptxd_make_world_license_write_tex
>
> +#
> +# echo header for generated CSV:
> +# "name"|"version"|"licenses"|"flags"
> +#
> +ptxd_make_world_license_write_csv_header() {
> + local -r STRING_QUOTE='"'
> + local -r CSV_SEPARATOR='|'
Lower case for local variables. Also, I think a helper to write one line
makes sense. Untested:
helper() {
string_quote='"'
csv_separator='|'
while [ ${#} -gt 0 ]; do
if [ -n "${1}" ]; then
echo -n "${string_quote}${1}${string_quote}"
fi
shift
if [ [ ${#} -gt 0 ]; do
echo -n ${csv_separator}"
fi
done
echo
}
use it here...
> + local l
> + l="${STRING_QUOTE}name${STRING_QUOTE}"
> + l="${l}${CSV_SEPARATOR}"
> + l="${l}${STRING_QUOTE}version${STRING_QUOTE}"
> + l="${l}${CSV_SEPARATOR}"
> + l="${l}${STRING_QUOTE}licenses${STRING_QUOTE}"
> + l="${l}${CSV_SEPARATOR}"
> + l="${l}${STRING_QUOTE}flags${STRING_QUOTE}"
> + l="${l}\n"
> + echo -ne "${l}"
> +}
> +export -f ptxd_make_world_license_write_csv_header
> +#
> +# generate a CSV for the package:
> +# "somepackage"|"1.2.3"|"Apache-2.0"|"attribution"
> +#
> +ptxd_make_world_license_write_csv() {
> + local -r STRING_QUOTE='"'
> + local -r CSV_SEPARATOR='|'
> + local -a flags=( "${!pkg_license_flags[@]}" )
> + local l
> +
> + # not required, seems to be filtered before:
> + #case "${pkg_license}" in
> + #*ignore*)
> + # # ignore this package, e.g. do not list it in the report
> + # return 0
> + # ;;
> + #esac
> +
> + l="${STRING_QUOTE}${pkg_label}${STRING_QUOTE}"
> + l="${l}${CSV_SEPARATOR}"
> + [ -n "${pkg_version}" ] && l="${l}${STRING_QUOTE}${pkg_version}${STRING_QUOTE}"
> + l="${l}${CSV_SEPARATOR}"
> + [ -n "${pkg_license}" ] && l="${l}${STRING_QUOTE}${pkg_license}${STRING_QUOTE}"
> + l="${l}${CSV_SEPARATOR}"
> + [ -n "${flags[*]}" ] && l="${l}${STRING_QUOTE}${flags[*]}${STRING_QUOTE}"
> + l="${l}\n"
> + echo -ne "${l}"
... and here.
Michael
> +}
> +export -f ptxd_make_world_license_write_csv
> +#
> +# echo footer for generated CSV
> +#
> +ptxd_make_world_license_write_csv_footer() {
> + # nothing to to
> + /bin/true
> +}
> +export -f ptxd_make_world_license_write_csv_footer
> +
> # Copy all patches according to the series file
> # $1 full path to the series file
> # $2 source directory
> @@ -465,6 +522,8 @@ changed: ${md5} -> $(md5sum "${lic}" | sed 's/ .*//')
> sed -e 's/%/\\%/g' > "${pkg_license_dir}/license-report.tex" &&
> check_pipe_status &&
>
> + ptxd_make_world_license_write_csv > "${pkg_license_dir}/license-report.csv" &&
> +
> echo "${pkg_license}" > "${pkg_license_dir}/license-name" &&
> if [ "${#pkg_license_flags[@]}" -gt 0 ]; then
> echo "${!pkg_license_flags[@]}" > "${pkg_license_dir}/license-flags"
> --
> 2.9.3
>
>
> _______________________________________________
> ptxdist mailing list
> ptxdist@pengutronix.de
--
Pengutronix e.K. | |
Industrial Linux Solutions | http://www.pengutronix.de/ |
Peiner Str. 6-8, 31137 Hildesheim, Germany | Phone: +49-5121-206917-0 |
Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 |
_______________________________________________
ptxdist mailing list
ptxdist@pengutronix.de
next prev parent reply other threads:[~2018-03-29 9:46 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-03-28 20:23 [ptxdist] [PATCH 0/2] license-report: also create CSV lists Andreas Pretzsch
2018-03-28 20:23 ` [ptxdist] [PATCH 1/2] scripts/lib: make_world_license: add suffix "_tex" to ptxd_make_world_license_write Andreas Pretzsch
2018-03-28 20:23 ` [ptxdist] [PATCH 2/2] scripts/lib: also create CSV lists on "ptxdist make license-report" Andreas Pretzsch
2018-03-29 9:46 ` Michael Olbrich [this message]
2018-03-29 12:08 ` Andreas Pretzsch
2018-03-29 13:51 ` Michael Olbrich
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20180329094613.e4chicxs4pwkj52m@pengutronix.de \
--to=m.olbrich@pengutronix.de \
--cc=ptxdist@pengutronix.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox