NLopt is a free/open-source library for nonlinear optimization,
providing a common interface for a number of different free optimization
outines available online as well as original implementations of various
other algorithms. Its features include:
- Callable from C, C++, Fortran, Matlab or GNU Octave, Python,
GNU Guile, Julia, GNU R, Lua, and OCaml.
- A common interface for many different algorithms -- try a different
algorithm just by changing one parameter.
- Support for large-scale optimization (some algorithms scalable to
millions of parameters and thousands of constraints).
- Both global and local optimization algorithms.
- Algorithms using function values only (derivative-free) and also
algorithms exploiting user-supplied gradients.
- Algorithms for unconstrained optimization, bound-constrained
optimization, and general nonlinear inequality/equality constraints.
- Free/open-source software under the GNU LGPL
(and looser licenses for some portions of NLopt).
Templates/config.(guess|sub): Update to 2026-05-17
Also remove our local changes that replaced x86_64 with amd64 because
these complicate porting by forcing port maintainers to replace x86_64
with amd64 in configure scripts.
Additional changes:
bsd.port.mk: Apply S/amd64/x86_64/ to CONFIGURE_TARGET. This is not
required to run configure but some ports need to use this in pkg-plist.
comms/qico, news/fidogate:
CONFIGURE_TARGET shouldn't contain "--build". Just remove it altogether
because the default value is fine.
(Only the first 15 lines of the commit message are shown above )
math/nlopt: Fix build with Octave installed
cmake requires at least C++17 to build correctly if math/octave is
already installed.
math/octave is now a fixed dependency for nlopt, as this is the
only way to guarantee that Octave packages such as
math/octave-forge-mboct-fem-pkg will find a sufficiently
complete nlopt.
PR: 289110
Reported by: stephen@
MFH: 2025Q3
math/nlopt: Update from 2.9.1 to 2.10.0
- New Java bindings
- Allow disabling exceptions with set_exceptions_enabled
- Configurable tolg tolerance parameter for Luksan gradient
stopping condition
- Restored LD_LBFGS_NOCEDAL enum value (dropped in 2.9) to ease
backwards compatibility for wrappers in other languages
(though this algorithm is currently unimplemented)
Changelog: https://github.com/stevengj/nlopt/blob/master/NEWS.md#nlopt-210
PR: 284934
Reported by: portscout, Repology
math/nlopt: Update to 2.9.0
- New NLOPT_LUKSAN cmake option to build without Luksan LGPL code
- Dropped unused LD_LBFGS_NOCEDAL enum value
- Python 3.13 support
- Fixed COBYLA not returning the optimum
- Fixed SLSQP returning infeasible optimum
- Fixed STOGO not registering new optimum
- Various minor bugfixes
Changelog: https://github.com/stevengj/nlopt/compare/v2.8.0...v2.9.0
Reported by: portscout, Repology
math/nlopt: Update to 2.8.0
- Switch from guile2 to guile3
- Pet portclippy
Since guile-config-3.0 crashes, nlopt avoids its use with some patches.
Changelog: https://github.com/stevengj/nlopt/releases/tag/v2.8.0
Reported by: portscout, Repology
Remove WWW entries moved into port Makefiles
Commit b7f05445c00f has added WWW entries to port Makefiles based on
WWW: lines in pkg-descr files.
This commit removes the WWW: lines of moved-over URLs from these
pkg-descr files.
Approved by: portmgr (tcberner)
Add WWW entries to port Makefiles
It has been common practice to have one or more URLs at the end of the
ports' pkg-descr files, one per line and prefixed with "WWW:". These
URLs should point at a project website or other relevant resources.
Access to these URLs required processing of the pkg-descr files, and
they have often become stale over time. If more than one such URL was
present in a pkg-descr file, only the first one was tarnsfered into
the port INDEX, but for many ports only the last line did contain the
port specific URL to further information.
There have been several proposals to make a project URL available as
a macro in the ports' Makefiles, over time.
(Only the first 15 lines of the commit message are shown above )
math/nlopt: Use localbase to find gmp.h
CFLAGS is obsolete here, if localbase defined.
Reported by: Fernando Apesteguia <fernando.apesteguia@gmail.com>
Change the maintainer entry in rhurlin's ports
After I got a commit bit for ports, it is time now to change the maintainers
entry in all 'owned' ports.
Approved by: tcberner (mentor)
Differential Revision: https://reviews.freebsd.org/D26398
Bump PORTREVISION for ports depending on the canonical version of GCC
as defined in Mk/bsd.default-versions.mk which has moved from GCC 8.3
to GCC 9.1 under most circumstances now after revision 507371.
This includes ports
- with USE_GCC=yes or USE_GCC=any,
- with USES=fortran,
- using Mk/bsd.octave.mk which in turn features USES=fortran, and
- with USES=compiler specifying openmp, nestedfct, c11, c++0x, c++11-lang,
c++11-lib, c++14-lang, c++17-lang, or gcc-c++11-lib
plus, everything INDEX-11 shows with a dependency on lang/gcc9 now.
PR: 238330
Update Guile to version 2.2.5, modern stable version, and fix dependent
ports to build against it. Most changes are rather minor and mechanical
except for the devel/gdb (obtained via their bugtracker [1], courtesy of
Doug Evans). One port (science/meep) I had to mark BROKEN after fixing
it proved to be very tedious and actually unreliable. It is very old,
there are newer versions available so it should be fixed by updating.
One port (devel/libruin) had revealed a bug in the new Guile code (an
auxiliary script, really) that had to be worked-round; reference to the
problematic upstream commit is provided in the patch.
PR: 229613
Exp-run by: antoine
[1] https://sourceware.org/bugzilla/show_bug.cgi?id=21104#c8
Bump PORTREVISION for ports depending on the canonical version of GCC
defined via Mk/bsd.default-versions.mk which has moved from GCC 7.4 t
GCC 8.2 under most circumstances.
This includes ports
- with USE_GCC=yes or USE_GCC=any,
- with USES=fortran,
- using Mk/bsd.octave.mk which in turn features USES=fortran, and
- with USES=compiler specifying openmp, nestedfct, c11, c++0x, c++11-lang,
c++11-lib, c++14-lang, c++17-lang, or gcc-c++11-lib
plus, as a double check, everything INDEX-11 showed depending on lang/gcc7.
PR: 231590
Update to upstream version 2.5.0
Detailed maintainer log:
- Update from 2.4.2 to 2.5.0
- Change sources from MASTER_SITES to GitHub
- Update version of Python dependency
- Remove CONFIGURE
- Add CFLAGS to find gmp.h
- Remov INSTALL_TARGET
- Update WWW in pkg-descr
- Update pkg-plist
The new version brings some enhancements and changes:
- New AGS global solver (#194), thanks to Vladislav Sovrasov
- New nlopt_get_numevals function providing a built-in evaluation
counter (#160)
- New nlopt_get_errmsg function for more descriptive error messages
- Build system is converted from autotools to cmake (#49), thanks
to Julien Schueller
- Plugins updated for recent Octave and Guile versions
- Various other build fixes and minor bug fixes
PR: 233497
Submitted by: rhurlin@gwdg.de (maintainer)
Convert Python ports to FLAVORS.
Ports using USE_PYTHON=distutils are now flavored. They will
automatically get flavors (py27, py34, py35, py36) depending on what
versions they support.
There is also a USE_PYTHON=flavors for ports that do not use distutils
but need FLAVORS to be set. A USE_PYTHON=noflavors can be set if
using distutils but flavors are not wanted.
A new USE_PYTHON=optsuffix that will add PYTHON_PKGNAMESUFFIX has been
added to cope with Python ports that did not have the Python
PKGNAMEPREFIX but are flavored.
USES=python now also exports a PY_FLAVOR variable that contains the
(Only the first 15 lines of the commit message are shown above )
Use USES=pathfix where applicable.
PR: 213195
Submitted by: mat
Exp-run by: antoine
Sponsored by: Absolight
Differential Revision: https://reviews.freebsd.org/D8093