aboutsummaryrefslogtreecommitdiff
path: root/examples/package-example/build/build.scala
diff options
context:
space:
mode:
Diffstat (limited to 'examples/package-example/build/build.scala')
-rw-r--r--examples/package-example/build/build.scala42
1 files changed, 42 insertions, 0 deletions
diff --git a/examples/package-example/build/build.scala b/examples/package-example/build/build.scala
new file mode 100644
index 0000000..3874507
--- /dev/null
+++ b/examples/package-example/build/build.scala
@@ -0,0 +1,42 @@
+package package_example_build
+import java.nio.file._
+import java.security.MessageDigest
+import cbt._
+class Build(val context: Context) extends BaseBuild with PackageJars {
+ override def groupId = "org.example"
+ override def version = "1.0.0"
+
+ def hash(file: Path): String = {
+ val digest = MessageDigest.getInstance("SHA-256");
+ val in = Files.newInputStream(file)
+ try {
+ val chunk = new Array[Byte](4096)
+ while(in.read(chunk) > 0) {
+ digest.update(chunk)
+ }
+ } finally {
+ in.close
+ }
+ val bytes = digest.digest()
+ val builder = new StringBuilder(bytes.length * 2);
+ for(b <- bytes) {
+ builder.append(f"$b%02x")
+ }
+ builder.toString
+ }
+
+ override def run = {
+ val pass1 = super.`package`.map(f => hash(f.toPath))
+ lib.clean(cleanFiles, true, false, false, false)
+ transientCache.clear()
+ val pass2 = super.`package`.map(f => hash(f.toPath))
+
+ assert(
+ pass1 == pass2,
+ "The checksums of jars generated during two separate builds did not match. " +
+ "The build is not reproducible."
+ )
+ ExitCode.Success
+ }
+
+}