From fedbf69f246cbf47ae4e7c6c675f4b208909bd63 Mon Sep 17 00:00:00 2001 From: George Gensure Date: Fri, 12 Apr 2019 14:58:39 -0400 Subject: [PATCH] Clean things up, add docs --- README.md | 23 +++++++++++++++++++++++ WORKSPACE | 13 +++++++++++++ third_party/BUILD | 0 third_party/rules_ruby.patch | 22 ++++++++++++++++++++++ tools/BUILD | 9 +++++++++ gen.rb => tools/gen.rb | 13 ++++++++----- package.erb => tools/package.erb | 0 target.erb => tools/target.erb | 0 8 files changed, 75 insertions(+), 5 deletions(-) create mode 100644 README.md create mode 100644 third_party/BUILD create mode 100644 third_party/rules_ruby.patch rename gen.rb => tools/gen.rb (90%) rename package.erb => tools/package.erb (100%) rename target.erb => tools/target.erb (100%) diff --git a/README.md b/README.md new file mode 100644 index 0000000..dbe5b7a --- /dev/null +++ b/README.md @@ -0,0 +1,23 @@ +Generates a desired number of actions according to a linear noise +shape profile. The generated actions consume a deterministic amount +of cpu time and depend on zero or one targets in order to establish +their position in the overall organization of the build graph. + +To generate: + +bazel run tools:gen [shamt] [desired_targets] > BUILD + +*shamt* is a power-of-2 degree of the linear noise generated. The higher +the *shamt*, the more levels to the graph. + +*desired_targets* is a total count of targets that should be generated. +This is desired, not exact, and may shift slightly to ensure no empty +levels. + +To exercise: + +bazel build :all + +Shortest time for a given parameter set wins. + +Feel free to use any options you want to improve your score. diff --git a/WORKSPACE b/WORKSPACE index e69de29..2457855 100644 --- a/WORKSPACE +++ b/WORKSPACE @@ -0,0 +1,13 @@ +load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") + +http_archive( + patches = ["//third_party:rules_ruby.patch"], + name = "com_github_yugui_rules_ruby", + sha256 = "868f7f7ff48af995ca5197a981baef717315e44b2ca0d52f01c2ccf50f3b9f33", + strip_prefix = "rules_ruby-7771813c532e51367e25f9b3928822aad06d2183", + url = "https://github.com/yugui/rules_ruby/archive/7771813c532e51367e25f9b3928822aad06d2183.zip", +) + +load("@com_github_yugui_rules_ruby//ruby:def.bzl", "ruby_register_toolchains") + +ruby_register_toolchains() diff --git a/third_party/BUILD b/third_party/BUILD new file mode 100644 index 0000000..e69de29 diff --git a/third_party/rules_ruby.patch b/third_party/rules_ruby.patch new file mode 100644 index 0000000..f741ef5 --- /dev/null +++ b/third_party/rules_ruby.patch @@ -0,0 +1,22 @@ +--- ruby/private/library.bzl 2019-04-12 14:28:59.026302254 -0400 ++++ ruby/private/library.bzl 2019-04-12 14:29:02.890307286 -0400 +@@ -38,7 +38,7 @@ + ), + "data": attr.label_list( + allow_files = True, +- cfg = "data", ++ cfg = "host", + ), + }, + ) +--- ruby/private/binary.bzl.orig 2019-04-12 14:33:22.042642589 -0400 ++++ ruby/private/binary.bzl 2019-04-12 14:33:11.854629476 -0400 +@@ -65,7 +65,7 @@ + "rubyopt": attr.string_list(), + "data": attr.label_list( + allow_files = True, +- cfg = "data", ++ cfg = "host", + ), + "main": attr.label( + allow_single_file = True, diff --git a/tools/BUILD b/tools/BUILD index 6dc87e8..451f4c4 100644 --- a/tools/BUILD +++ b/tools/BUILD @@ -1,5 +1,14 @@ +load("@com_github_yugui_rules_ruby//ruby:def.bzl", "ruby_binary") + cc_binary( name = "ex", srcs = ["ex.c"], visibility = ["//visibility:public"], ) + +ruby_binary( + name = "gen", + srcs = ["gen.rb"], + visibility = ["//visibility:public"], + data = ["package.erb", "target.erb"], +) diff --git a/gen.rb b/tools/gen.rb similarity index 90% rename from gen.rb rename to tools/gen.rb index 5d985e5..3c05f5d 100644 --- a/gen.rb +++ b/tools/gen.rb @@ -9,7 +9,7 @@ def initialize(rule, name, deps) @deps = deps end - TEMPLATE = File.read("target.erb") + TEMPLATE = File.read("tools/target.erb") def self.renderer @erb ||= ERB.new(TEMPLATE, safe_level=nil, trim_mode=?-) @@ -52,7 +52,7 @@ def initialize(targets) @targets = targets end - TEMPLATE = File.read("package.erb") + TEMPLATE = File.read("tools/package.erb") def self.renderer @erb ||= ERB.new(TEMPLATE, safe_level=nil, trim_mode=?-) @@ -104,7 +104,7 @@ def sum def generate @keypoints[0] = rand - @keypoints[1 << @shift] + @keypoints[1 << @shift] = rand generate_at(1 << (@shift - 1), 1 << (@shift - 1), 1.0) @@ -126,9 +126,12 @@ def generate_at(at, length, scale) end end -noise = LinearNoise.new(7) +shift = ARGV[0].to_i +desired_actions = ARGV[1].to_i -noise_factor = ((100000 - noise.size) / noise.sum) +noise = LinearNoise.new(shift) + +noise_factor = ((desired_actions - noise.size) / noise.sum) package_builder = Package::Builder.new diff --git a/package.erb b/tools/package.erb similarity index 100% rename from package.erb rename to tools/package.erb diff --git a/target.erb b/tools/target.erb similarity index 100% rename from target.erb rename to tools/target.erb