Merge 'staging' into closure-size

- there were many easy merge conflicts
- cc-wrapper needed nontrivial changes

Many other problems might've been created by interaction of the branches,
but stdenv and a few other packages build fine now.
This commit is contained in:
Vladimír Čunát
2015-04-18 11:22:20 +02:00
6303 changed files with 375444 additions and 91358 deletions
+51
View File
@@ -0,0 +1,51 @@
{ stdenv, fetchurl, unzip
# If jdk is null, require JAVA_HOME in runtime environment, else store
# JAVA_HOME=${jdk.home} into grails.
, jdk ? null
, coreutils, ncurses, gnused, gnugrep # for purity
}:
let
binpath = stdenv.lib.makeSearchPath "bin"
([ coreutils ncurses gnused gnugrep ] ++ stdenv.lib.optional (jdk != null) jdk);
in
stdenv.mkDerivation rec {
name = "grails-2.4.3";
src = fetchurl {
url = "http://dist.springframework.org.s3.amazonaws.com/release/GRAILS/${name}.zip";
sha256 = "0lqkv0hsiiqa36pfnq5wv7s7nsp9xadmh1ri039bn0llpfck4742";
};
buildInputs = [ unzip ];
buildPhase = "true";
installPhase = ''
mkdir -p "$out"
cp -vr . "$out"
# Remove (for now) uneeded Windows .bat files
rm -f "$out"/bin/*.bat
# Improve purity
sed -i -e '2iPATH=${binpath}:\$PATH' "$out"/bin/grails
'' + stdenv.lib.optionalString (jdk != null) ''
# Inject JDK path into grails
sed -i -e '2iJAVA_HOME=${jdk.home}' "$out"/bin/grails
'';
preferLocalBuild = true;
meta = with stdenv.lib; {
description = "Full stack, web application framework for the JVM";
longDescription = ''
Grails is an Open Source, full stack, web application framework for the
JVM. It takes advantage of the Groovy programming language and convention
over configuration to provide a productive and stream-lined development
experience.
'';
homepage = http://grails.org/;
license = licenses.asl20;
platforms = platforms.linux;
maintainers = [ maintainers.bjornfor ];
};
}
+35
View File
@@ -0,0 +1,35 @@
{ stdenv, fetchurl, python, utillinux, openssl, http-parser, zlib, libuv, nightly ? false }:
let
version = if nightly then "1.6.5-nightly20150409ff74931107" else "1.6.4";
inherit (stdenv.lib) optional maintainers licenses platforms;
in stdenv.mkDerivation {
name = "iojs-${version}";
src = fetchurl {
url = if nightly
then "https://iojs.org/download/nightly/v${version}/iojs-v${version}.tar.gz"
else "https://iojs.org/dist/v${version}/iojs-v${version}.tar.gz";
sha256 = if nightly
then "04f7r4iv8p0jfylw4sxg3vsv14rbsi6n9hbqnwvdh6554yrm6d35"
else "1qzvf7g457dppzxn23wppjcm09vh1n6bhsvz5szhwgjvl0iv2pc7";
};
prePatch = ''
sed -e 's|^#!/usr/bin/env python$|#!${python}/bin/python|g' -i configure
'';
configureFlags = [ "--shared-openssl" "--shared-http-parser" "--shared-zlib" "--shared-libuv" ];
buildInputs = [ python openssl http-parser zlib libuv ] ++ (optional stdenv.isLinux utillinux);
setupHook = ../nodejs/setup-hook.sh;
passthru.interpreterName = "iojs";
meta = {
description = "A friendly fork of Node.js with an open governance model";
homepage = https://iojs.org/;
license = licenses.mit;
platforms = platforms.linux;
};
}
+54
View File
@@ -0,0 +1,54 @@
#!/bin/sh
#
# Fetch the latest io.js release (stable/nightly) and update
# `default.nix` in this directory.
#
# Call this from the root of your nixpkgs directory.
#
set -e
HERE="$(dirname "$0")"
latest() {
curl -s "$1" | grep 'href="v' \
| tail -1 | sed 's/.*href="v//;s/\/".*//'
}
latest_log() {
echo "Getting latest $1 version from $2" >&2
version=$(latest "$2")
echo " -> $version" >&2
echo "$version"
}
url() {
nix-instantiate -A "$1" \
| xargs cat \
| sed 's/.*"urls","//;s/".*//'
}
hash() {
nix-prefetch-url "$1"
}
hash_log() {
echo "Finding hash for $1" >&2
value=$(hash "$1")
echo " -> $value" >&2
echo "$value"
}
stable=$(latest_log stable 'https://iojs.org/dist/')
nightly=$(latest_log nightly 'https://iojs.org/download/nightly/')
sed -i \
"/version = if nightly/s/then.*/then \"$nightly\" else \"$stable\";/" \
"$HERE/default.nix"
stableHash=$(hash_log "$(url iojs.src)")
nightlyHash=$(hash_log "$(url iojs-nightly.src)")
sed -i \
"/sha256 = if nightly/{N;s/\"[^\"]*\"/\"$nightlyHash\"/;N;s/\"[^\"]*\";/\"$stableHash\";/}" \
"$HERE/default.nix"
@@ -1,99 +1,333 @@
{ stdenv, runCommand, nodejs, neededNatives}:
args @ { name, src, deps ? [], peerDependencies ? [], flags ? [], preShellHook ? "", postShellHook ? "", ... }:
{
name, version ? "", src,
# by default name of nodejs interpreter e.g. "nodejs-${name}"
namePrefix ? nodejs.interpreterName + "-",
# Node package name
pkgName ?
if version != "" then stdenv.lib.removeSuffix "-${version}" name else
(builtins.parseDrvName name).name,
# List or attribute set of dependencies
deps ? {},
# List or attribute set of peer depencies
peerDependencies ? {},
# List or attribute set of optional dependencies
optionalDependencies ? {},
# List of optional dependencies to skip
skipOptionalDependencies ? [],
# Whether package is binary or library
bin ? false,
# Additional flags passed to npm install
flags ? "",
# Command to be run before shell hook
preShellHook ? "",
# Command to be run after shell hook
postShellHook ? "",
# Same as https://docs.npmjs.com/files/package.json#os
os ? [],
# Same as https://docs.npmjs.com/files/package.json#cpu
cpu ? [],
# Attribute set of already resolved deps (internal),
# for avoiding infinite recursion
resolvedDeps ? {},
...
} @ args:
with stdenv.lib;
let
npmFlags = concatStringsSep " " (map (v: "--${v}") flags);
self = let
sources = runCommand "node-sources" {} ''
tar --no-same-owner --no-same-permissions -xf ${nodejs.src}
mv $(find . -type d -mindepth 1 -maxdepth 1) $out
'';
sources = runCommand "node-sources" {} ''
tar --no-same-owner --no-same-permissions -xf ${nodejs.src}
mv *node* $out
'';
platforms = if os == [] then nodejs.meta.platforms else
fold (entry: platforms:
let
filterPlatforms =
stdenv.lib.platforms.${removePrefix "!" entry} or [];
in
# Ignore unknown platforms
if filterPlatforms == [] then platforms
else
if hasPrefix "!" entry then
subtractLists (intersectLists filterPlatforms nodejs.meta.platforms) platforms
else
platforms ++ (intersectLists filterPlatforms nodejs.meta.platforms)
) [] os;
peerDeps = listToAttrs (concatMap (dep: map (name: {
inherit name;
value = dep;
}) (filter (nm: !(elem nm (args.passthru.names or []))) dep.names)) (peerDependencies));
in
stdenv.mkDerivation ({
unpackPhase = "true";
mapDependencies = deps: f: rec {
# Convert deps to attribute set
attrDeps = if isAttrs deps then deps else
(listToAttrs (map (dep: nameValuePair dep.name dep) deps));
inherit src;
# All required node modules, without already resolved dependencies
# Also override with already resolved dependencies
requiredDeps = mapAttrs (name: dep:
dep.override {
resolvedDeps = resolvedDeps // { "${name}" = self; };
}
) (filterAttrs f (removeAttrs attrDeps (attrNames resolvedDeps)));
configurePhase = ''
runHook preConfigure
mkdir node_modules
${concatStrings (concatMap (dep: map (name: ''
ln -sv ${dep}/lib/node_modules/${name} node_modules/
'') dep.names) deps)}
${concatStrings (mapAttrsToList (name: dep: ''
ln -sv ${dep}/lib/node_modules/${name} node_modules/
'') peerDeps)}
export HOME=$(pwd)
runHook postConfigure
'';
# Recursive dependencies that we want to avoid with shim creation
recursiveDeps = filterAttrs f (removeAttrs attrDeps (attrNames requiredDeps));
};
buildPhase = ''
runHook preBuild
npm --registry http://www.example.com --nodedir=${sources} install $src ${npmFlags}
runHook postBuild
'';
_dependencies = mapDependencies deps (name: dep:
dep.pkgName != pkgName);
_optionalDependencies = mapDependencies optionalDependencies (name: dep:
(builtins.tryEval dep).success &&
!(elem dep.pkgName skipOptionalDependencies)
);
_peerDependencies = mapDependencies peerDependencies (name: dep:
dep.pkgName != pkgName);
installPhase = ''
runHook preInstall
mkdir -p $out/lib/node_modules
${concatStrings (map (name: ''
mv node_modules/${name} $out/lib/node_modules
rm -fR $out/lib/node_modules/${name}/node_modules
ln -sv $out/.dependent-node-modules $out/lib/node_modules/${name}/node_modules
if [ -e "$out/lib/node_modules/${name}/man" ]; then
mkdir -p $out/share
for dir in "$out/lib/node_modules/${name}/man/"*; do
mkdir -p $out/share/man/$(basename "$dir")
for page in "$dir"/*; do
ln -sv $page $out/share/man/$(basename "$dir")
done
done
fi
'') args.passthru.names)}
${concatStrings (mapAttrsToList (name: dep: ''
mv node_modules/${name} $out/lib/node_modules
'') peerDeps)}
mv node_modules/.bin $out/lib/node_modules 2>/dev/null || true
mv node_modules $out/.dependent-node-modules
if [ -d "$out/lib/node_modules/.bin" ]; then
ln -sv $out/lib/node_modules/.bin $out/bin
requiredDependencies =
_dependencies.requiredDeps //
_optionalDependencies.requiredDeps //
_peerDependencies.requiredDeps;
recursiveDependencies =
_dependencies.recursiveDeps //
_optionalDependencies.recursiveDeps //
_peerDependencies.recursiveDeps;
patchShebangs = dir: ''
node=`type -p node`
coffee=`type -p coffee || true`
find -L $out/lib/node_modules/.bin/* -type f -print0 | \
xargs -0 sed --follow-symlinks -i \
find -L ${dir} -type f -print0 | xargs -0 grep -Il . | \
xargs sed --follow-symlinks -i \
-e 's@#!/usr/bin/env node@#!'"$node"'@' \
-e 's@#!/usr/bin/env coffee@#!'"$coffee"'@' \
-e 's@#!/.*/node@#!'"$node"'@' \
-e 's@#!/.*/coffee@#!'"$coffee"'@'
fi
runHook postInstall
'';
-e 's@#!/.*/coffee@#!'"$coffee"'@' || true
'';
preFixup = concatStringsSep "\n" (map (src: ''
find $out -type f -print0 | xargs -0 sed -i 's|${src}|${src.name}|g'
'') src);
in stdenv.mkDerivation ({
inherit src;
shellHook = ''
${preShellHook}
export PATH=${nodejs}/bin:$(pwd)/node_modules/.bin:$PATH
mkdir -p node_modules
${concatStrings (concatMap (dep: map (name: ''
ln -sfv ${dep}/lib/node_modules/${name} node_modules/
'') dep.names) deps)}
${postShellHook}
'';
} // args // {
# Run the node setup hook when this package is a build input
propagatedNativeBuildInputs = (args.propagatedNativeBuildInputs or []) ++ [ nodejs ];
configurePhase = ''
runHook preConfigure
# Make buildNodePackage useful with --run-env
nativeBuildInputs = (args.nativeBuildInputs or []) ++ deps ++ peerDependencies ++ neededNatives;
} )
${patchShebangs "./"}
# Some version specifiers (latest, unstable, URLs, file paths) force NPM
# to make remote connections or consult paths outside the Nix store.
# The following JavaScript replaces these by * to prevent that:
# Also some packages require a specific npm version because npm may
# resovle dependencies differently, but npm is not used by Nix for dependency
# reslution, so these requirements are dropped.
(
cat <<EOF
var fs = require('fs');
var url = require('url');
/*
* Replaces an impure version specification by *
*/
function replaceImpureVersionSpec(versionSpec) {
var parsedUrl = url.parse(versionSpec);
if(versionSpec == "latest" || versionSpec == "unstable" ||
versionSpec.substr(0, 2) == ".." || dependency.substr(0, 2) == "./" || dependency.substr(0, 2) == "~/" || dependency.substr(0, 1) == '/' || /^[^/]+\/[^/]+$/.test(versionSpec))
return '*';
else if(parsedUrl.protocol == "git:" || parsedUrl.protocol == "git+ssh:" || parsedUrl.protocol == "git+http:" || parsedUrl.protocol == "git+https:" ||
parsedUrl.protocol == "http:" || parsedUrl.protocol == "https:")
return '*';
else
return versionSpec;
}
var packageObj = JSON.parse(fs.readFileSync('./package.json'));
/* Replace dependencies */
if(packageObj.dependencies !== undefined) {
for(var dependency in packageObj.dependencies) {
var versionSpec = packageObj.dependencies[dependency];
packageObj.dependencies[dependency] = replaceImpureVersionSpec(versionSpec);
}
}
/* Replace development dependencies */
if(packageObj.devDependencies !== undefined) {
for(var dependency in packageObj.devDependencies) {
var versionSpec = packageObj.devDependencies[dependency];
packageObj.devDependencies[dependency] = replaceImpureVersionSpec(versionSpec);
}
}
/* Replace optional dependencies */
if(packageObj.optionalDependencies !== undefined) {
for(var dependency in packageObj.optionalDependencies) {
var versionSpec = packageObj.optionalDependencies[dependency];
packageObj.optionalDependencies[dependency] = replaceImpureVersionSpec(versionSpec);
}
}
/* Ignore npm version requirement */
if(packageObj.engines) {
delete packageObj.engines.npm;
}
/* Write the fixed JSON file */
fs.writeFileSync("package.json", JSON.stringify(packageObj));
EOF
) | node
# We do not handle shrinkwraps yet
rm npm-shrinkwrap.json 2>/dev/null || true
mkdir ../build-dir
(
cd ../build-dir
mkdir node_modules
# Symlink or copy dependencies for node modules
# copy is needed if dependency has recursive dependencies,
# because node can't follow symlinks while resolving recursive deps.
${concatMapStrings (dep:
if dep.recursiveDeps == [] then ''
ln -sv ${dep}/lib/node_modules/${dep.pkgName} node_modules/
'' else ''
cp -R ${dep}/lib/node_modules/${dep.pkgName} node_modules/
''
) (attrValues requiredDependencies)}
# Create shims for recursive dependenceies
${concatMapStrings (dep: ''
mkdir -p node_modules/${dep.pkgName}
cat > node_modules/${dep.pkgName}/package.json <<EOF
{
"name": "${dep.pkgName}",
"version": "${getVersion dep}"
}
EOF
'') (attrValues recursiveDependencies)}
)
export HOME=$PWD/../build-dir
runHook postConfigure
'';
buildPhase = ''
runHook preBuild
# If source was a file, repackage it, so npm pre/post publish hooks are not triggered,
if [[ -f $src ]]; then
GZIP=-1 tar -czf ../build-dir/package.tgz ./
export src=$HOME/package.tgz
else
export src=$PWD
fi
# Install package
(cd $HOME && npm --registry http://www.example.com --nodedir=${sources} install $src --fetch-retries 0 ${flags})
runHook postBuild
'';
installPhase = ''
runHook preInstall
(
cd $HOME
# Remove shims
${concatMapStrings (dep: ''
rm node_modules/${dep.pkgName}/package.json
rmdir node_modules/${dep.pkgName}
'') (attrValues recursiveDependencies)}
mkdir -p $out/lib/node_modules
# Install manual
mv node_modules/${pkgName} $out/lib/node_modules
rm -fR $out/lib/node_modules/${pkgName}/node_modules
cp -r node_modules $out/lib/node_modules/${pkgName}/node_modules
if [ -e "$out/lib/node_modules/${pkgName}/man" ]; then
mkdir -p $out/share
for dir in "$out/lib/node_modules/${pkgName}/man/"*; do
mkdir -p $out/share/man/$(basename "$dir")
for page in "$dir"/*; do
ln -sv $page $out/share/man/$(basename "$dir")
done
done
fi
# Move peer dependencies to node_modules
${concatMapStrings (dep: ''
mv node_modules/${dep.pkgName} $out/lib/node_modules
'') (attrValues _peerDependencies.requiredDeps)}
# Install binaries and patch shebangs
mv node_modules/.bin $out/lib/node_modules 2>/dev/null || true
if [ -d "$out/lib/node_modules/.bin" ]; then
ln -sv $out/lib/node_modules/.bin $out/bin
${patchShebangs "$out/lib/node_modules/.bin/*"}
fi
)
runHook postInstall
'';
preFixup = ''
find $out -type f -print0 | xargs -0 sed -i 's|${src}|${src.name}|g'
'';
shellHook = ''
${preShellHook}
export PATH=${nodejs}/bin:$(pwd)/node_modules/.bin:$PATH
mkdir -p node_modules
${concatMapStrings (dep: ''
ln -sfv ${dep}/lib/node_modules/${dep.pkgName} node_modules/
'') (attrValues requiredDependencies)}
${postShellHook}
'';
# Stipping does not make a lot of sense in node packages
dontStrip = true;
meta = {
inherit platforms;
maintainers = [ stdenv.lib.maintainers.offline ];
};
passthru.pkgName = pkgName;
} // (filterAttrs (n: v: all (k: n != k) ["deps" "resolvedDeps" "optionalDependencies"]) args) // {
name = namePrefix + name;
# Run the node setup hook when this package is a build input
propagatedNativeBuildInputs = (args.propagatedNativeBuildInputs or []) ++ [ nodejs ];
nativeBuildInputs =
(args.nativeBuildInputs or []) ++ neededNatives ++
(attrValues requiredDependencies);
# Expose list of recursive dependencies upstream, up to the package that
# caused recursive dependency
recursiveDeps =
(flatten (
map (dep: remove name dep.recursiveDeps) (attrValues requiredDependencies)
)) ++
(attrNames recursiveDependencies);
});
in self
+11 -7
View File
@@ -1,4 +1,6 @@
{ stdenv, fetchurl, openssl, python, zlib, v8, utillinux, http-parser, c-ares, pkgconfig, runCommand, which }:
{ stdenv, fetchurl, openssl, python, zlib, libuv, v8, utillinux, http-parser
, pkgconfig, runCommand, which, unstableVersion ? false
}:
let
dtrace = runCommand "dtrace-native" {} ''
@@ -6,17 +8,17 @@ let
ln -sv /usr/sbin/dtrace $out/bin
'';
version = "0.10.30";
version = "0.12.0";
# !!! Should we also do shared libuv?
deps = {
inherit openssl zlib http-parser;
cares = c-ares;
inherit openssl zlib libuv;
# disabled system v8 because v8 3.14 no longer receives security fixes
# we fall back to nodejs' internal v8 copy which receives backports for now
# inherit v8
};
} // (stdenv.lib.optionalAttrs (!stdenv.isDarwin) {
inherit http-parser;
});
sharedConfigureFlags = name: [
"--shared-${name}"
@@ -30,7 +32,7 @@ in stdenv.mkDerivation {
src = fetchurl {
url = "http://nodejs.org/dist/v${version}/node-v${version}.tar.gz";
sha256 = "1li5hs8dada2lj9j82xas39kr1fs0wql9qbly5p2cpszgwqbvz1x";
sha256 = "0cifd2qhpyrbxx71a4hsagzk24qas8m5zvwcyhx69cz9yhxf404p";
};
configureFlags = concatMap sharedConfigureFlags (builtins.attrNames deps);
@@ -50,6 +52,8 @@ in stdenv.mkDerivation {
++ optionals stdenv.isDarwin [ pkgconfig dtrace ];
setupHook = ./setup-hook.sh;
passthru.interpreterName = "nodejs";
meta = {
description = "Event-driven I/O framework for the V8 JavaScript engine";
homepage = http://nodejs.org;
+64
View File
@@ -0,0 +1,64 @@
{ stdenv, fetchurl, openssl, python, zlib, v8, utillinux, http-parser, c-ares
, pkgconfig, runCommand, which
}:
let
dtrace = runCommand "dtrace-native" {} ''
mkdir -p $out/bin
ln -sv /usr/sbin/dtrace $out/bin
'';
version = "0.10.38";
# !!! Should we also do shared libuv?
deps = {
inherit openssl zlib;
# disabled system v8 because v8 3.14 no longer receives security fixes
# we fall back to nodejs' internal v8 copy which receives backports for now
# inherit v8
} // (stdenv.lib.optionalAttrs (!stdenv.isDarwin) {
inherit http-parser;
})
// ({ cares = c-ares; });
sharedConfigureFlags = name: [
"--shared-${name}"
"--shared-${name}-includes=${builtins.getAttr name deps}/include"
"--shared-${name}-libpath=${builtins.getAttr name deps}/lib"
];
inherit (stdenv.lib) concatMap optional optionals maintainers licenses platforms;
in stdenv.mkDerivation {
name = "nodejs-${version}";
src = fetchurl {
url = "http://nodejs.org/dist/v${version}/node-v${version}.tar.gz";
sha256 = "12xpa9jzry5g0j41908498qqs8v0q6miqkv6mggyzas8bvnshgai";
};
configureFlags = concatMap sharedConfigureFlags (builtins.attrNames deps);
prePatch = ''
sed -e 's|^#!/usr/bin/env python$|#!${python}/bin/python|g' -i configure
'';
patches = if stdenv.isDarwin then [ ./no-xcode.patch ] else null;
postPatch = if stdenv.isDarwin then ''
(cd tools/gyp; patch -Np1 -i ${../../python-modules/gyp/no-darwin-cflags.patch})
'' else null;
buildInputs = [ python which ]
++ (optional stdenv.isLinux utillinux)
++ optionals stdenv.isDarwin [ pkgconfig openssl dtrace ];
setupHook = ./setup-hook.sh;
meta = {
description = "Event-driven I/O framework for the V8 JavaScript engine";
homepage = http://nodejs.org;
license = licenses.mit;
maintainers = [ maintainers.goibhniu maintainers.shlevy ];
platforms = platforms.linux ++ platforms.darwin;
};
}
+3 -3
View File
@@ -14,11 +14,11 @@ let
in stdenv.mkDerivation rec {
name = "remarkjs-${version}";
version = "0.6.5";
version = "0.7.0";
src = fetchurl {
url = "https://github.com/gnab/remark/archive/v${version}.tar.gz";
sha256 = "1bh3hmhq99qqd3qg747xwjqkyppc9vf3b5nhi56556rwc02cn17p";
sha256 = "1a2il6aa0g9cnig56ykmq8lr626pbxlsllk6js41h6gcn214rw60";
};
buildInputs = with nodePackages; [
@@ -58,7 +58,7 @@ in stdenv.mkDerivation rec {
meta = {
homepage = http://remarkjs.com;
description = "A simple, in-browser, markdown-driven slideshow tool.";
description = "A simple, in-browser, markdown-driven slideshow tool";
maintainers = [ stdenv.lib.maintainers.rickynils ];
platforms = stdenv.lib.platforms.linux;
license = stdenv.lib.licenses.mit;
@@ -1,13 +1,14 @@
{ stdenv, fetchgit, lessc, closurecompiler }:
{ stdenv, fetchFromGitHub, lessc, closurecompiler }:
stdenv.mkDerivation rec {
name = "twitter-bootstrap-${version}";
version = "2.3.2";
src = fetchgit {
url = https://github.com/twitter/bootstrap.git;
rev = "refs/tags/v${version}";
sha256 = "093z4yxqhrr30vna67ksxz3bq146q2xr05hinh78pg2ls88k77la";
src = fetchFromGitHub {
owner = "twitter";
repo = "bootstrap";
rev = "v${version}";
sha256 = "0b4dsk9sqlkwwfgqqjlgi6p05qz2jssmmz4adm83f31sx70lgh4g";
};
buildInputs = [ lessc closurecompiler ];
+49
View File
@@ -0,0 +1,49 @@
{ stdenv, fetchurl, perlPackages, ncurses, lynx, makeWrapper }:
perlPackages.buildPerlPackage rec {
name = "wml-2.0.11";
src = fetchurl {
url = "http://thewml.org/distrib/${name}.tar.gz";
sha256 = "0jjxpq91x7y2mgixz7ghqp01m24qa37wl3zz515rrzv7x8cyy4cf";
};
# Getting lots of Non-ASCII character errors from pod2man.
# Inserting =encoding utf8 before the first =head occurrence.
# Wasn't able to fix mp4h.
preConfigure = ''
touch Makefile.PL
for i in wml_backend/p6_asubst/asubst.src wml_aux/freetable/freetable.src wml_docs/*.pod wml_include/des/*.src wml_include/fmt/*.src; do
sed -i '0,/^=head/{s/^=head/=encoding utf8\n=head/}' $i
done
sed -i 's/ doc / /g' wml_backend/p2_mp4h/Makefile.in
sed -i '/p2_mp4h\/doc/d' Makefile.in
'';
buildInputs = [ perlPackages.perl ncurses lynx makeWrapper ];
patches = [ ./redhat-with-thr.patch ./dynaloader.patch ./no_bitvector.patch ];
preFixup = ''
substituteInPlace $out/bin/wml \
--replace "File::PathConvert::realpath" "Cwd::realpath" \
--replace "File::PathConvert::abs2rel" "File::Spec->abs2rel" \
--replace "File::PathConvert" "File::Spec"
wrapProgram $out/bin/wml \
--set PERL5LIB ${with perlPackages; stdenv.lib.makePerlPath [
BitVector TermReadKey ImageSize
]}
'';
enableParallelBuilding = true;
meta = with stdenv.lib; {
homepage = http://thewml.org/;
description = "Off-line HTML generation toolkit for Unix";
license = licenses.gpl2;
platforms = platforms.linux;
# Not sure what broke this build, it used to work
broken = true;
};
}
+11
View File
@@ -0,0 +1,11 @@
--- a/wml_backend/p3_eperl/configure 2009-10-03 19:12:29.000000000 -0500
+++ b/wml_backend/p3_eperl/configure 2009-10-03 19:12:45.000000000 -0500
@@ -678,7 +678,7 @@
#define HAVE_PERL_DYNALOADER 1
EOF
- perl_dla=$perl_archlib/auto/DynaLoader/DynaLoader.a
+ perl_dla=$perl_archlib/CORE/libperl.so
;;
* )
rc=no
@@ -0,0 +1,10 @@
--- a/wml_common/Makefile.in 2014-12-17 00:28:25.156736048 +0100
+++ b/wml_common/Makefile.in 2014-12-17 00:28:30.501817958 +0100
@@ -45,7 +45,6 @@
have_gd=0
SUBDIRS = \
- bitvector \
filepathconvert \
gd \
getoptlong \
@@ -0,0 +1,19 @@
Description: Fix FTBFS with Perl 5.16
Patch taken from Fedora
Debian-Bug: 676263
Fedora-Bug: 839609
Author: Jitka Plesnikova
Origin: https://bugzilla.redhat.com/show_bug.cgi?id=839609
--- a/wml_backend/p3_eperl/eperl_perl5.h 2012-07-27 10:49:27.048508799 +0200
+++ b/wml_backend/p3_eperl/eperl_perl5.h 2012-07-27 10:50:16.288714291 +0200
@@ -72,9 +72,6 @@
# define PL_curstash curstash
#endif
-#ifndef WITH_THR
-# define PL_defoutgv defoutgv
-#endif
/*
Initialization of locales when building a new Perl interpreter.