Skip to content

Instantly share code, notes, and snippets.

View rrbutani's full-sized avatar
🐢
slowly but surely

Rahul Butani rrbutani

🐢
slowly but surely
  • 18:24 (UTC -07:00)
View GitHub Profile

First you need to run echo "test" > /tmp/foo.

Running bazel build @repo//... will print "running repo rule".

Touching test_file and then bazel build @repo//... will not do anything; the repo rule is not rerun and the artifacts in @repo are not rebuilt.

Modifying test_file will cause the workspace rule to be rerun.

  • if you make a change that yields a different BUILD.bazel file then artifacts will be rebuilt (i.e. changing the first line of test_file)
  • if you make a change that still yields the same BUILD.bazel file no actions will be run (i.e adding extra lines, whitespace to test_file)
{ lib }: {
# Given an attrset of derivations of interest, returns an attrset where each
# corresponding key is the full list of deps for the derivation.
#
# Note: this is far from perfect; this function only walks the usual
# `mkDerivation` dependency list attributes so it'll miss dependencies in
# strings.
collectDeps = pkgSet: let
# dbg = x: builtins.trace (builtins.typeOf x) (builtins.trace x x);
d = path: builtins.unsafeDiscardStringContext path;
...
see the revision history for lock files, if required
{ lib ? import <nixpkgs/lib>, pkgs ? import <nixpkgs> { config.checkMeta = true; }, config ? pkgs.config }: let
extendedMetaAttrs = [ "agsRoles" ];
removeExtendedFromMeta = attrs: attrs // (lib.optionalAttrs (attrs ? meta) {
meta = builtins.removeAttrs attrs.meta extendedMetaAttrs;
});
getExtendedMeta = attrs: lib.filterAttrs
(n: _: builtins.elem n extendedMetaAttrs)
(attrs.meta or {})
{ pkgs ? import ./. {} }: let
overlay = f: p: let base = p.llvmPackages_15; in {
llvmPackages_15 = let
patch = f.fetchpatch {
url = "https://github.com/llvm/llvm-project/commit/57c7bb3ec89565c68f858d316504668f9d214d59.patch";
hash = "sha256-AaM9A6tQ4YAw7uDqCIV4VaiUyLZv+unwcOqbakwW9/k=";
relative = "libcxx";
};
tools = base.tools;
// We want to slice and dice our opcode map on:
// - opcode byte
// - opcode map (aka leading opcode bytes; if present)
// - prefixes
//
// Unfortunately, C doesn't have pattern matching. The macros that follow are
// our (unfortunate) facsimile.
//
// Essentially we are — in the style of `disas_insn` — appropriating the upper
@rrbutani
rrbutani / bench.sh
Last active February 16, 2023 03:49
#! /usr/bin/env nix-shell
#! nix-shell -i bash -p bash coreutils procps cpuset which
# shellcheck shell=bash
# Based on suggestions from here: https://llvm.org/docs/Benchmarking.html.
# Also see: https://juliaci.github.io/BenchmarkTools.jl/dev/linuxtips/.
# And: https://man7.org/linux/man-pages/man7/cpuset.7.html.
set -euo pipefail
{
inputs = {
nixpkgs-working.url = github:NixOS/nixpkgs/2ebb6c1e5ae402ba35cca5eec58385e5f1adea04;
nixpkgs-broken.url = github:NixOS/nixpkgs/nixos-unstable; # d917136f550a8c36efb1724390c7245105f79023 as of this writing
nixpkgs-test.url = github:NixOS/nixpkgs/2fe19fe24a225c33c4011ee9dbc0b4310b798134;
};
outputs = { self, nixpkgs-working, nixpkgs-broken, nixpkgs-test }: let
old = nixpkgs-working.legacyPackages.x86_64-linux;
{ lib
, phases ? [
"Patch"
"Unpack"
"Configure"
"Build"
"Install"
"Check"
"InstallCheck"
]
//! Implementation of the [Playfair cipher].
//!
//! [Playfair cipher]: https://en.wikipedia.org/wiki/Playfair_cipher
#![cfg_attr(feature = "no_std", no_std)]
#![cfg_attr(all(docs, not(doctest)), feature(doc_auto_cfg))]
use core::fmt::{self, Display};
// Normally we'd use a `std` feature instead of a `no_std` feature (this works