New port: math/or-tools: Google's Operations Research tools

This commit is contained in:
Yuri Victorovich 2020-07-21 01:23:18 +00:00
parent dff3830b3e
commit 4933b01999
Notes: svn2git 2021-03-31 03:12:20 +00:00
svn path=/head/; revision=542684
9 changed files with 416 additions and 0 deletions

View file

@ -526,6 +526,7 @@
SUBDIR += opensolaris-libm
SUBDIR += openturns
SUBDIR += optpp
SUBDIR += or-tools
SUBDIR += orpie
SUBDIR += osi
SUBDIR += osqp

37
math/or-tools/Makefile Normal file
View file

@ -0,0 +1,37 @@
# $FreeBSD$
PORTNAME= or-tools
DISTVERSIONPREFIX= v
DISTVERSION= 7.7
CATEGORIES= math
MAINTAINER= yuri@FreeBSD.org
COMMENT= Google's Operations Research tools
LICENSE= APACHE20
LICENSE_FILE= ${WRKSRC}/LICENSE-2.0.txt
LIB_DEPENDS= libabsl_base.so:devel/abseil \
libCbc.so:math/cbc \
libCgl.so:math/cgl \
libOsiClp.so:math/clp \
libgflags.so:devel/gflags \
libglog.so:devel/glog \
libprotobuf.so:devel/protobuf
USES= blaslapack cmake compiler:c++11-lang pkgconfig
USE_GITHUB= yes
GH_ACCOUNT= google
USE_LDCONFIG= yes
CMAKE_OFF= BUILD_DEPS INSTALL_BUILD_DEPS BUILD_PYTHON BUILD_EXAMPLES
CONFIGURE_ENV= UNIX_CBC_DIR=${LOCALBASE} UNIX_CLP_DIR=${LOCALBASE}
BUILD_ENV= UNIX_CBC_DIR=${LOCALBASE} UNIX_CLP_DIR=${LOCALBASE}
post-configure: # https://github.com/google/or-tools/issues/2109
@${REINPLACE_CMD} -e 's|protobuf::protoc|protoc -I${LOCALBASE}/include| ; s|protobuf$$:$$:protoc||' ${BUILD_WRKSRC}/build.ninja
post-install:
@${FIND} ${STAGEDIR}${PREFIX} -type d -empty -delete
.include <bsd.port.mk>

3
math/or-tools/distinfo Normal file
View file

@ -0,0 +1,3 @@
TIMESTAMP = 1595281509
SHA256 (google-or-tools-v7.7_GH0.tar.gz) = d20eb031ea3f1b75e55e44ae6acdb674ee6fb31e7a56498be32dc83ba9bc13bd
SIZE (google-or-tools-v7.7_GH0.tar.gz) = 184809285

View file

@ -0,0 +1,15 @@
--- makefiles/Makefile.dotnet.mk.orig 2020-06-12 13:05:43 UTC
+++ makefiles/Makefile.dotnet.mk
@@ -62,7 +62,11 @@ else
ifeq ($(OS),Darwin)
RUNTIME_IDENTIFIER=osx-x64
else
- $(error OS unknown !)
+ ifeq ($(OS),FreeBSD)
+ RUNTIME_IDENTIFIER=freebsd-amd64
+ else
+ $(error OS unknown !)
+ endif
endif
endif
endif

View file

@ -0,0 +1,21 @@
--- makefiles/Makefile.third_party.unix.mk.orig 2020-06-12 13:05:43 UTC
+++ makefiles/Makefile.third_party.unix.mk
@@ -73,7 +73,8 @@ ifeq ($(wildcard $(UNIX_OSI_DIR)/include/osi/coin/OsiS
else
$(info OSI: found)
endif
-ifeq ($(wildcard $(UNIX_CLP_DIR)/include/clp/coin/ClpModel.hpp $(UNIX_CLP_DIR)/include/coin/ClpSimplex.hpp),)
+ifeq ($(wildcard $(UNIX_CLP_DIR)/include/coin/ClpModel.hpp $(UNIX_CLP_DIR)/include/coin/ClpSimplex.hpp),)
+ $(info CLP: NOT found: UNIX_CLP_DIR=$(UNIX_CLP_DIR))
$(error Third party Clp files was not found! did you run 'make third_party' or set UNIX_CLP_DIR ?)
else
$(info CLP: found)
@@ -83,7 +84,7 @@ ifeq ($(wildcard $(UNIX_CGL_DIR)/include/cgl/coin/CglP
else
$(info CGL: found)
endif
-ifeq ($(wildcard $(UNIX_CBC_DIR)/include/cbc/coin/CbcModel.hpp $(UNIX_CBC_DIR)/include/coin/CbcModel.hpp),)
+ifeq ($(wildcard $(UNIX_CBC_DIR)/include/coin/CbcModel.hpp $(UNIX_CBC_DIR)/include/coin/CbcModel.hpp),)
$(error Third party Cbc files was not found! did you run 'make third_party' or set UNIX_CBC_DIR ?)
else
$(info CBC: found)

View file

@ -0,0 +1,11 @@
--- ortools/util/fp_utils.h.orig 2020-07-20 23:21:30 UTC
+++ ortools/util/fp_utils.h
@@ -83,6 +83,8 @@ class ScopedFloatingPointEnv {
excepts &= FE_ALL_EXCEPT;
#ifdef __APPLE__
fenv_.__control &= ~excepts;
+#elif defined(__FreeBSD__)
+ //fesetexceptflag(&fenv_, excepts);
#else // Linux
fenv_.__control_word &= ~excepts;
#endif

View file

@ -0,0 +1,14 @@
--- ortools/util/zvector.h.orig 2020-07-20 23:36:37 UTC
+++ ortools/util/zvector.h
@@ -17,7 +17,11 @@
#if defined(__APPLE__) && defined(__GNUC__)
#include <machine/endian.h>
#elif !defined(_MSC_VER)
+#if defined(__FreeBSD__)
+#include <sys/endian.h>
+#else
#include <endian.h>
+#endif
#endif
#include <climits>
#include <cstdio>

14
math/or-tools/pkg-descr Normal file
View file

@ -0,0 +1,14 @@
Google Optimization Tools (a.k.a., OR-Tools) is an open-source, fast and
portable software suite for solving combinatorial optimization problems.
The suite contains:
* A constraint programming solver
* A linear programming solver
* Wrappers around commercial and other open source solvers, including mixed
integer solvers
* Bin packing and knapsack algorithms
* Algorithms for the Traveling Salesman Problem and Vehicle Routing Problem
* Graph algorithms (shortest paths, min cost flow, max flow, linear sum
assignment)
WWW: https://github.com/google/or-tools

300
math/or-tools/pkg-plist Normal file
View file

@ -0,0 +1,300 @@
bin/costas_array_sat
bin/cvrp_disjoint_tw
bin/cvrptw
bin/cvrptw_with_breaks
bin/cvrptw_with_refueling
bin/cvrptw_with_resources
bin/cvrptw_with_stop_times_and_resources
bin/dimacs_assignment
bin/dobble_ls
bin/flow_api
bin/frequency_assignment_problem
bin/golomb_sat
bin/integer_programming
bin/jobshop_sat
bin/knapsack
bin/linear_assignment_api
bin/linear_programming
bin/linear_solver_protocol_buffers
bin/magic_square_sat
bin/max_flow
bin/min_cost_flow
bin/mps_driver
bin/network_routing_sat
bin/nqueens
bin/pdptw
bin/random_tsp
bin/shift_minimization_sat
bin/solve
bin/sports_scheduling_sat
bin/strawberry_fields_with_column_generation
bin/weighted_tardiness_sat
include/ortools/algorithms/dense_doubly_linked_list.h
include/ortools/algorithms/dynamic_partition.h
include/ortools/algorithms/dynamic_permutation.h
include/ortools/algorithms/find_graph_symmetries.h
include/ortools/algorithms/hungarian.h
include/ortools/algorithms/knapsack_solver.h
include/ortools/algorithms/knapsack_solver_for_cuts.h
include/ortools/algorithms/sparse_permutation.h
include/ortools/base/accurate_sum.h
include/ortools/base/adjustable_priority_queue-inl.h
include/ortools/base/adjustable_priority_queue.h
include/ortools/base/base_export.h
include/ortools/base/basictypes.h
include/ortools/base/bitmap.h
include/ortools/base/cleanup.h
include/ortools/base/commandlineflags.h
include/ortools/base/encodingutils.h
include/ortools/base/file.h
include/ortools/base/filelineiter.h
include/ortools/base/hash.h
include/ortools/base/int_type.h
include/ortools/base/int_type_indexed_vector.h
include/ortools/base/integral_types.h
include/ortools/base/iterator_adaptors.h
include/ortools/base/jniutil.h
include/ortools/base/logging.h
include/ortools/base/macros.h
include/ortools/base/map_util.h
include/ortools/base/mathutil.h
include/ortools/base/murmur.h
include/ortools/base/protobuf_util.h
include/ortools/base/protoutil.h
include/ortools/base/ptr_util.h
include/ortools/base/python-swig.h
include/ortools/base/random.h
include/ortools/base/recordio.h
include/ortools/base/small_map.h
include/ortools/base/small_ordered_set.h
include/ortools/base/status_macros.h
include/ortools/base/statusor.h
include/ortools/base/stl_util.h
include/ortools/base/sysinfo.h
include/ortools/base/thorough_hash.h
include/ortools/base/threadpool.h
include/ortools/base/timer.h
include/ortools/base/typeid.h
include/ortools/base/version.h
include/ortools/bop/bop_base.h
include/ortools/bop/bop_fs.h
include/ortools/bop/bop_lns.h
include/ortools/bop/bop_ls.h
include/ortools/bop/bop_parameters.pb.h
include/ortools/bop/bop_portfolio.h
include/ortools/bop/bop_solution.h
include/ortools/bop/bop_solver.h
include/ortools/bop/bop_types.h
include/ortools/bop/bop_util.h
include/ortools/bop/complete_optimizer.h
include/ortools/bop/integral_solver.h
include/ortools/constraint_solver/assignment.pb.h
include/ortools/constraint_solver/constraint_solver.h
include/ortools/constraint_solver/constraint_solveri.h
include/ortools/constraint_solver/demon_profiler.pb.h
include/ortools/constraint_solver/java/javawrapcp_util.h
include/ortools/constraint_solver/python/pywrapcp_util.h
include/ortools/constraint_solver/routing.h
include/ortools/constraint_solver/routing_enums.pb.h
include/ortools/constraint_solver/routing_flags.h
include/ortools/constraint_solver/routing_index_manager.h
include/ortools/constraint_solver/routing_lp_scheduling.h
include/ortools/constraint_solver/routing_neighborhoods.h
include/ortools/constraint_solver/routing_parameters.h
include/ortools/constraint_solver/routing_parameters.pb.h
include/ortools/constraint_solver/routing_types.h
include/ortools/constraint_solver/search_limit.pb.h
include/ortools/constraint_solver/solver_parameters.pb.h
include/ortools/data/jobshop_scheduling.pb.h
include/ortools/data/jobshop_scheduling_parser.h
include/ortools/data/rcpsp.pb.h
include/ortools/data/rcpsp_parser.h
include/ortools/data/set_covering_data.h
include/ortools/data/set_covering_parser.h
include/ortools/flatzinc/checker.h
include/ortools/flatzinc/cp_model_fz_solver.h
include/ortools/flatzinc/logging.h
include/ortools/flatzinc/model.h
include/ortools/flatzinc/parser.h
include/ortools/flatzinc/parser_util.h
include/ortools/flatzinc/presolve.h
include/ortools/glop/basis_representation.h
include/ortools/glop/dual_edge_norms.h
include/ortools/glop/entering_variable.h
include/ortools/glop/initial_basis.h
include/ortools/glop/lp_solver.h
include/ortools/glop/lu_factorization.h
include/ortools/glop/markowitz.h
include/ortools/glop/parameters.pb.h
include/ortools/glop/preprocessor.h
include/ortools/glop/primal_edge_norms.h
include/ortools/glop/rank_one_update.h
include/ortools/glop/reduced_costs.h
include/ortools/glop/revised_simplex.h
include/ortools/glop/status.h
include/ortools/glop/update_row.h
include/ortools/glop/variable_values.h
include/ortools/glop/variables_info.h
include/ortools/graph/assignment.h
include/ortools/graph/christofides.h
include/ortools/graph/cliques.h
include/ortools/graph/connected_components.h
include/ortools/graph/connectivity.h
include/ortools/graph/ebert_graph.h
include/ortools/graph/eulerian_path.h
include/ortools/graph/flow_problem.pb.h
include/ortools/graph/graph.h
include/ortools/graph/graphs.h
include/ortools/graph/hamiltonian_path.h
include/ortools/graph/io.h
include/ortools/graph/iterators.h
include/ortools/graph/linear_assignment.h
include/ortools/graph/max_flow.h
include/ortools/graph/min_cost_flow.h
include/ortools/graph/minimum_spanning_tree.h
include/ortools/graph/one_tree_lower_bound.h
include/ortools/graph/perfect_matching.h
include/ortools/graph/shortestpaths.h
include/ortools/graph/strongly_connected_components.h
include/ortools/graph/util.h
include/ortools/linear_solver/glop_utils.h
include/ortools/linear_solver/gurobi_environment.h
include/ortools/linear_solver/gurobi_proto_solver.h
include/ortools/linear_solver/linear_expr.h
include/ortools/linear_solver/linear_solver.h
include/ortools/linear_solver/linear_solver.pb.h
include/ortools/linear_solver/linear_solver_callback.h
include/ortools/linear_solver/model_exporter.h
include/ortools/linear_solver/model_exporter_swig_helper.h
include/ortools/linear_solver/model_validator.h
include/ortools/linear_solver/sat_proto_solver.h
include/ortools/linear_solver/sat_solver_utils.h
include/ortools/linear_solver/scip_helper_macros.h
include/ortools/linear_solver/scip_proto_solver.h
include/ortools/lp_data/lp_data.h
include/ortools/lp_data/lp_data_utils.h
include/ortools/lp_data/lp_decomposer.h
include/ortools/lp_data/lp_print_utils.h
include/ortools/lp_data/lp_types.h
include/ortools/lp_data/lp_utils.h
include/ortools/lp_data/matrix_scaler.h
include/ortools/lp_data/matrix_utils.h
include/ortools/lp_data/model_reader.h
include/ortools/lp_data/mps_reader.h
include/ortools/lp_data/permutation.h
include/ortools/lp_data/proto_utils.h
include/ortools/lp_data/scattered_vector.h
include/ortools/lp_data/sparse.h
include/ortools/lp_data/sparse_column.h
include/ortools/lp_data/sparse_row.h
include/ortools/lp_data/sparse_vector.h
include/ortools/port/file.h
include/ortools/port/proto_utils.h
include/ortools/port/sysinfo.h
include/ortools/port/utf8.h
include/ortools/sat/all_different.h
include/ortools/sat/boolean_problem.h
include/ortools/sat/boolean_problem.pb.h
include/ortools/sat/circuit.h
include/ortools/sat/clause.h
include/ortools/sat/cp_constraints.h
include/ortools/sat/cp_model.h
include/ortools/sat/cp_model.pb.h
include/ortools/sat/cp_model_checker.h
include/ortools/sat/cp_model_expand.h
include/ortools/sat/cp_model_lns.h
include/ortools/sat/cp_model_loader.h
include/ortools/sat/cp_model_objective.h
include/ortools/sat/cp_model_postsolve.h
include/ortools/sat/cp_model_presolve.h
include/ortools/sat/cp_model_search.h
include/ortools/sat/cp_model_solver.h
include/ortools/sat/cp_model_symmetries.h
include/ortools/sat/cp_model_utils.h
include/ortools/sat/cumulative.h
include/ortools/sat/cumulative_energy.h
include/ortools/sat/cuts.h
include/ortools/sat/diffn.h
include/ortools/sat/disjunctive.h
include/ortools/sat/drat_checker.h
include/ortools/sat/drat_proof_handler.h
include/ortools/sat/drat_writer.h
include/ortools/sat/encoding.h
include/ortools/sat/feasibility_pump.h
include/ortools/sat/implied_bounds.h
include/ortools/sat/integer.h
include/ortools/sat/integer_expr.h
include/ortools/sat/integer_search.h
include/ortools/sat/intervals.h
include/ortools/sat/linear_constraint.h
include/ortools/sat/linear_constraint_manager.h
include/ortools/sat/linear_programming_constraint.h
include/ortools/sat/linear_relaxation.h
include/ortools/sat/lp_utils.h
include/ortools/sat/model.h
include/ortools/sat/optimization.h
include/ortools/sat/pb_constraint.h
include/ortools/sat/precedences.h
include/ortools/sat/presolve_context.h
include/ortools/sat/presolve_util.h
include/ortools/sat/probing.h
include/ortools/sat/pseudo_costs.h
include/ortools/sat/restart.h
include/ortools/sat/rins.h
include/ortools/sat/sat_base.h
include/ortools/sat/sat_decision.h
include/ortools/sat/sat_inprocessing.h
include/ortools/sat/sat_parameters.pb.h
include/ortools/sat/sat_solver.h
include/ortools/sat/simplification.h
include/ortools/sat/subsolver.h
include/ortools/sat/swig_helper.h
include/ortools/sat/symmetry.h
include/ortools/sat/synchronization.h
include/ortools/sat/table.h
include/ortools/sat/theta_tree.h
include/ortools/sat/timetable.h
include/ortools/sat/timetable_edgefinding.h
include/ortools/sat/util.h
include/ortools/util/adaptative_parameter_value.h
include/ortools/util/affine_relation.h
include/ortools/util/bitset.h
include/ortools/util/cached_log.h
include/ortools/util/file_util.h
include/ortools/util/fp_utils.h
include/ortools/util/functions_swig_helpers.h
include/ortools/util/functions_swig_test_helpers.h
include/ortools/util/graph_export.h
include/ortools/util/integer_pq.h
include/ortools/util/lazy_mutable_copy.h
include/ortools/util/monoid_operation_tree.h
include/ortools/util/optional_boolean.pb.h
include/ortools/util/permutation.h
include/ortools/util/piecewise_linear_function.h
include/ortools/util/proto_tools.h
include/ortools/util/random_engine.h
include/ortools/util/range_minimum_query.h
include/ortools/util/range_query_function.h
include/ortools/util/rational_approximation.h
include/ortools/util/return_macros.h
include/ortools/util/rev.h
include/ortools/util/running_stat.h
include/ortools/util/saturated_arithmetic.h
include/ortools/util/sigint.h
include/ortools/util/sort.h
include/ortools/util/sorted_interval_list.h
include/ortools/util/stats.h
include/ortools/util/string_array.h
include/ortools/util/time_limit.h
include/ortools/util/tuple_set.h
include/ortools/util/vector_map.h
include/ortools/util/vector_or_function.h
include/ortools/util/zvector.h
include/ortools_export.h
lib/cmake/ortools/ortoolsConfig.cmake
lib/cmake/ortools/ortoolsConfigVersion.cmake
lib/cmake/ortools/ortoolsTargets-%%CMAKE_BUILD_TYPE%%.cmake
lib/cmake/ortools/ortoolsTargets.cmake
lib/libortools.so
lib/libortools.so.7
lib/libortools.so.7.7.9999