Index: Mk/Uses/kmod.mk =================================================================== --- Mk/Uses/kmod.mk +++ Mk/Uses/kmod.mk @@ -4,8 +4,12 @@ # # Feature: kmod # Usage: USES=kmod -# Valid ARGS: (none) debug +# Valid ARGS: (none), debug, minor # +# debug Build with debugging support +# minor Specify that the kmod must be built for each specific FreeBSD +# major.minor release per bsd.kmod-releases.mk +# # MAINTAINER: rene@FreeBSD.org .if !defined(_INCLUDE_USES_KMOD_MK) @@ -13,17 +17,45 @@ _USES_POST+= kmod -.if empty(kmod_ARGS) -_DEBUG_KMOD= -.elif ${kmod_ARGS} == "debug" +.if !empty(kmod_ARGS:Ndebug:Nminor) +IGNORE= USES=kmod has invalid arguments: ${kmod_ARGS:Ndebug:Nminor} +.endif + +.if ${kmod_ARGS:Mdebug} _DEBUG_KMOD= yes .else -IGNORE= USES=kmod takes either no arguments or 'debug' +_DEBUG_KMOD= .endif +FLAVORS=host +# By default FLAVOR will have already been defined empty +.if empty(FLAVOR) +FLAVOR=host +.endif + +.if ${kmod_ARGS:Mminor} + +.include "${PORTSDIR}/Mk/bsd.kmod-releases.mk" + +.for release in ${KMOD_RELEASES_${_OSVERSION_MAJOR}} +.for flavor in ${release:C,\.([0-9])$,0\1,:S,.,,:S,^,fbsd,} +_RELEASE_${flavor}= ${release} +FLAVORS+= ${flavor} +${flavor}_PKGNAMEPREFIX= fbsd-${release}- +${flavor}_BUILD_DEPENDS= \ +${LOCALBASE}/kernel-${release}/sys/Makefile:devel/freebsd-kernel-src@${flavor} +.endfor +.endfor + +.endif + +.if "${FLAVOR}" != "host" +SRC_BASE= ${LOCALBASE}/kernel-${_RELEASE_${FLAVOR}} +.else .if !exists(${SRC_BASE}/sys/Makefile) IGNORE= requires kernel source files in SRC_BASE=${SRC_BASE} .endif +.endif CATEGORIES+= kld Index: Mk/bsd.kmod-releases.mk =================================================================== --- Mk/bsd.kmod-releases.mk +++ Mk/bsd.kmod-releases.mk @@ -0,0 +1,12 @@ +# $FreeBSD$ +# +# List, for each major release, for which minor releases kernel module +# flavors shall exist by default. + +.if !defined(_INCLUDE_BSD_KMOD_RELEASES_MK) +_INCLUDE_BSD_KMOD_RELEASES_MK= yes + +KMOD_RELEASES_11= 11.3 +KMOD_RELEASES_12= 12.1 + +.endif Index: devel/freebsd-kernel-src/Makefile =================================================================== --- devel/freebsd-kernel-src/Makefile +++ devel/freebsd-kernel-src/Makefile @@ -0,0 +1,57 @@ +# $FreeBSD$ + +PORTNAME= freebsd-kernel-src +PORTVERSION= 0 +CATEGORIES= devel +MASTER_SITES= FREEBSD_ORG/releases/amd64/${OSRELEASE} +DISTNAME= src +DIST_SUBDIR= src-${OSRELEASE} +# Note: This port fetches src.txz from amd64 regardless of ${ARCH} +# since source distribution does not differ between arches. + +MAINTAINER= theron@FreeBSD.org +COMMENT= FreeBSD kernel sources for cross-building modules + +LICENSE= BSD2CLAUSE + +FLAVORS= ${releases:C,\.([0-9])$,0\1,:S,.,,:S,^,fbsd,} +FLAVOR?= ${default_OSVERSION_MAJMIN:C,\.([0-9])$,0\1,:S,.,,:S,^,fbsd,} + +USES= tar:txz + +WRKSRC= ${WRKDIR}/usr/src + +.include +.include "${PORTSDIR}/Mk/bsd.kmod-releases.mk" + +MAJOR_VERSIONS= 11 12 + +OSVERSION_MAJOR= ${OSVERSION:C/([0-9]*[0-9])([0-9][0-9])[0-9]{3}/\1/} +OSVERSION_MINOR= ${OSVERSION:C/([0-9]*[0-9])([0-9][0-9])[0-9]{3}/\2/:C/^0*//} +default_OSVERSION_MAJMIN= ${OSVERSION_MAJOR}.${OSVERSION_MINOR} + +.for major in ${MAJOR_VERSIONS} +releases+= ${KMOD_RELEASES_${major}} +.endfor + +OSVERSION_MAJMIN?= ${${FLAVOR}_DISTVERSION} +OSRELEASE= ${OSVERSION_MAJMIN}-RELEASE + +.for release in ${releases} +flavor=${release:C,\.([0-9])$,0\1,:S,.,,:S,^,fbsd,} +${flavor}_PKGNAMESUFFIX=-${release} +${flavor}_DISTVERSION=${release} +${flavor}_PLIST:=pkg-plist-${flavor} +.endfor + +srcbase= kernel-${OSVERSION_MAJMIN} + +run-autotools-fixup: +do-configure: +do-build: +do-install: + ${MKDIR} ${STAGEDIR}${PREFIX}/${srcbase} + ${CP} -r ${WRKSRC}/sys ${STAGEDIR}${PREFIX}/${srcbase}/sys + ${FIND} ${STAGEDIR}${PREFIX}/${srcbase} -type d -empty -delete + +.include Index: devel/freebsd-kernel-src/distinfo =================================================================== --- devel/freebsd-kernel-src/distinfo +++ devel/freebsd-kernel-src/distinfo @@ -0,0 +1,5 @@ +TIMESTAMP = 1583596347 +SHA256 (src-11.3-RELEASE/src.txz) = 534f1bdd14e751697fcff6fc87e91110f98bbdb3f63bc42782a10023cd766b3b +SIZE (src-11.3-RELEASE/src.txz) = 158616472 +SHA256 (src-12.1-RELEASE/src.txz) = 98671007136c1f6e176411c061911b315fc59dd0af0690bff76dcba29767f6e6 +SIZE (src-12.1-RELEASE/src.txz) = 166199208 Index: devel/freebsd-kernel-src/makedistinfo.sh =================================================================== --- devel/freebsd-kernel-src/makedistinfo.sh +++ devel/freebsd-kernel-src/makedistinfo.sh @@ -0,0 +1,31 @@ +#!/bin/sh + +releases="11.3 12.1" +ftp="https://download.freebsd.org/ftp" +DISTINFO_FILE=./distinfo + +echo "TIMESTAMP = $(date '+%s')" > ${DISTINFO_FILE} + +if [ ! -d "/usr/local/share/freebsd/MANIFESTS/" ]; then +echo "This script requires misc/freebsd-release-manifests" +exit 1 +fi + +for rel in ${releases}; do +relname="${rel}-RELEASE" +filename="src-${relname}/src.txz" +echo Checking "${relname}" +sha256=$(grep '^src\.txz ' /usr/local/share/freebsd/MANIFESTS/amd64-amd64-${relname} 2>&- | cut -f2) +if [ -z "${sha256}" ]; then +echo "Unknown release ${relname}" +else +hstat=$(curl -sI "${ftp}/releases/amd64/${relname}/src.txz" | tr -d '\r') +if ( printf '%s' "${hstat}" | grep -q ' 404 ' ); then +echo "Release ${relname} not present on server" +else +size=$(printf '%s' "${hstat}" | grep '^Content-Length: ' | cut -d' ' -f2) +printf '%s (%s) = %s\n' "SHA256" "${filename}" "${sha256}" >> ${DISTINFO_FILE} +printf '%s (%s) = %s\n' "SIZE" "${filename}" "${size}" >> ${DISTINFO_FILE} +fi +fi +done Index: devel/freebsd-kernel-src/pkg-descr =================================================================== --- devel/freebsd-kernel-src/pkg-descr +++ devel/freebsd-kernel-src/pkg-descr @@ -0,0 +1,3 @@ +Installs FreeBSD kernel sources for cross-building of modules. + +WWW: https://www.freebsd.org/ Index: graphics/drm-fbsd12.0-kmod/Makefile =================================================================== --- graphics/drm-fbsd12.0-kmod/Makefile +++ graphics/drm-fbsd12.0-kmod/Makefile @@ -23,7 +23,7 @@ OPTIONS_DEFINE= DEBUG -USES= kmod uidfix compiler:c++11-lang +USES= kmod:minor uidfix compiler:c++11-lang USE_GITHUB= yes GH_ACCOUNT= FreeBSDDesktop