This commit is contained in:
parent
e78e4f2344
commit
6a07d90f6f
123
flake.nix
123
flake.nix
|
@ -3,71 +3,71 @@
|
|||
nixpkgs.url = "github:nixos/nixpkgs/release-25.05";
|
||||
};
|
||||
outputs = {nixpkgs, self}: {
|
||||
packages.x86_64-linux = let
|
||||
pkgs = nixpkgs.legacyPackages.x86_64-linux;
|
||||
pkgset-raw = {
|
||||
inherit (pkgs)
|
||||
lib.mkPkgProcessor = {
|
||||
cflags ? "",
|
||||
hardeningDisable ? [],
|
||||
hardeningEnable ? [],
|
||||
attrs ? {},
|
||||
}: pkg: let
|
||||
inherit (nixpkgs) lib;
|
||||
overridesFlags = {
|
||||
env = (pkg.env or {}) // { NIX_CFLAGS_COMPILE = "${(pkg.NIX_CFLAGS_COMPILE or "")} ${cflags}"; };
|
||||
};
|
||||
overridesHardening = {
|
||||
hardeningDisable = (pkg.hardeningDisable or []) ++ hardeningDisable;
|
||||
hardeningEnable = (pkg.hardeningEnable or []) ++ hardeningEnable;
|
||||
};
|
||||
overrides = overridesFlags // overridesHardening // attrs;
|
||||
overridden = pkg.overrideAttrs overrides;
|
||||
in lib.warnIf (!(builtins.elem "fortify" hardeningDisable) && (lib.strings.hasInfix "-O0" cflags)) "fortify requires at least -O1" overridden;
|
||||
|
||||
packages = nixpkgs.lib.genAttrs nixpkgs.lib.systems.flakeExposed (platform: let pkgs = nixpkgs.legacyPackages.${platform}; in rec {
|
||||
mkDataset = pkgs.callPackage ./package.nix {};
|
||||
sampleDataset = mkDataset {
|
||||
name = "sample";
|
||||
pkgProcessor = self.lib.mkPkgProcessor {
|
||||
cflags = "-O0 -g";
|
||||
# pic maybe leads to some linker errors?
|
||||
hardeningDisable = [ "fortify" "pic" ];
|
||||
attrs = {
|
||||
dontStrip = true;
|
||||
};
|
||||
};
|
||||
pkgList = with nixpkgs.legacyPackages.x86_64-linux; [
|
||||
amtterm
|
||||
#archdiff
|
||||
babeltrace
|
||||
#bbe # will not build at -O0?
|
||||
#bin_replace_string
|
||||
bsdiff
|
||||
#btyacc
|
||||
bustle
|
||||
byacc
|
||||
complexity
|
||||
#conf2struct
|
||||
cppi
|
||||
cproto
|
||||
#csup
|
||||
desktop-file-utils
|
||||
dialog
|
||||
#diffball
|
||||
#difffilter
|
||||
diffstat
|
||||
#dissembler
|
||||
dropwatch
|
||||
dwdiff
|
||||
#edi
|
||||
elfkickers
|
||||
#ftnchek
|
||||
#fuzz
|
||||
global
|
||||
gpp
|
||||
#gtk-update-icon-cache
|
||||
#hxd
|
||||
hxtools
|
||||
icmake
|
||||
#intel-graphics-system-controller
|
||||
libtree
|
||||
#lsuio
|
||||
#mingw64-toolchain
|
||||
numdiff
|
||||
ostree
|
||||
pahole
|
||||
patchutils
|
||||
#ply
|
||||
#pretrace
|
||||
#pscan
|
||||
radare2
|
||||
rizin
|
||||
rt-tests
|
||||
#sel
|
||||
shc
|
||||
smem
|
||||
statifier
|
||||
#stubgen
|
||||
#systemtap
|
||||
#tinlink
|
||||
valgrind
|
||||
vmtouch
|
||||
vtable-dumper
|
||||
wiggle
|
||||
#xfce4-dev-tools
|
||||
xmlindent
|
||||
#yacc
|
||||
|
||||
bison
|
||||
diffutils
|
||||
bintools-unwrapped
|
||||
|
@ -76,63 +76,10 @@
|
|||
curl
|
||||
file
|
||||
strace
|
||||
;
|
||||
inherit (pkgs.xfce) xfce4-dev-tools;
|
||||
coreutils = (pkgs.coreutils.override { singleBinary = false; });
|
||||
xfce.xfce4-dev-tools
|
||||
(pkgs.coreutils.override { singleBinary = false; })
|
||||
];
|
||||
};
|
||||
lib = pkgs.lib;
|
||||
self' = self.packages.x86_64-linux;
|
||||
pkgsetsDefs = {
|
||||
"O0" = "-O0 -g";
|
||||
"O2" = "-O2 -g";
|
||||
};
|
||||
forceFlags = drv: flags: let
|
||||
overridesFlags = {
|
||||
env = (drv.env or {}) // { NIX_CFLAGS_COMPILE = "${(drv.env.NIX_CFLAGS_COMPILE or "")} ${flags}"; };
|
||||
};
|
||||
overridesHardening = {
|
||||
# fortify requires at least -O1
|
||||
# pic leads to some linker errors
|
||||
hardeningDisable = (drv.hardeningDisable or []) ++ [ "fortify" "pic" ];
|
||||
};
|
||||
overridesStrip = {
|
||||
dontStrip = true;
|
||||
};
|
||||
overrides = overridesStrip // overridesFlags // overridesHardening;
|
||||
in drv.overrideAttrs overrides;
|
||||
in {
|
||||
default = pkgs.runCommand "binxos.tar.gz" { } ''
|
||||
declare -A SETS
|
||||
declare -A TOOBIG
|
||||
${lib.concatMapAttrsStringSep "\n" (name: pkgset: ''
|
||||
SETS[${name}]="${lib.concatMapAttrsStringSep " " (_: drv: lib.getBin drv) pkgset}"
|
||||
'') self'.pkgsets}
|
||||
|
||||
for set in "''${!SETS[@]}"; do
|
||||
mkdir -p $TMP/binxos/$set
|
||||
for pkg in ''${SETS[$set]}; do
|
||||
for f in $pkg/bin/*; do
|
||||
if [[ $(head -c4 $f) != $'\x7fELF' ]]; then
|
||||
continue
|
||||
fi
|
||||
if [[ $(stat --format %s $f) > $((800 * 1024 * 1024)) ]]; then
|
||||
TOOBIG[$(basename $f)]=1
|
||||
continue
|
||||
fi
|
||||
cp $f $TMP/binxos/$set
|
||||
done
|
||||
done
|
||||
done
|
||||
|
||||
for bin in "''${!TOOBIG[@]}"; do
|
||||
rm -f $TMP/binxos/*/$bin
|
||||
done
|
||||
|
||||
cd $TMP
|
||||
tar -czf $out binxos
|
||||
'';
|
||||
|
||||
pkgsets = lib.mapAttrs (_: flags: lib.mapAttrs (_: pkg: forceFlags pkg flags) pkgset-raw) pkgsetsDefs;
|
||||
};
|
||||
});
|
||||
};
|
||||
}
|
||||
|
|
|
@ -0,0 +1,21 @@
|
|||
{
|
||||
lib,
|
||||
runCommand,
|
||||
}:
|
||||
{
|
||||
name,
|
||||
pkgList,
|
||||
fileGlobs ? [ "bin/*" "lib/*"],
|
||||
fileFindPredicates ? "-type f",
|
||||
pkgProcessor ? pkg: pkg,
|
||||
}:
|
||||
let
|
||||
processedList = map pkgProcessor pkgList;
|
||||
globPredicates = lib.concatMapStringsSep " " (g: "-find ${g}") fileGlobs;
|
||||
copiedBins = runCommand name {} ''
|
||||
mkdir -p $out/bins
|
||||
find ${lib.concatStringsSep " " processedList} ${globPredicates} ${fileFindPredicates}| while read -r filepath; do
|
||||
cp "$filepath" $out/bins
|
||||
done
|
||||
'';
|
||||
in copiedBins
|
Loading…
Reference in New Issue