text:
# base recipe: meta/recipes-core/systemd/systemd_241.bb
# base branch: warrior
# base commit: 08dcc9965ba8979e46ae53334417bc198e6e9705

require systemd.inc
inherit debian-package

PROVIDES = "udev"

PE = "1"

DEPENDS = "intltool-native gperf-native libcap util-linux"

SECTION = "base/shell"

inherit useradd pkgconfig meson perlnative update-rc.d update-alternatives qemu systemd gettext bash-completion manpages distro_features_check

# As this recipe builds udev, respect systemd being in DISTRO_FEATURES so
# that we don't build both udev and systemd in world builds.
REQUIRED_DISTRO_FEATURES = "systemd"

FILESPATH_append = ":${COREBASE}/meta/recipes-core/systemd/systemd"

SRC_URI += "file://touchscreen.rules \
           file://00-create-volatile.conf \
           file://init \
           file://0001-binfmt-Don-t-install-dependency-links-at-install-tim.patch \
           file://0002-use-lnr-wrapper-instead-of-looking-for-relative-opti.patch \
           file://0003-implment-systemd-sysv-install-for-OE.patch \
           file://0004-rules-whitelist-hd-devices.patch \
           file://0005-rules-watch-metadata-changes-in-ide-devices.patch \
           file://0001-meson-declare-version.h-as-dep-for-various-targets-t.patch \
           file://0001-meson-declare-version.h-as-dependency-for-systemd.patch \
           "

# patches needed by musl
SRC_URI_append_libc-musl = " ${SRC_URI_MUSL}"
SRC_URI_MUSL = "file://0001-Use-getenv-when-secure-versions-are-not-available.patch \
               file://0002-don-t-use-glibc-specific-qsort_r.patch \
               file://0003-missing_type.h-add-__compare_fn_t-and-comparison_fn_.patch \
               file://0004-add-fallback-parse_printf_format-implementation.patch \
               file://0005-src-basic-missing.h-check-for-missing-strndupa.patch \
               file://0006-Include-netinet-if_ether.h.patch \
               file://0007-don-t-fail-if-GLOB_BRACE-and-GLOB_ALTDIRFUNC-is-not.patch \
               file://0008-add-missing-FTW_-macros-for-musl.patch \
               file://0009-socket-util-don-t-fail-if-libc-doesn-t-support-IDN.patch \
               file://0010-fix-missing-of-__register_atfork-for-non-glibc-build.patch \
               file://0011-Use-uintmax_t-for-handling-rlim_t.patch \
               file://0012-fix-missing-ULONG_LONG_MAX-definition-in-case-of-mus.patch \
               file://0013-test-hexdecoct.c-Include-missing.h-for-strndupa.patch \
               file://0014-test-sizeof.c-Disable-tests-for-missing-typedefs-in-.patch \
               file://0015-don-t-pass-AT_SYMLINK_NOFOLLOW-flag-to-faccessat.patch \
               file://0016-Define-glibc-compatible-basename-for-non-glibc-syste.patch \
               file://0017-Do-not-disable-buffering-when-writing-to-oom_score_a.patch \
               file://0018-distinguish-XSI-compliant-strerror_r-from-GNU-specif.patch \
               file://0019-Hide-__start_BUS_ERROR_MAP-and-__stop_BUS_ERROR_MAP.patch \
               file://0020-missing_type.h-add-__compar_d_fn_t-definition.patch \
               file://0021-avoid-redefinition-of-prctl_mm_map-structure.patch \
               file://0022-include-sys-wait.h-to-avoid-compile-failure.patch \
               file://0023-socket-util.h-include-string.h.patch \
               file://0024-test-json.c-define-M_PIl.patch \
               file://0001-do-not-disable-buffer-in-writing-files.patch \
               "

PAM_PLUGINS = " \
    pam-plugin-unix \
    pam-plugin-loginuid \
    pam-plugin-keyinit \
"

PACKAGECONFIG ??= " \
    ${@bb.utils.filter('DISTRO_FEATURES', 'efi ldconfig pam selinux usrmerge polkit', d)} \
    ${@bb.utils.contains('DISTRO_FEATURES', 'wifi', 'rfkill', '', d)} \
    ${@bb.utils.contains('DISTRO_FEATURES', 'x11', 'xkbcommon', '', d)} \
    acl \
    backlight \
    binfmt \
    firstboot \
    gshadow \
    hibernate \
    hostnamed \
    ima \
    kmod \
    localed \
    logind \
    machined \
    myhostname \
    networkd \
    nss \
    nss-mymachines \
    nss-resolve \
    quotacheck \
    randomseed \
    resolved \
    smack \
    sysusers \
    timedated \
    timesyncd \
    utmp \
    vconsole \
    xz \
"

PACKAGECONFIG_remove_libc-musl = " \
    gshadow \
    localed \
    myhostname \
    nss \
    nss-mymachines \
    nss-resolve \
    resolved \
    smack \
    sysusers \
    utmp \
"

# Use the upstream systemd serial-getty@.service and rely on
# systemd-getty-generator instead of using the OE-core specific
# systemd-serialgetty.bb - not enabled by default.
PACKAGECONFIG[serial-getty-generator] = ""

PACKAGECONFIG[acl] = "-Dacl=true,-Dacl=false,acl"
PACKAGECONFIG[audit] = "-Daudit=true,-Daudit=false,audit"
PACKAGECONFIG[backlight] = "-Dbacklight=true,-Dbacklight=false"
PACKAGECONFIG[binfmt] = "-Dbinfmt=true,-Dbinfmt=false"
PACKAGECONFIG[bzip2] = "-Dbzip2=true,-Dbzip2=false,bzip2"
PACKAGECONFIG[coredump] = "-Dcoredump=true,-Dcoredump=false"
PACKAGECONFIG[cryptsetup] = "-Dlibcryptsetup=true,-Dlibcryptsetup=false,cryptsetup"
PACKAGECONFIG[dbus] = "-Ddbus=true,-Ddbus=false,dbus"
PACKAGECONFIG[efi] = "-Defi=true,-Defi=false"
PACKAGECONFIG[elfutils] = "-Delfutils=true,-Delfutils=false,elfutils"
PACKAGECONFIG[firstboot] = "-Dfirstboot=true,-Dfirstboot=false"
# Sign the journal for anti-tampering
PACKAGECONFIG[gcrypt] = "-Dgcrypt=true,-Dgcrypt=false,libgcrypt"
PACKAGECONFIG[gnutls] = "-Dgnutls=true,-Dgnutls=false,gnutls"
PACKAGECONFIG[gshadow] = "-Dgshadow=true,-Dgshadow=false"
PACKAGECONFIG[hibernate] = "-Dhibernate=true,-Dhibernate=false"
PACKAGECONFIG[hostnamed] = "-Dhostnamed=true,-Dhostnamed=false"
PACKAGECONFIG[ima] = "-Dima=true,-Dima=false"
# importd requires curl/xz/zlib/bzip2/gcrypt
PACKAGECONFIG[importd] = "-Dimportd=true,-Dimportd=false"
# Update NAT firewall rules
PACKAGECONFIG[iptc] = "-Dlibiptc=true,-Dlibiptc=false,iptables"
PACKAGECONFIG[journal-upload] = "-Dlibcurl=true,-Dlibcurl=false,curl"
PACKAGECONFIG[kmod] = "-Dkmod=true,-Dkmod=false,kmod"
PACKAGECONFIG[ldconfig] = "-Dldconfig=true,-Dldconfig=false"
PACKAGECONFIG[libidn] = "-Dlibidn=true,-Dlibidn=false,libidn"
PACKAGECONFIG[localed] = "-Dlocaled=true,-Dlocaled=false"
PACKAGECONFIG[logind] = "-Dlogind=true,-Dlogind=false"
PACKAGECONFIG[lz4] = "-Dlz4=true,-Dlz4=false,lz4"
PACKAGECONFIG[machined] = "-Dmachined=true,-Dmachined=false"
PACKAGECONFIG[manpages] = "-Dman=true,-Dman=false,libxslt-native xmlto-native docbook-xml-dtd4-native docbook-xsl-stylesheets-native"
PACKAGECONFIG[microhttpd] = "-Dmicrohttpd=true,-Dmicrohttpd=false,libmicrohttpd"
PACKAGECONFIG[myhostname] = "-Dnss-myhostname=true,-Dnss-myhostname=false"
PACKAGECONFIG[networkd] = "-Dnetworkd=true,-Dnetworkd=false"
PACKAGECONFIG[nss] = "-Dnss-systemd=true,-Dnss-systemd=false"
PACKAGECONFIG[nss-mymachines] = "-Dnss-mymachines=true,-Dnss-mymachines=false"
PACKAGECONFIG[nss-resolve] = "-Dnss-resolve=true,-Dnss-resolve=false"
PACKAGECONFIG[openssl] = "-Dopenssl=true,-Dopenssl=false,openssl"
PACKAGECONFIG[pam] = "-Dpam=true,-Dpam=false,libpam,${PAM_PLUGINS}"
PACKAGECONFIG[pcre2] = "-Dpcre2=true,-Dpcre2=false,libpcre2"
PACKAGECONFIG[polkit] = "-Dpolkit=true,-Dpolkit=false"
PACKAGECONFIG[portabled] = "-Dportabled=true,-Dportabled=false"
PACKAGECONFIG[qrencode] = "-Dqrencode=true,-Dqrencode=false,qrencode"
PACKAGECONFIG[quotacheck] = "-Dquotacheck=true,-Dquotacheck=false"
PACKAGECONFIG[randomseed] = "-Drandomseed=true,-Drandomseed=false"
PACKAGECONFIG[resolved] = "-Dresolve=true,-Dresolve=false"
PACKAGECONFIG[rfkill] = "-Drfkill=true,-Drfkill=false"
# libseccomp is found in meta-security
PACKAGECONFIG[seccomp] = "-Dseccomp=true,-Dseccomp=false,libseccomp"
PACKAGECONFIG[selinux] = "-Dselinux=true,-Dselinux=false,libselinux,initscripts-sushell"
PACKAGECONFIG[smack] = "-Dsmack=true,-Dsmack=false"
PACKAGECONFIG[sysusers] = "-Dsysusers=true,-Dsysusers=false"
PACKAGECONFIG[time-epoch] = "-Dtime-epoch=0,,"
PACKAGECONFIG[timedated] = "-Dtimedated=true,-Dtimedated=false"
PACKAGECONFIG[timesyncd] = "-Dtimesyncd=true,-Dtimesyncd=false"
PACKAGECONFIG[usrmerge] = "-Dsplit-usr=false,-Dsplit-usr=true"
PACKAGECONFIG[sbinmerge] = "-Dsplit-bin=false,-Dsplit-bin=true"
PACKAGECONFIG[utmp] = "-Dutmp=true,-Dutmp=false"
PACKAGECONFIG[valgrind] = "-DVALGRIND=1,,valgrind"
PACKAGECONFIG[vconsole] = "-Dvconsole=true,-Dvconsole=false,,${PN}-vconsole-setup"
# Verify keymaps on locale change
PACKAGECONFIG[xkbcommon] = "-Dxkbcommon=true,-Dxkbcommon=false,libxkbcommon"
PACKAGECONFIG[xz] = "-Dxz=true,-Dxz=false,xz"
PACKAGECONFIG[zlib] = "-Dzlib=true,-Dzlib=false,zlib"

# Helper variables to clarify locations.  This mirrors the logic in systemd's
# build system.
rootprefix ?= "${root_prefix}"
rootlibdir ?= "${base_libdir}"
rootlibexecdir = "${rootprefix}/lib"

# This links udev statically with systemd helper library.
# Otherwise udev package would depend on systemd package (which has the needed shared library),
# and always pull it into images.
EXTRA_OEMESON += "-Dlink-udev-shared=false"

EXTRA_OEMESON += "-Dnobody-user=nobody \
                  -Dnobody-group=nobody \
                  -Drootlibdir=${rootlibdir} \
                  -Drootprefix=${rootprefix} \
                  -Dsysvrcnd-path=${sysconfdir} \
                  "

# Hardcode target binary paths to avoid using paths from sysroot
EXTRA_OEMESON += "-Dkexec-path=${sbindir}/kexec \
                  -Dkmod-path=${base_bindir}/kmod \
                  -Dmount-path=${base_bindir}/mount \
                  -Dquotacheck-path=${sbindir}/quotacheck \
                  -Dquotaon-path=${sbindir}/quotaon \
                  -Dsulogin-path=${base_sbindir}/sulogin \
                  -Dumount-path=${base_bindir}/umount"

do_install() {
	meson_do_install
	install -d ${D}/${base_sbindir}
	if ${@bb.utils.contains('PACKAGECONFIG', 'serial-getty-generator', 'false', 'true', d)}; then
		# Provided by a separate recipe
		rm ${D}${systemd_unitdir}/system/serial-getty* -f
	fi

	# Provide support for initramfs
	[ ! -e ${D}/init ] && ln -s ${rootlibexecdir}/systemd/systemd ${D}/init
	[ ! -e ${D}/${base_sbindir}/udevd ] && ln -s ${rootlibexecdir}/systemd/systemd-udevd ${D}/${base_sbindir}/udevd

	install -d ${D}${sysconfdir}/udev/rules.d/
	install -d ${D}${sysconfdir}/tmpfiles.d
	install -m 0644 ${WORKDIR}/*.rules ${D}${sysconfdir}/udev/rules.d/
	install -d ${D}${libdir}/pkgconfig
	install -m 0644 ${B}/src/udev/udev.pc ${D}${libdir}/pkgconfig/

	install -m 0644 ${WORKDIR}/00-create-volatile.conf ${D}${sysconfdir}/tmpfiles.d/

	if ${@bb.utils.contains('DISTRO_FEATURES','sysvinit','true','false',d)}; then
		install -d ${D}${sysconfdir}/init.d
		install -m 0755 ${WORKDIR}/init ${D}${sysconfdir}/init.d/systemd-udevd
		sed -i s%@UDEVD@%${rootlibexecdir}/systemd/systemd-udevd% ${D}${sysconfdir}/init.d/systemd-udevd
	fi

	chown root:systemd-journal ${D}/${localstatedir}/log/journal

	# Delete journal README, as log can be symlinked inside volatile.
	rm -f ${D}/${localstatedir}/log/README

	# journal-remote creates this at start
	rm -rf ${D}/${localstatedir}/log/journal/remote

	install -d ${D}${systemd_unitdir}/system/graphical.target.wants
	install -d ${D}${systemd_unitdir}/system/multi-user.target.wants
	install -d ${D}${systemd_unitdir}/system/poweroff.target.wants
	install -d ${D}${systemd_unitdir}/system/reboot.target.wants
	install -d ${D}${systemd_unitdir}/system/rescue.target.wants

	# Create symlinks for systemd-update-utmp-runlevel.service
	if ${@bb.utils.contains('PACKAGECONFIG', 'utmp', 'true', 'false', d)}; then
		ln -sf ../systemd-update-utmp-runlevel.service ${D}${systemd_unitdir}/system/graphical.target.wants/systemd-update-utmp-runlevel.service
		ln -sf ../systemd-update-utmp-runlevel.service ${D}${systemd_unitdir}/system/multi-user.target.wants/systemd-update-utmp-runlevel.service
		ln -sf ../systemd-update-utmp-runlevel.service ${D}${systemd_unitdir}/system/poweroff.target.wants/systemd-update-utmp-runlevel.service
		ln -sf ../systemd-update-utmp-runlevel.service ${D}${systemd_unitdir}/system/reboot.target.wants/systemd-update-utmp-runlevel.service
		ln -sf ../systemd-update-utmp-runlevel.service ${D}${systemd_unitdir}/system/rescue.target.wants/systemd-update-utmp-runlevel.service
	fi

	# this file is needed to exist if networkd is disabled but timesyncd is still in use since timesyncd checks it
	# for existence else it fails
	if [ -s ${D}${exec_prefix}/lib/tmpfiles.d/systemd.conf ]; then
		${@bb.utils.contains('PACKAGECONFIG', 'networkd', ':', 'sed -i -e "\$ad /run/systemd/netif/links 0755 root root -" ${D}${exec_prefix}/lib/tmpfiles.d/systemd.conf', d)}
	fi
	if ! ${@bb.utils.contains('PACKAGECONFIG', 'resolved', 'true', 'false', d)}; then
		echo 'L! ${sysconfdir}/resolv.conf - - - - ../run/systemd/resolve/resolv.conf' >>${D}${exec_prefix}/lib/tmpfiles.d/etc.conf
		echo 'd /run/systemd/resolve 0755 root root -' >>${D}${exec_prefix}/lib/tmpfiles.d/systemd.conf
		echo 'f /run/systemd/resolve/resolv.conf 0644 root root' >>${D}${exec_prefix}/lib/tmpfiles.d/systemd.conf
		ln -s ../run/systemd/resolve/resolv.conf ${D}${sysconfdir}/resolv-conf.systemd
	else
		sed -i -e "s%^L! /etc/resolv.conf.*$%L! /etc/resolv.conf - - - - ../run/systemd/resolve/resolv.conf%g" ${D}${exec_prefix}/lib/tmpfiles.d/etc.conf
		ln -s ../run/systemd/resolve/resolv.conf ${D}${sysconfdir}/resolv-conf.systemd
	fi
	install -Dm 0755 ${S}/src/systemctl/systemd-sysv-install.SKELETON ${D}${systemd_unitdir}/systemd-sysv-install

	# If polkit is setup fixup permissions and ownership
	if ${@bb.utils.contains('PACKAGECONFIG', 'polkit', 'true', 'false', d)}; then
		if [ -d ${D}${datadir}/polkit-1/rules.d ]; then
			chmod 700 ${D}${datadir}/polkit-1/rules.d
			chown polkitd:root ${D}${datadir}/polkit-1/rules.d
		fi
	fi

	# conf files are handled by systemd-conf
	rm -f ${D}${sysconfdir}/machine-id
	rm -f ${D}${sysconfdir}/systemd/coredump.conf
	rm -f ${D}${sysconfdir}/systemd/journald.conf
	rm -f ${D}${sysconfdir}/systemd/logind.conf
	rm -f ${D}${sysconfdir}/systemd/system.conf
	rm -f ${D}${sysconfdir}/systemd/user.conf

	# duplicate udevadm for postinst script
	install -d ${D}${libexecdir}
	ln ${D}${base_bindir}/udevadm ${D}${libexecdir}/${MLPREFIX}udevadm
}

python populate_packages_prepend (){
    systemdlibdir = d.getVar("rootlibdir")
    do_split_packages(d, systemdlibdir, '^lib(.*)\.so\.*', 'lib%s', 'Systemd %s library', extra_depends='', allow_links=True)
}
PACKAGES_DYNAMIC += "^lib(udev|systemd|nss).*"

PACKAGES =+ "\
    ${PN}-gui \
    ${PN}-vconsole-setup \
    ${PN}-initramfs \
    ${PN}-analyze \
    ${PN}-kernel-install \
    ${PN}-rpm-macros \
    ${PN}-binfmt \
    ${PN}-zsh-completion \
    ${PN}-xorg-xinitrc \
    ${PN}-container \
    ${PN}-journal-gatewayd \
    ${PN}-journal-upload \
    ${PN}-journal-remote \
    ${PN}-extra-utils \
"

SUMMARY_${PN}-container = "Tools for containers and VMs"
DESCRIPTION_${PN}-container = "Systemd tools to spawn and manage containers and virtual machines."

SUMMARY_${PN}-journal-gatewayd = "HTTP server for journal events"
DESCRIPTION_${PN}-journal-gatewayd = "systemd-journal-gatewayd serves journal events over the network. Clients must connect using HTTP. The server listens on port 19531 by default."

SUMMARY_${PN}-journal-upload = "Send journal messages over the network"
DESCRIPTION_${PN}-journal-upload = "systemd-journal-upload uploads journal entries to a specified URL."

SUMMARY_${PN}-journal-remote = "Receive journal messages over the network"
DESCRIPTION_${PN}-journal-remote = "systemd-journal-remote is a command to receive serialized journal events and store them to journal files."

SYSTEMD_PACKAGES = "${@bb.utils.contains('PACKAGECONFIG', 'binfmt', '${PN}-binfmt', '', d)} \
                    ${@bb.utils.contains('PACKAGECONFIG', 'microhttpd', '${PN}-journal-gatewayd', '', d)} \
                    ${@bb.utils.contains('PACKAGECONFIG', 'microhttpd', '${PN}-journal-remote', '', d)} \
                    ${@bb.utils.contains('PACKAGECONFIG', 'journal-upload', '${PN}-journal-upload', '', d)} \
"
SYSTEMD_SERVICE_${PN}-binfmt = "systemd-binfmt.service"

USERADD_PACKAGES = "${PN} ${PN}-extra-utils \
                    ${@bb.utils.contains('PACKAGECONFIG', 'microhttpd', '${PN}-journal-gateway', '', d)} \
                    ${@bb.utils.contains('PACKAGECONFIG', 'microhttpd', '${PN}-journal-remote', '', d)} \
                    ${@bb.utils.contains('PACKAGECONFIG', 'journal-upload', '${PN}-journal-upload', '', d)} \
"
GROUPADD_PARAM_${PN} = "-r systemd-journal"
USERADD_PARAM_${PN} += "${@bb.utils.contains('PACKAGECONFIG', 'coredump', '--system -d / -M --shell /bin/nologin systemd-coredump;', '', d)}"
USERADD_PARAM_${PN} += "${@bb.utils.contains('PACKAGECONFIG', 'networkd', '--system -d / -M --shell /bin/nologin systemd-network;', '', d)}"
USERADD_PARAM_${PN} += "${@bb.utils.contains('PACKAGECONFIG', 'polkit', '--system --no-create-home --user-group --home-dir ${sysconfdir}/polkit-1 polkitd;', '', d)}"
USERADD_PARAM_${PN} += "${@bb.utils.contains('PACKAGECONFIG', 'resolved', '--system -d / -M --shell /bin/nologin systemd-resolve;', '', d)}"
USERADD_PARAM_${PN} += "${@bb.utils.contains('PACKAGECONFIG', 'timesyncd', '--system -d / -M --shell /bin/nologin systemd-timesync;', '', d)}"
USERADD_PARAM_${PN}-extra-utils = "--system -d / -M --shell /bin/nologin systemd-bus-proxy"
USERADD_PARAM_${PN}-journal-gateway = "--system -d / -M --shell /bin/nologin systemd-journal-gateway"
USERADD_PARAM_${PN}-journal-remote = "--system -d / -M --shell /bin/nologin systemd-journal-remote"
USERADD_PARAM_${PN}-journal-upload = "--system -d / -M --shell /bin/nologin systemd-journal-upload"

FILES_${PN}-analyze = "${bindir}/systemd-analyze"

FILES_${PN}-initramfs = "/init"
RDEPENDS_${PN}-initramfs = "${PN}"

FILES_${PN}-gui = "${bindir}/systemadm"

FILES_${PN}-vconsole-setup = "${rootlibexecdir}/systemd/systemd-vconsole-setup \
                              ${systemd_unitdir}/system/systemd-vconsole-setup.service \
                              ${systemd_unitdir}/system/sysinit.target.wants/systemd-vconsole-setup.service"

RDEPENDS_${PN}-kernel-install += "bash"
FILES_${PN}-kernel-install = "${bindir}/kernel-install \
                              ${sysconfdir}/kernel/ \
                              ${exec_prefix}/lib/kernel \
                             "
FILES_${PN}-rpm-macros = "${exec_prefix}/lib/rpm \
                         "

FILES_${PN}-xorg-xinitrc = "${sysconfdir}/X11/xinit/xinitrc.d/*"

FILES_${PN}-zsh-completion = "${datadir}/zsh/site-functions"

FILES_${PN}-binfmt = "${sysconfdir}/binfmt.d/ \
                      ${exec_prefix}/lib/binfmt.d \
                      ${rootlibexecdir}/systemd/systemd-binfmt \
                      ${systemd_unitdir}/system/proc-sys-fs-binfmt_misc.* \
                      ${systemd_unitdir}/system/systemd-binfmt.service"
RRECOMMENDS_${PN}-binfmt = "kernel-module-binfmt-misc"

RRECOMMENDS_${PN}-vconsole-setup = "kbd kbd-consolefonts kbd-keymaps"

FILES_${PN}-journal-gatewayd = "${rootlibexecdir}/systemd/systemd-journal-gatewayd \
                                ${systemd_system_unitdir}/systemd-journal-gatewayd.service \
                                ${systemd_system_unitdir}/systemd-journal-gatewayd.socket \
                                ${systemd_system_unitdir}/sockets.target.wants/systemd-journal-gatewayd.socket \
                                ${datadir}/systemd/gatewayd/browse.html \
                               "
SYSTEMD_SERVICE_${PN}-journal-gatewayd = "systemd-journal-gatewayd.socket"

FILES_${PN}-journal-upload = "${rootlibexecdir}/systemd/systemd-journal-upload \
                              ${systemd_system_unitdir}/systemd-journal-upload.service \
                              ${sysconfdir}/systemd/journal-upload.conf \
                             "
SYSTEMD_SERVICE_${PN}-journal-upload = "systemd-journal-upload.service"

FILES_${PN}-journal-remote = "${rootlibexecdir}/systemd/systemd-journal-remote \
                              ${sysconfdir}/systemd/journal-remote.conf \
                              ${systemd_system_unitdir}/systemd-journal-remote.service \
                              ${systemd_system_unitdir}/systemd-journal-remote.socket \
                             "
SYSTEMD_SERVICE_${PN}-remote = "systemd-journal-remote.socket"

FILES_${PN}-container = "${sysconfdir}/dbus-1/system.d/org.freedesktop.import1.conf \
                         ${sysconfdir}/dbus-1/system.d/org.freedesktop.machine1.conf \
                         ${base_bindir}/machinectl \
                         ${bindir}/systemd-nspawn \
                         ${nonarch_libdir}/systemd/import-pubring.gpg \
                         ${systemd_system_unitdir}/busnames.target.wants/org.freedesktop.import1.busname \
                         ${systemd_system_unitdir}/busnames.target.wants/org.freedesktop.machine1.busname \
                         ${systemd_system_unitdir}/local-fs.target.wants/var-lib-machines.mount \
                         ${systemd_system_unitdir}/machine.slice \
                         ${systemd_system_unitdir}/machines.target \
                         ${systemd_system_unitdir}/org.freedesktop.import1.busname \
                         ${systemd_system_unitdir}/org.freedesktop.machine1.busname \
                         ${systemd_system_unitdir}/systemd-importd.service \
                         ${systemd_system_unitdir}/systemd-machined.service \
                         ${systemd_system_unitdir}/dbus-org.freedesktop.machine1.service \
                         ${systemd_system_unitdir}/var-lib-machines.mount \
                         ${rootlibexecdir}/systemd/systemd-import \
                         ${rootlibexecdir}/systemd/systemd-importd \
                         ${rootlibexecdir}/systemd/systemd-machined \
                         ${rootlibexecdir}/systemd/systemd-pull \
                         ${exec_prefix}/lib/tmpfiles.d/systemd-nspawn.conf \
                         ${systemd_system_unitdir}/systemd-nspawn@.service \
                         ${libdir}/libnss_mymachines.so.2 \
                         ${datadir}/dbus-1/system-services/org.freedesktop.import1.service \
                         ${datadir}/dbus-1/system-services/org.freedesktop.machine1.service \
                         ${datadir}/dbus-1/system.d/org.freedesktop.import1.conf \
                         ${datadir}/dbus-1/system.d/org.freedesktop.machine1.conf \
                         ${datadir}/polkit-1/actions/org.freedesktop.import1.policy \
                         ${datadir}/polkit-1/actions/org.freedesktop.machine1.policy \
                        "

RRECOMMENDS_${PN}-container += "\
                         ${PN}-journal-upload \
                         ${PN}-journal-remote \
                         ${PN}-journal-gatewayd \
                        "

FILES_${PN}-extra-utils = "\
                        ${base_bindir}/systemd-escape \
                        ${base_bindir}/systemd-inhibit \
                        ${bindir}/systemd-detect-virt \
                        ${bindir}/systemd-path \
                        ${bindir}/systemd-run \
                        ${bindir}/systemd-cat \
                        ${bindir}/systemd-delta \
                        ${bindir}/systemd-cgls \
                        ${bindir}/systemd-cgtop \
                        ${bindir}/systemd-stdio-bridge \
                        ${base_bindir}/systemd-ask-password \
                        ${base_bindir}/systemd-tty-ask-password-agent \
                        ${systemd_unitdir}/system/systemd-ask-password-console.path \
                        ${systemd_unitdir}/system/systemd-ask-password-console.service \
                        ${systemd_unitdir}/system/systemd-ask-password-wall.path \
                        ${systemd_unitdir}/system/systemd-ask-password-wall.service \
                        ${systemd_unitdir}/system/sysinit.target.wants/systemd-ask-password-console.path \
                        ${systemd_unitdir}/system/sysinit.target.wants/systemd-ask-password-wall.path \
                        ${systemd_unitdir}/system/multi-user.target.wants/systemd-ask-password-wall.path \
                        ${rootlibexecdir}/systemd/systemd-resolve-host \
                        ${rootlibexecdir}/systemd/systemd-ac-power \
                        ${rootlibexecdir}/systemd/systemd-activate \
                        ${rootlibexecdir}/systemd/systemd-bus-proxyd \
                        ${systemd_unitdir}/system/systemd-bus-proxyd.service \
                        ${systemd_unitdir}/system/systemd-bus-proxyd.socket \
                        ${rootlibexecdir}/systemd/systemd-socket-proxyd \
                        ${rootlibexecdir}/systemd/systemd-reply-password \
                        ${rootlibexecdir}/systemd/systemd-sleep \
                        ${rootlibexecdir}/systemd/system-sleep \
                        ${systemd_unitdir}/system/systemd-hibernate.service \
                        ${systemd_unitdir}/system/systemd-hybrid-sleep.service \
                        ${systemd_unitdir}/system/systemd-suspend.service \
                        ${systemd_unitdir}/system/sleep.target \
                        ${rootlibexecdir}/systemd/systemd-initctl \
                        ${systemd_unitdir}/system/systemd-initctl.service \
                        ${systemd_unitdir}/system/systemd-initctl.socket \
                        ${systemd_unitdir}/system/sockets.target.wants/systemd-initctl.socket \
                        ${rootlibexecdir}/systemd/system-generators/systemd-gpt-auto-generator \
                        ${rootlibexecdir}/systemd/systemd-cgroups-agent \
"

FILES_${PN} = " ${base_bindir}/* \
                ${base_sbindir}/shutdown \
                ${base_sbindir}/halt \
                ${base_sbindir}/poweroff \
                ${base_sbindir}/runlevel \
                ${base_sbindir}/telinit \
                ${base_sbindir}/resolvconf \
                ${base_sbindir}/reboot \
                ${base_sbindir}/init \
                ${datadir}/dbus-1/services \
                ${datadir}/dbus-1/system-services \
                ${datadir}/polkit-1 \
                ${datadir}/${BPN} \
                ${datadir}/factory \
                ${sysconfdir}/dbus-1/ \
                ${sysconfdir}/modules-load.d/ \
                ${sysconfdir}/pam.d/ \
                ${sysconfdir}/sysctl.d/ \
                ${sysconfdir}/systemd/ \
                ${sysconfdir}/tmpfiles.d/ \
                ${sysconfdir}/xdg/ \
                ${sysconfdir}/init.d/README \
                ${sysconfdir}/resolv-conf.systemd \
                ${rootlibexecdir}/systemd/* \
                ${systemd_unitdir}/* \
                ${base_libdir}/security/*.so \
                /cgroup \
                ${bindir}/systemd* \
                ${bindir}/busctl \
                ${bindir}/coredumpctl \
                ${bindir}/localectl \
                ${bindir}/hostnamectl \
                ${bindir}/resolvectl \
                ${bindir}/timedatectl \
                ${bindir}/bootctl \
                ${bindir}/kernel-install \
                ${exec_prefix}/lib/tmpfiles.d/*.conf \
                ${exec_prefix}/lib/systemd \
                ${exec_prefix}/lib/modules-load.d \
                ${exec_prefix}/lib/sysctl.d \
                ${exec_prefix}/lib/sysusers.d \
                ${exec_prefix}/lib/environment.d \
                ${localstatedir} \
                ${nonarch_base_libdir}/udev/rules.d/70-uaccess.rules \
                ${nonarch_base_libdir}/udev/rules.d/71-seat.rules \
                ${nonarch_base_libdir}/udev/rules.d/73-seat-late.rules \
                ${nonarch_base_libdir}/udev/rules.d/99-systemd.rules \
                ${nonarch_base_libdir}/modprobe.d/systemd.conf \
                ${datadir}/dbus-1/system.d/org.freedesktop.timedate1.conf \
                ${datadir}/dbus-1/system.d/org.freedesktop.locale1.conf \
                ${datadir}/dbus-1/system.d/org.freedesktop.network1.conf \
                ${datadir}/dbus-1/system.d/org.freedesktop.resolve1.conf \
                ${datadir}/dbus-1/system.d/org.freedesktop.systemd1.conf \
                ${datadir}/dbus-1/system.d/org.freedesktop.hostname1.conf \
                ${datadir}/dbus-1/system.d/org.freedesktop.login1.conf \
                ${datadir}/dbus-1/system.d/org.freedesktop.timesync1.conf \
                ${datadir}/dbus-1/system.d/org.freedesktop.portable1.conf \
               "

FILES_${PN}-dev += "${base_libdir}/security/*.la ${datadir}/dbus-1/interfaces/ ${sysconfdir}/rpm/macros.systemd"

RDEPENDS_${PN} += "kmod dbus util-linux-mount util-linux-umount udev (= ${EXTENDPKGV}) util-linux-agetty util-linux-fsck"
RDEPENDS_${PN} += "${@bb.utils.contains('PACKAGECONFIG', 'serial-getty-generator', '', 'systemd-serialgetty', d)}"
RDEPENDS_${PN} += "volatile-binds update-rc.d systemd-conf"
RDEPENDS_${PN} += "${@bb.utils.contains('PACKAGECONFIG', 'myhostname', 'libnss-myhostname', '', d)}"

RRECOMMENDS_${PN} += "systemd-extra-utils \
                      systemd-compat-units udev-hwdb \
                      e2fsprogs-e2fsck \
                      kernel-module-autofs4 kernel-module-unix kernel-module-ipv6 \
                      os-release \
"

INSANE_SKIP_${PN} += "dev-so libdir"
INSANE_SKIP_${PN}-dbg += "libdir"
INSANE_SKIP_${PN}-doc += " libdir"

PACKAGES =+ "udev udev-hwdb"

RPROVIDES_udev = "hotplug"

RDEPENDS_udev-hwdb += "udev"

FILES_udev += "${base_sbindir}/udevd \
               ${rootlibexecdir}/systemd/network/99-default.link \
               ${rootlibexecdir}/systemd/systemd-udevd \
               ${rootlibexecdir}/udev/accelerometer \
               ${rootlibexecdir}/udev/ata_id \
               ${rootlibexecdir}/udev/cdrom_id \
               ${rootlibexecdir}/udev/collect \
               ${rootlibexecdir}/udev/findkeyboards \
               ${rootlibexecdir}/udev/keyboard-force-release.sh \
               ${rootlibexecdir}/udev/keymap \
               ${rootlibexecdir}/udev/mtd_probe \
               ${rootlibexecdir}/udev/scsi_id \
               ${rootlibexecdir}/udev/v4l_id \
               ${rootlibexecdir}/udev/keymaps \
               ${rootlibexecdir}/udev/rules.d/*.rules \
               ${sysconfdir}/udev \
               ${sysconfdir}/init.d/systemd-udevd \
               ${systemd_unitdir}/system/*udev* \
               ${systemd_unitdir}/system/*.wants/*udev* \
               ${base_bindir}/udevadm \
               ${libexecdir}/${MLPREFIX}udevadm \
               ${datadir}/bash-completion/completions/udevadm \
              "

FILES_udev-hwdb = "${rootlibexecdir}/udev/hwdb.d"

INITSCRIPT_PACKAGES = "udev"
INITSCRIPT_NAME_udev = "systemd-udevd"
INITSCRIPT_PARAMS_udev = "start 03 S ."

python __anonymous() {
    if not bb.utils.contains('DISTRO_FEATURES', 'sysvinit', True, False, d):
        d.setVar("INHIBIT_UPDATERCD_BBCLASS", "1")
}

ALTERNATIVE_${PN} = "halt reboot shutdown poweroff runlevel resolv-conf"

ALTERNATIVE_TARGET[resolv-conf] = "${sysconfdir}/resolv-conf.systemd"
ALTERNATIVE_LINK_NAME[resolv-conf] = "${sysconfdir}/resolv.conf"
ALTERNATIVE_PRIORITY[resolv-conf] ?= "50"

ALTERNATIVE_TARGET[halt] = "${base_bindir}/systemctl"
ALTERNATIVE_LINK_NAME[halt] = "${base_sbindir}/halt"
ALTERNATIVE_PRIORITY[halt] ?= "300"

ALTERNATIVE_TARGET[reboot] = "${base_bindir}/systemctl"
ALTERNATIVE_LINK_NAME[reboot] = "${base_sbindir}/reboot"
ALTERNATIVE_PRIORITY[reboot] ?= "300"

ALTERNATIVE_TARGET[shutdown] = "${base_bindir}/systemctl"
ALTERNATIVE_LINK_NAME[shutdown] = "${base_sbindir}/shutdown"
ALTERNATIVE_PRIORITY[shutdown] ?= "300"

ALTERNATIVE_TARGET[poweroff] = "${base_bindir}/systemctl"
ALTERNATIVE_LINK_NAME[poweroff] = "${base_sbindir}/poweroff"
ALTERNATIVE_PRIORITY[poweroff] ?= "300"

ALTERNATIVE_TARGET[runlevel] = "${base_bindir}/systemctl"
ALTERNATIVE_LINK_NAME[runlevel] = "${base_sbindir}/runlevel"
ALTERNATIVE_PRIORITY[runlevel] ?= "300"

pkg_postinst_${PN} () {
	sed -e '/^hosts:/s/\s*\<myhostname\>//' \
		-e 's/\(^hosts:.*\)\(\<files\>\)\(.*\)\(\<dns\>\)\(.*\)/\1\2 myhostname \3\4\5/' \
		-i $D${sysconfdir}/nsswitch.conf
}

pkg_prerm_${PN} () {
	sed -e '/^hosts:/s/\s*\<myhostname\>//' \
		-e '/^hosts:/s/\s*myhostname//' \
		-i $D${sysconfdir}/nsswitch.conf
}

PACKAGE_WRITE_DEPS += "qemu-native"
pkg_postinst_udev-hwdb () {
	if test -n "$D"; then
		$INTERCEPT_DIR/postinst_intercept update_udev_hwdb ${PKG} mlprefix=${MLPREFIX} binprefix=${MLPREFIX}
	else
		udevadm hwdb --update
	fi
}

pkg_prerm_udev-hwdb () {
	rm -f $D${sysconfdir}/udev/hwdb.bin
}

repository: miraclelinux/meta-debian-extended

repo_name: miraclelinux/meta-debian-extended

branch_name: refs/heads/warrior

gha_license_id: MIT

gha_language: BitBake


text:
//
// Copyright (c) 2019 Intel Corporation
//
// Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
// in compliance with the License. You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software distributed under the License
// is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
// or implied. See the License for the specific language governing permissions and limitations under
// the License.
//
// SPDX-License-Identifier: Apache-2.0'
//
package fileprovider

import (
	"encoding/json"
	"testing"

	"github.com/stretchr/testify/assert"
)

func TestDefaultTokenPolicy(t *testing.T) {
	// Act
	policies := makeDefaultTokenPolicy("service-name")

	// Assert
	bytes, err := json.Marshal(policies)
	assert.NoError(t, err)

	expected := `{"path":{"secret/edgex/service-name/*":{"capabilities":["create","update","delete","list","read"]}}}`
	actual := string(bytes)
	assert.Equal(t, expected, actual)
}

func TestDefaultTokenParameters(t *testing.T) {
	// Act
	parameters := makeDefaultTokenParameters("service-name")

	// Assert
	bytes, err := json.Marshal(parameters)
	assert.NoError(t, err)

	expected := `{"display_name":"service-name","no_parent":true,"period":"1h","policies":["edgex-service-service-name"],"ttl":"1h"}`
	actual := string(bytes)
	assert.Equal(t, expected, actual)
}

repository: alihanyalcin/edgex-go

license_type: permissive

repo_name: alihanyalcin/edgex-go

branch_name: refs/heads/master

extension: go


text:
@article{antolin2019priori,
  title     = {A priori error for unilateral contact problems with Lagrange multipliers and isogeometric analysis},
  author    = {Antolin, Pablo and Buffa, Annalisa and Fabre, Mathieu},
  journal   = {IMA Journal of Numerical Analysis},
  volume    = {39},
  number    = {4},
  pages     = {1627--1651},
  year      = {2019},
  publisher = {Oxford University Press},
  doi       = {10.1093/imanum/dry041}
}

@article{brivadis2015isogeometric,
  title     = {Isogeometric mortar methods},
  author    = {Brivadis, Ericka and Buffa, Annalisa and Wohlmuth, Barbara and Wunderlich, Linus},
  journal   = {Computer Methods in Applied Mechanics and Engineering},
  volume    = {284},
  pages     = {292--319},
  year      = {2015},
  publisher = {Elsevier},
  doi       = {10.1016/j.cma.2014.09.012}
}

@article{burman2016free,
  author    = {Burman, Erik and Hansbo, Peter and Larson, Mats G.},
  doi       = {10.1137/16M107846X},
  journal   = {SIAM Journal on Numerical Analysis},
  localfile = {Cambridge/burman2016free.pdf},
  number    = {6},
  pages     = {2523–2539},
  title     = {"The Penalty-Free Nitsche Method and Nonconforming Finite Elements for the Signorini Problem"},
  volume    = {55},
  year      = {2017}
}

@article{burman2019augmented,
  title     = {Augmented Lagrangian finite element methods for contact problems},
  author    = {Burman, Erik and Hansbo, Peter and Larson, Mats G},
  journal   = {ESAIM: Mathematical Modelling and Numerical Analysis},
  volume    = {53},
  number    = {1},
  pages     = {173--195},
  year      = {2019},
  publisher = {EDP Sciences},
  doi       = {10.1051/m2an/2018047}
}

@article{choly2013unilateral,
  author    = {Chouly, Franz and Hild, Patrick},
  doi       = {10.1137/12088344X},
  journal   = {SIAM Journal on Numerical Analysis},
  localfile = {Cambridge/choly2013unilateral.pdf},
  number    = {2},
  pages     = {1295–1307},
  title     = {{A Nitsche-Based Method for Unilateral Contact Problems: Numerical Analysis}},
  volume    = {51},
  year      = {2013}
}

@article{CHOULY2014TRESCA,
  author    = {Chouly, Franz},
  doi       = {10.1016/j.jmaa.2013.09.019},
  issn      = {0022-247X},
  journal   = {Journal of Mathematical Analysis and Applications},
  keywords  = {Tresca friction problem; Nitsche's method; Finite elements},
  localfile = {Cambridge/CHOULY2014TRESCA.pdf},
  number    = {1},
  pages     = {329–339},
  title     = {{An adaptation of Nitsche's method to the Tresca friction problem}},
  volume    = {411},
  year      = {2014}
}

@article{chouly2015symm,
  author    = {Chouly, Franz and Hild, Patrick and Renard, Yves},
  doi       = {10.1090/S0025-5718-2014-02913-X},
  issn      = {1088-6842},
  journal   = {Math. Comp.},
  localfile = {Cambridge/chouly2015symm.pdf},
  pages     = {1089–1112},
  publisher = {American Mathematical Soc.},
  title     = {{Symmetric and non-symmetric variants of Nitsche's method for contact problems in elasticity: theory and numerical experiments}},
  volume    = {84},
  year      = {2015}
}

@article{chouly2015timedep,
  author    = {{Chouly, Franz} and {Hild, Patrick} and {Renard, Yves}},
  doi       = {10.1051/m2an/2014041},
  journal   = {ESAIM: M2AN},
  localfile = {Cambridge/chouly2015timedep.pdf},
  month     = {},
  number    = 2,
  pages     = {481–502},
  title     = {{A Nitsche finite element method for dynamic contact: 1. Space semi-discretization and time-marching schemes}},
  volume    = 49,
  year      = 2015
}

@article{chouly2015timedep2,
  author    = {{Chouly, Franz} and {Hild, Patrick} and {Renard, Yves}},
  doi       = {10.1051/m2an/2014046},
  journal   = {ESAIM: M2AN},
  localfile = {Cambridge/chouly2015timedep2.pdf},
  month     = {},
  number    = 2,
  pages     = {503–528},
  title     = {{A Nitsche finite element method for dynamic contact: 2. Stability of the schemes and numerical experiments }},
  volume    = 49,
  year      = 2015
}

@inproceedings{chouly2017coulomb,
  author    = {{Chouly, Franz} and {Hild, Patrick} and {Lleras, Vanessa} and {Renard, Yves}},
  editor    = {{Radu, Florin Adrian} and {Kumar, Kundan} and {Berre, Inga} and {Nordbotten, Jan Martin} and {Pop, Iuliu Sorin}},
  title     = {Nitsche-Based Finite Element Method for Contact with Coulomb Friction},
  booktitle = {Numerical Mathematics and Advanced Applications ENUMATH 2017},
  year      = {2019},
  publisher = {Springer International Publishing},
  address   = {Cham},
  pages     = {839--847},
  isbn      = {978-3-319-96415-7}
}

@inproceedings{chouly2017nitsche,
  address    = {Cham},
  author     = {Chouly, Franz and Fabre, Mathieu and Hild, Patrick and Mlika, Rabii and Pousin, Jérôme and Renard, Yves},
  booktitle  = {{Geometrically Unfitted Finite Element Methods and Applications}},
  doi        = {10.1007/978-3-319-71431-8_4},
  localfile  = {Cambridge/chouly2017nitsche.pdf},
  pages      = {93–141},
  pages2     = {93–141},
  publisher  = {Springer International Publishing},
  publisher2 = {Springer International Publishing},
  year       = 2017,
  title      = {{An Overview of Recent Results on Nitsche's Method for Contact Problems}}
}
@article{chouly2018unbiased,
  author    = {Chouly, Franz and Mlika, Rabii and Renard, Yves},
  doi       = {10.1007/s00211-018-0950-x},
  journal   = {Numerische Mathematik},
  localfile = {Cambridge/chouly2018unbiased.pdf},
  number    = {3},
  pages     = {593–631},
  publisher = {Springer},
  title     = {{An unbiased Nitsche’s approximation of the frictional contact between two elastic structures}},
  volume    = {139},
  year      = {2018}
}

@article{de2011large,
  title     = {A large deformation frictional contact formulation using NURBS-based isogeometric analysis},
  author    = {De Lorenzis, Laura and Temizer, I and Wriggers, P and Zavarise, G},
  journal   = {International Journal for Numerical Methods in Engineering},
  volume    = {87},
  number    = {13},
  pages     = {1278--1300},
  year      = {2011},
  publisher = {Wiley Online Library},
  doi       = {10.1002/nme.3159}
}

@article{dimitri2017isogeometric,
  title     = {Isogeometric treatment of frictional contact and mixed mode debonding problems},
  author    = {Dimitri, Rossana and Zavarise, Giorgio},
  journal   = {Computational Mechanics},
  volume    = {60},
  number    = {2},
  pages     = {315--332},
  year      = {2017},
  publisher = {Springer},
  doi       = {10.1007/s00466-017-1410-7}
}

@article{drouet2015optimal,
  title     = {Optimal convergence for discrete variational inequalities modelling Signorini contact in 2D and 3D without additional assumptions on the unknown contact set},
  author    = {Drouet, Guillaume and Hild, Patrick},
  journal   = {SIAM Journal on Numerical Analysis},
  volume    = {53},
  number    = {3},
  pages     = {1488--1507},
  year      = {2015},
  publisher = {SIAM},
  doi       = {10.1137/140980697}
}

@article{embar2010nitsche,
  abstract  = {Abstract A key challenge while employing non-interpolatory basis functions in finite-element methods is the robust imposition of Dirichlet boundary conditions. The current work studies the weak enforcement of such conditions for B-spline basis functions, with application to both second- and fourth-order problems. This is achieved using concepts borrowed from Nitsche's method, which is a stabilized method for imposing constraints on surfaces. Conditions for the stability of the system of equations are derived for each class of problem. Stability parameters in the Nitsche weak form are then evaluated by solving a local generalized eigenvalue problem at the Dirichlet boundary. The approach is designed to work equally well when the grid used to build the splines conforms to the physical boundary of interest as well as to the more general case when it does not. Through several numerical examples, the approach is shown to yield optimal rates of convergence. Copyright © 2010 John Wiley \& Sons, Ltd.},
  author    = {Embar, Anand and Dolbow, John and Harari, Isaac},
  doi       = {10.1002/nme.2863},
  journal   = {International Journal for Numerical Methods in Engineering},
  keywords  = {B-splines; Dirichlet BCs; Nitsche's method; fourth-order problems},
  localfile = {papers/embar2010nitsche.pdf},
  number    = {7},
  pages     = {877–898},
  title     = {{Imposing Dirichlet boundary conditions with Nitsche's method and spline-based finite elements}},
  volume    = {83},
  year      = {2010}
}
@article{fabre2016SMAI,
  author    = {Fabre, Mathieu and Pousin, Jér\^ome and Renard, Yves},
  doi       = {10.5802/smai-jcm.8},
  journal   = {The SMAI journal of computational mathematics},
  language  = {en},
  localfile = {smai-jcm.centre-mersenne.org/item/SMAI-JCM_2016__2__19_0/; Cambridge/fabre2016SMAI.pdf},
  mrnumber  = {3633544},
  pages     = {19–50},
  publisher = {Société de Mathématiques Appliquées et Industrielles},
  title     = {{A fictitious domain method for frictionless contact problems in elasticity using Nitsche's method}}
}

@article{Farah2015integration,
  author    = {Farah, Philipp and Popp, Alexander and Wall, Wolfgang A.},
  doi       = {10.1007/s00466-014-1093-2},
  journal   = {Computational Mechanics},
  localfile = {Cambridge/Farah2015integration.pdf},
  number    = {1},
  pages     = {209–228},
  title     = {"Segment-based vs. element-based integration for mortar methods in computational contact mechanicsSegment-based vs. element-based integration for mortar methods in computational contact mechanics"},
  volume    = {55},
  year      = {2015}
}

@article{fritz2004comparison,
  author     = {Fritz, A. and H\"{u}eber, S. and Wohlmuth, B. I.},
  title      = {A comparison of mortar and {N}itsche techniques for linear
              elasticity},
  journal    = {Calcolo},
  fjournal   = {Calcolo. A Quarterly on Numerical Analysis and Theory of
              Computation},
  volume     = {41},
  year       = {2004},
  number     = {3},
  pages      = {115--137},
  issn       = {0008-0624},
  mrclass    = {74G15 (65N55 74B05 74S05)},
  mrnumber   = {2199546},
  mrreviewer = {Carsten Carstensen},
  doi        = {10.1007/s10092-004-0087-4}
}

@article{HANSBO20043523,
  author    = {Hansbo, Anita and Hansbo, Peter},
  doi       = {10.1016/j.cma.2003.12.041},
  issn      = {0045-7825},
  journal   = {Computer Methods in Applied Mechanics and Engineering},
  keywords  = {Finite element method; Discontinuities; Solid mechanics},
  localfile = {Cambridge/HANSBO20043523.pdf},
  number    = {33},
  pages     = {3523–3540},
  title     = {{A finite element method for the simulation of strong and weak discontinuities in solid mechanics}}
}

@article{hintermuller2002primal,
  title     = {The primal-dual active set strategy as a semismooth Newton method},
  author    = {Hinterm{\"u}ller, Michael and Ito, Kazufumi and Kunisch, Karl},
  journal   = {SIAM Journal on Optimization},
  volume    = {13},
  number    = {3},
  pages     = {865--888},
  year      = {2002},
  publisher = {SIAM},
  doi       = {10.1137/S1052623401383558}
}

@article{HU2018IGA,
  title    = {Skew-symmetric Nitsche’s formulation in isogeometric analysis: Dirichlet and symmetry conditions, patch coupling and frictionless contact},
  journal  = {Computer Methods in Applied Mechanics and Engineering},
  volume   = {341},
  pages    = {188-220},
  year     = {2018},
  issn     = {0045-7825},
  doi      = {10.1016/j.cma.2018.05.024},
  author   = {Qingyuan Hu and Franz Chouly and Ping Hu and Gengdong Cheng and Stéphane P.A. Bordas},
  keywords = {Isogeometric, Nitsche, Parameter-free, Contact, Patch coupling, Boundary conditions}
}
@article{hueber2005primal,
  title     = {A primal--dual active set strategy for non-linear multibody contact problems},
  author    = {H{\"u}eber, Stefan and Wohlmuth, Barbara I},
  journal   = {Computer Methods in Applied Mechanics and Engineering},
  volume    = {194},
  number    = {27-29},
  pages     = {3147--3166},
  year      = {2005},
  publisher = {Elsevier},
  doi       = {10.1016/j.cma.2004.08.006}
}

@article{hueber2005priori,
  title     = {A priori error estimates and an inexact primal-dual active set strategy for linear and quadratic finite elements applied to multibody contact problems},
  author    = {H{\"u}eber, Stefan and Mair, Michael and Wohlmuth, BI},
  journal   = {Applied numerical mathematics},
  volume    = {54},
  number    = {3-4},
  pages     = {555--576},
  year      = {2005},
  publisher = {Elsevier},
  doi       = {10.1016/j.apnum.2004.09.019}
}
@article{krause2002dirichlet,
  title     = {A Dirichlet--Neumann type algorithm for contact problems with friction},
  author    = {Krause, Rolf H and Wohlmuth, Barbara I},
  journal   = {Computing and visualization in science},
  volume    = {5},
  number    = {3},
  pages     = {139--148},
  year      = {2002},
  publisher = {Springer},
  doi       = {10.1007/s00791-002-0096-2}
}

@article{mcdevitt2000mortar,
  title     = {A mortar-finite element formulation for frictional contact problems},
  author    = {McDevitt, TW and Laursen, TA},
  journal   = {International Journal for Numerical Methods in Engineering},
  volume    = {48},
  number    = {10},
  pages     = {1525--1547},
  year      = {2000},
  publisher = {Wiley Online Library},
  doi       = {10.1002/1097-0207(20000810)48:10<1525::AID-NME953>3.0.CO;2-Y}
}

@article{MLIKA2017selfcontact,
  author    = {Mlika, Rabii and Renard, Yves and Chouly, Franz},
  doi       = {10.1016/j.cma.2017.07.015},
  issn      = {0045-7825},
  journal   = {Computer Methods in Applied Mechanics and Engineering},
  keywords  = {Large deformation contact; Frictional contact and self-contact; Nitsche’s method; Unbiased formulation},
  localfile = {Cambridge/MLIKA2017selfcontact.pdf},
  pages     = {265–288},
  title     = {"An unbiased Nitsche’s formulation of large deformation frictional contact and self-contact"},
  volume    = {325},
  year      = {2017}
}

@article{rachowicz2017h,
  title     = {An h-adaptive mortar finite element method for finite deformation contact with higher order p extension},
  author    = {Rachowicz, Waldemar and Zdunek, Adam},
  journal   = {Computers \& Mathematics with Applications},
  volume    = {73},
  number    = {8},
  pages     = {1834--1854},
  year      = {2017},
  publisher = {Elsevier},
  doi       = {10.1016/j.camwa.2017.02.022}
}

@article{RENARD201338,
  title    = {Generalized Newton’s methods for the approximation and resolution of frictional contact problems in elasticity},
  journal  = {Computer Methods in Applied Mechanics and Engineering},
  volume   = {256},
  pages    = {38-55},
  year     = {2013},
  issn     = {0045-7825},
  doi      = {https://doi.org/10.1016/j.cma.2012.12.008},
  author   = {Yves Renard},
  keywords = {Contact, Friction, Augmented Lagrangian, Generalized Newton’s method, Nitsche’s method}
}

@article{wiesner2018algebraic,
  title     = {Algebraic multigrid methods for dual mortar finite element formulations in contact mechanics},
  author    = {Wiesner, TA and Popp, A and Gee, MW and Wall, WA},
  journal   = {International Journal for Numerical Methods in Engineering},
  volume    = {114},
  number    = {4},
  pages     = {399--430},
  year      = {2018},
  publisher = {Wiley Online Library},
  doi       = {10.1002/nme.5748}
}

@article{wohlmuth2000mortar,
  title     = {A mortar finite element method using dual spaces for the Lagrange multiplier},
  author    = {Wohlmuth, Barbara I},
  journal   = {SIAM journal on numerical analysis},
  volume    = {38},
  number    = {3},
  pages     = {989--1012},
  year      = {2000},
  publisher = {SIAM},
  doi       = {10.1137/S0036142999350929}
}

@article{wohlmuth2012abstract,
  title     = {An abstract framework for a priori estimates for contact problems in 3D with quadratic finite elements},
  author    = {Wohlmuth, BI and Popp, A and Gee, MW and Wall, WA},
  journal   = {Computational Mechanics},
  volume    = {49},
  number    = {6},
  pages     = {735--747},
  year      = {2012},
  publisher = {Springer},
  doi       = {10.1007/s00466-012-0704-z}
}

@book{wriggers2004,
  title     = {Computational contact mechanics},
  author    = {Wriggers, Peter},
  edition   = {2nd},
  year      = {2004},
  publisher = {Springer},
  doi       = {10.1002/0470091355.ecm033}
}

@book{yastrebov2013,
  author    = {Yastrebov, Vladislav A.},
  title     = {Numerical methods in contact mechanics},
  year      = {2013},
  publisher = {John Wiley \& Sons},
  doi       = {10.1002/9781118647974}
}

license: MIT

branch_name: refs/heads/main

extension: bib


text:
package model

import (
	"github.com/huaweicloud/huaweicloud-sdk-go-v3/core/utils"

	"strings"
)

// ListCasesResponse Response Object
type ListCasesResponse struct {

	// 总数
	TotalCount *int32 `json:"total_count,omitempty"`

	// 工单列表
	IncidentInfoList *[]IncidentInfoV2 `json:"incident_info_list,omitempty"`
	HttpStatusCode   int               `json:"-"`
}

func (o ListCasesResponse) String() string {
	data, err := utils.Marshal(o)
	if err != nil {
		return "ListCasesResponse struct{}"
	}

	return strings.Join([]string{"ListCasesResponse", string(data)}, " ")
}

gha_license_id: NOASSERTION

gha_language: Go


text:
package datadog

import (
	"fmt"
	"log"
	"regexp"
	"runtime"
	"strings"
	"time"

	"github.com/DataDog/datadog-go/statsd"
	metrics "github.com/rcrowley/go-metrics"
)

const (
	defaultFlushInterval = time.Second * 10
)

// Expect the tags in the pattern
// namespace.metricName[tag1:value1,tag2:value2,etc....]
var tagPattern = regexp.MustCompile("([\\w\\.]+)\\[([\\w\\W]+)\\]")

// Reporter wraps a metrics registry with a given statsd client.
type Reporter struct {
	// Registry matrices that need to be reported to the Client
	Registry metrics.Registry

	// Client is the configured statsd instance
	Client *statsd.Client

	// Time interval between two consecutive Flush calls to store the matrix
	// value to the Client.
	interval time.Duration

	// Reporter type configuration settings
	tags []string
	ss   map[string]int64

	// Optional parameters
	percentiles []float64
	p           []string
}

// NewReporter creates a new Reporter with a pre-configured statsd client.
func NewReporter(r metrics.Registry, addr string, options ...ReporterOption) (*Reporter, error) {
	if r == nil {
		r = metrics.DefaultRegistry
	}

	client, err := statsd.New(addr)
	if err != nil {
		return nil, err
	}
	reporter := &Reporter{
		Client:   client,
		Registry: r,
		interval: defaultFlushInterval,
		ss:       make(map[string]int64),
	}
	for _, option := range options {
		if err := option(reporter); err != nil {
			return nil, err
		}
	}
	return reporter, nil
}

// Flush is a blocking exporter function which reports metrics in the registry
// to the statsd client, flushing every d duration
func (r *Reporter) Flush() {
	defer func() {
		if rec := recover(); rec != nil {
			handlePanic(rec)
		}
	}()

	for range time.Tick(r.interval) {
		if err := r.FlushOnce(); err != nil {
			log.Println(err)
		}
	}
}

// FlushOnce submits a snapshot submission of the registry to DataDog. This can
// be used in a loop similarly to FlushWithInterval for custom error handling or
// data submission variations.
func (r *Reporter) FlushOnce() error {
	reportCount := func(name string, tags []string, value int64) {
		last := r.ss[name]
		r.Client.Count(name, value-last, tags, 1)
		r.ss[name] = value
	}
	r.Registry.Each(func(metricName string, i interface{}) {
		name, tags := r.splitNameAndTags(metricName)

		switch metric := i.(type) {
		case metrics.Counter:
			reportCount(name, tags, metric.Count())

		case metrics.Gauge:
			r.Client.Gauge(name, float64(metric.Value()), tags, 1)

		case metrics.GaugeFloat64:
			r.Client.Gauge(name, metric.Value(), tags, 1)

		case metrics.Histogram:
			ms := metric.Snapshot()

			reportCount(name+".count", tags, ms.Count())
			r.Client.Gauge(name+".max", float64(ms.Max()), tags, 1)
			r.Client.Gauge(name+".min", float64(ms.Min()), tags, 1)
			r.Client.Gauge(name+".mean", ms.Mean(), tags, 1)
			r.Client.Gauge(name+".stddev", ms.StdDev(), tags, 1)
			r.Client.Gauge(name+".sum", float64(ms.Sum()), tags, 1)
			r.Client.Gauge(name+".var", ms.Variance(), tags, 1)

			if len(r.percentiles) > 0 {
				values := ms.Percentiles(r.percentiles)
				for i, p := range r.p {
					r.Client.Gauge(name+p, values[i], tags, 1)
				}
			}

		case metrics.Meter:
			ms := metric.Snapshot()

			reportCount(name+".count", tags, ms.Count())
			r.Client.Gauge(name+".rate1", ms.Rate1(), tags, 1)
			r.Client.Gauge(name+".rate5", ms.Rate5(), tags, 1)
			r.Client.Gauge(name+".rate15", ms.Rate15(), tags, 1)
			r.Client.Gauge(name+".mean", ms.RateMean(), tags, 1)

		case metrics.Timer:
			ms := metric.Snapshot()

			reportCount(name+".count", tags, ms.Count())
			r.Client.Gauge(name+".max", time.Duration(ms.Max()).Seconds()*1000, tags, 1)
			r.Client.Gauge(name+".min", time.Duration(ms.Min()).Seconds()*1000, tags, 1)
			r.Client.Gauge(name+".mean", time.Duration(ms.Mean()).Seconds()*1000, tags, 1)
			r.Client.Gauge(name+".stddev", time.Duration(ms.StdDev()).Seconds()*1000, tags, 1)
			r.Client.Gauge(name+".sum", float64(ms.Sum()), tags, 1)

			if len(r.percentiles) > 0 {
				values := ms.Percentiles(r.percentiles)
				for i, p := range r.p {
					r.Client.Gauge(name+p, time.Duration(values[i]).Seconds()*1000, tags, 1)
				}
			}
		}
	})

	return nil
}

func handlePanic(rec interface{}) {
	callers := ""
	for i := 2; true; i++ {
		_, file, line, ok := runtime.Caller(i)
		if !ok {
			break
		}
		callers = callers + fmt.Sprintf("%v:%v\n", file, line)
	}
	log.Printf("Recovered from panic: %#v \n%v", rec, callers)
}

func (r *Reporter) splitNameAndTags(metric string) (string, []string) {
	if res := tagPattern.FindStringSubmatch(metric); len(res) == 3 {
		if r.tags == nil {
			return res[1], append(strings.Split(res[2], ","))
		} else {
			return res[1], append(strings.Split(res[2], ","), r.tags...)
		}
	}
	return metric, r.tags
}

repository: syntaqx/go-metrics-datadog

repo_name: syntaqx/go-metrics-datadog


text:
@article{10.3389/frobt.2019.00110,
 abstract = {Socially assistive robots (SAR) have shown great potential to augment the social and educational development of children with autism spectrum disorders (ASD). As SAR continues to substantiate itself as an effective enhancement to human intervention, researchers have sought to study its longitudinal impacts in real-world environments, including the home. Computational personalization stands out as a central computational challenge as it is necessary to enable SAR systems to adapt to each child's unique and changing needs. Toward that end, we formalized personalization as a hierarchical human robot learning framework (hHRL) consisting of five controllers (disclosure, promise, instruction, feedback, and inquiry) mediated by a meta-controller that utilized reinforcement learning to personalize instruction challenge levels and robot feedback based on each user's unique learning patterns. We instantiated and evaluated the approach in a study with 17 children with ASD, aged 3–7 years old, over month-long interventions in their homes. Our findings demonstrate that the fully autonomous SAR system was able to personalize its instruction and feedback over time to each child's proficiency. As a result, every child participant showed improvements in targeted skills and long-term retention of intervention content. Moreover, all child users were engaged for a majority of the intervention, and their families reported the SAR system to be useful and adaptable. In summary, our results show that autonomous, personalized SAR interventions are both feasible and effective in providing long-term in-home developmental support for children with diverse learning needs.},
 author = {Clabaugh, Caitlyn and Mahajan, Kartik and Jain, Shomik and Pakkar, Roxanna and Becerra, David and Shi, Zhonghao and Deng, Eric and Lee, Rhianna and Ragusa, Gisele and Matarić, Maja},
 doi = {10.3389/frobt.2019.00110},
 issn = {2296-9144},
 journal = {Frontiers in Robotics and AI},
 pages = {110},
 title = {Long-Term Personalization of an In-Home Socially Assistive Robot for Children With Autism Spectrum Disorders},
 url = {https://www.frontiersin.org/article/10.3389/frobt.2019.00110},
 volume = {6},
 year = {2019}
}

repository: HaaaO/academic-kickstart

repo_name: HaaaO/academic-kickstart


text:
%% This BibTeX bibliography file was created using BibDesk.
%% http://bibdesk.sourceforge.net/

%% Created for Spencer Smith at 2017-11-10 06:27:41 -0500

%% Saved with string encoding Unicode (UTF-8)

@Article{Dong2019MIS,
  title = {Module Interface Specification for MISEG},
  year = {2019},
  author = {Ao Dong},
  url = {https://github.com/Ao99/MISEG/blob/master/docs/Design/MIS/MIS.pdf}
}

@Article{Dong2019MG,
  title = {Module Guide for MISEG},
  year = {2019},
  author = {Ao Dong},
  url = {https://github.com/Ao99/MISEG/blob/master/docs/Design/MG/MG.pdf}
}

@Article{Dong2019SystVnv,
  title = {System Verification and Validation Plan for MISEG},
  year = {2019},
  author = {Ao Dong},
  url = {https://github.com/Ao99/MISEG/blob/master/docs/VnVPlan/SystVnVPlan/SystVnVPlan.pdf}
}

@Article{Dong2019SRS,
  title = {Software Requirements Specification for Medical Image Segmentation Library},
  year = {2019},
  author = {Ao Dong},
  url = {https://github.com/Ao99/MISEG/blob/master/docs/SRS/SRS.pdf}
}

@inproceedings{Parnas1978,
 author = {D.L. Parnas},
 title = {Designing Software for Ease of Extension and Contraction},
 booktitle = {Proceedings of the 3rd International Conference on Software Engineering},
 series = {ICSE '78},
 year = {1978},
 location = {Atlanta, Georgia, USA},
 pages = {264--277},
 numpages = {14},
 url = {http://dl.acm.org/citation.cfm?id=800099.803218},
 acmid = {803218},
 publisher = {IEEE Press},
 address = {Piscataway, NJ, USA},
}

@inproceedings{ParnasEtAl1984,
	Author = {D.L. Parnas and P.C. Clement and D. M. Weiss},
	Booktitle = {International Conference on Software Engineering},
	Pages = {408-419},
	Title = {The modular structure of complex systems},
	Year = {1984},
	Bdsk-File-1 = {YnBsaXN0MDDSAQIDBFxyZWxhdGl2ZVBhdGhZYWxpYXNEYXRhXxA2Li4vLi4vc2U0c2MvU2NpQ29tcEFuZFNvZnRFbmdQYXBlcnMvUGFybmFzRXRBbDE5ODQucGRmTxEBnAAAAAABnAACAAAMTWFjaW50b3NoIEhEAAAAAAAAAAAAAAAAAAAAAAAAAEJEAAH/////ElBhcm5hc0V0QWwxOTg0LnBkZgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8AAAAAAAAAAAAAAAAAAgADAAAKIGN1AAAAAAAAAAAAAAAAABdTY2lDb21wQW5kU29mdEVuZ1BhcGVycwAAAgBFLzpVc2VyczpzbWl0aHM6UmVwb3M6c2U0c2M6U2NpQ29tcEFuZFNvZnRFbmdQYXBlcnM6UGFybmFzRXRBbDE5ODQucGRmAAAOACYAEgBQAGEAcgBuAGEAcwBFAHQAQQBsADEAOQA4ADQALgBwAGQAZgAPABoADABNAGEAYwBpAG4AdABvAHMAaAAgAEgARAASAENVc2Vycy9zbWl0aHMvUmVwb3Mvc2U0c2MvU2NpQ29tcEFuZFNvZnRFbmdQYXBlcnMvUGFybmFzRXRBbDE5ODQucGRmAAATAAEvAAAVAAIADf//AAAACAANABoAJABdAAAAAAAAAgEAAAAAAAAABQAAAAAAAAAAAAAAAAAAAf0=}}

@ARTICLE{IEEE1990,
author={IEEE},
journal={IEEE Std 610.12-1990},
title={IEEE Standard Glossary of Software Engineering Terminology},
year={1990},
volume={},
number={},
pages={1-84},
keywords={glossaries;software engineering;standards;IEEE Std 610.12-1990;standard glossary;software engineering terminology;Terminology;Software engineering;Standards;glossary;terminology;dictionary;Software engineering;Definitions},
doi={10.1109/IEEESTD.1990.101064},
ISSN={},
month={Dec},
url={https://ieeexplore.ieee.org/document/159342}
}

@book{Ghezzi1991,
  title={Fundamentals of software engineering},
  author={Ghezzi, Carlo and Jazayeri, Mehdi and Mandrioli, Dino},
  year={1991},
  publisher={Prentice Hall PTR}
}

@article{SmithEtAl2018,
author = {Smith, Spencer and Zeng, Zheng and Carette, Jacques},
year = {2018},
month = {02},
pages = {},
title = {Seismology software: state of the practice},
volume = {22},
journal = {Journal of Seismology},
doi = {10.1007/s10950-018-9731-3}
}

@techreport{ISO/IEC25010:2011,
    author = {ISO/IEC},
	key = {ISO/IEC 25010:2011},
	type = {Standard},
	month = {Mar},
	year = {2011},
	title = {ISO/IEC25010 - Systems and software engineering - Systems and software Quality Requirements and Evaluation (SQuaRE) - System and software quality models},
	institution = {International Organization for Standardization},
	url = {https://pdfs.semanticscholar.org/57a5/b99eceff9da205e244337c9f4678b5b23d25.pdf}
	}

@misc{Ferrari2018b,
  title = {Image segmentation},
  year = {2018},
  author = {Stefano Ferrari},
  howpublished = {\url{https://homes.di.unimi.it/ferrari/MethImageProc2018_19/MIP2018_19_16_segmentation_double.pdf}},
  note = {Accessed: 2019-10-10}
}

@misc{Ferrari2018a,
  title = {Introduction to the image processing},
  year = {2018},
  author = {Stefano Ferrari},
  howpublished = {\url{https://homes.di.unimi.it/ferrari/MethImageProc2018_19/MIP2018_19_01_introduction_double.pdf}},
  note = {Accessed: 2019-10-10}
}

@article{Forouzanfar2010,
title = "Parameter optimization of improved fuzzy c-means clustering algorithm for brain MR image segmentation",
journal = "Engineering Applications of Artificial Intelligence",
volume = "23",
number = "2",
pages = "160 - 168",
year = "2010",
issn = "0952-1976",
doi = "https://doi.org/10.1016/j.engappai.2009.10.002",
url = "http://www.sciencedirect.com/science/article/pii/S095219760900150X",
author = "Mohamad Forouzanfar and Nosratallah Forghani and Mohammad Teshnehlab",
keywords = "Magnetic resonance imaging (MRI), Image segmentation, Genetic algorithms (GAs), Particle swarm optimization (PSO), Breeding swarm (BS)",
}

@Inbook{Elnakib2011,
author="Elnakib, Ahmed
and Gimel'farb, Georgy
and Suri, Jasjit S.
and El-Baz, Ayman",
editor="El-Baz, Ayman S.
and Acharya U, Rajendra
and Laine, Andrew F.
and Suri, Jasjit S.",
title="Medical Image Segmentation: A Brief Survey",
bookTitle="Multi Modality State-of-the-Art Medical Image Segmentation and Registration Methodologies: Volume II",
year="2011",
publisher="Springer New York",
address="New York, NY",
pages="1--39",
isbn="978-1-4419-8204-9",
doi="10.1007/978-1-4419-8204-9_1",
url="https://link.springer.com/chapter/10.1007/978-1-4419-8204-9_1"
}

@article{Norouzi2014,
author = {Alireza Norouzi and Mohd Shafry Mohd Rahim and Ayman Altameem and Tanzila Saba and Abdolvahab Ehsani Rad and Amjad Rehman and Mueen Uddin},
title = {Medical Image Segmentation Methods, Algorithms, and Applications},
journal = {IETE Technical Review},
volume = {31},
number = {3},
pages = {199-213},
year  = {2014},
publisher = {Taylor & Francis},
doi = {10.1080/02564602.2014.906861},
URL = {https://www.tandfonline.com/doi/full/10.1080/02564602.2014.906861?scroll=top&needAccess=true},
eprint = {https://doi.org/10.1080/02564602.2014.906861}
}

@INPROCEEDINGS{Withey2007,
author={D. J. {Withey} and Z. J. {Koles}},
booktitle={2007 Joint Meeting of the 6th International Symposium on Noninvasive Functional Source Imaging of the Brain and Heart and the International Conference on Functional Biomedical Imaging},
title={Medical Image Segmentation: Methods and Software},
year={2007},
pages={140-143},
keywords={image segmentation;medical image processing;optimisation;medical image segmentation;algorithmic complexity;image analysis;intensity thresholds;region growing;uncertainty models;optimization methods;Biomedical imaging;Image segmentation;Pixel;Image edge detection;Uncertainty;Optimization methods;Image databases;Character generation;Biomedical engineering;Magnetic resonance},
doi={10.1109/NFSI-ICFBI.2007.4387709},
ISSN={},
month={Oct},
url={https://ieeexplore.ieee.org/abstract/document/4387709}
}

@article{Pham2000,
author = {Pham, Dzung L. and Xu, Chenyang and Prince, Jerry L.},
title = {Current Methods in Medical Image Segmentation},
journal = {Annual Review of Biomedical Engineering},
volume = {2},
number = {1},
pages = {315-337},
year = {2000},
doi = {10.1146/annurev.bioeng.2.1.315},
note ={PMID: 11701515},
URL = {https://www.annualreviews.org/doi/abs/10.1146/annurev.bioeng.2.1.315},
eprint = {https://doi.org/10.1146/annurev.bioeng.2.1.315},
}

@article{Pal1993,
title = "A review on image segmentation techniques",
journal = "Pattern Recognition",
volume = "26",
number = "9",
pages = "1277 - 1294",
year = "1993",
issn = "0031-3203",
doi = "https://doi.org/10.1016/0031-3203(93)90135-J",
url = "http://www.sciencedirect.com/science/article/pii/003132039390135J",
author = "Nikhil R Pal and Sankar K Pal",
keywords = "Image segmentation, Fuzzy sets, Thresholding, Edge detection, Clustering, Relaxation, Markov Random Field",
}

@article{Caselles1998,
 author = {Caselles, V. and Morel, J.},
 title = {Introduction To The Special Issue On Partial Differential Equations And Geometry-driven Diffusion In Image Processing And Analysis},
 journal = {Trans. Img. Proc.},
 issue_date = {March 1998},
 volume = {7},
 number = {3},
 month = mar,
 year = {1998},
 issn = {1057-7149},
 pages = {269--273},
 numpages = {5},
 url = {https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=661176},
 doi = {10.1109/TIP.1998.661176},
 acmid = {2319493},
 publisher = {IEEE Press},
 address = {Piscataway, NJ, USA},
}

@article{Kim2011,
author = {Kim, Tae-Yun and Son, Jaebum and Kim, Kwanggi},
year = {2011},
month = {09},
pages = {143-9},
title = {The Recent Progress in Quantitative Medical Image Analysis for Computer Aided Diagnosis Systems},
volume = {17},
journal = {Healthcare informatics research},
doi = {10.4258/hir.2011.17.3.143},
url = {https://www.ncbi.nlm.nih.gov/pmc/articles/PMC3212740/}
}

@article{Parnas1972,
 author = {Parnas, D. L.},
 title = {On the Criteria to Be Used in Decomposing Systems into Modules},
 journal = {Commun. ACM},
 issue_date = {Dec. 1972},
 volume = {15},
 number = {12},
 month = dec,
 year = {1972},
 issn = {0001-0782},
 pages = {1053--1058},
 numpages = {6},
 url = {http://doi.acm.org/10.1145/361598.361623},
 doi = {10.1145/361598.361623},
 acmid = {361623},
 publisher = {ACM},
 address = {New York, NY, USA},
 keywords = {KWIC index, modularity, modules, software, software design, software engineering},
}

@incollection{Bankman2000,
title = "Preface",
editor = "Isaac N. Bankman",
booktitle = "Handbook of Medical Imaging",
publisher = "Academic Press",
address = "San Diego",
pages = "xi - xii",
year = "2000",
series = "Biomedical Engineering",
isbn = "978-0-12-077790-7",
doi = "https://doi.org/10.1016/B978-012077790-7/50001-1",
url = "http://www.sciencedirect.com/science/article/pii/B9780120777907500011",
author = "Isaac N. Bankman"
}

@article{Angenent2006,
author = {Angenent, S. and Pichon, Eric and Tannenbaum, Allen},
year = {2006},
month = {07},
pages = {365-396},
title = {Mathematical methods in medical image processing},
volume = {43},
journal = {Bulletin (new series) of the American Mathematical Society},
doi = {10.1090/S0273-0979-06-01104-9},
url = {https://www.ncbi.nlm.nih.gov/pmc/articles/PMC3640423/}
}

@misc{ wiki:001,
    author = "{Wikipedia contributors}",
    title = "Medical image computing --- {Wikipedia}{,} The Free Encyclopedia",
    year = "2019",
    howpublished = "\url{https://en.wikipedia.org/w/index.php?title=Medical_image_computing&oldid=919534878}",
    note = "[Online; accessed 6-October-2019]"
  }

@book{GhezziEtAl2003,
	Address = {Upper Saddle River, NJ, USA},
	Author = {Carlo Ghezzi and Mehdi Jazayeri and Dino Mandrioli},
	Date-Added = {2017-11-10 11:27:31 +0000},
	Date-Modified = {2017-11-10 11:27:31 +0000},
	Edition = {2nd},
	Keywords = {software engineering},
	Publisher = {Prentice Hall},
	Title = {Fundamentals of Software Engineering},
	Year = {2003}}

@book{HoffmanAndStrooper1995,
	Address = {New York, NY, USA},
	Author = {Daniel M. Hoffman and Paul A. Strooper},
	Date-Added = {2017-11-10 11:27:24 +0000},
	Date-Modified = {2017-11-10 11:27:24 +0000},
	Local-Url = {file://localhost/Users/smiths/LongTermArchives/Work/Research/References/SoftwareEngineering/software-design-automated-testing.pdf},
	Publisher = {International Thomson Computer Press},
	Title = {Software Design, Automated Testing, and Maintenance: A Practical Approach},
	Url = {https://pdfs.semanticscholar.org/2d2f/609de3c6d694b88b5b987b05bd5ec53be372.pdf},
	Year = {1995},
	Bdsk-File-1 = {YnBsaXN0MDDUAQIDBAUGJCVYJHZlcnNpb25YJG9iamVjdHNZJGFyY2hpdmVyVCR0b3ASAAGGoKgHCBMUFRYaIVUkbnVsbNMJCgsMDxJXTlMua2V5c1pOUy5vYmplY3RzViRjbGFzc6INDoACgAOiEBGABIAFgAdccmVsYXRpdmVQYXRoWWFsaWFzRGF0YV8QPC4uLy4uLy4uL3NlM3hhMy9SZWZlcmVuY2VNYXRlcmlhbC9Ib2ZmbWFuQW5kU3Ryb29wZXIxOTk1LnBkZtIXCxgZV05TLmRhdGFPEQHqAAAAAAHqAAIAAAxNYWNpbnRvc2ggSEQAAAAAAAAAAAAAAAAAAADOl3ODSCsAAAnHusUaSG9mZm1hbkFuZFN0cm9vcGVyMTk5NS5wZGYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgYWv9Q41tAAAAAAAAAAAAADAAMAAAkgAAAAAAAAAAAAAAAAAAAAEVJlZmVyZW5jZU1hdGVyaWFsAAAQAAgAAM6Xq8MAAAARAAgAANQ5DxAAAAABABQJx7rFCcYGMwASFacACPdmAAJkjgACAFhNYWNpbnRvc2ggSEQ6VXNlcnM6AHNtaXRoczoAUmVwb3M6AHNlM3hhMzoAUmVmZXJlbmNlTWF0ZXJpYWw6AEhvZmZtYW5BbmRTdHJvb3BlcjE5OTUucGRmAA4ANgAaAEgAbwBmAGYAbQBhAG4AQQBuAGQAUwB0AHIAbwBvAHAAZQByADEAOQA5ADUALgBwAGQAZgAPABoADABNAGEAYwBpAG4AdABvAHMAaAAgAEgARAASAEZVc2Vycy9zbWl0aHMvUmVwb3Mvc2UzeGEzL1JlZmVyZW5jZU1hdGVyaWFsL0hvZmZtYW5BbmRTdHJvb3BlcjE5OTUucGRmABMAAS8AABUAAgAN//8AAIAG0hscHR5aJGNsYXNzbmFtZVgkY2xhc3Nlc11OU011dGFibGVEYXRhox0fIFZOU0RhdGFYTlNPYmplY3TSGxwiI1xOU0RpY3Rpb25hcnmiIiBfEA9OU0tleWVkQXJjaGl2ZXLRJidUcm9vdIABAAgAEQAaACMALQAyADcAQABGAE0AVQBgAGcAagBsAG4AcQBzAHUAdwCEAI4AzQDSANoCyALKAs8C2gLjAvEC9QL8AwUDCgMXAxoDLAMvAzQAAAAAAAACAQAAAAAAAAAoAAAAAAAAAAAAAAAAAAADNg==},
	Bdsk-Url-1 = {http://%20citeseer.ist.psu.edu/428727.html}}

@techreport{SmithMcCutchanAndCarette2017,
	Author = {W. Spencer Smith and John McCutchan and Jacques Carette},
	Date-Added = {2017-09-14 19:16:56 +0000},
	Date-Modified = {2017-09-14 19:16:56 +0000},
	Institution = {McMaster University, Department of Computing and Software},
	Number = {CAS-17-01-SS},
	Title = {Commonality Analysis for a Family of Material Models},
	Type = {Technical Report},
	Year = {2017},
	Bdsk-File-1 = {YnBsaXN0MDDUAQIDBAUGJCVYJHZlcnNpb25YJG9iamVjdHNZJGFyY2hpdmVyVCR0b3ASAAGGoKgHCBMUFRYaIVUkbnVsbNMJCgsMDxJXTlMua2V5c1pOUy5vYmplY3RzViRjbGFzc6INDoACgAOiEBGABIAFgAdccmVsYXRpdmVQYXRoWWFsaWFzRGF0YV8QTi4uLy4uLy4uL09MRF9TVk4vbW1zY09MRF9TVk4vRmFtaWx5T2ZNYXRlcmlhbE1vZGVscy9GYW1pbHlPZk1hdGVyaWFsTW9kZWxzLnBkZtIXCxgZV05TLmRhdGFPEQIYAAAAAAIYAAIAAAxNYWNpbnRvc2ggSEQAAAAAAAAAAAAAAAAAAADOl3ODSCsAAAKR0H8aRmFtaWx5T2ZNYXRlcmlhbE1vZGVscy5wZGYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAApHQ7NAhLREAAAAAAAAAAAADAAQAAAkgAAAAAAAAAAAAAAAAAAAAFkZhbWlseU9mTWF0ZXJpYWxNb2RlbHMAEAAIAADOl6vDAAAAEQAIAADQIWVRAAAAAQAYApHQfwKRxEwJMf6nABIVpwAI92YAAmSOAAIAa01hY2ludG9zaCBIRDpVc2VyczoAc21pdGhzOgBSZXBvczoAT0xEX1NWTjoAbW1zY09MRF9TVk46AEZhbWlseU9mTWF0ZXJpYWxNb2RlbHM6AEZhbWlseU9mTWF0ZXJpYWxNb2RlbHMucGRmAAAOADYAGgBGAGEAbQBpAGwAeQBPAGYATQBhAHQAZQByAGkAYQBsAE0AbwBkAGUAbABzAC4AcABkAGYADwAaAAwATQBhAGMAaQBuAHQAbwBzAGgAIABIAEQAEgBYVXNlcnMvc21pdGhzL1JlcG9zL09MRF9TVk4vbW1zY09MRF9TVk4vRmFtaWx5T2ZNYXRlcmlhbE1vZGVscy9GYW1pbHlPZk1hdGVyaWFsTW9kZWxzLnBkZgATAAEvAAAVAAIADf//AACABtIbHB0eWiRjbGFzc25hbWVYJGNsYXNzZXNdTlNNdXRhYmxlRGF0YaMdHyBWTlNEYXRhWE5TT2JqZWN00hscIiNcTlNEaWN0aW9uYXJ5oiIgXxAPTlNLZXllZEFyY2hpdmVy0SYnVHJvb3SAAQAIABEAGgAjAC0AMgA3AEAARgBNAFUAYABnAGoAbABuAHEAcwB1AHcAhACOAN8A5ADsAwgDCgMPAxoDIwMxAzUDPANFA0oDVwNaA2wDbwN0AAAAAAAAAgEAAAAAAAAAKAAAAAAAAAAAAAAAAAAAA3Y=}}

@inproceedings{SmithEtAl2008,
	Address = {Leipzig, Germany},
	Author = {W. Spencer Smith and John McCutchan and Jacques Carette},
	Booktitle = {Proceedings of the First International Workshop on Software Engineering for Computational Science and Engineering (SECSE 2008)},
	Date-Added = {2017-09-14 19:15:18 +0000},
	Date-Modified = {2017-09-14 19:15:18 +0000},
	Month = {May},
	Note = {8 pp},
	Organization = {In conjunction with the 30th International Conference on Software Engineering (ICSE)},
	Title = {Commonality Analysis of Families of Physical Models for use in Scientific Computing},
	Url = {http://www.cse.msstate.edu/~SECSE08/schedule.htm},
	Year = {2008},
	Bdsk-File-1 = {YnBsaXN0MDDUAQIDBAUGJCVYJHZlcnNpb25YJG9iamVjdHNZJGFyY2hpdmVyVCR0b3ASAAGGoKgHCBMUFRYaIVUkbnVsbNMJCgsMDxJXTlMua2V5c1pOUy5vYmplY3RzViRjbGFzc6INDoACgAOiEBGABIAFgAdccmVsYXRpdmVQYXRoWWFsaWFzRGF0YV8QPi4uLy4uLy4uL09MRF9TVk4vbW1zY09MRF9TVk4vU0VDU0UwOC9TbWl0aEV0QWxfQXNTdWJtaXR0ZWQucGRm0hcLGBlXTlMuZGF0YU8RAegAAAAAAegAAgAADE1hY2ludG9zaCBIRAAAAAAAAAAAAAAAAAAAAM6Xc4NIKwAAApHRBxlTbWl0aEV0QWxfQXNTdWJtaXR0ZWQucGRmAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACkdFu0CEtFAAAAAAAAAAAAAMABAAACSAAAAAAAAAAAAAAAAAAAAAHU0VDU0UwOAAAEAAIAADOl6vDAAAAEQAIAADQIWVUAAAAAQAYApHRBwKRxEwJMf6nABIVpwAI92YAAmSOAAIAW01hY2ludG9zaCBIRDpVc2VyczoAc21pdGhzOgBSZXBvczoAT0xEX1NWTjoAbW1zY09MRF9TVk46AFNFQ1NFMDg6AFNtaXRoRXRBbF9Bc1N1Ym1pdHRlZC5wZGYAAA4ANAAZAFMAbQBpAHQAaABFAHQAQQBsAF8AQQBzAFMAdQBiAG0AaQB0AHQAZQBkAC4AcABkAGYADwAaAAwATQBhAGMAaQBuAHQAbwBzAGgAIABIAEQAEgBIVXNlcnMvc21pdGhzL1JlcG9zL09MRF9TVk4vbW1zY09MRF9TVk4vU0VDU0UwOC9TbWl0aEV0QWxfQXNTdWJtaXR0ZWQucGRmABMAAS8AABUAAgAN//8AAIAG0hscHR5aJGNsYXNzbmFtZVgkY2xhc3Nlc11OU011dGFibGVEYXRhox0fIFZOU0RhdGFYTlNPYmplY3TSGxwiI1xOU0RpY3Rpb25hcnmiIiBfEA9OU0tleWVkQXJjaGl2ZXLRJidUcm9vdIABAAgAEQAaACMALQAyADcAQABGAE0AVQBgAGcAagBsAG4AcQBzAHUAdwCEAI4AzwDUANwCyALKAs8C2gLjAvEC9QL8AwUDCgMXAxoDLAMvAzQAAAAAAAACAQAAAAAAAAAoAAAAAAAAAAAAAAAAAAADNg==},
	Bdsk-Url-1 = {http://www.cse.msstate.edu/~SECSE08/schedule.htm}}

@inproceedings{Smith2006,
	Address = {Minneapolis / St.\ Paul, Minnesota},
	Author = {W. Spencer Smith},
	Booktitle = {Proceedings of the 14th IEEE International Requirements Engineering Conference, RE 2006},
	Date-Added = {2017-09-14 19:15:09 +0000},
	Date-Modified = {2017-09-14 19:15:09 +0000},
	Local-Url = {/Users/smiths/Work/Research/Papers/RE_2006/Smith2006_VersionAsPublished.pdf},
	Pages = {209--218},
	Title = {Systematic Development of Requirements Documentation for General Purpose Scientific Computing Software},
	Url = {http://www.ifi.unizh.ch/req/events/RE06/},
	Year = {2006},
	Bdsk-File-1 = {YnBsaXN0MDDUAQIDBAUGJCVYJHZlcnNpb25YJG9iamVjdHNZJGFyY2hpdmVyVCR0b3ASAAGGoKgHCBMUFRYaIVUkbnVsbNMJCgsMDxJXTlMua2V5c1pOUy5vYmplY3RzViRjbGFzc6INDoACgAOiEBGABIAFgAdccmVsYXRpdmVQYXRoWWFsaWFzRGF0YV8QSS4uLy4uLy4uLy4uL1dvcmsvUmVzZWFyY2gvUGFwZXJzL1JFXzIwMDYvU21pdGgyMDA2X1ZlcnNpb25Bc1B1Ymxpc2hlZC5wZGbSFwsYGVdOUy5kYXRhTxEB+AAAAAAB+AACAAAMTWFjaW50b3NoIEhEAAAAAAAAAAAAAAAAAAAAzpdzg0grAAAAFwtsH1NtaXRoMjAwNl9WZXJzaW9uQXNQIzE3ODg5Mi5wZGYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXiJLPIuEzUERGIENBUk8ABAAFAAAJIAAAAAAAAAAAAAAAAAAAAAdSRV8yMDA2AAAQAAgAAM6Xq8MAAAARAAgAAM8jJ4MAAAABABgAFwtsABcCCwAXAE0AFv3tAAj3ZgACZI4AAgBcTWFjaW50b3NoIEhEOlVzZXJzOgBzbWl0aHM6AFdvcms6AFJlc2VhcmNoOgBQYXBlcnM6AFJFXzIwMDY6AFNtaXRoMjAwNl9WZXJzaW9uQXNQIzE3ODg5Mi5wZGYADgBCACAAUwBtAGkAdABoADIAMAAwADYAXwBWAGUAcgBzAGkAbwBuAEEAcwBQAHUAYgBsAGkAcwBoAGUAZAAuAHAAZABmAA8AGgAMAE0AYQBjAGkAbgB0AG8AcwBoACAASABEABIASlVzZXJzL3NtaXRocy9Xb3JrL1Jlc2VhcmNoL1BhcGVycy9SRV8yMDA2L1NtaXRoMjAwNl9WZXJzaW9uQXNQdWJsaXNoZWQucGRmABMAAS8AABUAAgAN//8AAIAG0hscHR5aJGNsYXNzbmFtZVgkY2xhc3Nlc11OU011dGFibGVEYXRhox0fIFZOU0RhdGFYTlNPYmplY3TSGxwiI1xOU0RpY3Rpb25hcnmiIiBfEA9OU0tleWVkQXJjaGl2ZXLRJidUcm9vdIABAAgAEQAaACMALQAyADcAQABGAE0AVQBgAGcAagBsAG4AcQBzAHUAdwCEAI4A2gDfAOcC4wLlAuoC9QL+AwwDEAMXAyADJQMyAzUDRwNKA08AAAAAAAACAQAAAAAAAAAoAAAAAAAAAAAAAAAAAAADUQ==},
	Bdsk-Url-1 = {http://www.ifi.unizh.ch/req/events/RE06/}}

@article{SmithEtAl2007,
	Author = {W. Spencer Smith and Lei Lai and Ridha Khedri},
	Date-Added = {2017-09-14 15:47:22 +0000},
	Date-Modified = {2017-09-14 15:47:22 +0000},
	Journal = {Reliable Computing, Special Issue on Reliable Engineering Computation},
	Local-Url = {/Users/smiths/Work/Research/Papers/ReliableComputing/SmithLaiAndKhedri2007fulltext.pdf},
	Month = {February},
	Number = {1},
	Pages = {83--107},
	Title = {Requirements Analysis for Engineering Computation: A Systematic Approach for Improving Software Reliability},
	Volume = {13},
	Year = {2007},
	Bdsk-File-1 = {YnBsaXN0MDDUAQIDBAUGJCVYJHZlcnNpb25YJG9iamVjdHNZJGFyY2hpdmVyVCR0b3ASAAGGoKgHCBMUFRYaIVUkbnVsbNMJCgsMDxJXTlMua2V5c1pOUy5vYmplY3RzViRjbGFzc6INDoACgAOiEBGABIAFgAdccmVsYXRpdmVQYXRoWWFsaWFzRGF0YV8QSC4uLy4uLy4uL3NlNHNjL1NjaUNvbXBBbmRTb2Z0RW5nUGFwZXJzL1NtaXRoTGFpQW5kS2hlZHJpMjAwN2Z1bGx0ZXh0LnBkZtIXCxgZV05TLmRhdGFPEQIUAAAAAAIUAAIAAAxNYWNpbnRvc2ggSEQAAAAAAAAAAAAAAAAAAADOl3ODSCsAAAkx/Q0fU21pdGhMYWlBbmRLaGVkcmkyMCM5MzFGRDYwLnBkZgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACTH9YNNvBNMAAAAAAAAAAAADAAMAAAkgAAAAAAAAAAAAAAAAAAAAF1NjaUNvbXBBbmRTb2Z0RW5nUGFwZXJzAAAQAAgAAM6Xq8MAAAARAAgAANNvPRMAAAABABQJMf0NCTHuxwASFacACPdmAAJkjgACAGJNYWNpbnRvc2ggSEQ6VXNlcnM6AHNtaXRoczoAUmVwb3M6AHNlNHNjOgBTY2lDb21wQW5kU29mdEVuZ1BhcGVyczoAU21pdGhMYWlBbmRLaGVkcmkyMCM5MzFGRDYwLnBkZgAOAEQAIQBTAG0AaQB0AGgATABhAGkAQQBuAGQASwBoAGUAZAByAGkAMgAwADAANwBmAHUAbABsAHQAZQB4AHQALgBwAGQAZgAPABoADABNAGEAYwBpAG4AdABvAHMAaAAgAEgARAASAFJVc2Vycy9zbWl0aHMvUmVwb3Mvc2U0c2MvU2NpQ29tcEFuZFNvZnRFbmdQYXBlcnMvU21pdGhMYWlBbmRLaGVkcmkyMDA3ZnVsbHRleHQucGRmABMAAS8AABUAAgAN//8AAIAG0hscHR5aJGNsYXNzbmFtZVgkY2xhc3Nlc11OU011dGFibGVEYXRhox0fIFZOU0RhdGFYTlNPYmplY3TSGxwiI1xOU0RpY3Rpb25hcnmiIiBfEA9OU0tleWVkQXJjaGl2ZXLRJidUcm9vdIABAAgAEQAaACMALQAyADcAQABGAE0AVQBgAGcAagBsAG4AcQBzAHUAdwCEAI4A2QDeAOYC/gMAAwUDEAMZAycDKwMyAzsDQANNA1ADYgNlA2oAAAAAAAACAQAAAAAAAAAoAAAAAAAAAAAAAAAAAAADbA==},
	Bdsk-File-2 = {YnBsaXN0MDDUAQIDBAUGJCVYJHZlcnNpb25YJG9iamVjdHNZJGFyY2hpdmVyVCR0b3ASAAGGoKgHCBMUFRYaIVUkbnVsbNMJCgsMDxJXTlMua2V5c1pOUy5vYmplY3RzViRjbGFzc6INDoACgAOiEBGABIAFgAdccmVsYXRpdmVQYXRoWWFsaWFzRGF0YV8QVC4uLy4uLy4uLy4uL1dvcmsvUmVzZWFyY2gvUGFwZXJzL1JlbGlhYmxlQ29tcHV0aW5nL1NtaXRoTGFpQW5kS2hlZHJpMjAwN2Z1bGx0ZXh0LnBkZtIXCxgZV05TLmRhdGFPEQIaAAAAAAIaAAIAAAxNYWNpbnRvc2ggSEQAAAAAAAAAAAAAAAAAAADOl3ODSCsAAAAXC24fU21pdGhMYWlBbmRLaGVkcmkyMDAjMTc4ODYzLnBkZgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABeIY88i4TNQREYgQ0FSTwAEAAUAAAkgAAAAAAAAAAAAAAAAAAAAEVJlbGlhYmxlQ29tcHV0aW5nAAAQAAgAAM6Xq8MAAAARAAgAAM8jJ4MAAAABABgAFwtuABcCCwAXAE0AFv3tAAj3ZgACZI4AAgBmTWFjaW50b3NoIEhEOlVzZXJzOgBzbWl0aHM6AFdvcms6AFJlc2VhcmNoOgBQYXBlcnM6AFJlbGlhYmxlQ29tcHV0aW5nOgBTbWl0aExhaUFuZEtoZWRyaTIwMCMxNzg4NjMucGRmAA4ARAAhAFMAbQBpAHQAaABMAGEAaQBBAG4AZABLAGgAZQBkAHIAaQAyADAAMAA3AGYAdQBsAGwAdABlAHgAdAAuAHAAZABmAA8AGgAMAE0AYQBjAGkAbgB0AG8AcwBoACAASABEABIAVVVzZXJzL3NtaXRocy9Xb3JrL1Jlc2VhcmNoL1BhcGVycy9SZWxpYWJsZUNvbXB1dGluZy9TbWl0aExhaUFuZEtoZWRyaTIwMDdmdWxsdGV4dC5wZGYAABMAAS8AABUAAgAN//8AAIAG0hscHR5aJGNsYXNzbmFtZVgkY2xhc3Nlc11OU011dGFibGVEYXRhox0fIFZOU0RhdGFYTlNPYmplY3TSGxwiI1xOU0RpY3Rpb25hcnmiIiBfEA9OU0tleWVkQXJjaGl2ZXLRJidUcm9vdIABAAgAEQAaACMALQAyADcAQABGAE0AVQBgAGcAagBsAG4AcQBzAHUAdwCEAI4A5QDqAPIDEAMSAxcDIgMrAzkDPQNEA00DUgNfA2IDdAN3A3wAAAAAAAACAQAAAAAAAAAoAAAAAAAAAAAAAAAAAAADfg==}}

@inproceedings{SmithAndLai2005,
	Address = {Paris, France},
	Author = {W. Spencer Smith and Lei Lai},
	Booktitle = {Proceedings of the First International Workshop on Situational Requirements Engineering Processes -- Methods, Techniques and Tools to Support Situation-Specific Requirements Engineering Processes, SREP'05},
	Date-Added = {2017-09-14 15:47:18 +0000},
	Date-Modified = {2017-09-14 15:47:18 +0000},
	Editor = {J. Ralyt\'{e} and P. \.{A}gerfalk and N. Kraiem},
	Local-Url = {file://localhost/Users/smiths/Work/Research/Papers/SREP05/SREP05_ReformatAndRevise/SmithAndLai_2005.pdf},
	Organization = {In conjunction with 13th IEEE International Requirements Engineering Conference},
	Pages = {107--121},
	Title = {A New Requirements Template for Scientific Computing},
	Year = {2005},
	Bdsk-File-1 = {YnBsaXN0MDDUAQIDBAUGJCVYJHZlcnNpb25YJG9iamVjdHNZJGFyY2hpdmVyVCR0b3ASAAGGoKgHCBMUFRYaIVUkbnVsbNMJCgsMDxJXTlMua2V5c1pOUy5vYmplY3RzViRjbGFzc6INDoACgAOiEBGABIAFgAdccmVsYXRpdmVQYXRoWWFsaWFzRGF0YV8QVS4uLy4uLy4uLy4uL1dvcmsvUmVzZWFyY2gvUGFwZXJzL1NSRVAwNS9TUkVQMDVfUmVmb3JtYXRBbmRSZXZpc2UvU21pdGhBbmRMYWlfMjAwNS5wZGbSFwsYGVdOUy5kYXRhTxECDgAAAAACDgACAAAMTWFjaW50b3NoIEhEAAAAAAAAAAAAAAAAAAAAzpdzg0grAAAAF0DvFFNtaXRoQW5kTGFpXzIwMDUucGRmAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXntPPIuJUAAAAAAAAAAAABAAGAAAJIAAAAAAAAAAAAAAAAAAAABhTUkVQMDVfUmVmb3JtYXRBbmRSZXZpc2UAEAAIAADOl6vDAAAAEQAIAADPIyikAAAAAQAcABdA7wAXC3oAFwILABcATQAW/e0ACPdmAAJkjgACAGpNYWNpbnRvc2ggSEQ6VXNlcnM6AHNtaXRoczoAV29yazoAUmVzZWFyY2g6AFBhcGVyczoAU1JFUDA1OgBTUkVQMDVfUmVmb3JtYXRBbmRSZXZpc2U6AFNtaXRoQW5kTGFpXzIwMDUucGRmAA4AKgAUAFMAbQBpAHQAaABBAG4AZABMAGEAaQBfADIAMAAwADUALgBwAGQAZgAPABoADABNAGEAYwBpAG4AdABvAHMAaAAgAEgARAASAFZVc2Vycy9zbWl0aHMvV29yay9SZXNlYXJjaC9QYXBlcnMvU1JFUDA1L1NSRVAwNV9SZWZvcm1hdEFuZFJldmlzZS9TbWl0aEFuZExhaV8yMDA1LnBkZgATAAEvAAAVAAIADf//AACABtIbHB0eWiRjbGFzc25hbWVYJGNsYXNzZXNdTlNNdXRhYmxlRGF0YaMdHyBWTlNEYXRhWE5TT2JqZWN00hscIiNcTlNEaWN0aW9uYXJ5oiIgXxAPTlNLZXllZEFyY2hpdmVy0SYnVHJvb3SAAQAIABEAGgAjAC0AMgA3AEAARgBNAFUAYABnAGoAbABuAHEAcwB1AHcAhACOAOYA6wDzAwUDBwMMAxcDIAMuAzIDOQNCA0cDVANXA2kDbANxAAAAAAAAAgEAAAAAAAAAKAAAAAAAAAAAAAAAAAAAA3M=}}

@book{RobertsonAndRobertson2012,
	Author = {James Robertson and Suzanne Robertson},
	Date-Added = {2016-09-22 13:54:40 +0000},
	Date-Modified = {2016-09-22 14:01:42 +0000},
	Edition = {16},
	Publisher = {Atlantic Systems Guild Limited},
	Title = {Volere Requirements Specification Template},
	Year = {2012}}

@article{ParnasAndClements1986,
	Author = {David L. Parnas and P.C. Clements},
	Date-Added = {2016-09-10 13:11:57 +0000},
	Date-Modified = {2016-09-10 13:11:57 +0000},
	Journal = {IEEE Transactions on Software Engineering},
	Number = {2},
	Pages = {251--257},
	Title = {A Rational Design Process: How and Why to Fake it},
	Volume = {12},
	Year = {February 1986},
	Bdsk-File-1 = {YnBsaXN0MDDUAQIDBAUGJCVYJHZlcnNpb25YJG9iamVjdHNZJGFyY2hpdmVyVCR0b3ASAAGGoKgHCBMUFRYaIVUkbnVsbNMJCgsMDxJXTlMua2V5c1pOUy5vYmplY3RzViRjbGFzc6INDoACgAOiEBGABIAFgAdccmVsYXRpdmVQYXRoWWFsaWFzRGF0YV8QQC4uLy4uLy4uL3NlNHNjL1NjaUNvbXBBbmRTb2Z0RW5nUGFwZXJzL1Bhcm5hc0FuZENsZW1lbnRzMTk4Ni5wZGbSFwsYGVdOUy5kYXRhTxEB9gAAAAAB9gACAAAMTWFjaW50b3NoIEhEAAAAAAAAAAAAAAAAAAAAzpdzg0grAAAJMf0NGVBhcm5hc0FuZENsZW1lbnRzMTk4Ni5wZGYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkx/UPTbwTTAAAAAAAAAAAAAwADAAAJIAAAAAAAAAAAAAAAAAAAABdTY2lDb21wQW5kU29mdEVuZ1BhcGVycwAAEAAIAADOl6vDAAAAEQAIAADTbz0TAAAAAQAUCTH9DQkx7scAEhWnAAj3ZgACZI4AAgBcTWFjaW50b3NoIEhEOlVzZXJzOgBzbWl0aHM6AFJlcG9zOgBzZTRzYzoAU2NpQ29tcEFuZFNvZnRFbmdQYXBlcnM6AFBhcm5hc0FuZENsZW1lbnRzMTk4Ni5wZGYADgA0ABkAUABhAHIAbgBhAHMAQQBuAGQAQwBsAGUAbQBlAG4AdABzADEAOQA4ADYALgBwAGQAZgAPABoADABNAGEAYwBpAG4AdABvAHMAaAAgAEgARAASAEpVc2Vycy9zbWl0aHMvUmVwb3Mvc2U0c2MvU2NpQ29tcEFuZFNvZnRFbmdQYXBlcnMvUGFybmFzQW5kQ2xlbWVudHMxOTg2LnBkZgATAAEvAAAVAAIADf//AACABtIbHB0eWiRjbGFzc25hbWVYJGNsYXNzZXNdTlNNdXRhYmxlRGF0YaMdHyBWTlNEYXRhWE5TT2JqZWN00hscIiNcTlNEaWN0aW9uYXJ5oiIgXxAPTlNLZXllZEFyY2hpdmVy0SYnVHJvb3SAAQAIABEAGgAjAC0AMgA3AEAARgBNAFUAYABnAGoAbABuAHEAcwB1AHcAhACOANEA1gDeAtgC2gLfAuoC8wMBAwUDDAMVAxoDJwMqAzwDPwNEAAAAAAAAAgEAAAAAAAAAKAAAAAAAAAAAAAAAAAAAA0Y=}}


text:
package command

type Visitor interface {
	VisitBefore(*Command) VisitorReturnCode
	VisitAfter(*Command) error
}

type Acceptor interface {
	Accept(*Command, Visitor) error
}

type VisitorReturnCode int
const (
	VisitorContinue VisitorReturnCode = iota
	VisitorStop
	VisitorInterrupted
)

repository: tsouza/yasmim

repo_name: tsouza/yasmim


text:
package materialize

import (
	"testing"
)

func TestContext_WithError(t *testing.T) {
	m := newTestMaterializer(t)
	var exp *Foo
	m.MustAdd(func(x *Context) (*Foo, error) {
		v := &Foo{id: 1234}
		x.Resolve(v)
		exp = v
		return v, nil
	})
	var foo *Foo
	err := m.Materialize(&foo)
	if err != nil {
		t.Fatalf("failed to Materialize: %s", err)
	}
	if exp == nil {
		t.Fatal("factory didn't be called")
	}
	if foo != exp {
		t.Fatal("materialized Foo is not matched")
	}
}

func TestContext_WithoutError(t *testing.T) {
	m := newTestMaterializer(t)
	var exp *Foo
	m.MustAdd(func(x *Context) *Foo {
		v := &Foo{id: 1234}
		x.Resolve(v)
		exp = v
		return v
	})
	var foo *Foo
	err := m.Materialize(&foo)
	if err != nil {
		t.Fatalf("failed to Materialize: %s", err)
	}
	if foo != exp {
		t.Fatal("materialized Foo is not matched")
	}
}

func TestContext_WithoutResolve(t *testing.T) {
	m := newTestMaterializer(t)
	var exp *Foo
	m.MustAdd(func(x *Context) *Foo {
		v := &Foo{id: 1234}
		exp = v
		return v
	})
	var foo *Foo
	err := m.Materialize(&foo)
	if err != nil {
		t.Fatalf("failed to Materialize: %s", err)
	}
	if foo != exp {
		t.Fatal("materialized Foo is not matched")
	}
}

type FooX struct {
	foo *Foo
	bar *Bar
}

func TestContext_Materialize(t *testing.T) {
	m := newTestMaterializer(t)
	var (
		z0 *FooX
		z1 *Foo
		z2 *Bar
	)
	m.MustAdd(func(x *Context) (*FooX, error) {
		z0 = &FooX{}
		x.Resolve(z0).Materialize(&z0.foo).Materialize(&z0.bar)
		return z0, nil
	}).MustAdd(func(x *Context) (*Foo, error) {
		z1 = &Foo{id: 1234}
		return z1, nil
	}).MustAdd(func(x *Context) (*Bar, error) {
		z2 = &Bar{id: 9876}
		return z2, nil
	})

	var fooX *FooX
	err := m.Materialize(&fooX)
	if err != nil {
		t.Fatalf("failed to Materialize: %s", err)
	}

	if fooX != z0 {
		t.Fatalf("materialized FooX unmatched: %+v %+v", fooX, z0)
	}
	if fooX.foo != z1 {
		t.Fatalf("materialized FooX.foo unmatched: %+v %+v", fooX.foo, z1)
	}
	if fooX.bar != z2 {
		t.Fatalf("materialized FooX.bar unmatched: %+v %+v", fooX.bar, z2)
	}
	if fooX.foo.id != 1234 {
		t.Fatalf("unexpected fooX foo: %+v", fooX.foo)
	}
	if fooX.bar.id != 9876 {
		t.Fatalf("unexpected fooX bar: %+v", fooX.bar)
	}
}

type Circular1A struct {
	b *Circular1B
}

type Circular1B struct {
	a *Circular1A
}

func TestContext_Circular(t *testing.T) {
	m := newTestMaterializer(t)
	var (
		zA *Circular1A
		zB *Circular1B
	)
	m.MustAdd(func(x *Context) *Circular1A {
		zA = &Circular1A{}
		x.Resolve(zA).Materialize(&zA.b)
		return zA
	}).MustAdd(func(x *Context) *Circular1B {
		zB = &Circular1B{}
		x.Resolve(zB).Materialize(&zB.a)
		return zB
	})

	var rA *Circular1A
	err := m.Materialize(&rA)
	if err != nil {
		t.Fatalf("failed to Materialize %T: %s", rA, err)
	}
	if rA != zA {
		t.Fatalf("materialized rA unmatched: %+v %+v", rA, zA)
	}
	if rA.b != zB {
		t.Fatal("materialized rA.b unmatched")
	}
	if rA.b.a != zA {
		t.Fatal("materialized rA.b.a unmatched")
	}
	// completed circular

	var rB *Circular1B
	err = m.Materialize(&rB)
	if err != nil {
		t.Fatalf("failed to Materialize %T: %s", rB, err)
	}
	if rB != zB {
		t.Fatalf("materialized rB unmatched: %+v %+v", rB, zB)
	}
	if rB.a != zA {
		t.Fatal("materialized rB.b unmatched")
	}
	if rB.a.b != zB {
		t.Fatal("materialized rB.b.a unmatched")
	}
}

func TestContext_Option(t *testing.T) {
	m := newTestMaterializer(t)
	var (
		z0 *FooX
		z2 *Bar
	)
	m.MustAdd(func(x *Context) (*FooX, error) {
		z0 = &FooX{}
		x.Resolve(z0)
		err := x.Option(&z0.foo)
		if err == nil {
			t.Fatal("Option(*Foo) should be failed")
		}
		if err.Error() != "not found factory for type:*materialize.Foo tags:[]" {
			t.Fatalf("Option(*Foo) returns unexpected error: %s", err)
		}
		err = x.Option(&z0.bar)
		if err != nil {
			t.Fatalf("Option(*Bar) failed: %s", err)
		}
		return z0, nil
	}).MustAdd(func(x *Context) (*Bar, error) {
		z2 = &Bar{id: 9999}
		return z2, nil
	})

	var fooX *FooX
	err := m.Materialize(&fooX)
	if err != nil {
		t.Fatalf("failed to materialize: %s", err)
	}
	if fooX != z0 {
		t.Fatalf("materialized FooX unmatched: %+v %+v", fooX, z0)
	}
	if fooX.foo != nil {
		t.Fatalf("FooX.foo should be nil: %+v", fooX.foo)
	}
	if fooX.bar != z2 {
		t.Fatalf("materialized FooX.bar unmatched: %+v %+v", fooX.bar, z2)
	}
	if fooX.bar.id != 9999 {
		t.Fatalf("unexpected fooX bar: %+v", fooX.bar)
	}
}

repository: koron-go/materialize

repo_name: koron-go/materialize


text:
@article
{
   dlib,
   author={Davis E. King},
   title={Dlib-ml: A Machine Learning Toolkit},
   journal={Journal of Machine Learning Research},
   volume={10},
   year={2009},
   pages={1755-1758}
}

@misc
{
  libs_intro,
  title = {Introduction to LIBS},
  howpublished = {\url{https://www.nist.gov/pml/atomic-spectra-database}},
  urldate = {2019-07-19}
}

# not cited!
@article
{
   measures,
   author={M. Sokolova and G. Lapalme},
   title={A systematic analysis of performance measures for classification tasks.},
   journal={Information Processing and Management},
   volume={45},
   year={2009},
   pages={427-437}
}

@article
{
   radiance,
   author={Palmer and M. James },
   title={The SI system and SI units for Radiometry and photometry},
   journal={Information Processing and Management},
   year={2012},
}

@article
{
   karkonosze,
   author={Monika Mierczyk and Bogdan Zagajewski 1 and Anna Jarocińska and Roksana Knapik},
   title={"Assessment of Imaging Spectroscopy for rock identification in the Karkonosze Mountains, Poland"},
   journal={Miscellanea Geographica},
   volume={20},
   year={2016},
   pages={34-40}
}

@misc
{
  nitron,
  title = {Thermo Scientific™ Niton™ portable X-ray fluorescence (XRF) analyzer},
  howpublished = {\url{https://www.thermofisher.com/bg/en/home/industrial/spectroscopy-elemental-isotope-analysis/portable-analysis-material-id/portable-mining-exploration-solutions/portable-hard-rock-mining-analysis.html}},
  urldate = {2020-04-18}
}

@article
{
   curiosity,
   author={B. Salle and J. Lacour and P. Mauchien and P. Fichet and S Maurice et al},
   title={Comparative study of different methodologies for quantitative rock analysis by Laser-Induced Breakdown Spectroscopy in a simulated Martian atmosphere},
   journal={Spectrochimica Acta Part B-Atomic Spectroscopy},
   volume={61},
   year={2006},
   pages={301-313}
}

@article
{
   exomars,
   author={Fernando Rull and Berit Ahlers and Gregory Bazalgette Courreges-Lacoste},
   title={Combined Raman spectrometer/laser-induced spectrometer for the next ESA mission to breakdown Mars},
   journal={Spectrochimica Acta Part A Molecular and Biomolecular Spectroscopy },
   volume={68},
   year={2008},
   pages={1023-8}
}

@article
{
   microphone,
   author={S. Maurice et al},
   title={A Microphone Supporting LIBS Investigation on Mars},
   journal={LunarandPlanetaryScienceConference},
   volume={47},
   year={2016},
}

@article
{
   lidar,
   author={Leonardo Campos Inocencio et al},
   title={Spectral Pattern Classification in Lidar Data for RockIdentification in Outcrops},
   journal={The Scientific World Journal},
   year={2014}
}

@article
{
   andrecut,
   author={M. Andrecut},
   title={Parallel GPU Implementation of Iterative PCA Algorithms},
   journal={Journal of Computational Biology},
   volume={16},
   year={Dec 2009}
}

repository: MiroslavVitkov/rocks

repo_name: MiroslavVitkov/rocks


text:
SUMMARY = "Linux kernel firmware files from Raspbian distribution"
DESCRIPTION = "Updated firmware files for RaspberryPi hardware. \
RPi-Distro obtains these directly from Cypress; they are not submitted \
to linux-firmware for general use."
HOMEPAGE = "https://github.com/RPi-Distro/firmware-nonfree"
SECTION = "kernel"

# In maintained upstream linux-firmware:
# * brcmfmac43430-sdio falls under LICENSE.cypress
# * brcmfmac43455-sdio falls under LICENSE.broadcom_bcm43xx
# * brcmfmac43456-sdio falls under LICENSE.broadcom_bcm43xx
#
# It is likely[^1] that both of these should be under LICENSE.cypress.
# Further, at this time the text of LICENSE.broadcom_bcm43xx is the same
# in linux-firmware and RPi-Distro/firmware-nonfree, but this may
# change.
#
# Rather than make assumptions about what's supposed to be what, we'll
# use the license implied by the source of these files, named to avoid
# conflicts with linux-firmware.
#
# [^1]: https://github.com/RPi-Distro/bluez-firmware/issues/1
LICENSE = "\
    Firmware-broadcom_bcm43xx-rpidistro \
"
LIC_FILES_CHKSUM = "\
    file://debian/config/brcm80211/LICENSE;md5=8cba1397cda6386db37210439a0da3eb \
"

# These are not common licenses, set NO_GENERIC_LICENSE for them
# so that the license files will be copied from fetched source
NO_GENERIC_LICENSE[Firmware-broadcom_bcm43xx-rpidistro] = "debian/config/brcm80211/LICENSE"

SRC_URI = "git://github.com/RPi-Distro/firmware-nonfree;branch=bullseye;protocol=https"

SRCREV = "b3eec612566ca08913f0830d299f4df70297428f"
PV = "20210315-3+rpt3"

S = "${WORKDIR}/git"

inherit allarch

CLEANBROKEN = "1"

do_compile() {
    :
}

do_install() {
    install -d ${D}${nonarch_base_libdir}/firmware/brcm ${D}${nonarch_base_libdir}/firmware/cypress

    cp debian/config/brcm80211/LICENSE ${D}${nonarch_base_libdir}/firmware/LICENSE.broadcom_bcm43xx-rpidistro

    # Replace outdated linux-firmware files with updated ones from
    # raspbian firmware-nonfree. Raspbian adds blobs and nvram
    # definitions that are also necessary so copy those too.
    for fw in brcmfmac43430-sdio brcmfmac43436-sdio brcmfmac43436s-sdio brcmfmac43455-sdio brcmfmac43456-sdio ; do
        cp -R --no-dereference --preserve=mode,links -v debian/config/brcm80211/brcm/${fw}.* ${D}${nonarch_base_libdir}/firmware/brcm/
    done
    cp -R --no-dereference --preserve=mode,links -v debian/config/brcm80211/cypress/* ${D}${nonarch_base_libdir}/firmware/cypress/
    # add compat links. Fixes errors like
    # brcmfmac mmc1:0001:1: Direct firmware load for brcm/brcmfmac43455-sdio.raspberrypi,4-model-compute-module.txt failed with error -2
    ln -s brcmfmac43455-sdio.txt ${D}${nonarch_base_libdir}/firmware/brcm/brcmfmac43455-sdio.raspberrypi,4-compute-module.txt
}

PACKAGES = "\
    ${PN}-broadcom-license \
    ${PN}-bcm43430 \
    ${PN}-bcm43455 \
    ${PN}-bcm43456 \
    ${PN}-bcm43436 \
    ${PN}-bcm43436s \
"

LICENSE:${PN}-bcm43430 = "Firmware-broadcom_bcm43xx-rpidistro"
LICENSE:${PN}-bcm43436 = "Firmware-broadcom_bcm43xx-rpidistro"
LICENSE:${PN}-bcm43436s = "Firmware-broadcom_bcm43xx-rpidistro"
LICENSE:${PN}-bcm43455 = "Firmware-broadcom_bcm43xx-rpidistro"
LICENSE:${PN}-bcm43456 = "Firmware-broadcom_bcm43xx-rpidistro"
LICENSE:${PN}-broadcom-license = "Firmware-broadcom_bcm43xx-rpidistro"
FILES:${PN}-broadcom-license = "${nonarch_base_libdir}/firmware/LICENSE.broadcom_bcm43xx-rpidistro"
FILES:${PN}-bcm43430 = "${nonarch_base_libdir}/firmware/brcm/brcmfmac43430* ${nonarch_base_libdir}/firmware/cypress/cyfmac43430-sdio.bin"
FILES:${PN}-bcm43436 = "${nonarch_base_libdir}/firmware/brcm/brcmfmac43436-*"
FILES:${PN}-bcm43436s = "${nonarch_base_libdir}/firmware/brcm/brcmfmac43436s*"
FILES:${PN}-bcm43455 = "${nonarch_base_libdir}/firmware/brcm/brcmfmac43455* ${nonarch_base_libdir}/firmware/cypress/cyfmac43455-sdio.*"
FILES:${PN}-bcm43456 = "${nonarch_base_libdir}/firmware/brcm/brcmfmac43456*"
RDEPENDS:${PN}-bcm43430 += "${PN}-broadcom-license"
RDEPENDS:${PN}-bcm43436 += "${PN}-broadcom-license"
RDEPENDS:${PN}-bcm43436s += "${PN}-broadcom-license"
RDEPENDS:${PN}-bcm43455 += "${PN}-broadcom-license"
RDEPENDS:${PN}-bcm43456 += "${PN}-broadcom-license"
RCONFLICTS:${PN}-bcm43430 = "\
    linux-firmware-bcm43430 \
    linux-firmware-raspbian-bcm43430 \
"

RREPLACES:${PN}-bcm43430 = "\
    linux-firmware-bcm43430 \
    linux-firmware-raspbian-bcm43430 \
"

RCONFLICTS:${PN}-bcm43436 = "\
    linux-firmware-bcm43436 \
    linux-firmware-raspbian-bcm43436 \
"

RREPLACES:${PN}-bcm43436 = "\
    linux-firmware-bcm43436 \
    linux-firmware-raspbian-bcm43436 \
"

RCONFLICTS:${PN}-bcm43436s = "\
    linux-firmware-bcm43436s \
    linux-firmware-raspbian-bcm43436s \
"

RREPLACES:${PN}-bcm43436s = "\
    linux-firmware-bcm43436s \
    linux-firmware-raspbian-bcm43436s \
"

RCONFLICTS:${PN}-bcm43455 = "\
    linux-firmware-bcm43455 \
    linux-firmware-raspbian-bcm43455 \
"
RREPLACES:${PN}-bcm43455 = "\
    linux-firmware-bcm43455 \
    linux-firmware-raspbian-bcm43455 \
"
RCONFLICTS:${PN}-bcm43456 = "\
    linux-firmware-bcm43456 \
    linux-firmware-raspbian-bcm43456 \
"
RREPLACES:${PN}-bcm43456 = "\
    linux-firmware-bcm43456 \
    linux-firmware-raspbian-bcm43456 \
"

# Firmware files are generally not run on the CPU, so they can be
# allarch despite being architecture specific
INSANE_SKIP = "arch"

repository: ibm-openbmc/openbmc

repo_name: ibm-openbmc/openbmc

gha_language: Python

extension: bb