aboutsummaryrefslogtreecommitdiff
path: root/Mk
diff options
context:
space:
mode:
Diffstat (limited to 'Mk')
-rw-r--r--Mk/Features/bind_now.mk5
-rw-r--r--Mk/Features/fortify.mk18
-rw-r--r--Mk/Features/lto.mk2
-rw-r--r--Mk/Features/pie.mk13
-rw-r--r--Mk/Features/relro.mk5
-rw-r--r--Mk/Features/sanitize.mk6
-rw-r--r--Mk/Features/ssp.mk9
-rw-r--r--Mk/Features/stack_autoinit.mk23
-rw-r--r--Mk/Features/zeroregs.mk28
-rw-r--r--Mk/Scripts/actual-package-depends.sh2
-rw-r--r--Mk/Scripts/cargo-crates-git-common.awk20
-rw-r--r--Mk/Scripts/check_have_symbols.sh26
-rw-r--r--Mk/Scripts/check_leftovers.sh4
-rw-r--r--Mk/Scripts/create-manifest.sh3
-rw-r--r--Mk/Scripts/desktop-categories.sh3
-rw-r--r--Mk/Scripts/do-users-groups.sh6
-rw-r--r--Mk/Scripts/qa.sh21
-rw-r--r--Mk/Uses/ada.mk3
-rw-r--r--Mk/Uses/autoreconf.mk2
-rw-r--r--Mk/Uses/blaslapack.mk16
-rw-r--r--Mk/Uses/cabal.mk7
-rw-r--r--Mk/Uses/cargo.mk15
-rw-r--r--Mk/Uses/cl.mk142
-rw-r--r--Mk/Uses/cmake.mk19
-rw-r--r--Mk/Uses/compiler.mk21
-rw-r--r--Mk/Uses/cpe.mk4
-rw-r--r--Mk/Uses/cran.mk4
-rw-r--r--Mk/Uses/electronfix.mk28
-rw-r--r--Mk/Uses/elfctl.mk37
-rw-r--r--Mk/Uses/emacs.mk29
-rw-r--r--Mk/Uses/fortran.mk4
-rw-r--r--Mk/Uses/fpc.mk10
-rw-r--r--Mk/Uses/fuse.mk4
-rw-r--r--Mk/Uses/gmake.mk4
-rw-r--r--Mk/Uses/gnome.mk78
-rw-r--r--Mk/Uses/go.mk42
-rw-r--r--Mk/Uses/gssapi.mk19
-rw-r--r--Mk/Uses/gstreamer.mk207
-rw-r--r--Mk/Uses/horde.mk2
-rw-r--r--Mk/Uses/java.mk (renamed from Mk/bsd.java.mk)308
-rw-r--r--Mk/Uses/kde.mk517
-rw-r--r--Mk/Uses/kmod.mk2
-rw-r--r--Mk/Uses/lazarus.mk58
-rw-r--r--Mk/Uses/linux.mk195
-rw-r--r--Mk/Uses/llvm.mk25
-rw-r--r--Mk/Uses/luajit.mk6
-rw-r--r--Mk/Uses/lxqt.mk40
-rw-r--r--Mk/Uses/mate.mk2
-rw-r--r--Mk/Uses/meson.mk2
-rw-r--r--Mk/Uses/mlt.mk2
-rw-r--r--Mk/Uses/mpi.mk1
-rw-r--r--Mk/Uses/mysql.mk12
-rw-r--r--Mk/Uses/ninja.mk41
-rw-r--r--Mk/Uses/nodejs.mk12
-rw-r--r--Mk/Uses/ocaml.mk298
-rw-r--r--Mk/Uses/octave.mk2
-rw-r--r--Mk/Uses/pathfix.mk3
-rw-r--r--Mk/Uses/perl5.mk22
-rw-r--r--Mk/Uses/pgsql.mk10
-rw-r--r--Mk/Uses/php.mk22
-rw-r--r--Mk/Uses/pyqt.mk244
-rw-r--r--Mk/Uses/python.mk129
-rw-r--r--Mk/Uses/qca.mk28
-rw-r--r--Mk/Uses/qt-dist.mk62
-rw-r--r--Mk/Uses/qt.mk56
-rw-r--r--Mk/Uses/ruby.mk41
-rw-r--r--Mk/Uses/samba.mk42
-rw-r--r--Mk/Uses/sbrk.mk21
-rw-r--r--Mk/Uses/sdl.mk11
-rw-r--r--Mk/Uses/shebangfix.mk2
-rw-r--r--Mk/Uses/ssl.mk6
-rw-r--r--Mk/Uses/tcl.mk34
-rw-r--r--Mk/Uses/tex.mk4
-rw-r--r--Mk/Uses/vala.mk2
-rw-r--r--Mk/Uses/xfce.mk6
-rw-r--r--Mk/Uses/xorg-cat.mk7
-rw-r--r--Mk/Wrappers/gm42
-rw-r--r--Mk/bsd.ccache.mk8
-rw-r--r--Mk/bsd.commands.mk2
-rw-r--r--Mk/bsd.default-versions.mk74
-rw-r--r--Mk/bsd.gcc.mk10
-rw-r--r--Mk/bsd.gecko.mk12
-rw-r--r--Mk/bsd.licenses.db.mk13
-rw-r--r--Mk/bsd.ocaml.mk198
-rw-r--r--Mk/bsd.options.desc.mk17
-rw-r--r--Mk/bsd.options.mk1
-rw-r--r--Mk/bsd.port.mk143
-rw-r--r--Mk/bsd.sanity.mk22
-rw-r--r--Mk/bsd.sites.mk101
-rw-r--r--Mk/bsd.wx.mk9
90 files changed, 2321 insertions, 1457 deletions
diff --git a/Mk/Features/bind_now.mk b/Mk/Features/bind_now.mk
index 99361c487265..5f4b6abf3718 100644
--- a/Mk/Features/bind_now.mk
+++ b/Mk/Features/bind_now.mk
@@ -1,4 +1,9 @@
# BIND_NOW Support
+#
+# When generating an executable or shared library, mark it to tell the dynamic
+# linker to resolve all symbols when the program is started, or when the shared
+# library is loaded by dlopen, instead of deferring function call resolution to
+# the point when the function is first called.
.if !defined(_BIND_NOW_MK_INCLUDED)
_BIND_NOW_MK_INCLUDED= yes
diff --git a/Mk/Features/fortify.mk b/Mk/Features/fortify.mk
new file mode 100644
index 000000000000..2e43ca98242f
--- /dev/null
+++ b/Mk/Features/fortify.mk
@@ -0,0 +1,18 @@
+# This enables mitigations of common memory safety issues, such as buffer
+# overflows, by adding checks to functions like memcpy, strcpy, sprintf,
+# and others when the compiler can determine the size of the destination
+# buffer at compile time.
+#
+# Depends opon the FORTIFY_SOURCE implementation in the basesystem.
+
+.if !defined(_FORTIFY_MK_INCLUDED)
+_FORTIFY_MK_INCLUDED= yes
+FORTIFY_Include_MAINTAINER= netchild@FreeBSD.org
+
+. if !defined(FORTIFY_UNSAFE)
+FORTIFY_SOURCE?=2
+FORTIFY_CFLAGS?= -D_FORTIFY_SOURCE=${FORTIFY_SOURCE}
+CFLAGS+= ${FORTIFY_CFLAGS}
+CXXFLAGS+= ${FORTIFY_CFLAGS}
+. endif
+.endif
diff --git a/Mk/Features/lto.mk b/Mk/Features/lto.mk
index 3fef5a223e9c..2d0e3657b53b 100644
--- a/Mk/Features/lto.mk
+++ b/Mk/Features/lto.mk
@@ -14,6 +14,8 @@ LTO_Include_MAINTAINER= pkubaj@FreeBSD.org
CARGO_ENV+= CARGO_PROFILE_RELEASE_LTO="true" \
CARGO_PROFILE_RELEASE_PANIC="abort" \
CARGO_PROFILE_RELEASE_CODEGEN_UNITS=1
+. elif defined(_INCLUDE_USES_CMAKE_MK)
+ CMAKE_ON+= CMAKE_INTERPROCEDURAL_OPTIMIZATION
. elif defined(_INCLUDE_USES_MESON_MK)
MESON_ARGS+= -Db_lto=true
. elif defined(_INCLUDE_USES_CABAL_MK)
diff --git a/Mk/Features/pie.mk b/Mk/Features/pie.mk
index 2f7b902f2660..3a8a95b93aea 100644
--- a/Mk/Features/pie.mk
+++ b/Mk/Features/pie.mk
@@ -1,15 +1,28 @@
# PIE Support
+#
+# Produce a Position-Independent Executable (PIE) instead of a "normal"
+# fixed-address ELF.
+# A PIE is an executable whose code sections are compiled and linked so that,
+# at runtime, they can be loaded at any base address in memory.
+#
+# Because it can be loaded at unpredictable addresses, PIE enables full Address
+# Space Layout Randomization (ASLR) for your main executable-making certain
+# classes of memory-corruption exploits much harder.
.if !defined(_PIE_MK_INCLUDED)
_PIE_MK_INCLUDED= yes
PIE_Include_MAINTAINER= portmgr@FreeBSD.org
. if !defined(PIE_UNSAFE)
+. if defined(_INCLUDE_USES_CMAKE_MK)
+CMAKE_ARGS+= -DCMAKE_POSITION_INDEPENDENT_CODE:BOOL=true
+. else
PIE_CFLAGS?= -fPIE -fPIC
CFLAGS+= ${PIE_CFLAGS}
CXXFLAGS+= ${PIE_CFLAGS}
LDFLAGS+= -pie
STATIC_PIE_ARGS+= -static-pie
+. endif
. endif
.endif
diff --git a/Mk/Features/relro.mk b/Mk/Features/relro.mk
index 6ceb68d5d668..8074ce09edd7 100644
--- a/Mk/Features/relro.mk
+++ b/Mk/Features/relro.mk
@@ -1,4 +1,9 @@
# RELRO Support
+#
+# Tells the linker to emit RELocation Read-Only (RELRO) protection for certain
+# sections of your ELF file. In short, it makes parts of the binary read-only
+# after relocations have been applied at program startup, helping to prevent
+# GOT- and PLT-based overwrite attacks.
.if !defined(_RELRO_MK_INCLUDED)
_RELRO_MK_INCLUDED= yes
diff --git a/Mk/Features/sanitize.mk b/Mk/Features/sanitize.mk
index 6d2e3019705e..02dbdad94c8b 100644
--- a/Mk/Features/sanitize.mk
+++ b/Mk/Features/sanitize.mk
@@ -18,6 +18,12 @@ SANITIZE_Include_MAINTAINER= portmgr@FreeBSD.org
SANITIZE_FLAGS?= address
. if defined(_INCLUDE_USES_MESON_MK)
MESON_ARGS+= -Db_sanitize=${SANITIZE_FLAGS}
+. elif defined(_INCLUDE_USES_QMAKE_MK) || defined(_QT_DIST_MK_INCLUDED)
+ QMAKE_ARGS+= QMAKE_LFLAGS_NOUNDEF=
+ QMAKE_ARGS+= CONFIG+=sanitize
+. for f in ${SANITIZE_FLAGS}
+ QMAKE_ARGS+= CONFIG+=sanitize_${f}
+. endfor
. else
CFLAGS+= -fsanitize=${SANITIZE_FLAGS}
CXXFLAGS+= -fsanitize=${SANITIZE_FLAGS}
diff --git a/Mk/Features/ssp.mk b/Mk/Features/ssp.mk
index 4213e6d668a6..b6be18ce35e8 100644
--- a/Mk/Features/ssp.mk
+++ b/Mk/Features/ssp.mk
@@ -1,4 +1,12 @@
# SSP Support
+#
+# The -fstack-protector-strong flag enables "stack smashing" protection on a
+# wider set of functions than the default -fstack-protector, but without the
+# full performance cost of -fstack-protector-all. Under the hood it inserts a
+# small "canary" value on the stack just before the saved return address; at
+# function exit it checks that the canary hasn't been overwritten by a buffer
+# overflow. If it has been clobbered, the runtime aborts the program rather
+# than returning into corrupted code.
.if !defined(_SSP_MK_INCLUDED)
_SSP_MK_INCLUDED= yes
@@ -9,6 +17,5 @@ SSP_Include_MAINTAINER= portmgr@FreeBSD.org
# Overridable as a user may want to use -fstack-protector-all
SSP_CFLAGS?= -fstack-protector-strong
CFLAGS+= ${SSP_CFLAGS}
-LDFLAGS+= ${SSP_CFLAGS}
. endif
.endif
diff --git a/Mk/Features/stack_autoinit.mk b/Mk/Features/stack_autoinit.mk
new file mode 100644
index 000000000000..627b785b6ee0
--- /dev/null
+++ b/Mk/Features/stack_autoinit.mk
@@ -0,0 +1,23 @@
+# The STACK_AUTOINIT feature mimics the corresponding FreeBSD basesystem feature.
+#
+# This enables a compiler specific option to automatically initialize
+# local (automatic) variables to prevent the use of uninitialized memory.
+#
+# Variables that can be used:
+#
+# WITH_STACK_AUTOINIT Enable for all ports.
+# WITH_STACK_AUTOINIT_PORTS Enable for specified category/port-name
+# STACK_AUTOINIT_TYPE Valid options: zero (default), pattern, uninitialized
+#
+
+.if !defined(_STACK_AUTOINIT_MK_INCLUDED)
+_STACK_AUTOINIT_MK_INCLUDED= yes
+STACK_AUTOINIT_Include_MAINTAINER= netchild@FreeBSD.org
+
+STACK_AUTOINIT_TYPE?= zero
+
+. if !defined(STATIC_AUTOINIT_UNSAFE)
+CFLAGS+= -ftrivial-auto-var-init=${STACK_AUTOINIT_TYPE}
+CXXFLAGS+= -ftrivial-auto-var-init=${STACK_AUTOINIT_TYPE}
+. endif
+.endif
diff --git a/Mk/Features/zeroregs.mk b/Mk/Features/zeroregs.mk
new file mode 100644
index 000000000000..2e21b16c5c66
--- /dev/null
+++ b/Mk/Features/zeroregs.mk
@@ -0,0 +1,28 @@
+# Zero call-used registers at function return to increase program
+# security by either mitigating Return-Oriented Programming (ROP)
+# attacks or preventing information leakage through registers.
+# This depends upon support from the compiler for a given architecture.
+#
+# Variables that can be used:
+#
+# WITH_ZEROREGS Enable for all ports.
+# WITH_ZEROREGS_PORTS Enable for specified category/port-name
+# ZEROREGS_TYPE See
+# https://gcc.gnu.org/onlinedocs/gcc/Common-Function-Attributes.html#index-zero_005fcall_005fused_005fregs-function-attribute
+# for options
+# Default: used
+#
+
+.if !defined(_ZEROREGS_MK_INCLUDED)
+_ZEROREGS_MK_INCLUDED= yes
+ZEROREGS_Include_MAINTAINER= netchild@FreeBSD.org
+
+ZEROREGS_TYPE?= used
+
+#. if !defined(ZEROREGS_UNSAFE) && !empty(${ARCH:Mriscv*}) && \
+# !empty(${ARCH:Mpower*}) && !empty(${ARCH:Marmv7*})
+CFLAGS+= -fzero-call-used-regs=${ZEROREGS_TYPE}
+CXXFLAGS+= -fzero-call-used-regs=${ZEROREGS_TYPE}
+#. endif
+.endif
+
diff --git a/Mk/Scripts/actual-package-depends.sh b/Mk/Scripts/actual-package-depends.sh
index 604931446787..bf649cb42907 100644
--- a/Mk/Scripts/actual-package-depends.sh
+++ b/Mk/Scripts/actual-package-depends.sh
@@ -1,5 +1,5 @@
#!/bin/sh
-# MAINTAINER: portmgr@FeeeBSD.org
+# MAINTAINER: portmgr@FreeBSD.org
[ -n "${DEBUG_MK_SCRIPTS}" -o -n "${DEBUG_MK_SCRIPTS_ACTUAL_PACKAGE_DEPENDS}" ] && set -x
diff --git a/Mk/Scripts/cargo-crates-git-common.awk b/Mk/Scripts/cargo-crates-git-common.awk
index 36eb0027d3d7..e2263f94678a 100644
--- a/Mk/Scripts/cargo-crates-git-common.awk
+++ b/Mk/Scripts/cargo-crates-git-common.awk
@@ -73,6 +73,26 @@ function split_git_url(info, git_url, url, path, account, project, commit, i, d
info["dir"] = sprintf("%s-%s", project, dir_ver)
return 1
+ } else if (url["host"] == "codeberg.org") {
+ split(url["path"], path, "/")
+ account = path[2]
+ project = path[3]
+ sub(/\.[gG][iI][tT]$/, "", project)
+ commit = commit_from_git_url(url)
+
+ delete url
+ url["scheme"] = "https"
+ url["host"] = "codeberg.org"
+ url["path"] = sprintf("/%s/%s/archive/%s.tar.gz", account, project, commit)
+ url["query"] = "dummy"
+ url["query", "dummy"] = "/"
+ info["site"] = join_url(url)
+
+ info["filename"] = sprintf("%s-%s-%s_CB0.tar.gz", account, project, commit)
+
+ info["dir"] = sprintf("%s", project)
+
+ return 1
} else if (gitlab_hosts[url["host"]]) {
split(url["path"], path, "/")
account = path[2]
diff --git a/Mk/Scripts/check_have_symbols.sh b/Mk/Scripts/check_have_symbols.sh
new file mode 100644
index 000000000000..652c975109dd
--- /dev/null
+++ b/Mk/Scripts/check_have_symbols.sh
@@ -0,0 +1,26 @@
+#!/bin/sh
+
+set -eu
+
+# the 3 implementations of readelf we can use have different output, but they all have a similarity
+# for the .gnu.version_d section they all have the symbol version in last element of their output
+# and have "Name:" or "vda_name": in the 10th position, no other section displayed have this
+# it means that if there are no symbols exported then nothing matches this search pattern.
+
+STAGEDIR=$1
+shift
+ret=0
+failed=""
+for lib; do
+ if ! /usr/bin/readelf -V ${STAGEDIR}$lib | awk 'BEGIN { ret=1 } $10 == "Name:" || $10 == "vda_name:" { ret=0; exit 0 } END { exit ret }'; then
+ ret=1
+ failed="${failed} ${lib}"
+ fi
+done
+if [ "$failed" != "" ]; then
+ echo "the following libraries are supposed to have symbols versioning but they don't" >&2
+ for l in ${failed}; do
+ echo "- $l" >&2
+ done
+fi
+exit $ret
diff --git a/Mk/Scripts/check_leftovers.sh b/Mk/Scripts/check_leftovers.sh
index 00e8ad4a45dc..8bd3143e4307 100644
--- a/Mk/Scripts/check_leftovers.sh
+++ b/Mk/Scripts/check_leftovers.sh
@@ -154,10 +154,6 @@ while read -r modtype path extra; do
# xmlcatmgr is constantly updating catalog.ports ignore
# modification to that file
share/xml/catalog.ports) ;;
- # Ignore ghc's doc index
- share/doc/ghc-%%GHC_VERSION%%/*) ;;
- # Ignore ghc's package conf
- lib/ghc-%%GHC_VERSION%%/package.conf.d/*) ;;
# Ignore common system config files
/etc/group|\
/etc/make.conf|\
diff --git a/Mk/Scripts/create-manifest.sh b/Mk/Scripts/create-manifest.sh
index 1a198ed8aef0..ce632bb4da7d 100644
--- a/Mk/Scripts/create-manifest.sh
+++ b/Mk/Scripts/create-manifest.sh
@@ -13,7 +13,7 @@ validate_env dp_ACTUAL_PACKAGE_DEPENDS dp_CATEGORIES dp_COMMENT \
dp_NO_ARCH dp_PKGBASE dp_PKGDEINSTALL dp_PKGINSTALL dp_PKGMESSAGES \
dp_PKGORIGIN dp_PKGPOSTDEINSTALL dp_PKGPOSTINSTALL dp_PKGPREDEINSTALL \
dp_PKGPREINSTALL dp_PKGVERSION dp_PKG_BIN dp_PKG_IGNORE_DEPENDS \
- dp_PKG_NOTES dp_PORT_OPTIONS dp_PREFIX dp_USERS dp_WWW
+ dp_PKG_NOTES dp_PORT_OPTIONS dp_PREFIX dp_USERS dp_WWW dp_VITAL
[ -n "${DEBUG_MK_SCRIPTS}" -o -n "${DEBUG_MK_SCRIPTS_CREATE_MANIFEST}" ] && set -x
@@ -58,6 +58,7 @@ EOT
[ -z "${dp_GROUPS}" ] || echo "groups: [ ${dp_GROUPS} ]"
[ -n "${dp_NO_ARCH}" ] && echo "arch : $(${dp_PKG_BIN} config abi | tr '[:upper:]' '[:lower:]' | cut -d: -f1,2):*"
[ -n "${dp_NO_ARCH}" ] && echo "abi : $(${dp_PKG_BIN} config abi | cut -d: -f1,2):*"
+[ -n "${dp_VITAL}" ] && echo "vital : true"
# Then the key/values sections
echo "deps: { "
diff --git a/Mk/Scripts/desktop-categories.sh b/Mk/Scripts/desktop-categories.sh
index 8daaf2a6d2d7..8f7bfed8bede 100644
--- a/Mk/Scripts/desktop-categories.sh
+++ b/Mk/Scripts/desktop-categories.sh
@@ -31,10 +31,11 @@ for native_category in ${dp_CATEGORIES}; do
deskutils) c="Utility" ;;
devel) c="Development" ;;
dns) c="Network" ;;
- elisp) c="Development" ;;
editors) c="Utility" ;;
education) c="Education" ;;
+ elisp) c="Development" ;;
emulators) c="System Emulator" ;;
+ filesystems) c="System Filesystem" ;;
finance) c="Office Finance" ;;
ftp) c="Network FileTransfer" ;;
games) c="Game" ;;
diff --git a/Mk/Scripts/do-users-groups.sh b/Mk/Scripts/do-users-groups.sh
index b4ddf5a8a5d3..fdaad401de72 100644
--- a/Mk/Scripts/do-users-groups.sh
+++ b/Mk/Scripts/do-users-groups.sh
@@ -76,7 +76,7 @@ if [ -n "${GROUPS}" ]; then
cat >> "${dp_UG_INSTALL}" <<-eot2
if ! \${PW} groupshow $group >/dev/null 2>&1; then
echo "Creating group '$group' with gid '$gid'"
- \${PW} groupadd $group -g $gid
+ \${PW} groupadd $group -g $gid || exit \$?
else
echo "Using existing group '$group'"
fi
@@ -129,7 +129,7 @@ if [ -n "${USERS}" ]; then
cat >> "${dp_UG_INSTALL}" <<-eot2
if ! \${PW} usershow $login >/dev/null 2>&1; then
echo "Creating user '$login' with uid '$uid'"
- \${PW} useradd $login -u $uid -g $gid $class -c "$gecos" -d $homedir -s $shell
+ \${PW} useradd $login -u $uid -g $gid $class -c "$gecos" -d $homedir -s $shell || exit \$?
else
echo "Using existing user '$login'"
fi
@@ -185,7 +185,7 @@ if [ -n "${GROUPS}" ]; then
cat >> "${dp_UG_INSTALL}" <<-eot2
if ! \${PW} groupshow ${group} | grep -qw ${login}; then
echo "Adding user '${login}' to group '${group}'"
- \${PW} groupmod ${group} -m ${login}
+ \${PW} groupmod ${group} -m ${login} || exit \$?
fi
eot2
fi
diff --git a/Mk/Scripts/qa.sh b/Mk/Scripts/qa.sh
index 935edf72065e..9c351420f607 100644
--- a/Mk/Scripts/qa.sh
+++ b/Mk/Scripts/qa.sh
@@ -371,7 +371,6 @@ proxydeps_suggest_uses() {
${pkg} = "graphics/cairomm" -o \
${pkg} = "devel/dconf" -o \
${pkg} = "devel/gconf2" -o \
- ${pkg} = "devel/gconfmm26" -o \
${pkg} = "devel/glib20" -o \
${pkg} = "devel/glibmm" -o \
${pkg} = "audio/gsound" -o \
@@ -386,7 +385,6 @@ proxydeps_suggest_uses() {
${pkg} = "x11-toolkits/gtksourceviewmm3" -o \
${pkg} = "databases/libgda5" -o \
${pkg} = "databases/libgda5-ui" -o \
- ${pkg} = "databases/libgdamm5" -o \
${pkg} = "devel/libglade2" -o \
${pkg} = "graphics/libgnomecanvas" -o \
${pkg} = "x11/libgnomekbd" -o \
@@ -399,7 +397,6 @@ proxydeps_suggest_uses() {
${pkg} = "textproc/libxml++26" -o \
${pkg} = "textproc/libxml2" -o \
${pkg} = "textproc/libxslt" -o \
- ${pkg} = "x11-wm/metacity" -o \
${pkg} = "x11-toolkits/pango" -o \
${pkg} = "x11-toolkits/pangomm" -o \
${pkg} = "x11-toolkits/pangox-compat" -o \
@@ -410,12 +407,12 @@ proxydeps_suggest_uses() {
# grep LIB_DEPENDS= Mk/Uses/gnome.mk |sed -e 's|\(.*\)_LIB_DEPENDS.*:\(.*\)\/\(.*\)|[ "\1" = "\3" ] \|\| echo "elif [ \\${pkg} = \\\"\2/\3\\\" ]; then; warn \\\"you need USE_GNOME+=\1\\\""|'|sort|sh
elif [ ${pkg} = "databases/evolution-data-server" ]; then warn "you need USE_GNOME+=evolutiondataserver3"
elif [ ${pkg} = "graphics/gdk-pixbuf" ]; then warn "you need USE_GNOME+=gdkpixbuf"
- elif [ ${pkg} = "graphics/gdk-pixbuf2" ]; then warn "you need USE_GNOME+=gdkpixbuf2"
+ elif [ ${pkg} = "graphics/gdk-pixbuf2" ]; then warn "you need USE_GNOME+=gdkpixbuf"
elif [ ${pkg} = "x11/gnome-desktop" ]; then warn "you need USE_GNOME+=gnomedesktop3"
elif [ ${pkg} = "devel/gobject-introspection" ]; then warn "you need USE_GNOME+=introspection"
elif [ ${pkg} = "graphics/libart_lgpl" ]; then warn "you need USE_GNOME+=libartlgpl2"
elif [ ${pkg} = "devel/libIDL" ]; then warn "you need USE_GNOME+=libidl"
- elif [ ${pkg} = "x11-fm/nautilus" ]; then warn "you need USE_GNOME+=nautilus3"
+ elif [ ${pkg} = "x11-fm/nautilus" ]; then warn "you need USE_GNOME+=nautilus4"
elif [ ${pkg} = "graphics/librsvg2-rust" ]; then warn "you need USE_GNOME+=librsvg2"
# mate
# grep LIB_DEPENDS= Mk/Uses/mate.mk |sed -e 's|\(.*\)_LIB_DEPENDS.*:\(.*\)\/\(.*\)|elif [ ${pkg} = "\2/\3" ]; then warn "you need USE_MATE+=\1"|'
@@ -475,7 +472,6 @@ proxydeps_suggest_uses() {
elif [ ${pkg} = "games/libkdegames" ]; then warn "you need to use USE_KDE+=libkdegames"
elif [ ${pkg} = "misc/libkeduvocdocument" ]; then warn "you need to use USE_KDE+=libkeduvocdocument"
elif [ ${pkg} = "graphics/libkexiv2" ]; then warn "you need to use USE_KDE+=libkexiv2"
- elif [ ${pkg} = "graphics/libkipi" ]; then warn "you need to use USE_KDE+=libkipi"
elif [ ${pkg} = "graphics/libksane" ]; then warn "you need to use USE_KDE+=libksane"
elif [ ${pkg} = "astro/marble" ]; then warn "you need to use USE_KDE+=marble"
elif [ ${pkg} = "graphics/okular" ]; then warn "you need to use USE_KDE+=okular"
@@ -561,6 +557,9 @@ proxydeps_suggest_uses() {
# Qt5
elif expr ${pkg} : '.*/qt5-.*' > /dev/null; then
warn "you need USES=qt:5 and USE_QT+=$(echo ${pkg} | sed -E 's|.*/qt5-||')"
+ # Qt6
+ elif expr ${pkg} : '.*/qt6-.*' > /dev/null; then
+ warn "you need USES=qt:6 and USE_QT+=$(echo ${pkg} | sed -E 's|.*/qt6-||')"
# MySQL
elif expr ${lib_file} : "${LOCALBASE}/lib/mysql/[^/]*$" > /dev/null; then
warn "you need USES+=mysql"
@@ -577,7 +576,7 @@ proxydeps_suggest_uses() {
elif [ ${pkg} = "databases/firebird25-client" ]; then
warn "you need USES+=firebird"
# fuse
- elif [ ${pkg} = "sysutils/fusefs-libs" ]; then
+ elif [ ${pkg} = "filesystems/fusefs-libs" ]; then
warn "you need USES+=fuse"
# gnustep
elif [ ${pkg} = "lang/gnustep-base" ]; then
@@ -623,7 +622,11 @@ proxydeps_suggest_uses() {
elif [ ${pkg} = "devel/readline" ]; then
warn "you need USES+=readline"
# ssl
+ # When updating this, please also update the versions list in
+ # bsd.default-versions.mk and ssl.mk!
elif [ ${pkg} = "security/openssl" -o ${pkg} = "security/openssl111" \
+ -o ${pkg} = "security/openssl31" -o ${pkg} = "security/openssl32" \
+ -o ${pkg} = "security/openssl33" \
-o ${pkg} = "security/libressl" -o ${pkg} = "security/libressl-devel" \
]; then
warn "you need USES=ssl"
@@ -717,9 +720,9 @@ proxydeps() {
sed -e 's/^\.//')
EOT
- # Check whether all files in LIB_DPEENDS are actually linked against
+ # Check whether all files in LIB_DEPENDS are actually linked against
for _library in ${WANTED_LIBRARIES} ; do
- if ! listcontains ${_library} "${dep_lib_files}" ; then
+ if ! listcontains ${_library%%.so*}.so "${dep_lib_files}" ; then
warn "you might not need LIB_DEPENDS on ${_library}"
fi
done
diff --git a/Mk/Uses/ada.mk b/Mk/Uses/ada.mk
index 98badb9f81f7..25f0b6a8d8c8 100644
--- a/Mk/Uses/ada.mk
+++ b/Mk/Uses/ada.mk
@@ -1,11 +1,10 @@
# Establish Ada-capable compiler as a build dependency
-# To change default compiler, define ADA_DEFAULT in make.conf
#
# Feature: ada
# Usage: USES=ada:ARGS
# Valid ARGS: [<version>],[run]
#
-# version The chooseable versions are 6 (default), 12 or 13
+# version The chooseable versions are 6 , 12 (default) or 13
#
# run Add run depends
#
diff --git a/Mk/Uses/autoreconf.mk b/Mk/Uses/autoreconf.mk
index 67ee8c824455..781f58dc20b5 100644
--- a/Mk/Uses/autoreconf.mk
+++ b/Mk/Uses/autoreconf.mk
@@ -92,7 +92,7 @@ _AUTORECONF= 2.72
BUILD_DEPENDS+= autoconf>=${_AUTORECONF}:devel/autoconf
. endif
-BUILD_DEPENDS+= automake>=1.16.5:devel/automake
+BUILD_DEPENDS+= automake>=1.17:devel/automake
. if defined(libtool_ARGS) && empty(libtool_ARGS:Mbuild)
BUILD_DEPENDS+= libtoolize:devel/libtool
diff --git a/Mk/Uses/blaslapack.mk b/Mk/Uses/blaslapack.mk
index ff14194e50b5..1e602695b0a0 100644
--- a/Mk/Uses/blaslapack.mk
+++ b/Mk/Uses/blaslapack.mk
@@ -2,7 +2,7 @@
#
# Feature: blaslapack
# Usage: USES=blaslapack or USES=blaslapack:ARGS
-# Valid ARGS: atlas blis flexiblas netlib (default) openblas
+# Valid ARGS: atlas blis flexiblas netlib (default) openblas openblas64
#
# Provides: BLASLIB and LAPACKLIB
#
@@ -13,12 +13,10 @@
.if !defined(_INCLUDE_USES_BLASLAPACK_MK)
_INCLUDE_USES_BLASLAPACK_MK= yes
-_valid_ARGS= atlas blis flexiblas netlib openblas
-
-_DEFAULT_BLASLAPACK= netlib
+_valid_ARGS= atlas blis flexiblas netlib openblas openblas64
. if empty(blaslapack_ARGS)
-blaslapack_ARGS= ${_DEFAULT_BLASLAPACK}
+blaslapack_ARGS= ${BLASLAPACK_DEFAULT}
. endif
LDFLAGS+= -L${LOCALBASE}/lib
@@ -40,7 +38,7 @@ BLA_VENDOR= FLAME
LIB_DEPENDS+= libflexiblas.so:math/flexiblas
_BLASLIB= flexiblas
BLA_VENDOR= FlexiBLAS
-. elif ${blaslapack_ARGS} == netlib
+. elif ${blaslapack_ARGS} == netlib || empty(blaslapack_ARGS)
LIB_DEPENDS+= libblas.so:math/blas
LIB_DEPENDS+= liblapack.so:math/lapack
_BLASLIB= blas
@@ -51,6 +49,12 @@ LIB_DEPENDS+= libopenblas.so:math/openblas
_BLASLIB= openblas
LAPACKLIB= -lopenblas
BLA_VENDOR= OpenBLAS
+. elif ${blaslapack_ARGS} == openblas64
+LIB_DEPENDS+= libopenblas_64.so:math/openblas64
+_BLASLIB= openblas_64
+LAPACKLIB= -lopenblas_64
+BLA_VENDOR= OpenBLAS
+CFLAGS+= -I${LOCALBASE}/include/openblas64
. else
IGNORE= USES=blaslapack: invalid arguments: ${blaslapack_ARGS}
. endif
diff --git a/Mk/Uses/cabal.mk b/Mk/Uses/cabal.mk
index 2ee0596e0a6e..cf1ffe9874f9 100644
--- a/Mk/Uses/cabal.mk
+++ b/Mk/Uses/cabal.mk
@@ -76,11 +76,6 @@ IGNORE= USES=cabal: invalid arguments: ${arg}
IGNORE= CABAL_PROJECT: invalid value: ${CABAL_PROJECT}
. endif
-. if ${ARCH} == i386 && defined(USE_CABAL) && ${USE_CABAL:Mbasement-0.0.1[4-5]}
-# Upstream issue: https://github.com/haskell-foundation/foundation/issues/565
-BROKEN= ${USE_CABAL:Mbasement-0.0.1[4-5]} package doesn't compile on i386
-. endif
-
PKGNAMEPREFIX?= hs-
CABAL_EXECUTABLES?= ${PORTNAME}
@@ -318,7 +313,7 @@ cabal-pre-configure:
. if !target(do-build)
do-build:
cd ${WRKSRC} && \
- ${SETENVI} ${WRK_ENV} ${MAKE_ENV} ${CABAL_HOME_ENV} ${CABAL_CMD} build --offline --disable-benchmarks --disable-tests ${CABAL_WITH_ARGS} ${CABAL_LTO_ARGS} --flags "${CABAL_FLAGS}" ${BUILD_ARGS} ${BUILD_TARGET}
+ ${SETENVI} ${WRK_ENV} ${MAKE_ENV} ${CABAL_HOME_ENV} ${CABAL_CMD} build --no-semaphore --disable-benchmarks --disable-tests ${CABAL_WITH_ARGS} ${CABAL_LTO_ARGS} --flags "${CABAL_FLAGS}" ${BUILD_ARGS} ${BUILD_TARGET}
. endif
. if !target(do-install)
diff --git a/Mk/Uses/cargo.mk b/Mk/Uses/cargo.mk
index 8710374e3584..f5325f39afdb 100644
--- a/Mk/Uses/cargo.mk
+++ b/Mk/Uses/cargo.mk
@@ -97,7 +97,7 @@ WRKSRC_crate_${_crate}= ${WRKDIR}/${_wrksrc}
CARGO_BUILDDEP?= yes
. if ${CARGO_BUILDDEP:tl} == "yes"
-BUILD_DEPENDS+= ${RUST_DEFAULT}>=1.77.0:lang/${RUST_DEFAULT}
+BUILD_DEPENDS+= ${RUST_DEFAULT}>=1.88.0:lang/${RUST_DEFAULT}
. elif ${CARGO_BUILDDEP:tl} == "any-version"
BUILD_DEPENDS+= ${RUST_DEFAULT}>=0:lang/${RUST_DEFAULT}
. endif
@@ -110,9 +110,6 @@ RUSTDOC?= ${LOCALBASE}/bin/rustdoc
# Location of the cargo output directory.
CARGO_TARGET_DIR?= ${WRKDIR}/target
-# Default target platform (affects some RUSTFLAGS if passed)
-CARGO_BUILD_TARGET?= ${_CARGO_RUST_ARCH_${ARCH}:U${ARCH}}-unknown-${OPSYS:tl}
-
_CARGO_RUST_ARCH_amd64= x86_64
_CARGO_RUST_ARCH_i386= i686
_CARGO_RUST_ARCH_riscv64= riscv64gc
@@ -128,19 +125,18 @@ _CARGO_RUST_ARCH_riscv64= riscv64gc
CARGO_ENV+= \
CARGO_HOME=${WRKDIR}/cargo-home \
CARGO_BUILD_JOBS=${MAKE_JOBS_NUMBER} \
- CARGO_BUILD_TARGET=${CARGO_BUILD_TARGET} \
CARGO_TARGET_DIR=${CARGO_TARGET_DIR} \
- CARGO_TARGET_${CARGO_BUILD_TARGET:S/-/_/g:tu}_LINKER="${CC}" \
RUSTC=${RUSTC} \
RUSTDOC=${RUSTDOC} \
RUSTFLAGS="${RUSTFLAGS} ${LDFLAGS:C/.+/-C link-arg=&/}"
-. if ${ARCH} != powerpc
+. if ${ARCH} != powerpc64le
CARGO_ENV+= RUST_BACKTRACE=1
. endif
-. if defined(WITH_LTO)
+. if !defined(WITHOUT_LTO)
_CARGO_MSG= "===> Additional optimization to port applied"
+WITH_LTO= yes
. endif
# Adjust -C target-cpu if -march/-mcpu is set by bsd.cpu.mk
@@ -322,6 +318,7 @@ cargo-configure:
${ECHO_CMD} "[profile.release]" >> ${CARGO_CARGOTOML}; \
${ECHO_CMD} "opt-level = 2" >> ${CARGO_CARGOTOML}; \
${ECHO_CMD} "debug = false" >> ${CARGO_CARGOTOML}; \
+ ${ECHO_CMD} 'strip = "symbols"' >> ${CARGO_CARGOTOML}; \
fi
@${ECHO_MSG} "===> Updating Cargo.lock"
@${CARGO_CARGO_RUN} update \
@@ -385,7 +382,7 @@ cargo-crates: cargo-crates-generate-lockfile
cargo-crates-generate-lockfile: extract
@if [ ! -r "${CARGO_CARGOLOCK}" ]; then \
${ECHO_MSG} "===> ${CARGO_CARGOLOCK} not found. Trying to generate it..."; \
- cd ${WRKSRC}; ${_CARGO_RUN} generate-lockfile \
+ cd ${CARGO_CARGOLOCK:H}; ${_CARGO_RUN} generate-lockfile \
--manifest-path ${CARGO_CARGOTOML} \
--verbose; \
fi
diff --git a/Mk/Uses/cl.mk b/Mk/Uses/cl.mk
new file mode 100644
index 000000000000..6144c08386b7
--- /dev/null
+++ b/Mk/Uses/cl.mk
@@ -0,0 +1,142 @@
+# Provide support for Common Lisp ports.
+#
+# Feature: cl
+# Usage: USES=cl
+# Valid ARGS: none
+#
+# Variables, which may be set by ports:
+# ASDF_MODULES - List of ASDF modules to build when FASL_TARGET is set (defaults to PORTNAME)
+# FASL_TARGET - Build fasl variant of port (one of ccl, clisp, or sbcl)
+# USE_ASDF - Depend on devel/cl-asdf
+# USE_ASDF_FASL - Depend on devel/cl-asdf-<FASL_TARGET>
+# USE_CCL - Depend on lang/ccl; implied when FASL_TARGET=ccl
+# USE_CLISP - Depend on lang/clisp; implied when FASL_TARGET=clisp
+# USE_SBCL - Depend on lang/sbcl; implied when FASL_TARGET=SBCL
+#
+# Variables to be read by ports:
+# ASDF_PATHNAME - Path to CL source
+# ASDF_REGISTRY - Path to CL registry containing asd files
+# CCL - Path to the Clozure Common Lisp compiler
+# CLISP - Path to the GNU Common Lisp compiler
+# CL_LIBDIR_REL - CL library directory relative to LOCALBASE or PREFIX
+# DOCSDIR - DOCSDIR accounting for cl- PKGNAMEPREFIX
+# EXAMPLESDIR - EXAMPLESDIR accounting for cl- PKGNAMEPREFIX
+# FASL_DIR_REL - Relative path to compiled fasl files; depends on FASL_TARGET
+# FASL_PATHNAME - Path to CL fasl
+# LISP_EXTRA_ARG - Extra arguments used when building fasl
+# SBCL - Path to the Steel Bank Common Lisp compiler
+
+.if !defined(_INCLUDE_USES_CL_MK)
+_INCLUDE_USES_CL_MK= yes
+
+CL_ASDF_Include_MAINTAINER= olgeni@FreeBSD.org
+
+CCL?= ${LOCALBASE}/bin/ccl
+CLISP?= ${LOCALBASE}/bin/clisp
+SBCL?= ${LOCALBASE}/bin/sbcl
+
+CL_LIBDIR_REL= lib/common-lisp
+
+ASDF_PATHNAME= ${PREFIX}/${CL_LIBDIR_REL}/${PORTNAME}
+ASDF_REGISTRY= ${PREFIX}/${CL_LIBDIR_REL}/system-registry
+
+# Include PKGNAMEPREFIX in DOCSDIR and EXAMPLESDIR
+DOCSDIR= ${PREFIX}/share/doc/${PKGBASE}
+EXAMPLESDIR= ${PREFIX}/share/examples/${PKGBASE}
+
+. if ${PORTNAME} != "ccl"
+NO_ARCH= yes
+. endif
+
+. if defined(FASL_TARGET)
+FASL_DIR_REL= ${FASL_TARGET}fasl
+FASL_PATHNAME= ${PREFIX}/${CL_LIBDIR_REL}/${PORTNAME}/${FASL_DIR_REL}
+PKGNAMESUFFIX= -${FASL_TARGET}
+. if ${FASL_TARGET} == "ccl"
+USE_CCL= yes
+. elif ${FASL_TARGET} == "clisp"
+USE_CLISP= yes
+. elif ${FASL_TARGET} == "sbcl"
+USE_SBCL= yes
+. endif
+. endif # defined(FASL_TARGET)
+
+. if defined(USE_CCL)
+BUILD_DEPENDS+= ccl:lang/ccl
+RUN_DEPENDS+= ccl:lang/ccl
+. elif defined(USE_CLISP)
+BUILD_DEPENDS+= clisp:lang/clisp
+RUN_DEPENDS+= clisp:lang/clisp
+. elif defined(USE_SBCL)
+BUILD_DEPENDS+= sbcl:lang/sbcl
+RUN_DEPENDS+= sbcl:lang/sbcl
+. endif
+
+. if defined(USE_ASDF)
+# Depend on the ASDF port, even if the Common Lisp compiler already has a bundled
+# ASDF framework.
+BUILD_DEPENDS+= ${LOCALBASE}/${CL_LIBDIR_REL}/asdf/asdf.asd:devel/cl-asdf
+RUN_DEPENDS+= ${LOCALBASE}/${CL_LIBDIR_REL}/asdf/asdf.asd:devel/cl-asdf
+. endif # defined(USE_ASDF)
+
+. if defined(USE_ASDF_FASL)
+. if defined(USE_CCL)
+BUILD_DEPENDS+= ${LOCALBASE}/${CL_LIBDIR_REL}/asdf/${FASL_DIR_REL}/build/asdf.fx64fsl:devel/cl-asdf-ccl
+RUN_DEPENDS+= ${LOCALBASE}/${CL_LIBDIR_REL}/asdf/${FASL_DIR_REL}/build/asdf.fx64fsl:devel/cl-asdf-ccl
+. elif defined(USE_CLISP)
+BUILD_DEPENDS+= ${LOCALBASE}/${CL_LIBDIR_REL}/asdf/${FASL_DIR_REL}/build/asdf.fas:devel/cl-asdf-clisp
+RUN_DEPENDS+= ${LOCALBASE}/${CL_LIBDIR_REL}/asdf/${FASL_DIR_REL}/build/asdf.fas:devel/cl-asdf-clisp
+. elif defined(USE_SBCL)
+BUILD_DEPENDS+= ${LOCALBASE}/${CL_LIBDIR_REL}/asdf/${FASL_DIR_REL}/build/asdf.fasl:devel/cl-asdf-sbcl
+RUN_DEPENDS+= ${LOCALBASE}/${CL_LIBDIR_REL}/asdf/${FASL_DIR_REL}/build/asdf.fasl:devel/cl-asdf-sbcl
+. endif
+. endif # defined(USE_ASDF_FASL)
+
+. if defined(FASL_TARGET)
+
+ASDF_MODULES?= ${PORTNAME}
+
+. if !target(do-build)
+# See devel/cl-freebsd-asdf-init/files/cl-freebsd-asdf-init.lisp for the meaning
+# of FBSD_ASDF_COMPILE_PORT.
+do-build:
+. for MODULE in ${ASDF_MODULES}
+. if defined(USE_CCL)
+ @FBSD_ASDF_COMPILE_PORT=t PORTNAME=${PORTNAME} WRKSRC=${WRKSRC}/ \
+ ${CCL} ${LISP_EXTRA_ARG} -b -n \
+ -l ${LOCALBASE}/etc/cl-freebsd-asdf-init \
+ -e "(asdf:oos 'asdf:compile-op :${MODULE})"
+. endif # USE_CCL
+
+. if defined(USE_CLISP)
+ @FBSD_ASDF_COMPILE_PORT=t PORTNAME=${PORTNAME} WRKSRC=${WRKSRC}/ \
+ ${CLISP} ${LISP_EXTRA_ARG} -ansi -norc \
+ -i ${LOCALBASE}/etc/cl-freebsd-asdf-init \
+ -x "(asdf:oos 'asdf:compile-op :${MODULE})"
+. endif # USE_CLISP
+
+. if defined(USE_SBCL)
+ @FBSD_ASDF_COMPILE_PORT=t PORTNAME=${PORTNAME} WRKSRC=${WRKSRC}/ \
+ ${SBCL} ${LISP_EXTRA_ARG} --noinform --userinit /dev/null --disable-debugger \
+ --eval '#.(load "${LOCALBASE}/etc/cl-freebsd-asdf-init")' \
+ --eval "(asdf:oos 'asdf:compile-op :${MODULE})" \
+ --eval "(quit)"
+. endif # USE_SBCL
+. endfor
+. endif # !target(do-build)
+
+. if !target(do-install)
+do-install:
+ @${MKDIR} ${STAGEDIR}${FASL_PATHNAME}
+ @cd ${WRKSRC} && ${COPYTREE_SHARE} . ${STAGEDIR}${FASL_PATHNAME}
+
+. endif # !target(do-install)
+post-install:
+ @cd ${WRKSRC} && ${FIND} * -type f \
+ | ${SORT} \
+ | ${AWK} '{ print "${CL_LIBDIR_REL}/${PORTNAME}/${FASL_DIR_REL}/" $$1 }' \
+ >> ${TMPPLIST}
+
+. endif # FASL_TARGET
+
+.endif # _INCLUDE_USES_ASDF_MK
diff --git a/Mk/Uses/cmake.mk b/Mk/Uses/cmake.mk
index 4129f0f341fc..6d8978c49672 100644
--- a/Mk/Uses/cmake.mk
+++ b/Mk/Uses/cmake.mk
@@ -53,6 +53,10 @@
# Default: BUILD_TESTING
# CMAKE_TESTING_OFF Appends -D<var>:bool=OFF to the CMAKE_TESTING_ARGS.
# Default: empty
+# CMAKE_TESTING_SETENV - Use SETENV instead of SETENVI to run the tests.
+# Useful for tests that require a running X or Wayland
+# session to keep enviroment variables like DISPLAY.
+# Default: undefined, set to any value to enable.
# CMAKE_TESTING_TARGET - Name of the test target. Default: test
#
# MAINTAINER: kde@FreeBSD.org
@@ -62,7 +66,9 @@ _INCLUDE_USES_CMAKE_MK= yes
_valid_ARGS= indirect insource noninja run testing _internal
-_CMAKE_VERSION= 3.28.3
+# Reminder: devel/cmake-core, devel/cmake-doc, devel/cmake-gui, and devel/cmake-man
+# are all affected by changing _CMAKE_VERSION. Please check each of these ports.
+_CMAKE_VERSION= 3.31.7
CMAKE_BIN= ${LOCALBASE}/bin/cmake
# Sanity check
@@ -103,6 +109,7 @@ CMAKE_ARGS+= -DCMAKE_C_COMPILER:STRING="${CC}" \
-DCMAKE_MODULE_LINKER_FLAGS:STRING="${LDFLAGS}" \
-DCMAKE_SHARED_LINKER_FLAGS:STRING="${LDFLAGS}" \
-DCMAKE_INSTALL_PREFIX:PATH="${CMAKE_INSTALL_PREFIX}" \
+ -DCMAKE_AUTOGEN_PARALLEL:STRING="${MAKE_JOBS_NUMBER}" \
-DCMAKE_BUILD_TYPE:STRING="${CMAKE_BUILD_TYPE}" \
-DTHREADS_HAVE_PTHREAD_ARG:BOOL=YES \
-DCMAKE_INSTALL_RPATH_USE_LINK_PATH=YES \
@@ -179,8 +186,16 @@ do-configure:
. if !target(do-test) && ${cmake_ARGS:Mtesting}
CMAKE_TESTING_ON?= BUILD_TESTING
+CMAKE_TESTING_PARALLEL_LEVEL?= ${MAKE_JOBS_NUMBER}
CMAKE_TESTING_TARGET?= test
+# Use SETENV instead of SETENVI if CMAKE_TESTING_SETENV is defined
+. if defined(CMAKE_TESTING_SETENV)
+_CMAKE_TESTING_SETENV= ${SETENV}
+. else
+_CMAKE_TESTING_SETENV= ${SETENVI}
+. endif
+
# Handle the option-like CMAKE_TESTING_ON and CMAKE_TESTING_OFF lists.
. for _bool_kind in ON OFF
. if defined(CMAKE_TESTING_${_bool_kind})
@@ -192,7 +207,7 @@ do-test:
@cd ${BUILD_WRKSRC} && \
${SETENVI} ${WRK_ENV} ${CONFIGURE_ENV} ${CMAKE_BIN} ${CMAKE_ARGS} ${CMAKE_TESTING_ARGS} ${CMAKE_SOURCE_PATH} && \
${SETENVI} ${WRK_ENV} ${MAKE_ENV} ${MAKE_CMD} ${_MAKE_JOBS} ${MAKE_ARGS} ${ALL_TARGET} && \
- ${SETENVI} ${WRK_ENV} ${MAKE_ENV} ${MAKE_CMD} ${MAKE_ARGS} ${CMAKE_TESTING_TARGET}
+ ${_CMAKE_TESTING_SETENV} ${WRK_ENV} ${TEST_ENV} CTEST_PARALLEL_LEVEL=${CMAKE_TESTING_PARALLEL_LEVEL} ${MAKE_CMD} ${MAKE_ARGS} ${CMAKE_TESTING_TARGET}
. endif
. endif
diff --git a/Mk/Uses/compiler.mk b/Mk/Uses/compiler.mk
index d668873e1f2a..28103bcf1c83 100644
--- a/Mk/Uses/compiler.mk
+++ b/Mk/Uses/compiler.mk
@@ -2,17 +2,19 @@
#
# Feature: compiler
# Usage: USES=compiler or USES=compiler:ARGS
-# Valid ARGS: env (default, implicit) c++0x c++11-lib c++11-lang c11 nestedfct features
+# Valid ARGS: env (default, implicit) c++0x c++11-lib c++11-lang c11 c17 nestedfct features
#
# c++0x: The port needs a compiler understanding C++0X
# c++11-lang: The port needs a compiler understanding C++11
# c++14-lang: The port needs a compiler understanding C++14
# c++17-lang: The port needs a compiler understanding C++17
# c++20-lang: The port needs a compiler understanding C++20
+# c++23-lang: The port needs a compiler understanding C++23
# c++2b-lang: The port needs a compiler understanding C++2b
# gcc-c++11-lib:The port needs g++ compiler with a C++11 library
# c++11-lib: The port needs a compiler understanding C++11 and with a C++11 ready standard library
# c11: The port needs a compiler understanding C11
+# c17: The port needs a compiler understanding C17
# nestedfct: The port needs a compiler understanding nested functions
# features: The port will determine the features supported by the default compiler
#
@@ -35,8 +37,8 @@ _INCLUDE_USES_COMPILER_MK= yes
compiler_ARGS= env
. endif
-VALID_ARGS= c++11-lib c++11-lang c++14-lang c++17-lang c++20-lang \
- c++2b-lang c11 features env nestedfct c++0x gcc-c++11-lib
+VALID_ARGS= c++11-lib c++11-lang c++14-lang c++17-lang c++20-lang c++23-lang \
+ c++2b-lang c11 c17 features env nestedfct c++0x gcc-c++11-lib
_CC_hash:= ${CC:hash}
_CXX_hash:= ${CXX:hash}
@@ -55,10 +57,14 @@ _COMPILER_ARGS+= features c++14-lang
_COMPILER_ARGS+= features c++17-lang
. elif ${compiler_ARGS} == c++20-lang
_COMPILER_ARGS+= features c++20-lang
+. elif ${compiler_ARGS} == c++23-lang
+_COMPILER_ARGS+= features c++23-lang
. elif ${compiler_ARGS} == c++2b-lang
_COMPILER_ARGS+= features c++2b-lang
. elif ${compiler_ARGS} == c11
_COMPILER_ARGS+= features c11
+. elif ${compiler_ARGS} == c17
+_COMPILER_ARGS+= features c17
. elif ${compiler_ARGS} == features
_COMPILER_ARGS+= features
. elif ${compiler_ARGS} == env
@@ -70,7 +76,7 @@ IGNORE= Invalid argument "${compiler_ARGS}", valid arguments are: ${VALID_ARGS}
_COMPILER_ARGS= #
. endif
-. if ${_COMPILER_ARGS:Mc++*} || ${_COMPILER_ARGS:Mc11}
+. if ${_COMPILER_ARGS:Mc++*} || ${_COMPILER_ARGS:Mc11} || ${_COMPILER_ARGS:Mc17}
_COMPILER_ARGS+= features
. endif
@@ -135,8 +141,8 @@ COMPILER_FEATURES= libc++
COMPILER_FEATURES= libstdc++
. endif
-CSTD= c89 c99 c11 gnu89 gnu99 gnu11
-CXXSTD= c++98 c++0x c++11 c++14 c++17 c++20 c++2b \
+CSTD= c89 c99 c11 c17 gnu89 gnu99 gnu11
+CXXSTD= c++98 c++0x c++11 c++14 c++17 c++20 c++23 c++2b \
gnu++98 gnu++11 gnu++14 gnu++17 gnu++20 gnu++2b
. for std in ${CSTD} ${CXXSTD}
@@ -168,12 +174,13 @@ CHOSEN_COMPILER_TYPE= gcc
. endif
. if (${_COMPILER_ARGS:Mc++2b-lang} && !${COMPILER_FEATURES:Mc++2b}) || \
+(${_COMPILER_ARGS:Mc++23-lang} && !${COMPILER_FEATURES:Mc++23}) || \
(${_COMPILER_ARGS:Mc++20-lang} && !${COMPILER_FEATURES:Mc++20}) || \
(${_COMPILER_ARGS:Mc++17-lang} && !${COMPILER_FEATURES:Mc++17}) || \
(${_COMPILER_ARGS:Mc++14-lang} && !${COMPILER_FEATURES:Mc++14}) || \
(${_COMPILER_ARGS:Mc++11-lang} && !${COMPILER_FEATURES:Mc++11}) || \
(${_COMPILER_ARGS:Mc++0x} && !${COMPILER_FEATURES:Mc++0x}) || \
-(${_COMPILER_ARGS:Mc11} && !${COMPILER_FEATURES:Mc11})
+(${_COMPILER_ARGS:Mc11} && !${COMPILER_FEATURES:Mc11} && !${COMPILER_FEATURES:Mc17})
. if ${_COMPILER_ARGS:Mc++2b-lang}
_LLVM_MINVER= 14
. elif ${_COMPILER_ARGS:Mc++20-lang}
diff --git a/Mk/Uses/cpe.mk b/Mk/Uses/cpe.mk
index 92d27e5aa12b..23f4a73dc266 100644
--- a/Mk/Uses/cpe.mk
+++ b/Mk/Uses/cpe.mk
@@ -1,7 +1,5 @@
# Include CPE information in package manifest as a CPE 2.3 formatted
-# string.
-# See https://csrc.nist.gov/projects/security-content-automation-protocol/specifications/cpe
-# for details.
+# string. See https://scap.nist.gov/specifications/cpe/ for details.
#
# CPE_PART Defaults to "a" for "application".
# CPE_VENDOR Defaults to same as ${CPE_PRODUCT} (below).
diff --git a/Mk/Uses/cran.mk b/Mk/Uses/cran.mk
index e357f296ad8e..722f55d7e916 100644
--- a/Mk/Uses/cran.mk
+++ b/Mk/Uses/cran.mk
@@ -36,7 +36,7 @@ R_POSTCMD_CHECK_OPTIONS+= --no-manual --no-build-vignettes
do-test:
@${FIND} ${WRKSRC} \( -name '*.o' -o -name '*.so' \) -delete
- @cd ${WRKDIR} ; ${SETENV} ${MAKE_ENV} _R_CHECK_FORCE_SUGGESTS_=FALSE \
+ @cd ${WRKDIR} ; ${SETENVI} ${WRK_ENV} ${MAKE_ENV} _R_CHECK_FORCE_SUGGESTS_=FALSE \
${R_COMMAND} ${R_PRECMD_CHECK_OPTIONS} CMD check \
${R_POSTCMD_CHECK_OPTIONS} ${PORTNAME}
. endif
@@ -51,7 +51,7 @@ R_POSTCMD_INSTALL_OPTIONS+= --no-docs --no-html
do-install:
@${MKDIR} ${STAGEDIR}${PREFIX}/${R_LIB_DIR}
- @cd ${WRKDIR} ; ${SETENV} ${MAKE_ENV} ${R_COMMAND} \
+ @cd ${WRKDIR} ; ${SETENVI} ${WRK_ENV} ${MAKE_ENV} ${R_COMMAND} \
${R_PRECMD_INSTALL_OPTIONS} CMD INSTALL \
${R_POSTCMD_INSTALL_OPTIONS} ${PORTNAME}
. endif
diff --git a/Mk/Uses/electronfix.mk b/Mk/Uses/electronfix.mk
index 001bd64a81ad..3b5a7c92d9b4 100644
--- a/Mk/Uses/electronfix.mk
+++ b/Mk/Uses/electronfix.mk
@@ -17,24 +17,18 @@
.if !defined(_INCLUDE_USES_ELECTRONFIX_MK)
_INCLUDE_USES_ELECTRONFIX_MK= yes
-_ELECTRONFIX_MK_VALID_VERSIONS= 22 23 24 25 27 28
+. if empty(electronfix_ARGS)
+. error USES=electronfix requires a version argument
+. endif
-# === parse version arguments ===
-_ELECTRONFIX_MK_VERSION= # empty
-. for _ver in ${_ELECTRONFIX_MK_VALID_VERSIONS}
-. if ${electronfix_ARGS:M${_ver}}
-. if !empty(_ELECTRONFIX_MK_VERSION)
-BROKEN= USES=electronfix:${electronfix_ARGS} contains multiple version definitions
-. else
-_ELECTRONFIX_MK_VERSION= ${_ver}
-. endif
-. endif
-. endfor
+_ELECTRON_MAKEFILE_VERSION= ${PORTSDIR}/devel/electron${electronfix_ARGS}/Makefile.version
-. include "${.CURDIR}/../../devel/electron${_ELECTRONFIX_MK_VERSION}/Makefile.version"
+. if !exists(${_ELECTRON_MAKEFILE_VERSION})
+. error Unknown Electron version in USES=electronfix:${electronfix_ARGS}
+. endif
-BUILD_DEPENDS+= electron${_ELECTRONFIX_MK_VERSION}:devel/electron${_ELECTRONFIX_MK_VERSION}
-RUN_DEPENDS+= electron${_ELECTRONFIX_MK_VERSION}:devel/electron${_ELECTRONFIX_MK_VERSION}
+BUILD_DEPENDS+= electron${electronfix_ARGS}:devel/electron${electronfix_ARGS}
+RUN_DEPENDS+= electron${electronfix_ARGS}:devel/electron${electronfix_ARGS}
ELECTRONFIX_SYMLINK_FILES?= \
chromedriver \
@@ -58,11 +52,11 @@ electronfix-post-install:
${RM} ${STAGEDIR}${DATADIR}/libvulkan.so.1
. for f in ${ELECTRONFIX_SYMLINK_FILES}
${RM} ${STAGEDIR}${DATADIR}/${f}
- ${LN} -s ${LOCALBASE}/share/electron${_ELECTRONFIX_MK_VERSION}/${f} ${STAGEDIR}${DATADIR}/${f}
+ ${LN} -s ${LOCALBASE}/share/electron${electronfix_ARGS}/${f} ${STAGEDIR}${DATADIR}/${f}
. endfor
. ifdef ELECTRONFIX_MAIN_EXECUTABLE
# We have to copy the electron binary instead of symlinking
- ${CP} ${LOCALBASE}/share/electron${_ELECTRONFIX_MK_VERSION}/electron ${STAGEDIR}${DATADIR}/${ELECTRONFIX_MAIN_EXECUTABLE}
+ ${CP} ${LOCALBASE}/share/electron${electronfix_ARGS}/electron ${STAGEDIR}${DATADIR}/${ELECTRONFIX_MAIN_EXECUTABLE}
. endif
electronfix-stage-qa:
diff --git a/Mk/Uses/elfctl.mk b/Mk/Uses/elfctl.mk
index 442f13db596f..446a57c43425 100644
--- a/Mk/Uses/elfctl.mk
+++ b/Mk/Uses/elfctl.mk
@@ -1,26 +1,39 @@
-# Change an ELF binary's feature control note
+# Set ELF binary feature control notes
#
# Feature: elfctl
-# Usage: USES=elfctl
-# Valid ARGS: none
+# Usage: USES=elfctl or USES=elfctl:ARGS
+# Valid ARGS: build (default, implicit), stage
#
-# Variables
+# Files listed in ELF_FEATURES are relative to:
+# - ${BUILD_WRKSRC} when the `build` argument is supplied
+# - ${STAGEDIR} when the `stage` argument is supplied.
#
-# ELF_FEATURES= featurelist:path/to/file1 \
-# featurelist:path/to/file1 \
- featurelist:path/to/file2
+# Variables:
#
-# The file paths listed in ELF_FEATURES are relative to ${BUILD_WRKSRC}.
+# ELF_FEATURES= featurelist:path/to/file1 \
+# featurelist:path/to/file2
#
.if !defined(_INCLUDE_USES_ELFCTL_MK)
_INCLUDE_USES_ELFCTL_MK= yes
-. if ! empty(ELF_FEATURES)
-_USES_build+= 720:elfctl-post-build
-elfctl-post-build:
+. if empty(elfctl_ARGS)
+elfctl_ARGS= build
+. endif
+
+. if ${elfctl_ARGS} == "build"
+_ELFCTL_TOPDIR= ${BUILD_WRKSRC}
+. elif ${elfctl_ARGS} == "stage"
+_ELFCTL_TOPDIR= ${STAGEDIR}
+. else
+IGNORE= USES=elfctl - invalid args: [${elfctl_ARGS}] specified
+. endif
+
+. if !empty(ELF_FEATURES)
+_USES_${elfctl_ARGS}+= 720:elfctl-post-${elfctl_ARGS}
+elfctl-post-${elfctl_ARGS}:
. for feat in ${ELF_FEATURES}
- ${ELFCTL} -i -e ${feat:C/:.*//} ${BUILD_WRKSRC}/${feat:C/.*://}
+ ${ELFCTL} -i -e ${feat:C/:.*//} ${_ELFCTL_TOPDIR}/${feat:C/.*://}
. endfor
. endif
diff --git a/Mk/Uses/emacs.mk b/Mk/Uses/emacs.mk
index d601390f0569..c278e3447935 100644
--- a/Mk/Uses/emacs.mk
+++ b/Mk/Uses/emacs.mk
@@ -15,11 +15,11 @@
# dependencies.
#
# Variables, which can be set in make.conf:
-# DEFAULT_VERSIONS+= The default flavor for Emacs ports (ports with
-# USES=emacs, but not the Emacs ports themselves)
-# can be added to DEFAULT_VERSIONS. For example,
-# DEFAULT_VERSIONS+= emacs=nox
-# Valid flavors: full canna nox devel_full devel_nox
+# DEFAULT_VERSIONS+= The default flavor for ports with
+# USES=emacs can be added to DEFAULT_VERSIONS.
+# For example: DEFAULT_VERSIONS+= emacs=nox
+# Valid flavors: full canna nox wayland
+# devel_full devel_nox
# Flavors specified on the command line take
# precedence.
#
@@ -31,18 +31,19 @@
# then all valid Emacs flavors are assumed.
#
# EMACS_NO_DEPENDS: Do NOT add build or run dependencies on Emacs.
-# This will prevent flavors.
+# This will prevent flavors, and no byte code files
+# will be generated as part of the package.
#
# Variables, which can be read by ports:
-# EMACS_CMD: Emacs command with full path (e.g. /usr/local/bin/emacs-28.2)
+# EMACS_CMD: Emacs command with full path (e.g. /usr/local/bin/emacs-30.1)
# EMACS_FLAVOR: Used for dependencies (e.g. BUILD_DEPENDS= dash.el${EMACS_PKGNAMESUFFIX}>0:devel/dash@${EMACS_FLAVOR})
# EMACS_LIBDIR: Emacs Library directory without ${PREFIX} (e.g. share/emacs)
-# EMACS_LIBDIR_WITH_VER: Library directory without ${PREFIX} including version (e.g. share/emacs/28.2)
-# EMACS_MAJOR_VER: Emacs major version (e.g. 28)
+# EMACS_LIBDIR_WITH_VER: Library directory without ${PREFIX} including version (e.g. share/emacs/30.1)
+# EMACS_MAJOR_VER: Emacs major version (e.g. 30)
# EMACS_PKGNAMESUFFIX: PKGNAMESUFFIX to distinguish Emacs flavors
# EMACS_SITE_LISPDIR: Emacs site-lisp directory without ${PREFIX} (e.g. share/emacs/site-lisp)
-# EMACS_VER: Emacs version (e.g. 28.2)
-# EMACS_VERSION_SITE_LISPDIR: Include version (e.g. share/emacs/28.2/site-lisp)
+# EMACS_VER: Emacs version (e.g. 30.1)
+# EMACS_VERSION_SITE_LISPDIR: Include version (e.g. share/emacs/30.1/site-lisp)
#-------------------------------------------------------------------------------
#
# MAINTAINER: emacs@FreeBSD.org
@@ -79,7 +80,7 @@ _EMACS_RUN_DEP= yes
# Only set FLAVORS when...
. if defined(_EMACS_RUN_DEP) && !defined(_EMACS_NOFLAVORS)
-FLAVORS= full canna nox devel_full devel_nox
+FLAVORS= full canna nox wayland devel_full devel_nox
# Sort the default to be first
. if defined(EMACS_DEFAULT)
FLAVORS:= ${EMACS_DEFAULT} ${FLAVORS:N${EMACS_DEFAULT}}
@@ -105,10 +106,10 @@ EMACS_FLAVOR= full
. endif
. if ${FLAVOR:Mdevel*}
-EMACS_VER= 30.0.50
+EMACS_VER= 31.0.50
EMACS_PORTDIR= editors/emacs-devel
. else
-EMACS_VER= 29.3
+EMACS_VER= 30.1
EMACS_PORTDIR= editors/emacs
. endif
diff --git a/Mk/Uses/fortran.mk b/Mk/Uses/fortran.mk
index a7dc6717dce8..207bb869c8d8 100644
--- a/Mk/Uses/fortran.mk
+++ b/Mk/Uses/fortran.mk
@@ -30,6 +30,10 @@ FCFLAGS+= -Wl,-rpath=${LOCALBASE}/lib/gcc${_GCC_VER}
LDFLAGS+= -Wl,-rpath=${LOCALBASE}/lib/gcc${_GCC_VER} \
-L${LOCALBASE}/lib/gcc${_GCC_VER}
CFLAGS_F2018= -I${LOCALBASE}/include/gcc${_GCC_VER}
+# Only needed on riscv64? See PR 287211
+. if ${ARCH} == "riscv64"
+FCFLAGS+= -B${LOCALBASE}/lib/gcc${_GCC_VER}
+. endif
. else
IGNORE= USES=fortran: invalid arguments: ${fortran_ARGS}
. endif
diff --git a/Mk/Uses/fpc.mk b/Mk/Uses/fpc.mk
index dd9a3137e3f9..7538914c2d48 100644
--- a/Mk/Uses/fpc.mk
+++ b/Mk/Uses/fpc.mk
@@ -44,16 +44,16 @@ IGNORE= incompatible fpc ${FPC_CURRENT_VER} compiler, please install ${FPC_VER}
PPNAME= ppc386
. elif ${ARCH} == "amd64"
PPNAME= ppcx64
+. elif ${ARCH} == "aarch64"
+PPNAME= ppca64
. else
PPNAME= ppc_not_yet_ported
-ONLY_FOR_ARCHS= i386 amd64
-ONLY_FOR_ARCHS_REASON= not yet ported to anything other than i386 and amd64
. endif
-. if !defined(WANT_FPC_DEVEL)
-FPC_DEVELSUFFIX= #
-. else
+. if (defined(WANT_FPC_DEVEL) && !empty(WANT_FPC_DEVEL)) || ${ARCH:Maarch64}
FPC_DEVELSUFFIX= -devel
+. else
+FPC_DEVELSUFFIX= #
. endif
BUILD_DEPENDS+= ${LOCALBASE}/bin/as:devel/binutils \
diff --git a/Mk/Uses/fuse.mk b/Mk/Uses/fuse.mk
index 9250a86e2429..db4e6562f739 100644
--- a/Mk/Uses/fuse.mk
+++ b/Mk/Uses/fuse.mk
@@ -14,9 +14,9 @@ LIBFUSE_VER= ${fuse_ARGS}
LIBFUSE_VER?= 2
. if ${LIBFUSE_VER} == 2
-LIB_DEPENDS+= libfuse.so:sysutils/fusefs-libs
+LIB_DEPENDS+= libfuse.so:filesystems/fusefs-libs
. elif ${LIBFUSE_VER} == 3
-LIB_DEPENDS+= libfuse3.so:sysutils/fusefs-libs3
+LIB_DEPENDS+= libfuse3.so:filesystems/fusefs-libs3
. else
IGNORE= cannot install: unknown FUSE library version: ${LIBFUSE_VERSION}
. endif
diff --git a/Mk/Uses/gmake.mk b/Mk/Uses/gmake.mk
index 3aa9bae0efac..776591c11643 100644
--- a/Mk/Uses/gmake.mk
+++ b/Mk/Uses/gmake.mk
@@ -13,7 +13,7 @@ IGNORE= Incorrect 'USES+= gmake:${gmake_ARGS}' gmake takes no arguments
. endif
BUILD_DEPENDS+= gmake>=4.4.1:devel/gmake
-CONFIGURE_ENV+= MAKE=gmake
-MAKE_CMD= gmake
+CONFIGURE_ENV+= MAKE=${GMAKE}
+MAKE_CMD= ${GMAKE}
.endif
diff --git a/Mk/Uses/gnome.mk b/Mk/Uses/gnome.mk
index 1628f3b8fb09..59d070c747f8 100644
--- a/Mk/Uses/gnome.mk
+++ b/Mk/Uses/gnome.mk
@@ -63,29 +63,29 @@ _USE_GNOME_ALL= intlhack intltool introspection \
# GNOME 2 components
_USE_GNOME_ALL+= atk cairo \
- gdkpixbuf2 gdkpixbuf2xlib gconf2 glib20 \
+ gdkpixbuf gdkpixbuf2xlib gdkpixbufextra gconf2 glib20 \
gtk-update-icon-cache gtk20 \
gtksharp20 gtksourceview2 gvfs libartlgpl2 \
libglade2 libgnomecanvas \
libgsf libidl librsvg2 \
libxml2 libxslt \
- pango pangox-compat \
+ pango pangoft2 pangox-compat \
vte
# GNOME 3 components
_USE_GNOME_ALL+=dconf evolutiondataserver3 gnomecontrolcenter3 gnomedesktop3 \
gnomemenus3 gsound gtk30 gtkhtml4 gtksourceview3 \
gtksourceview4 libgda5 \
- libgda5-ui libgnomekbd libwnck3 metacity nautilus3 \
+ libgda5-ui libgda6 libgnomekbd libwnck3 \
pygobject3 vte3
# GNOME 40 components
-_USE_GNOME_ALL+=gtk40 libadwaita gtksourceview5
+_USE_GNOME_ALL+=gtk40 libadwaita gtksourceview5 gnomedesktop4 nautilus4
# C++ bindings
-_USE_GNOME_ALL+=atkmm cairomm gconfmm26 glibmm glibmm26 gtkmm24 \
- gtkmm30 gtksourceviewmm3 libgdamm5 libxml++26 libsigc++20 \
- libsigc++30 pangomm
+_USE_GNOME_ALL+=atkmm cairomm cairomm11 glibmm glibmm26 gtkmm24 \
+ gtkmm30 gtkmm40 gtksourceviewmm3 libxml++26 libsigc++20 \
+ libsigc++30 pangomm pangomm24
# glib-mkenums often fails with C locale
# https://gitlab.gnome.org/GNOME/glib/issues/1430
@@ -111,10 +111,10 @@ libxml++26_USE_GNOME_IMPL= glibmm libxml2
cairo_LIB_DEPENDS= libcairo.so:graphics/cairo
cairomm_LIB_DEPENDS= libcairomm-1.0.so:graphics/cairomm
-cairomm_USE_GNOME_IMPL= cairo libxml++26
+cairomm_USE_GNOME_IMPL= cairo libsigc++20
-gconfmm26_LIB_DEPENDS= libgconfmm-2.6.so:devel/gconfmm26
-gconfmm26_USE_GNOME_IMPL= glibmm gconf2
+cairomm11_LIB_DEPENDS= libcairomm-1.16.so:graphics/cairomm11
+cairomm11_USE_GNOME_IMPL= cairo libsigc++30
glibmm_LIB_DEPENDS= libglibmm-2.4.so:devel/glibmm
glibmm_USE_GNOME_IMPL= libsigc++20 glib20
@@ -131,14 +131,14 @@ gtkmm24_LIB_DEPENDS= libgtkmm-2.4.so:x11-toolkits/gtkmm24
gtkmm24_USE_GNOME_IMPL= glibmm cairomm atkmm pangomm gtk20
gtkmm30_LIB_DEPENDS= libgtkmm-3.0.so:x11-toolkits/gtkmm30
-gtkmm30_USE_GNOME_IMPL= glibmm cairomm atkmm pangomm gtk30
+gtkmm30_USE_GNOME_IMPL= atkmm cairomm gdkpixbuf glibmm gtk30 pangomm
+
+gtkmm40_LIB_DEPENDS= libgtkmm-4.0.so:x11-toolkits/gtkmm40
+gtkmm40_USE_GNOME_IMPL= cairomm11 gdkpixbuf glibmm26 gtk40 pangomm24
gtksourceviewmm3_LIB_DEPENDS= libgtksourceviewmm-3.0.so:x11-toolkits/gtksourceviewmm3
gtksourceviewmm3_USE_GNOME_IMPL= gtkmm30 gtksourceview3
-libgdamm5_LIB_DEPENDS= libgdamm-5.0.so:databases/libgdamm5
-libgdamm5_USE_GNOME_IMPL= libgda5 glibmm
-
libsigc++20_LIB_DEPENDS= libsigc-2.0.so:devel/libsigc++20
libsigc++30_LIB_DEPENDS= libsigc-3.0.so:devel/libsigc++30
@@ -146,6 +146,9 @@ libsigc++30_LIB_DEPENDS= libsigc-3.0.so:devel/libsigc++30
pangomm_LIB_DEPENDS= libpangomm-1.4.so:x11-toolkits/pangomm
pangomm_USE_GNOME_IMPL= pango glibmm cairomm
+pangomm24_LIB_DEPENDS= libpangomm-2.48.so:x11-toolkits/pangomm24
+pangomm24_USE_GNOME_IMPL= pango glibmm26 cairomm11
+
gnomemimedata_BUILD_DEPENDS=${LOCALBASE}/libdata/pkgconfig/gnome-mime-data-2.0.pc:misc/gnome-mime-data
gnomemimedata_RUN_DEPENDS=${LOCALBASE}/libdata/pkgconfig/gnome-mime-data-2.0.pc:misc/gnome-mime-data
@@ -160,27 +163,35 @@ dconf_LIB_DEPENDS= libdconf.so:devel/dconf
dconf_RUN_DEPENDS= dconf:devel/dconf
dconf_USE_GNOME_IMPL= glib20
-pango_LIB_DEPENDS= libpango-1.0.so:x11-toolkits/pango
+pango_LIB_DEPENDS= libharfbuzz.so:print/harfbuzz \
+ libpango-1.0.so:x11-toolkits/pango
pango_USE_GNOME_IMPL= glib20
+pangoft2_LIB_DEPENDS= libfontconfig.so:x11-fonts/fontconfig \
+ libfreetype.so:print/freetype2
+pangoft2_USE_GNOME_IMPL=pango
+
pangox-compat_LIB_DEPENDS= libpangox-1.0.so:x11-toolkits/pangox-compat
pangox-compat_USE_GNOME_IMPL= glib20 pango
-gdkpixbuf2_LIB_DEPENDS= libgdk_pixbuf-2.0.so:graphics/gdk-pixbuf2
-gdkpixbuf2_USE_GNOME_IMPL=glib20
+gdkpixbuf_LIB_DEPENDS= libgdk_pixbuf-2.0.so:graphics/gdk-pixbuf2
+gdkpixbuf_USE_GNOME_IMPL=glib20
gdkpixbuf2xlib_LIB_DEPENDS= libgdk_pixbuf_xlib-2.0.so:graphics/gdk-pixbuf2-xlib
-gdkpixbuf2xlib_USE_GNOME_IMPL= glib20 gdkpixbuf2
+gdkpixbuf2xlib_USE_GNOME_IMPL= glib20 gdkpixbuf
+
+gdkpixbufextra_BUILD_DEPENDS= gdk-pixbuf-extra>=0.1.0:graphics/gdk-pixbuf-extra
+gdkpixbufextra_RUN_DEPENDS= gdk-pixbuf-extra>=0.1.0:graphics/gdk-pixbuf-extra
+gdkpixbufextra_USE_GNOME_IMPL= glib20 gdkpixbuf
gtk-update-icon-cache_RUN_DEPENDS= gtk-update-icon-cache:graphics/gtk-update-icon-cache
-gtk-update-icon-cache_USE_GNOME_IMPL= atk pango gdkpixbuf2
gtk20_LIB_DEPENDS= libgtk-x11-2.0.so:x11-toolkits/gtk20
-gtk20_USE_GNOME_IMPL= atk pango
+gtk20_USE_GNOME_IMPL= atk cairo gdkpixbuf pangoft2
GTK2_VERSION= 2.10.0
gtk30_LIB_DEPENDS= libgtk-3.so:x11-toolkits/gtk30
-gtk30_USE_GNOME_IMPL= atk pango
+gtk30_USE_GNOME_IMPL= atk cairo gdkpixbuf pango
GTK3_VERSION= 3.0.0
gtk40_LIB_DEPENDS= libgtk-4.so:x11-toolkits/gtk40
@@ -219,6 +230,9 @@ libartlgpl2_LIB_DEPENDS= libart_lgpl_2.so:graphics/libart_lgpl
gnomedesktop3_LIB_DEPENDS= libgnome-desktop-3.so:x11/gnome-desktop
gnomedesktop3_USE_GNOME_IMPL= gtk30
+gnomedesktop4_LIB_DEPENDS= libgnome-desktop-4.so:x11/gnome-desktop
+gnomedesktop4_USE_GNOME_IMPL= gtk40
+
libwnck3_LIB_DEPENDS= libwnck-3.so:x11-toolkits/libwnck3
libwnck3_USE_GNOME_IMPL=gtk30
@@ -241,16 +255,14 @@ librsvg2_BUILD_DEPENDS= librsvg2>=0:graphics/librsvg2
librsvg2_LIB_DEPENDS= librsvg-2.so:graphics/librsvg2
librsvg2_RUN_DEPENDS= librsvg2>=0:graphics/librsvg2
. endif
-librsvg2_USE_GNOME_IMPL=gdkpixbuf2 pango
+librsvg2_USE_GNOME_IMPL=cairo gdkpixbuf
-nautilus3_LIB_DEPENDS= libnautilus-extension.so:x11-fm/nautilus
-nautilus3_USE_GNOME_IMPL=gnomedesktop3 libxml2
-
-metacity_LIB_DEPENDS= libmetacity.so:x11-wm/metacity
+nautilus4_LIB_DEPENDS= libnautilus-extension.so:x11-fm/nautilus
+nautilus4_USE_GNOME_IMPL=glib20
gnomecontrolcenter3_BUILD_DEPENDS= ${LOCALBASE}/libdata/pkgconfig/gnome-keybindings.pc:sysutils/gnome-control-center
gnomecontrolcenter3_RUN_DEPENDS= ${LOCALBASE}/libdata/pkgconfig/gnome-keybindings.pc:sysutils/gnome-control-center
-gnomecontrolcenter3_USE_GNOME_IMPL= gnomedesktop3
+gnomecontrolcenter3_USE_GNOME_IMPL= gnomedesktop4
libgda5_LIB_DEPENDS= libgda-5.0.so:databases/libgda5
libgda5_USE_GNOME_IMPL= glib20 libxslt
@@ -258,6 +270,9 @@ libgda5_USE_GNOME_IMPL= glib20 libxslt
libgda5-ui_LIB_DEPENDS= libgda-ui-5.0.so:databases/libgda5-ui
libgda5-ui_USE_GNOME_IMPL=glib20 libxslt libgda5
+libgda6_LIB_DEPENDS= libgda-6.0.so:databases/libgda6
+libgda6_USE_GNOME_IMPL= glib20 libxml2
+
gtksourceview2_LIB_DEPENDS= libgtksourceview-2.0.so:x11-toolkits/gtksourceview2
gtksourceview2_USE_GNOME_IMPL=gtk20 libxml2
@@ -273,8 +288,8 @@ gtksourceview5_USE_GNOME_IMPL=gtk40 libxml2
libgsf_LIB_DEPENDS= libgsf-1.so:devel/libgsf
libgsf_USE_GNOME_IMPL= glib20 libxml2
-pygobject3_BUILD_DEPENDS= ${PYTHON_PKGNAMEPREFIX}gobject3>=0:devel/py-gobject3@${PY_FLAVOR}
-pygobject3_RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}gobject3>=0:devel/py-gobject3@${PY_FLAVOR}
+pygobject3_BUILD_DEPENDS= ${PYTHON_PKGNAMEPREFIX}pygobject>=0:devel/py-pygobject@${PY_FLAVOR}
+pygobject3_RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}pygobject>=0:devel/py-pygobject@${PY_FLAVOR}
pygobject3_USE_GNOME_IMPL= glib20
intltool_BUILD_DEPENDS= ${LOCALBASE}/bin/intltool-extract:textproc/intltool
@@ -305,9 +320,8 @@ gtksharp20_USE_GNOME_IMPL= gtk20
libgnomekbd_LIB_DEPENDS= libgnomekbd.so:x11/libgnomekbd
libgnomekbd_USE_GNOME_IMPL= gtk30 libxml2
-gvfs_BUILD_DEPENDS= gvfs>=0:devel/gvfs
-gvfs_RUN_DEPENDS= gvfs>=0:devel/gvfs
-gvfs_USE_GNOME_IMPL= glib20
+gvfs_BUILD_DEPENDS= gvfs>=0:filesystems/gvfs
+gvfs_RUN_DEPENDS= gvfs>=0:filesystems/gvfs
# End component definition section
diff --git a/Mk/Uses/go.mk b/Mk/Uses/go.mk
index e78dbe33b7a5..f56114da9973 100644
--- a/Mk/Uses/go.mk
+++ b/Mk/Uses/go.mk
@@ -23,6 +23,16 @@
# In most cases, this is the only required variable for ports that
# use Go modules.
#
+# GO_MOD_DIST
+# The location to download the go.mod file if GO_MODULE is used.
+# The default is empty, so it is loaded from GO_PROXY.
+# Set it to "gitlab" and make sure GL_PROJECT is defined to download
+# the "go.mod" from gitlab.
+# Set it to "github" and make sure GH_PROJECT is defined to download
+# the "go.mod" from github.
+# You can also set it completely manually a URI without go.mod in it,
+# is attached automatically to the URI.
+#
# GO_PKGNAME
# The name of the package when building in GOPATH mode. This
# is the directory that will be created in ${GOPATH}/src. If not set
@@ -60,7 +70,7 @@ _INCLUDE_USES_GO_MK= yes
# When adding a version, please keep the comment in
# Mk/bsd.default-versions.mk in sync.
-GO_VALID_VERSIONS= 1.20 1.21 1.22 1.23-devel
+GO_VALID_VERSIONS= 1.20 1.21 1.22 1.23 1.24 1.25-devel
# Check arguments sanity
. if !empty(go_ARGS:N[1-9].[0-9][0-9]:N*-devel:Nmodules:Nno_targets:Nrun)
@@ -143,14 +153,40 @@ GO_MODNAME= ${GO_MODULE:C/^([^@]*)(@([^@]*)?)/\1/}
GO_MODVERSION= ${GO_MODULE:C/^([^@]*)(@([^@]*)?)/\2/:M@*:S/^@//:S/^$/${DISTVERSIONFULL}/}
GO_MODFILE= ${GO_MODVERSION}.mod
GO_DISTFILE= ${GO_MODVERSION}.zip
+# If GO_MOD_DIST is gitlab, download the go.mod from gitlab by the defined GL_ACCOUNT and GL_PROJECT/PORTNAME
+. if defined(GO_MOD_DIST) && "${GO_MOD_DIST}" == "gitlab"
+MASTER_SITES+= https://gitlab.com/${GL_ACCOUNT}/${GL_PROJECT}/-/raw/${GO_MODVERSION}/${WRKSRC_SUBDIR:?${WRKSRC_SUBDIR}/:}
+DISTFILES+= go.mod
+# If GO_MOD_DIST is github, download the go.mod from github by the defined GH_ACCOUNT and GH_PROJECT/PORTNAME
+. elif defined(GO_MOD_DIST) && "${GO_MOD_DIST}" == "github"
+MASTER_SITES+= https://raw.githubusercontent.com/${GH_ACCOUNT}/${GH_PROJECT}/${GO_MODVERSION}/${WRKSRC_SUBDIR:?${WRKSRC_SUBDIR}/:}
+DISTFILES+= go.mod
+# Manually defined GO_MOD_DIST
+. elifdef(GO_MOD_DIST)
+MASTER_SITES+= ${GO_MOD_DIST}
+DISTFILES+= go.mod
+# Fallback to default GO_PROXY
+. else
+
+# `GOPROXY` presents sources via the proxy service and in the downloaded
+# `WRKSRC` differently as of v2.x versions of projects. Support this different
+# directory/REST API scheme: https://go.dev/ref/mod#major-version-suffixes .
+# GO_MODVERSION_MAJOR= ${GO_MODVERSION:C/^v//g:C/\..+//g}
+# .if ${GO_MODVERSION_MAJOR} > 1
+# WRKSRC= ${WRKDIR}/${GO_MODNAME}/v${GO_MODVERSION_MAJOR}@${GO_MODVERSION}
+# MASTER_SITES+= ${GO_GOPROXY}/${GO_MODNAME:C/([A-Z])/!\1/g:tl}/v${GO_MODVERSION_MAJOR}/@v/
+# .else
+# WRKSRC= ${WRKDIR}/${GO_MODNAME}@${GO_MODVERSION}
MASTER_SITES+= ${GO_GOPROXY}/${GO_MODNAME:C/([A-Z])/!\1/g:tl}/@v/
+# .endif
DISTFILES+= ${GO_MODFILE} ${GO_DISTFILE}
WRKSRC= ${WRKDIR}/${GO_MODNAME}@${GO_MODVERSION}
+. endif
+
. endif
EXTRACT_ONLY?= ${DISTFILES:N*.mod\:*:N*.mod:C/:.*//}
DIST_SUBDIR= go/${PKGORIGIN:S,/,_,g}/${DISTNAME}
-FETCH_DEPENDS+= ${GO_CMD}:${GO_PORT} \
- ca_root_nss>0:security/ca_root_nss
+FETCH_DEPENDS+= ${GO_CMD}:${GO_PORT}
USES+= zip
. else
GO_ENV+= GO_NO_VENDOR_CHECKS=1
diff --git a/Mk/Uses/gssapi.mk b/Mk/Uses/gssapi.mk
index c1b3d5954c3b..fecf29895a5a 100644
--- a/Mk/Uses/gssapi.mk
+++ b/Mk/Uses/gssapi.mk
@@ -8,7 +8,7 @@
# flags is a special suffix to define CFLAGS, LDFLAGS, and LDADD.
# ("base,flags")
#
-# MAINTAINER: hrs@FreeBSD.org
+# MAINTAINER: hrs@FreeBSD.org, cy@FreeBSD.org
#
# User defined variables:
# HEIMDAL_HOME (default: ${LOCALBASE})
@@ -86,6 +86,18 @@ _local:= ${_A}
. if ${SSL_DEFAULT} != base
IGNORE= You are using OpenSSL from ports and have selected GSSAPI from base, please select another GSSAPI value
. endif
+. if exists(/usr/libexec/krb5kdc)
+ # Base has MIT KRB5 installed
+KRB5_HOME?= /usr
+GSSAPIBASEDIR= ${KRB5_HOME}
+GSSAPILIBDIR= ${GSSAPIBASEDIR}/lib
+GSSAPIINCDIR= ${GSSAPIBASEDIR}/include
+_HEADERS+= gssapi/gssapi.h gssapi/gssapi_krb5.h krb5/krb5.h
+GSSAPICPPFLAGS= -I"${GSSAPIINCDIR}"
+GSSAPILIBS= -lkrb5 -lgssapi -lgssapi_krb5
+GSSAPILDFLAGS=
+. else
+ # Base has Heimdal KRB5 installed
HEIMDAL_HOME= /usr
GSSAPIBASEDIR= ${HEIMDAL_HOME}
GSSAPILIBDIR= ${GSSAPIBASEDIR}/lib
@@ -94,7 +106,9 @@ _HEADERS+= gssapi/gssapi.h gssapi/gssapi_krb5.h krb5.h
GSSAPICPPFLAGS= -I"${GSSAPIINCDIR}"
GSSAPILIBS= -lkrb5 -lgssapi -lgssapi_krb5
GSSAPILDFLAGS=
+. endif
. elif ${_local} == "heimdal"
+ # Heimdal port selected
HEIMDAL_HOME?= ${LOCALBASE}
GSSAPIBASEDIR= ${HEIMDAL_HOME}
GSSAPILIBDIR= ${GSSAPIBASEDIR}/lib/heimdal
@@ -111,11 +125,12 @@ GSSAPILIBS= -lkrb5 -lgssapi
GSSAPILDFLAGS= -L"${GSSAPILIBDIR}"
_RPATH= ${GSSAPILIBDIR}
. elif ${_local} == "mit"
+ # MIT KRB5 port selected
KRB5_HOME?= ${LOCALBASE}
GSSAPIBASEDIR= ${KRB5_HOME}
GSSAPILIBDIR= ${GSSAPIBASEDIR}/lib
GSSAPIINCDIR= ${GSSAPIBASEDIR}/include
-_HEADERS+= gssapi/gssapi.h gssapi/gssapi_krb5.h krb5.h
+_HEADERS+= gssapi/gssapi.h gssapi/gssapi_krb5.h krb5/krb5.h
. if !defined(_KRB_BOOTSTRAP)
BUILD_DEPENDS+= ${_MITKRB5_DEPENDS}
RUN_DEPENDS+= ${_MITKRB5_DEPENDS}
diff --git a/Mk/Uses/gstreamer.mk b/Mk/Uses/gstreamer.mk
index 8317a320f275..221b146a2128 100644
--- a/Mk/Uses/gstreamer.mk
+++ b/Mk/Uses/gstreamer.mk
@@ -1,12 +1,18 @@
+# Support for GStreamer-related libraries and plugins
#
-# gstreamer.mk - Support for gstreamer-plugins-based ports.
-#
+# Feature: gstreamer
# Usage:
-# USES= gstreamer[:version]
-# USE_GSTREAMER= [list of components]
+# USES= gstreamer[:version][,arg,...]
+# USE_GSTREAMER= [list of components]
+#
+# Valid ARGS: <version>, _internal
+#
+# version: 1 -- default (this may be omitted since there is
+# currently only one supported version)
+# _internal: Only intended for use by multimedia/gstreamer1 to
+# define specific variables so as not depend on itself
#
-# Supported versions: 1 -- default
-# #
+# MAINTAINER: multimedia@FreeBSD.org
.if ! defined(_INCLUDE_USES_GSTREAMER_MK)
_INCLUDE_USES_GSTREAMER_MK= YES
@@ -22,7 +28,7 @@ _GST_VER= #
. if empty(_GST_VER)
_GST_VER= ${ver}
. else
-INGORE= Incorrect USES=gstreamer:${gstramer_ARGS} - multiple versions defined
+IGNORE= Incorrect USES=gstreamer:${gstreamer_ARGS} - multiple versions defined
. endif
. endif
. endfor
@@ -33,32 +39,43 @@ _GST_VER= ${_GST_VER_DEFAULT}
#== Component setup
-_GST1_VERSION= 1.22.10
+# When modifying _GST1_VERSION, be sure to also update distinfo for the
+# following ports:
+# - multimedia/gstreamer1
+# - multimedia/gstreamer1-editing-services
+# - multimedia/gstreamer1-libav
+# - multimedia/gstreamer1-plugins (via `make makesum-gst1`)
+# - multimedia/gstreamer1-rtsp-server
+# - multimedia/gstreamer1-vaapi
+# - multimedia/py-gstreamer1
+_GST1_VERSION= 1.26.3
_GST1_LIB_VER= 1.0
+_GST1_SOVERSION= 0.${_GST1_VERSION:R:E}${${_GST1_VERSION:E} > 9:?:0}${_GST1_VERSION:E}.0
_GST1_CATEGORIES= audio comms devel ftp graphics multimedia net security \
- sysutils www x11 x11-toolkits
-_GST1_PLUGINS_audio= a52dec amrnb amrwbdec bs2b cdparanoia chromaprint faac \
- faad flac flite gme gsm jack ladspa lame lv2 modplug \
- mpg123 musepack ogg openmpt opus pulse shout2 sidplay \
+ sysutils textproc www x11 x11-toolkits
+_GST1_PLUGINS_audio= a52dec alsa amrnb amrwbdec bs2b cdparanoia chromaprint faac \
+ faad fdkaac flac flite gme gsm jack ladspa lame lv2 modplug \
+ mpg123 ogg openmpt opus pulse shout2 sidplay \
sndfile sndio soundtouch speex taglib twolame vorbis \
wavpack webrtcdsp
_GST1_PLUGINS_comms= spandsp
_GST1_PLUGINS_devel= soup
_GST1_PLUGINS_ftp= curl
-_GST1_PLUGINS_graphics= aalib cairo gdkpixbuf gl jpeg kms libcaca libvisual \
- opencv openexr openjpeg png qt rsvg vulkan webp zbar
+_GST1_PLUGINS_graphics= aalib cairo gdkpixbuf gl jpeg kms libcaca libvisual \
+ opencv openexr openjpeg png rsvg vulkan webp zbar
_GST1_PLUGINS_multimedia= aom assrender bad dash dts dv dvdread \
- editing-services gnonlin good hls libav libde265 \
- mpeg2dec mpeg2enc mplex mm openh264 resindvd \
- smoothstreaming theora ttml ugly v4l2 vpx x264 x265 \
- zxing
-_GST1_PLUGINS_net= srtp
+ editing-services good hls libav libde265 \
+ mpeg2dec mpeg2enc mplex mm msdk openh264 resindvd \
+ rtsp-server rust smoothstreaming theora ttml ugly \
+ v4l2 vaapi vpx webrtc x264 x265
+_GST1_PLUGINS_net= sctp srtp
_GST1_PLUGINS_security= dtls
_GST1_PLUGINS_sysutils= cdio
-_GST1_PLUGINS_www= neon
+_GST1_PLUGINS_textproc= zxing
+_GST1_PLUGINS_www= neon srt
_GST1_PLUGINS_x11= x ximagesrc
-_GST1_PLUGINS_x11-toolkits= gtk pango
+_GST1_PLUGINS_x11-toolkits= gtk pango qt5 qt6
# == Unversioned information
@@ -67,6 +84,8 @@ _GST_PLUGINS_BASE= bad core good ugly libgstreamer plugins
_GST_PLUGINS_VER:= ${_GST${_GST_VER}_CATEGORIES:S/^/\${_GST${_GST_VER}_PLUGINS_/:S/$/}/}
_GST_VERSION= ${_GST${_GST_VER}_VERSION}
+_GST_LIB_VER= ${_GST${_GST_VER}_LIB_VER}
+_GST_SOVERSION= ${_GST${_GST_VER}_SOVERSION}
# List of all available components
_USE_GSTREAMER_ALL= ${_GST_PLUGINS_BASE} \
@@ -85,7 +104,7 @@ gst-bad_IMPL= #
gst-core_PORT= multimedia/gstreamer${_GST_VER}-plugins-core
gst-core_IMPL= #
-gst-core_GST1_VERSION= 1.16
+gst-core_GST1_VERSION= ${_GST1_VERSION:R}
gst-core_VERSION= ${gst-core_GST${_GST_VER}_VERSION}
gst-good_PORT= multimedia/gstreamer${_GST_VER}-plugins-good
@@ -97,11 +116,14 @@ gst-ugly_IMPL= #
gst-libgstreamer_LIB= libgstreamer${_GST${_GST_VER}_LIB_VER:D-${_GST${_GST_VER}_LIB_VER}}.so
gst-libgstreamer_PORT= multimedia/gstreamer${_GST_VER}
-#==== Audio Plugins Section
+#==== audio plugins section
gst-a52dec_PORT= audio/gstreamer${_GST_VER}-plugins-a52dec
gst-a52dec_IMPL= ugly
+gst-alsa_PORT= audio/gstreamer${_GST_VER}-plugins-alsa
+gst-alsa_IMPL= #
+
gst-amrnb_PORT= audio/gstreamer${_GST_VER}-plugins-amrnb
gst-amrnb_IMPL= ugly
@@ -123,6 +145,9 @@ gst-faac_IMPL= bad
gst-faad_PORT= audio/gstreamer${_GST_VER}-plugins-faad
gst-faad_IMPL= bad
+gst-fdkaac_PORT= audio/gstreamer${_GST_VER}-plugins-fdkaac
+gst-fdkaac_IMPL= bad
+
gst-flac_PORT= audio/gstreamer${_GST_VER}-plugins-flac
gst-flac_IMPL= good
@@ -153,15 +178,12 @@ gst-modplug_IMPL= bad
gst-mpg123_PORT= audio/gstreamer${_GST_VER}-plugins-mpg123
gst-mpg123_IMPL= ugly
-gst-musepack_PORT= audio/gstreamer${_GST_VER}-plugins-musepack
-gst-musepack_IMPL= bad
-
-gst-neon_PORT= www/gstreamer${_GST_VER}-plugins-neon
-gst-neon_IMPL= bad
-
gst-ogg_PORT= audio/gstreamer${_GST_VER}-plugins-ogg
gst-ogg_IMPL= #
+gst-openmpt_PORT= audio/gstreamer${_GST_VER}-plugins-openmpt
+gst-openmpt_IMPL= bad
+
gst-opus_PORT= audio/gstreamer${_GST_VER}-plugins-opus
gst-opus_IMPL= #
@@ -174,13 +196,14 @@ gst-shout2_IMPL= good
gst-sidplay_PORT= audio/gstreamer${_GST_VER}-plugins-sidplay
gst-sidplay_IMPL= ugly
-gst-sndio_PORT= audio/gstreamer${_GST_VER}-plugins-sndio
-gst-sndio_IMPL= #
-gst-sndio_VERSION= 1.8.0
-
gst-sndfile_PORT= audio/gstreamer${_GST_VER}-plugins-sndfile
gst-sndfile_IMPL= bad
+gst-sndio_PORT= audio/gstreamer${_GST_VER}-plugins-sndio
+gst-sndio_IMPL= #
+gst-sndio_GST1_VERSION= 1.24.0
+gst-sndio_VERSION= ${gst-sndio_GST${_GST_VER}_VERSION}
+
gst-soundtouch_PORT= audio/gstreamer${_GST_VER}-plugins-soundtouch
gst-soundtouch_IMPL= bad
@@ -222,12 +245,6 @@ gst-curl_IMPL= bad
gst-aalib_PORT= graphics/gstreamer${_GST_VER}-plugins-aalib
gst-aalib_IMPL= good
-gst-aom_PORT= multimedia/gstreamer${_GST_VER}-plugins-aom
-gst-aom_IMPL= bad
-
-gst-assrender_PORT= multimedia/gstreamer${_GST_VER}-plugins-assrender
-gst-assrender_IMPL= bad
-
gst-cairo_PORT= graphics/gstreamer${_GST_VER}-plugins-cairo
gst-cairo_IMPL= good
@@ -258,18 +275,15 @@ gst-openexr_IMPL= bad
gst-openjpeg_PORT= graphics/gstreamer${_GST_VER}-plugins-openjpeg
gst-openjpeg_IMPL= bad
-gst-openmpt_PORT= audio/gstreamer${_GST_VER}-plugins-openmpt
-gst-openmpt_IMPL= bad
-
gst-png_PORT= graphics/gstreamer${_GST_VER}-plugins-png
gst-png_IMPL= good
-gst-qt_PORT= graphics/gstreamer${_GST_VER}-plugins-qt
-gst-qt_IMPL= good
-
gst-rsvg_PORT= graphics/gstreamer${_GST_VER}-plugins-rsvg
gst-rsvg_IMPL= bad
+gst-vulkan_PORT= graphics/gstreamer${_GST_VER}-plugins-vulkan
+gst-vulkan_IMPL= bad
+
gst-webp_PORT= graphics/gstreamer${_GST_VER}-plugins-webp
gst-webp_IMPL= bad
@@ -278,25 +292,27 @@ gst-zbar_IMPL= bad
#==== multimedia plugins section
+gst-aom_PORT= multimedia/gstreamer${_GST_VER}-plugins-aom
+gst-aom_IMPL= bad
+
+gst-assrender_PORT= multimedia/gstreamer${_GST_VER}-plugins-assrender
+gst-assrender_IMPL= bad
+
gst-dash_PORT= multimedia/gstreamer${_GST_VER}-plugins-dash
gst-dash_IMPL= bad
gst-dvdread_PORT= multimedia/gstreamer${_GST_VER}-plugins-dvdread
gst-dvdread_IMPL= ugly
-gst-editing-services_PORT= multimedia/gstreamer${_GST_VER}-editing-services
-gst-editing-services_SUFFIX= #
-gst-editing-services_IMPL= #
-
gst-dts_PORT= multimedia/gstreamer${_GST_VER}-plugins-dts
gst-dts_IMPL= bad
gst-dv_PORT= multimedia/gstreamer${_GST_VER}-plugins-dv
gst-dv_IMPL= good
-gst-gnonlin_PORT= multimedia/gstreamer${_GST_VER}-plugins-gnonlin
-gst-gnonlin_IMPL= good
-gst-gnonlin_VERSION= 1.4.0
+gst-editing-services_PORT= multimedia/gstreamer${_GST_VER}-editing-services
+gst-editing-services_SUFFIX= #
+gst-editing-services_IMPL= #
gst-hls_PORT= multimedia/gstreamer${_GST_VER}-plugins-hls
gst-hls_IMPL= bad
@@ -324,33 +340,45 @@ gst-mpeg2enc_IMPL= bad
gst-mplex_PORT= multimedia/gstreamer${_GST_VER}-plugins-mplex
gst-mplex_IMPL= bad
+gst-msdk_PORT= multimedia/gstreamer${_GST_VER}-plugins-msdk
+gst-msdk_IMPL= bad
+
gst-openh264_PORT= multimedia/gstreamer${_GST_VER}-plugins-openh264
gst-openh264_IMPL= bad
+gst-resindvd_PORT= multimedia/gstreamer${_GST_VER}-plugins-resindvd
+gst-resindvd_IMPL= bad
+
+gst-rtsp-server_PORT= multimedia/gstreamer${_GST_VER}-rtsp-server
+gst-rtsp-server_SUFFIX= #
+gst-rtsp-server_IMPL= #
+
+gst-rust_PORT= multimedia/gstreamer${_GST_VER}-plugins-rust
+gst-rust_IMPL= #
+gst-rust_GST1_VERSION= 0.13.6
+gst-rust_VERSION= ${gst-rust_GST${_GST_VER}_VERSION}
+
gst-smoothstreaming_PORT= multimedia/gstreamer${_GST_VER}-plugins-smoothstreaming
gst-smoothstreaming_IMPL= bad
+gst-theora_PORT= multimedia/gstreamer${_GST_VER}-plugins-theora
+gst-theora_IMPL= #
+
gst-ttml_PORT= multimedia/gstreamer${_GST_VER}-plugins-ttml
gst-ttml_IMPL= bad
gst-v4l2_PORT= multimedia/gstreamer${_GST_VER}-plugins-v4l2
gst-v4l2_IMPL= good
-# hmmm
-gst-vaapi_PORT= multimedia/gstreamer-vaapi
-gst-vaapi_IMPL= bad
+gst-vaapi_PORT= multimedia/gstreamer${_GST_VER}-vaapi
+gst-vaapi_SUFFIX= #
+gst-vaapi_IMPL= #
gst-vpx_PORT= multimedia/gstreamer${_GST_VER}-plugins-vpx
gst-vpx_IMPL= good
-gst-vulkan_PORT= graphics/gstreamer${_GST_VER}-plugins-vulkan
-gst-vulkan_IMPL= bad
-
-gst-resindvd_PORT= multimedia/gstreamer${_GST_VER}-plugins-resindvd
-gst-resindvd_IMPL= bad
-
-gst-theora_PORT= multimedia/gstreamer${_GST_VER}-plugins-theora
-gst-theora_IMPL= #
+gst-webrtc_PORT= multimedia/gstreamer${_GST_VER}-plugins-webrtc
+gst-webrtc_IMPL= bad
gst-x264_PORT= multimedia/gstreamer${_GST_VER}-plugins-x264
gst-x264_IMPL= ugly
@@ -358,10 +386,10 @@ gst-x264_IMPL= ugly
gst-x265_PORT= multimedia/gstreamer${_GST_VER}-plugins-x265
gst-x265_IMPL= bad
-gst-zxing_PORT= textproc/gstreamer${_GST_VER}-plugins-zxing
-gst-zxing_IMPL= bad
+#==== net plugins section
-#==== Net Plugins Section
+gst-sctp_PORT= net/gstreamer${_GST_VER}-plugins-sctp
+gst-sctp_IMPL= bad
gst-srtp_PORT= net/gstreamer${_GST_VER}-plugins-srtp
gst-srtp_IMPL= bad
@@ -376,6 +404,19 @@ gst-dtls_IMPL= bad
gst-cdio_PORT= sysutils/gstreamer${_GST_VER}-plugins-cdio
gst-cdio_IMPL= ugly
+#==== textproc plugins section
+
+gst-zxing_PORT= textproc/gstreamer${_GST_VER}-plugins-zxing
+gst-zxing_IMPL= bad
+
+#==== www plugins section
+
+gst-neon_PORT= www/gstreamer${_GST_VER}-plugins-neon
+gst-neon_IMPL= bad
+
+gst-srt_PORT= www/gstreamer${_GST_VER}-plugins-srt
+gst-srt_IMPL= bad
+
#==== x11 plugins section
gst-x_PORT= x11/gstreamer${_GST_VER}-plugins-x
@@ -392,26 +433,33 @@ gst-gtk_IMPL= bad
gst-pango_PORT= x11-toolkits/gstreamer${_GST_VER}-plugins-pango
gst-pango_IMPL= #
+gst-qt5_PORT= x11-toolkits/gstreamer${_GST_VER}-plugins-qt5
+gst-qt5_IMPL= good
+
+gst-qt6_PORT= x11-toolkits/gstreamer${_GST_VER}-plugins-qt6
+gst-qt6_IMPL= good
+
#== Dependency creation
+. if empty(gstreamer_ARGS:M_internal)
_GST_BR_DEPENDS= #
_GST_LIB_DEPENDS= #
USE_GSTREAMER?= #
# everything wants this
USE_GSTREAMER+= libgstreamer
-. if ${PORTDIRNAME} != gstreamer${_GST_VER}-plugins
+. if ${PORTDIRNAME} != gstreamer${_GST_VER}-plugins
USE_GSTREAMER+= plugins
-. endif
+. endif
# Gather all Impl values
-_GST_IMPL_LIST:= ${USE_GSTREAMER:S/^/\${gst-/:S/$/_IMPL}/}
+_GST_IMPL_LIST:= ${USE_GSTREAMER:S/^/\${gst-/:S/$/_IMPL}/}
# Combine the wanted copmonents and the required implementations
_USE_GSTREAMER= ${USE_GSTREAMER} \
${_GST_IMPL_LIST}
-. for component in ${_USE_GSTREAMER:O:u}
+. for component in ${_USE_GSTREAMER:O:u}
# Fill in the common default component values
gst-${component}_VERSION?= ${_GST_VERSION}
gst-${component}_NAME?= ${component}
@@ -419,18 +467,19 @@ gst-${component}_PREFIX?= gstreamer${_GST_VER}-
gst-${component}_SUFFIX?= plugins-
gst-${component}_PKG?= ${gst-${component}_PREFIX}${gst-${component}_SUFFIX}${gst-${component}_NAME}
-. if empty(_USE_GSTREAMER_ALL:M${component})
+. if empty(_USE_GSTREAMER_ALL:M${component})
IGNORE= unknown gstreamer component '${component}' for gstreamer:${_GST_VER}
-. endif
-. if !empty(gst-${component}_LIB)
+. endif
+. if !empty(gst-${component}_LIB)
_GST_LIB_DEPENDS+= ${gst-${component}_LIB}:${gst-${component}_PORT}
-. else
+. else
_GST_BR_DEPENDS+= ${gst-${component}_PKG}>=${gst-${component}_VERSION}:${gst-${component}_PORT}
-. endif
-. endfor
+. endif
+. endfor
-LIB_DEPENDS+= ${_GST_LIB_DEPENDS:O:u}
-BUILD_DEPENDS+= ${_GST_BR_DEPENDS:O:u}
-RUN_DEPENDS+= ${_GST_BR_DEPENDS:O:u}
+LIB_DEPENDS+= ${_GST_LIB_DEPENDS:O:u}
+BUILD_DEPENDS+= ${_GST_BR_DEPENDS:O:u}
+RUN_DEPENDS+= ${_GST_BR_DEPENDS:O:u}
+. endif
.endif
diff --git a/Mk/Uses/horde.mk b/Mk/Uses/horde.mk
index 39f554a72c42..1704530861cb 100644
--- a/Mk/Uses/horde.mk
+++ b/Mk/Uses/horde.mk
@@ -113,7 +113,7 @@ horde-Horde_Timezone-DEPEND= ${PEARDIR}/Horde/Timezone.php:devel/pear-Horde_Time
horde-Horde_Token-DEPEND= ${PEARDIR}/Horde/Token.php:devel/pear-Horde_Token
horde-Horde_Translation-DEPEND= ${PEARDIR}/Horde/Translation.php:devel/pear-Horde_Translation
horde-Horde_Tree-DEPEND= ${PEARDIR}/Horde/Tree.php:devel/pear-Horde_Tree
-horde-Horde_Vfs-DEPEND= ${PEARDIR}/Horde/Vfs.php:sysutils/pear-Horde_Vfs
+horde-Horde_Vfs-DEPEND= ${PEARDIR}/Horde/Vfs.php:filesystems/pear-Horde_Vfs
horde-Horde_View-DEPEND= ${PEARDIR}/Horde/View.php:devel/pear-Horde_View
horde-Horde_Xml_Element-DEPEND= ${PEARDIR}/Horde/Xml/Element.php:textproc/pear-Horde_Xml_Element
horde-Horde_Xml_Wbxml-DEPEND= ${PEARDIR}/Horde/Xml/Wbxml.php:textproc/pear-Horde_Xml_Wbxml
diff --git a/Mk/bsd.java.mk b/Mk/Uses/java.mk
index 91ea9516c846..8588884e51c5 100644
--- a/Mk/bsd.java.mk
+++ b/Mk/Uses/java.mk
@@ -1,51 +1,42 @@
-#-*- tab-width: 4; -*-
-# ex:ts=4
+# Provide support for Java (java)
+# Feature: java
+# Usage: USES=java or USES=java:args
#
-# bsd.java.mk - Support for Java-based ports.
+# Defaults to USES=java:build,run if no arguments are provided and NO_BUILD is
+# undefined. If NO_BUILD is defined, USES=java:run is used.
#
+# Valid ARGS: ant build extract
+#
+# ant - Should be defined when the port uses Apache Ant. Ant is thus
+# considered to be the sub-make command. When no 'do-build'
+# target is defined by the port, a default one will be set
+# that simply runs Ant according to MAKE_ENV, MAKE_ARGS and
+# ALL_TARGET. Read the documentation in bsd.port.mk for more
+# information.
+#
+# build - Add the JDK port to the build dependencies
+#
+# extract - Add the JDK port to the extract dependencies
+#
+# run - Add the JDK port to the run dependencies
#
# For FreeBSD committers:
# Please send all suggested changes to the maintainer instead of committing
# them yourself.
#
-
-.if !defined(Java_Include)
-
-Java_Include= bsd.java.mk
-Java_Include_MAINTAINER= java@FreeBSD.org
-
#-------------------------------------------------------------------------------
# Variables that each port can define:
#
-# USE_JAVA Should be defined to the remaining variables to have any
-# effect
-#
# JAVA_VERSION List of space-separated suitable java versions for the
-# port. An optional "+" allows you to specify a range of
-# versions. (allowed values: 8[+] 11[+] 17[+] 18[+] 19[+]
-# 20[+] 21[+])
+# port. An optional "+" allows you to specify a range of
+# versions. (allowed values: 8[+] 11[+] 17[+] 18[+] 19[+]
+# 20[+] 21[+] 22[+] 23[+] 24[+])
#
-# JAVA_OS List of space-separated suitable JDK port operating systems
-# for the port. (allowed values: native linux)
+# JAVA_OS List of space-separated suitable JDK port operating systems
+# for the port. (allowed values: native linux)
#
# JAVA_VENDOR List of space-separated suitable JDK port vendors for the
-# port. (allowed values: openjdk oracle)
-#
-# JAVA_BUILD When set, it means that the selected JDK port should be
-# added to build dependencies for the port.
-#
-# JAVA_EXTRACT This variable works exactly the same as JAVA_BUILD but
-# regarding extract dependencies.
-#
-# JAVA_RUN This variable works exactly the same as JAVA_BUILD but
-# regarding run dependencies.
-#
-# USE_ANT Should be defined when the port uses Apache Ant. Ant is thus
-# considered to be the sub-make command. When no 'do-build'
-# target is defined by the port, a default one will be set
-# that simply runs Ant according to MAKE_ENV, MAKE_ARGS and
-# ALL_TARGET. Read the documentation in bsd.port.mk for more
-# information.
+# port. (allowed values: openjdk oracle)
#
#-------------------------------------------------------------------------------
# Variables defined for the port:
@@ -125,12 +116,62 @@ Java_Include_MAINTAINER= java@FreeBSD.org
# Stage 4: Add any dependencies if necessary
# Stage 5: Define all settings for the port to use
#
+# MAINTAINER: java@FreeBSD.org
-. if defined(USE_JAVA)
+.if !defined(_INCLUDE_USES_JAVA_MK)
-. if !defined(JAVA_VERSION) && empty(USE_JAVA:C/[0-9]*[\.]*[0-9]*[+]*//)
-JAVA_VERSION=${USE_JAVA}
+_INCLUDE_USES_JAVA_MK= yes
+
+_JAVA_VALID_ARGS= ant build extract run
+_JAVA_UNKNOWN_ARGS=
+. for arg in ${java_ARGS}
+. if empty(_JAVA_VALID_ARGS:M${arg})
+_JAVA_UNKNOWN_ARGS+= ${arg}
+. endif
+. endfor
+. if !empty(_JAVA_UNKNOWN_ARGS)
+IGNORE= has unknown USES=java arguments: ${_JAVA_UNKNOWN_ARGS}
+. endif
+. if empty(java_ARGS)
+. if defined(NO_BUILD)
+java_ARGS= run
+. else
+java_ARGS= build,run
. endif
+. endif
+
+. if !empty(java_ARGS)
+.undef _USE_JAVA_ANT
+.undef _USE_JAVA_BUILD
+.undef _USE_JAVA_EXTRACT
+.undef _USE_JAVA_RUN
+_JAVA_ARGS= ${java_ARGS:S/,/ /g}
+. if ${_JAVA_ARGS:Mextract}
+_USE_JAVA_EXTRACT= yes
+_JAVA_ARGS:= ${_JAVA_ARGS:Nextract}
+. endif
+. if ${_JAVA_ARGS:Mant}
+. if defined(NO_BUILD)
+IGNORE= Makefile error: NO_BUILD and USES=java:ant cannot be set at the same time
+. else
+_USE_JAVA_ANT= yes
+_USE_JAVA_BUILD= yes
+_JAVA_ARGS:= ${_JAVA_ARGS:Nant}
+. endif
+. endif
+. if ${_JAVA_ARGS:Mbuild}
+. if defined(NO_BUILD)
+IGNORE= Makefile error: NO_BUILD and USES=java:build cannot be set at the same time
+. else
+_USE_JAVA_BUILD= yes
+_JAVA_ARGS:= ${_JAVA_ARGS:Nbuild}
+. endif
+. endif
+. if ${_JAVA_ARGS:Mrun}
+_USE_JAVA_RUN= yes
+_JAVA_ARGS:= ${_JAVA_ARGS:Nrun}
+. endif
+. endif # !empty(java_ARGS)
#-------------------------------------------------------------------------------
# Stage 1: Define constants
@@ -149,18 +190,18 @@ PLIST_SUB+= JAVASHAREDIR="${JAVASHAREDIR:S,^${PREFIX}/,,}" \
SUB_LIST+= JAVASHAREDIR="${JAVASHAREDIR}" \
JAVAJARDIR="${JAVAJARDIR}" \
JAVALIBDIR="${JAVALIBDIR}"
-. if defined(JAVA_VERSION)
+. if defined(JAVA_VERSION)
SUB_LIST+= JAVA_VERSION="${JAVA_VERSION}"
-. endif
-. if defined(JAVA_VENDOR)
+. endif
+. if defined(JAVA_VENDOR)
SUB_LIST+= JAVA_VENDOR="${JAVA_VENDOR}"
-. endif
-. if defined(JAVA_OS)
+. endif
+. if defined(JAVA_OS)
SUB_LIST+= JAVA_OS="${JAVA_OS}"
-. endif
+. endif
# The complete list of Java versions, os and vendors supported.
-__JAVA_VERSION_LIST= 8 11 17 18 19 20 21
+__JAVA_VERSION_LIST= 8 11 17 18 19 20 21 22 23 24
_JAVA_VERSION_LIST= ${__JAVA_VERSION_LIST} ${__JAVA_VERSION_LIST:S/$/+/}
_JAVA_OS_LIST= native linux
_JAVA_VENDOR_LIST= openjdk oracle
@@ -181,6 +222,12 @@ _JAVA_PORT_NATIVE_OPENJDK_JDK_20_INFO= PORT=java/openjdk20 HOME=${LOCALBASE}/
VERSION=20 OS=native VENDOR=openjdk
_JAVA_PORT_NATIVE_OPENJDK_JDK_21_INFO= PORT=java/openjdk21 HOME=${LOCALBASE}/openjdk21 \
VERSION=21 OS=native VENDOR=openjdk
+_JAVA_PORT_NATIVE_OPENJDK_JDK_22_INFO= PORT=java/openjdk22 HOME=${LOCALBASE}/openjdk22 \
+ VERSION=22 OS=native VENDOR=openjdk
+_JAVA_PORT_NATIVE_OPENJDK_JDK_23_INFO= PORT=java/openjdk23 HOME=${LOCALBASE}/openjdk23 \
+ VERSION=23 OS=native VENDOR=openjdk
+_JAVA_PORT_NATIVE_OPENJDK_JDK_24_INFO= PORT=java/openjdk24 HOME=${LOCALBASE}/openjdk24 \
+ VERSION=24 OS=native VENDOR=openjdk
_JAVA_PORT_LINUX_ORACLE_JDK_8_INFO= PORT=java/linux-oracle-jdk18 HOME=${LOCALBASE}/linux-oracle-jdk1.8.0 \
VERSION=8 OS=linux VENDOR=oracle
@@ -201,6 +248,9 @@ __JAVA_PORTS_ALL= \
JAVA_PORT_NATIVE_OPENJDK_JDK_19 \
JAVA_PORT_NATIVE_OPENJDK_JDK_20 \
JAVA_PORT_NATIVE_OPENJDK_JDK_21 \
+ JAVA_PORT_NATIVE_OPENJDK_JDK_22 \
+ JAVA_PORT_NATIVE_OPENJDK_JDK_23 \
+ JAVA_PORT_NATIVE_OPENJDK_JDK_24 \
JAVA_PORT_LINUX_ORACLE_JDK_8
_JAVA_PORTS_ALL= ${JAVA_PREFERRED_PORTS} \
JAVA_PORT_NATIVE_OPENJDK_JDK_${JAVA_DEFAULT} \
@@ -215,109 +265,98 @@ _JDK_FILE=bin/javac
# suitable
#
-# From here, the port is using bsd.java.mk v2.0
# Error checking: defined JAVA_{HOME,PORT,PORT_VERSION,PORT_VENDOR,PORT_OS}
-. for variable in JAVA_HOME JAVA_PORT JAVA_PORT_VERSION JAVA_PORT_VENDOR JAVA_PORT_OS
-. if defined(${variable})
+. for variable in JAVA_HOME JAVA_PORT JAVA_PORT_VERSION JAVA_PORT_VENDOR JAVA_PORT_OS
+. if defined(${variable})
check-makevars::
@${ECHO_CMD} "${PKGNAME}: Environment error: \"${variable}\" should not be defined -- clearing."
.undef ${variable}
-. endif
-. endfor
+. endif
+. endfor
# Error checking: JAVA_VERSION
-. if defined(JAVA_VERSION)
-. if !defined(_JAVA_VERSION_LIST_REGEXP)
+. if defined(JAVA_VERSION)
+. if !defined(_JAVA_VERSION_LIST_REGEXP)
_JAVA_VERSION_LIST_REGEXP= ${_JAVA_VERSION_LIST:C/\+/\\+/:ts|}
-. endif
+. endif
check-makevars::
@( test ! -z "${JAVA_VERSION}" && ( ${ECHO_CMD} "${JAVA_VERSION}" | ${TR} " " "\n" | ${GREP} -Eq "${_JAVA_VERSION_LIST_REGEXP}")) || \
(${ECHO_CMD} "${PKGNAME}: Makefile error: \"${JAVA_VERSION}\" is not a valid value for JAVA_VERSION. It should be one or more of: ${__JAVA_VERSION_LIST} (with an optional \"+\" suffix.)"; ${FALSE})
-. endif
+. endif
# Error checking: JAVA_VENDOR
-. if defined(JAVA_VENDOR)
-. if !defined(_JAVA_VENDOR_LIST_REGEXP)
+. if defined(JAVA_VENDOR)
+. if !defined(_JAVA_VENDOR_LIST_REGEXP)
_JAVA_VENDOR_LIST_REGEXP= ${_JAVA_VENDOR_LIST:ts|}
-. endif
+. endif
check-makevars::
@( test ! -z "${JAVA_VENDOR}" && ( ${ECHO_CMD} "${JAVA_VENDOR}" | ${TR} " " "\n" | ${GREP} -Eq "${_JAVA_VENDOR_LIST_REGEXP}" )) || \
(${ECHO_CMD} "${PKGNAME}: Makefile error: \"${JAVA_VENDOR}\" is not a valid value for JAVA_VENDOR. It should be one or more of: ${_JAVA_VENDOR_LIST}"; \
${FALSE})
-. endif
+. endif
# Error checking: JAVA_OS
-. if defined(JAVA_OS)
-. if !defined(_JAVA_OS_LIST_REGEXP)
+. if defined(JAVA_OS)
+. if !defined(_JAVA_OS_LIST_REGEXP)
_JAVA_OS_LIST_REGEXP= ${_JAVA_OS_LIST:ts|}
-. endif
+. endif
check-makevars::
@( test ! -z "${JAVA_OS}" && ( ${ECHO_CMD} "${JAVA_OS}" | ${TR} " " "\n" | ${GREP} -Eq "${_JAVA_OS_LIST_REGEXP}")) || \
(${ECHO_CMD} "${PKGNAME}: Makefile error: \"${JAVA_OS}\" is not a valid value for JAVA_OS. It should be one or more of: ${_JAVA_OS_LIST}"; \
${FALSE})
-. endif
-
-# Set default values for JAVA_BUILD and JAVA_RUN
-# When nothing is set, assume JAVA_BUILD=jdk and JAVA_RUN=jre
-# (unless NO_BUILD is set)
-. if !defined(JAVA_EXTRACT) && !defined(JAVA_BUILD) && !defined(JAVA_RUN)
-. if !defined(NO_BUILD)
-JAVA_BUILD= jdk
-. endif
-JAVA_RUN= jre
-. endif
+. endif
# JDK dependency setting
. undef _JAVA_PORTS_INSTALLED
. undef _JAVA_PORTS_POSSIBLE
-. if defined(JAVA_VERSION)
-_JAVA_VERSION= ${JAVA_VERSION:S/^8+/8 11+/:S/^11+/11 17+/:S/^17+/17 18+/:S/^18+/18 19+/:S/^19+/19 20+/:S/^20+/20 21+/:S/^21+/21/}
-. else
+. if defined(JAVA_VERSION)
+_JAVA_VERSION= ${JAVA_VERSION:S/^8+/8 11+/:S/^11+/11 17+/:S/^17+/17 18+/:S/^18+/18 19+/:S/^19+/19 20+/:S/^20+/20 21+/:S/^21+/21 22+/:S/^22+/22 23+/:S/^23+/23 24+/:S/^24+/24/}
+. else
_JAVA_VERSION= ${__JAVA_VERSION_LIST}
-. endif
-. if defined(JAVA_OS)
+. endif
+. if defined(JAVA_OS)
_JAVA_OS= ${JAVA_OS}
-. else
+. else
_JAVA_OS= ${_JAVA_OS_LIST}
-. endif
-. if defined(JAVA_VENDOR)
+. endif
+. if defined(JAVA_VENDOR)
_JAVA_VENDOR= ${JAVA_VENDOR}
-. else
+. else
_JAVA_VENDOR= ${_JAVA_VENDOR_LIST}
-. endif
+. endif
-. for A_JAVA_PORT in ${_JAVA_PORTS_ALL}
+. for A_JAVA_PORT in ${_JAVA_PORTS_ALL}
A_JAVA_PORT_INFO:= ${A_JAVA_PORT:S/^/\${_/:S/$/_INFO}/}
A_JAVA_PORT_HOME= ${A_JAVA_PORT_INFO:MHOME=*:S,HOME=,,}
A_JAVA_PORT_VERSION= ${A_JAVA_PORT_INFO:MVERSION=*:S,VERSION=,,}
A_JAVA_PORT_OS= ${A_JAVA_PORT_INFO:MOS=*:S,OS=,,}
A_JAVA_PORT_VENDOR= ${A_JAVA_PORT_INFO:MVENDOR=*:S,VENDOR=,,}
-. if !defined(_JAVA_PORTS_INSTALLED) && exists(${A_JAVA_PORT_HOME}/${_JDK_FILE})
+. if !defined(_JAVA_PORTS_INSTALLED) && exists(${A_JAVA_PORT_HOME}/${_JDK_FILE})
__JAVA_PORTS_INSTALLED+= ${A_JAVA_PORT}
-. endif
+. endif
# Because variables inside for loops are special (directly replaced as strings),
# we are allowed to use them inside modifiers, where normally ${FOO:M${BAR}} is
# not allowed.
#
-. for ver in ${A_JAVA_PORT_VERSION}
-. for os in ${A_JAVA_PORT_OS}
-. for vendor in ${A_JAVA_PORT_VENDOR}
-. if ${_JAVA_VERSION:M${ver}} && ${_JAVA_OS:M${os}} && ${_JAVA_VENDOR:M${vendor}}
+. for ver in ${A_JAVA_PORT_VERSION}
+. for os in ${A_JAVA_PORT_OS}
+. for vendor in ${A_JAVA_PORT_VENDOR}
+. if ${_JAVA_VERSION:M${ver}} && ${_JAVA_OS:M${os}} && ${_JAVA_VENDOR:M${vendor}}
__JAVA_PORTS_POSSIBLE+= ${A_JAVA_PORT}
-. endif
-. endfor
+. endif
. endfor
. endfor
-
. endfor
-. if !defined(_JAVA_PORTS_INSTALLED)
+
+. endfor
+. if !defined(_JAVA_PORTS_INSTALLED)
_JAVA_PORTS_INSTALLED= ${__JAVA_PORTS_INSTALLED:C/ [ ]+/ /g}
-. endif
+. endif
_JAVA_PORTS_POSSIBLE= ${__JAVA_PORTS_POSSIBLE:C/ [ ]+/ /g}
@@ -329,27 +368,27 @@ _JAVA_PORTS_POSSIBLE= ${__JAVA_PORTS_POSSIBLE:C/ [ ]+/ /g}
. undef _JAVA_PORTS_INSTALLED_POSSIBLE
-. for A_JAVA_PORT in ${_JAVA_PORTS_POSSIBLE}
+. for A_JAVA_PORT in ${_JAVA_PORTS_POSSIBLE}
__JAVA_PORTS_INSTALLED_POSSIBLE+= ${_JAVA_PORTS_INSTALLED:M${A_JAVA_PORT}}
-. endfor
+. endfor
_JAVA_PORTS_INSTALLED_POSSIBLE= ${__JAVA_PORTS_INSTALLED_POSSIBLE:C/[ ]+//g}
-. if ${_JAVA_PORTS_INSTALLED_POSSIBLE} != ""
-. for i in ${_JAVA_PORTS_INSTALLED_POSSIBLE}
-. if !defined(_JAVA_PORTS_INSTALLED_POSSIBLE_shortcircuit)
+. if ${_JAVA_PORTS_INSTALLED_POSSIBLE} != ""
+. for i in ${_JAVA_PORTS_INSTALLED_POSSIBLE}
+. if !defined(_JAVA_PORTS_INSTALLED_POSSIBLE_shortcircuit)
_JAVA_PORT= $i
_JAVA_PORTS_INSTALLED_POSSIBLE_shortcircuit= 1
-. endif
-. endfor
+. endif
+. endfor
# If no installed JDK port fits, then pick one from the list of possible ones
-. else
-. for i in ${_JAVA_PORTS_POSSIBLE}
-. if !defined(_JAVA_PORTS_POSSIBLE_shortcircuit)
+. else
+. for i in ${_JAVA_PORTS_POSSIBLE}
+. if !defined(_JAVA_PORTS_POSSIBLE_shortcircuit)
_JAVA_PORT= $i
_JAVA_PORTS_POSSIBLE_shortcircuit= 1
-. endif
-. endfor
-. endif
+. endif
+. endfor
+. endif
_JAVA_PORT_INFO:= ${_JAVA_PORT:S/^/\${_/:S/$/_INFO}/}
JAVA_PORT= ${_JAVA_PORT_INFO:MPORT=*:S,PORT=,,}
@@ -365,48 +404,38 @@ JAVA_PORT_OS_DESCRIPTION:= ${JAVA_PORT_OS:S/^/\${_JAVA_OS_/:S/$/}/}
# Stage 4: Add any dependencies if necessary
#
-# Ant Support: USE_ANT --> JAVA_BUILD=jdk
-. if defined(USE_ANT)
-JAVA_BUILD= jdk
-. endif
-
# Add the JDK port to the dependencies
DEPEND_JAVA= ${JAVA}:${JAVA_PORT}
-. if defined(JAVA_EXTRACT)
+. if defined(_USE_JAVA_EXTRACT)
EXTRACT_DEPENDS+= ${DEPEND_JAVA}
-. endif
-. if defined(JAVA_BUILD)
-. if defined(NO_BUILD)
-check-makevars::
- @${ECHO_CMD} "${PKGNAME}: Makefile error: JAVA_BUILD and NO_BUILD cannot be set at the same time.";
- @${FALSE}
-. endif
+. endif
+. if defined(_USE_JAVA_BUILD)
BUILD_DEPENDS+= ${DEPEND_JAVA}
-. endif
-. if defined(JAVA_RUN)
+. endif
+. if defined(_USE_JAVA_RUN)
RUN_DEPENDS+= ${DEPEND_JAVA}
-. endif
+. endif
# Ant support: default do-build target
-. if defined(USE_ANT)
-DESTDIRNAME?= -Dfreebsd.ports.destdir
+. if defined(_USE_JAVA_ANT)
+DESTDIRNAME= -Dfreebsd.ports.destdir
ANT?= ${LOCALBASE}/bin/ant
MAKE_ENV+= JAVA_HOME=${JAVA_HOME}
BUILD_DEPENDS+= ${ANT}:devel/apache-ant
ALL_TARGET?=
-. if !target(do-build)
+. if !target(do-build)
do-build:
- @(cd ${BUILD_WRKSRC}; ${SETENVI} ${WRK_ENV} ${MAKE_ENV} \
- ${ANT} ${MAKE_ARGS} ${ALL_TARGET})
-. endif
-. if !target(do-test) && defined(TEST_TARGET)
+ @(cd ${BUILD_WRKSRC}; ${SETENVI} ${WRK_ENV} ${MAKE_ENV} \
+ ${ANT} ${MAKE_ARGS} ${ALL_TARGET})
+. endif
+. if !target(do-test) && defined(TEST_TARGET)
TEST_DEPENDS+= ${DEPEND_JAVA}
TEST_DEPENDS+= ${ANT}:devel/apache-ant
do-test:
- @(cd ${TEST_WRKSRC}; ${SETENVI} ${WRK_ENV} ${MAKE_ENV} \
- ${ANT} ${MAKE_ARGS} ${TEST_TARGET})
-. endif
+ @(cd ${TEST_WRKSRC}; ${SETENVI} ${WRK_ENV} ${MAKE_ENV} \
+ ${ANT} ${MAKE_ARGS} ${TEST_TARGET})
. endif
+. endif
#-----------------------------------------------------------------------------
# Stage 5: Define all settings for the port to use
@@ -416,14 +445,12 @@ do-test:
# Define the location of the Java compiler.
# Only define JAVAC if a JDK is needed
-. undef JAVAC
+#. undef JAVAC
# Then test if a JAVAC has to be set (JAVA_BUILD==jdk)
-. if defined(JAVA_BUILD)
-. if (${JAVA_BUILD:tu} == "JDK") && !defined(JAVAC)
+. if defined(_USE_JAVA_BUILD) && !defined(JAVAC)
JAVAC?= ${JAVA_HOME}/bin/javac
-. endif
-. endif
+. endif
# Define the location of some more executables.
APPLETVIEWER?= ${JAVA_HOME}/bin/appletviewer
@@ -454,9 +481,9 @@ java-debug:
@${ECHO_CMD} "JAVA_VERSION= ${JAVA_VERSION} (${_JAVA_VERSION})"
@${ECHO_CMD} "JAVA_OS= ${JAVA_OS} (${_JAVA_OS})"
@${ECHO_CMD} "JAVA_VENDOR= ${JAVA_VENDOR} (${_JAVA_VENDOR})"
- @${ECHO_CMD} "JAVA_BUILD= ${JAVA_BUILD}"
- @${ECHO_CMD} "JAVA_RUN= ${JAVA_RUN}"
- @${ECHO_CMD} "JAVA_EXTRACT= ${JAVA_EXTRACT}"
+ @${ECHO_CMD} "JAVA_BUILD= ${_USE_JAVA_BUILD}"
+ @${ECHO_CMD} "JAVA_RUN= ${_USE_JAVA_RUN}"
+ @${ECHO_CMD} "JAVA_EXTRACT= ${_USE_JAVA_EXTRACT}"
@${ECHO_CMD} "JAVA_DEFAULT= ${JAVA_DEFAULT}"
@${ECHO_CMD}
@${ECHO_CMD} "# JDK port dependency selection process:"
@@ -477,5 +504,4 @@ java-debug:
@${ECHO_CMD} "JAVAC= ${JAVAC}"
@${ECHO_CMD} "JAVA_CLASSES= ${JAVA_CLASSES}"
-. endif
.endif
diff --git a/Mk/Uses/kde.mk b/Mk/Uses/kde.mk
index 089a4fa9f9a4..812619911717 100644
--- a/Mk/Uses/kde.mk
+++ b/Mk/Uses/kde.mk
@@ -81,53 +81,47 @@ KDE_PLASMA_BRANCH?= ${KDE_PLASMA${_KDE_VERSION}_BRANCH}
KDE_FRAMEWORKS_VERSION?= ${KDE_FRAMEWORKS${_KDE_VERSION}_VERSION}
KDE_FRAMEWORKS_BRANCH?= ${KDE_FRAMEWORKS${_KDE_VERSION}_BRANCH}
-. if ${CATEGORIES:Mkde-devel}
KDE_APPLICATIONS_BRANCH?= ${KDE_APPLICATIONS6_BRANCH}
KDE_APPLICATIONS_VERSION?= ${KDE_APPLICATIONS6_VERSION}
KDE_APPLICATIONS_SHLIB_VER?= ${KDE_APPLICATIONS6_SHLIB_VER}
KDE_APPLICATIONS_SHLIB_G_VER?= ${KDE_APPLICATIONS6_SHLIB_G_VER}
-PKGNAMESUFFIX?= -devel
-. else
-KDE_APPLICATIONS_BRANCH?= ${KDE_APPLICATIONS5_BRANCH}
-KDE_APPLICATIONS_VERSION?= ${KDE_APPLICATIONS5_VERSION}
-KDE_APPLICATIONS_SHLIB_VER?= ${KDE_APPLICATIONS5_SHLIB_VER}
-KDE_APPLICATIONS_SHLIB_G_VER?= ${KDE_APPLICATIONS5_SHLIB_G_VER}
-. endif
-
-# Current KDE desktop.
-KDE_PLASMA5_VERSION?= 5.27.11
+# Legacy KDE Plasma.
+KDE_PLASMA5_VERSION?= 5.27.12
KDE_PLASMA5_BRANCH?= stable
-# Next KDE Plasma desktop
-KDE_PLASMA6_VERSION?= 6.0.4
+# Current KDE Plasma desktop.
+KDE_PLASMA6_VERSION?= 6.4.3
KDE_PLASMA6_BRANCH?= stable
-# Current KDE frameworks.
-KDE_FRAMEWORKS5_VERSION?= 5.115.0
+# Legacy KDE frameworks (Qt5 based).
+KDE_FRAMEWORKS5_VERSION?= 5.116.0
KDE_FRAMEWORKS5_BRANCH?= stable
-# Next KDE Frameworks (Qt6 based)
-KDE_FRAMEWORKS6_VERSION?= 6.1.0
+# Current KDE Frameworks (Qt6 based).
+KDE_FRAMEWORKS6_VERSION?= 6.16.0
KDE_FRAMEWORKS6_BRANCH?= stable
-# Current KDE applications.
-KDE_APPLICATIONS5_VERSION?= 23.08.5
-KDE_APPLICATIONS5_SHLIB_VER?= 5.24.5
-# G as in KDE Gear, and as in "don't make the variable name longer than required"
-KDE_APPLICATIONS5_SHLIB_G_VER?= 23.8.5
-KDE_APPLICATIONS5_BRANCH?= stable
-
-# Next KDE applications.
-KDE_APPLICATIONS6_VERSION?= 24.01.90
-KDE_APPLICATIONS6_SHLIB_VER?= 5.24.3
-# G as in KDE Gear, and as in "don't make the variable name longer than required"
-KDE_APPLICATIONS6_SHLIB_G_VER?= 24.01.90
-KDE_APPLICATIONS6_BRANCH?= unstable
-
-# Extended KDE universe applications.
-CALLIGRA_VERSION?= 2.9.11
-CALLIGRA_BRANCH?= stable
+# Current KDE applications. Update _${PORTNAME}_PROJECT_VERSION for the following ports:
+# devel/kdevelop, games/libkdegames, games/libkmahjongg, graphics/kgraphviewer
+KDE_APPLICATIONS6_VERSION?= 25.04.3
+KDE_APPLICATIONS6_SHLIB_VER?= 6.4.3
+# G as in KDE Gear, and as in "don't make the variable name longer than required".
+KDE_APPLICATIONS6_SHLIB_G_VER?= ${KDE_APPLICATIONS6_VERSION}
+KDE_APPLICATIONS6_BRANCH?= stable
+
+# Some projects despite being a part of Gear distribution continue to use
+# their own versioning with mangled KDE_APPLICATIONS_VERSION as a patchlevel.
+# Provide more variables to ease their maintenance.
+KDE_APPS_MAJOR= ${KDE_APPLICATIONS_VERSION:R:R}
+KDE_APPS_MINOR= ${KDE_APPLICATIONS_VERSION:R:E}
+. if ${KDE_APPLICATIONS_BRANCH:Mstable}
+KDE_APPS_MICRO= 0${KDE_APPLICATIONS_VERSION:E}
+. else
+KDE_APPS_MICRO= ${KDE_APPLICATIONS_VERSION:E}
+. endif
+KDE_APPS_BASED_PATCHLEVEL?= ${KDE_APPS_MAJOR}${KDE_APPS_MINOR}${KDE_APPS_MICRO}
+
# ==============================================================================
# === INSTALLATION PREFIXES AND HEADER LOCATION ================================
@@ -200,12 +194,16 @@ USE_KDE+= doctools:build
# Further pass along a SHLIB_VER PLIST_SUB
PLIST_SUB+= KDE_APPLICATIONS_SHLIB_VER=${KDE_APPLICATIONS_SHLIB_VER} \
KDE_APPLICATIONS_VERSION_SHORT="${KDE_APPLICATIONS_VERSION:R:R}"
+. if defined(_${PORTNAME}_PROJECT_VERSION)
+PLIST_SUB+= SHLIB_VER_LONG=${_${PORTNAME}_PROJECT_VERSION}.${KDE_APPS_BASED_PATCHLEVEL}
+. endif
DIST_SUBDIR?= KDE/release-service/${KDE_APPLICATIONS_VERSION}
. elif ${_KDE_CATEGORY:Mkde-plasma}
PORTVERSION?= ${KDE_PLASMA_VERSION}
PKGNAMEPREFIX?= plasma${_KDE_VERSION}-
MASTER_SITES?= KDE/${KDE_PLASMA_BRANCH}/plasma/${KDE_PLASMA_VERSION}
DIST_SUBDIR?= KDE/plasma/${KDE_PLASMA_VERSION}
+WWW?= https://kde.org/plasma-desktop/
. if ${_KDE_VERSION:M6}
DESCR= ${.CURDIR:H:H}/x11/plasma6-plasma/pkg-descr
. endif
@@ -213,8 +211,7 @@ DESCR= ${.CURDIR:H:H}/x11/plasma6-plasma/pkg-descr
PORTVERSION?= ${KDE_FRAMEWORKS_VERSION}
PKGNAMEPREFIX?= kf${_KDE_VERSION}-
WWW?= https://api.kde.org/frameworks/${PORTNAME}/html/index.html
-# This is a slight duplication of _USE_FRAMEWORKS_PORTING -- it maybe would be
-# better to rely on ${_USE_FRAMEWORKS_PORTING:S/^/k/g}
+# This is a slight duplication of _USE_PORTINGAIDS_ALL
_PORTINGAIDS= kjs kjsembed kdelibs4support kdesignerplugin khtml kmediaplayer kross kxmlrpcclient
. if ${_KDE_VERSION:M5}
. if ${_PORTINGAIDS:M*${PORTNAME}*}
@@ -227,6 +224,7 @@ MASTER_SITES?= KDE/${KDE_FRAMEWORKS_BRANCH}/frameworks/${KDE_FRAMEWORKS_VERSION
. endif
DIST_SUBDIR?= KDE/frameworks/${KDE_FRAMEWORKS_VERSION}
. if ${_KDE_VERSION:M6}
+DIST_SUBDIR= KDE/frameworks/${KDE_FRAMEWORKS_VERSION:R}
DESCR= ${.CURDIR:H:H}/x11/kf6-frameworks/pkg-descr
. endif
. else
@@ -250,6 +248,9 @@ CMAKE_ARGS+= -DCMAKE_MODULE_PATH="${LOCALBASE};${KDE_PREFIX}" \
KDE_MAN_PREFIX?= ${KDE_PREFIX}/share/man
+# Enforce the chosen Qt Version
+CMAKE_ARGS+= -DQT_MAJOR_VERSION=${_QT_VER}
+
# Disable autotests unless TEST_TARGET is defined.
. if !defined(TEST_TARGET)
CMAKE_ARGS+= -DBUILD_TESTING:BOOL=false
@@ -265,107 +266,109 @@ PLIST_SUB+= KDE_APPLICATIONS_VERSION="${KDE_APPLICATIONS_VERSION}" \
KDE_PLASMA_VERSION="${KDE_PLASMA_VERSION}"
# ==============================================================================
-_USE_KDE_BOTH= akonadi libkcddb libkcompactdisc libkdcraw libkdegames \
- libkeduvocdocument libkipi libksane okular \
- baloo-widgets kate marble
-
-# List of components of the KDE Frameworks distribution.
-# The *_TIER<n> variables are internal, primarily for checking
-# that our list of frameworks matches the structure offered upstream.
-_USE_FRAMEWORKS_TIER1= apidox archive attica breeze-icons codecs config \
- coreaddons dbusaddons dnssd holidays i18n idletime itemmodels \
- itemviews kirigami2 kquickcharts oxygen-icons5 plotting prison \
- qqc2-desktop-style solid sonnet syntaxhighlighting \
- threadweaver wayland widgetsaddons windowsystem
-# NOT LISTED TIER1: modemmanagerqt networkmanagerqt (not applicable)
-
-_USE_FRAMEWORKS_TIER2= auth completion crash doctools \
- filemetadata kimageformats jobwidgets notifications \
- package pty syndication unitconversion
-
-_USE_FRAMEWORKS_TIER3= activities activities-stats baloo bookmarks configwidgets \
- designerplugin emoticons globalaccel guiaddons \
- iconthemes init kcmutils kdav kdeclarative \
- kded kdesu kio kpipewire newstuff notifyconfig parts \
- people plasma-framework purpose runner service texteditor \
- textwidgets wallet xmlgui xmlrpcclient
-
-_USE_FRAMEWORKS_TIER4= frameworkintegration calendarcore contacts
+# List of all USE_KDE components.
+# TODO for KDE 7: do not mangle upstream naming: use the same name
+# for port directory, PORTNAME, and USE_KDE component.
# Porting Aids frameworks provide code and utilities to ease the transition from
-# kdelibs 4 to KDE Frameworks 5. Code should aim to port away from this framework,
-# new projects should avoid using these libraries.
-_USE_FRAMEWORKS_PORTING=js jsembed kdelibs4support khtml mediaplayer kross
-
-_USE_FRAMEWORKS5_ALL= ecm \
- ${_USE_FRAMEWORKS_TIER1} \
- ${_USE_FRAMEWORKS_TIER2} \
- ${_USE_FRAMEWORKS_TIER3} \
- ${_USE_FRAMEWORKS_TIER4} \
- ${_USE_FRAMEWORKS_PORTING} \
- ${_USE_FRAMEWORKS_EXTRA} \
- kpublictransport kosm \
- plasma-wayland-protocols
-# TODO: fix
-_USE_FRAMEWORKS6_ALL= ecm colorscheme \
- svg \
- statusnotifieritem \
- plasma-wayland-protocols \
- userfeedback \
- ${_USE_FRAMEWORKS_TIER1:Noxygen-icons5:Nwayland} \
- ${_USE_FRAMEWORKS_TIER2} \
- ${_USE_FRAMEWORKS_TIER3:Nemoticons:Ndesignerplugin:Nactivities:Nactivities-stats:Ninit:Nplasma-framework:Nxmlrpcclient:Nkpipewire} \
- ${_USE_FRAMEWORKS_TIER4} \
- ${_USE_FRAMEWORKS_EXTRA}
+# kdelibs 4 to KDE Frameworks 5.
+_USE_PORTINGAIDS_ALL= js jsembed kdelibs4support khtml mediaplayer kross
+
+# List of components of the KDE Frameworks distribution.
+# Not ported to FreeBSD: bluez-qt modemmanagerqt
+_USE_FRAMEWORKS5_ALL= activities activities-stats apidox archive attica \
+ auth baloo bookmarks breeze-icons calendarcore \
+ codecs completion config configwidgets contacts \
+ coreaddons crash dbusaddons designerplugin dnssd \
+ doctools ecm emoticons filemetadata frameworkintegration \
+ globalaccel guiaddons holidays i18n iconthemes \
+ idletime init itemmodels itemviews jobwidgets \
+ kcmutils kdav kdeclarative kded kdesu kimageformats \
+ kio kirigami2 kquickcharts newstuff notifications \
+ notifyconfig package parts people plasma-framework \
+ plotting prison pty purpose qqc2-desktop-style \
+ runner service solid sonnet syndication \
+ syntaxhighlighting texteditor textwidgets \
+ threadweaver unitconversion wallet wayland \
+ widgetsaddons windowsystem xmlgui xmlrpcclient \
+ ${_USE_PORTINGAIDS_ALL}
+
+_USE_FRAMEWORKS6_ALL= apidox archive attica auth baloo bookmarks \
+ breeze-icons calendarcore codecs colorscheme \
+ completion config configwidgets contacts coreaddons \
+ crash dbusaddons dnssd doctools ecm filemetadata \
+ frameworkintegration globalaccel guiaddons holidays \
+ i18n iconthemes idletime itemmodels itemviews \
+ jobwidgets kcmutils kdav kdeclarative kded kdesu \
+ kimageformats kio kirigami2 kquickcharts newstuff \
+ networkmanagerqt notifications notifyconfig package parts \
+ people plasma-wayland-protocols plotting prison pty purpose \
+ qqc2-desktop-style runner service solid sonnet \
+ statusnotifieritem svg syndication \
+ syntaxhighlighting texteditor texttemplate \
+ textwidgets threadweaver unitconversion userfeedback \
+ wallet widgetsaddons windowsystem xmlgui
_USE_FRAMEWORKS_ALL= ${_USE_FRAMEWORKS${_KDE_VERSION}_ALL}
# List of components of the KDE Plasma distribution.
-_USE_PLASMA_ALL= activitymanagerd breeze breeze-gtk \
- decoration discover drkonqi hotkeys \
- infocenter kde-cli-tools kde-gtk-config \
- kdeplasma-addons kgamma5 kmenuedit kscreen \
- kscreenlocker ksshaskpass ksysguard ksystemstats kwallet-pam \
- kwayland-integration kwin kwrited layer-shell-qt libkscreen \
- libksysguard milou oxygen oxygen-sounds plasma-browser-integration \
- plasma-desktop plasma-disks plasma-integration plasma-pa \
- plasma-sdk plasma-workspace plasma-workspace-wallpapers \
- polkit-kde-agent-1 powerdevil systemsettings xdg-desktop-portal-kde \
- kirigami-addons
-
-# List of components of the KDE PIM distribution (part of applications).
-_USE_KDEPIM5_ALL= akonadicontacts akonadiimportwizard akonadimime akonadinotes \
- akonadicalendar akonadisearch \
- calendarcore calendarsupport calendarutils \
- contacts eventviews gapi grantleetheme \
- gravatar identitymanagement imap \
- incidenceeditor kdepim-addons \
- kdepim-runtime5 kitinerary kontactinterface kpkpass \
- ksmtp ldap libkdepim libkleo libksieve mailcommon \
- mailimporter mailtransport mbox messagelib \
- mime pimcommon pimtextedit tnef \
- kalarm kontact kmail mbox-importer \
- akonadiconsole akregator grantlee-editor kaddressbook \
- kalarm kmail-account-wizard kmail knotes kontact \
- korganizer pim-data-exporter ktextaddons
-
-_USE_PHONON_ALL= phonon phonon-backend
+_USE_PLASMA5_ALL= libksysguard oxygen-sounds
+
+_USE_PLASMA6_ALL= activities activities-stats activitymanagerd \
+ aurorae breeze breeze-gtk decoration discover \
+ globalacceld infocenter kde-cli-tools \
+ kde-gtk-config kdeplasma-addons kgamma kmenuedit \
+ kpipewire kscreen kscreenlocker ksshaskpass \
+ ksystemstats kwallet-pam kwin kwin-x11 kwrited \
+ layer-shell-qt libkscreen libksysguard libplasma \
+ milou ocean-sound-theme oxygen oxygen-sounds \
+ plasma-browser-integration plasma-desktop \
+ plasma-disks plasma-integration plasma-pa \
+ plasma-sdk plasma-workspace \
+ plasma-workspace-wallpapers plasma5support \
+ polkit-kde-agent-1 powerdevil print-manager \
+ qqc2-breeze-style sddm-kcm spectacle systemmonitor \
+ systemsettings wayland xdg-desktop-portal-kde
+_USE_PLASMA_ALL= ${_USE_PLASMA${_KDE_VERSION}_ALL}
+
+# List of frequently used components of the KDE Gears distribution.
+_USE_GEAR5_ALL= libkdcraw libkexiv2
+_USE_GEAR6_ALL= baloo-widgets kate kosm kpublictransport \
+ libkcddb libkcompactdisc libkdcraw \
+ libkdegames libkeduvocdocument libkexiv2 \
+ libksane marble okular
+_USE_GEAR_ALL= ${_USE_GEAR${_KDE_VERSION}_ALL}
+
+# List of components of the KDE PIM distribution (part of KDE Gears).
+_USE_KDEPIM_ALL= akonadi akonadicalendar akonadiconsole \
+ akonadicontacts akonadiimportwizard akonadimime \
+ akonadisearch akregator calendarsupport \
+ calendarutils eventviews gapi grantlee-editor \
+ grantleetheme gravatar identitymanagement imap \
+ incidenceeditor kaddressbook kalarm kdepim-addons \
+ kdepim-runtime kitinerary kmail kmail-account-wizard \
+ kontact kontactinterface korganizer kpkpass ksmtp \
+ ldap libkdepim libkleo libksieve mailcommon \
+ mailimporter mailtransport mbox mbox-importer \
+ messagelib mime mimetreeparser pim-data-exporter \
+ pimcommon pimtextedit tnef
+
+# List of frequently used KDE releated software for any KDE/Qt version.
+_USE_KDE_EXTRA5_ALL= kirigami-addons phonon phonon-vlc \
+ plasma-wayland-protocols
+_USE_KDE_EXTRA6_ALL= kirigami-addons phonon phonon-mpv phonon-vlc \
+ plasma-wayland-protocols ktextaddons
+_USE_KDE_EXTRA_ALL= ${_USE_KDE_EXTRA${_KDE_VERSION}_ALL}
_USE_KDE5_ALL= ${_USE_FRAMEWORKS_ALL} \
${_USE_PLASMA_ALL} \
- ${_USE_KDEPIM5_ALL} \
- ${_USE_KDE_BOTH} \
- ${_USE_PHONON_ALL} \
- libkexiv2
-# TODO: fix
-_USE_KDE6_ALL= ecm colorscheme \
- svg \
- plasma-wayland-protocols \
- mediaplayer \
- ${_USE_FRAMEWORKS_ALL} \
+ ${_USE_GEAR_ALL} \
+ ${_USE_KDE_EXTRA_ALL}
+
+_USE_KDE6_ALL= ${_USE_FRAMEWORKS_ALL} \
${_USE_PLASMA_ALL} \
- plasma5support activities activities-stats kpipewire wayland globalacceld libplasma \
- ${_USE_PHONON_ALL} \
- libkexiv2
+ ${_USE_KDEPIM_ALL} \
+ ${_USE_GEAR_ALL} \
+ ${_USE_KDE_EXTRA_ALL}
# ====================== frameworks components =================================
kde-activities_PORT5= x11/kf${_KDE_VERSION}-kactivities
@@ -382,7 +385,8 @@ kde-activities-stats_LIB5= libKF${_KDE_VERSION}ActivitiesStats.so
kde-activities-stats_LIB6= libPlasmaActivitiesStats.so
kde-activities-stats_LIB= ${kde-activities-stats_LIB${_KDE_VERSION}}
-kde-apidox_PORT= devel/kf${_KDE_VERSION}-kapidox
+# Use KApiDox tools from KDE Frameworks 6
+kde-apidox_PORT= devel/kf6-kapidox
kde-apidox_PATH= ${KDE_PREFIX}/bin/kapidox-generate
kde-apidox_TYPE= run
@@ -401,9 +405,9 @@ kde-baloo_LIB= libKF${_KDE_VERSION}Baloo.so
kde-bookmarks_PORT= devel/kf${_KDE_VERSION}-kbookmarks
kde-bookmarks_LIB= libKF${_KDE_VERSION}Bookmarks.so
-kde-breeze-icons_PORT= x11-themes/kf${_KDE_VERSION}-breeze-icons
+# Use the latest icons from KDE Frameworks 6
+kde-breeze-icons_PORT= x11-themes/kf6-breeze-icons
kde-breeze-icons_PATH= ${KDE_PREFIX}/share/icons/breeze/index.theme
-kde-breeze-icons_TYPE= run
kde-codecs_PORT= textproc/kf${_KDE_VERSION}-kcodecs
kde-codecs_LIB= libKF${_KDE_VERSION}Codecs.so
@@ -436,7 +440,8 @@ kde-dnssd_LIB= libKF${_KDE_VERSION}DNSSD.so
kde-doctools_PORT= devel/kf${_KDE_VERSION}-kdoctools
kde-doctools_PATH= ${KDE_PREFIX}/bin/meinproc${_KDE_VERSION}
-kde-ecm_PORT= devel/kf${_KDE_VERSION}-extra-cmake-modules
+# Use ECM from KDE Frameworks 6 for everything
+kde-ecm_PORT= devel/kf6-extra-cmake-modules
kde-ecm_PATH= ${LOCALBASE}/share/ECM/cmake/ECMConfig.cmake
kde-emoticons_PORT= x11-themes/kf${_KDE_VERSION}-kemoticons
@@ -532,6 +537,9 @@ kde-layer-shell-qt_LIB= libLayerShellQtInterface.so
kde-mediaplayer_PORT= multimedia/kf${_KDE_VERSION}-kmediaplayer
kde-mediaplayer_LIB= libKF${_KDE_VERSION}MediaPlayer.so.5
+kde-networkmanagerqt_PORT= net-mgmt/kf${_KDE_VERSION}-networkmanager-qt
+kde-networkmanagerqt_LIB= libKF${_KDE_VERSION}NetworkManagerQt.so
+
kde-newstuff_PORT= devel/kf${_KDE_VERSION}-knewstuff
kde-newstuff_LIB= libKF${_KDE_VERSION}NewStuffCore.so
@@ -541,11 +549,8 @@ kde-notifications_LIB= libKF${_KDE_VERSION}Notifications.so
kde-notifyconfig_PORT= devel/kf${_KDE_VERSION}-knotifyconfig
kde-notifyconfig_LIB= libKF${_KDE_VERSION}NotifyConfig.so
-kde-oxygen-icons5_PORT= x11-themes/kf${_KDE_VERSION}-oxygen-icons5
-kde-oxygen-icons5_PATH= ${KDE_PREFIX}/share/icons/oxygen/index.theme
-kde-oxygen-icons5_TYPE= run
-
-kde-oxygen-sounds_PORT= audio/plasma${_KDE_VERSION}-oxygen-sounds
+# Use the latest sounds from Plasma 6
+kde-oxygen-sounds_PORT= audio/plasma6-oxygen-sounds
kde-oxygen-sounds_PATH= ${KDE_PREFIX}/share/sounds/Oxygen-Sys-Log-In.ogg
kde-oxygen-sounds_TYPE= run
@@ -602,6 +607,9 @@ kde-syntaxhighlighting_LIB= libKF${_KDE_VERSION}SyntaxHighlighting.so
kde-texteditor_PORT= devel/kf${_KDE_VERSION}-ktexteditor
kde-texteditor_LIB= libKF${_KDE_VERSION}TextEditor.so
+kde-texttemplate_PORT= devel/kf${_KDE_VERSION}-ktexttemplate
+kde-texttemplate_LIB= libKF${_KDE_VERSION}TextTemplate.so
+
kde-textwidgets_PORT= x11-toolkits/kf${_KDE_VERSION}-ktextwidgets
kde-textwidgets_LIB= libKF${_KDE_VERSION}TextWidgets.so
@@ -663,6 +671,9 @@ kde-kpipewire_LIB= libKPipeWire.so
kde-activitymanagerd_PORT= x11/plasma${_KDE_VERSION}-kactivitymanagerd
kde-activitymanagerd_LIB= libkactivitymanagerd_plugin.so
+kde-aurorae_PORT= x11-themes/plasma${_KDE_VERSION}-aurorae
+kde-aurorae_PATH= ${KDE_PREFIX}/lib/libexec/plasma-apply-aurorae
+
kde-breeze_PORT= x11-themes/plasma${_KDE_VERSION}-breeze
kde-breeze_PATH= ${KDE_PREFIX}/share/QtCurve/Breeze.qtcurve
@@ -670,17 +681,11 @@ kde-breeze-gtk_PORT= x11-themes/plasma${_KDE_VERSION}-breeze-gtk
kde-breeze-gtk_PATH= ${KDE_PREFIX}/share/themes/Breeze/gtk-2.0/gtkrc
kde-decoration_PORT= x11-wm/plasma${_KDE_VERSION}-kdecoration
-kde-decoration_LIB= libkdecorations2.so
+kde-decoration_LIB= libkdecorations3.so
kde-discover_PORT= sysutils/plasma${_KDE_VERSION}-discover
kde-discover_PATH= ${KDE_PREFIX}/bin/plasma-discover
-kde-drkonqi_PORT= sysutils/plasma${_KDE_VERSION}-drkonqi
-kde-drkonqi_PATH= ${KDE_PREFIX}/lib/libexec/drkonqi
-
-kde-hotkeys_PORT= devel/plasma${_KDE_VERSION}-khotkeys
-kde-hotkeys_LIB= libkhotkeysprivate.so.5
-
kde-infocenter_PORT= sysutils/plasma${_KDE_VERSION}-kinfocenter
kde-infocenter_PATH= ${KDE_PREFIX}/bin/kinfocenter
@@ -693,12 +698,8 @@ kde-kde-gtk-config_PATH= ${KDE_PREFIX}/lib/kconf_update_bin/gtk_theme
kde-kdeplasma-addons_PORT= x11-toolkits/plasma${_KDE_VERSION}-kdeplasma-addons
kde-kdeplasma-addons_LIB= libplasmapotdprovidercore.so
-kde-kgamma5_PORT5= x11/plasma${_KDE_VERSION}-kgamma5
-kde-kgamma5_PORT6= x11/plasma${_KDE_VERSION}-kgamma
-kde-kgamma5_PORT= ${kde-kgamma5_PORT${_KDE_VERSION}}
-kde-kgamma5_PATH5= ${QT_PLUGINDIR}/plasma/kcms/systemsettings/kcm_kgamma.so
-kde-kgamma5_PATH6= ${QT_PLUGINDIR}/plasma/kcms/systemsettings_qwidgets/kcm_kgamma.so
-kde-kgamma5_PATH= ${kde-kgamma5_PATH${_KDE_VERSION}}
+kde-kgamma_PORT= x11/plasma${_KDE_VERSION}-kgamma
+kde-kgamma_PATH= ${QT_PLUGINDIR}/plasma/kcms/systemsettings_qwidgets/kcm_kgamma.so
kde-kmenuedit_PORT= sysutils/plasma${_KDE_VERSION}-kmenuedit
kde-kmenuedit_PATH= ${KDE_PREFIX}/bin/kmenuedit
@@ -712,22 +713,17 @@ kde-kscreenlocker_LIB= libKScreenLocker.so
kde-ksshaskpass_PORT= security/plasma${_KDE_VERSION}-ksshaskpass
kde-ksshaskpass_PATH= ${KDE_PREFIX}/bin/ksshaskpass
-kde-ksysguard_PORT= sysutils/plasma${_KDE_VERSION}-ksysguard
-kde-ksysguard_PATH= ${KDE_PREFIX}/bin/ksysguard
-
kde-ksystemstats_PORT= sysutils/plasma${_KDE_VERSION}-ksystemstats
kde-ksystemstats_PATH= ${KDE_PREFIX}/bin/ksystemstats
kde-kwallet-pam_PORT= security/plasma${_KDE_VERSION}-kwallet-pam
-kde-kwallet-pam_PATH5= ${KDE_PREFIX}/lib/pam_kwallet5.so
-kde-kwallet-pam_PATH6= ${KDE_PREFIX}/lib/security/pam_kwallet5.so
-kde-kwallet-pam_PATH= ${kde-kwallet-pam_PATH${_KDE_VERSION}}
-
-kde-kwayland-integration_PORT= x11/plasma${_KDE_VERSION}-kwayland-integration
-kde-kwayland-integration_PATH= ${QT_PLUGINDIR}/kf${_KDE_VERSION}/kwindowsystem/KF5WindowSystemKWaylandPlugin.so
+kde-kwallet-pam_PATH= ${KDE_PREFIX}/lib/pam_kwallet5.so
kde-kwin_PORT= x11-wm/plasma${_KDE_VERSION}-kwin
-kde-kwin_PATH= ${KDE_PREFIX}/bin/kwin_x11
+kde-kwin_PATH= ${KDE_PREFIX}/bin/kwin_wayland
+
+kde-kwin-x11_PORT= x11-wm/plasma${_KDE_VERSION}-kwin-x11
+kde-kwin-x11_PATH= ${KDE_PREFIX}/bin/kwin_x11
kde-kwrited_PORT= devel/plasma${_KDE_VERSION}-kwrited
kde-kwrited_PATH= ${QT_PLUGINDIR}/kf${_KDE_VERSION}/kded/kwrited.so
@@ -741,14 +737,14 @@ kde-libksysguard_LIB6= libKSysGuardSystemStats.so
kde-libksysguard_LIB= ${kde-libksysguard_LIB${_KDE_VERSION}}
kde-milou_PORT= deskutils/plasma${_KDE_VERSION}-milou
-kde-milou_PATH5= ${KDE_PREFIX}/lib/libmilou.so.5
-kde-milou_PATH6= ${QT_QMLDIR}/org/kde/milou/libmilouqmlplugin.so
-kde-milou_PATH= ${kde-milou_PATH${_KDE_VERSION}}
+kde-milou_PATH= ${QT_QMLDIR}/org/kde/milou/libmilouqmlplugin.so
+
+kde-ocean-sound-theme_PORT= audio/plasma${_KDE_VERSION}-ocean-sound-theme
+kde-ocean-sound-theme_PATH= ${KDE_PREFIX}/share/sounds/ocean/index.theme
+kde-ocean-sound-theme_TYPE= run
kde-oxygen_PORT= x11-themes/plasma${_KDE_VERSION}-oxygen
-kde-oxygen_PATH5= ${QT_PLUGINDIR}/styles/oxygen.so
-kde-oxygen_PATH6= ${QT_PLUGINDIR}/kstyle_config/kstyle_oxygen_config.so
-kde-oxygen_PATH= ${kde-oxygen_PATH${_KDE_VERSION}}
+kde-oxygen_PATH= ${QT_PLUGINDIR}/kstyle_config/kstyle_oxygen_config.so
kde-plasma-browser-integration_PORT= www/plasma${_KDE_VERSION}-plasma-browser-integration
kde-plasma-browser-integration_PATH= ${KDE_PREFIX}/bin/plasma-browser-integration-host
@@ -757,14 +753,10 @@ kde-plasma-desktop_PORT= x11/plasma${_KDE_VERSION}-plasma-desktop
kde-plasma-desktop_PATH= ${KDE_PREFIX}/bin/kaccess
kde-plasma-disks_PORT= sysutils/plasma${_KDE_VERSION}-plasma-disks
-kde-plasma-disks_PATH5= ${KDE_PREFIX}/lib/libexec/kauth/kded-smart-helper
-kde-plasma-disks_PATH6= ${KDE_PREFIX}/lib/libexec/kf6/kauth/kded-smart-helper
-kde-plasma-disks_PATH= ${kde-plasma-disks_PATH${_KDE_VERSION}}
+kde-plasma-disks_PATH= ${KDE_PREFIX}/lib/libexec/kf6/kauth/kded-smart-helper
kde-plasma-integration_PORT= x11/plasma${_KDE_VERSION}-plasma-integration
-kde-plasma-integration_PATH5= ${QT_PLUGINDIR}/platformthemes/KDEPlasmaPlatformTheme.so
-kde-plasma-integration_PATH6= ${QT_PLUGINDIR}/platformthemes/KDEPlasmaPlatformTheme6.so
-kde-plasma-integration_PATH= ${kde-plasma-integration_PATH${_KDE_VERSION}}
+kde-plasma-integration_PATH= ${QT_PLUGINDIR}/platformthemes/KDEPlasmaPlatformTheme6.so
kde-plasma-pa_PORT= audio/plasma${_KDE_VERSION}-plasma-pa
kde-plasma-pa_PATH= ${QT_PLUGINDIR}/plasma/kcms/systemsettings/kcm_pulseaudio.so
@@ -784,12 +776,20 @@ kde-polkit-kde-agent-1_PATH= ${KDE_PREFIX}/lib/libexec/polkit-kde-authentication
kde-powerdevil_PORT= sysutils/plasma${_KDE_VERSION}-powerdevil
kde-powerdevil_LIB= libpowerdevilcore.so
-kde-systemsettings_PORT= sysutils/plasma${_KDE_VERSION}-systemsettings
-kde-systemsettings_PATH5= ${KDE_PREFIX}/bin/systemsettings5
-kde-systemsettings_PATH6= ${KDE_PREFIX}/bin/systemsettings
-kde-systemsettings_PATH= ${kde-systemsettings_PATH${_KDE_VERSION}}
+kde-print-manager_PORT= print/plasma${_KDE_VERSION}-print-manager
+kde-print-manager_PATH= ${KDE_PREFIX}/bin/kde-print-queue
+kde-print-manager_TYPE= run
+kde-spectacle_PORT= graphics/plasma${_KDE_VERSION}-spectacle
+kde-spectacle_PATH= ${KDE_PREFIX}/bin/spectacle
+kde-spectacle_TYPE= run
+kde-systemmonitor_PORT= sysutils/plasma${_KDE_VERSION}-plasma-systemmonitor
+kde-systemmonitor_PATH= ${KDE_PREFIX}/bin/plasma-systemmonitor
+kde-systemmonitor_TYPE= run
+
+kde-systemsettings_PORT= sysutils/plasma${_KDE_VERSION}-systemsettings
+kde-systemsettings_PATH= ${KDE_PREFIX}/bin/systemsettings
kde-xdg-desktop-portal-kde_PORT= deskutils/plasma${_KDE_VERSION}-xdg-desktop-portal-kde
kde-xdg-desktop-portal-kde_PATH= ${KDE_PREFIX}/lib/libexec/xdg-desktop-portal-kde
@@ -797,9 +797,14 @@ kde-xdg-desktop-portal-kde_PATH= ${KDE_PREFIX}/lib/libexec/xdg-desktop-portal-kd
kde-plasma5support_PORT= devel/plasma${_KDE_VERSION}-plasma5support
kde-plasma5support_LIB= libPlasma5Support.so
-kde-kirigami-addons_PORT5= x11-toolkits/kirigami-addons
-kde-kirigami-addons_PORT6= x11-toolkits/kirigami-addons-devel
-kde-kirigami-addons_PORT= ${kde-kirigami-addons_PORT${_KDE_VERSION}}
+kde-qqc2-breeze-style_PORT= x11-themes/plasma${_KDE_VERSION}-qqc2-breeze-style
+kde-qqc2-breeze-style_PATH= ${QT_PLUGINDIR}/kf${_KDE_VERSION}/kirigami/platform/org.kde.breeze.so
+
+kde-sddm-kcm_PORT= deskutils/plasma${_KDE_VERSION}-sddm-kcm
+kde-sddm-kcm_PATH= ${QT_PLUGINDIR}/plasma/kcms/systemsettings/kcm_sddm.so
+kde-sddm-kcm_TYPE= run
+
+kde-kirigami-addons_PORT= x11-toolkits/kirigami-addons-qt${_KDE_VERSION}
kde-kirigami-addons_PATH= ${QT_QMLDIR}/org/kde/kirigamiaddons/components/libcomponentsplugin.so
kde-globalacceld_PORT= x11/plasma${_KDE_VERSION}-kglobalacceld
@@ -811,106 +816,103 @@ kde-libplasma_LIB= libPlasma.so
# ====================== pim5 components =======================================
kde-akonadicontacts_PORT= net/akonadi-contacts
-kde-akonadicontacts_LIB= libKPim5AkonadiContact.so
+kde-akonadicontacts_LIB= libKPim${_KDE_VERSION}AkonadiContactCore.so
kde-akonadiimportwizard_PORT= deskutils/akonadi-import-wizard
-kde-akonadiimportwizard_LIB= libKPim5ImportWizard.so
+kde-akonadiimportwizard_LIB= libKPim${_KDE_VERSION}ImportWizard.so
kde-akonadimime_PORT= net/akonadi-mime
-kde-akonadimime_LIB= libKPim5AkonadiMime.so
-
-kde-akonadinotes_PORT= net/akonadi-notes
-kde-akonadinotes_LIB= libKPim5AkonadiNotes.so
+kde-akonadimime_LIB= libKPim${_KDE_VERSION}AkonadiMime.so
kde-akonadicalendar_PORT= net/akonadi-calendar
-kde-akonadicalendar_LIB= libKPim5AkonadiCalendar.so
+kde-akonadicalendar_LIB= libKPim${_KDE_VERSION}AkonadiCalendar.so
kde-akonadisearch_PORT= net/akonadi-search
-kde-akonadisearch_LIB= libKPim5AkonadiSearchCore.so
+kde-akonadisearch_LIB= libKPim${_KDE_VERSION}AkonadiSearchCore.so
kde-calendarsupport_PORT= net/calendarsupport
-kde-calendarsupport_LIB= libKPim5CalendarSupport.so
+kde-calendarsupport_LIB= libKPim${_KDE_VERSION}CalendarSupport.so
kde-calendarutils_PORT= net/kcalutils
-kde-calendarutils_LIB= libKPim5CalendarUtils.so
+kde-calendarutils_LIB= libKPim${_KDE_VERSION}CalendarUtils.so
kde-eventviews_PORT= net/eventviews
-kde-eventviews_LIB= libKPim5EventViews.so
+kde-eventviews_LIB= libKPim${_KDE_VERSION}EventViews.so
kde-gapi_PORT= net/libkgapi
-kde-gapi_LIB= libKPim5GAPIBlogger.so
+kde-gapi_LIB= libKPim${_KDE_VERSION}GAPIBlogger.so
kde-grantleetheme_PORT= deskutils/grantleetheme
-kde-grantleetheme_LIB= libKPim5GrantleeTheme.so
+kde-grantleetheme_LIB= libKPim${_KDE_VERSION}GrantleeTheme.so
kde-gravatar_PORT= net/libgravatar
-kde-gravatar_LIB= libKPim5Gravatar.so
+kde-gravatar_LIB= libKPim${_KDE_VERSION}Gravatar.so
kde-identitymanagement_PORT= net/kidentitymanagement
-kde-identitymanagement_LIB= libKPim5IdentityManagement.so
+kde-identitymanagement_LIB= libKPim${_KDE_VERSION}IdentityManagementCore.so
kde-imap_PORT= net/kimap
-kde-imap_LIB= libKPim5IMAP.so
+kde-imap_LIB= libKPim${_KDE_VERSION}IMAP.so
kde-incidenceeditor_PORT= net/incidenceeditor
-kde-incidenceeditor_LIB= libKPim5IncidenceEditor.so
+kde-incidenceeditor_LIB= libKPim${_KDE_VERSION}IncidenceEditor.so
kde-kdepim-addons_PORT= deskutils/kdepim-addons
-kde-kdepim-addons_PATH= ${QT_PLUGINDIR}/pim5/contacteditor/editorpageplugins/cryptopageplugin.so
+kde-kdepim-addons_PATH= ${QT_PLUGINDIR}/pim${_KDE_VERSION}/contacteditor/editorpageplugins/cryptopageplugin.so
-kde-kdepim-runtime5_PORT= deskutils/kdepim-runtime
-kde-kdepim-runtime5_PATH= ${KDE_PREFIX}/bin/gidmigrator
+kde-kdepim-runtime_PORT= deskutils/kdepim-runtime
+kde-kdepim-runtime_PATH= ${KDE_PREFIX}/bin/gidmigrator
kde-kitinerary_PORT= net/kitinerary
-kde-kitinerary_LIB= libKPim5Itinerary.so
+kde-kitinerary_LIB= libKPim${_KDE_VERSION}Itinerary.so
kde-kontactinterface_PORT= net/kontactinterface
-kde-kontactinterface_LIB= libKPim5KontactInterface.so
+kde-kontactinterface_LIB= libKPim${_KDE_VERSION}KontactInterface.so
kde-kpkpass_PORT= security/kpkpass
-kde-kpkpass_LIB= libKPim5PkPass.so
+kde-kpkpass_LIB= libKPim${_KDE_VERSION}PkPass.so
kde-ksmtp_PORT= net/ksmtp
-kde-ksmtp_LIB= libKPim5SMTP.so
+kde-ksmtp_LIB= libKPim${_KDE_VERSION}SMTP.so
kde-ldap_PORT= net/kldap
-kde-ldap_LIB= libKPim5Ldap.so
+kde-ldap_LIB= libKPim${_KDE_VERSION}LdapCore.so
kde-libkdepim_PORT= deskutils/libkdepim
-kde-libkdepim_LIB= libKPim5Libkdepim.so
+kde-libkdepim_LIB= libKPim${_KDE_VERSION}Libkdepim.so
kde-libkleo_PORT= security/libkleo
-kde-libkleo_LIB= libKPim5Libkleo.so
+kde-libkleo_LIB= libKPim${_KDE_VERSION}Libkleo.so
kde-libksieve_PORT= net/libksieve
-kde-libksieve_LIB= libKPim5KSieve.so
+kde-libksieve_LIB= libKPim${_KDE_VERSION}KSieve.so
kde-mailcommon_PORT= net/mailcommon
-kde-mailcommon_LIB= libKPim5MailCommon.so
+kde-mailcommon_LIB= libKPim${_KDE_VERSION}MailCommon.so
kde-mailimporter_PORT= net/mailimporter
-kde-mailimporter_LIB= libKPim5MailImporter.so
+kde-mailimporter_LIB= libKPim${_KDE_VERSION}MailImporter.so
kde-mailtransport_PORT= net/kmailtransport
-kde-mailtransport_LIB= libKPim5MailTransport.so
+kde-mailtransport_LIB= libKPim${_KDE_VERSION}MailTransport.so
kde-mbox_PORT= net/kmbox
-kde-mbox_LIB= libKPim5Mbox.so
+kde-mbox_LIB= libKPim${_KDE_VERSION}Mbox.so
kde-messagelib_PORT= net/messagelib
-kde-messagelib_LIB= libKPim5MessageList.so
+kde-messagelib_LIB= libKPim${_KDE_VERSION}MessageList.so
kde-mime_PORT= net/kmime
-kde-mime_LIB= libKPim5Mime.so
+kde-mime_LIB= libKPim${_KDE_VERSION}Mime.so
kde-pimcommon_PORT= net/pimcommon
-kde-pimcommon_LIB= libKPim5PimCommon.so
+kde-pimcommon_LIB= libKPim${_KDE_VERSION}PimCommon.so
kde-pimtextedit_PORT= net/kpimtextedit
-kde-pimtextedit_LIB= libKPim5TextEdit.so
+kde-pimtextedit_LIB= libKPim${_KDE_VERSION}TextEdit.so
kde-tnef_PORT= net/ktnef
-kde-tnef_LIB= libKPim5Tnef.so
+kde-tnef_LIB= libKPim${_KDE_VERSION}Tnef.so
kde-ktextaddons_PORT= devel/ktextaddons
kde-ktextaddons_LIB= libKF${_KDE_VERSION}TextAutoCorrectionCore.so
@@ -937,9 +939,6 @@ kde-kmail_PATH= ${KDE_PREFIX}/bin/kmail
kde-kmail-account-wizard_PORT= deskutils/kmail-account-wizard
kde-kmail-account-wizard_PATH= ${KDE_PREFIX}/bin/accountwizard
-kde-knotes_PORT= deskutils/knotes
-kde-knotex_PATH= ${KDE_PREFIX}/bin/knotes
-
kde-kontact_PORT= deskutils/kontact
kde-kontact_PATH= ${KDE_PREFIX}/bin/kontact
@@ -949,50 +948,50 @@ kde-korganizer_PATH= ${KDE_PREFIX}/bin/korganizer
kde-mbox-importer_PORT= deskutils/mbox-importer
kde-mbox-importer_PATH= ${KDE_PREFIX}/bin/mboximporter
+kde-mimetreeparser_PORT= net/mimetreeparser
+kde-mimetreeparser_LIB= libKPim${_KDE_VERSION}MimeTreeParserCore.so
+
kde-pim-data-exporter_PORT= deskutils/pim-data-exporter
kde-pim-data-exporter_PATH= ${KDE_PREFIX}/bin/pimdataexporter
# ====================== end of pim5 components ================================
# ====================== multiversion component ================================
-kde-akonadi5_PORT= databases/akonadi
-kde-akonadi5_LIB= libKPim5AkonadiPrivate.so
+kde-akonadi_PORT= databases/akonadi
+kde-akonadi_LIB= libKPim${_KDE_VERSION}AkonadiPrivate.so
-kde-baloo-widgets5_PORT= sysutils/baloo-widgets
-kde-baloo-widgets5_LIB= libKF${_KDE_VERSION}BalooWidgets.so
+kde-baloo-widgets_PORT= sysutils/baloo-widgets
+kde-baloo-widgets_LIB= libKF${_KDE_VERSION}BalooWidgets.so
-kde-kate5_PORT= editors/kate
-kde-kate5_PATH= ${QT_PLUGINDIR}/ktexteditor/katebacktracebrowserplugin.so
+kde-kate_PORT= editors/kate
+kde-kate_PATH= ${QT_PLUGINDIR}/ktexteditor/katebacktracebrowserplugin.so
-kde-libkcddb5_PORT= audio/libkcddb
-kde-libkcddb5_LIB= libKF${_KDE_VERSION}Cddb.so
+kde-libkcddb_PORT= audio/libkcddb
+kde-libkcddb_LIB= libKCddb${_KDE_VERSION}.so
-kde-libkcompactdisc5_PORT= audio/libkcompactdisc
-kde-libkcompactdisc5_LIB= libKF${_KDE_VERSION}CompactDisc.so
+kde-libkcompactdisc_PORT= audio/libkcompactdisc
+kde-libkcompactdisc_LIB= libKF${_KDE_VERSION}CompactDisc.so
-kde-libkdcraw5_PORT= graphics/libkdcraw@qt${_KDE_VERSION}
-kde-libkdcraw5_LIB= libKF${_KDE_VERSION}KDcraw.so
+kde-libkdcraw_PORT= graphics/libkdcraw@qt${_KDE_VERSION}
+kde-libkdcraw_LIB5= libKF${_KDE_VERSION}KDcraw.so
+kde-libkdcraw_LIB6= libKDcrawQt${_KDE_VERSION}.so
+kde-libkdcraw_LIB= ${kde-libkdcraw_LIB${_KDE_VERSION}}
-kde-libkdegames5_PORT= games/libkdegames
-kde-libkdegames5_LIB= libKF${_KDE_VERSION}KDEGames.so
+kde-libkdegames_PORT= games/libkdegames
+kde-libkdegames_LIB= libKDEGames${_KDE_VERSION}.so
-kde-libkeduvocdocument5_PORT= misc/libkeduvocdocument
-kde-libkeduvocdocument5_LIB= libKEduVocDocument.so
+kde-libkeduvocdocument_PORT= misc/libkeduvocdocument
+kde-libkeduvocdocument_LIB= libKEduVocDocument.so
-kde-libkexiv2_PORT5= graphics/libkexiv2
-kde-libkexiv2_PORT6= graphics/libkexiv2-devel
-kde-libkexiv2_PORT= ${kde-libkexiv2_PORT${_KDE_VERSION}}
+kde-libkexiv2_PORT= graphics/libkexiv2@qt${_KDE_VERSION}
kde-libkexiv2_LIB5= libKF${_KDE_VERSION}KExiv2.so
kde-libkexiv2_LIB6= libKExiv2Qt${_KDE_VERSION}.so
kde-libkexiv2_LIB= ${kde-libkexiv2_LIB${_KDE_VERSION}}
-kde-libkipi5_PORT= graphics/libkipi
-kde-libkipi5_LIB= libKF${_KDE_VERSION}Kipi.so
-
-kde-libksane5_PORT= graphics/libksane
-kde-libksane5_LIB= libKF${_KDE_VERSION}Sane.so
+kde-libksane_PORT= graphics/libksane
+kde-libksane_LIB= libKSaneWidgets${_KDE_VERSION}.so
-kde-marble5_PORT= astro/marble
-kde-marble5_LIB= libmarblewidget-qt5.so
+kde-marble_PORT= astro/marble
+kde-marble_LIB= libmarblewidget-qt6.so
kde-kpublictransport_PORT= devel/kpublictransport
kde-kpublictransport_LIB= libKPublicTransport.so
@@ -1000,29 +999,21 @@ kde-kpublictransport_LIB= libKPublicTransport.so
kde-kosm_PORT= astro/kosmindoormap
kde-kosm_LIB= libKOSM.so
-kde-okular5_PORT= graphics/okular
-kde-okular5_LIB= libOkular5Core.so
+kde-okular_PORT= graphics/okular
+kde-okular_LIB= libOkular${_KDE_VERSION}Core.so
kde-phonon_PORT= multimedia/phonon@${_QT_RELNAME}
kde-phonon_LIB= libphonon4${_QT_RELNAME}.so
-kde-phonon-backend_PORT= multimedia/phonon-vlc@${_QT_RELNAME}
-kde-phonon-backend_PATH= ${QT_PLUGINDIR}/phonon4${_QT_RELNAME}_backend/phonon_vlc_${_QT_RELNAME}.so
-# ====================== end of multiversion components ========================
+kde-phonon-mpv_PORT= multimedia/phonon-mpv
+kde-phonon-mpv_PATH= ${QT_PLUGINDIR}/phonon4${_QT_RELNAME}_backend/phonon_mpv_${_QT_RELNAME}.so
+kde-phonon-mpv_TYPE= run
-# ====================== select the proper multiversion component ==============
-. for comp in ${_USE_KDE_BOTH}
-kde-${comp}_PORT= ${kde-${comp}${_KDE_VERSION}_PORT}
-. if defined(kde-${comp}${_KDE_VERSION}_LIB)
-kde-${comp}_LIB= ${kde-${comp}${_KDE_VERSION}_LIB}
-. else
-. if defined(kde-${comp}${_KDE_VERSION}_PATH})
-kde-${comp}_PATH= ${kde-${comp}${_KDE_VERSION}_LIB}
-. endif
-# If neither is defined, this gets caught below when checking components
-. endif
-. endfor
-#===============================================================================
+kde-phonon-vlc_PORT= multimedia/phonon-vlc@${_QT_RELNAME}
+kde-phonon-vlc_PATH= ${QT_PLUGINDIR}/phonon4${_QT_RELNAME}_backend/phonon_vlc_${_QT_RELNAME}.so
+kde-phonon-vlc_TYPE= run
+
+# ====================== end of multiversion components ========================
# end of component list ########################################################
diff --git a/Mk/Uses/kmod.mk b/Mk/Uses/kmod.mk
index a28077e67697..36bc49462fdf 100644
--- a/Mk/Uses/kmod.mk
+++ b/Mk/Uses/kmod.mk
@@ -25,6 +25,8 @@ IGNORE= requires kernel source files in SRC_BASE=${SRC_BASE}
CATEGORIES+= kld
+_OS_SUFX?= .${OSVERSION}
+
PIE_UNSAFE= kernel modules are not executable
SSP_UNSAFE= kernel module supports SSP natively
diff --git a/Mk/Uses/lazarus.mk b/Mk/Uses/lazarus.mk
index ef5569ab8eb9..945fb32e55a5 100644
--- a/Mk/Uses/lazarus.mk
+++ b/Mk/Uses/lazarus.mk
@@ -2,11 +2,14 @@
#
# Feature: lazarus
# Usage: USES=lazarus
-# Valid ARGS: (none), gtk2, qt5, qt6, flavors
+# Valid ARGS: (none), gtk2, gtk3, qt5, qt6, flavors
#
# (none) - This automatically build lazarus-app with gtk2 interface
#
# gtk2 - This automatically build lazarus-app with gtk2 interface
+#
+# gtk3 - This automatically build lazarus-app with gtk3 interface (only
+# devel version)
#
# qt5 - This automatically build lazarus-app with qt5 interface
#
@@ -18,6 +21,11 @@
# defined the following:
#
# NO_LAZBUILD= yes
+#
+# If the port needs lazarus devel version instead of release version as build
+# dependency, you can defined the following:
+#
+# WANT_LAZARUS_DEVEL= yes
#
# Variables for ports:
#
@@ -44,20 +52,28 @@ LAZARUS_Include_MAINTAINER= acm@FreeBSD.org
_INCLUDE_USES_LAZARUS_MK= yes
+. if empty(lazarus_ARGS)
+lazarus_ARGS= gtk2
+. endif
+
. if defined(DEFAULT_LAZARUS_VER)
WARNING+= "DEFAULT_LAZARUS_VER is defined, consider using DEFAULT_VERSIONS=lazarus=${DEFAULT_LAZARUS_VER} instead"
. endif
-. if ${lazarus_ARGS:Ngtk2:Nqt5:Nqt6:Nflavors}
-IGNORE= Unknown argument for USES=lazarus: ${lazarus_ARGS:Ngtk2:Nqt5:Nqt6:Nflavors}
+. if ${lazarus_ARGS:Ngtk2:Ngtk3:Nqt5:Nqt6:Nflavors}
+IGNORE= Unknown argument for USES=lazarus: ${lazarus_ARGS:Ngtk2:Ngtk3:Nqt5:Nqt6:Nflavors}
. endif
. if !empty(LAZARUS_NO_FLAVORS)
-. if ${LAZARUS_NO_FLAVORS:Ngtk2:Nqt5:Nqt6}
-IGNORE= Unknown argument for LAZARUS_NO_FLAVORS: ${LAZARUS_NO_FLAVORS:Ngtk2:Nqt5:Nqt6}
+. if ${LAZARUS_NO_FLAVORS:Ngtk2:Ngtk3:Nqt5:Nqt6}
+IGNORE= Unknown argument for LAZARUS_NO_FLAVORS: ${LAZARUS_NO_FLAVORS:Ngtk2:Ngtk3:Nqt5:Nqt6}
. endif
. endif
+. if (empty(WANT_LAZARUS_DEVEL) && ${lazarus_ARGS:Mgtk3})
+IGNORE= No valid argument for USES=lazarus: gtk3. Consider using gtk2, qt5, qt6 or flavors instead
+. endif
+
DEFAULT_LAZARUS_VER= ${LAZARUS_DEFAULT}
DEFAULT_FPC_VER= ${FPC_DEFAULT}
# When adding a version, please keep the comment in
@@ -68,13 +84,10 @@ LAZARUS_ARCH= ${ARCH:S/amd64/x86_64/}
LAZARUS_PROJECT_FILES?= # empty
LAZARUS_DIR?= ${LOCALBASE}/share/lazarus-${LAZARUS_VER}
-ONLY_FOR_ARCHS= i386 amd64
-ONLY_FOR_ARCHS_REASON= not yet ported to anything other than i386 and amd64
-
-. if !defined(WANT_FPC_DEVEL)
-FPC_DEVELSUFFIX= #
-. else
+. if (defined(WANT_FPC_DEVEL) && !empty(WANT_FPC_DEVEL)) || ${ARCH:Maarch64}
FPC_DEVELSUFFIX= -devel
+. else
+FPC_DEVELSUFFIX= #
. endif
BUILDNAME= ${LAZARUS_ARCH}-${OPSYS:tl}
@@ -84,7 +97,13 @@ MKINSTDIR= ${LOCALBASE}/lib/fpc/${FPC_VER}/fpmkinst/${BUILDNAME}
BUILD_DEPENDS+= ${LOCALBASE}/bin/as:devel/binutils \
${MKINSTDIR}/utils-lexyacc.fpm:lang/fpc${FPC_DEVELSUFFIX}
+. if (defined(WANT_LAZARUS_DEVEL) && !empty(WANT_LAZARUS_DEVEL)) || ${ARCH:Maarch64}
+LAZARUS_DEVELSUFFIX= -devel
+LAZARUS_FLAVORS= gtk2 gtk3 qt5 qt6
+. else
+LAZARUS_DEVELSUFFIX= #
LAZARUS_FLAVORS= gtk2 qt5 qt6
+. endif
. if ${lazarus_ARGS:Mflavors}
. if defined(LAZARUS_NO_FLAVORS)
@@ -96,18 +115,12 @@ FLAVORS:= ${LAZARUS_FLAVORS}
. endif
. if empty(FLAVOR)
-FLAVOR= ${FLAVORS:[1]}
+FLAVOR= ${FLAVORS:[1]}
. endif
. endif
LAZARUS_PKGNAMESUFFIX= -${FLAVOR}
-. if !defined(WANT_LAZARUS_DEVEL)
-LAZARUS_DEVELSUFFIX= #
-. else
-LAZARUS_DEVELSUFFIX= -devel
-. endif
-
. if ${lazarus_ARGS:Mgtk2} || ${FLAVOR} == gtk2
LIB_DEPENDS+= libglib-2.0.so:devel/glib20 \
libgtk-x11-2.0.so:x11-toolkits/gtk20 \
@@ -118,6 +131,15 @@ LCL_PLATFORM= gtk2
BUILD_DEPENDS+= ${LCL_UNITS_DIR}/${LCL_PLATFORM}/interfaces.ppu:editors/lazarus${LAZARUS_DEVELSUFFIX}
. endif
+. if ${lazarus_ARGS:Mgtk3} || ${FLAVOR} == gtk3
+LIB_DEPENDS+= libglib-2.0.so:devel/glib20 \
+ libgtk-3.so:x11-toolkits/gtk30 \
+ libcairo.so:graphics/cairo \
+ libpango-1.0.so:x11-toolkits/pango
+LCL_PLATFORM= gtk3
+BUILD_DEPENDS+= ${LCL_UNITS_DIR}/${LCL_PLATFORM}/interfaces.ppu:editors/lazarus-gtk3${LAZARUS_DEVELSUFFIX}
+. endif
+
. if ${lazarus_ARGS:Mqt5} || ${FLAVOR} == qt5
LIB_DEPENDS+= libQt5Pas.so:x11-toolkits/qt5pas
LCL_PLATFORM= qt5
diff --git a/Mk/Uses/linux.mk b/Mk/Uses/linux.mk
index e098234fcbc5..99aa62704195 100644
--- a/Mk/Uses/linux.mk
+++ b/Mk/Uses/linux.mk
@@ -3,6 +3,7 @@
# Feature: linux:args
# Usage: USES=linux or USES=linux:args
# Valid args: c7 Depend on CentOS 7 packages (default)
+# rl9 Depend on Rocky Linux 9 packages
# Additional variables:
# USE_LINUX List of Linux packages to depend on.
# USE_LINUX_RPM When defined, additional variables and targets useful to Linux
@@ -26,6 +27,8 @@ _USES_POST+= linux
. if empty(linux_ARGS)
. if exists(${LINUXBASE}/etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7)
linux_ARGS= c7
+. elif exists(${LINUXBASE}/etc/pki/rpm-gpg/RPM-GPG-KEY-Rocky-9)
+linux_ARGS= rl9
. else
linux_ARGS= ${LINUX_DEFAULT}
. endif
@@ -33,112 +36,176 @@ linux_ARGS= ${LINUX_DEFAULT}
. if ${linux_ARGS} == c7
LINUX_DIST_VER?= 7.9.2009
+. elif ${linux_ARGS} == rl9
+LINUX_DIST_VER?= 9.6
. else
ERROR+= "Invalid Linux distribution: ${linux_ARGS}"
. endif
. ifndef ONLY_FOR_ARCHS
+. if ${linux_ARGS} == rl9
+ONLY_FOR_ARCHS= aarch64 amd64
+ONLY_FOR_ARCHS_REASON= Rocky Linux compatibility is only available on aarch64 and amd64
+. else
ONLY_FOR_ARCHS= aarch64 amd64 i386
-ONLY_FOR_ARCHS_REASON= Linux compatibility is only available on aarch64, amd64 and i386
+ONLY_FOR_ARCHS_REASON= CentOS Linux compatibility is only available on aarch64, amd64 and i386
+. endif
. endif
-_linux_c7_alsa-lib-devel= linux-c7-alsa-lib-devel>0:audio/linux-c7-alsa-lib-devel
+_linux_${linux_ARGS}_alsa-lib-devel= linux-${linux_ARGS}-alsa-lib-devel>0:audio/linux-${linux_ARGS}-alsa-lib-devel
_linux_${linux_ARGS}_alsa-plugins-oss= linux-${linux_ARGS}-alsa-plugins-oss>0:audio/linux-${linux_ARGS}-alsa-plugins-oss
_linux_${linux_ARGS}_alsa-plugins-pulseaudio=linux-${linux_ARGS}-alsa-plugins-pulseaudio>0:audio/linux-${linux_ARGS}-alsa-plugins-pulseaudio
_linux_${linux_ARGS}_alsalib= linux-${linux_ARGS}-alsa-lib>0:audio/linux-${linux_ARGS}-alsa-lib
-_linux_c7_at-spi2-atk= linux-c7-at-spi2-atk>0:accessibility/linux-c7-at-spi2-atk
-_linux_c7_at-spi2-core= linux-c7-at-spi2-core>0:accessibility/linux-c7-at-spi2-core
+_linux_rl9_aom= linux-rl9-aom-libs>0:multimedia/linux-rl9-aom
+_linux_${linux_ARGS}_at-spi2-atk= linux-${linux_ARGS}-at-spi2-atk>0:accessibility/linux-${linux_ARGS}-at-spi2-atk
+_linux_${linux_ARGS}_at-spi2-core= linux-${linux_ARGS}-at-spi2-core>0:accessibility/linux-${linux_ARGS}-at-spi2-core
_linux_${linux_ARGS}_atk= linux-${linux_ARGS}-atk>0:accessibility/linux-${linux_ARGS}-atk
_linux_${linux_ARGS}_avahi-libs= linux-${linux_ARGS}-avahi-libs>0:net/linux-${linux_ARGS}-avahi-libs
_linux_c7_base= linux_base-c7>=7.6.1810_7:emulators/linux_base-c7
-_linux_c7_ca-certificates= linux-c7-ca-certificates>0:security/linux-c7-ca-certificates
+_linux_rl9_base= linux_base-rl9>=9.2:emulators/linux_base-rl9
+_linux_${linux_ARGS}_ca-certificates= linux-${linux_ARGS}-ca-certificates>0:security/linux-${linux_ARGS}-ca-certificates
_linux_${linux_ARGS}_cairo= linux-${linux_ARGS}-cairo>0:graphics/linux-${linux_ARGS}-cairo
-_linux_c7_cairo-gobject= linux-c7-cairo-gobject>0:graphics/linux-c7-cairo-gobject
+_linux_${linux_ARGS}_cairo-gobject= linux-${linux_ARGS}-cairo-gobject>0:graphics/linux-${linux_ARGS}-cairo-gobject
_linux_${linux_ARGS}_cups-libs= linux-${linux_ARGS}-cups-libs>0:print/linux-${linux_ARGS}-cups-libs
_linux_${linux_ARGS}_curl= linux-${linux_ARGS}-curl>0:ftp/linux-${linux_ARGS}-curl
_linux_${linux_ARGS}_cyrus-sasl2= linux-${linux_ARGS}-cyrus-sasl-lib>0:security/linux-${linux_ARGS}-cyrus-sasl2
_linux_${linux_ARGS}_dbuslibs= linux-${linux_ARGS}-dbus-libs>0:devel/linux-${linux_ARGS}-dbus-libs
_linux_${linux_ARGS}_devtools= linux-${linux_ARGS}-devtools>0:devel/linux-${linux_ARGS}-devtools
-_linux_c7_dosfstools= linux-c7-dosfstools>0:sysutils/linux-c7-dosfstools
+_linux_c7_dosfstools= linux-c7-dosfstools>0:filesystems/linux-c7-dosfstools
_linux_${linux_ARGS}_dri= linux-${linux_ARGS}-dri>0:graphics/linux-${linux_ARGS}-dri
_linux_${linux_ARGS}_elfutils-libelf= linux-${linux_ARGS}-elfutils-libelf>0:devel/linux-${linux_ARGS}-elfutils-libelf
-_linux_c7_elfutils-libs= linux-c7-elfutils-libs>0:devel/linux-c7-elfutils-libs
+_linux_${linux_ARGS}_elfutils-libs= linux-${linux_ARGS}-elfutils-libs>0:devel/linux-${linux_ARGS}-elfutils-libs
_linux_c7_expat-devel= linux-c7-expat-devel>0:textproc/linux-c7-expat-devel
_linux_${linux_ARGS}_expat= linux-${linux_ARGS}-expat>0:textproc/linux-${linux_ARGS}-expat
-_linux_c7_flac= linux-c7-flac-libs>0:audio/linux-c7-flac
+_linux_rl9_ffmpeg-libs= linux-rl9-ffmpeg-libs>0:multimedia/linux-rl9-ffmpeg
+_linux_${linux_ARGS}_flac= linux-${linux_ARGS}-flac-libs>0:audio/linux-${linux_ARGS}-flac
_linux_${linux_ARGS}_fontconfig= linux-${linux_ARGS}-fontconfig>0:x11-fonts/linux-${linux_ARGS}-fontconfig
-_linux_c7_freetype= linux-c7-freetype>0:print/linux-c7-freetype
-_linux_c7_fribidi= linux-c7-fribidi>0:converters/linux-c7-fribidi
+_linux_${linux_ARGS}_freetype= linux-${linux_ARGS}-freetype>0:print/linux-${linux_ARGS}-freetype
+_linux_${linux_ARGS}_fribidi= linux-${linux_ARGS}-fribidi>0:converters/linux-${linux_ARGS}-fribidi
_linux_${linux_ARGS}_gdkpixbuf2= linux-${linux_ARGS}-gdk-pixbuf2>0:graphics/linux-${linux_ARGS}-gdk-pixbuf2
+_linux_rl9_gnupg= linux-rl9-gnupg2>0:security/linux-rl9-gnupg
_linux_${linux_ARGS}_gnutls= linux-${linux_ARGS}-gnutls>0:security/linux-${linux_ARGS}-gnutls
-_linux_c7_graphite2= linux-c7-graphite2>0:graphics/linux-c7-graphite2
-_linux_c7_gsm= linux-c7-gsm>0:audio/linux-c7-gsm
+_linux_rl9_graphene= linux-rl9-graphene>0:graphics/linux-rl9-graphene
+_linux_${linux_ARGS}_graphite2= linux-${linux_ARGS}-graphite2>0:graphics/linux-${linux_ARGS}-graphite2
+_linux_${linux_ARGS}_gsm= linux-${linux_ARGS}-gsm>0:audio/linux-${linux_ARGS}-gsm
+_linux_rl9_gstreamer1= linux-rl9-gstreamer1>0:multimedia/linux-rl9-gstreamer1
+_linux_rl9_gstreamer1-libav= linux-rl9-gstreamer1-plugin-libav>0:multimedia/linux-rl9-gstreamer1-libav
_linux_${linux_ARGS}_gtk2= linux-${linux_ARGS}-gtk2>0:x11-toolkits/linux-${linux_ARGS}-gtk2
-_linux_c7_gtk3= linux-c7-gtk3>0:x11-toolkits/linux-c7-gtk3
-_linux_c7_harfbuzz= linux-c7-harfbuzz>0:print/linux-c7-harfbuzz
+_linux_${linux_ARGS}_gtk3= linux-${linux_ARGS}-gtk3>0:x11-toolkits/linux-${linux_ARGS}-gtk3
+_linux_${linux_ARGS}_harfbuzz= linux-${linux_ARGS}-harfbuzz>0:print/linux-${linux_ARGS}-harfbuzz
+_linux_rl9_highway= linux-rl9-highway>0:devel/linux-rl9-highway
_linux_${linux_ARGS}_icu= linux-${linux_ARGS}-icu>0:devel/linux-${linux_ARGS}-icu
-_linux_${linux_ARGS}_jasper= linux-${linux_ARGS}-jasper-libs>0:graphics/linux-${linux_ARGS}-jasper
-_linux_c7_jbigkit= linux-c7-jbigkit-libs>0:graphics/linux-c7-jbigkit
-_linux_${linux_ARGS}_jpeg= linux-${linux_ARGS}-jpeg>0:graphics/linux-${linux_ARGS}-jpeg
+_linux_${linux_ARGS}_imageformats-libs= linux-${linux_ARGS}-imageformats-libs>0:graphics/linux-${linux_ARGS}-imageformats-libs
_linux_c7_libaio= linux-c7-libaio>0:devel/linux-c7-libaio
+_linux_rl9_libassuan= linux-rl9-libassuan>0:security/linux-rl9-libassuan
_linux_${linux_ARGS}_libasyncns= linux-${linux_ARGS}-libasyncns>0:dns/linux-${linux_ARGS}-libasyncns
_linux_c7_libaudiofile= linux-c7-audiofile>0:audio/linux-c7-audiofile
_linux_c7_libcroco= linux-c7-libcroco>0:textproc/linux-c7-libcroco
-_linux_c7_libdrm= linux-c7-libdrm>0:graphics/linux-c7-libdrm
-_linux_c7_libepoxy= linux-c7-libepoxy>0:graphics/linux-c7-libepoxy
+_linux_${linux_ARGS}_libdrm= linux-${linux_ARGS}-libdrm>0:graphics/linux-${linux_ARGS}-libdrm
+_linux_${linux_ARGS}_libepoxy= linux-${linux_ARGS}-libepoxy>0:graphics/linux-${linux_ARGS}-libepoxy
+_linux_rl9_libevent= linux-rl9-libevent>0:devel/linux-rl9-libevent
_linux_${linux_ARGS}_libgcrypt= linux-${linux_ARGS}-libgcrypt>0:security/linux-${linux_ARGS}-libgcrypt
-_linux_${linux_ARGS}_libgfortran= linux-${linux_ARGS}-libgfortran>0:devel/linux-${linux_ARGS}-libgfortran
-_linux_c7_libglvnd= linux-c7-libglvnd>0:graphics/linux-c7-libglvnd
+_linux_${linux_ARGS}_libglvnd= linux-${linux_ARGS}-libglvnd>0:graphics/linux-${linux_ARGS}-libglvnd
_linux_${linux_ARGS}_libgpg-error= linux-${linux_ARGS}-libgpg-error>0:security/linux-${linux_ARGS}-libgpg-error
+_linux_rl9_libjxl= linux-rl9-libjxl>0:graphics/linux-rl9-libjxl
+_linux_rl9_libksba= linux-rl9-libksba>0:security/linux-rl9-libksba
+_linux_rl9_libnghttp2= linux-rl9-libnghttp2>0:www/linux-rl9-libnghttp2
_linux_${linux_ARGS}_libogg= linux-${linux_ARGS}-libogg>0:audio/linux-${linux_ARGS}-libogg
_linux_${linux_ARGS}_libpciaccess= linux-${linux_ARGS}-libpciaccess>0:devel/linux-${linux_ARGS}-libpciaccess
-_linux_c7_librsvg2= linux-c7-librsvg2>0:graphics/linux-c7-librsvg2
+_linux_${linux_ARGS}_librsvg2= linux-${linux_ARGS}-librsvg2>0:graphics/linux-${linux_ARGS}-librsvg2
+_linux_rl9_libsecret= linux-rl9-libsecret>0:security/linux-rl9-libsecret
+_linux_${linux_ARGS}_libsigc++20= linux-${linux_ARGS}-libsigc++20>0:devel/linux-${linux_ARGS}-libsigc++20
_linux_${linux_ARGS}_libsndfile= linux-${linux_ARGS}-libsndfile>0:audio/linux-${linux_ARGS}-libsndfile
-_linux_${linux_ARGS}_libssh2= linux-${linux_ARGS}-libssh2>0:security/linux-${linux_ARGS}-libssh2
+_linux_rl9_libssh= linux-rl9-libssh>0:security/linux-rl9-libssh
+_linux_c7_libssh2= linux-c7-libssh2>0:security/linux-c7-libssh2
+_linux_rl9_libstemmer= linux-rl9-libstemmer>=0:textproc/linux-rl9-libstemmer
_linux_${linux_ARGS}_libtasn1= linux-${linux_ARGS}-libtasn1>0:security/linux-${linux_ARGS}-libtasn1
_linux_${linux_ARGS}_libthai= linux-${linux_ARGS}-libthai>0:devel/linux-${linux_ARGS}-libthai
_linux_${linux_ARGS}_libtheora= linux-${linux_ARGS}-libtheora>0:multimedia/linux-${linux_ARGS}-libtheora
+_linux_${linux_ARGS}_libtool-ltdl= linux-${linux_ARGS}-libtool-ltdl>0:devel/linux-${linux_ARGS}-libtool-ltdl
+_linux_rl9_libtracker-sparql= linux-rl9-libtracker-sparql>0:databases/linux-rl9-libtracker-sparql
_linux_${linux_ARGS}_libunwind= linux-${linux_ARGS}-libunwind>0:devel/linux-${linux_ARGS}-libunwind
_linux_${linux_ARGS}_libv4l= linux-${linux_ARGS}-libv4l>0:multimedia/linux-${linux_ARGS}-libv4l
+_linux_rl9_libva= linux-rl9-libva>0:multimedia/linux-rl9-libva
+_linux_rl9_libvdpau= linux-rl9-libvdpau>0:multimedia/linux-rl9-libvdpau
_linux_${linux_ARGS}_libvorbis= linux-${linux_ARGS}-libvorbis>0:audio/linux-${linux_ARGS}-libvorbis
-_linux_c7_libxkbcommon= linux-c7-libxkbcommon>0:x11/linux-c7-libxkbcommon
+_linux_rl9_libvpx= linux-rl9-libvpx>0:multimedia/linux-rl9-libvpx
+_linux_${linux_ARGS}_libxkbcommon= linux-${linux_ARGS}-libxkbcommon>0:x11/linux-${linux_ARGS}-libxkbcommon
_linux_${linux_ARGS}_libxml2= linux-${linux_ARGS}-libxml2>0:textproc/linux-${linux_ARGS}-libxml2
-_linux_${linux_ARGS}_lttng-ust= linux-${linux_ARGS}-lttng-ust>0:sysutils/linux-${linux_ARGS}-lttng-ust
-_linux_c7_lz4= linux-c7-lz4>0:archivers/linux-c7-lz4
+_linux_${linux_ARGS}_libxslt= linux-${linux_ARGS}-libxslt>0:textproc/linux-${linux_ARGS}-libxslt
+_linux_rl9_lld= linux-rl9-llvm>0:devel/linux-rl9-lld
+_linux_rl9_lldb= linux-rl9-llvm>0:devel/linux-rl9-lldb
+_linux_rl9_llvm= linux-rl9-llvm>0:devel/linux-rl9-llvm
+_linux_c7_lttng-ust= linux-c7-lttng-ust>0:sysutils/linux-c7-lttng-ust
+_linux_${linux_ARGS}_lz4= linux-${linux_ARGS}-lz4>0:archivers/linux-${linux_ARGS}-lz4
_linux_c7_make= linux-c7-make>0:devel/linux-c7-make
-_linux_c7_nettle= linux-c7-nettle>0:security/linux-c7-nettle
+_linux_${linux_ARGS}_nettle= linux-${linux_ARGS}-nettle>0:security/linux-${linux_ARGS}-nettle
_linux_${linux_ARGS}_nspr= linux-${linux_ARGS}-nspr>0:devel/linux-${linux_ARGS}-nspr
_linux_${linux_ARGS}_nss= linux-${linux_ARGS}-nss>0:security/linux-${linux_ARGS}-nss
+_linux_rl9_npth= linux-rl9-npth>0:devel/linux-rl9-npth
_linux_c7_numactl-libs= linux-c7-numactl-libs>0:sysutils/linux-c7-numactl-libs
+_linux_rl9_ocl-icd= linux-rl9-ocl-icd>0:devel/linux-rl9-ocl-icd
_linux_${linux_ARGS}_openal-soft= linux-${linux_ARGS}-openal-soft>0:audio/linux-${linux_ARGS}-openal-soft
_linux_${linux_ARGS}_openldap= linux-${linux_ARGS}-openldap>0:net/linux-${linux_ARGS}-openldap
_linux_c7_openmotif= linux-c7-motif>0:x11-toolkits/linux-c7-openmotif
_linux_c7_openssl-devel= linux-c7-openssl-devel>0:security/linux-c7-openssl-devel
_linux_c7_openssl= ${_linux_c7_base}
-_linux_c7_p11-kit= linux-c7-p11-kit>0:security/linux-c7-p11-kit
+_linux_rl9_opus= linux-rl9-opus>0:audio/linux-rl9-opus
+_linux_rl9_orc= linux-rl9-orc>0:devel/linux-rl9-orc
+_linux_${linux_ARGS}_p11-kit= linux-${linux_ARGS}-p11-kit>0:security/linux-${linux_ARGS}-p11-kit
_linux_${linux_ARGS}_pango= linux-${linux_ARGS}-pango>0:x11-toolkits/linux-${linux_ARGS}-pango
_linux_${linux_ARGS}_pixman= linux-${linux_ARGS}-pixman>0:x11/linux-${linux_ARGS}-pixman
-_linux_${linux_ARGS}_png= linux-${linux_ARGS}-libpng>0:graphics/linux-${linux_ARGS}-png
_linux_${linux_ARGS}_pulseaudio-libs= linux-${linux_ARGS}-pulseaudio-libs>0:audio/linux-${linux_ARGS}-pulseaudio-libs
+_linux_rl9_pulseaudio-utils= linux-rl9-pulseaudio-utils>0:audio/linux-rl9-pulseaudio-utils
+_linux_rl9_python3= linux-rl9-python39>0:lang/linux-rl9-python3
_linux_c7_qt= linux-c7-qt>0:devel/linux-c7-qt
_linux_c7_qt-x11= linux-c7-qt-x11>0:x11-toolkits/linux-c7-qt-x11
_linux_c7_qtwebkit= linux-c7-qtwebkit>0:www/linux-c7-qtwebkit
+_linux_rl9_qt3d= linux-rl9-qt5-qt3d>0:graphics/linux-rl9-qt5-qt3d
+_linux_rl9_qtbase= linux-rl9-qt5-qtbase>0:devel/linux-rl9-qt5-qtbase
+_linux_rl9_qtconnectivity= linux-rl9-qt5-qtconnectivity>0:comms/linux-rl9-qt5-qtconnectivity
+_linux_rl9_qtdeclarative= linux-rl9-qt5-qtdeclarative>0:x11-toolkits/linux-rl9-qt5-qtdeclarative
+_linux_rl9_qtgraphicaleffects= linux-rl9-qt5-qtgraphicaleffects>0:graphics/linux-rl9-qt5-qtgraphicaleffects
+_linux_rl9_qtimageformats= linux-rl9-qt5-qtimageformats>0:graphics/linux-rl9-qt5-qtimageformats
+_linux_rl9_qtmultimedia= linux-rl9-qt5-qtmultimedia>0:multimedia/linux-rl9-qt5-qtmultimedia
+_linux_rl9_qtquickcontrols= linux-rl9-qt5-qtquickcontrols>0:x11-toolkits/linux-rl9-qt5-qtquickcontrols
+_linux_rl9_qtscript= linux-rl9-qt5-qtscript>0:devel/linux-rl9-qt5-qtscript
+_linux_rl9_qtsensors= linux-rl9-qt5-qtsensors>0:comms/linux-rl9-qt5-qtsensors
+_linux_rl9_qtserialbus= linux-rl9-qt5-qtserialbus>0:comms/linux-rl9-qt5-qtserialbus
+_linux_rl9_qtserialport= linux-rl9-qt5-qtserialport>0:comms/linux-rl9-qt5-qtserialport
+_linux_rl9_qtsvg= linux-rl9-qt5-qtsvg>0:graphics/linux-rl9-qt5-qtsvg
+_linux_rl9_qttools= linux-rl9-qt5-qttools>0:devel/linux-rl9-qt5-qttools
+_linux_rl9_qtwayland= linux-rl9-qt5-qtwayland>0:graphics/linux-rl9-qt5-qtwayland
+_linux_rl9_qtwebchannel= linux-rl9-qt5-qtwebchannel>0:www/linux-rl9-qt5-qtwebchannel
+_linux_rl9_qtwebsockets= linux-rl9-qt5-qtwebsockets>0:www/linux-rl9-qt5-qtwebsockets
+_linux_rl9_qtx11extras= linux-rl9-qt5-qtx11extras>0:x11/linux-rl9-qt5-qtx11extras
+_linux_rl9_qtxmlpatterns= linux-rl9-qt5-qtxmlpatterns>0:textproc/linux-rl9-qt5-qtxmlpatterns
_linux_${linux_ARGS}_sdl12= linux-${linux_ARGS}-sdl>0:devel/linux-${linux_ARGS}-sdl12
-_linux_${linux_ARGS}_sdlimage= linux-${linux_ARGS}-sdl_image>0:graphics/linux-${linux_ARGS}-sdl_image
-_linux_${linux_ARGS}_sdlmixer= linux-${linux_ARGS}-sdl_mixer>0:audio/linux-${linux_ARGS}-sdl_mixer
-_linux_${linux_ARGS}_sdlttf= linux-${linux_ARGS}-sdl_ttf>0:graphics/linux-${linux_ARGS}-sdl_ttf
-_linux_${linux_ARGS}_sqlite3= linux-${linux_ARGS}-sqlite>0:databases/linux-${linux_ARGS}-sqlite3
-_linux_c7_systemd-libs= linux-c7-systemd-libs>0:devel/linux-c7-systemd-libs
-_linux_${linux_ARGS}_tcl85= linux-${linux_ARGS}-tcl85>0:lang/linux-${linux_ARGS}-tcl85
+_linux_${linux_ARGS}_sdl12-extralibs= linux-${linux_ARGS}-sdl12-extralibs>0:misc/linux-${linux_ARGS}-sdl12-extralibs
+_linux_${linux_ARGS}_sdl20= linux-${linux_ARGS}-sdl20>0:devel/linux-${linux_ARGS}-sdl20
+_linux_${linux_ARGS}_sdl20-extralibs= linux-${linux_ARGS}-sdl20-extralibs>0:misc/linux-${linux_ARGS}-sdl20-extralibs
+_linux_rl9_shaderc= linux-rl9-shaderc>0:graphics/linux-rl9-shaderc
+_linux_rl9_spirv-tools= linux-rl9-spirv-tools>0:graphics/linux-rl9-spirv-tools
+_linux_c7_sqlite3= linux-c7-sqlite>0:databases/linux-c7-sqlite3
+_linux_rl9_sqlite3= ${_linux_rl9_base}
+_linux_${linux_ARGS}_strace= linux-${linux_ARGS}-strace>0:devel/linux-${linux_ARGS}-strace
+_linux_${linux_ARGS}_systemd-libs= linux-${linux_ARGS}-systemd-libs>0:devel/linux-${linux_ARGS}-systemd-libs
+_linux_c7_tcl85= linux-c7-tcl85>0:lang/linux-c7-tcl85
+_linux_rl9_tcl86= linux-rl9-tcl86>0:lang/linux-rl9-tcl86
_linux_${linux_ARGS}_tcp_wrappers-libs= linux-${linux_ARGS}-tcp_wrappers-libs>0:net/linux-${linux_ARGS}-tcp_wrappers-libs
-_linux_${linux_ARGS}_tiff= linux-${linux_ARGS}-libtiff>0:graphics/linux-${linux_ARGS}-tiff
-_linux_${linux_ARGS}_tk85= linux-${linux_ARGS}-tk85>0:x11-toolkits/linux-${linux_ARGS}-tk85
-_linux_c7_trousers= linux-c7-trousers>0:security/linux-c7-trousers
-_linux_${linux_ARGS}_userspace-rcu= linux-${linux_ARGS}-userspace-rcu>0:sysutils/linux-${linux_ARGS}-userspace-rcu
-_linux_c7_wayland= linux-c7-wayland>0:graphics/linux-c7-wayland
-_linux_c7_xcb-util= linux-c7-xcb-util>0:x11/linux-c7-xcb-util
-_linux_c7_xorglibs= linux-c7-xorg-libs>=7.7_7:x11/linux-c7-xorg-libs
+_linux_c7_tk85= linux-c7-tk85>0:x11-toolkits/linux-c7-tk85
+_linux_rl9_tk86= linux-rl9-tk86>0:x11-toolkits/linux-rl9-tk86
+_linux_${linux_ARGS}_trousers= linux-${linux_ARGS}-trousers>0:security/linux-${linux_ARGS}-trousers
+_linux_c7_userspace-rcu= linux-c7-userspace-rcu>0:sysutils/linux-c7-userspace-rcu
+_linux_rl9_vmaf= linux-rl9-vmaf>0:multimedia/linux-rl9-vmaf
+_linux_rl9_vulkan= linux-rl9-vulkan-loader>0:graphics/linux-rl9-vulkan
+_linux_${linux_ARGS}_wayland= linux-${linux_ARGS}-wayland>0:graphics/linux-${linux_ARGS}-wayland
+_linux_rl9_wget= linux-rl9-wget>0:ftp/linux-rl9-wget
+_linux_${linux_ARGS}_xcb-util= linux-${linux_ARGS}-xcb-util>0:x11/linux-${linux_ARGS}-xcb-util
+_linux_${linux_ARGS}_xorglibs= linux-${linux_ARGS}-xorg-libs>=7.7:x11/linux-${linux_ARGS}-xorg-libs
_linux_c7_zlib-devel= linux-c7-zlib-devel>0:devel/linux-c7-zlib-devel
+# special node for linux_libusb
+_linux_${linux_ARGS}_libusb= linux_libusb-${linux_ARGS}>0:devel/linux_libusb@${linux_ARGS}
USE_LINUX?= base
. for i in ${USE_LINUX}
@@ -172,6 +239,18 @@ MASTER_SITE_SUBDIR= altarch/${LINUX_DIST_VER}/os/aarch64/Packages/:DEFAULT,aarch
centos/${LINUX_DIST_VER}/updates/Source/SPackages/:SOURCE
. endif
DIST_SUBDIR?= centos
+DEPRECATED= CentOS Linux 7 reached end of life (EOL) on June 30, 2024
+. elif ${linux_ARGS} == rl9
+. ifndef MASTER_SITES
+MASTER_SITES= ${MASTER_SITE_ROCKY_LINUX}
+MASTER_SITE_SUBDIR= ${LINUX_DIST_VER}/BaseOS/aarch64/os/Packages/:DEFAULT,aarch64 \
+ ${LINUX_DIST_VER}/AppStream/aarch64/os/Packages/:DEFAULT,aarch64 \
+ ${LINUX_DIST_VER}/BaseOS/x86_64/os/Packages/:DEFAULT,amd64 \
+ ${LINUX_DIST_VER}/AppStream/x86_64/os/Packages/:DEFAULT,amd64 \
+ ${LINUX_DIST_VER}/BaseOS/source/tree/Packages/:SOURCE \
+ ${LINUX_DIST_VER}/AppStream/source/tree/Packages/:SOURCE
+. endif
+DIST_SUBDIR?= rocky
. endif # ${linux_ARGS} == *
PKGNAMEPREFIX?= linux-${linux_ARGS}-
@@ -203,6 +282,17 @@ BIN_DISTNAMES?= ${DISTNAME}
. else
LIB_DISTNAMES?= ${DISTNAME}
. endif
+. if ${linux_ARGS} == rl9
+. if !empty(SHARE_DISTNAMES)
+SHARE_DISTNAMES:= ${SHARE_DISTNAMES:@i@${i:C/^([A-Za-z0-9]).*/\1/:tl}/${i}@}
+. endif
+. if !empty(BIN_DISTNAMES)
+BIN_DISTNAMES:= ${BIN_DISTNAMES:@i@${i:C/^([A-Za-z0-9]).*/\1/:tl}/${i}@}
+. endif
+. if !empty(LIB_DISTNAMES)
+LIB_DISTNAMES:= ${LIB_DISTNAMES:@i@${i:C/^([A-Za-z0-9]).*/\1/:tl}/${i}@}
+. endif
+. endif
. if !(defined(ONLY_FOR_ARCHS) && empty(ONLY_FOR_ARCHS:Maarch64)) \
&& empty(NOT_FOR_ARCHS:Maarch64)
DISTFILES_aarch64?= ${LIB_DISTNAMES:S/$/${EXTRACT_SUFX_aarch64}:aarch64/} \
@@ -212,12 +302,19 @@ DISTFILES_aarch64?= ${LIB_DISTNAMES:S/$/${EXTRACT_SUFX_aarch64}:aarch64/} \
. endif
. if !(defined(ONLY_FOR_ARCHS) && empty(ONLY_FOR_ARCHS:Mamd64)) \
&& empty(NOT_FOR_ARCHS:Mamd64)
-DISTFILES_amd64?= ${LIB_DISTNAMES:S/$/${EXTRACT_SUFX_i386}:amd64,i386/} \
- ${LIB_DISTNAMES_i386:S/$/${EXTRACT_SUFX_i386}:amd64,i386/} \
- ${LIB_DISTNAMES:S/$/${EXTRACT_SUFX_amd64}:amd64/} \
+. ifndef DISTFILES_amd64
+. if ${linux_ARGS} == c7
+DISTFILES_amd64= ${LIB_DISTNAMES:S/$/${EXTRACT_SUFX_i386}:amd64,i386/} \
+ ${LIB_DISTNAMES_i386:S/$/${EXTRACT_SUFX_i386}:amd64,i386/}
+. endif
+. if !empty(WANT_LINUX32)
+DISTFILES_amd64+= ${LIB_DISTNAMES:S/$/${EXTRACT_SUFX_i386}:amd64/}
+. endif
+DISTFILES_amd64+= ${LIB_DISTNAMES:S/$/${EXTRACT_SUFX_amd64}:amd64/} \
${LIB_DISTNAMES_amd64:S/$/${EXTRACT_SUFX_amd64}:amd64/} \
${BIN_DISTNAMES:S/$/${EXTRACT_SUFX_amd64}:amd64/} \
${SHARE_DISTNAMES:S/$/${EXTRACT_SUFX_noarch}/}
+. endif
. endif
. if !(defined(ONLY_FOR_ARCHS) && empty(ONLY_FOR_ARCHS:Mi386)) \
&& empty(NOT_FOR_ARCHS:Mi386)
@@ -227,6 +324,9 @@ DISTFILES_i386?= ${LIB_DISTNAMES:S/$/${EXTRACT_SUFX_i386}:amd64,i386/} \
${SHARE_DISTNAMES:S/$/${EXTRACT_SUFX_noarch}/}
. endif
SRC_DISTFILES?= ${DISTNAME}${SRC_SUFX}:SOURCE
+. if ${linux_ARGS} == rl9
+SRC_DISTFILES:= ${SRC_DISTFILES:@i@${i:C/^([A-Za-z0-9]).*/\1/:tl}/${i}@}
+. endif
. ifdef USE_LINUX_RPM_BAD_PERMS
EXTRACT_DEPENDS+= rpm2archive:archivers/rpm4
@@ -242,7 +342,7 @@ PLIST?= ${PKGDIR}/pkg-plist.${ARCH}
. if !target(do-install)
do-install:
(cd ${WRKSRC} && \
- ${FIND} * | ${CPIO} -dumpl --quiet ${STAGEDIR}${PREFIX})
+ ${FIND} * -not -path 'usr/lib/.build-id*' | ${CPIO} -dumpl --quiet ${STAGEDIR}${PREFIX})
. for d in bin lib lib64 sbin
[ ! -e ${STAGEDIR}${PREFIX}/${d} -o -L ${STAGEDIR}${PREFIX}/${d} ] || \
(cd ${STAGEDIR}${PREFIX} && \
@@ -253,6 +353,7 @@ do-install:
(cd ${STAGEDIR}${PREFIX}/usr/share && ${FIND} icons | \
${CPIO} -dumpl --quiet ${STAGEDIR}${LOCALBASE}/share && \
${RM} -r icons)
+ ${RMDIR} ${STAGEDIR}${PREFIX}/usr/lib ${STAGEDIR}${PREFIX}/usr/lib64 || ${TRUE}
. endif
. endif # USE_LINUX_RPM
diff --git a/Mk/Uses/llvm.mk b/Mk/Uses/llvm.mk
index cc6e7f464fcc..d6108a998882 100644
--- a/Mk/Uses/llvm.mk
+++ b/Mk/Uses/llvm.mk
@@ -32,15 +32,26 @@
# * LLVM_LIBLLVM libLLVM.so of the chosen port
# * LLVM_PREFIX installation prefix of the chosen port
#
+# MAINTAINER: ports@FreeBSD.org
.if !defined(_INCLUDE_USES_LLVM_MK)
_INCLUDE_USES_LLVM_MK= YES
-_LLVM_MK_VALID_VERSIONS= 11 12 13 14 15 16 17 18
+_LLVM_MK_VALID_VERSIONS= 11 12 13 14 15 16 17 18 19 20
_LLVM_MK_VALID_CONSTRAINTS= min max
_LLVM_MK_VALID_MODES= build run lib
_LLVM_MK_VALID_EXPORTS= export noexport
+# === verify that there are no invalid arguments ===
+. for _arg in ${llvm_ARGS}
+. if !${_LLVM_MK_VALID_VERSIONS:M${_arg}} && \
+ !${_LLVM_MK_VALID_MODES:M${_arg}} && \
+ ${_arg:C/^(${_LLVM_MK_VALID_CONSTRAINTS:tW:S/ /|/g})=(${_LLVM_MK_VALID_VERSIONS:tW:S/ /|/g})$//} != "" && \
+ !${_LLVM_MK_VALID_EXPORTS:M${_arg}}
+BROKEN= USES=llvm:${llvm_ARGS:tW:S/ /,/g} contains an invalid argument: "${_arg}"
+. endif
+. endfor
+
# === parse mode arguments ===
_LLVM_MK_MODES= # empty
. for _mode in ${_LLVM_MK_VALID_MODES}
@@ -57,18 +68,14 @@ _LLVM_MK_VERSION= # empty
. for _ver in ${_LLVM_MK_VALID_VERSIONS}
. if ${llvm_ARGS:M${_ver}}
. if !empty(_LLVM_MK_VERSION)
-BROKEN= USES=llvm:${llvm_ARGS} contains multiple version definitions
+BROKEN= USES=llvm:${llvm_ARGS:tW:S/ /,/g} contains multiple version definitions
. else
_LLVM_MK_VERSION= ${_ver}
. endif
. endif
. endfor
. if empty(_LLVM_MK_VERSION)
-. if ${LLVM_DEFAULT:N1[0-9]*}
-_LLVM_MK_VERSION= ${LLVM_DEFAULT:S/0$//}
-. else
_LLVM_MK_VERSION= ${LLVM_DEFAULT}
-. endif
. endif
# === parse environment arguments ===
@@ -76,7 +83,7 @@ _LLVM_MK_EXPORT= # empty
. for _export in ${_LLVM_MK_VALID_EXPORTS}
. if ${llvm_ARGS:M${_export}}
. if !empty(_LLVM_MK_EXPORT)
-BROKEN= USES=llvm:${llvm_ARGS} contains multiple export definitions
+BROKEN= USES=llvm:${llvm_ARGS:tW:S/ /,/g} contains multiple export definitions
. else
_LLVM_MK_EXPORT= ${_export}
. endif
@@ -107,10 +114,6 @@ _LLVM_MK_VERSION= ${_LLVM_MK_CONSTRAINT_max}
. endif
# === define helpers for the dependencies ===
-. for _ver in ${_LLVM_MK_VALID_VERSIONS:N1[0-9]}
-_LLVM_MK_SUFFIX_${_ver}= ${_ver}0
-. endfor
-
. for _ver in ${_LLVM_MK_VALID_VERSIONS}
_LLVM_MK_SUFFIX_${_ver}?= ${_ver}
. endfor
diff --git a/Mk/Uses/luajit.mk b/Mk/Uses/luajit.mk
index c7a15b191209..7e62c192fd77 100644
--- a/Mk/Uses/luajit.mk
+++ b/Mk/Uses/luajit.mk
@@ -7,7 +7,7 @@
# LUAJIT_VER: The selected luajit version
# LUAJIT_INCDIR: The path to luajit's header files
# LUAJIT_LUAVER: Which luajit spec version is selected
-# (2.0 for luajit, else 2.1)
+# (always 2.1)
.if !defined(_INCLUDE_USES_LUAJIT_MK)
_INCLUDE_USES_LUAJIT_MK=yes
@@ -28,11 +28,7 @@ IGNORE= Invalid luajit default version ${LUAJIT_DEFAULT}: valid versions are ${V
IGNORE= Invalid luajit version ${LUAJIT_VER}: valid versions are ${VALID_LUAJIT_VER}
.endif
-.if ${LUAJIT_VER} == luajit
-LUAJIT_LUAVER= 2.0
-.else
LUAJIT_LUAVER= 2.1
-.endif
LIB_DEPENDS+= libluajit-5.1.so:lang/${LUAJIT_VER}
LUAJIT_INCDIR= ${LOCALBASE}/include/luajit-${LUAJIT_LUAVER}
diff --git a/Mk/Uses/lxqt.mk b/Mk/Uses/lxqt.mk
index 035c2d5e0174..135472777a7a 100644
--- a/Mk/Uses/lxqt.mk
+++ b/Mk/Uses/lxqt.mk
@@ -2,26 +2,32 @@
# life easier, when dealing with ports related to the LXQt Desktop Environment.
#
# Feature: lxqt
-# Usage: USES=lxqt
-# Valid ARGS: does not require args
+# Usage: USES=lxqt:<version>
+# Valid ARGS: 1, 2
#
# Available LXQt components are:
#
-# buildtools - Helpers CMake modules
-# globalkeys - Keyboard shortcuts daemon
-# libfmqt - Libfm Qt bindings
-# lxqt - LXQt core library
-# qtxdg - Qt implementation of freedesktop.org xdg specs
+# buildtools / buildtools2 - Helpers CMake modules
+# globalkeys - Keyboard shortcuts daemon
+# libfmqt / libfmqt6 - Libfm Qt5/Qt6 bindings
+# lxqt - LXQt core library
+# qtxdg / qt6xdg - Qt5/Qt6 implementation of freedesktop.org xdg specs
+# sysstat / sysstat-qt6 - Qt5/Qt6 library to query system information
#
# MAINTAINER: ports@FreeBSD.org
.if !defined(_INCLUDE_USES_LXQT_MK)
_INCLUDE_USES_LXQT_MK= yes
-. if !empty(lxqt_ARGS)
-IGNORE= Incorrect 'USES+=lxqt:${lxqt_ARGS} takes no arguments
+. if empty(lxqt_ARGS)
+IGNORE= Incorrect 'USES+=lxqt:${lxqt_ARGS} takes arguments 1 or 2
. endif
+. if ${lxqt_ARGS:N1:N2}
+IGNORE= Unknown argument for USES=lxqt: ${lxqt_ARGS:N1:N2}
+. endif
+
+_LXQT_VER= ${lxqt_ARGS}
_LXQT_PROJECT= ${DISTNAME:S/-${DISTVERSION}//:tl}
MASTER_SITE_LXQT+= \
@@ -32,6 +38,7 @@ MASTER_SITE_LXQT_SUBDIR= ${_LXQT_PROJECT}
MASTER_SITES?= ${MASTER_SITE_LXQT}
MASTER_SITE_SUBDIR?= ${MASTER_SITE_LXQT_SUBDIR}
+DISTNAME= ${PORTNAME:S/2//:S/6//}-${DISTVERSIONPREFIX}${DISTVERSION}${DISTVERSIONSUFFIX}
DIST_SUBDIR= lxqt
PLIST_SUB+= LXQT_INCLUDEDIR="include/lxqt" \
@@ -42,22 +49,31 @@ PLIST_SUB+= LXQT_INCLUDEDIR="include/lxqt" \
CMAKE_ARGS+= -DCMAKE_INSTALL_MANDIR=${PREFIX}/share/man
# Available LXQt components are:
-_USE_LXQT_ALL= buildtools globalkeys libfmqt lxqt qtxdg
+_USE_LXQT1_ONLY=buildtools libfmqt qtxdg sysstat
+
+_USE_LXQT2_ONLY=buildtools2 globalkeys libfmqt6 lxqt qt6xdg sysstat-qt6
+
+_USE_LXQT_ALL= ${_USE_LXQT${_LXQT_VER}_ONLY}
_DATAROOTDIR= ${LOCALBASE}/share
buildtools_BUILD_DEPENDS= ${_DATAROOTDIR}/cmake/lxqt-build-tools/lxqt-build-tools-config.cmake:devel/lxqt-build-tools
+buildtools2_BUILD_DEPENDS= ${_DATAROOTDIR}/cmake/lxqt2-build-tools/lxqt2-build-tools-config.cmake:devel/lxqt2-build-tools
globalkeys_LIB_DEPENDS= liblxqt-globalkeys.so:x11/lxqt-globalkeys
-
globalkeys_USE_LXQT_REQ= lxqt
libfmqt_LIB_DEPENDS= libfm-qt.so:x11/libfm-qt
+libfmqt6_LIB_DEPENDS= libfm-qt6.so:x11/libfm-qt6
lxqt_LIB_DEPENDS= liblxqt.so:devel/liblxqt
-lxqt_USE_LXQT_REQ= qtxdg
+lxqt_USE_LXQT_REQ= qt6xdg
qtxdg_LIB_DEPENDS= libQt5Xdg.so:devel/libqtxdg
+qt6xdg_LIB_DEPENDS= libQt6Xdg.so:devel/libqt6xdg
+
+sysstat_LIB_DEPENDS= libsysstat-qt5:devel/libsysstat
+sysstat-qt6_LIB_DEPENDS=libsysstat-qt6.so:devel/libsysstat-qt6
. if defined(USE_LXQT)
diff --git a/Mk/Uses/mate.mk b/Mk/Uses/mate.mk
index dc4272bb90a0..6d6800eb078f 100644
--- a/Mk/Uses/mate.mk
+++ b/Mk/Uses/mate.mk
@@ -58,7 +58,7 @@ common_DETECT= ${LOCALBASE}/bin/mate-autogen
common_BUILD_DEPENDS= ${common_DETECT}:devel/mate-common
common_RUN_DEPENDS= ${common_DETECT}:devel/mate-common
-controlcenter_DETECT= ${LOCALBASE}/libdata/pkgconfig/mate-window-settings-2.0.pc
+controlcenter_DETECT= ${LOCALBASE}/libdata/pkgconfig/mate-default-applications.pc
controlcenter_BUILD_DEPENDS= ${controlcenter_DETECT}:sysutils/mate-control-center
controlcenter_LIB_DEPENDS= libmate-window-settings.so:sysutils/mate-control-center
controlcenter_RUN_DEPENDS= ${controlcenter_DETECT}:sysutils/mate-control-center
diff --git a/Mk/Uses/meson.mk b/Mk/Uses/meson.mk
index 571e8a990be0..ed09a9cee806 100644
--- a/Mk/Uses/meson.mk
+++ b/Mk/Uses/meson.mk
@@ -33,6 +33,7 @@ BUILD_DEPENDS+= meson:devel/meson
USE_LOCALE?= en_US.UTF-8
CONFIGURE_ARGS+= --prefix ${PREFIX} \
+ --localstatedir /var \
--infodir ${INFO_PATH}
# Enable all optional features to make builds deterministic. Consumers can
@@ -70,6 +71,7 @@ BUILD_WRKSRC= ${WRKSRC}/${MESON_BUILD_DIR}
INSTALL_WRKSRC= ${WRKSRC}/${MESON_BUILD_DIR}
+TEST_ENV+= MESON_TESTTHREADS=${MAKE_JOBS_NUMBER}
TEST_WRKSRC= ${WRKSRC}/${MESON_BUILD_DIR}
TEST_TARGET= test
diff --git a/Mk/Uses/mlt.mk b/Mk/Uses/mlt.mk
index d81f848e37b9..2cf044dcad0a 100644
--- a/Mk/Uses/mlt.mk
+++ b/Mk/Uses/mlt.mk
@@ -37,7 +37,7 @@ _MLT_NODEPEND= yes
. endif
# Library dependencies
-_MLT7_VERSION= 7.22.0
+_MLT7_VERSION= 7.32.0
_MLT7_PORTNAME= mlt7
_MLT7_LIB= libmlt-7.so
_MLT7_MELT= ${LOCALBASE}/bin/melt-7
diff --git a/Mk/Uses/mpi.mk b/Mk/Uses/mpi.mk
index cf14ec675118..b947aad625a2 100644
--- a/Mk/Uses/mpi.mk
+++ b/Mk/Uses/mpi.mk
@@ -3,7 +3,6 @@
# Feature: mpi
# Usage: USES=mpi or USES=mpi:ARGS
# Valid ARGS: mpich (default) openmpi
-# Note: mpich2 and openmpi3 are not handled
#
# Provides: MPI_LIBS MPI_CFLAGS MPICC MPICXX MPIF90 MPIFC MPI_HOME \
# MPIEXEC MPIRUN
diff --git a/Mk/Uses/mysql.mk b/Mk/Uses/mysql.mk
index cf5840131744..fa63b6cf465c 100644
--- a/Mk/Uses/mysql.mk
+++ b/Mk/Uses/mysql.mk
@@ -60,13 +60,17 @@ DEFAULT_MYSQL_VER?= ${MYSQL_DEFAULT:S/.//}
# When adding a version, please keep the comment in
# Mk/bsd.default-versions.mk in sync.
MYSQL80_LIBVER= 21
-MYSQL81_LIBVER= 22
-. for v in 5 6 11
-MYSQL10${v}m_LIBVER= 3
+MYSQL84_LIBVER= 24
+MYSQL91_LIBVER= 24
+
+. for v in 105 106 1011 114 118
+MYSQL${v}m_LIBVER= 3
. endfor
# Setting/finding MySQL version we want.
-. if exists(${LOCALBASE}/bin/mysql)
+. if exists(${LOCALBASE}/bin/mariadb)
+_MARIADB!= ${LOCALBASE}/bin/mariadb --version | ${GREP} MariaDB | wc -l
+. elif exists(${LOCALBASE}/bin/mysql)
_MYSQL!= ${LOCALBASE}/bin/mysql_config --version | ${SED} -e 's/\([0-9]\{1,2\}\)\.\([0-9]*\).*/\1\2/'
_MARIADB!= ${LOCALBASE}/bin/mysql --version | ${GREP} MariaDB | wc -l
diff --git a/Mk/Uses/ninja.mk b/Mk/Uses/ninja.mk
index 5c78cf152d07..e9581903b172 100644
--- a/Mk/Uses/ninja.mk
+++ b/Mk/Uses/ninja.mk
@@ -1,19 +1,20 @@
-# Provide support to use Ninja
+# Support for the Ninja and Samurai build systems
#
-# Feature: ninja
-# Usage: USES=ninja
-# Valid ARGS: build, make (default), run
+# Feature: ninja
+# Usage: USES=ninja[:arg]
+# Valid ARGS: build, make, run, samurai
#
-# build add a build dependency on ninja
-# make use ninja for the build instead of make, implies "build"
-# run add a run dependency on ninja
+# build add a build dependency on ninja
+# make use ninja for the build instead of make; implies "build" (default)
+# run add a run dependency on ninja
+# samurai use samurai regardless of NINJA_DEFAULT; implies "make"
#
# MAINTAINER: ports@FreeBSD.org
.if !defined(_INCLUDE_USES_NINJA_MK)
_INCLUDE_USES_NINJA_MK= yes
-_valid_ARGS= build make run
+_valid_ARGS= build make run samurai
. for _arg in ${ninja_ARGS}
. if empty(_valid_ARGS:M${_arg})
@@ -23,25 +24,27 @@ IGNORE= 'USES+= ninja:${ninja_ARGS}' usage: argument [${_arg}] is not recognized
. if empty(ninja_ARGS)
ninja_ARGS+= make
+. elif !empty(ninja_ARGS:Msamurai)
+_SAMURAI_FROM_ARGS= yes
+ninja_ARGS+= make
. endif
. if ${ninja_ARGS:Mmake}
ninja_ARGS+= build
. endif
-. if ${NINJA_DEFAULT} == ninja
+. if ${NINJA_DEFAULT} == ninja && !defined(_SAMURAI_FROM_ARGS)
NINJA_CMD= ninja
_NINJA_PORT= devel/ninja
-. elif ${NINJA_DEFAULT} == samurai
+. elif ${NINJA_DEFAULT} == samurai || defined(_SAMURAI_FROM_ARGS)
NINJA_CMD= samu
_NINJA_PORT= devel/samurai
MAKE_ENV+= SAMUFLAGS="-v -j${MAKE_JOBS_NUMBER}"
. if ${ninja_ARGS:Mbuild} && !${BINARY_ALIAS:U:Mninja=*}
-# Cmake and Meson have native support for Samurai and detect and
-# use it when Ninja is not available in the build environment. The
-# alias is needed for other ports which call Ninja directly and do
-# not fall back to Samurai. There should be no harm in providing it
-# generally.
+# CMake and Meson have native support for Samurai and use it in lieu of
+# Ninja if not found in the build environment. BINARY_ALIAS is needed
+# for other ports that call the ninja binary directly with no fallback
+# consideration for samu.
BINARY_ALIAS+= ninja=samu
. endif
. else
@@ -56,10 +59,10 @@ MAKE_ENV+= NINJA_STATUS="[%p %s/%t] "
. endif
. if ${ninja_ARGS:Mmake}
-. if ${NINJA_DEFAULT} == ninja
-# samu does not support GNU-style args, so we cannot just append
-# -v last. samu gets this via SAMUFLAGS above but ninja does not
-# support an equivalent environment variable.
+. if ${NINJA_DEFAULT} == ninja && !defined(_SAMURAI_FROM_ARGS)
+# samu does not support GNU-style args, so we cannot simply append `-v`
+# to MAKE_ARGS to enable verbosity. This is instead accomplished via
+# the SAMUFLAGS environment variable defined above in MAKE_ENV.
MAKE_ARGS+= -v
. endif
CMAKE_ARGS+= -GNinja
diff --git a/Mk/Uses/nodejs.mk b/Mk/Uses/nodejs.mk
index e92b2f34f2a3..e8987827fe2e 100644
--- a/Mk/Uses/nodejs.mk
+++ b/Mk/Uses/nodejs.mk
@@ -7,13 +7,13 @@
# - build use node as build-time dependency
# - run use node as runtime dependency
# - env set the environment (NODEJS_VERSION and NODEJS_SUFFIX)
-# - version available version: lts, current, 18, 20, 21
+# - version available version: lts, current, 18, 20, 22, 24
#
# Note:
# - The supported versions follow upstream release schedule
# https://github.com/nodejs/Release/blob/main/README.md#release-schedule
-# - lts is 20 now
-# - current is 21 now
+# - lts is 22 now
+# - current is 24 now
# - USES=nodejs means USES=nodejs:build,run
# - If you define a version, you must provide run and/or build
#
@@ -22,13 +22,13 @@
.if !defined(_INCLUDE_USES_NODEJS_MK)
_INCLUDE_USES_NODEJS_MK= yes
-_VALID_NODEJS_VERSIONS= 18 20 21 current lts
+_VALID_NODEJS_VERSIONS= 18 20 22 24 current lts
. if ! ${_VALID_NODEJS_VERSIONS:M${NODEJS_DEFAULT}}
IGNORE= Invalid default nodejs version ${NODEJS_DEFAULT}; valid versions are ${_VALID_NODEJS_VERSIONS}
. endif
-. if !empty(nodejs_ARGS:Nbuild:Nenv:Nrun:Nlts:Ncurrent:N18:N20:N21)
+. if !empty(nodejs_ARGS:Nbuild:Nenv:Nrun:Nlts:Ncurrent:N18:N20:N22:N24)
IGNORE= USES=nodejs has invalid arguments ${nodejs_ARGS}
. endif
@@ -47,7 +47,7 @@ _NODEJS_VER= ${version}
_NODEJS_VER= ${NODEJS_DEFAULT}
. endif
-NODEJS_VERSION= ${_NODEJS_VER:S|current|21|:S|lts|20|}
+NODEJS_VERSION= ${_NODEJS_VER:S|current|24|:S|lts|22|}
NODEJS_SUFFIX= -node${NODEJS_VERSION}
. if ${nodejs_ARGS:M*build*}
diff --git a/Mk/Uses/ocaml.mk b/Mk/Uses/ocaml.mk
index 666c29078c19..fed0026ff72d 100644
--- a/Mk/Uses/ocaml.mk
+++ b/Mk/Uses/ocaml.mk
@@ -1,38 +1,186 @@
-# Provide support to use the Dune package builder for OCaml
+# Provide support for OCaml
+# Feature: ocaml
+# Usage: USES=ocaml or USES=ocaml:args
#
-# Feature: ocaml
-# Usage: USES=ocaml:dune
-# USE_OCAML=yes
+# Valid ARGS: build, camlp4, dune, findlib, findplist, ldconfig, tk, tkbuild, tkrun, wash
+# If empty, defaults to build and run
+#
+# build - Add ocamlc to BUILD|EXTRACT|PATCH_DEPENDS
+#
+# camlp4 - Use camlp4 to build
+#
+# dune - Use dune as a build system
+#
+# findlib - Set if port uses ocamlfind to install packages.
+# Package direcories will be automatically deleted
+#
+# findplist - Add contents of findlib target directories automatically
+#
+# ldconfig - Set if your port installs shared libraries into ocaml
+# site-lib dir. OCaml ld.conf file will be automatically
+# processed. When dune is used Dune may install stublibs in
+# site-lib package directory(ies) or in a single directory
+# below DUNE_LIBDIR.
+#
+# run - Add ocamlc to RUN_DEPENDS
+#
+# tk - Set if port needs ocaml-labltk which implies tkbuild and
+# tkrun
+#
+# tkbuild - Add labltk to BUILD|EXTRACT|PATCH_DEPENDS
+#
+# tkrun - Add labltk to RUN_DEPENDS
+#
+# wash - Set if your port wants to automatically
+# purge shared Ocaml dirs on uninstall. It's
+# useful when installing to non-standard PREFIX
#
# Variables that may be set by the port:
#
-# OCAML_PACKAGES List of packages to build and install, defaults to PORTNAME
+# OCAML_PKGDIRS - Directories under site-lib to be processed
+# if USES=ocaml:findlib specified.
+# Default: ${PORTNAME}
#
-# USE_OCAML_LDCONFIG Dune may install stublibs in site-lib package directory(ies)
-# OCAML_LDLIBS or in a single directory below DUNE_LIBDIR.
+# OCAML_LDLIBS - Directories under PREFIX to be automatically
+# added/removed from ld.conf
+# Default: ${OCAML_SITELIBDIR}/${PORTNAME}
#
-# Appends to: BUILD_DEPENDS, MAKE_ENV
+# OCAML_PACKAGES - List of packages to build and install, defaults to ${PORTNAME}
#
# MAINTAINER: freebsd@dev.thsi.be
.if !defined(_INCLUDE_USES_OCAML_MK)
_INCLUDE_USES_OCAML_MK= yes
-. if empty(ocaml_ARGS:Mdune)
-IGNORE= Incorrect 'USES+= ocaml:${ocaml_ARGS}' ocaml requires a single 'dune' argument (for now)
+_OCAML_VALID_ARGS= build camlp4 dune findlib findplist ldconfig tk tkbuild tkrun wash
+_OCAML_UNKNOWN_ARGS=
+. for arg in ${ocaml_ARGS}
+. if empty(_OCAML_VALID_ARGS:M${arg})
+_OCAML_UNKNOWN_ARGS+= ${arg}
+. endif
+. endfor
+. if !empty(_OCAML_UNKNOWN_ARGS)
+IGNORE= has unknown USES=ocaml arguments: ${_OCAML_UNKNOWN_ARGS}
. endif
-
-. if !defined(OCAML_include)
-.error USES=dune only works with USE_OCAML=yes
+. if ${ocaml_ARGS:Mfindplist} && ${ocaml_ARGS:Mfindlib}
+DEV_WARNING+= "USES=ocaml:findlib is included in USES=ocaml:findplist, so it is not needed"
+. endif
+. if empty(ocaml_ARGS)
+ocaml_ARGS= build,run
. endif
+. if !empty(ocaml_ARGS)
+.undef _USE_OCAML_BUILD
+.undef _USE_OCAML_CAMLP4
+.undef _USE_OCAML_DUNE
+.undef _USE_OCAML_FINDLIB
+.undef _USE_OCAML_FINDPLIST
+.undef _USE_OCAML_LDCONFIG
+.undef _USE_OCAML_RUN
+.undef _USE_OCAML_TKBUILD
+.undef _USE_OCAML_TKRUN
+.undef _USE_OCAML_WASH
+_OCAML_ARGS= ${ocaml_ARGS:S/,/ /g}
+. if ${_OCAML_ARGS:Mcamlp4}
+_USE_OCAML_CAMLP4= yes
+_OCAML_ARGS:= ${_OCAML_ARGS:Ncamlp4}
+. endif
+. if ${_OCAML_ARGS:Mdune}
+_USE_OCAML_DUNE= yes
+_OCAML_ARGS:= ${_OCAML_ARGS:Ndune}
+. endif
+. if ${_OCAML_ARGS:Mfindplist}
+_USE_OCAML_FINDPLIST= yes
+_OCAML_ARGS:= ${_OCAML_ARGS:Nfindplist}
+_OCAML_ARGS+= findlib
+. endif
+. if ${_OCAML_ARGS:Mfindlib}
+_USE_OCAML_FINDLIB= yes
+_OCAML_ARGS:= ${_OCAML_ARGS:Nfindlib}
+. endif
+. if ${_OCAML_ARGS:Mldconfig}
+_USE_OCAML_LDCONFIG= yes
+_OCAML_ARGS:= ${_OCAML_ARGS:Nldconfig}
+. endif
+. if ${_OCAML_ARGS:Mtk}
+_OCAML_ARGS+= tkbuild
+_OCAML_ARGS+= tkrun
+. endif
+. if ${_OCAML_ARGS:Mtkbuild}
+. if defined(NO_BUILD)
+IGNORE= Makefile error: NO_BUILD and USES=ocaml:tkbuild cannot be set at the same time
+. else
+_USE_OCAML_TKBUILD= yes
+_OCAML_ARGS:= ${_OCAML_ARGS:Ntkbuild}
+. endif
+. endif
+. if ${_OCAML_ARGS:Mtkrun}
+_USE_OCAML_TKRUN= yes
+_OCAML_ARGS:= ${_OCAML_ARGS:Ntkrun}
+. endif
+. if ${_OCAML_ARGS:Mwash}
+_USE_OCAML_WASH= yes
+_OCAML_ARGS:= ${_OCAML_ARGS:Nwash}
+. endif
+. if empty(_OCAML_ARGS)
+_OCAML_ARGS+= build
+_OCAML_ARGS+= run
+. endif
+. if ${_OCAML_ARGS:Mbuild}
+. if defined(NO_BUILD)
+IGNORE= Makefile error: NO_BUILD and USES=ocaml:build cannot be set at the same time
+. else
+_USE_OCAML_BUILD= yes
+. endif
+. endif
+. if ${_OCAML_ARGS:Mrun}
+_USE_OCAML_RUN= yes
+. endif
+. endif # !empty(ocaml_ARGS)
+
#
-# Dune builder port
+# OCaml programs location
+#
+OCAMLC?= ${LOCALBASE}/bin/ocamlc
+OCAMLC_OPT?= ${LOCALBASE}/bin/ocamlc.opt
+OCAMLCP?= ${LOCALBASE}/bin/ocamlcp
+OCAMLFIND?= ${LOCALBASE}/bin/ocamlfind
+CAMLP4?= ${LOCALBASE}/bin/camlp4
+OCAMLTK?= ${LOCALBASE}/bin/labltk
+
#
-DUNE_PORT?= devel/ocaml-dune
-DUNE_DEPEND?= ocaml-dune>=3.7.1_2:devel/ocaml-dune
+# OCaml library directory
+#
+OCAML_LIBDIR?= lib/ocaml
+
+#
+# Where to install site libraries
+#
+OCAML_SITELIBDIR?= ${OCAML_LIBDIR}/site-lib
-BUILD_DEPENDS+= ${DUNE_DEPEND}
+#
+# OCaml compiler port dependency
+#
+OCAMLC_PORT?= lang/ocaml
+OCAMLC_DEPEND?= ${OCAMLC}:${OCAMLC_PORT}
+
+#
+# OCaml package manager port dependency
+#
+OCAMLFIND_PORT?= devel/ocaml-findlib
+OCAMLFIND_DEPEND?= ${OCAMLFIND}:${OCAMLFIND_PORT}
+
+#
+# OCaml camlp4 port dependency
+#
+CAMLP4_PORT?= devel/ocaml-camlp4
+CAMLP4_DEPEND?= ${CAMLP4}:${CAMLP4_PORT}
+
+#
+# Dune builder port
+#
+. if defined(_USE_OCAML_DUNE)
+BUILD_DEPENDS+= ocaml-dune>=3.7.1_2:devel/ocaml-dune
DUNE_ARGS= --display=short --always-show-command-line \
--no-config -j ${MAKE_JOBS_NUMBER} --profile release \
@@ -50,8 +198,116 @@ DUNE_INSTALL_TARGETS?=
DUNE_LIBDIR?= ${OCAML_SITELIBDIR}
OCAML_PACKAGES?= ${PORTNAME}
DUNE_ROOT?= .
+# Left empty for default @install target
+ALL_TARGET?=
+. endif
+
+#
+# OCaml TK bindings dependency
+#
+OCAMLTK_PORT?= x11-toolkits/ocaml-labltk
+OCAMLTK_DEPENDS?= ${OCAMLTK}:${OCAMLTK_PORT}
+
+#
+# Common OCaml examples and documents location
+#
+OCAML_DOCSDIR= ${PREFIX}/share/doc/ocaml
+OCAML_EXAMPLESDIR= ${PREFIX}/share/examples/ocaml
+
+#
+# Location of OCaml ld.conf file
+#
+OCAML_LDCONF?= ${OCAML_LIBDIR}/ld.conf
+
+# ocaml-findlib-1.4.1_1 wants to edit our ld.conf file, which does not
+# work well with staging.
+. if defined(_USE_OCAML_LDCONFIG)
+. if !target(ocaml-ldconfig)
+OCAMLFIND_LDCONF?= /dev/null
+. endif
+. endif
+
+OCAMLFIND_DESTDIR?= ${PREFIX}/${OCAML_SITELIBDIR}
+OCAMLFIND_LDCONF?= ${PREFIX}/${OCAML_LDCONF}
+
+. if defined(_USE_OCAML_BUILD)
+EXTRACT_DEPENDS+= ${OCAMLC_DEPEND}
+PATCH_DEPENDS+= ${OCAMLC_DEPEND}
+BUILD_DEPENDS+= ${OCAMLC_DEPEND}
+. endif
+. if defined(_USE_OCAML_RUN)
+RUN_DEPENDS+= ${OCAMLC_DEPEND}
+. endif
+PLIST_SUB+= OCAML_SITELIBDIR="${OCAML_SITELIBDIR}"
-. if USE_OCAML_LDCONFIG
+. if defined(_USE_OCAML_FINDLIB)
+#
+# We'll additionally add ocamlfind to RUN_DEPENDS, since
+# if the port requires ocamlfind to install - it requires
+# some ocaml libraries and these libraries RUN_DEPENDS on
+# ocamlfind
+#
+BUILD_DEPENDS+= ${OCAMLFIND_DEPEND}
+RUN_DEPENDS+= ${OCAMLFIND_DEPEND}
+MAKE_ENV+= OCAMLFIND_DESTDIR="${STAGEDIR}${OCAMLFIND_DESTDIR}" \
+ OCAMLFIND_LDCONF="${OCAMLFIND_LDCONF}"
+
+#
+# Directories under site-lib to process automatically
+#
+OCAML_PKGDIRS?= ${PORTNAME}
+_USES_install+= 250:ocaml-pre-install 735:ocaml-findlib
+. if !target(ocaml-pre-install)
+ocaml-pre-install:
+ ${MKDIR} ${STAGEDIR}${OCAMLFIND_DESTDIR}
+. endif
+. if !target(ocaml-findlib)
+ocaml-findlib:
+. for DIR in ${OCAML_PKGDIRS}
+. if defined(_USE_OCAML_FINDPLIST)
+ @${FIND} ${STAGEDIR}${PREFIX}/${OCAML_SITELIBDIR}/${DIR}/ -type f -print | ${SED} -e \
+ 's,^${STAGEDIR}${PREFIX}/,,' >> ${TMPPLIST}
+. endif
+ @${ECHO_CMD} "@postunexec ${OCAMLFIND} remove ${DIR} 2>/dev/null" \
+ >> ${TMPPLIST}
+. endfor
+. endif
+. endif
+
+. if defined(_USE_OCAML_CAMLP4)
+BUILD_DEPENDS+= ${CAMLP4_DEPEND}
+. endif
+
+. if defined(_USE_OCAML_TKBUILD)
+EXTRACT_DEPENDS+= ${OCAMLTK_DEPENDS}
+PATCH_DEPENDS+= ${OCAMLTK_DEPENDS}
+BUILD_DEPENDS+= ${OCAMLTK_DEPENDS}
+. endif
+. if defined(_USE_OCAML_TKRUN)
+RUN_DEPENDS+= ${OCAMLTK_DEPENDS}
+. endif
+
+. if defined(_USE_OCAML_LDCONFIG)
+#
+# Directories under PREFIX for appending to ld.conf
+#
+OCAML_LDLIBS?= ${OCAML_SITELIBDIR}/${PORTNAME}
+_USES_install+= 740:ocaml-ldconfig
+. if !target(ocaml-ldconfig)
+ocaml-ldconfig:
+. for LIB in ${OCAML_LDLIBS}
+ @${ECHO_CMD} "@postexec ${ECHO_CMD} "%D/${LIB}" >> %D/${OCAML_LDCONF}" \
+ >> ${TMPPLIST}
+ @${ECHO_CMD} "@postunexec ${SED} -i \"\" -e '/${LIB:S#/#\/#g}/d' %D/${OCAML_LDCONF}" >> ${TMPPLIST}
+. endfor
+. endif
+. endif
+
+. if defined(_USE_OCAML_WASH)
+PLIST_FILES+= "@rmempty ${OCAML_LDCONF}"
+. endif
+
+. if defined(_USE_OCAML_LDCONFIG) && defined(_USE_OCAML_DUNE)
. if !empty(OCAML_LDLIBS)
. if ${OCAML_LDLIBS:[#]} > 1
. for _l in ${OCAML_LDLIBS}
@@ -68,13 +324,13 @@ DUNE_ENV+= DUNE_FREEBSD_STUBLIBS_RELATIVE_TO_LIBDIR=${OCAML_PACKAGES:[1]}
. endif
. endif
-# left empty for default @install target
-ALL_TARGET?=
+. if defined(_USE_OCAML_DUNE)
MAKE_ENV+= ${DUNE_ENV}
DO_MAKE_BUILD?= ${SETENVI} ${WRK_ENV} ${MAKE_ENV} ${DUNE_CMD} build ${DUNE_ARGS} ${DUNE_BUILD_ARGS}
+. endif
-. if !target(do-install) && !defined(NO_INSTALL)
+. if !target(do-install) && !defined(NO_INSTALL) && defined(_USE_OCAML_DUNE)
do-install:
@(cd ${INSTALL_WRKSRC} && ${SETENV} ${WRK_ENV} ${MAKE_ENV} ${FAKEROOT} ${DUNE_CMD} install ${DUNE_ARGS} ${DUNE_INSTALL_ARGS} ${DUNE_INSTALL_TARGETS})
. endif
diff --git a/Mk/Uses/octave.mk b/Mk/Uses/octave.mk
index 31c98e616fe1..8aca21d0a789 100644
--- a/Mk/Uses/octave.mk
+++ b/Mk/Uses/octave.mk
@@ -22,7 +22,7 @@ IGNORE= Incorrect 'USES+= octave:${octave_ARGS}' usage: argument [${arg}] is not
. endif
. endfor
-OCTAVE_VERSION= 9.1.0
+OCTAVE_VERSION= 10.2.0
. if empty(octave_ARGS:Menv)
BUILD_DEPENDS+= octave:math/octave
diff --git a/Mk/Uses/pathfix.mk b/Mk/Uses/pathfix.mk
index 049224a15621..57c734f93cb3 100644
--- a/Mk/Uses/pathfix.mk
+++ b/Mk/Uses/pathfix.mk
@@ -54,8 +54,7 @@ pathfix:
s|[{]datadir[}]/pkgconfig|(prefix)/libdata/pkgconfig|g ; \
s|[(]prefix[)]/lib/pkgconfig|(prefix)/libdata/pkgconfig|g ; \
s|[(]prefix[)]/share/pkgconfig|(prefix)/libdata/pkgconfig|g ; \
- s|[[:<:]]lib/pkgconfig|libdata/pkgconfig|g; \
- s|[(]libdir[)]/bonobo/servers|(prefix)/libdata/bonobo/servers|g'
+ s|[[:<:]]lib/pkgconfig|libdata/pkgconfig|g'
. endfor
. endif
diff --git a/Mk/Uses/perl5.mk b/Mk/Uses/perl5.mk
index e7c5fd5b5068..4e5883bb59d0 100644
--- a/Mk/Uses/perl5.mk
+++ b/Mk/Uses/perl5.mk
@@ -42,12 +42,12 @@ USE_PERL5?= run build
# When adding a version, please keep the comment in
# Mk/bsd.default-versions.mk in sync.
-. if ${PERL5_DEFAULT} == 5.34
-.include "${PORTSDIR}/lang/perl5.34/version.mk"
-. elif ${PERL5_DEFAULT} == 5.36
-.include "${PORTSDIR}/lang/perl5.36/version.mk"
-. elif ${PERL5_DEFAULT} == 5.38
+. if ${PERL5_DEFAULT} == 5.38
.include "${PORTSDIR}/lang/perl5.38/version.mk"
+. elif ${PERL5_DEFAULT} == 5.40
+.include "${PORTSDIR}/lang/perl5.40/version.mk"
+. elif ${PERL5_DEFAULT} == 5.42
+.include "${PORTSDIR}/lang/perl5.42/version.mk"
. elif ${PERL5_DEFAULT} == devel
.include "${PORTSDIR}/lang/perl5-devel/version.mk"
# Force PERL_PORT here in case two identical PERL_VERSION.
@@ -81,12 +81,12 @@ PERL_ARCH?= mach
# perl5_default file, or up there in the default versions selection.
# When adding a version, please keep the comment in
# Mk/bsd.default-versions.mk in sync.
-. if ${PERL_LEVEL} >= 503800
+. if ${PERL_LEVEL} >= 504200
+PERL_PORT?= perl5.42
+. elif ${PERL_LEVEL} >= 504000
+PERL_PORT?= perl5.40
+. else # ${PERL_LEVEL} < 504000
PERL_PORT?= perl5.38
-. elif ${PERL_LEVEL} >= 503600
-PERL_PORT?= perl5.36
-. else # ${PERL_LEVEL} < 503600
-PERL_PORT?= perl5.34
. endif
SITE_PERL_REL?= lib/perl5/site_perl
@@ -202,7 +202,7 @@ DESTDIRNAME= --destdir
. if ${_USE_PERL5:Mmodbuild}
CONFIGURE_ARGS+=--perl="${PERL}"
. if ${PORTNAME} != Module-Build
-BUILD_DEPENDS+= p5-Module-Build>=0.4206:devel/p5-Module-Build
+BUILD_DEPENDS+= p5-Module-Build>=0.4234:devel/p5-Module-Build
. endif
CONFIGURE_ARGS+=--create_packlist 1
. endif
diff --git a/Mk/Uses/pgsql.mk b/Mk/Uses/pgsql.mk
index e82d1ee5c58f..0ce84d448e2c 100644
--- a/Mk/Uses/pgsql.mk
+++ b/Mk/Uses/pgsql.mk
@@ -5,13 +5,13 @@
#
# version Maintainer can set versions required. You can set this to
# [min]-[max] or min+ or -max or as an explicit version
-# (eg. 12-14 for [min]-[max], 12+ or 12-
+# (eg. 14-16 for [min]-[max], 14+ or 16-
# for min+ and max-, 13 for an explicit version). Example:
#
# USES=pgsql:13 # Only use PostgreSQL 13
-# USES=pgsql:12+ # Use PostgreSQL 12 or newer
-# USES=pgsql:12-14 # Use PostgreSQL between 12 & 14 inclusive
-# USES=pgsql:12- # Use any PostgreSQL up to 12
+# USES=pgsql:13+ # Use PostgreSQL 13 or newer
+# USES=pgsql:14-16 # Use PostgreSQL between 14 & 16 inclusive
+# USES=pgsql:14- # Use any PostgreSQL up to 14
# USES=pgsql # Use the default PostgreSQL
#
# WANT_PGSQL= server[:fetch] plperl plpython pltcl
@@ -39,7 +39,7 @@ _INCLUDE_USES_PGSQL_MK= yes
# When adding a version, please keep the comment in
# Mk/bsd.default-versions.mk in sync.
-VALID_PGSQL_VER= 12 13 14 15 16
+VALID_PGSQL_VER= 13 14 15 16 17 18
# Override non-default LIBVERS like this:
#PGSQL99_LIBVER=6
diff --git a/Mk/Uses/php.mk b/Mk/Uses/php.mk
index 6195ad71a71e..d6b59898cb5b 100644
--- a/Mk/Uses/php.mk
+++ b/Mk/Uses/php.mk
@@ -110,7 +110,7 @@ DIST_SUBDIR= PECL
PHPBASE?= ${LOCALBASE}
-_ALL_PHP_VERSIONS= 81 82 83
+_ALL_PHP_VERSIONS= 81 82 83 84 85
# Make the already installed PHP the default one.
. if exists(${PHPBASE}/etc/php.conf)
@@ -179,7 +179,13 @@ PHP_VER= ${FLAVOR:S/^php//}
(${FLAVOR:Mphp[0-9][0-9]} && ${FLAVOR} != ${FLAVORS:[1]})
# When adding a version, please keep the comment in
# Mk/bsd.default-versions.mk in sync.
-. if ${PHP_VER} == 83
+. if ${PHP_VER} == 85
+PHP_EXT_DIR= 20240925
+PHP_EXT_INC= hash json openssl pcre random spl
+. elif ${PHP_VER} == 84
+PHP_EXT_DIR= 20240924
+PHP_EXT_INC= hash json openssl pcre random spl
+. elif ${PHP_VER} == 83
PHP_EXT_DIR= 20230831
PHP_EXT_INC= hash json openssl pcre random spl
. elif ${PHP_VER} == 82
@@ -190,7 +196,7 @@ PHP_EXT_DIR= 20210902
PHP_EXT_INC= hash json openssl pcre spl
. else
# (rene) default to DEFAULT_VERSIONS
-PHP_EXT_DIR= 20220829
+PHP_EXT_DIR= 20230831
PHP_EXT_INC= hash json openssl pcre random spl
. endif
@@ -383,6 +389,8 @@ _USE_PHP_ALL= bcmath bitset bz2 calendar ctype curl dba dom \
_USE_PHP_VER81= ${_USE_PHP_ALL}
_USE_PHP_VER82= ${_USE_PHP_ALL}
_USE_PHP_VER83= ${_USE_PHP_ALL}
+_USE_PHP_VER84= ${_USE_PHP_ALL}
+_USE_PHP_VER85= ${_USE_PHP_ALL}
bcmath_DEPENDS= math/php${PHP_VER}-bcmath
bitset_DEPENDS= math/pecl-bitset@${PHP_FLAVOR}
@@ -403,7 +411,11 @@ gettext_DEPENDS=devel/php${PHP_VER}-gettext
gmp_DEPENDS= math/php${PHP_VER}-gmp
iconv_DEPENDS= converters/php${PHP_VER}-iconv
igbinary_DEPENDS= converters/pecl-igbinary@${PHP_FLAVOR}
+. if ${PHP_VER} <= 83
imap_DEPENDS= mail/php${PHP_VER}-imap
+. else
+imap_DEPENDS= mail/pecl-imap@${PHP_FLAVOR}
+. endif
intl_DEPENDS= devel/php${PHP_VER}-intl
ldap_DEPENDS= net/php${PHP_VER}-ldap
mbstring_DEPENDS= converters/php${PHP_VER}-mbstring
@@ -424,7 +436,11 @@ pdo_sqlite_DEPENDS= databases/php${PHP_VER}-pdo_sqlite
pgsql_DEPENDS= databases/php${PHP_VER}-pgsql
phar_DEPENDS= archivers/php${PHP_VER}-phar
posix_DEPENDS= sysutils/php${PHP_VER}-posix
+. if ${PHP_VER} <= 83
pspell_DEPENDS= textproc/php${PHP_VER}-pspell
+. else
+pspell_DEPENDS= textproc/pecl-pspell@${PHP_FLAVOR}
+. endif
radius_DEPENDS= net/pecl-radius@${PHP_FLAVOR}
readline_DEPENDS= devel/php${PHP_VER}-readline
redis_DEPENDS= databases/pecl-redis@${PHP_FLAVOR}
diff --git a/Mk/Uses/pyqt.mk b/Mk/Uses/pyqt.mk
index b197f1ffcfb5..af659b76d8cc 100644
--- a/Mk/Uses/pyqt.mk
+++ b/Mk/Uses/pyqt.mk
@@ -1,15 +1,16 @@
# Handle PyQt related ports
#
# Feature: pyqt
-# Usage: USES=pyqt:ARGS
-# Valid ARGS: 5, 6
+# Usage: USES=pyqt:<version>[,dist]
+# Versions: 5, 6
+# Internal use ARGS: dist
+# This port is part of PyQt5/6 itself. Variables and
+# targets are then set assuming a certain tarball and
+# port layout.
#
# MAINTAINER: kde@FreeBSD.org
#
-# Internal Port variables for PyQt ports:
-# PYQT_DIST - This port is part of PyQt5/6 itself. Variables and
-# targets are then set assuming a certain tarball and
-# port layout.
+# Port variables for PyQt ports:
# USE_PYQT - List of PyQt components to depend on
# * foo:build only build depend
# * foo:run only run depend
@@ -23,59 +24,79 @@
.if !defined(_INCLUDE_USES_PYQT_MK)
_INCLUDE_USES_PYQT_MK= yes
-# At the moment we support PyQt bindings versions 5 and 6
-# option is for internal use by the py-sip ports.
-_PYQT_SUPPORTED= 5 6 sip
+# At the moment we support PyQt bindings versions 5 and 6.
+# The sip argument is for internal use by devel/py-sip.
+_PYQT_SUPPORTED= 5 6 sip
. if empty(pyqt_ARGS)
-IGNORE= pyqt needs a qt-version (${_PYQT_SUPPORTED})
+IGNORE= pyqt needs a qt-version (${_PYQT_SUPPORTED})
. endif
-# At the moment we support PyQt bindings versions 5 and 6
. for ver in ${_PYQT_SUPPORTED:O:u}
. if ${pyqt_ARGS:M${ver}}
. if empty(_PYQT_VERSION)
-_PYQT_VERSION= ${ver}
+_PYQT_VERSION= ${ver}
. else
-IGNORE?= cannot be installed: different PYQT versions specified via pyqt:[${_PYQT_SUPPORTED:S/ //g}]
+IGNORE?= cannot be installed: different PYQT versions specified via pyqt:[${_PYQT_SUPPORTED:S/ //g}]
. endif
. endif
. endfor
. if empty(_PYQT_VERSION)
-IGNORE?= USES=pyqt needs a version number (valid values: ${_PYQT_SUPPORTED})
+IGNORE?= USES=pyqt needs a version number (valid values: ${_PYQT_SUPPORTED})
_PYQT_VERSION= 0
. endif
+. if ${pyqt_ARGS:Mdist}
+_PYQT_DIST= yes
+. endif
+
PYQT_MAINTAINER= kde@FreeBSD.org
MASTER_SITE_RIVERBANK= https://www.riverbankcomputing.com/static/Downloads/%SUBDIR%/
+MASTER_SITE_RBDEV= https://www.riverbankcomputing.com/pypi/packages/%SUBDIR%/
+
+# Qt version-agnostic components
+MASTER_SITES_PYQTBUILDER= PYPI/source/P/PyQt-builder
+MASTER_SITES_QSCI2= RIVERBANK/QScintilla/${PORTVERSION} \
+ SF/pyqt/QScintilla2/QScintilla-${PORTVERSION}
+MASTER_SITES_SIP= PYPI/source/s/sip
+
+# Qt 5 components
+MASTER_SITES_PYQT5SIP= PYPI/source/P/PyQt5-sip
+MASTER_SITES_PYQT5= PYPI/source/P/PyQt5
+MASTER_SITES_PYQT53D= PYPI/source/P/PyQt3D
+MASTER_SITES_PYQT5CHARTS= PYPI/source/P/PyQtChart
+MASTER_SITES_PYQT5DATAVIS3D= PYPI/source/P/PyQtDataVisualization
+MASTER_SITES_PYQT5NETWORKAUTH= PYPI/source/P/PyQtNetworkAuth
+MASTER_SITES_PYQT5WEBENGINE= PYPI/source/P/PyQtWebEngine
+
+# Qt 6 components
+MASTER_SITES_PYQT6SIP= PYPI/source/P/PyQt6-sip
+MASTER_SITES_PYQT6= PYPI/source/P/PyQt6 \
+ RBDEV/PyQt6
+MASTER_SITES_PYQT63D= PYPI/source/P/PyQt6-3D \
+ RBDEV/PyQt6-3D
+MASTER_SITES_PYQT6CHARTS= PYPI/source/P/PyQt6-Charts \
+ RBDEV/PyQt6-Charts
+MASTER_SITES_PYQT6DATAVIS3D= PYPI/source/P/PyQt6-DataVisualization \
+ RBDEV/PyQt6-DataVisualization
+MASTER_SITES_PYQT6GRAPHS= PYPI/source/P/PyQt6-Graphs \
+ RBDEV/PyQt6-Graphs
+MASTER_SITES_PYQT6NETWORKAUTH= PYPI/source/P/PyQt6-NetworkAuth \
+ RBDEV/PyQt6-NetworkAuth
+MASTER_SITES_PYQT6WEBENGINE= PYPI/source/P/PyQt6-WebEngine \
+ RBDEV/PyQt6-WebEngine
-MASTER_SITES_SIP= https://pypi.python.org/packages/source/s/sip/
-MASTER_SITES_PYQT5= https://pypi.python.org/packages/source/P/PyQt5/
-MASTER_SITES_PYQT6= https://pypi.python.org/packages/source/P/PyQt6/
-MASTER_SITES_PYQT= ${MASTER_SITES_PYQT${_PYQT_VERSION}}
-MASTER_SITES_PYQT5SIP= https://pypi.python.org/packages/source/P/PyQt5-sip/
-MASTER_SITES_PYQT6SIP= https://pypi.python.org/packages/source/P/PyQt6-sip/
-MASTER_SITES_PYQTSIP= ${MASTER_SITES_PYQT${_PYQT_VERSION}SIP}
-MASTER_SITES_PYQT63D= https://pypi.python.org/packages/source/P/PyQt6-3D/
-MASTER_SITES_PYQT3D= ${MASTER_SITES_PYQT${_PYQT_VERSION}3D}
-MASTER_SITES_PYQT5CHART= https://pypi.python.org/packages/source/P/PyQtChart/
-MASTER_SITES_PYQT6CHART= https://pypi.python.org/packages/source/P/PyQt6-Charts/
-MASTER_SITES_PYQTCHART= ${MASTER_SITES_PYQT${_PYQT_VERSION}CHART}
-MASTER_SITES_PYQT6DATAVIS3D= https://pypi.python.org/packages/source/P/PyQt6-DataVisualization/
+# Unversioned MASTER_SITES
+MASTER_SITES_PYQT= ${MASTER_SITES_PYQT${_PYQT_VERSION}}
+MASTER_SITES_PYQTSIP= ${MASTER_SITES_PYQT${_PYQT_VERSION}SIP}
+MASTER_SITES_PYQT3D= ${MASTER_SITES_PYQT${_PYQT_VERSION}3D}
+MASTER_SITES_PYQTCHARTS= ${MASTER_SITES_PYQT${_PYQT_VERSION}CHARTS}
MASTER_SITES_PYQTDATAVIS3D= ${MASTER_SITES_PYQT${_PYQT_VERSION}DATAVIS3D}
-MASTER_SITES_PYQT5NETWORKAUTH= https://pypi.python.org/packages/source/P/PyQtNetworkAuth/
-MASTER_SITES_PYQT6NETWORKAUTH= https://pypi.python.org/packages/source/P/PyQt6-NetworkAuth/
-MASTER_SITES_PYQTNETWORKAUTH= ${MASTER_SITES_PYQT${_PYQT_VERSION}NETWORKAUTH}
-MASTER_SITES_PYQTBUILDER= https://pypi.io/packages/source/P/PyQt-builder/
-MASTER_SITES_PYQT5WEBENGINE= https://pypi.python.org/packages/source/P/PyQtWebEngine/
-MASTER_SITES_PYQT6WEBENGINE= https://pypi.python.org/packages/source/P/PyQt6-WebEngine/
-MASTER_SITES_PYQTWEBENGINE= ${MASTER_SITES_PYQT${_PYQT_VERSION}WEBENGINE}
-#https://www.riverbankcomputing.com/static/Downloads/QScintilla/2.12.0/QScintilla_src-2.12.0.tar.gz
-MASTER_SITES_QSCI2= RIVERBANK/QScintilla/${PORTVERSION} \
- SF/pyqt/QScintilla2/QScintilla-${PORTVERSION} \
- GENTOO
+MASTER_SITES_PYQTGRAPHS= ${MASTER_SITES_PYQT${_PYQT_VERSION}GRAPHS}
+MASTER_SITES_PYQTNETWORKAUTH= ${MASTER_SITES_PYQT${_PYQT_VERSION}NETWORKAUTH}
+MASTER_SITES_PYQTWEBENGINE= ${MASTER_SITES_PYQT${_PYQT_VERSION}WEBENGINE}
# PORTEPOCH is important here, because version-comparisons in *_DEPENDS
# take it into account (visually, 6.5.1 >= 5.5.3,1, but it isn't).
@@ -85,100 +106,125 @@ MASTER_SITES_QSCI2= RIVERBANK/QScintilla/${PORTVERSION} \
#
# Where noted, the ports are epoched and the py-${comp}-PATH variables,
# below, should have a suitable epoch appended to the version.
-SIP_VERSION= 6.8.3 # ,1
-SIP4_VERSION= 4.19.25
-QSCI2_VERSION= 2.14.1
-PYQT5_VERSION= 5.15.10
-PYQT6_VERSION= 6.6.1
-PYQT63D_VERSION= 6.6.0
-PYQT5CHART_VERSION= 5.15.6
-PYQT6CHART_VERSION= 6.6.0
-PYQT6DATAVIS3D_VERSION= 6.6.0
-PYQT5NETWORKAUTH_VERSION=5.15.5
-PYQT6NETWORKAUTH_VERSION=6.6.0
-PYQT5WEBENGINE_VERSION= 5.15.6
-PYQT6WEBENGINE_VERSION= 6.6.0
-PYQT5SIP_VERSION= 12.13.0
-PYQT6SIP_VERSION= 13.6.0
-PYQTBUILDER_VERSION= 1.15.4
-
-SIP4_DISTNAME= sip-${SIP4_VERSION}
-PYQT5_DISTNAME= PyQt5-${PYQT5_VERSION}
-PYQT6_DISTNAME= PyQt6-${PYQT6_VERSION}
-PYQT5SIP_DISTNAME= PyQt5_sip-${PYQT5SIP_VERSION}
-PYQT6SIP_DISTNAME= PyQt6_sip-${PYQT6SIP_VERSION}
-PYQT63D_DISTNAME= PyQt6_3D-${PYQT63D_VERSION}
-PYQT5CHART_DISTNAME= PyQtChart-${PYQT5CHART_VERSION}
-PYQT6CHART_DISTNAME= PyQt6_Charts-${PYQT6CHART_VERSION}
-PYQT6DATAVIS3D_DISTNAME= PyQt6_DataVisualization-${PYQT6DATAVIS3D_VERSION}
+
+# Qt version-agnostic components
+PYQTBUILDER_VERSION= 1.18.2
+QSCI2_VERSION= 2.14.1
+SIP_VERSION= 6.12.0 # ,1
+
+# Qt 5 components
+PYQT5SIP_VERSION= 12.17.0
+PYQT5_VERSION= 5.15.11
+PYQT53D_VERSION= 5.15.7
+PYQT5CHARTS_VERSION= 5.15.7
+PYQT5DATAVIS3D_VERSION= 5.15.6
+PYQT5NETWORKAUTH_VERSION= 5.15.6
+PYQT5WEBENGINE_VERSION= 5.15.7
+
+# Qt 6 components
+PYQT6SIP_VERSION= 13.10.2
+PYQT6_VERSION= 6.9.1
+PYQT63D_VERSION= 6.9.0
+PYQT6CHARTS_VERSION= 6.9.0
+PYQT6DATAVIS3D_VERSION= 6.9.0
+PYQT6GRAPHS_VERSION= 6.9.0
+PYQT6NETWORKAUTH_VERSION= 6.9.0
+PYQT6WEBENGINE_VERSION= 6.9.0
+
+# Qt version-agnostic components
+PYQTBUILDER_DISTNAME= pyqt_builder-${PYQTBUILDER_VERSION}
+QSCI2_DISTNAME= QScintilla_src-${QSCI2_VERSION}
+
+# Qt 5 components
+PYQT5SIP_DISTNAME= pyqt5_sip-${PYQT5SIP_VERSION}
+PYQT5_DISTNAME= PyQt5-${PYQT5_VERSION}
+PYQT53D_DISTNAME= PyQt3D-${PYQT53D_VERSION}
+PYQT5CHARTS_DISTNAME= PyQtChart-${PYQT5CHARTS_VERSION}
+PYQT5DATAVIS3D_DISTNAME= PyQtDataVisualization-${PYQT5DATAVIS3D_VERSION}
PYQT5NETWORKAUTH_DISTNAME= PyQtNetworkAuth-${PYQT5NETWORKAUTH_VERSION}
-PYQT6NETWORKAUTH_DISTNAME= PyQt6_NetworkAuth-${PYQT6NETWORKAUTH_VERSION}
PYQT5WEBENGINE_DISTNAME= PyQtWebEngine-${PYQT5WEBENGINE_VERSION}
-PYQT6WEBENGINE_DISTNAME= PyQt6_WebEngine-${PYQT6WEBENGINE_VERSION}
+
+# Qt 6 components
+PYQT6SIP_DISTNAME= pyqt6_sip-${PYQT6SIP_VERSION}
+PYQT6_DISTNAME= pyqt6-${PYQT6_VERSION}
+PYQT63D_DISTNAME= pyqt6_3d-${PYQT63D_VERSION}
+PYQT6CHARTS_DISTNAME= pyqt6_charts-${PYQT6CHARTS_VERSION}
+PYQT6DATAVIS3D_DISTNAME= pyqt6_datavisualization-${PYQT6DATAVIS3D_VERSION}
+PYQT6GRAPHS_DISTNAME= pyqt6_graphs-${PYQT6GRAPHS_VERSION}
+PYQT6NETWORKAUTH_DISTNAME= pyqt6_networkauth-${PYQT6NETWORKAUTH_VERSION}
+PYQT6WEBENGINE_DISTNAME= pyqt6_webengine-${PYQT6WEBENGINE_VERSION}
+
PYQT5_DISTINFO_FILE= ${.CURDIR:H:H}/devel/${PYQT_RELNAME}/distinfo
PYQT6_DISTINFO_FILE= ${.CURDIR:H:H}/devel/${PYQT_RELNAME}/distinfo
-QSCI2_DISTNAME= QScintilla_src-${QSCI2_VERSION}
+
PYQT5_LICENSE= GPLv3
PYQT6_LICENSE= GPLv3
-_USE_PYQT_ALL= pyqt5 pyqt6 3d chart datavis3d networkauth webengine
-_USE_SIP_ALL= sip pysip
+_USE_PYQT_ALL= pyqt5 pyqt6 3d charts graphs datavis3d networkauth webengine
+_USE_SIP_ALL= pysip sip
_USE_QSCINTILLA= qscintilla2
_USE_PYQTBUILDER= qtbuilder
# Unversioned variables for the rest of the file
-PYQT_VERSION= ${PYQT${_PYQT_VERSION}_VERSION}
-PYQT3D_VERSION= ${PYQT${_PYQT_VERSION}3D_VERSION}
-PYQTCHART_VERSION= ${PYQT${_PYQT_VERSION}CHART_VERSION}
-PYQTDATAVIS3D_VERSION= ${PYQT${_PYQT_VERSION}DATAVIS3D_VERSION}
-PYQTNETWORKAUTH_VERSION=${PYQT${_PYQT_VERSION}NETWORKAUTH_VERSION}
-PYQTWEBENGINE_VERSION=${PYQT${_PYQT_VERSION}WEBENGINE_VERSION}
-PYQT_RELNAME= py-qt${_PYQT_VERSION}
-PYQT_PY_RELNAME= ${PYTHON_PKGNAMEPREFIX}qt${_PYQT_VERSION}
-PYQT_MASTERSITES= ${MASTER_SITES_PYQT${_PYQT_VERSION}}
-PYQT_DISTNAME= ${PYQT${_PYQT_VERSION}_DISTNAME}
-PYQT3D_DISTNAME= ${PYQT${_PYQT_VERSION}3D_DISTNAME}
-PYQTCHART_DISTNAME= ${PYQT${_PYQT_VERSION}CHART_DISTNAME}
-PYQTDATAVIS3D_DISTNAME= ${PYQT${_PYQT_VERSION}DATAVIS3D_DISTNAME}
-PYQTNETWORKAUTH_DISTNAME=${PYQT${_PYQT_VERSION}NETWORKAUTH_DISTNAME}
-PYQTWEBENGINE_DISTNAME=${PYQT${_PYQT_VERSION}WEBENGINE_DISTNAME}
-PYQT_DISTINFO_FILE= ${PYQT${_PYQT_VERSION}_DISTINFO_FILE}
-PYQT_LICENSE= ${PYQT${_PYQT_VERSION}_LICENSE}
+PYQTSIP_VERSION= ${PYQT${_PYQT_VERSION}SIP_VERSION}
+PYQT_VERSION= ${PYQT${_PYQT_VERSION}_VERSION}
+PYQT3D_VERSION= ${PYQT${_PYQT_VERSION}3D_VERSION}
+PYQTCHARTS_VERSION= ${PYQT${_PYQT_VERSION}CHARTS_VERSION}
+PYQTDATAVIS3D_VERSION= ${PYQT${_PYQT_VERSION}DATAVIS3D_VERSION}
+PYQTGRAPHS_VERSION= ${PYQT${_PYQT_VERSION}GRAPHS_VERSION}
+PYQTNETWORKAUTH_VERSION= ${PYQT${_PYQT_VERSION}NETWORKAUTH_VERSION}
+PYQTWEBENGINE_VERSION= ${PYQT${_PYQT_VERSION}WEBENGINE_VERSION}
+
+PYQTSIP_DISTNAME= ${PYQT${_PYQT_VERSION}SIP_DISTNAME}
+PYQT_DISTNAME= ${PYQT${_PYQT_VERSION}_DISTNAME}
+PYQT3D_DISTNAME= ${PYQT${_PYQT_VERSION}3D_DISTNAME}
+PYQTCHARTS_DISTNAME= ${PYQT${_PYQT_VERSION}CHARTS_DISTNAME}
+PYQTDATAVIS3D_DISTNAME= ${PYQT${_PYQT_VERSION}DATAVIS3D_DISTNAME}
+PYQTGRAPHS_DISTNAME= ${PYQT${_PYQT_VERSION}GRAPHS_DISTNAME}
+PYQTNETWORKAUTH_DISTNAME= ${PYQT${_PYQT_VERSION}NETWORKAUTH_DISTNAME}
+PYQTWEBENGINE_DISTNAME= ${PYQT${_PYQT_VERSION}WEBENGINE_DISTNAME}
+
+PYQT_DISTINFO_FILE= ${PYQT${_PYQT_VERSION}_DISTINFO_FILE}
+PYQT_LICENSE= ${PYQT${_PYQT_VERSION}_LICENSE}
+
+PYQT_RELNAME= py-qt${_PYQT_VERSION}
+PYQT_PY_RELNAME= ${PYTHON_PKGNAMEPREFIX}qt${_PYQT_VERSION}
# PATH (see note about epochs, above)
py-sip_PATH= ${PYTHON_PKGNAMEPREFIX}sip>=${SIP_VERSION},1
-py-pysip_PATH= ${PYQT_PY_RELNAME}-sip>=${PYQTSIP_VERSION}
+py-pysip_PATH= ${PYTHON_PKGNAMEPREFIX}PyQt${_PYQT_VERSION}-sip>=${PYQTSIP_VERSION}
py-qscintilla2_PATH= ${PYQT_PY_RELNAME}-qscintilla2>=${QSCI2_VERSION}
py-qtbuilder_PATH= ${PYTHON_PKGNAMEPREFIX}PyQt-builder>=${PYQTBUILDER_VERSION}
py-pyqt5_PATH= ${PYQT_PY_RELNAME}-pyqt>=${PYQT_VERSION}
py-pyqt6_PATH= ${PYQT_PY_RELNAME}-pyqt>=${PYQT_VERSION}
py-3d_PATH= ${PYQT_PY_RELNAME}-3d>=${PYQT3D_VERSION}
-py-chart_PATH= ${PYQT_PY_RELNAME}-chart>=${PYQTCHART_VERSION}
+py-charts_PATH= ${PYQT_PY_RELNAME}-charts>=${PYQTCHARTS_VERSION}
py-datavis3d_PATH= ${PYQT_PY_RELNAME}-datavis3d>=${PYQTDATAVIS3D_VERSION}
+py-graphs_PATH= ${PYQT_PY_RELNAME}-graphs>=${PYQTCHART_VERSION}
py-networkauth_PATH= ${PYQT_PY_RELNAME}-networkauth>=${PYQTNETWORKAUTH_VERSION}
py-webengine_PATH= ${PYQT_PY_RELNAME}-webengine>=${PYQTWEBENGINE_VERSION}
# PORT
py-sip_PORT= devel/py-sip
-py-qtbuilder_PORT= devel/py-qtbuilder
py-pysip_PORT= devel/${PYQT_RELNAME}-sip
py-qscintilla2_PORT= devel/${PYQT_RELNAME}-qscintilla2
-py-positioning_PORT= devel/${PYQT_RELNAME}-positioning
+py-qtbuilder_PORT= devel/py-qtbuilder
py-pyqt5_PORT= devel/${PYQT_RELNAME}-pyqt
py-pyqt6_PORT= devel/${PYQT_RELNAME}-pyqt
py-3d_PORT= graphics/${PYQT_RELNAME}-3d
-py-chart_PORT= x11-toolkits/${PYQT_RELNAME}-chart
+py-charts_PORT= x11-toolkits/${PYQT_RELNAME}-charts
py-datavis3d_PORT= x11-toolkits/${PYQT_RELNAME}-datavis3d
+py-graphs_PORT= x11-toolkits/${PYQT_RELNAME}-graphs
py-networkauth_PORT= net/${PYQT_RELNAME}-networkauth
py-webengine_PORT= www/${PYQT_RELNAME}-webengine
-# The versionned executable of sip
+# The versioned executable of sip
SIP= ${LOCALBASE}/bin/sip-build-${PYTHON_VER}
# Relative directories
_VERSION_SUBDIR_REL= PyQt${_PYQT_VERSION}/${PYTHON_VER}
-_APIDIR_REL= share/${_VERSION_SUBDIR_REL}/qsci
-_DOCDIR_REL= share/doc/${_VERSION_SUBDIR_REL}
+_APIDIR_REL= share/${_VERSION_SUBDIR_REL}/qsci
+_DOCDIR_REL= share/doc/${_VERSION_SUBDIR_REL}
_EXAMPLEDIR_REL= share/examples/${_VERSION_SUBDIR_REL}
_SIPDIR_REL= PyQt${_PYQT_VERSION}/bindings
_DESIGNERDIR_REL= ${QT_PLUGINDIR_REL}/designer/${_VERSION_SUBDIR_REL}
@@ -202,7 +248,7 @@ PLIST_SUB+= PYQT_APIDIR=${_APIDIR_REL} \
PYQT_QSCIVERSION=${QSCI2_VERSION} \
PYQT_PYQTVERSION=${PYQT_VERSION}
-. if defined(PYQT_DIST)
+. if defined(_PYQT_DIST)
LICENSE?= ${PYQT_LICENSE}
@@ -237,7 +283,7 @@ do-install:
(cd ${WRKSRC} ; ${SETENVI} ${WRK_ENV} ${MAKE_ENV} ${MAKE} -C ./build install INSTALL_ROOT=${STAGEDIR} )
. endif # !target(do-install)
-. endif # defined(PYQT_DIST)
+. endif # defined(_PYQT_DIST)
# Set build, run and test depends -- we need to prefix them internally with "py-"
# else we conflict with the ones defined in bsd.qt.mk with the same name
@@ -245,7 +291,7 @@ _USE_PYQT_ALL+= ${_USE_SIP_ALL} \
${_USE_QSCINTILLA} \
${_USE_PYQTBUILDER}
. for comp in ${_USE_PYQT_ALL:O:u}
-_USE_PYQT_ALL_SUFFIXED+= py-${comp} py-${comp}:build py-${comp}:run py-${comp}:test
+_USE_PYQT_ALL_PREFIXED+= py-${comp} py-${comp}:build py-${comp}:run py-${comp}:test
py-${comp}_BUILD_DEPENDS?= ${py-${comp}_PATH}:${py-${comp}_PORT}@${PY_FLAVOR}
py-${comp}_RUN_DEPENDS?= ${py-${comp}_PATH}:${py-${comp}_PORT}@${PY_FLAVOR}
py-${comp}_TEST_DEPENDS?= ${py-${comp}_PATH}:${py-${comp}_PORT}@${PY_FLAVOR}
@@ -254,9 +300,9 @@ py-${comp}_run_RUN_DEPENDS?= ${py-${comp}_RUN_DEPENDS}
py-${comp}_test_TEST_DEPENDS?= ${py-${comp}_TEST_DEPENDS}
. endfor
-_USE_PYQT= ${USE_PYQT:O:u}
+_USE_PYQT= ${USE_PYQT:O:u}
. for comp in ${_USE_PYQT}
-. if ${_USE_PYQT_ALL_SUFFIXED:Mpy-${comp}}
+. if ${_USE_PYQT_ALL_PREFIXED:Mpy-${comp}}
BUILD_DEPENDS+= ${py-${comp:S/:/_/}_BUILD_DEPENDS}
RUN_DEPENDS+= ${py-${comp:S/:/_/}_RUN_DEPENDS}
TEST_DEPENDS+= ${py-${comp:S/:/_/}_TEST_DEPENDS}
diff --git a/Mk/Uses/python.mk b/Mk/Uses/python.mk
index feb46eb9b70b..79047db2fff1 100644
--- a/Mk/Uses/python.mk
+++ b/Mk/Uses/python.mk
@@ -17,19 +17,19 @@
# Examples:
#
# USES=python:2.7 # Supports Python 2.7 Only
-# USES=python:3.8+ # Supports Python 3.8 or later
-# USES=python:3.8-3.10 # Supports Python 3.8 to 3.10
-# USES=python:-3.8 # Supports Python up to 3.8
-# USES=python # Supports 3.8+
+# USES=python:3.9+ # Supports Python 3.9 or later
+# USES=python:3.9-3.10 # Supports Python 3.9 to 3.10
+# USES=python:-3.9 # Supports Python up to 3.9
+# USES=python # Supports 3.9+
#
# NOTE: <version-spec> should be as specific as possible, matching the versions
# upstream declares support for, without being incorrect. In particular,
-# USES=python *without* a <version-spec> means 3.8+,
+# USES=python *without* a <version-spec> means 3.9+,
# including unreleased versions, which is probably incorrect.
#
# Not specifying a <version-spec> should only be used when a more specific
# <version-spec> cannot be specified due to syntax limitations, for
-# example: 2.7,3.8-3.9, but even in this case, X.Y+ (2.7+), or -X.Y (-3.8)
+# example: 2.7,3.9-3.10, but even in this case, X.Y+ (2.7+), or -X.Y (-3.9)
# is preferred and likely more correct.
#
# patch Python is needed at patch time. Adds dependency to PATCH_DEPENDS.
@@ -50,7 +50,7 @@
# Exported variables:
#
# PYTHON_VERSION - The chosen Python interpreter including the version,
-# e.g. python2.7, python3.8, etc.
+# e.g. python2.7, python3.9, etc.
#
# Variables, which can be set by the port:
#
@@ -96,6 +96,12 @@
#
# cython_test - Depend on lang/cython for tests.
#
+# cython3 - Depend on lang/cython3 at build-time.
+#
+# cython3_run - Depend on lang/cython3 at run-time.
+#
+# cython3_test - Depend on lang/cython3 for tests.
+#
# flavors - Force creation of flavors for Python 2 and 3 default
# versions, where applicable.
#
@@ -223,17 +229,34 @@
# PYTHON_PORTSDIR - The port directory of the chosen Python interpreter
#
# PYTHON_REL - The release number of the chosen Python interpreter
-# without dots, e.g. 20706, 30801, ...
+# without dots, e.g. 20706, 30901, ...
#
# PYTHON_SUFFIX - The major-minor release number of the chosen Python
# interpreter without dots, e.g. 27, 38, ...
# Used for prefixes and suffixes.
#
+# PYTHON_BASESUFFIX - PYTHON_SUFFIX without the threaded ABI flag.
+#
+# PYTHON_TAG - Defined by PEP 3147, magic tag containing
+# implementation name and shorthand version,
+# primarily for bytecode files. Includes
+# preceding dot, e.g. .cpython-312,
+# .cpython-313, ...
+#
+# PYTHON_SOABI - Defined by PEP 3149, tag containing
+# implementation name, shorthand version
+# and ABI tags, primarily for compiled
+# extension modules. Includes preceding
+# dot, e.g. .cpython-313, .cpython-313t,
+# .cpython-313td, ...
+#
# PYTHON_MAJOR_VER - The major release version of the chosen Python
# interpreter, e.g. 2, 3, ...
#
# PYTHON_VER - The major-minor release version of the chosen Python
-# interpreter, e.g. 2.7, 3.8, ...
+# interpreter, e.g. 2.7, 3.9, ...
+#
+# PYTHON_BASEVER - PYTHON_VER without the threaded ABI flag.
#
# PYTHON_ABIVER - Additional ABI flags set by the chosen Python
# interpreter, e.g. md
@@ -278,7 +301,9 @@
# PYTHON_PLATFORM=${PYTHON_PLATFORM}
# PYTHON_SITELIBDIR=${PYTHONPREFIX_SITELIBDIR}
# PYTHON_SUFFIX=${PYTHON_SUFFIX}
+# PYTHON_BASESUFFIX=${PYTHON_BASESUFFIX}
# PYTHON_VER=${PYTHON_VER}
+# PYTHON_BASEVER=${PYTHON_BASEVER}
# PYTHON_VERSION=${PYTHON_VERSION}
#
# where PYTHON_INCLUDEDIR, PYTHON_LIBDIR and PYTHON_SITELIBDIR have their PREFIX
@@ -313,11 +338,13 @@
.if !defined(_INCLUDE_USES_PYTHON_MK)
_INCLUDE_USES_PYTHON_MK= yes
+ZEROREGS_UNSAFE= yes
+
# What Python version and what Python interpreters are currently supported?
# When adding a version, please keep the comment in
# Mk/bsd.default-versions.mk in sync.
-_PYTHON_VERSIONS= 3.9 3.8 3.10 3.11 2.7 # preferred first
-_PYTHON_PORTBRANCH= 3.9 # ${_PYTHON_VERSIONS:[1]}
+_PYTHON_VERSIONS= 3.11 3.12 3.10 3.9 2.7 # preferred first
+_PYTHON_PORTBRANCH= 3.11 # ${_PYTHON_VERSIONS:[1]}
_PYTHON_BASECMD= ${LOCALBASE}/bin/python
_PYTHON_RELPORTDIR= lang/python
@@ -331,6 +358,9 @@ _VALID_PYTHON_FEATURES= allflavors \
cython \
cython_run \
cython_test \
+ cython3 \
+ cython3_run \
+ cython3_test \
distutils \
flavors \
noegginfo \
@@ -420,13 +450,13 @@ DEV_WARNING+= "lang/python27 reached End of Life and will be removed somewhere
. elif ${_PYTHON_ARGS} == 2
DEV_ERROR+= "USES=python:2 is no longer supported, use USES=python:2.7"
. elif ${_PYTHON_ARGS} == 3
-DEV_ERROR+= "USES=python:3 is no longer supported, use USES=python:3.8+ or an appropriate version range"
+DEV_ERROR+= "USES=python:3 is no longer supported, use USES=python:3.9+ or an appropriate version range"
. endif # ${_PYTHON_ARGS} == 2.7
_PYTHON_VERSION:= ${PYTHON_DEFAULT}
. if empty(_PYTHON_ARGS)
-_PYTHON_ARGS= 3.8+
+_PYTHON_ARGS= 3.9+
. endif
# Validate Python version whether it meets the version restriction.
@@ -449,9 +479,9 @@ IGNORE= uses unknown USES=python arguments: ${_PYTHON_ARGS}
_VC= C/^([1-9]\.)([0-9])$$/\10\2/
.undef _PYTHON_VERSION_NONSUPPORTED
-. if !empty(_PYTHON_VERSION_MINIMUM) && (${_PYTHON_VERSION:${_VC}} < ${_PYTHON_VERSION_MINIMUM:${_VC}})
+. if !empty(_PYTHON_VERSION_MINIMUM) && (${_PYTHON_VERSION:${_VC}:S/t$//} < ${_PYTHON_VERSION_MINIMUM:${_VC}:S/t$//})
_PYTHON_VERSION_NONSUPPORTED= ${_PYTHON_VERSION_MINIMUM} at least
-. elif !empty(_PYTHON_VERSION_MAXIMUM) && (${_PYTHON_VERSION:${_VC}} > ${_PYTHON_VERSION_MAXIMUM:${_VC}})
+. elif !empty(_PYTHON_VERSION_MAXIMUM) && (${_PYTHON_VERSION:${_VC}:S/t$//} > ${_PYTHON_VERSION_MAXIMUM:${_VC}:S/t$//})
_PYTHON_VERSION_NONSUPPORTED= ${_PYTHON_VERSION_MAXIMUM} at most
. endif
@@ -462,9 +492,9 @@ _PYTHON_VERSION_NONSUPPORTED= ${_PYTHON_VERSION_MAXIMUM} at most
__VER= ${ver}
. if !defined(_PYTHON_VERSION) && \
!(!empty(_PYTHON_VERSION_MINIMUM) && ( \
- ${__VER:${_VC}} < ${_PYTHON_VERSION_MINIMUM:${_VC}})) && \
+ ${__VER:${_VC}:S/t$//} < ${_PYTHON_VERSION_MINIMUM:${_VC}:S/t$//})) && \
!(!empty(_PYTHON_VERSION_MAXIMUM) && ( \
- ${__VER:${_VC}} > ${_PYTHON_VERSION_MAXIMUM:${_VC}}))
+ ${__VER:${_VC}:S/t$//} > ${_PYTHON_VERSION_MAXIMUM:${_VC}:S/t$//}))
_PYTHON_VERSION= ${ver}
. endif
. endfor
@@ -479,9 +509,9 @@ IGNORE= needs an unsupported version of Python
. for ver in ${PYTHON_DEFAULT} ${PYTHON2_DEFAULT} ${_PYTHON_VERSIONS}
__VER= ${ver}
. if !(!empty(_PYTHON_VERSION_MINIMUM) && ( \
- ${__VER:${_VC}} < ${_PYTHON_VERSION_MINIMUM:${_VC}})) && \
+ ${__VER:${_VC}:S/t$//} < ${_PYTHON_VERSION_MINIMUM:${_VC}:S/t$//})) && \
!(!empty(_PYTHON_VERSION_MAXIMUM) && ( \
- ${__VER:${_VC}} > ${_PYTHON_VERSION_MAXIMUM:${_VC}}))
+ ${__VER:${_VC}:S/t$//} > ${_PYTHON_VERSION_MAXIMUM:${_VC}:S/t$//}))
. if empty(_VALID_PYTHON_VERSIONS:M${ver})
_VALID_PYTHON_VERSIONS+= ${ver}
. endif
@@ -514,7 +544,7 @@ FLAVOR= ${FLAVORS:[1]}
. endif
. endif
-. if ${FLAVOR:Mpy[23][0-9]}${FLAVOR:Mpy[23][1-9][0-9]}
+. if ${FLAVOR:Mpy[23][0-9]}${FLAVOR:Mpy[23][1-9][0-9]}${FLAVOR:Mpy31[3-9]t}
_PYTHON_VERSION= ${FLAVOR:S/py//:C/(.)/\1./}
. endif
@@ -528,7 +558,7 @@ PKGNAMESUFFIX= ${PYTHON_PKGNAMESUFFIX}
# To avoid having dependencies with @ and empty flavor:
# _PYTHON_VERSION is either set by (first that matches):
# - If using Python flavors, from the current Python flavor
-# - If using a version restriction (USES=python:3.8+), from the first
+# - If using a version restriction (USES=python:3.9+), from the first
# acceptable default Python version.
# - From PYTHON_DEFAULT
PY_FLAVOR= py${_PYTHON_VERSION:S/.//}
@@ -537,7 +567,9 @@ PYTHON_VERSION= python${_PYTHON_VERSION}
# Got the correct python version, set some publicly accessible variables
PYTHON_VER= ${_PYTHON_VERSION}
+PYTHON_BASEVER= ${PYTHON_VER:S/t$//}
PYTHON_SUFFIX= ${_PYTHON_VERSION:S/.//g}
+PYTHON_BASESUFFIX= ${PYTHON_SUFFIX:S/t$//}
PYTHON_MAJOR_VER= ${PYTHON_VER:R}
PYTHON_REL= # empty
PYTHON_ABIVER= # empty
@@ -545,12 +577,11 @@ PYTHON_PORTSDIR= ${_PYTHON_RELPORTDIR}${PYTHON_SUFFIX}
# Protect partial checkouts from Mk/Scripts/functions.sh:export_ports_env().
. if !defined(_PORTS_ENV_CHECK) || exists(${PORTSDIR}/${PYTHON_PORTSDIR})
-.include "${PORTSDIR}/${PYTHON_PORTSDIR}/Makefile.version"
+.include "${PORTSDIR}/${PYTHON_PORTSDIR:S/t$//}/Makefile.version"
. endif
# Create a 5 integer version string, prefixing 0 to the minor and patch
# tokens if it's a single character. Only use the first 3 tokens of
-# PORTVERSION to support pre-release versions (rc3, alpha4, etc) of
-# any Python port (lang/pythonXY)
+# DISTVERSION to stay consistent regardless of pre-release or ABI flags
PYTHON_REL= ${PYTHON_DISTVERSION:C/^([0-9]+\.[0-9]+\.[0-9]+).*/\1/:C/\.([0-9])$/.0\1/:C/\.([0-9]\.[0-9]+)/.0\1/:S/.//g}
# Might be overridden by calling ports
@@ -562,9 +593,11 @@ PYTHON_ABIVER!= ${PYTHON_CMD}-config --abiflags
. endif
. if ${PYTHON_REL} >= 30807
-PYTHON_EXT_SUFFIX= .cpython-${PYTHON_SUFFIX}
+PYTHON_TAG= .cpython-${PYTHON_BASESUFFIX}
+PYTHON_SOABI= .cpython-${PYTHON_SUFFIX}
. else
-PYTHON_EXT_SUFFIX= # empty
+PYTHON_TAG= # empty
+PYTHON_SOABI= # empty
. endif
. if ${PYTHON_MAJOR_VER} < 3
@@ -606,9 +639,9 @@ _PYTHONPKGLIST= ${WRKDIR}/.PLIST.pymodtmp
# cryptography* support
. if ${PYCRYPTOGRAPHY_DEFAULT} == rust
-CRYPTOGRAPHY_DEPENDS= ${PYTHON_PKGNAMEPREFIX}cryptography>=42.0.5,1:security/py-cryptography@${PY_FLAVOR}
+CRYPTOGRAPHY_DEPENDS= ${PYTHON_PKGNAMEPREFIX}cryptography>=44.0.3,1:security/py-cryptography@${PY_FLAVOR}
. else
-CRYPTOGRAPHY_DEPENDS= ${PYTHON_PKGNAMEPREFIX}cryptography-legacy>=3.4.8_1,1:security/py-cryptography-legacy@${PY_FLAVOR}
+CRYPTOGRAPHY_DEPENDS= ${PYTHON_PKGNAMEPREFIX}cryptography-legacy>=3.4.8_3,1:security/py-cryptography-legacy@${PY_FLAVOR}
. endif
. if defined(_PYTHON_FEATURE_CRYPTOGRAPHY_BUILD)
@@ -624,16 +657,29 @@ TEST_DEPENDS+= ${CRYPTOGRAPHY_DEPENDS}
. endif
# cython* support
+
. if defined(_PYTHON_FEATURE_CYTHON)
-BUILD_DEPENDS+= cython-${PYTHON_VER}:lang/cython@${PY_FLAVOR}
+BUILD_DEPENDS+= ${PYTHON_PKGNAMEPREFIX}cython>=0.29.37<3:lang/cython@${PY_FLAVOR}
. endif
. if defined(_PYTHON_FEATURE_CYTHON_RUN)
-RUN_DEPENDS+= cython-${PYTHON_VER}:lang/cython@${PY_FLAVOR}
+RUN_DEPENDS+= ${PYTHON_PKGNAMEPREFIX}cython>=0.29.37<3:lang/cython@${PY_FLAVOR}
. endif
. if defined(_PYTHON_FEATURE_CYTHON_TEST)
-TEST_DEPENDS+= cython-${PYTHON_VER}:lang/cython@${PY_FLAVOR}
+TEST_DEPENDS+= ${PYTHON_PKGNAMEPREFIX}cython>=0.29.37<3:lang/cython@${PY_FLAVOR}
+. endif
+
+. if defined(_PYTHON_FEATURE_CYTHON3)
+BUILD_DEPENDS+= ${PYTHON_PKGNAMEPREFIX}cython3>=3.1.2:lang/cython3@${PY_FLAVOR}
+. endif
+
+. if defined(_PYTHON_FEATURE_CYTHON3_RUN)
+RUN_DEPENDS+= ${PYTHON_PKGNAMEPREFIX}cython3>=3.1.2:lang/cython3@${PY_FLAVOR}
+. endif
+
+. if defined(_PYTHON_FEATURE_CYTHON3_TEST)
+TEST_DEPENDS+= ${PYTHON_PKGNAMEPREFIX}cython3>=3.1.2:lang/cython3@${PY_FLAVOR}
. endif
. if defined(_PYTHON_FEATURE_CONCURRENT)
@@ -675,7 +721,6 @@ BUILD_DEPENDS+= ${PYTHON_PKGNAMEPREFIX}setuptools44>0:devel/py-setuptools44@${P
RUN_DEPENDS+= ${PYTHON_PKGNAMEPREFIX}setuptools44>0:devel/py-setuptools44@${PY_FLAVOR}
. else
BUILD_DEPENDS+= ${PYTHON_PKGNAMEPREFIX}setuptools>=63.1.0:devel/py-setuptools@${PY_FLAVOR}
-RUN_DEPENDS+= ${PYTHON_PKGNAMEPREFIX}setuptools>=63.1.0:devel/py-setuptools@${PY_FLAVOR}
. endif
. endif
@@ -793,7 +838,7 @@ add-plist-pymod:
# When Python version is 3.2+ we rewrite all the filenames
# of TMPPLIST that end with .py[co], so that they conform
# to PEP 3147 (see https://www.python.org/dev/peps/pep-3147/)
-PYMAGICTAG= ${PYTHON_CMD} -c 'import sys; print(sys.implementation.cache_tag)'
+_PYMAGICTAG= ${PYTHON_CMD} -c 'import sys; print(sys.implementation.cache_tag)'
_USES_stage+= 935:add-plist-python
add-plist-python:
@${AWK} '\
@@ -802,7 +847,7 @@ add-plist-python:
/^@dirrmtry / {d = substr($$0, 11); if (d in dirs) {print $$0 "/" pc}; print $$0; next} \
{print} \
' \
- pc="__pycache__" mt="$$(${PYMAGICTAG})" pyo="opt-1.pyc" \
+ pc="__pycache__" mt="$$(${_PYMAGICTAG})" pyo="opt-1.pyc" \
${TMPPLIST} > ${TMPPLIST}.pyc_tmp
@${MV} ${TMPPLIST}.pyc_tmp ${TMPPLIST}
. endif # ${PYTHON_REL} >= 30200 && defined(_PYTHON_FEATURE_PY3KPLIST)
@@ -819,7 +864,7 @@ CMAKE_ARGS+= -DPython${PYTHON_MAJOR_VER}_EXECUTABLE:FILEPATH="${PYTHON_CMD}"
# Python 3rd-party modules
PYGAME= ${PYTHON_PKGNAMEPREFIX}game>0:devel/py-game@${PY_FLAVOR}
-PYNUMPY= ${PYTHON_PKGNAMEPREFIX}numpy>=1.16,1<1.26,1:math/py-numpy@${PY_FLAVOR}
+PYNUMPY= ${PYTHON_PKGNAMEPREFIX}numpy>=1.16,1<1.27,1:math/py-numpy@${PY_FLAVOR}
. if defined(_PYTHON_FEATURE_DISTUTILS)
. if ${PYTHON_MAJOR_VER} < 3
@@ -835,6 +880,8 @@ PY_SETUPTOOLS= ${PYTHON_PKGNAMEPREFIX}setuptools>0:devel/py-setuptools@${PY_FLAV
# Common Python modules that can be needed but only for some versions of Python.
. if ${PYTHON_REL} < 31100
PY_EXCEPTIONGROUP= ${PYTHON_PKGNAMEPREFIX}exceptiongroup>=1.1.1:devel/py-exceptiongroup@${PY_FLAVOR}
+PY_TOMLI= ${PYTHON_PKGNAMEPREFIX}tomli>=2.2.1<3:textproc/py-tomli@${PY_FLAVOR}
+PY_TYPING_EXTENSIONS= ${PYTHON_PKGNAMEPREFIX}typing-extensions>0:devel/py-typing-extensions@${PY_FLAVOR}
. endif
. if ${PYTHON_REL} >= 30000
@@ -869,8 +916,11 @@ SUB_LIST+= PYTHON_INCLUDEDIR=${PYTHONPREFIX_INCLUDEDIR} \
PYTHON_PLATFORM=${PYTHON_PLATFORM} \
PYTHON_SITELIBDIR=${PYTHONPREFIX_SITELIBDIR} \
PYTHON_SUFFIX=${PYTHON_SUFFIX} \
- PYTHON_EXT_SUFFIX=${PYTHON_EXT_SUFFIX} \
+ PYTHON_BASESUFFIX=${PYTHON_BASESUFFIX} \
+ PYTHON_TAG=${PYTHON_TAG} \
+ PYTHON_SOABI=${PYTHON_SOABI} \
PYTHON_VER=${PYTHON_VER} \
+ PYTHON_BASEVER=${PYTHON_BASEVER} \
PYTHON_VERSION=${PYTHON_VERSION}
# Substitutions for pkg-plist
@@ -881,8 +931,11 @@ PLIST_SUB+= PYTHON_INCLUDEDIR=${PYTHONPREFIX_INCLUDEDIR:S;${PREFIX}/;;} \
PYTHON_PLATFORM=${PYTHON_PLATFORM} \
PYTHON_SITELIBDIR=${PYTHONPREFIX_SITELIBDIR:S;${PREFIX}/;;} \
PYTHON_SUFFIX=${PYTHON_SUFFIX} \
- PYTHON_EXT_SUFFIX=${PYTHON_EXT_SUFFIX} \
+ PYTHON_BASESUFFIX=${PYTHON_BASESUFFIX} \
+ PYTHON_TAG=${PYTHON_TAG} \
+ PYTHON_SOABI=${PYTHON_SOABI} \
PYTHON_VER=${PYTHON_VER} \
+ PYTHON_BASEVER=${PYTHON_BASEVER} \
PYTHON_VERSION=${PYTHON_VERSION}
. if ${PYTHON_MAJOR_VER} < 3
SUB_LIST+= PYTHON2="" PYTHON3="@comment "
@@ -931,7 +984,7 @@ BUILD_DEPENDS+= ${PEP517_BUILD_DEPEND}
BUILD_DEPENDS+= ${PEP517_INSTALL_DEPEND}
. endif
-. if !target(do-configure)
+. if !target(do-configure) && !defined(HAS_CONFIGURE) && !defined(GNU_CONFIGURE)
do-configure:
@${DO_NADA}
. endif
diff --git a/Mk/Uses/qca.mk b/Mk/Uses/qca.mk
deleted file mode 100644
index 29ef2215f72f..000000000000
--- a/Mk/Uses/qca.mk
+++ /dev/null
@@ -1,28 +0,0 @@
-# Handle dependency on qca
-#
-# Feature: qca
-# Usage: USES=qca
-# Valid ARGS none
-#
-# MAINTAINER: kde@FreeBSD.org
-
-.if ! defined(_INCLUDE_QCA_MK)
-_INCLUDE_QCA_MK= yes
-
-. if !empty(qca_ARGS)
-IGNORE+= USES=qca takes no arguments
-. endif
-
-. if empty(USES:Mqt*)
-IGNORE+= Qt version not specified
-. endif
-
-_QCA_LIB= libqca-qt${_QT_VER}.so
-
-_QCA_DEFAULT_PORT= devel/qca
-_QCA_CHOSEN_PORT= DEFAULT
-_QCA_FLAVOR= qt${_QT_VER}
-
-LIB_DEPENDS+= ${_QCA_LIB}:${_QCA_${_QCA_CHOSEN_PORT}_PORT}@${_QCA_FLAVOR}
-
-.endif
diff --git a/Mk/Uses/qt-dist.mk b/Mk/Uses/qt-dist.mk
index 9b0b4d5ee08e..f863d0454dc9 100644
--- a/Mk/Uses/qt-dist.mk
+++ b/Mk/Uses/qt-dist.mk
@@ -21,16 +21,16 @@ qmake_ARGS?= # empty
.include "${USESDIR}/qmake.mk"
# Supported distribution arguments
-_COMMON_DISTS= 3d base charts connectivity datavis3d declarative imageformats location multimedia \
- networkauth quick3d quicktimeline remoteobjects scxml sensors \
- serialbus serialport speech svg tools translations virtualkeyboard \
+_COMMON_DISTS= 3d base charts connectivity datavis3d declarative \
+ imageformats location multimedia networkauth quick3d \
+ quicktimeline remoteobjects scxml sensors serialbus \
+ serialport speech svg tools translations virtualkeyboard \
wayland webchannel webengine websockets webview
-_QT5_DISTS= gamepad graphicaleffects quickcontrols \
- quickcontrols2 script webglplugin \
- x11extras xmlpatterns
-_QT6_DISTS= 5compat coap doc graphs httpserver languageserver lottie positioning \
- quick3dphysics quickeffectmaker shadertools
-
+_QT5_DISTS= gamepad graphicaleffects quickcontrols quickcontrols2 \
+ script webglplugin x11extras xmlpatterns
+_QT6_DISTS= 5compat coap doc graphs grpc httpserver languageserver \
+ lottie mqtt positioning quick3dphysics quickeffectmaker \
+ shadertools
_QT_DISTS= ${_COMMON_DISTS} \
${_QT${_QT_VER}_DISTS}
@@ -83,8 +83,8 @@ _QT5_MASTER_SITES= ${MASTER_SITE_QT}
_QT5_MASTER_SITE_SUBDIR= official_releases/qt/${_QT_VERSION:R}/${_QT_VERSION}/submodules/
# Qt6 specific master sites
_QT6_MASTER_SITES= ${MASTER_SITE_QT}
-_QT6_MASTER_SITE_SUBDIR= official_releases/qt/${_QT_VERSION:R}/${_QT_VERSION}/submodules \
- official_releases/additional_libraries/${_QT_VERSION:R}/${_QT_VERSION}/
+_QT6_MASTER_SITE_SUBDIR= ${_QT6_RELEASE_TYPE}_releases/qt/${_QT_VERSION:R}/${_QT_VERSION}/submodules
+
# Qt5 specific distnames
. if ${_QT_DIST} == webengine
_QT5_DISTNAME= ${_QT_DIST:S,^,qt,:S,$,-everywhere-opensource-src-${DISTVERSION},}
@@ -96,8 +96,8 @@ _QT5_DISTNAME_kde= ${_QT_DIST:S,^,kde-qt,:S,$,-${DISTVERSION},}
_QT6_DISTNAME= ${_QT_DIST:S,^,qt,:S,$,-everywhere-src-${DISTVERSION},}
# Effective master sites and distfile values
-# net/qt6-coap has no submodule distfile and uses USE_GITHUB
-. if ${_QT_DIST} != coap
+# net/qt6-coap and net/qt6-mqtt have no submodule distfiles and use USE_GITHUB
+. if ${_QT_DIST} != coap && ${_QT_DIST} != mqtt
MASTER_SITES= ${_QT${_QT_VER}_MASTER_SITES${_KDE_${_QT_DIST}:D_kde}}
MASTER_SITE_SUBDIR= ${_QT${_QT_VER}_MASTER_SITE_SUBDIR${_KDE_${_QT_DIST}:D_kde}}
DISTNAME= ${_QT${_QT_VER}_DISTNAME${_KDE_${_QT_DIST}:D_kde}}
@@ -108,15 +108,15 @@ DIST_SUBDIR= KDE/Qt/${_QT_VERSION}
. if ${_QT_VER:M5}
# KDE maintains a repository with a patched Qt5 distribution.
_KDE_3d= 0
-_KDE_base= 142
+_KDE_base= 123
_KDE_charts= 0
-_KDE_connectivity= 4
+_KDE_connectivity= 2
_KDE_datavis3d= 0
-_KDE_declarative= 30
+_KDE_declarative= 21
_KDE_gamepad= 0
_KDE_graphicaleffects= 0
-_KDE_imageformats= 7
-_KDE_location= 6
+_KDE_imageformats= 2
+_KDE_location= 7
_KDE_multimedia= 2
_KDE_networkauth= 0
_KDE_quick3d= 1
@@ -125,23 +125,25 @@ _KDE_quickcontrols2= 5
_KDE_quicktimeline= 0
_KDE_remoteobjects= 0
_KDE_script= 0
-_KDE_script_ORIGIN_TAG= v5.15.16-lts
-_KDE_script_VERSION= 5.15.16
+_KDE_script_ORIGIN_TAG= v5.15.19-lts
+_KDE_script_VERSION= 5.15.19
_KDE_scxml= 0
_KDE_sensors= 0
_KDE_serialbus= 0
_KDE_serialport= 0
_KDE_speech= 1
-_KDE_svg= 6
-_KDE_tools= 4
+_KDE_svg= 5
+_KDE_tools= 3
_KDE_translations= 0
_KDE_virtualkeyboard= 0
-_KDE_wayland= 60
+_KDE_wayland= 57
_KDE_webchannel= 3
-_KDE_webengine= 9
+# We track the 5.15 branch for www/qt5-webengine to make it easier to
+# stay on top of Chromium security patches.
+_KDE_webengine= 0
_KDE_webengine_BRANCH= 5.15
-_KDE_webengine_ORIGIN_TAG= v5.15.16-lts
-_KDE_webengine_VERSION= 5.15.16
+_KDE_webengine_ORIGIN_TAG= v5.15.19-lts
+_KDE_webengine_VERSION= 5.15.19
_KDE_webglplugin= 0
_KDE_websockets= 2
_KDE_webview= 0
@@ -200,6 +202,8 @@ CMAKE_ARGS+= -DCMAKE_INSTALL_PREFIX=${PREFIX} \
-DINSTALL_EXAMPLESDIR=${PREFIX}/${QT_EXAMPLEDIR_REL} \
-DINSTALL_DESCRIPTIONSDIR=${PREFIX}/${QT_DESCRIPTIONSDIR_REL} \
-DQT_QMAKE_TARGET_MKSPEC:String=freebsd-clang \
+ -DQT_SBOM_GENERATE_JSON:BOOL=OFF \
+ -DQT_SBOM_VERIFY:BOOL=OFF \
--log-level=TRACE
. endif
@@ -478,10 +482,10 @@ _sub_need_clean=
_sub_need_clean= \#\#
. endif
# The Qt modules have an install- and deinstall-step for wrangling
-# the qconfig-modules.h header, but qmake does not.
-. if ${PORTNAME} != "qmake"
+# the qconfig-modules.h header, but buildtools and qmake do not.
+. if ${PORTNAME} != "buildtools" && ${PORTNAME} != "qmake"
post-install: qt-post-install
-. endif # PORTNAME != qmake
+. endif # PORTNAME != buildtools && PORTNAME != qmake
qt-post-install:
# We can't use SUB_FILES with the shared pkg-change.in.
# We need it to be a script instead of a group of @unexecs.
diff --git a/Mk/Uses/qt.mk b/Mk/Uses/qt.mk
index 1a6178b62d1b..905e7793a780 100644
--- a/Mk/Uses/qt.mk
+++ b/Mk/Uses/qt.mk
@@ -11,9 +11,9 @@
# Versions: 5, 6
#
# Port variables:
-# USE_QT - List of Qt modules to depend on, with optional ':build'
-# and ':run' suffixes. Define it empty to include this file
-# without depending on Qt ports.
+# USE_QT - List of Qt modules to depend on, with optional ':build',
+# ':run', and ':test' suffixes. Define it empty to include
+# this file without depending on Qt ports.
#
# MAINTAINER: kde@FreeBSD.org
@@ -22,9 +22,18 @@ _QT_MK_INCLUDED= qt.mk
# Qt versions currently supported by the framework.
_QT_SUPPORTED?= 5 6
-QT5_VERSION?= 5.15.13
-QT6_VERSION?= 6.6.3
-PYSIDE6_VERSION?= 6.6.2
+QT5_VERSION?= 5.15.17
+QT6_VERSION?= 6.9.1
+PYSIDE6_VERSION?= 6.9.1
+
+# Support for intermediate Qt6 releases. This partially defines
+# _QT6_MASTER_SITE_SUBDIR and would probably be better in qt-dist.mk,
+# but misc/qt6-examples needs this too.
+. if ${QT6_VERSION:M*beta*} || ${QT6_VERSION:M*rc*}
+_QT6_RELEASE_TYPE= development
+. else
+_QT6_RELEASE_TYPE= official
+. endif
# We accept the Qt version to be passed by either or all of the three mk files.
. if empty(qt_ARGS) && empty(qmake_ARGS) && empty(qt-dist_ARGS)
@@ -65,6 +74,7 @@ QT_DESCRIPTIONSDIR_REL?=${QT_DATADIR_REL}/modules
QT_LIBEXECDIR_REL?= libexec/${_QT_RELNAME}
QT_IMPORTDIR_REL?= ${QT_ARCHDIR_REL}/imports
QT_QMLDIR_REL?= ${QT_ARCHDIR_REL}/qml
+QT_SBOMDIR_REL?= ${QT_ARCHDIR_REL}/sbom
QT_DATADIR_REL?= share/${_QT_RELNAME}
QT_DOCDIR_REL?= share/doc/${_QT_RELNAME}
QT_L10NDIR_REL?= ${QT_DATADIR_REL}/translations
@@ -102,7 +112,7 @@ QMAKESPEC?= ${QT_MKSPECDIR}/${QMAKESPECNAME}
QMAKE_COMPILER= $$(ccver="$$(${CXX} --version)"; case "$$ccver" in *clang*) echo clang ;; *) echo g++ ;; esac)
. for dir in BIN INC LIB ARCH PLUGIN LIBEXEC IMPORT \
- QML DATA DOC L10N ETC EXAMPLE TEST MKSPEC \
+ QML SBOM DATA DOC L10N ETC EXAMPLE TEST MKSPEC \
CMAKE TOOL
QT_${dir}DIR= ${PREFIX}/${QT_${dir}DIR_REL}
# Export all directories to the plist substituion for QT_DIST ports.
@@ -142,9 +152,10 @@ _USES_POST+= qt
_QT_MK_POST_INCLUDED= qt.mk
# The Qt components supported by qt.mk: list of shared, and version specific ones
-_USE_QT_COMMON= 3d charts connectivity datavis3d declarative doc examples imageformats location \
- multimedia networkauth quick3d quicktimeline remoteobjects scxml \
- sensors serialbus serialport speech svg virtualkeyboard wayland \
+_USE_QT_COMMON= 3d charts connectivity datavis3d declarative doc \
+ examples imageformats location multimedia networkauth \
+ quick3d quicktimeline remoteobjects scxml sensors \
+ serialbus serialport speech svg virtualkeyboard wayland \
webchannel webengine websockets webview
_USE_QT5_ONLY= assistant buildtools concurrent core dbus \
@@ -157,9 +168,10 @@ _USE_QT5_ONLY= assistant buildtools concurrent core dbus \
uitools webglplugin websockets-qml \
widgets x11extras xml xmlpatterns
-_USE_QT6_ONLY= 5compat base coap graphs httpserver languageserver lottie pdf positioning \
- quick3dphysics quickeffectmaker shadertools tools translations \
- sqldriver-sqlite sqldriver-mysql sqldriver-psql sqldriver-odbc
+_USE_QT6_ONLY= 5compat base coap graphs grpc httpserver languageserver \
+ lottie mqtt pdf positioning quick3dphysics quickeffectmaker \
+ shadertools tools translations sqldriver-sqlite \
+ sqldriver-mysql sqldriver-psql sqldriver-odbc
# Dependency tuples: _LIB should be preferred if possible.
qt-3d_PORT= graphics/${_QT_RELNAME}-3d
@@ -226,6 +238,9 @@ qt-graphicaleffects_PATH= ${LOCALBASE}/${QT_QMLDIR_REL}/QtGraphicalEffects/qmldi
qt-graphs_PORT= x11-toolkits/${_QT_RELNAME}-graphs
qt-graphs_LIB= libQt${_QT_LIBVER}Graphs.so
+qt-grpc_PORT= devel/${_QT_RELNAME}-grpc
+qt-grpc_LIB= libQt${_QT_LIBVER}Grpc.so
+
qt-gui_PORT= x11-toolkits/${_QT_RELNAME}-gui
qt-gui_LIB= libQt${_QT_LIBVER}Gui.so
@@ -239,7 +254,7 @@ qt-imageformats_PORT= graphics/${_QT_RELNAME}-imageformats
qt-imageformats_PATH= ${LOCALBASE}/${QT_PLUGINDIR_REL}/imageformats/libqtiff.so
qt-languageserver_PORT= devel/${_QT_RELNAME}-languageserver
-qt-languageserver_LIB= libQt${_QT_LIBVER}LanguageServer.so
+qt-languageserver_PATH= ${LOCALBASE}/${QT_LIBDIR_REL}/libQt6LanguageServer.a
qt-lottie_PORT= graphics/${_QT_RELNAME}-lottie
qt-lottie_LIB= libQt${_QT_LIBVER}Bodymovin.so
@@ -256,6 +271,9 @@ qt-location_LIB= libQt${_QT_LIBVER}Location.so
qt-l10n_PORT= misc/${_QT_RELNAME}-l10n
qt-l10n_PATH= ${_QT_RELNAME}-l10n>=${_QT_VERSION:R:R}
+qt-mqtt_PORT= net/${_QT_RELNAME}-mqtt
+qt-mqtt_LIB= libQt${_QT_LIBVER}Mqtt.so
+
qt-multimedia_PORT= multimedia/${_QT_RELNAME}-multimedia
qt-multimedia_LIB= libQt${_QT_LIBVER}Multimedia.so
@@ -309,7 +327,7 @@ qt-quick3d_PORT= x11-toolkits/${_QT_RELNAME}-quick3d
qt-quick3d_LIB= libQt${_QT_LIBVER}Quick3D.so
qt-quick3dphysics_PORT= science/${_QT_RELNAME}-quick3dphysics
-qt_quick3dphysics_LIB= libQt${_QT_LIBVER}Quick3DPhysics.so
+qt-quick3dphysics_LIB= libQt${_QT_LIBVER}Quick3DPhysics.so
qt-quickcontrols_PORT= x11-toolkits/${_QT_RELNAME}-quickcontrols
qt-quickcontrols_PATH= ${LOCALBASE}/${QT_QMLDIR_REL}/QtQuick/Controls/qmldir
@@ -426,7 +444,7 @@ _USE_QT_ALL= ${_USE_QT_COMMON} \
${_USE_QT${_QT_VER}_ONLY}
_USE_QT= ${USE_QT}
# Iterate through components deprived of suffix.
-. for component in ${_USE_QT:O:u:C/:(build|run)$//}
+. for component in ${_USE_QT:O:u:C/:(build|run|test)$//}
# Check that the component is valid.
. if ${_USE_QT_ALL:M${component}} != ""
# Skip meta-components (currently none).
@@ -440,6 +458,9 @@ qt-${component}_TYPE+= build
. if ${_USE_QT:M${component}\:run} != ""
qt-${component}_TYPE+= run
. endif
+. if ${_USE_QT:M${component}\:test} != ""
+qt-${component}_TYPE+= test
+. endif
. endif # ${_USE_QT:M${component}_*} != "" && ${_USE_QT:M${component}} == ""
# If no dependency type is set, default to full dependency.
. if !defined(qt-${component}_TYPE)
@@ -457,6 +478,9 @@ BUILD_DEPENDS+= ${qt-${component}_DEPENDS}
. if ${qt-${component}_TYPE:Mrun} != ""
RUN_DEPENDS+= ${qt-${component}_DEPENDS}
. endif
+. if ${qt-${component}_TYPE:Mtest} != ""
+TEST_DEPENDS+= ${qt-${component}_DEPENDS}
+. endif
. endif # ${qt-${component}_LIB} && ${qt-${component}_TYPE:Mbuild} && ${qt-${component}_TYPE:Mrun}
. endif # defined(qt-${component}_PORT) && defined(qt-${component}_PATH)
. else # ! ${_USE_QT_ALL:M${component}} != ""
diff --git a/Mk/Uses/ruby.mk b/Mk/Uses/ruby.mk
index c062bcf02f45..55bb74a50fd7 100644
--- a/Mk/Uses/ruby.mk
+++ b/Mk/Uses/ruby.mk
@@ -15,7 +15,7 @@
# [variables that a user may define]
#
# RUBY_VER - (See below)
-# RUBY_DEFAULT_VER - Set to (e.g.) "3.1" if you want to refer to "ruby31"
+# RUBY_DEFAULT_VER - Set to (e.g.) "3.2" if you want to refer to "ruby32"
# just as "ruby".
# RUBY_ARCH - (See below)
#
@@ -53,7 +53,6 @@
# basename of the ruby distribution tarball.
# RUBY_PATCHFILES - PATCHFILES for the standard ruby ports, i.e. the
# basename of the ruby distribution tarball.
-# RUBY_WRKSRC - WRKSRC for the ruby port.
# MASTER_SITE_SUBDIR_RUBY - MASTER_SITE_SUBDIR for the ruby distfiles.
#
# RUBY_SHLIBVER - Major version of libruby (see below for current
@@ -144,26 +143,35 @@ RUBY?= ${LOCALBASE}/bin/ruby${RUBY_SUFFIX}
. if defined(RUBY_VER)
# When adding a version, please keep the comment in
# Mk/bsd.default-versions.mk in sync.
-. if ${RUBY_VER} == 3.1
+. if ${RUBY_VER} == 3.2
#
-# Ruby 3.1
+# Ruby 3.2
#
-RUBY_DISTVERSION= 3.1.5
+RUBY_DISTVERSION= 3.2.9
RUBY_PORTREVISION= 0
-. elif ${RUBY_VER} == 3.2
+. elif ${RUBY_VER} == 3.3
#
-# Ruby 3.2
+# Ruby 3.3
#
-RUBY_DISTVERSION= 3.2.4
+RUBY_DISTVERSION= 3.3.9
RUBY_PORTREVISION= 0
-. elif ${RUBY_VER} == 3.3
+
+. elif ${RUBY_VER} == 3.4
#
-# Ruby 3.3
+# Ruby 3.4
#
-RUBY_DISTVERSION= 3.3.1
-RUBY_PORTREVISION= 1
+RUBY_DISTVERSION= 3.4.5
+RUBY_PORTREVISION= 0
+
+
+. elif ${RUBY_VER} == 3.5
+#
+# Ruby 3.5
+#
+RUBY_DISTVERSION= 3.5.0-preview1
+RUBY_PORTREVISION= 0
# When adding a version, please keep the comment in
# Mk/bsd.default-versions.mk in sync.
@@ -171,7 +179,7 @@ RUBY_PORTREVISION= 1
#
# Other versions
#
-IGNORE= Only ruby 3.1, 3,2 and 3.3 are supported
+IGNORE= Only ruby 3,2, 3.3, 3.4 and 3.5 are supported
_INVALID_RUBY_VER= 1
. endif
RUBY_PORTEPOCH= 1
@@ -180,9 +188,10 @@ RUBY_VERSION= ${RUBY_DISTVERSION:C/^([0-9]+\.[0-9]+\.[0-9]+).*/\1/}
. if !defined(_INVALID_RUBY_VER)
-RUBY31?= "@comment "
RUBY32?= "@comment "
RUBY33?= "@comment "
+RUBY34?= "@comment "
+RUBY35?= "@comment "
. if defined(BROKEN_RUBY${RUBY_VER:R}${RUBY_VER:E})
. if ${BROKEN_RUBY${RUBY_VER:R}${RUBY_VER:E}} == "yes"
@@ -192,8 +201,6 @@ BROKEN= ${BROKEN_RUBY${RUBY_VER:R}${RUBY_VER:E}}
. endif
. endif
-RUBY_WRKSRC= ${WRKDIR}/ruby-${RUBY_DISTVERSION}
-
RUBY_CONFIGURE_ARGS+= --with-rubyhdrdir="${PREFIX}/include/ruby-${RUBY_VER}/" \
--with-rubylibprefix="${PREFIX}/lib/ruby" \
--docdir="${RUBY_DOCDIR}" \
@@ -218,8 +225,6 @@ RUBY_PORTVERSION?= ${RUBY_DISTVERSION:tl:C/([a-z])[a-z]+/\1/g:C/([0-9])([a-z])/\
MASTER_SITE_SUBDIR_RUBY?= ${RUBY_VER}
RUBY_DISTNAME?= ruby-${RUBY_DISTVERSION}
-RUBY_WRKSRC?= ${WRKDIR}/${RUBY_DISTNAME}
-
RUBY_RELVERSION_CODE?= ${RUBY_RELVERSION:S/.//g}
RUBY_VERSION_CODE?= ${RUBY_VERSION:S/.//g}
RUBY_VER= ${RUBY_VERSION:C/([[:digit:]]+\.[[:digit:]]+).*/\1/}
diff --git a/Mk/Uses/samba.mk b/Mk/Uses/samba.mk
index 4631a0dfeb95..fb949887c604 100644
--- a/Mk/Uses/samba.mk
+++ b/Mk/Uses/samba.mk
@@ -5,8 +5,7 @@
# Valid ARGS: build, env, lib, run
# default is build,run (implicit)
#
-# When subpackages are available this can be more granular
-#
+# MAINTAINER: samba@FreeBSD.org
.if !defined(_INCLUDE_USES_SAMBA_MK)
_INCLUDE_USES_SAMBA_MK= yes
@@ -19,22 +18,43 @@ samba_ARGS= build run
IGNORE= USES=samba has invalid arguments: ${samba_ARGS:Nbuild:Nenv:Nlib:Nrun}
. endif
-SAMBAPORT= net/samba${SAMBA_DEFAULT:S/.//}
-SAMBAINCLUDES= ${LOCALBASE}/include/samba4
-. if ${SAMBA_DEFAULT} == 4.16 || ${SAMBA_DEFAULT} == 4.19
-SAMBALIBS= ${LOCALBASE}/lib/samba4
-. else
+. if ${SAMBA_DEFAULT} != 4.16 && ${SAMBA_DEFAULT} != 4.19 && ${SAMBA_DEFAULT} != 4.20
IGNORE= Invalid version of samba: ${SAMBA_DEFAULT}
. endif
+SAMBA_SUFFIX= ${SAMBA_DEFAULT:S/.//}
+
+SAMBA_PORT_416= net/samba416
+SAMBA_LDB_PORT_416= databases/ldb25
+SAMBA_TALLOC_PORT_416= devel/talloc
+SAMBA_TDB_PORT_416= databases/tdb
+SAMBA_TEVENT_PORT_416= devel/tevent
+SAMBA_PORT_419= net/samba419
+SAMBA_LDB_PORT_419= databases/ldb28
+SAMBA_TALLOC_PORT_419= devel/talloc
+SAMBA_TDB_PORT_419= databases/tdb
+SAMBA_TEVENT_PORT_419= devel/tevent
+SAMBA_PORT_420= net/samba420
+SAMBA_LDB_PORT_420= databases/ldb29
+SAMBA_TALLOC_PORT_420= devel/talloc242
+SAMBA_TDB_PORT_420= databases/tdb1410
+SAMBA_TEVENT_PORT_420= devel/tevent016
+
+SAMBA_PORT= ${SAMBA_PORT_${SAMBA_SUFFIX}}
+SAMBA_INCLUDEDIR= ${LOCALBASE}/include/samba4
+SAMBA_LIBDIR= ${LOCALBASE}/lib/samba4
+SAMBA_LDB_PORT= ${SAMBA_LDB_PORT_${SAMBA_SUFFIX}}
+SAMBA_TALLOC_PORT= ${SAMBA_TALLOC_PORT_${SAMBA_SUFFIX}}
+SAMBA_TDB_PORT= ${SAMBA_TDB_PORT_${SAMBA_SUFFIX}}
+SAMBA_TEVENT_PORT= ${SAMBA_TEVENT_PORT_${SAMBA_SUFFIX}}
+
. if ${samba_ARGS:Mbuild}
-BUILD_DEPENDS+= smbd:${SAMBAPORT}
+BUILD_DEPENDS+= smbd:${SAMBA_PORT}
. endif
. if ${samba_ARGS:Mlib}
-LIB_DEPENDS+= libsmbclient.so:${SAMBAPORT}
+LIB_DEPENDS+= libsmbclient.so:${SAMBA_PORT}
. endif
. if ${samba_ARGS:Mrun}
-RUN_DEPENDS+= smbd:${SAMBAPORT}
+RUN_DEPENDS+= smbd:${SAMBA_PORT}
. endif
-
.endif
diff --git a/Mk/Uses/sbrk.mk b/Mk/Uses/sbrk.mk
new file mode 100644
index 000000000000..8f74e7a0e34c
--- /dev/null
+++ b/Mk/Uses/sbrk.mk
@@ -0,0 +1,21 @@
+# handle ports requring sbrk
+#
+# Feature: sbrk
+# Usage: USES=sbrk
+# Valid ARGS: <none>
+#
+# Software requiring the sbrk pseudo-syscall is broken on aarch64 and
+# riscv64. Mark it as such.
+#
+# MAINTAINER: brooks@FreeBSD.org
+
+.if !defined(_INCLUDE_USES_SBRK_MK)
+_INCLUDE_USES_SBRK_MK= yes
+
+. if empty(sbrk_ARGS)
+BROKEN_aarch64= requires sbrk
+BROKEN_riscv64= requires sbrk
+. else
+IGNORE= Incorrect 'USES+=sbrk:${sbrk_ARGS}'. No arguments permitted
+. endif
+.endif
diff --git a/Mk/Uses/sdl.mk b/Mk/Uses/sdl.mk
index 5289c3c02f25..4c29f13f0e64 100644
--- a/Mk/Uses/sdl.mk
+++ b/Mk/Uses/sdl.mk
@@ -69,6 +69,17 @@ _SDL_sound2_REQUIRES= sdl2
_SDL_ttf2_LIB_DEPENDS= libSDL2_ttf.so:graphics/sdl2_ttf
_SDL_ttf2_REQUIRES= sdl2
+# These are the current supported SDL3 modules
+_SDL_USE_ALL+= sdl3 image3 ttf3
+
+_SDL_sdl3_LIB_DEPENDS= libSDL3.so:devel/sdl3
+
+_SDL_image3_LIB_DEPENDS= libSDL3_image.so:graphics/sdl3_image
+_SDL_image3_REQUIRES= sdl3
+
+_SDL_ttf3_LIB_DEPENDS= libSDL3_ttf.so:graphics/sdl3_ttf
+_SDL_ttf3_REQUIRES= sdl3
+
# Basic checks
. if !empty(sdl_ARGS)
IGNORE= USES=sdl takes no arguments
diff --git a/Mk/Uses/shebangfix.mk b/Mk/Uses/shebangfix.mk
index 20dba5279964..337cc5bf2343 100644
--- a/Mk/Uses/shebangfix.mk
+++ b/Mk/Uses/shebangfix.mk
@@ -57,6 +57,7 @@ python_CMD?= ${PYTHON_CMD}
# been set already above with ?=.
. for lang in ${SHEBANG_LANG}
${lang}_CMD?= ${LOCALBASE}/bin/${lang}
+${lang}_OLD_CMD+= "/bin/env ${lang}"
${lang}_OLD_CMD+= "/usr/bin/env ${lang}"
${lang}_OLD_CMD+= /bin/${lang}
${lang}_OLD_CMD+= /usr/bin/${lang}
@@ -64,6 +65,7 @@ ${lang}_OLD_CMD+= /usr/local/bin/${lang}
. endfor
. for pyver in 2 3
+python_OLD_CMD+= "/bin/env python${pyver}"
python_OLD_CMD+= "/usr/bin/env python${pyver}"
python_OLD_CMD+= /bin/python${pyver}
python_OLD_CMD+= /usr/bin/python${pyver}
diff --git a/Mk/Uses/ssl.mk b/Mk/Uses/ssl.mk
index a8c95e4d9a4d..f8a459eb87e7 100644
--- a/Mk/Uses/ssl.mk
+++ b/Mk/Uses/ssl.mk
@@ -8,8 +8,10 @@
#
# DEFAULT_VERSIONS+= ssl=<openssl variant>
#
-# Variants being base, openssl, openssl30, openssl31, openssl32,
-# openssl-quictls, libressl, and libressl-devel.
+# When updating this, please also update the same list in bsd.default-versions.mk
+# and the checks for USES=ssl in qa.sh!
+# Variants being base, openssl, openssl111, openssl31, openssl32,
+# openssl33, libressl, and libressl-devel.
#
# The Makefile sets these variables:
# OPENSSLBASE - "/usr" or ${LOCALBASE}
diff --git a/Mk/Uses/tcl.mk b/Mk/Uses/tcl.mk
index eb47dfea7bbf..616bf7153ba5 100644
--- a/Mk/Uses/tcl.mk
+++ b/Mk/Uses/tcl.mk
@@ -12,6 +12,13 @@
#
# TCL_INCLUDEDIR - Path where the Tcl C headers can be found
#
+# TCL_PKG_LIB_PREFIX - Library prefix, as per TIP595. This is tcl9 when
+# when building against Tcl 9.0, and empty otherwise
+#
+# TCL_PKG_STUB_POSTFIX - Stub library postfix. This is empty when building
+# against Tcl 9.0, and DISTVERSION otherwise.
+# See https://core.tcl-lang.org/tclconfig/info/381985d331b96ba9
+#
#
# TK_VER - Major.Minor version of Tk
#
@@ -38,11 +45,11 @@
# is installed, bring in the default version. See
# ${_TCLTK_DEFAULT_VERSION} below.
#
-# - 86, 87 - Depend on a specific version series of PORT. Multiple
+# - 86, 90 - Depend on a specific version series of PORT. Multiple
# values are OK. The highest version available is
# picked.
#
-# - 86+, 87+ - Depend on any installed version greater or equal to
+# - 86+ - Depend on any installed version greater or equal to
# the specified version.
#
# If wrapper is specified, an additional dependency on tcl-wrapper or
@@ -71,7 +78,7 @@ _INCLUDE_USES_TCL_MK= yes
#
# When adding a version, please keep the comment in
# Mk/bsd.default-versions.mk in sync.
-_TCLTK_VALID_VERSIONS= 86 87
+_TCLTK_VALID_VERSIONS= 86 90
#
# Bring in the default and check that the specified version is in the list of
@@ -99,8 +106,11 @@ _TCLTK_WANTED_VERSIONS:=${_TCLTK_DEFAULT_VERSION}
#
# Parse one or more ver arguments.
#
-. if ${tcl_ARGS:M8[6-7]}
-_TCLTK_WANTED_VERSIONS:=${tcl_ARGS:M8[6-7]}
+. if ${tcl_ARGS:M86}
+_TCLTK_WANTED_VERSIONS:=${tcl_ARGS:M86}
+. endif
+. if ${tcl_ARGS:M90}
+_TCLTK_WANTED_VERSIONS:=${tcl_ARGS:M90}
. endif
#
@@ -155,14 +165,14 @@ _TCLTK_WANTED_VERSION:= ${_TCLTK_HIGHEST_VERSION}
#
# Exported variables
#
-TCL_VER:= ${_TCLTK_WANTED_VERSION:S/8/8./}
+TCL_VER:= ${_TCLTK_WANTED_VERSION:S/8/8./:S/9/9./}
TCL_SHLIB_VER:= ${_TCLTK_WANTED_VERSION}
TCLSH:= ${LOCALBASE}/bin/tclsh${TCL_VER}
TCL_LIBDIR:= ${LOCALBASE}/lib/tcl${TCL_VER}
TCL_INCLUDEDIR:=${LOCALBASE}/include/tcl${TCL_VER}
. if ${_TCLTK_PORT} == "tk"
-TK_VER:= ${_TCLTK_WANTED_VERSION:S/8/8./}
+TK_VER:= ${_TCLTK_WANTED_VERSION:S/8/8./:S/9/9./}
TK_SHLIB_VER:= ${_TCLTK_WANTED_VERSION}
WISH:= ${LOCALBASE}/bin/wish${TCL_VER}
TK_LIBDIR:= ${LOCALBASE}/lib/tk${TK_VER}
@@ -213,7 +223,15 @@ LIB_DEPENDS+= ${_TCLTK_LIB_LINE}
. if ${tcl_ARGS:Mtea}
GNU_CONFIGURE= yes
TCL_PKG?= ${PORTNAME:C/^tcl(-?)//:C/(-?)tcl\$//}${PORTVERSION}
-PLIST_SUB+= TCL_PKG=${TCL_PKG}
+. if ${TCL_VER} == "9.0"
+TCL_PKG_LIB_PREFIX= tcl9
+TCL_PKG_STUB_POSTFIX=
+. else
+TCL_PKG_LIB_PREFIX=
+TCL_PKG_STUB_POSTFIX= ${DISTVERSION}
+. endif
+PLIST_SUB+= TCL_PKG=${TCL_PKG} TCL_PKG_LIB_PREFIX=${TCL_PKG_LIB_PREFIX} \
+ TCL_PKG_STUB_POSTFIX=${TCL_PKG_STUB_POSTFIX}
CONFIGURE_ARGS+=--exec-prefix=${PREFIX} \
--with-tcl=${TCL_LIBDIR} \
--with-tclinclude=${TCL_INCLUDEDIR}
diff --git a/Mk/Uses/tex.mk b/Mk/Uses/tex.mk
index c62df38e53ec..ce9213f80f5b 100644
--- a/Mk/Uses/tex.mk
+++ b/Mk/Uses/tex.mk
@@ -91,8 +91,8 @@ TEXMFVARDIR?= share/texmf-var
TEXMFCONFIGDIR?=share/texmf-config
FMTUTIL_CNF?= ${TEXMFCONFIGDIR}/web2c/fmtutil.cnf
TEXHASHDIRS?= ${TEXMFDIR} ${TEXMFDISTDIR} ${TEXMFLOCALDIR} ${TEXMFVARDIR} ${TEXMFCONFIGDIR}
-TEXLIVE_YEAR?= 2023
-TEXLIVE_VERSION?= ${TEXLIVE_YEAR}0313
+TEXLIVE_YEAR?= 2025
+TEXLIVE_VERSION?= ${TEXLIVE_YEAR}0308
DISTNAME_TEXMF= texlive-${TEXLIVE_VERSION}-texmf
.for V in TEXMFDIR TEXMFDISTDIR TEXMFLOCALDIR TEXMFVARDIR TEXMFCONFIGDIR FMTUTIL_CNF
diff --git a/Mk/Uses/vala.mk b/Mk/Uses/vala.mk
index aec0e7a3a968..a12834d81fb7 100644
--- a/Mk/Uses/vala.mk
+++ b/Mk/Uses/vala.mk
@@ -8,7 +8,7 @@
.if ! defined(_INCLUDE_USES_VALA_MK)
_INCLUDE_USES_VALA_MK= yes
-_VALA_VERSION= 0.56.16
+_VALA_VERSION= 0.56.18
_VALA_LIB_VERSION= ${_VALA_VERSION:R}
_VALA_LIBRARY= libvala-${_VALA_LIB_VERSION}.so
_VALA_BINARY= valac
diff --git a/Mk/Uses/xfce.mk b/Mk/Uses/xfce.mk
index 506c7b1bf753..2cb800698405 100644
--- a/Mk/Uses/xfce.mk
+++ b/Mk/Uses/xfce.mk
@@ -13,7 +13,7 @@
_INCLUDE_USES_XFCE_Mk= yes
_USES_POST+= xfce
-_USE_XFCE_ALL= garcon libexo libmenu libutil panel thunar xfconf
+_USE_XFCE_ALL= garcon libexo libmenu libutil panel thunar xdt xfconf windowing
xfce_ARGS?= # empty
@@ -37,8 +37,12 @@ libutil_LIB_DEPENDS= libxfce4util.so:x11/libxfce4util
thunar_LIB_DEPENDS= libthunarx-3.so:x11-fm/thunar
thunar_RUN_DEPENDS= Thunar:x11-fm/thunar
+xdt_BUILD_DEPENDS= xfce4-dev-tools>=4.19.4:devel/xfce4-dev-tools
+
xfconf_LIB_DEPENDS= libxfconf-0.so:x11/xfce4-conf
+windowing_LIB_DEPENDS= libxfce4windowing-0.so:x11/libxfce4windowing
+
. if defined(USE_XFCE)
# First, expand all USE_XFCE_REQ recursively.
. for comp in ${_USE_XFCE_ALL}
diff --git a/Mk/Uses/xorg-cat.mk b/Mk/Uses/xorg-cat.mk
index 0853fd6b3e3c..b81972b4ae5f 100644
--- a/Mk/Uses/xorg-cat.mk
+++ b/Mk/Uses/xorg-cat.mk
@@ -14,8 +14,6 @@
# * font don't install .pc file
# * lib various dependencies, install .pc file, needs
# pathfix
-# * proto install .pc file, needs pathfix, most only needed at
-# build time.
# * util no particular notes
#
# These categories has to match upstream categories. Don't invent
@@ -34,7 +32,7 @@
.if !defined(_INCLUDE_USES_XORG_CAT_MK)
_INCLUDE_USES_XORG_CAT_MK=yes
-_XORG_CATEGORIES= app data doc driver font lib proto util
+_XORG_CATEGORIES= app data doc driver font lib util
_XORG_BUILDSYSTEMS= autotools meson
_XORG_CAT= # empty
@@ -158,9 +156,6 @@ USE_LDCONFIG= yes
CONFIGURE_ARGS+=--enable-malloc0returnsnull
. endif
-. elif ${_XORG_CAT} == proto
-.include "${USESDIR}/pathfix.mk"
-
. endif # ${_XORG_CAT} == <category>
# We only need to include xorg.mk if we want USE_XORG modules
diff --git a/Mk/Wrappers/gm4 b/Mk/Wrappers/gm4
index ecc0796c729a..8b1e7a64f700 100644
--- a/Mk/Wrappers/gm4
+++ b/Mk/Wrappers/gm4
@@ -2,5 +2,5 @@
case " $@ " in
*" --version "*) echo "m4 (GNU M4) 1.4.18" ;;
-*) exec m4 -g $@ ;;
+*) exec m4 -g "$@" ;;
esac
diff --git a/Mk/bsd.ccache.mk b/Mk/bsd.ccache.mk
index 83f225748420..bf8900430238 100644
--- a/Mk/bsd.ccache.mk
+++ b/Mk/bsd.ccache.mk
@@ -105,4 +105,12 @@ ccache-wrkdir-link: ${WRKDIR}/.ccache .PHONY
post-extract: ccache-wrkdir-link
. endif
+# enable ccache in case of USES=llvm and cmake
+. if ${CCACHE_ENABLED} == yes && \
+ defined(_INCLUDE_USES_LLVM_MK) && \
+ defined(_INCLUDE_USES_CMAKE_MK)
+CMAKE_ARGS+= -DCMAKE_C_COMPILER_LAUNCHER=ccache \
+ -DCMAKE_CXX_COMPILER_LAUNCHER=ccache
+. endif
+
.endif
diff --git a/Mk/bsd.commands.mk b/Mk/bsd.commands.mk
index 8ab99a18e22b..4f0381d7bdd3 100644
--- a/Mk/bsd.commands.mk
+++ b/Mk/bsd.commands.mk
@@ -45,7 +45,7 @@ FIND?= /usr/bin/find
FLEX?= /usr/bin/flex
FMT?= /usr/bin/fmt
FMT_80?= ${FMT} 75 79
-GMAKE?= gmake
+GMAKE?= ${LOCALBASE}/bin/gmake
GREP?= /usr/bin/grep
GUNZIP_CMD?= /usr/bin/gunzip -f
GZCAT?= /usr/bin/gzcat
diff --git a/Mk/bsd.default-versions.mk b/Mk/bsd.default-versions.mk
index a319b8dd12de..3192f9cf5ce5 100644
--- a/Mk/bsd.default-versions.mk
+++ b/Mk/bsd.default-versions.mk
@@ -50,21 +50,21 @@ EBUR128_DEFAULT?= legacy
FIREBIRD_DEFAULT?= 3.0
# Possible values: gfortran
FORTRAN_DEFAULT?= gfortran
-# Possible values: 3.2.2, 3.3.1
-. if !defined(WANT_FPC_DEVEL)
-FPC_DEFAULT?= 3.2.2
-. else
+# Possible values: 3.2.3, 3.3.1
+. if (defined(WANT_FPC_DEVEL) && !empty(WANT_FPC_DEVEL)) || ${ARCH:Maarch64}
FPC_DEFAULT?= 3.3.1
+. else
+FPC_DEFAULT?= 3.2.3
. endif
-# Possible values: 9, 10, 11, 12, 13, 14
+# Possible values: 11, 12, 13, 14, 15, 16
# (Any other version is completely unsupported and not meant for general use.)
GCC_DEFAULT?= 13
# Possible values: 10
GHOSTSCRIPT_DEFAULT?= 10
# Possible values: mesa-libs, mesa-devel
GL_DEFAULT?= mesa-libs
-# Possible values: 1.20, 1.21, 1.22, 1.23-devel
-GO_DEFAULT?= 1.21
+# Possible values: 1.20, 1.21, 1.22, 1.23, 1.24, 1.25-devel
+GO_DEFAULT?= 1.24
# Possible values: 1.8, 2.2, 3.0
GUILE_DEFAULT?= 2.2
# Possible versions: 6, 7
@@ -73,13 +73,13 @@ GUILE_DEFAULT?= 2.2
# Format: version[-flavor]
# Examples: 6-nox11, 7
IMAGEMAGICK_DEFAULT?= 7
-# Possible values: 8, 11, 17, 18, 19, 20, 21
+# Possible values: 8, 11, 17, 18, 19, 20, 21, 22, 23, 24
JAVA_DEFAULT?= 8
-# Possible values: 3.2.0, 3.1.0
-. if !defined(WANT_LAZARUS_DEVEL)
-LAZARUS_DEFAULT?= 3.2.0
+# Possible values: 4.0, 4.99
+. if (defined(WANT_LAZARUS_DEVEL) && !empty(WANT_LAZARUS_DEVEL)) || ${ARCH:Maarch64}
+LAZARUS_DEFAULT?= 4.99
. else
-LAZARUS_DEFAULT?= 3.3.1
+LAZARUS_DEFAULT?= 4.2
. endif
# Possible values: rust, legacy
. if empty(ARCH:Naarch64:Namd64:Narmv7:Ni386:Npowerpc64:Npowerpc64le:Npowerpc:Nriscv64)
@@ -87,32 +87,34 @@ LIBRSVG2_DEFAULT?= rust
. else
LIBRSVG2_DEFAULT?= legacy
. endif
-# Possible values: c7
+# Possible values: c7 rl9
+. if ${ARCH:Mi386}
LINUX_DEFAULT?= c7
-# Possible values: 11, 12, 13, 14, 15, 16, 17, -devel (to be used when non-base compiler is required)
-LLVM_DEFAULT?= 15
+. else
+LINUX_DEFAULT?= rl9
+. endif
+# Possible values: 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, -devel (to be used when non-base compiler is required)
+LLVM_DEFAULT?= 19
# Possible values: 5.1, 5.2, 5.3, 5.4
LUA_DEFAULT?= 5.4
# Possible values: luajit, luajit-devel, luajit-openresty
-. if ${ARCH:Mpowerpc64*}
-LUAJIT_DEFAULT?= luajit-openresty
-. else
-LUAJIT_DEFAULT?= luajit-devel
-. endif
+LUAJIT_DEFAULT?= luajit
# Possible values: 5.10, 5.20, 6.8
MONO_DEFAULT?= 5.20
-# Possible values: 8.0, 8.1, 10.5m, 10.6m, 10.11m
+# Possible values: 8.0, 8.4, 9.1, 10.5m, 10.6m, 10.11m, 11.4m
MYSQL_DEFAULT?= 8.0
# Possible values: ninja, samurai
NINJA_DEFAULT?= ninja
-# Possible value: 18, 20, 21, current, lts (Note: current = 21 and lts = 20)
+# Possible value: 18, 20, 22, 24, current, lts (Note: current = 24 and lts = 22)
NODEJS_DEFAULT?= lts
# Possible value: 25, 26
OPENLDAP_DEFAULT?= 26
-# Possible values: 5.34, 5.36, 5.38, devel
+# Possible values: 5.38, 5.40, 5.42, devel
. if !exists(${LOCALBASE}/bin/perl) || (!defined(_PORTS_ENV_CHECK) && \
defined(PACKAGE_BUILDING))
-PERL5_DEFAULT?= 5.36
+# When changing the default here, make sure the DEPRECATED/EXPIRATION lines in
+# the older Perl 5 ports are uncommented at the same time.
+PERL5_DEFAULT?= 5.40
. elif !defined(PERL5_DEFAULT)
# There's no need to replace development versions, like "5.23" with "devel"
# because 1) nobody is supposed to use it outside of poudriere, and 2) it must
@@ -124,27 +126,29 @@ _PERL5_FROM_BIN!= ${LOCALBASE}/bin/perl -e 'printf "%vd\n", $$^V;'
_EXPORTED_VARS+= _PERL5_FROM_BIN
PERL5_DEFAULT:= ${_PERL5_FROM_BIN:R}
. endif
-# Possible values: 12, 13, 14, 15, 16
-PGSQL_DEFAULT?= 15
-# Possible values: 8.1, 8.2, 8.3
-PHP_DEFAULT?= 8.2
+# Possible values: 13, 14, 15, 16, 17
+PGSQL_DEFAULT?= 17
+# Possible values: 8.1, 8.2, 8.3, 8.4, 8.5
+PHP_DEFAULT?= 8.3
# Possible values: rust, legacy
. if empty(ARCH:Naarch64:Namd64:Narmv7:Ni386:Npowerpc64:Npowerpc64le:Npowerpc:Nriscv64)
PYCRYPTOGRAPHY_DEFAULT?= rust
. else
PYCRYPTOGRAPHY_DEFAULT?= legacy
. endif
-# Possible values: 3.8, 3.9, 3.10, 3.11
-PYTHON_DEFAULT?= 3.9
+# Possible values: 3.9, 3.10, 3.11, 3.12
+PYTHON_DEFAULT?= 3.11
# Possible values: 2.7
PYTHON2_DEFAULT?= 2.7
-# Possible values: 3.1, 3.2, 3.3
-RUBY_DEFAULT?= 3.2
+# Possible values: 3.2, 3.3, 3.4, 3.5
+RUBY_DEFAULT?= 3.3
# Possible values: rust, rust-nightly
RUST_DEFAULT?= rust
-# Possible values: 4.16, 4.19
+# Possible values: 4.16, 4.19, 4.20
SAMBA_DEFAULT?= 4.16
-# Possible values: base, openssl, openssl111, openssl31, openssl32, libressl, libressl-devel
+# When updating this, please also update the same list in ssl.mk and the checks
+# for USES=ssl in qa.sh!
+# Possible values: base, openssl, openssl111, openssl31, openssl32, openssl33, libressl, libressl-devel
. if !defined(SSL_DEFAULT)
# If no preference was set, check for an installed base version
# but give an installed port preference over it.
@@ -180,7 +184,7 @@ check-makevars::
# Make sure we have a default in the end
SSL_DEFAULT?= base
. endif
-# Possible values: 8.5, 8.6, 8.7
+# Possible values: 8.6, 9.0
TCLTK_DEFAULT?= 8.6
# Possible values: 6, 7
VARNISH_DEFAULT?= 6
diff --git a/Mk/bsd.gcc.mk b/Mk/bsd.gcc.mk
index aeac8ac04dc6..6a40b0d7bfa5 100644
--- a/Mk/bsd.gcc.mk
+++ b/Mk/bsd.gcc.mk
@@ -35,7 +35,7 @@ GCC_Include_MAINTAINER= gerald@FreeBSD.org
# All GCC versions supported by this framework.
#
# When updating this, keep Mk/bsd.default-versions.mk in sync.
-GCCVERSIONS= 4.8 9 10 11 12 13 14
+GCCVERSIONS= 11 12 13 14 15 16
# No configurable parts below this. ####################################
#
@@ -85,7 +85,7 @@ IGNORE= Unknown version of GCC specified (USE_GCC=${USE_GCC})
# A concrete version has been selected. Set proper ports dependencies,
# CC, CXX, CPP, and flags.
V:= ${_USE_GCC:S/.//}
-. if ${V} == 14
+. if ${V} == 16
_GCC_PORT:= gcc${V}-devel
. else
_GCC_PORT:= gcc${V}
@@ -95,10 +95,8 @@ CXX:= g++${V}
CPP:= cpp${V}
_GCC_RUNTIME:= ${LOCALBASE}/lib/gcc${V}
. if ${PORTNAME} == gcc
-# We don't want the rpath stuff while building GCC itself
-# so we do not set the FLAGS as done in the else part.
-# When building a GCC, we want the target libraries to be used and not the
-# host GCC libraries.
+# When building GCC itself, we want the target libraries to be used
+# and not the host GCC libraries.
. else
CFLAGS+= -Wl,-rpath=${_GCC_RUNTIME}
CXXFLAGS+= -Wl,-rpath=${_GCC_RUNTIME}
diff --git a/Mk/bsd.gecko.mk b/Mk/bsd.gecko.mk
index 9e83aab4aec0..3e47b64ad63a 100644
--- a/Mk/bsd.gecko.mk
+++ b/Mk/bsd.gecko.mk
@@ -60,22 +60,24 @@ MOZILLA?= ${PORTNAME}
MOZILLA_VER?= ${PORTVERSION}
MOZILLA_BIN?= ${PORTNAME}-bin
MOZILLA_EXEC_NAME?=${MOZILLA}
-USES+= compiler:c++17-lang cpe gl gmake gnome iconv llvm:17,noexport localbase \
+USES+= compiler:c++17-lang cpe elfctl gl gmake gnome iconv \
+ llvm:min=17,noexport localbase nodejs:24,build,env \
pkgconfig python:build desktop-file-utils
CPE_VENDOR?=mozilla
USE_GL= gl
-USE_GNOME= cairo gdkpixbuf2 gtk30
+USE_GNOME= cairo gdkpixbuf gtk30
USE_XORG= x11 xcb xcomposite xdamage xext xfixes xrandr xrender xt xtst
HAS_CONFIGURE= yes
CONFIGURE_OUTSOURCE= yes
LDFLAGS+= -Wl,--as-needed -Wl,--undefined-version
BINARY_ALIAS+= python3=${PYTHON_CMD}
+ELF_FEATURES+= +wxneeded:dist/bin/${MOZILLA} +wxneeded:dist/bin/${MOZILLA}-bin
+
BUNDLE_LIBS= yes
-BUILD_DEPENDS+= rust-cbindgen>=0.26.0:devel/rust-cbindgen \
- ${RUST_DEFAULT}>=1.77.0:lang/${RUST_DEFAULT} \
- node:www/node
+BUILD_DEPENDS+= rust-cbindgen>=0.28.0:devel/rust-cbindgen \
+ ${RUST_DEFAULT}>=1.88.0:lang/${RUST_DEFAULT}
LIB_DEPENDS+= libdrm.so:graphics/libdrm
RUN_DEPENDS+= ${LOCALBASE}/lib/libpci.so:devel/libpci
LIB_DEPENDS+= libepoll-shim.so:devel/libepoll-shim
diff --git a/Mk/bsd.licenses.db.mk b/Mk/bsd.licenses.db.mk
index 674c72d7eabc..e1cd8e8ccdc2 100644
--- a/Mk/bsd.licenses.db.mk
+++ b/Mk/bsd.licenses.db.mk
@@ -38,10 +38,13 @@ Licenses_db_Include_MAINTAINER= portmgr@FreeBSD.org
# _LICENSE_LIST_GROUPS - List of defined license groups
#
-_LICENSE_LIST= BSL CDDL CPAL-1.0 ClArtistic EPL GFDL GMGPL \
+_LICENSE_LIST= BSL CDDL CPAL-1.0 ClArtistic EPL EU GFDL GMGPL \
ISCL MIT NCSA ODbL OFL10 OFL11 OWL OpenSSL PD PSFL PostgreSQL \
RUBY UNLICENSE WTFPL1 WTFPL ZLIB ZPL21
+# EU family
+_LICENSE_LIST+= EUPL11 EUPL12
+
# GNU family
_LICENSE_LIST+= AGPLv3 GPLv1 GPLv2 GPLv3 GPLv3RLE LGPL20 LGPL21 LGPL3
_LICENSE_LIST+= AGPLv3+ GPLv1+ GPLv2+ GPLv3+ GPLv3RLE+ LGPL20+ LGPL21+ \
@@ -79,6 +82,8 @@ _LICENSE_LIST+= NONE
# List of groups (only names must be present)
+_LICENSE_NAME_EU= European Union Public Licence
+
_LICENSE_NAME_FSF= Free Software Foundation Approved
_LICENSE_NAME_GPL= GPL Compatible
@@ -269,6 +274,12 @@ _LICENSE_GROUPS_CPAL-1.0= FSF OSI
_LICENSE_NAME_EPL= Eclipse Public License
_LICENSE_GROUPS_EPL= FSF OSI
+_LICENSE_NAME_EUPL11= European Union Public Licence version 1.1
+_LICENSE_GROUPS_EUPL11= EU OSI
+
+_LICENSE_NAME_EUPL12= European Union Public Licence version 1.2
+_LICENSE_GROUPS_EUPL12= EU OSI
+
_LICENSE_NAME_GFDL= GNU Free Documentation License
_LICENSE_GROUPS_GFDL= FSF
diff --git a/Mk/bsd.ocaml.mk b/Mk/bsd.ocaml.mk
deleted file mode 100644
index 1dc29209e785..000000000000
--- a/Mk/bsd.ocaml.mk
+++ /dev/null
@@ -1,198 +0,0 @@
-# ex:ts=4
-#
-# $MBSDlabs: portmk/bsd.ocaml.mk,v 1.18 2006/08/06 18:47:23 stas Exp $
-#
-# bsd.ocaml.mk - Support for the Objective Caml language packages
-#
-# Author: Stanislav Sedov <ssedov@mbsd.msk.ru>
-#
-# Feel free to send any comments and suggestions to maintainer.
-#
-# Currently recognised variables are:
-#
-# USE_OCAML - Set if your port uses OCaml to build/install.
-# NO_OCAML_BUILDDEPENDS - Don't add ocamlc to BUILD|EXTRACT|PATCH_DEPENDS.
-# NO_OCAML_RUNDEPENDS - Don't add ocamlc to RUN_DEPENDS.
-# USE_OCAML_FINDLIB - Set if your port uses ocamlfind to install
-# packages. Package direcories will be
-# automatically deleted.
-# USE_OCAML_CAMLP4 - Set if your port uses camlp4 to build.
-# USE_OCAML_TK - Set if you port needs ocaml-labltk.
-# NO_OCAMLTK_BUILDDEPENDS - Don't add labltk to BUILD|EXTRACT|PATCH_DEPENDS.
-# NO_OCAMLTK_RUNDEPENDS - Don't add labltk to RUN_DEPENDS.
-# USE_OCAML_LDCONFIG - Set if your port installs shared libraries
-# into ocaml site-lib dir. OCaml ld.conf file
-# will be automatically processed.
-# USE_OCAMLFIND_PLIST - Add contents of findlib target directories
-# automatically.
-# USE_OCAML_WASH - Set if your port wants to automatically
-# purge shared Ocaml dirs on uninstall. It's
-# useful when installing to non-standard PREFIX
-# OCAML_PKGDIRS - Directories under site-lib to be processed
-# if USE_OCAML_FINDLIB specified.
-# Default: ${PORTNAME}
-# OCAML_LDLIBS - Directories under PREFIX to be automatically
-# added/removed from ld.conf
-# Default: ${OCAML_SITELIBDIR}/${PORTNAME}
-
-.if !defined(OCAML_include)
-
-OCAML_MAINTAINER= ports@FreeBSD.org
-OCAML_include= bsd.ocaml.mk
-
-#
-# OCaml programs location
-#
-OCAMLC?= ${LOCALBASE}/bin/ocamlc
-OCAMLC_OPT?= ${LOCALBASE}/bin/ocamlc.opt
-OCAMLCP?= ${LOCALBASE}/bin/ocamlcp
-OCAMLFIND?= ${LOCALBASE}/bin/ocamlfind
-CAMLP4?= ${LOCALBASE}/bin/camlp4
-OCAMLTK?= ${LOCALBASE}/bin/labltk
-
-#
-# OCaml library directory
-#
-OCAML_LIBDIR?= lib/ocaml
-
-#
-# Where to install site libraries
-#
-OCAML_SITELIBDIR?= ${OCAML_LIBDIR}/site-lib
-
-#
-# OCaml compiler port dependency
-#
-OCAMLC_PORT?= lang/ocaml
-OCAMLC_DEPEND?= ${OCAMLC}:${OCAMLC_PORT}
-
-#
-# OCaml package manager port dependency
-#
-OCAMLFIND_PORT?= devel/ocaml-findlib
-OCAMLFIND_DEPEND?= ${OCAMLFIND}:${OCAMLFIND_PORT}
-
-#
-# OCaml camlp4 port dependency
-#
-CAMLP4_PORT?= devel/ocaml-camlp4
-CAMLP4_DEPEND?= ${CAMLP4}:${CAMLP4_PORT}
-
-#
-# OCaml TK bindings dependency
-#
-OCAMLTK_PORT?= x11-toolkits/ocaml-labltk
-OCAMLTK_DEPENDS?= ${OCAMLTK}:${OCAMLTK_PORT}
-
-#
-# Common OCaml examples and documents location
-#
-OCAML_DOCSDIR= ${PREFIX}/share/doc/ocaml
-OCAML_EXAMPLESDIR= ${PREFIX}/share/examples/ocaml
-
-#
-# Location of OCaml ld.conf file
-#
-OCAML_LDCONF?= ${OCAML_LIBDIR}/ld.conf
-
-# ocaml-findlib-1.4.1_1 wants to edit our ld.conf file, which does not
-# work well with staging.
-. if defined(USE_OCAML_LDCONFIG)
-. if !target(ocaml-ldconfig)
-OCAMLFIND_LDCONF?= /dev/null
-. endif
-. endif
-
-OCAMLFIND_DESTDIR?= ${PREFIX}/${OCAML_SITELIBDIR}
-OCAMLFIND_LDCONF?= ${PREFIX}/${OCAML_LDCONF}
-
-. if defined(USE_OCAML)
-. if !defined(NO_OCAML_BUILDDEPENDS)
-EXTRACT_DEPENDS+= ${OCAMLC_DEPEND}
-PATCH_DEPENDS+= ${OCAMLC_DEPEND}
-BUILD_DEPENDS+= ${OCAMLC_DEPEND}
-. endif
-. if !defined(NO_OCAML_RUNDEPENDS)
-RUN_DEPENDS+= ${OCAMLC_DEPEND}
-. endif
-PLIST_SUB+= OCAML_SITELIBDIR="${OCAML_SITELIBDIR}"
-. endif
-
-. if defined(USE_OCAML_FINDLIB)
-#
-# We'll additionally add ocamlfind to RUN_DEPENDS, since
-# if the port requires ocamlfind to install - it requires
-# some ocaml libraries and these libraries RUN_DEPENDS on
-# ocamlfind
-#
-BUILD_DEPENDS+= ${OCAMLFIND_DEPEND}
-RUN_DEPENDS+= ${OCAMLFIND_DEPEND}
-MAKE_ENV+= OCAMLFIND_DESTDIR="${STAGEDIR}${OCAMLFIND_DESTDIR}" \
- OCAMLFIND_LDCONF="${OCAMLFIND_LDCONF}"
-
-#
-# Directories under site-lib to process automatically
-#
-OCAML_PKGDIRS?= ${PORTNAME}
-_USES_install+= 735:ocaml-findlib
-. if !target(ocaml-findlib)
-ocaml-findlib:
-. for DIR in ${OCAML_PKGDIRS}
-. if defined(USE_OCAMLFIND_PLIST)
- @${FIND} ${STAGEDIR}${PREFIX}/${OCAML_SITELIBDIR}/${DIR}/ -type f -print | ${SED} -e \
- 's,^${STAGEDIR}${PREFIX}/,,' >> ${TMPPLIST}
-. endif
- @${ECHO_CMD} "@postunexec ${OCAMLFIND} remove ${DIR} 2>/dev/null" \
- >> ${TMPPLIST}
-. endfor
-. endif
-. endif
-
-. if defined(USE_OCAML_CAMLP4)
-BUILD_DEPENDS+= ${CAMLP4_DEPEND}
-. endif
-
-. if defined(USE_OCAML_TK)
-. if !defined(NO_OCAMLTK_BUILDDEPENDS)
-EXTRACT_DEPENDS+= ${OCAMLTK_DEPENDS}
-PATCH_DEPENDS+= ${OCAMLTK_DEPENDS}
-BUILD_DEPENDS+= ${OCAMLTK_DEPENDS}
-. endif
-. if !defined(NO_OCAMLTK_RUNDEPENDS)
-RUN_DEPENDS+= ${OCAMLTK_DEPENDS}
-. endif
-. endif
-
-. if defined(USE_OCAML_LDCONFIG)
-#
-# Directories under PREFIX for appending to ld.conf
-#
-OCAML_LDLIBS?= ${OCAML_SITELIBDIR}/${PORTNAME}
-_USES_install+= 740:ocaml-ldconfig
-. if !target(ocaml-ldconfig)
-ocaml-ldconfig:
-. for LIB in ${OCAML_LDLIBS}
- @${ECHO_CMD} "@postexec ${ECHO_CMD} "%D/${LIB}" >> %D/${OCAML_LDCONF}" \
- >> ${TMPPLIST}
- @${ECHO_CMD} "@postunexec ${SED} -i \"\" -e '/${LIB:S#/#\/#g}/d' %D/${OCAML_LDCONF}" >> ${TMPPLIST}
-. endfor
-. endif
-. endif
-
-. if defined(USE_OCAML_WASH)
-PLIST_FILES+= "@rmempty ${OCAML_LDCONF}"
-. endif
-
-.endif #!defined(OCAML_include)
-
-.if defined(_POSTMKINCLUDED)
-
-. if defined(USE_OCAML_FINDLIB)
-
-pre-install: ${STAGEDIR}${OCAMLFIND_DESTDIR}
-${STAGEDIR}${OCAMLFIND_DESTDIR}:
- @${MKDIR} ${.TARGET}
-
-. endif
-
-.endif # _POSTMKINCLUDED
diff --git a/Mk/bsd.options.desc.mk b/Mk/bsd.options.desc.mk
index f3bbd90e49d7..0460f2782076 100644
--- a/Mk/bsd.options.desc.mk
+++ b/Mk/bsd.options.desc.mk
@@ -82,6 +82,7 @@ DTRACE_DESC?= Build with DTrace probes
DV_DESC?= Quasar DV video codec support (libdv)
DVDCSS_DESC?= Encrypted DVD support via libdvdcss
ECW_DESC?= ECW image format support
+ENCHANT_DESC?= Spell checking support via Enchant
ESPEAK_DESC?= eSpeak speech synthesizer support
EXAMPLES_DESC?= Build and/or install examples
EXIV2_DESC?= EXIF and IPTC metadata support via exiv2
@@ -161,8 +162,8 @@ H323_DESC?= H.323 codec support
HAL_DESC?= HAL (Hardware Abstraction Layer) support
HDF5_DESC?= HDF-5 data format support
HEIF_DESC?= ISO/IEC 23008-12:2017 HEIF file format support
-HPACK_DESC?= Header Compression for HTTP/2.0 support
-HTTP2_DESC?= HTTP protocol version 2.0 support
+HPACK_DESC?= Header Compression for HTTP/2 support
+HTTP2_DESC?= HTTP/2 protocol support
HTTPD_DESC?= httpd output streaming support
HTTPS_DESC?= HTTPS protocol support
HUNSPELL_DESC?= Spell checking support via Hunspell
@@ -192,7 +193,7 @@ JPEG2000_DESC?= JPEG 2000 support
JSON_C_DESC?= JSON file/format parser support via json-c
JSON_DESC?= JSON file/format/parser support
JXL_DESC?= JPEG XL image format via libjxl
-KDE4_DESC?= KDE 4 desktop environment support
+KDE_DESC?= KDE desktop environment support
KERBEROS_DESC?= Kerberos support
KERBEROS4_DESC?= Kerberos 4 support
KERBEROS5_DESC?= Kerberos 5 support
@@ -350,8 +351,7 @@ MP4_DESC?= MP4 media format support
MPEG2_DESC?= MPEG-2 video support via libmpeg2
MPG123_DESC?= MP3 decoding support via mpg123
MPI_DESC?= MPI (Message Passing Interface) support
-MPICH_DESC?= Parallel processing support via MPICH 3
-MPICH2_DESC?= Parallel processing support via MPICH 2
+MPICH_DESC?= Parallel processing support via MPICH
MPLAYER_DESC?= MPlayer media player support
MPLS_DESC?= MPLS support
MPP_DESC?= Musepack audio format support
@@ -389,7 +389,7 @@ OPENCL_DESC?= Heterogeneous computing via OpenCL
OPENCV_DESC?= Computer Vision support via OpenCV
OPENEXR_DESC?= HDR image format support via OpenEXR
OPENGL_DESC?= 2D/3D rendering support via OpenGL
-OPENJPEG_DESC?= Enhanced JPEG graphics support
+OPENJPEG_DESC?= JPEG 2000 support via OpenJPEG
OPENMP_DESC?= Parallel processing support via OpenMP
OPENMPI_DESC?= Parallel processing support via Open MPI
OPENRAW_DESC?= RAW camera format support
@@ -442,8 +442,6 @@ READLINE_DESC?= Command line editing via libreadline
REDIS_DESC?= Redis key-value store database support
REGEX_DESC?= Regular expression support
RESIN3_DESC?= Resin 3.x support
-RTMP_DESC?= RTMP protocol support via librtmp
-RTMPDUMP_DESC?= RTMP protocol support via rtmpdump
RTSP_DESC?= Real Time Streaming Protocol (RTSP) support
RUBY_DESC?= Ruby bindings or support
SAMPLERATE_DESC?= Sample rate conversion support
@@ -501,7 +499,6 @@ TIFF_DESC?= TIFF image format support
TINYXML_DESC?= XML parser support via TinyXML
TK_DESC?= Tk GUI toolkit support
TLS_DESC?= Secure network connection support via TLS
-TOMCAT85_DESC?= Use Tomcat 8.5.x
TOMCAT9_DESC?= Use Tomcat 9.0.x
TOMCAT101_DESC?= Use Tomcat 10.1.x
TOML_DESC?= TOML format or parser support
@@ -533,10 +530,12 @@ VST3_DESC?= VST3 audio plugins support
WAV_DESC?= WAV audio format support
WAVPACK_DESC?= WavPack lossless audio format support
WAYLAND_DESC?= Wayland (graphics) support
+WEBENGINE_DESC?= Webpage renderer support via WebEngine
WEBGL_DESC?= WebGL 2D/3D graphics rendering support
WEBKIT_DESC?= WebKit webpage renderer support
WEBP_DESC?= WebP image format support
WEBSERVER_DESC?= Build and/or install internal web server
+WEBSOCKET_DESC?= WebSocket protocol support
WEBUI_DESC?= Build and/or install web user interface
WMA_DESC?= Windows Media Audio audio format support
WMF_DESC?= Windows Metafile image format support
diff --git a/Mk/bsd.options.mk b/Mk/bsd.options.mk
index 964b817ff706..3b4b2dd4d300 100644
--- a/Mk/bsd.options.mk
+++ b/Mk/bsd.options.mk
@@ -472,6 +472,7 @@ SUBPACKAGES+= ${${opt}_SUBPACKAGES_OFF}
. endif
. endif
. endfor
+
. for opt in ${_REALLY_ALL_POSSIBLE_OPTIONS}
# PLIST_SUB
PLIST_SUB?=
diff --git a/Mk/bsd.port.mk b/Mk/bsd.port.mk
index 8e13aa4f9b24..0aa79aed7ed0 100644
--- a/Mk/bsd.port.mk
+++ b/Mk/bsd.port.mk
@@ -42,7 +42,7 @@ FreeBSD_MAINTAINER= portmgr@FreeBSD.org
# OSREL - The release version of the operating system as a text
# string (e.g., "12.4").
# OSVERSION - The operating system version as a comparable integer;
-# the value of __FreeBSD_version (e.g., 1302000).
+# the value of __FreeBSD_version (e.g., 1501000).
#
# This is the beginning of the list of all variables that need to be
# defined in a port, listed in order that they should be included
@@ -357,18 +357,6 @@ FreeBSD_MAINTAINER= portmgr@FreeBSD.org
##
# LDFLAGS_${ARCH} Append the ldflags to LDFLAGS only on the specified architecture
##
-# USE_OPENLDAP - If set, this port uses the OpenLDAP libraries.
-# Implies: WANT_OPENLDAP_VER?=24
-# WANT_OPENLDAP_VER
-# - Legal values are: 24
-# If set to an unknown value, the port is marked BROKEN.
-##
-# USE_JAVA - If set, this port relies on the Java language.
-# Implies inclusion of bsd.java.mk. (Also see
-# that file for more information on USE_JAVA_*).
-# USE_OCAML - If set, this port relies on the OCaml language.
-# Implies inclusion of bsd.ocaml.mk. (Also see
-# that file for more information on USE_OCAML*).
##
# USE_GECKO - If set, this port uses the Gecko/Mozilla product.
# See bsd.gecko.mk for more details.
@@ -385,9 +373,6 @@ FreeBSD_MAINTAINER= portmgr@FreeBSD.org
# Implies NO_LICENSES_INSTALL=yes, NO_MTREE=yes, and causes
# Linux ldconfig to be used when USE_LDCONFIG is defined.
##
-# USE_TEX - A list of the TeX dependencies the port has.
-#
-##
# USE_RC_SUBR - If set, the ports startup/shutdown script uses the common
# routines found in /etc/rc.subr.
# If this is set to a list of files, these files will be
@@ -1015,13 +1000,14 @@ LC_ALL= C
# These need to be absolute since we don't know how deep in the ports
# tree we are and thus can't go relative. They can, of course, be overridden
# by individual Makefiles or local system make configuration.
-_LIST_OF_WITH_FEATURES= bind_now debug debuginfo lto pie relro sanitize ssp testing
+_LIST_OF_WITH_FEATURES= bind_now debug debuginfo fortify lto pie relro \
+ sanitize ssp stack_autoinit testing zeroregs
_DEFAULT_WITH_FEATURES= ssp
PORTSDIR?= /usr/ports
LOCALBASE?= /usr/local
LINUXBASE?= /compat/linux
DISTDIR?= ${PORTSDIR}/distfiles
-_DISTDIR?= ${DISTDIR}/${DIST_SUBDIR}
+_DISTDIR?= ${DISTDIR}${DIST_SUBDIR:D/${DIST_SUBDIR}}
INDEXDIR?= ${PORTSDIR}
SRC_BASE?= /usr/src
USESDIR?= ${PORTSDIR}/Mk/Uses
@@ -1179,7 +1165,7 @@ OSVERSION!= ${AWK} '/^\#define[[:blank:]]__FreeBSD_version/ {print $$3}' < ${SRC
. endif
_EXPORTED_VARS+= OSVERSION
-. if ${OPSYS} == FreeBSD && (${OSVERSION} < 1302000 )
+. if ${OPSYS} == FreeBSD && (${OSVERSION} < 1305000 || (${OSVERSION} >= 1400000 && ${OSVERSION} < 1402000))
_UNSUPPORTED_SYSTEM_MESSAGE= Ports Collection support for your ${OPSYS} version has ended, and no ports\
are guaranteed to build on this system. Please upgrade to a supported release.
. if defined(ALLOW_UNSUPPORTED_SYSTEM)
@@ -1217,15 +1203,7 @@ _OSVERSION_MAJOR= ${OSVERSION:C/([0-9]?[0-9])([0-9][0-9])[0-9]{3}/\1/}
. if !defined(_PKG_VERSION)
_PKG_VERSION!= ${PKG_BIN} -v
. endif
-# XXX hack for smooth transition towards pkg 1.17
-_PKG_BEFORE_PKGEXT!= ${PKG_BIN} version -t ${_PKG_VERSION:C/-.*//g} 1.17.0
-. if ${_PKG_BEFORE_PKGEXT} == "<"
-_PKG_TRANSITIONING_TO_NEW_EXT= yes
-_EXPORTED_VARS+= _PKG_TRANSITIONING_TO_NEW_EXT
-WARNING+= "It is strongly recommended to upgrade to a newer version of pkg first"
-. endif
-# XXX End of hack
-_PKG_STATUS!= ${PKG_BIN} version -t ${_PKG_VERSION:C/-.*//g} ${MINIMAL_PKG_VERSION}
+_PKG_STATUS!= ${PKG_VERSION} -t ${_PKG_VERSION:C/-.*//g} ${MINIMAL_PKG_VERSION}
. if ${_PKG_STATUS} == "<"
IGNORE= pkg(8) must be version ${MINIMAL_PKG_VERSION} or greater, but you have ${_PKG_VERSION}. You must upgrade the ${PKG_ORIGIN} port first
. endif
@@ -1386,7 +1364,7 @@ PORTEPOCH?= 0
_SUF2= ,${PORTEPOCH}
. endif
-PKGVERSION= ${PORTVERSION:C/[-_,]/./g}${_SUF1}${_SUF2}
+PKGVERSION= ${PORTVERSION:C/[-_,]/./g}${_OS_SUFX}${_SUF1}${_SUF2}
PKGNAME= ${PKGNAMEPREFIX}${PORTNAME}${PKGNAMESUFFIX}-${PKGVERSION}
DISTVERSIONFULL= ${DISTVERSIONPREFIX}${DISTVERSION:C/:(.)/\1/g}${DISTVERSIONSUFFIX}
DISTNAME?= ${PORTNAME}-${DISTVERSIONFULL}
@@ -1414,14 +1392,6 @@ PKGCOMPATDIR?= ${LOCALBASE}/lib/compat/pkg
.sinclude "${odir}/Mk/bsd.overlay.mk"
. endfor
-. if defined(USE_JAVA)
-.include "${PORTSDIR}/Mk/bsd.java.mk"
-. endif
-
-. if defined(USE_OCAML)
-.include "${PORTSDIR}/Mk/bsd.ocaml.mk"
-. endif
-
. if defined(USE_APACHE_BUILD)
USES+= apache:build,${USE_APACHE_BUILD:C/2([0-9])/2.\1/g}
. elif defined(USE_APACHE_RUN)
@@ -1615,8 +1585,12 @@ PKG_NOTES+= flavor
PKG_NOTE_flavor= ${FLAVOR}
. endif
+# GIT_CEILING_DIRECTORIES prevents ports that try to find their version
+# using git from finding the ports tree's git repository.
WRK_ENV+= HOME=${WRKDIR} \
+ MACHINE_ARCH=${MACHINE_ARCH} \
PWD="$${PWD}" \
+ GIT_CEILING_DIRECTORIES=${WRKDIR} \
__MAKE_CONF=${NONEXISTENT}
. for e in OSVERSION PATH TERM TMPDIR \
UNAME_b UNAME_i UNAME_K UNAME_m UNAME_n \
@@ -1871,15 +1845,7 @@ PKG_DEPENDS+= ${LOCALBASE}/sbin/pkg:${PKG_ORIGIN}
. if defined(LLD_UNSAFE) && ${/usr/bin/ld:L:tA} == /usr/bin/ld.lld
LDFLAGS+= -fuse-ld=bfd
BINARY_ALIAS+= ld=${LD}
-. if !defined(USE_BINUTILS)
-. if exists(/usr/bin/ld.bfd)
-LD= /usr/bin/ld.bfd
-CONFIGURE_ENV+= LD=${LD}
-MAKE_ENV+= LD=${LD}
-. else
USE_BINUTILS= yes
-. endif
-. endif
. endif
. if defined(USE_BINUTILS) && !defined(DISABLE_BINUTILS)
@@ -1909,6 +1875,23 @@ USE_LDCONFIG= ${PREFIX}/lib
IGNORE= has USE_LDCONFIG32 set to yes, which is not correct
. endif
+_ALL_LIB_DIRS= ${LIB_DIRS} ${USE_LDCONFIG}
+PKG_ENV+= SHLIB_PROVIDE_PATHS_NATIVE="${_ALL_LIB_DIRS:O:u:ts,}"
+. if defined(HAVE_COMPAT_IA32_KERN)
+_ALL_LIB_DIRS_32= /usr/lib32 ${LOCALBASE}/lib32 ${USE_LDCONFIG32}
+PKG_ENV+= SHLIB_PROVIDE_PATHS_COMPAT_32="${_ALL_LIB_DIRS_32:O:u:ts,}"
+. endif
+. if ${LINUX_DEFAULT} == c7 || ${LINUX_DEFAULT} == rl9
+. if ${ARCH} == i386
+PKG_ENV+= SHLIB_PROVIDE_PATHS_COMPAT_LINUX="${LINUXBASE}/usr/lib"
+. else
+PKG_ENV+= SHLIB_PROVIDE_PATHS_COMPAT_LINUX="${LINUXBASE}/usr/lib64"
+PKG_ENV+= SHLIB_PROVIDE_PATHS_COMPAT_LINUX_32="${LINUXBASE}/usr/lib"
+. endif
+. else
+. warning "Unknown Linux distribution ${LINUX_DEFAULT}, SHLIB_PROVIDE_PATHS_COMPAT_LINUX will not be set!"
+. endif
+
. if defined(USE_LDCONFIG) || defined(USE_LDCONFIG32)
. if defined(USE_LINUX_PREFIX)
PLIST_FILES+= "@ldconfig-linux ${LINUXBASE}"
@@ -1917,6 +1900,19 @@ PLIST_FILES+= "@ldconfig"
. endif
. endif
+. if defined(NO_SHLIB_REQUIRES_GLOB)
+PKG_ENV+= SHLIB_REQUIRE_IGNORE_GLOB="${NO_SHLIB_REQUIRES_GLOB:ts,}"
+. endif
+. if defined(NO_SHLIB_REQUIRES_REGEX)
+PKG_ENV+= SHLIB_REQUIRE_IGNORE_REGEX="${NO_SHLIB_REQUIRES_REGEX:ts,}"
+. endif
+. if defined(NO_SHLIB_PROVIDES_GLOB)
+PKG_ENV+= SHLIB_PROVIDE_IGNORE_GLOB="${NO_SHLIB_PROVIDES_GLOB:ts,}"
+. endif
+. if defined(NO_SHLIB_PROVIDES_REGEX)
+PKG_ENV+= SHLIB_PROVIDE_IGNORE_REGEX="${NO_SHLIB_PROVIDES_REGEX:ts,}"
+. endif
+
PKG_IGNORE_DEPENDS?= 'this_port_does_not_exist'
. if defined(_DESTDIR_VIA_ENV)
@@ -1945,14 +1941,6 @@ PKGPOSTDEINSTALL?= ${PKGDIR}/pkg-post-deinstall
.sinclude "${odir}/Mk/bsd.overlay.mk"
. endfor
-. if defined(USE_JAVA)
-.include "${PORTSDIR}/Mk/bsd.java.mk"
-. endif
-
-. if defined(USE_OCAML)
-.include "${PORTSDIR}/Mk/bsd.ocaml.mk"
-. endif
-
. if defined(USE_WX) || defined(USE_WX_NOT)
.include "${PORTSDIR}/Mk/bsd.wx.mk"
. endif
@@ -2057,6 +2045,7 @@ CFLAGS+= -fno-strict-aliasing
. for lang in C CXX
. if defined(USE_${lang}STD)
${lang}FLAGS:= ${${lang}FLAGS:N-std=*} -std=${USE_${lang}STD}
+MAKE_ENV+= ${lang}STD=${USE_${lang}STD}
. endif
${lang}FLAGS+= ${${lang}FLAGS_${ARCH}}
@@ -2211,20 +2200,11 @@ TMPPLIST?= ${WRKDIR}/.PLIST.mktmp
_PLIST?= ${WRKDIR}/.PLIST
# backward compatibility for users
-. if defined(_PKG_TRANSITIONING_TO_NEW_EXT)
-. if defined(PKG_NOCOMPRESS)
-PKG_SUFX?= .tar
-. else
-PKG_SUFX?= .txz
-. endif
-PKG_COMPRESSION_FORMAT?= ${PKG_SUFX:S/.//}
-. else
-. if defined(PKG_SUFX)
+. if defined(PKG_SUFX)
PKG_COMPRESSION_FORMAT?= ${PKG_SUFX:S/.//}
WARNING+= "PKG_SUFX is defined, it should be replaced with PKG_COMPRESSION_FORMAT"
-. endif
-PKG_SUFX= .pkg
. endif
+PKG_SUFX= .pkg
. if defined(PKG_NOCOMPRESS)
PKG_COMPRESSION_FORMAT?= tar
. else
@@ -2589,7 +2569,8 @@ check-categories:
VALID_CATEGORIES+= accessibility afterstep arabic archivers astro audio \
benchmarks biology budgie cad chinese comms converters \
databases deskutils devel dns docs \
- editors education elisp emulators enlightenment finance french ftp \
+ editors education elisp emulators enlightenment \
+ filesystems finance french ftp \
games geography german gnome gnustep graphics \
hamradio haskell hebrew hungarian irc japanese java \
kde ${_KDE_CATEGORIES_SUPPORTED} kld korean \
@@ -3104,9 +3085,8 @@ check-vulnerable:
${SH} ${SCRIPTSDIR}/check-vulnerable.sh
. endif
-# Quote simply quote all variables, except FETCH_ENV, some ports are creative
-# with it, and it needs to be quoted twice to pass through the echo/eval in
-# do-fetch.
+# Quote all variables except FETCH_ENV. Because some ports are creative,
+# quoting twice is necessary to pass through the echo/eval in do-fetch.
_DO_FETCH_ENV= \
dp_DISABLE_SIZE='${DISABLE_SIZE}' \
dp_DISTDIR='${_DISTDIR}' \
@@ -3459,18 +3439,6 @@ _EXTRA_PACKAGE_TARGET_DEP+= ${PKGLATESTFILE}
${PKGLATESTFILE}: ${PKGFILE} ${PKGLATESTREPOSITORY}
${INSTALL} -l rs ${PKGFILE} ${PKGLATESTFILE}
-. if !defined(_PKG_TRANSITIONING_TO_NEW_EXT) && ${PKG_COMPRESSION_FORMAT} == txz
-_EXTRA_PACKAGE_TARGET_DEP+= ${PKGOLDLATESTFILE} ${PKGOLDSIGFILE}
-
-${PKGOLDLATESTFILE}: ${PKGFILE} ${PKGLATESTREPOSITORY}
- ${INSTALL} -l rs ${PKGFILE} ${PKGOLDLATESTFILE}
-
-# Temporary workaround to be deleted once every supported version of FreeBSD
-# have a bootstrap which handles the pkg extension.
-
-${PKGOLDSIGFILE}: ${PKGLATESTREPOSITORY}
- ${INSTALL} -l rs pkg.pkg.sig ${PKGOLDSIGFILE}
-. endif
. endif
. endif
@@ -3632,10 +3600,6 @@ install-ldconfig-file:
fixup-lib-pkgconfig:
@if [ -d ${STAGEDIR}${PREFIX}/lib/pkgconfig ]; then \
if [ -z "$$(${FIND} ${STAGEDIR}${PREFIX}/lib/pkgconfig -maxdepth 0 -empty)" ]; then \
- if [ -n "${DEVELOPER:Dyes}" ]; then \
- ${ECHO_MSG} "===> File(s) found in lib/pkgconfig while correct path is libdata/pkgconfig"; \
- ${ECHO_MSG} " Applying fix but consider using USES= pathfix or adjust install path"; \
- fi; \
${MKDIR} ${STAGEDIR}${PREFIX}/libdata/pkgconfig; \
${MV} ${STAGEDIR}${PREFIX}/lib/pkgconfig/* ${STAGEDIR}${PREFIX}/libdata/pkgconfig; \
fi; \
@@ -4412,6 +4376,7 @@ create-manifest.${sp}:
dp_PREFIX='${PREFIX}' \
dp_USERS='${USERS:u:S/$/,/}' \
dp_WWW='${WWW}' \
+ dp_VITAL='${VITAL${_SP.${sp}}}' \
${PKG_NOTES_ENV.${sp}} \
${SH} ${SCRIPTSDIR}/create-manifest.sh
. endfor
@@ -5408,6 +5373,12 @@ show-dev-errors:
. endif
. endif #DEVELOPER
+. if defined(HAS_SYMBOL_VERSION)
+stage-sanity: check_has_symbol_version
+check_has_symbol_version:
+ ${SH} ${SCRIPTSDIR}/check_have_symbols.sh ${STAGEDIR} ${HAS_SYMBOL_VERSION}
+. endif # HAS_SYMBOL_VERSION
+
${_PORTS_DIRECTORIES}:
@${MKDIR} ${.TARGET}
@@ -5477,8 +5448,8 @@ _STAGE_SEQ= 050:stage-message 100:stage-dir 150:run-depends \
860:install-rc-script 870:install-ldconfig-file \
880:install-license 890:install-desktop-entries \
900:add-plist-info 910:add-plist-docs 920:add-plist-examples \
- 930:add-plist-data 940:add-plist-post ${POST_PLIST:C/^/990:/} \
- ${_OPTIONS_install} ${_USES_install} \
+ 930:add-plist-data 940:add-plist-post 994:stage-sanity \
+ ${_OPTIONS_install} ${_USES_install} ${POST_PLIST:C/^/990:/} \
${_OPTIONS_stage} ${_USES_stage} ${_FEATURES_stage}
. if defined(DEVELOPER)
_STAGE_SEQ+= 995:stage-qa
diff --git a/Mk/bsd.sanity.mk b/Mk/bsd.sanity.mk
index 557b72a30509..18c49a2ea5aa 100644
--- a/Mk/bsd.sanity.mk
+++ b/Mk/bsd.sanity.mk
@@ -210,7 +210,11 @@ SANITY_UNSUPPORTED= USE_OPENAL USE_FAM USE_MAKESELF USE_ZIP USE_LHA USE_CMAKE \
XORG_CAT CARGO_USE_GITHUB CARGO_USE_GITLAB CARGO_GIT_SUBDIR \
USE_RUBY USE_RUBY_EXTCONF USE_RUBY_SETUP RUBY_NO_BUILD_DEPENDS \
RUBY_NO_RUN_DEPENDS USE_APACHE USE_APACHE_BUILD USE_APACHE_RUN \
- USE_OPENLDAP WANT_OPENLDAP_VER
+ USE_OPENLDAP WANT_OPENLDAP_VER USE_OCAML USE_OCAML_CAMLP4 USE_OCAML_WASH \
+ USE_OCAML_TK NO_OCAMLTK_BUILDDEPENDS NO_OCAMLTK_RUNDEPENDS \
+ USE_OCAMLFIND_PLIST USE_OCAML_FINDLIB USE_OCAML_LDCONFIG \
+ NO_OCAML_BUILDDEPENDS NO_OCAML_RUNDEPENDS USE_JAVA JAVA_BUILD \
+ JAVA_EXTRACT USE_ANT JAVA_RUN
SANITY_DEPRECATED= MLINKS \
USE_MYSQL WANT_MYSQL_VER \
PYDISTUTILS_INSTALLNOSINGLE
@@ -307,6 +311,22 @@ USE_RUBY_EXTCONF_ALT= USES=ruby:extconf
USE_RUBY_SETUP_ALT= USES=ruby:setup
RUBY_NO_BUILD_DEPENDS_ALT= USES=ruby:run
RUBY_NO_RUN_DEPENDS_ALT= USES=ruby:build
+USE_OCAMLFIND_PLIST_ALT= USES=ocaml:findplist
+USE_OCAML_ALT= USES=ocaml
+USE_OCAML_CAMLP4_ALT= USES=ocaml:camlp4
+USE_OCAML_FINDLIB_ALT= USES=ocaml:findlib
+USE_OCAML_LDCONFIG_ALT= USES=ocaml:ldconfig
+USE_OCAML_TK_ALT= USES=ocaml:tk
+USE_OCAML_WASH_ALT= USES=ocaml:wash
+NO_OCAMLTK_BUILDDEPENDS_ALT= USES=ocaml:tkrun
+NO_OCAMLTK_RUNDEPENDS_ALT= USES=ocaml:tkbuild
+NO_OCAML_BUILDDEPENDS_ALT= USES=ocaml:run
+NO_OCAML_RUNDEPENDS_ALT= USES=ocaml:build
+USE_ANT_ALT= USES=java:ant
+USE_JAVA_ALT= USES=java
+JAVA_EXTRACT_ALT= USES=java:extract
+JAVA_BUILD_ALT= USES=java:build
+JAVA_RUN_ALT= USES=java:run
.for a in ${SANITY_DEPRECATED}
. if defined(${a})
diff --git a/Mk/bsd.sites.mk b/Mk/bsd.sites.mk
index 25019117c79a..0adc034f5ef8 100644
--- a/Mk/bsd.sites.mk
+++ b/Mk/bsd.sites.mk
@@ -40,8 +40,7 @@ MASTER_SITE_PORTS_JP+= \
.if !defined(IGNORE_MASTER_SITE_AFTERSTEP)
MASTER_SITE_AFTERSTEP+= \
- ftp://ftp.afterstep.org/%SUBDIR%/ \
- ftp://ftp.kddlabs.co.jp/X11/AfterStep/%SUBDIR%/
+ ftp://ftp.afterstep.org/%SUBDIR%/
.endif
.if !defined(IGNORE_MASTER_SITE_APACHE)
@@ -51,7 +50,6 @@ MASTER_SITE_APACHE+= \
https://mirror.its.dal.ca/apache/%SUBDIR%/ \
http://mirror.cogentco.com/pub/apache/%SUBDIR%/ \
http://mirror.navercorp.com/apache/%SUBDIR%/ \
- http://ftp.kddi-research.jp/infosystems/apache/%SUBDIR%/ \
http://miroir.univ-lorraine.fr/apache/%SUBDIR%/
.endif
@@ -105,8 +103,7 @@ MASTER_SITE_CRAN+= \
https://cran.csiro.au/%SUBDIR%/ \
https://mirrors.tuna.tsinghua.edu.cn/CRAN/%SUBDIR%/ \
https://mirror.las.iastate.edu/CRAN/%SUBDIR%/ \
- https://cran.ma.imperial.ac.uk/%SUBDIR%/ \
- https://cran.ism.ac.jp/%SUBDIR%/
+ https://cran.ma.imperial.ac.uk/%SUBDIR%/
.endif
.if !defined(IGNORE_MASTER_SITE_CRAN_ARCHIVE)
@@ -151,18 +148,37 @@ MASTER_SITE_EXIM+= \
.if !defined(IGNORE_MASTER_SITE_CENTOS_LINUX)
MASTER_SITE_CENTOS_LINUX+= \
- http://mirror.centos.org/%SUBDIR%/:DEFAULT,aarch64,amd64,i386 \
http://vault.centos.org/%SUBDIR%/:DEFAULT,aarch64,amd64,i386,SOURCE
.endif
+.if !defined(IGNORE_MASTER_SITE_ROCKY_LINUX)
+MASTER_SITE_ROCKY_LINUX+= \
+ https://dl.rockylinux.org/pub/rocky/%SUBDIR%/:DEFAULT,aarch64,amd64,SOURCE \
+ https://dl.rockylinux.org/vault/rocky/%SUBDIR%/:DEFAULT,aarch64,amd64,SOURCE
+.endif
+
.if !defined(IGNORE_MASTER_SITE_EPEL7)
MASTER_SITE_EPEL7+= \
- https://dl.fedoraproject.org/pub/epel/7/aarch64/Packages/%SUBDIR%/:DEFAULT,aarch64 \
- https://dl.fedoraproject.org/pub/epel/7/x86_64/Packages/%SUBDIR%/:DEFAULT,amd64 \
- https://dl.fedoraproject.org/pub/epel/7/SRPMS/Packages/%SUBDIR%/:SOURCE \
- http://dl.fedoraproject.org/pub/epel/7/aarch64/Packages/%SUBDIR%/:DEFAULT,aarch64 \
- http://dl.fedoraproject.org/pub/epel/7/x86_64/Packages/%SUBDIR%/:DEFAULT,amd64 \
- http://dl.fedoraproject.org/pub/epel/7/SRPMS/Packages/%SUBDIR%/:SOURCE
+ https://archives.fedoraproject.org/pub/archive/epel/7/aarch64/Packages/%SUBDIR%/:DEFAULT,aarch64 \
+ https://archives.fedoraproject.org/pub/archive/epel/7/x86_64/Packages/%SUBDIR%/:DEFAULT,amd64 \
+ https://archives.fedoraproject.org/pub/archive/epel/7/SRPMS/Packages/%SUBDIR%/:SOURCE \
+ http://archives.fedoraproject.org/pub/archive/epel/7/aarch64/Packages/%SUBDIR%/:DEFAULT,aarch64 \
+ http://archives.fedoraproject.org/pub/archive/epel/7/x86_64/Packages/%SUBDIR%/:DEFAULT,amd64 \
+ http://archives.fedoraproject.org/pub/archive/epel/7/SRPMS/Packages/%SUBDIR%/:SOURCE
+.endif
+
+.if !defined(IGNORE_MASTER_SITE_EPEL9)
+MASTER_SITE_EPEL9+= \
+ https://dl.fedoraproject.org/pub/epel/9/Everything/aarch64/Packages/%SUBDIR%/:DEFAULT,aarch64 \
+ https://dl.fedoraproject.org/pub/epel/9/Everything/x86_64/Packages/%SUBDIR%/:DEFAULT,amd64 \
+ https://dl.fedoraproject.org/pub/epel/9/Everything/source/tree/Packages/%SUBDIR%/:SOURCE
+.endif
+
+.if !defined(IGNORE_MASTER_SITE_RPMFUSION9)
+MASTER_SITE_RPMFUSION9+= \
+ https://ftp.icm.edu.pl/pub/Linux/dist/rpmfusion/free/el/updates/9/aarch64/%SUBDIR%/:DEFAULT,aarch64 \
+ https://ftp.icm.edu.pl/pub/Linux/dist/rpmfusion/free/el/updates/9/x86_64/%SUBDIR%/:DEFAULT,amd64 \
+ https://ftp.icm.edu.pl/pub/Linux/dist/rpmfusion/free/el/updates/9/SRPMS/%SUBDIR%/:DEFAULT,SOURCE
.endif
.if !defined(IGNORE_MASTER_SITE_FARSIGHT)
@@ -281,7 +297,7 @@ GH_SUBDIR+= ${GH_TUPLE:C@^([^:]*):([^:]*):([^:]*)((:[^:/]*)?)((/.*)?)@\6\4@:M/*:
MASTER_SITE_GITHUB+= https://codeload.github.com/%SUBDIR%
MASTER_SITE_GITHUB_CLOUD+= https://cloud.github.com/downloads/%SUBDIR%
-. if !defined(MASTER_SITES) || !${MASTER_SITES:MGH} && !${MASTER_SITES:MGHC} && !${USE_GITHUB:Mnodefault}
+. if ( !defined(MASTER_SITES) || !${MASTER_SITES:MGH} && !${MASTER_SITES:MGHC} ) && !${USE_GITHUB:Mnodefault}
MASTER_SITES+= GH
. endif
GH_ACCOUNT_DEFAULT= ${PORTNAME}
@@ -562,23 +578,27 @@ WWW?= https://gitlab.com/${GL_ACCOUNT}/${GL_PROJECT}/
.endif # !defined(IGNORE_MASTER_SITE_GITLAB)
.if !defined(IGNORE_MASTER_SITE_GNOME)
+. if defined(DISTVERSION) && ${DISTVERSION:M[0-9]*}
+_version_major= ${DISTVERSION:C|^([0-9]+).*|\1|}
+_version_minor= ${DISTVERSION:C|^([0-9]+)\.([0-9]+).*|\2|}
+
+. if ${_version_major} >= 10
+_gnome_ver= ${_version_major}
+. else
+_gnome_ver= ${_version_major}.${_version_minor}
+. endif
+. endif
+
+_GNOME_PATH= %SUBDIR%/${_gnome_ver}
+
MASTER_SITE_GNOME+= \
- https://download.gnome.org/%SUBDIR%/ \
- https://gitlab.gnome.org/GNOME/${PORTNAME}/-/archive/${PORTVERSION}/ \
- http://ftp.belnet.be/mirror/ftp.gnome.org/gnomeftp/%SUBDIR%/ \
- ftp://ftp.belnet.be/mirror/ftp.gnome.org/gnomeftp/%SUBDIR%/ \
- https://ftp.acc.umu.se/pub/GNOME/%SUBDIR%/ \
- ftp://ftp.cse.buffalo.edu/pub/Gnome/%SUBDIR%/ \
- https://fr2.rpmfind.net/linux/gnome.org/%SUBDIR%/ \
- ftp://ftp.kddlabs.co.jp/pub/GNOME/%SUBDIR%/ \
- ftp://ftp.mirrorservice.org/sites/ftp.gnome.org/pub/GNOME/%SUBDIR%/ \
- ftp://ftp.nara.wide.ad.jp/pub/X11/GNOME/%SUBDIR%/
+ https://download.gnome.org/${_GNOME_PATH}/
.endif
.if !defined(IGNORE_MASTER_SITE_GIMP)
MASTER_SITE_GIMP+= \
- http://gimp.mirrors.hoobly.com/pub/%SUBDIR%/ \
- http://gimp.afri.cc/pub/%SUBDIR%/ \
+ https://ftp.gwdg.de/pub/misc/grafik/%SUBDIR%/ \
+ https://www.mirrorservice.org/sites/ftp.gimp.org/pub/%SUBDIR%/ \
https://download.gimp.org/pub/%SUBDIR%/
.endif
@@ -590,7 +610,6 @@ MASTER_SITE_GNU+= \
https://www.nic.funet.fi/pub/gnu/gnu/%SUBDIR%/ \
http://mirror.navercorp.com/gnu/%SUBDIR%/ \
http://ftp.halifax.rwth-aachen.de/gnu/%SUBDIR%/ \
- http://ftp.kddilabs.jp/GNU/gnu/%SUBDIR%/ \
ftp://mirrors.rit.edu/gnu/%SUBDIR%/ \
ftp://ftp.fu-berlin.de/unix/gnu/%SUBDIR%/ \
ftp://ftp.mirrorservice.org/sites/ftp.gnu.org/gnu/%SUBDIR%/ \
@@ -601,7 +620,6 @@ MASTER_SITE_GNU+= \
.if !defined(IGNORE_MASTER_SITE_GNUPG)
MASTER_SITE_GNUPG+= \
https://mirrors.dotsrc.org/gcrypt/%SUBDIR%/ \
- https://ftp.heanet.ie/mirrors/ftp.gnupg.org/gcrypt/%SUBDIR%/ \
https://www.mirrorservice.org/sites/ftp.gnupg.org/gcrypt/%SUBDIR%/ \
http://www.ring.gr.jp/pub/net/gnupg/%SUBDIR%/ \
https://gnupg.org/ftp/gcrypt/%SUBDIR%/
@@ -637,16 +655,10 @@ MASTER_SITE_HACKAGE+= \
.if !defined(IGNORE_MASTER_SITE_IDSOFTWARE)
MASTER_SITE_IDSOFTWARE+= \
- ftp://ftp.gwdg.de/pub/misc2/ftp.idsoftware.com/idstuff/%SUBDIR%/ \
- http://ftp4.de.freesbie.org/pub/misc/ftp.idsoftware.com/idstuff/%SUBDIR%/ \
- ftp://ftp.fu-berlin.de/pc/games/idgames/idstuff/%SUBDIR%/ \
- ftp://ftp.gamers.org/pub/idgames/idstuff/%SUBDIR%/ \
- http://ftp.iinet.net.au/games/idstuff/%SUBDIR%/ \
- ftp://ftp.mirror.nl/disk2/idsoftware/idstuff/%SUBDIR%/ \
- ftp://freebsd.nsu.ru/mirrors/ftp.idsoftware.com/idstuff/%SUBDIR%/ \
- ftp://ftp.ntua.gr/pub/vendors/idgames/idstuff/%SUBDIR%/ \
- ftp://ftp.omen.net.au/games/idstuff/%SUBDIR%/ \
- ftp://ftp.idsoftware.com/idstuff/%SUBDIR%/
+ https://ftp.gwdg.de/pub/misc/ftp.idsoftware.com/idstuff/%SUBDIR%/ \
+ https://ftp.fu-berlin.de/pc/games/idgames/idstuff/%SUBDIR%/ \
+ https://ftp.gamers.org/pub/idgames/idstuff/%SUBDIR%/ \
+ ftp://ftp.omen.net.au/games/idstuff/%SUBDIR%/
.endif
.if !defined(IGNORE_MASTER_SITE_ISC)
@@ -698,8 +710,6 @@ MASTER_SITE_MOZILLA_ADDONS+= \
.if !defined(IGNORE_MASTER_SITE_MYSQL)
MASTER_SITE_MYSQL+= \
- ftp://ftp.fi.muni.cz/pub/mysql/Downloads/%SUBDIR%/ \
- ftp://ftp.gwdg.de/pub/misc/mysql/Downloads/%SUBDIR%/ \
https://dev.mysql.com/get/Downloads/%SUBDIR%/
.endif
@@ -788,7 +798,6 @@ MASTER_SITE_PERL_CPAN_BY+= \
https://cpan.metacpan.org/modules/by-module/%SUBDIRPLUS%/ \
https://www.cpan.org/%CPANSORT%/%SUBDIR%/ \
ftp://ftp.cpan.org/pub/CPAN/%CPANSORT%/%SUBDIR%/ \
- ftp://ftp.kddlabs.co.jp/lang/perl/CPAN/%CPANSORT%/%SUBDIR%/ \
http://ftp.jaist.ac.jp/pub/CPAN/%CPANSORT%/%SUBDIR%/ \
ftp://ftp.mirrorservice.org/sites/cpan.perl.org/CPAN/%CPANSORT%/%SUBDIR%/ \
ftp://ftp.auckland.ac.nz/pub/perl/CPAN/%CPANSORT%/%SUBDIR%/ \
@@ -894,8 +903,8 @@ MASTER_SITE_SAVANNAH+= \
MASTER_SITE_SOURCEFORGE+= ${p}://downloads.sourceforge.net/project/%SUBDIR%/
. for m in cfhcable cytranet deac-ams deac-fra deac-riga excellmedia \
freefr gigenet ixpeering jaist kumisystems liquidtelecom \
- nchc netactuate netcologne netix onboardcloud phoenixnap \
- razaoinfo sinalbr sitsa tenet udomain ufpr versaweb
+ nchc netactuate netcologne onboardcloud phoenixnap \
+ razaoinfo sinalbr sitsa tenet ufpr versaweb
MASTER_SITE_SOURCEFORGE+= ${p}://${m}.dl.sourceforge.net/project/%SUBDIR%/
. endfor
. endfor
@@ -916,8 +925,6 @@ MASTER_SITE_SUDO+= \
http://sudo.p8ra.de/sudo/dist/ \
http://sudo.cybermirror.org/ \
http://sudo-ftp.basemirror.de/ \
- http://core.ring.gr.jp/archives/misc/sudo/ \
- http://www.ring.gr.jp/archives/misc/sudo/ \
http://ftp.twaren.net/Unix/Security/Sudo/ \
ftp://ftp.sudo.ws/pub/sudo/ \
ftp://plier.ucar.edu/pub/sudo/ \
@@ -933,8 +940,6 @@ MASTER_SITE_SUDO+= \
ftp://ftp.informatik.uni-hamburg.de/pub/os/unix/utils/sudo/ \
ftp://ftp.st.ryukoku.ac.jp/pub/security/tool/sudo/ \
ftp://ftp.cin.nihon-u.ac.jp/pub/misc/sudo/ \
- ftp://core.ring.gr.jp/pub/misc/sudo/ \
- ftp://ftp.ring.gr.jp/pub/misc/sudo/ \
ftp://sunsite.icm.edu.pl/packages/sudo/ \
ftp://mirror.cdmon.com/pub/sudo/ \
ftp://ftp.twaren.net/Unix/Security/Sudo/
@@ -951,7 +956,6 @@ MASTER_SITE_SUNSITE+= \
.if !defined(IGNORE_MASTER_SITE_TCLTK)
MASTER_SITE_TCLTK+= \
ftp://ftp.tcl.tk/pub/tcl/%SUBDIR%/ \
- ftp://ftp.kddlabs.co.jp/lang/tcl/ftp.scriptics.com/%SUBDIR%/ \
ftp://ftp.mirrorservice.org/sites/ftp.tcl.tk/pub/tcl/%SUBDIR%/ \
ftp://ftp.funet.fi/pub/languages/tcl/tcl/%SUBDIR%/
.endif
@@ -1046,7 +1050,6 @@ MASTER_SITE_KERNEL_ORG+= \
https://mirrors.mit.edu/kernel/%SUBDIR%/ \
http://ftp.nara.wide.ad.jp/pub/kernel.org/%SUBDIR%/ \
http://ftp.yandex.ru/pub/%SUBDIR%/ \
- http://ftp.heanet.ie/pub/kernel.org/pub/%SUBDIR%/ \
ftp://ftp.ntu.edu.tw/%SUBDIR%/ \
ftp://ftp.riken.jp/Linux/kernel.org/%SUBDIR%/
.endif
@@ -1081,7 +1084,7 @@ MASTER_SITES_SUBDIRS= APACHE_COMMONS_BINARIES:${PORTNAME:S,commons-,,} \
GIMP:${PORTNAME}/${PORTVERSION:R}/ \
GITHUB:${GH_ACCOUNT}/${GH_PROJECT}/tar.gz/${GH_TAGNAME}?dummy=/ \
GITHUB_CLOUD:${GH_ACCOUNT}/${GH_PROJECT}/ \
- GNOME:sources/${PORTNAME}/${PORTVERSION:C/^([0-9]+\.[0-9]+).*/\1/} \
+ GNOME:sources/${DISTNAME:S/-${DISTVERSIONFULL}$//} \
GNU:${PORTNAME} \
GNUPG:${PORTNAME} \
GNU_ALPHA:${PORTNAME} \
diff --git a/Mk/bsd.wx.mk b/Mk/bsd.wx.mk
index a036ce1284c0..bbf84d1b1283 100644
--- a/Mk/bsd.wx.mk
+++ b/Mk/bsd.wx.mk
@@ -1,6 +1,5 @@
# bsd.wx.mk - Support for wxWidgets based ports.
#
-#
# The following variables can be defined in a port that uses the wxWidgets
# library, contributed libraries, WxPython and/or more wxWidgets related
# components (with run and/or build dependencies). It can be used after and/or
@@ -56,7 +55,7 @@
# contain multiple versions in order of preference (last ones
# are tried first).
# WANT_WXGTK_VER - Set to the preferred GTK version, "2" or "3", "3" being
-# the default (only applicable to wxWidgets 3.0 for now).
+# the default.
#
# The following variables are intended for the user and can be defined in
# make.conf.
@@ -132,7 +131,7 @@ _WX_PORT_python_3.2= x11-toolkits/py-wxPython4@${PY_FLAVOR}
_WX_FILE_python_3.2= ${PYTHON_SITELIBDIR}/wx/__init__.py
# wxgtk 3.2
-_WX_PORT_wx_3.2= x11-toolkits/wxgtk32
+_WX_PORT_wx_3.2= x11-toolkits/wxgtk32@${_GTKFLAVOR}
_WX_LIB_wx_3.2= wx_baseu-3.2
# Set _WX_SHVER_comp_ver to 0 and _WX_FILE_comp_ver for libs appropriately.
@@ -398,12 +397,8 @@ _WX_VER= ${ver}
# Set variables.
#
-. if ${_WX_VER} == 3.2
-_GTKVER= 3
-. elif ${_WX_VER} == 3.0
_GTKVER= ${WANT_WXGTK_VER:U3}
_GTKFLAVOR= gtk${_GTKVER}
-. endif
WX_CONFIG?= ${LOCALBASE}/bin/wxgtk${_GTKVER}${_WX_UC}-${_WX_VER}-config
WXRC_CMD?= ${LOCALBASE}/bin/wxrc-gtk${_GTKVER}${_WX_UC}-${_WX_VER}