uboot: (firmwareOdroidC2/C4) don't invoke patch tool, use patches = [] instead
https://github.com/NixOS/nixpkgs/blob/master/pkgs/stdenv/generic/setup.sh#L948 this can do it nicely. Signed-off-by: Anton Arapov <anton@deadbeef.mx>
This commit is contained in:
commit
56de2bcd43
30691 changed files with 3076956 additions and 0 deletions
|
|
@ -0,0 +1,101 @@
|
|||
# mkOpenModelicaDerivation is an mkDerivation function for packages
|
||||
# from OpenModelica suite.
|
||||
|
||||
{ stdenv, lib, fetchgit, autoconf, automake, libtool, cmake, autoreconfHook, symlinkJoin }:
|
||||
pkg:
|
||||
let
|
||||
inherit (builtins) hasAttr getAttr length elemAt;
|
||||
inherit (lib) attrByPath concatStringsSep;
|
||||
|
||||
|
||||
# A few helpers functions:
|
||||
|
||||
# getAttrDef is just a getAttr with default fallback
|
||||
getAttrDef = attr: default: x: attrByPath [ attr ] default x;
|
||||
|
||||
# getAttr-like helper for optional append to string:
|
||||
# "Hello" + appendByAttr "a" " " {a = "world";} = "Hello world"
|
||||
# "Hello" + appendByAttr "a" " " {} = "Hello"
|
||||
appendByAttr = attr: sep: x: if hasAttr attr x then sep + (getAttr attr x) else "";
|
||||
|
||||
# Are there any OM dependencies at all?
|
||||
ifDeps = length pkg.omdeps != 0;
|
||||
|
||||
# Dependencies of current OpenModelica-target joined in one file tree.
|
||||
# Return the dep itself in case it is a single one.
|
||||
joinedDeps =
|
||||
if length pkg.omdeps == 1
|
||||
then elemAt pkg.omdeps 0
|
||||
else
|
||||
symlinkJoin {
|
||||
name = pkg.pname + "-omhome";
|
||||
paths = pkg.omdeps;
|
||||
};
|
||||
|
||||
# Should we run ./configure for the target pkg?
|
||||
omautoconf = getAttrDef "omautoconf" false pkg;
|
||||
|
||||
# Name of the make target
|
||||
omtarget = getAttrDef "omtarget" pkg.pname pkg;
|
||||
|
||||
# Directory of target sources
|
||||
omdir = getAttrDef "omdir" pkg.pname pkg;
|
||||
|
||||
# Simple to to m4 configuration scripts
|
||||
postPatch = lib.optionalString ifDeps ''
|
||||
sed -i ''$(find -name omhome.m4) -e 's|if test ! -z "$USINGPRESETBUILDDIR"|if test ! -z "$USINGPRESETBUILDDIR" -a -z "$OMHOME"|'
|
||||
'' +
|
||||
appendByAttr "postPatch" "\n" pkg;
|
||||
|
||||
# Update shebangs in the scripts before running configuration.
|
||||
preAutoreconf = "patchShebangs --build common" +
|
||||
appendByAttr "preAutoreconf" "\n" pkg;
|
||||
|
||||
# Tell OpenModelica where built dependencies are located.
|
||||
configureFlags = lib.optional ifDeps "--with-openmodelicahome=${joinedDeps}" ++
|
||||
getAttrDef "configureFlags" [ ] pkg;
|
||||
|
||||
# Our own configurePhase that accounts for omautoconf
|
||||
configurePhase = ''
|
||||
runHook preConfigure
|
||||
export configureFlags="''${configureFlags} --with-ombuilddir=$PWD/build --prefix=$prefix"
|
||||
./configure --no-recursion $configureFlags
|
||||
${lib.optionalString omautoconf "(cd ${omdir}; ./configure $configureFlags)"}
|
||||
runHook postConfigure
|
||||
'';
|
||||
|
||||
# Targets that we want to build ourselves:
|
||||
deptargets = lib.forEach pkg.omdeps (dep: dep.omtarget);
|
||||
|
||||
# ... so we ask openmodelica makefile to skip those targets.
|
||||
preBuild = ''
|
||||
for target in ${concatStringsSep " " deptargets}; do
|
||||
touch ''${target}.skip;
|
||||
done
|
||||
'' +
|
||||
appendByAttr "preBuild" "\n" pkg;
|
||||
|
||||
makeFlags = "${omtarget}" +
|
||||
appendByAttr "makeFlags" " " pkg;
|
||||
|
||||
installFlags = "-i " +
|
||||
appendByAttr "installFlags" " " pkg;
|
||||
|
||||
|
||||
in
|
||||
stdenv.mkDerivation (pkg // {
|
||||
inherit omtarget postPatch preAutoreconf configureFlags configurePhase preBuild makeFlags installFlags;
|
||||
|
||||
src = fetchgit (import ./src-main.nix);
|
||||
version = "1.18.0";
|
||||
|
||||
nativeBuildInputs = getAttrDef "nativeBuildInputs" [ ] pkg
|
||||
++ [ autoconf automake libtool cmake autoreconfHook ];
|
||||
|
||||
buildInputs = getAttrDef "buildInputs" [ ] pkg
|
||||
++ lib.optional ifDeps joinedDeps;
|
||||
|
||||
dontUseCmakeConfigure = true;
|
||||
|
||||
hardeningDisable = [ "format" ];
|
||||
})
|
||||
Loading…
Add table
Add a link
Reference in a new issue