diff --git a/net/wifi-firmware-ath10k-kmod/Makefile b/net/wifi-firmware-ath10k-kmod/Makefile --- a/net/wifi-firmware-ath10k-kmod/Makefile +++ b/net/wifi-firmware-ath10k-kmod/Makefile @@ -4,7 +4,7 @@ FWSUBDIR= ath10k FWDRV_VERSION= 20240513 -LICENSE= LICENSE.QualcommAtheros_ath10k +LICENSE_FILE= LICENSE.QualcommAtheros_ath10k LICENSE_NAME= QCA firmware license (${FWDRV}) WHENCE_REGEX= ath10k -.* diff --git a/net/wifi-firmware-ath11k-kmod/Makefile b/net/wifi-firmware-ath11k-kmod/Makefile --- a/net/wifi-firmware-ath11k-kmod/Makefile +++ b/net/wifi-firmware-ath11k-kmod/Makefile @@ -5,7 +5,7 @@ FWDRV_VERSION= 20240513 # Yes, the license is the ath10k one; see WHENCE. -LICENSE= LICENSE.QualcommAtheros_ath10k +LICENSE_FILE= LICENSE.QualcommAtheros_ath10k LICENSE_NAME= QCA firmware license (${FWDRV}) WHENCE_REGEX= ath11k -.* diff --git a/net/wifi-firmware-ath12k-kmod/Makefile b/net/wifi-firmware-ath12k-kmod/Makefile --- a/net/wifi-firmware-ath12k-kmod/Makefile +++ b/net/wifi-firmware-ath12k-kmod/Makefile @@ -5,7 +5,7 @@ FWDRV_VERSION= 20240513 # Yes, the license is the ath10k one; see WHENCE. -LICENSE= LICENSE.QualcommAtheros_ath10k +LICENSE_FILE= LICENSE.QualcommAtheros_ath10k LICENSE_NAME= QCA firmware license (${FWDRV}) WHENCE_REGEX= ath12k -.* diff --git a/net/wifi-firmware-iwlwifi-kmod/Makefile b/net/wifi-firmware-iwlwifi-kmod/Makefile --- a/net/wifi-firmware-iwlwifi-kmod/Makefile +++ b/net/wifi-firmware-iwlwifi-kmod/Makefile @@ -4,7 +4,7 @@ FWSUBDIR= FWDRV_VERSION= 20240513 -LICENSE= LICENCE.iwlwifi_firmware +LICENSE_FILE= LICENCE.iwlwifi_firmware LICENSE_NAME= Intel firmware license (${FWDRV}) WHENCE_REGEX= iwlwifi -.* diff --git a/net/wifi-firmware-kmod/Makefile.inc b/net/wifi-firmware-kmod/Makefile.inc --- a/net/wifi-firmware-kmod/Makefile.inc +++ b/net/wifi-firmware-kmod/Makefile.inc @@ -11,7 +11,6 @@ FWDRV?= base LICENSE_NAME?= firmware license (${FWDRV}) -LICENSE_FILE?= ${WRKSRC}/${FLAVOR}/${LICENSE} LICENSE_PERMS?= dist-mirror no-dist-sell pkg-mirror no-pkg-sell auto-accept EXTRACT_SUFX= @@ -19,7 +18,8 @@ # Sanity checks .if !defined(FWDRV) || !defined(FWSUBDIR) || !defined(FWSUBS) || \ - !defined(FWDRV_VERSION) || !defined(LICENSE) || \ + !defined(FWDRV_VERSION) || \ + !defined(LICENSE_NAME) || !defined(LICENSE_FILE) || \ !defined(DISTFILES_${FWDRV}) || !defined(DISTFILES_${FWDRV}_lic) || \ !defined(BASEDIR) || !defined(WHENCE_REGEX) IGNORE= is a metaport or misconfigured child port; there is nothing to build @@ -27,13 +27,39 @@ FILESDIR= ${BASEDIR}/files +LICENSE_COMB= multi +LICENSE= primary whence + +# Port primary license. +LICENSE_FILE_primary= ${WRKSRC}/${LICENSE_FILE} +LICENSE_NAME_primary= ${LICENSE_NAME} +LICENSE_PERMS_primary= ${LICENSE_PERMS} + +# Add WHENCE file next to license where it makes sense despite not being a license. +LICENSE_NAME_whence= Origin and licensing information for linux-firmware files +LICENSE_FILE_whence= ${WRKSRC}/WHENCE +LICENSE_PERMS_whence= ${LICENSE_PERMS} +#PLIST_FILES+= ${_LICENSE_DIR}/WHENCE + +# Add extra license files. +.if "${DISTFILES_${FLAVOR}_lic}" +.for _n in ${DISTFILES_${FLAVOR}_lic:range} +LICENSE+= extra${_n} +LICENSE_FILE_extra${_n}= ${WRKSRC}/fw/${DISTFILES_${FLAVOR}_lic:[${_n}]:C@(^[^?]*)${DISTURL_SUFFIX:Q}@\1@:S,/,_,g} +LICENSE_NAME_extra${_n}= ${LICENSE_NAME} (extra fw license) +LICENSE_PERMS_extra${_n}= ${LICENSE_PERMS} +.endfor +.endif + +# Add firmware files to plist. +.for _f in ${DISTFILES_${FLAVOR}} +PLIST_FILES+= ${KMODDIR}/${_f:C@(^[^?]*)${DISTURL_SUFFIX:Q}@\1@:S,.,_,g:S,-,_,g:S,/,_,g}.ko +.endfor + # Split things into the full package (driver name) and more specific flavors. FLAVORS= ${FWDRV} \ ${FWSUBS} -# What a kludge.... thanks https://docs.freebsd.org/en/books/porters-handbook/flavors/ ! -FLAVOR?= ${FLAVORS:[1]} - # Generate the conflicts list. .for f in ${FWSUBS} ${FWDRV}_CONFLICTS_INSTALL+= ${PORTNAME}-${f} @@ -41,14 +67,10 @@ ${f}_CONFLICTS_INSTALL= ${PORTNAME} .endfor -DISTFILES_FLAVOR:= ${DISTFILES_${FLAVOR}} -DISTFILES_FLAVOR_lic:= ${DISTFILES_${FLAVOR}_lic} - -DISTFILES= \ - ${DISTFILES_FLAVOR} \ - ${DISTFILES_FLAVOR_lic} \ - ${LICENSE}${DISTURL_SUFFIX} \ - WHENCE${DISTURL_SUFFIX} +DISTFILES= ${DISTFILES_${FLAVOR}} \ + ${DISTFILES_${FLAVOR}_lic} \ + ${LICENSE_FILE}${DISTURL_SUFFIX} \ + WHENCE${DISTURL_SUFFIX} DIST_SUBDIR= linux-firmware/${FWDRV}fw EXTRACT_ONLY= @@ -58,64 +80,41 @@ USES= kmod uidfix +MAKE_ENV+= FWSRCDIR=${WRKSRC}/fw + post-extract: - @${MKDIR} ${WRKSRC}/${FLAVOR}/fw + @${MKDIR} ${WRKSRC}/fw # Deal with supplementary licenses files. - @${CP} ${DISTDIR}/${DIST_SUBDIR}/${LICENSE}${DISTURL_SUFFIX} ${WRKSRC}/${FLAVOR}/${LICENSE} - @${CP} ${DISTDIR}/${DIST_SUBDIR}/WHENCE${DISTURL_SUFFIX} ${WRKSRC}/${FLAVOR}/WHENCE.in - @${SED} -e "s@%%XXX%%@${WHENCE_REGEX:Q}@g" ${FILESDIR}/WHENCE.awk.in > ${WRKSRC}/${FLAVOR}/WHENCE.awk - @${AWK} -f ${WRKSRC}/${FLAVOR}/WHENCE.awk ${WRKSRC}/${FLAVOR}/WHENCE.in > ${WRKSRC}/${FLAVOR}/WHENCE + @${CP} ${DISTDIR}/${DIST_SUBDIR}/${LICENSE_FILE}${DISTURL_SUFFIX} ${WRKSRC}/${LICENSE_FILE} + @${CP} ${DISTDIR}/${DIST_SUBDIR}/WHENCE${DISTURL_SUFFIX} ${WRKSRC}/WHENCE.in + @${SED} -e "s@%%XXX%%@${WHENCE_REGEX:Q}@g" ${FILESDIR}/WHENCE.awk.in > ${WRKSRC}/WHENCE.awk + @${AWK} -f ${WRKSRC}/WHENCE.awk ${WRKSRC}/WHENCE.in > ${WRKSRC}/WHENCE # Prepare toplevel Makefile and Makefile.inc. - @${ECHO_CMD} "SUBDIR=" > ${WRKSRC}/${FLAVOR}/Makefile + @${ECHO_CMD} "SUBDIR=" > ${WRKSRC}/Makefile @${SED} -e "s@%%FWDRV%%@${FWDRV}@g" \ -e "s@%%FWSUBDIR%%@${FWSUBDIR}@g" \ - ${FILESDIR}/Makefile.inc.in > ${WRKSRC}/${FLAVOR}/Makefile.inc -.for _f in ${DISTFILES_FLAVOR} + ${FILESDIR}/Makefile.inc.in > ${WRKSRC}/Makefile.inc +.for _f in ${DISTFILES_${FLAVOR}} # We remove '.' and '-' as well as '/' as they don't work well in loader.conf. - @${MKDIR} ${WRKSRC}/${FLAVOR}/${_f:C@(^[^?]*)${DISTURL_SUFFIX:Q}@\1@:S,.,_,g:S,-,_,g:S,/,_,g} + @${MKDIR} ${WRKSRC}/${_f:C@(^[^?]*)${DISTURL_SUFFIX:Q}@\1@:S,.,_,g:S,-,_,g:S,/,_,g} # Create subdir (firmware file) Makefile. - @${ECHO_CMD} "FWNAME=${_f:C@(^[^?]*)${DISTURL_SUFFIX:Q}@\1@:T}" > ${WRKSRC}/${FLAVOR}/${_f:C@(^[^?]*)${DISTURL_SUFFIX:Q}@\1@:S,.,_,g:S,-,_,g:S,/,_,g}/Makefile + @${ECHO_CMD} "FWNAME=${_f:C@(^[^?]*)${DISTURL_SUFFIX:Q}@\1@:T}" > ${WRKSRC}/${_f:C@(^[^?]*)${DISTURL_SUFFIX:Q}@\1@:S,.,_,g:S,-,_,g:S,/,_,g}/Makefile .if (${_f:H:C,^[^/]*,,1:C,^/,,} != "") - @${ECHO_CMD} "FWSUBSUBDIR=${_f:H:C,^[^/]*,,1:C,^/,,}" >> ${WRKSRC}/${FLAVOR}/${_f:C@(^[^?]*)${DISTURL_SUFFIX:Q}@\1@:S,.,_,g:S,-,_,g:S,/,_,g}/Makefile + @${ECHO_CMD} "FWSUBSUBDIR=${_f:H:C,^[^/]*,,1:C,^/,,}" >> ${WRKSRC}/${_f:C@(^[^?]*)${DISTURL_SUFFIX:Q}@\1@:S,.,_,g:S,-,_,g:S,/,_,g}/Makefile .endif # XXX-BZ recover firmware versions later again from somewhere? Pain to keep track though, else use 0 or ${FWDRV_VERSION}? - @${ECHO_CMD} "VERSION=0" >> ${WRKSRC}/${FLAVOR}/${_f:C@(^[^?]*)${DISTURL_SUFFIX:Q}@\1@:S,.,_,g:S,-,_,g:S,/,_,g}/Makefile - @${ECHO_CMD} '.include ' >> ${WRKSRC}/${FLAVOR}/${_f:C@(^[^?]*)${DISTURL_SUFFIX:Q}@\1@:S,.,_,g:S,-,_,g:S,/,_,g}/Makefile + @${ECHO_CMD} "VERSION=0" >> ${WRKSRC}/${_f:C@(^[^?]*)${DISTURL_SUFFIX:Q}@\1@:S,.,_,g:S,-,_,g:S,/,_,g}/Makefile + @${ECHO_CMD} '.include ' >> ${WRKSRC}/${_f:C@(^[^?]*)${DISTURL_SUFFIX:Q}@\1@:S,.,_,g:S,-,_,g:S,/,_,g}/Makefile # Add subdir to top-level Makefile. - @${ECHO_CMD} "SUBDIR+=${_f:C@(^[^?]*)${DISTURL_SUFFIX:Q}@\1@:S,.,_,g:S,-,_,g:S,/,_,g}" >> ${WRKSRC}/${FLAVOR}/Makefile + @${ECHO_CMD} "SUBDIR+=${_f:C@(^[^?]*)${DISTURL_SUFFIX:Q}@\1@:S,.,_,g:S,-,_,g:S,/,_,g}" >> ${WRKSRC}/Makefile # Create firmware source directory and copy in distfile. - @${MKDIR} ${WRKSRC}/${FLAVOR}/fw/${_f:H} - ${CP} ${DISTDIR}/${DIST_SUBDIR}/${_f} ${WRKSRC}/${FLAVOR}/fw/${_f:C@(^[^?]*)${DISTURL_SUFFIX:Q}@\1@} + @${MKDIR} ${WRKSRC}/fw/${_f:H} + ${CP} ${DISTDIR}/${DIST_SUBDIR}/${_f} ${WRKSRC}/fw/${_f:C@(^[^?]*)${DISTURL_SUFFIX:Q}@\1@} .endfor - @${ECHO_CMD} '.include ' >> ${WRKSRC}/${FLAVOR}/Makefile + @${ECHO_CMD} '.include ' >> ${WRKSRC}/Makefile # Copy in additional licenses files. -.for _f in ${DISTFILES_FLAVOR_lic} - ${CP} ${DISTDIR}/${DIST_SUBDIR}/${_f} ${WRKSRC}/${FLAVOR}/fw/${_f:C@(^[^?]*)${DISTURL_SUFFIX:Q}@\1@:S,/,_,g} -.endfor - -# Internal hack we should probably upstream. -# Add WHENCE file next to license where it makes sense despite not being a license. -_USES_stage+= 881:post-install-license -post-install-license: - ${INSTALL_DATA} ${WRKSRC}/${FLAVOR}/WHENCE ${STAGEDIR}${_LICENSE_DIR}/ -.for _f in ${DISTFILES_FLAVOR_lic} - ${INSTALL_DATA} ${WRKSRC}/${FLAVOR}/fw/${_f:C@(^[^?]*)${DISTURL_SUFFIX:Q}@\1@:S,/,_,g} \ - ${STAGEDIR}${_LICENSE_DIR}/${_f:C@(^[^?]*)${DISTURL_SUFFIX:Q}@\1@:S,/,_,g} -.endfor - -.include - -MAKE_ENV+= FWSRCDIR=${WRKSRC}/${FLAVOR}/fw -MAKE_FLAGS+= -C ${WRKSRC}/${FLAVOR} - -# Add firmware files to plist. -.for _f in ${DISTFILES_FLAVOR} -PLIST_FILES+= ${KMODDIR}/${_f:C@(^[^?]*)${DISTURL_SUFFIX:Q}@\1@:S,.,_,g:S,-,_,g:S,/,_,g}.ko -.endfor -# Record extra licenses files in plist. -PLIST_FILES+= ${_LICENSE_DIR}/WHENCE -.for _f in ${DISTFILES_FLAVOR_lic} -PLIST_FILES+= ${_LICENSE_DIR}/${_f:C@(^[^?]*)${DISTURL_SUFFIX:Q}@\1@:S,/,_,g} +.for _f in ${DISTFILES_${FLAVOR}_lic} + ${CP} ${DISTDIR}/${DIST_SUBDIR}/${_f} ${WRKSRC}/fw/${_f:C@(^[^?]*)${DISTURL_SUFFIX:Q}@\1@:S,/,_,g} .endfor -.include +.include diff --git a/net/wifi-firmware-mt76-kmod/Makefile b/net/wifi-firmware-mt76-kmod/Makefile --- a/net/wifi-firmware-mt76-kmod/Makefile +++ b/net/wifi-firmware-mt76-kmod/Makefile @@ -4,7 +4,7 @@ FWSUBDIR= mediatek FWDRV_VERSION= 20240513 -LICENSE= LICENCE.mediatek +LICENSE_FILE= LICENCE.mediatek LICENSE_NAME= Mediatek firmware license (${FWDRV}) WHENCE_REGEX= (mt7915e|mt7921|mt7922|mt7925|mt7996e) -.*ireless diff --git a/net/wifi-firmware-rtw88-kmod/Makefile b/net/wifi-firmware-rtw88-kmod/Makefile --- a/net/wifi-firmware-rtw88-kmod/Makefile +++ b/net/wifi-firmware-rtw88-kmod/Makefile @@ -7,7 +7,7 @@ #FWDRV_VERSION= 20220209 # Used for a long time FWDRV_VERSION= 20240513 -LICENSE= LICENCE.rtlwifi_firmware.txt +LICENSE_FILE= LICENCE.rtlwifi_firmware.txt LICENSE_NAME= Realtek firmware license (${FWDRV}) WHENCE_REGEX= rtw88 -.* diff --git a/net/wifi-firmware-rtw89-kmod/Makefile b/net/wifi-firmware-rtw89-kmod/Makefile --- a/net/wifi-firmware-rtw89-kmod/Makefile +++ b/net/wifi-firmware-rtw89-kmod/Makefile @@ -4,7 +4,7 @@ FWSUBDIR= rtw89 FWDRV_VERSION= 20240513 -LICENSE= LICENCE.rtlwifi_firmware.txt +LICENSE_FILE= LICENCE.rtlwifi_firmware.txt LICENSE_NAME= Realtek firmware license (${FWDRV}) WHENCE_REGEX= rtw89 -.*