Skip to content

Commit eadb910

Browse files
authored
Merge pull request #4362 from luluz66/go-bazel
Make ortools/sat/go work with bazel
2 parents 08363da + aac0b74 commit eadb910

15 files changed

+983
-696
lines changed

BUILD.bazel

+16
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
load("@bazel_gazelle//:def.bzl", "gazelle")
2+
3+
# gazelle:build_file_name BUILD,BUILD.bazel
4+
# gazelle:prefix github.com/google/or-tools
5+
# gazelle:proto disable
6+
gazelle(name = "gazelle")
7+
8+
gazelle(
9+
name = "gazelle-update-repos",
10+
args = [
11+
"-from_file=go.mod",
12+
"-to_macro=deps.bzl%go_dependencies",
13+
"-prune",
14+
],
15+
command = "update-repos",
16+
)

WORKSPACE

+59-1
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,16 @@ git_repository(
2626
load("@bazel_skylib//:workspace.bzl", "bazel_skylib_workspace")
2727
bazel_skylib_workspace()
2828

29+
http_archive(
30+
name = "bazel_features",
31+
sha256 = "cec7fbc7bce6597cf2e83e01ddd9328a1bb057dc1a3092745238f49d3301ab5a",
32+
strip_prefix = "bazel_features-1.12.0",
33+
url = "https://github.com/bazel-contrib/bazel_features/releases/download/v1.12.0/bazel_features-v1.12.0.tar.gz",
34+
)
35+
36+
load("@bazel_features//:deps.bzl", "bazel_features_deps")
37+
bazel_features_deps()
38+
2939
## Bazel rules.
3040
git_repository(
3141
name = "platforms",
@@ -41,7 +51,7 @@ git_repository(
4151

4252
git_repository(
4353
name = "rules_proto",
44-
tag = "5.3.0-21.7",
54+
tag = "6.0.0",
4555
remote = "https://github.com/bazelbuild/rules_proto.git",
4656
)
4757

@@ -110,6 +120,12 @@ git_repository(
110120
load("@com_google_protobuf//:protobuf_deps.bzl", "protobuf_deps")
111121
protobuf_deps()
112122

123+
load("@rules_proto//proto:repositories.bzl", "rules_proto_dependencies")
124+
rules_proto_dependencies()
125+
126+
load("@rules_proto//proto:toolchains.bzl", "rules_proto_toolchains")
127+
rules_proto_toolchains()
128+
113129
## Solvers
114130
http_archive(
115131
name = "glpk",
@@ -318,3 +334,45 @@ git_repository(
318334
tag = "v1.8.5",
319335
remote = "https://github.com/google/benchmark.git",
320336
)
337+
338+
# Go
339+
340+
http_archive(
341+
name = "io_bazel_rules_go",
342+
sha256 = "33acc4ae0f70502db4b893c9fc1dd7a9bf998c23e7ff2c4517741d4049a976f8",
343+
urls = [
344+
"https://mirror.bazel.build/github.com/bazelbuild/rules_go/releases/download/v0.48.0/rules_go-v0.48.0.zip",
345+
"https://github.com/bazelbuild/rules_go/releases/download/v0.48.0/rules_go-v0.48.0.zip",
346+
],
347+
)
348+
349+
http_archive(
350+
name = "bazel_gazelle",
351+
sha256 = "d76bf7a60fd8b050444090dfa2837a4eaf9829e1165618ee35dceca5cbdf58d5",
352+
urls = [
353+
"https://mirror.bazel.build/github.com/bazelbuild/bazel-gazelle/releases/download/v0.37.0/bazel-gazelle-v0.37.0.tar.gz",
354+
"https://github.com/bazelbuild/bazel-gazelle/releases/download/v0.37.0/bazel-gazelle-v0.37.0.tar.gz",
355+
],
356+
)
357+
358+
load("@bazel_gazelle//:deps.bzl", "gazelle_dependencies")
359+
load("//:deps.bzl", "go_dependencies")
360+
# gazelle:repository_macro deps.bzl%go_dependencies
361+
go_dependencies()
362+
363+
load("@io_bazel_rules_go//go:deps.bzl", "go_download_sdk", "go_register_toolchains", "go_rules_dependencies")
364+
365+
go_rules_dependencies()
366+
367+
go_download_sdk(
368+
name = "go_sdk_linux",
369+
version = "1.22.4",
370+
)
371+
372+
go_register_toolchains()
373+
374+
gazelle_dependencies(
375+
go_env = {
376+
"GOPROXY": "https://proxy.golang.org|direct",
377+
},
378+
)

deps.bzl

+36
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
load("@bazel_gazelle//:deps.bzl", "go_repository")
2+
3+
def go_dependencies():
4+
go_repository(
5+
name = "com_github_golang_glog",
6+
importpath = "github.com/golang/glog",
7+
sum = "h1:1+mZ9upx1Dh6FmUTFR1naJ77miKiXgALjWOZ3NVFPmY=",
8+
version = "v1.2.2",
9+
)
10+
go_repository(
11+
name = "com_github_golang_protobuf",
12+
importpath = "github.com/golang/protobuf",
13+
sum = "h1:LUVKkCeviFUMKqHa4tXIIij/lbhnMbP7Fn5wKdKkRh4=",
14+
version = "v1.5.0",
15+
)
16+
go_repository(
17+
name = "com_github_google_go_cmp",
18+
importpath = "github.com/google/go-cmp",
19+
sum = "h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI=",
20+
version = "v0.6.0",
21+
)
22+
go_repository(
23+
name = "org_golang_google_protobuf",
24+
build_directives = [
25+
"gazelle:proto disable", # https://github.com/bazelbuild/rules_go/issues/3906
26+
],
27+
importpath = "google.golang.org/protobuf",
28+
sum = "h1:6xV6lTsCfpGD21XK49h7MhtcApnLqkfYgPcdHftf6hg=",
29+
version = "v1.34.2",
30+
)
31+
go_repository(
32+
name = "org_golang_x_xerrors",
33+
importpath = "golang.org/x/xerrors",
34+
sum = "h1:E7g+9GITq07hpfrRu66IVDexMakfv52eLZ2CXBWiKr4=",
35+
version = "v0.0.0-20191204190536-9bdfabe68543",
36+
)

go.mod

+8
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
module github.com/google/or-tools
2+
3+
go 1.22.2
4+
5+
require (
6+
github.com/golang/glog v1.2.2
7+
google.golang.org/protobuf v1.34.2
8+
)

go.sum

+6
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
github.com/golang/glog v1.2.2 h1:1+mZ9upx1Dh6FmUTFR1naJ77miKiXgALjWOZ3NVFPmY=
2+
github.com/golang/glog v1.2.2/go.mod h1:6AhwSGph0fcJtXVM/PEHPqZlFeoLxhs7/t5UDAwmO+w=
3+
github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI=
4+
github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
5+
google.golang.org/protobuf v1.34.2 h1:6xV6lTsCfpGD21XK49h7MhtcApnLqkfYgPcdHftf6hg=
6+
google.golang.org/protobuf v1.34.2/go.mod h1:qYOHts0dSfpeUzUFpOMr/WGzszTmLH+DiWniOlNbLDw=

ortools/sat/BUILD.bazel

+13
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
# Home of CP/SAT solver (which includes SAT, max-SAT and PB problems).
1515

1616
load("@rules_cc//cc:defs.bzl", "cc_library", "cc_proto_library")
17+
load("@io_bazel_rules_go//proto:def.bzl", "go_proto_library")
1718
load("@rules_java//java:defs.bzl", "java_proto_library")
1819
load("@rules_proto//proto:defs.bzl", "proto_library")
1920
load("@rules_python//python:proto.bzl", "py_proto_library")
@@ -61,6 +62,12 @@ cc_proto_library(
6162
deps = [":sat_parameters_proto"],
6263
)
6364

65+
go_proto_library(
66+
name = "sat_parameters_go_proto",
67+
proto = ":sat_parameters_proto",
68+
importpath = "github.com/google/or-tools/ortools/sat/proto/satparameters"
69+
)
70+
6471
py_proto_library(
6572
name = "sat_parameters_py_pb2",
6673
deps = [":sat_parameters_proto"],
@@ -81,6 +88,12 @@ cc_proto_library(
8188
deps = [":cp_model_proto"],
8289
)
8390

91+
go_proto_library(
92+
name = "cp_model_go_proto",
93+
importpath = "github.com/google/or-tools/ortools/sat/proto/cpmodel",
94+
proto = ":cp_model_proto",
95+
)
96+
8497
py_proto_library(
8598
name = "cp_model_py_pb2",
8699
deps = [":cp_model_proto"],

ortools/sat/go/cpmodel/BUILD.bazel

+55
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test")
2+
3+
go_library(
4+
name = "cpmodel",
5+
srcs = [
6+
"cp_model.go",
7+
"cp_solver.go",
8+
"cp_solver_c.cc",
9+
"cp_solver_c.h",
10+
"domain.go",
11+
],
12+
cdeps = [":cp_solver_c"],
13+
cgo = True,
14+
importpath = "github.com/google/or-tools/ortools/sat/go/cpmodel",
15+
visibility = ["//visibility:public"],
16+
deps = [
17+
"//ortools/sat:cp_model_go_proto",
18+
"//ortools/sat:sat_parameters_go_proto",
19+
"@com_github_golang_glog//:glog",
20+
"@org_golang_google_protobuf//proto",
21+
],
22+
)
23+
24+
go_test(
25+
name = "cpmodel_test",
26+
srcs = [
27+
"cp_model_test.go",
28+
"cp_solver_test.go",
29+
"domain_test.go",
30+
],
31+
embed = [":cpmodel"],
32+
deps = [
33+
"//ortools/sat:cp_model_go_proto",
34+
"//ortools/sat:sat_parameters_go_proto",
35+
"@com_github_golang_glog//:glog",
36+
"@com_github_google_go_cmp//cmp",
37+
"@org_golang_google_protobuf//proto",
38+
"@org_golang_google_protobuf//testing/protocmp",
39+
],
40+
)
41+
42+
cc_library(
43+
name = "cp_solver_c",
44+
srcs = ["cp_solver_c.cc"],
45+
hdrs = ["cp_solver_c.h"],
46+
deps = [
47+
"//ortools/sat:cp_model_cc_proto",
48+
"//ortools/sat:cp_model_solver",
49+
"//ortools/sat:sat_parameters_cc_proto",
50+
"//ortools/util:time_limit",
51+
"@com_google_absl//absl/log",
52+
"@com_google_absl//absl/status",
53+
"@com_google_absl//absl/strings",
54+
],
55+
)

0 commit comments

Comments
 (0)