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";
|
nixpkgs.url = "github:nixos/nixpkgs/release-25.05";
|
||||||
};
|
};
|
||||||
outputs = {nixpkgs, self}: {
|
outputs = {nixpkgs, self}: {
|
||||||
packages.x86_64-linux = let
|
lib.mkPkgProcessor = {
|
||||||
pkgs = nixpkgs.legacyPackages.x86_64-linux;
|
cflags ? "",
|
||||||
pkgset-raw = {
|
hardeningDisable ? [],
|
||||||
inherit (pkgs)
|
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
|
amtterm
|
||||||
#archdiff
|
|
||||||
babeltrace
|
babeltrace
|
||||||
#bbe # will not build at -O0?
|
|
||||||
#bin_replace_string
|
|
||||||
bsdiff
|
bsdiff
|
||||||
#btyacc
|
|
||||||
bustle
|
bustle
|
||||||
byacc
|
byacc
|
||||||
complexity
|
complexity
|
||||||
#conf2struct
|
|
||||||
cppi
|
cppi
|
||||||
cproto
|
cproto
|
||||||
#csup
|
|
||||||
desktop-file-utils
|
desktop-file-utils
|
||||||
dialog
|
dialog
|
||||||
#diffball
|
|
||||||
#difffilter
|
|
||||||
diffstat
|
diffstat
|
||||||
#dissembler
|
|
||||||
dropwatch
|
dropwatch
|
||||||
dwdiff
|
dwdiff
|
||||||
#edi
|
|
||||||
elfkickers
|
elfkickers
|
||||||
#ftnchek
|
|
||||||
#fuzz
|
|
||||||
global
|
global
|
||||||
gpp
|
gpp
|
||||||
#gtk-update-icon-cache
|
|
||||||
#hxd
|
|
||||||
hxtools
|
hxtools
|
||||||
icmake
|
icmake
|
||||||
#intel-graphics-system-controller
|
|
||||||
libtree
|
libtree
|
||||||
#lsuio
|
|
||||||
#mingw64-toolchain
|
|
||||||
numdiff
|
numdiff
|
||||||
ostree
|
ostree
|
||||||
pahole
|
pahole
|
||||||
patchutils
|
patchutils
|
||||||
#ply
|
|
||||||
#pretrace
|
|
||||||
#pscan
|
|
||||||
radare2
|
radare2
|
||||||
rizin
|
rizin
|
||||||
rt-tests
|
rt-tests
|
||||||
#sel
|
|
||||||
shc
|
shc
|
||||||
smem
|
smem
|
||||||
statifier
|
statifier
|
||||||
#stubgen
|
|
||||||
#systemtap
|
|
||||||
#tinlink
|
|
||||||
valgrind
|
valgrind
|
||||||
vmtouch
|
vmtouch
|
||||||
vtable-dumper
|
vtable-dumper
|
||||||
wiggle
|
wiggle
|
||||||
#xfce4-dev-tools
|
|
||||||
xmlindent
|
xmlindent
|
||||||
#yacc
|
|
||||||
|
|
||||||
bison
|
bison
|
||||||
diffutils
|
diffutils
|
||||||
bintools-unwrapped
|
bintools-unwrapped
|
||||||
|
@ -76,63 +76,10 @@
|
||||||
curl
|
curl
|
||||||
file
|
file
|
||||||
strace
|
strace
|
||||||
;
|
xfce.xfce4-dev-tools
|
||||||
inherit (pkgs.xfce) xfce4-dev-tools;
|
(pkgs.coreutils.override { singleBinary = false; })
|
||||||
coreutils = (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