Skip to content

Commit

Permalink
Merge pull request #4362 from luluz66/go-bazel
Browse files Browse the repository at this point in the history
Make ortools/sat/go work with bazel
  • Loading branch information
lperron authored Sep 2, 2024
2 parents 08363da + aac0b74 commit eadb910
Show file tree
Hide file tree
Showing 15 changed files with 983 additions and 696 deletions.
16 changes: 16 additions & 0 deletions BUILD.bazel
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
load("@bazel_gazelle//:def.bzl", "gazelle")

# gazelle:build_file_name BUILD,BUILD.bazel
# gazelle:prefix github.com/google/or-tools
# gazelle:proto disable
gazelle(name = "gazelle")

gazelle(
name = "gazelle-update-repos",
args = [
"-from_file=go.mod",
"-to_macro=deps.bzl%go_dependencies",
"-prune",
],
command = "update-repos",
)
60 changes: 59 additions & 1 deletion WORKSPACE
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,16 @@ git_repository(
load("@bazel_skylib//:workspace.bzl", "bazel_skylib_workspace")
bazel_skylib_workspace()

http_archive(
name = "bazel_features",
sha256 = "cec7fbc7bce6597cf2e83e01ddd9328a1bb057dc1a3092745238f49d3301ab5a",
strip_prefix = "bazel_features-1.12.0",
url = "https://github.com/bazel-contrib/bazel_features/releases/download/v1.12.0/bazel_features-v1.12.0.tar.gz",
)

load("@bazel_features//:deps.bzl", "bazel_features_deps")
bazel_features_deps()

## Bazel rules.
git_repository(
name = "platforms",
Expand All @@ -41,7 +51,7 @@ git_repository(

git_repository(
name = "rules_proto",
tag = "5.3.0-21.7",
tag = "6.0.0",
remote = "https://github.com/bazelbuild/rules_proto.git",
)

Expand Down Expand Up @@ -110,6 +120,12 @@ git_repository(
load("@com_google_protobuf//:protobuf_deps.bzl", "protobuf_deps")
protobuf_deps()

load("@rules_proto//proto:repositories.bzl", "rules_proto_dependencies")
rules_proto_dependencies()

load("@rules_proto//proto:toolchains.bzl", "rules_proto_toolchains")
rules_proto_toolchains()

## Solvers
http_archive(
name = "glpk",
Expand Down Expand Up @@ -318,3 +334,45 @@ git_repository(
tag = "v1.8.5",
remote = "https://github.com/google/benchmark.git",
)

# Go

http_archive(
name = "io_bazel_rules_go",
sha256 = "33acc4ae0f70502db4b893c9fc1dd7a9bf998c23e7ff2c4517741d4049a976f8",
urls = [
"https://mirror.bazel.build/github.com/bazelbuild/rules_go/releases/download/v0.48.0/rules_go-v0.48.0.zip",
"https://github.com/bazelbuild/rules_go/releases/download/v0.48.0/rules_go-v0.48.0.zip",
],
)

http_archive(
name = "bazel_gazelle",
sha256 = "d76bf7a60fd8b050444090dfa2837a4eaf9829e1165618ee35dceca5cbdf58d5",
urls = [
"https://mirror.bazel.build/github.com/bazelbuild/bazel-gazelle/releases/download/v0.37.0/bazel-gazelle-v0.37.0.tar.gz",
"https://github.com/bazelbuild/bazel-gazelle/releases/download/v0.37.0/bazel-gazelle-v0.37.0.tar.gz",
],
)

load("@bazel_gazelle//:deps.bzl", "gazelle_dependencies")
load("//:deps.bzl", "go_dependencies")
# gazelle:repository_macro deps.bzl%go_dependencies
go_dependencies()

load("@io_bazel_rules_go//go:deps.bzl", "go_download_sdk", "go_register_toolchains", "go_rules_dependencies")

go_rules_dependencies()

go_download_sdk(
name = "go_sdk_linux",
version = "1.22.4",
)

go_register_toolchains()

gazelle_dependencies(
go_env = {
"GOPROXY": "https://proxy.golang.org|direct",
},
)
36 changes: 36 additions & 0 deletions deps.bzl
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
load("@bazel_gazelle//:deps.bzl", "go_repository")

def go_dependencies():
go_repository(
name = "com_github_golang_glog",
importpath = "github.com/golang/glog",
sum = "h1:1+mZ9upx1Dh6FmUTFR1naJ77miKiXgALjWOZ3NVFPmY=",
version = "v1.2.2",
)
go_repository(
name = "com_github_golang_protobuf",
importpath = "github.com/golang/protobuf",
sum = "h1:LUVKkCeviFUMKqHa4tXIIij/lbhnMbP7Fn5wKdKkRh4=",
version = "v1.5.0",
)
go_repository(
name = "com_github_google_go_cmp",
importpath = "github.com/google/go-cmp",
sum = "h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI=",
version = "v0.6.0",
)
go_repository(
name = "org_golang_google_protobuf",
build_directives = [
"gazelle:proto disable", # https://github.com/bazelbuild/rules_go/issues/3906
],
importpath = "google.golang.org/protobuf",
sum = "h1:6xV6lTsCfpGD21XK49h7MhtcApnLqkfYgPcdHftf6hg=",
version = "v1.34.2",
)
go_repository(
name = "org_golang_x_xerrors",
importpath = "golang.org/x/xerrors",
sum = "h1:E7g+9GITq07hpfrRu66IVDexMakfv52eLZ2CXBWiKr4=",
version = "v0.0.0-20191204190536-9bdfabe68543",
)
8 changes: 8 additions & 0 deletions go.mod
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
module github.com/google/or-tools

go 1.22.2

require (
github.com/golang/glog v1.2.2
google.golang.org/protobuf v1.34.2
)
6 changes: 6 additions & 0 deletions go.sum
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
github.com/golang/glog v1.2.2 h1:1+mZ9upx1Dh6FmUTFR1naJ77miKiXgALjWOZ3NVFPmY=
github.com/golang/glog v1.2.2/go.mod h1:6AhwSGph0fcJtXVM/PEHPqZlFeoLxhs7/t5UDAwmO+w=
github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI=
github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
google.golang.org/protobuf v1.34.2 h1:6xV6lTsCfpGD21XK49h7MhtcApnLqkfYgPcdHftf6hg=
google.golang.org/protobuf v1.34.2/go.mod h1:qYOHts0dSfpeUzUFpOMr/WGzszTmLH+DiWniOlNbLDw=
13 changes: 13 additions & 0 deletions ortools/sat/BUILD.bazel
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
# Home of CP/SAT solver (which includes SAT, max-SAT and PB problems).

load("@rules_cc//cc:defs.bzl", "cc_library", "cc_proto_library")
load("@io_bazel_rules_go//proto:def.bzl", "go_proto_library")
load("@rules_java//java:defs.bzl", "java_proto_library")
load("@rules_proto//proto:defs.bzl", "proto_library")
load("@rules_python//python:proto.bzl", "py_proto_library")
Expand Down Expand Up @@ -61,6 +62,12 @@ cc_proto_library(
deps = [":sat_parameters_proto"],
)

go_proto_library(
name = "sat_parameters_go_proto",
proto = ":sat_parameters_proto",
importpath = "github.com/google/or-tools/ortools/sat/proto/satparameters"
)

py_proto_library(
name = "sat_parameters_py_pb2",
deps = [":sat_parameters_proto"],
Expand All @@ -81,6 +88,12 @@ cc_proto_library(
deps = [":cp_model_proto"],
)

go_proto_library(
name = "cp_model_go_proto",
importpath = "github.com/google/or-tools/ortools/sat/proto/cpmodel",
proto = ":cp_model_proto",
)

py_proto_library(
name = "cp_model_py_pb2",
deps = [":cp_model_proto"],
Expand Down
55 changes: 55 additions & 0 deletions ortools/sat/go/cpmodel/BUILD.bazel
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test")

go_library(
name = "cpmodel",
srcs = [
"cp_model.go",
"cp_solver.go",
"cp_solver_c.cc",
"cp_solver_c.h",
"domain.go",
],
cdeps = [":cp_solver_c"],
cgo = True,
importpath = "github.com/google/or-tools/ortools/sat/go/cpmodel",
visibility = ["//visibility:public"],
deps = [
"//ortools/sat:cp_model_go_proto",
"//ortools/sat:sat_parameters_go_proto",
"@com_github_golang_glog//:glog",
"@org_golang_google_protobuf//proto",
],
)

go_test(
name = "cpmodel_test",
srcs = [
"cp_model_test.go",
"cp_solver_test.go",
"domain_test.go",
],
embed = [":cpmodel"],
deps = [
"//ortools/sat:cp_model_go_proto",
"//ortools/sat:sat_parameters_go_proto",
"@com_github_golang_glog//:glog",
"@com_github_google_go_cmp//cmp",
"@org_golang_google_protobuf//proto",
"@org_golang_google_protobuf//testing/protocmp",
],
)

cc_library(
name = "cp_solver_c",
srcs = ["cp_solver_c.cc"],
hdrs = ["cp_solver_c.h"],
deps = [
"//ortools/sat:cp_model_cc_proto",
"//ortools/sat:cp_model_solver",
"//ortools/sat:sat_parameters_cc_proto",
"//ortools/util:time_limit",
"@com_google_absl//absl/log",
"@com_google_absl//absl/status",
"@com_google_absl//absl/strings",
],
)
Loading

0 comments on commit eadb910

Please sign in to comment.