Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: NixOS/nixpkgs
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: 0b9fea1e1a94
Choose a base ref
...
head repository: NixOS/nixpkgs
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: 0f188554acff
Choose a head ref
  • 9 commits
  • 21 files changed
  • 1 contributor

Commits on Mar 26, 2018

  1. xmloscopy: init at 0.1.1

    (cherry picked from commit 72a4c54)
    grahamc committed Mar 26, 2018

    Verified

    This commit was created on GitHub.com and signed with GitHub’s verified signature. The key has expired.
    Copy the full SHA
    a1b2703 View commit details
  2. xmloscopy: 0.1.1 -> 0.1.2

    Ugh this is embarassing
    
    (cherry picked from commit 6e4a51f)
    grahamc committed Mar 26, 2018
    Copy the full SHA
    8ebd176 View commit details
  3. Move all nixpkgs doc files in to the doc directory

    This makes a makefile-driven developer workflow nicer.
    
    (cherry picked from commit 92d5336)
    
    Edited to remove the emscripten references, which were new on
    master
    grahamc committed Mar 26, 2018
    Copy the full SHA
    b38f07c View commit details
  4. Ignore generated XML and other generated files

    (cherry picked from commit 8c7be59)
    grahamc committed Mar 26, 2018
    Copy the full SHA
    663c605 View commit details
  5. docs: Build with a makefile

    (cherry picked from commit 7e25ff7)
    grahamc committed Mar 26, 2018
    Copy the full SHA
    a4c1951 View commit details
  6. Document shell.nix / xmloscopy / make for the nixpkgs docs

    (cherry picked from commit f67ea4a)
    grahamc committed Mar 26, 2018
    Copy the full SHA
    0e8f36f View commit details
  7. Validate when building outputs

    (cherry picked from commit 30dd2d3)
    grahamc committed Mar 26, 2018
    Copy the full SHA
    dad0206 View commit details
  8. Move validate to top-level so it doesn't rebuild the outputs every time

    (cherry picked from commit fce1fb7)
    grahamc committed Mar 26, 2018
    Copy the full SHA
    a758dcd View commit details
  9. Add 'make debug' to call xmloscopy

    (cherry picked from commit 67f9d24)
    grahamc committed Mar 26, 2018
    Copy the full SHA
    0f18855 View commit details
5 changes: 5 additions & 0 deletions doc/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
*.chapter.xml
*.section.xml
.version
out
manual-full.xml
74 changes: 74 additions & 0 deletions doc/Makefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,74 @@
MD_TARGETS=$(addsuffix .xml, $(basename $(wildcard ./*.md ./**/*.md)))

.PHONY: all
all: validate out/html/index.html out/epub/manual.epub

.PHONY: debug
debug:
nix-shell --run "xmloscopy --docbook5 ./manual.xml ./manual-full.xml"
.PHONY: clean
clean:
rm -f ${MD_TARGETS} .version manual-full.xml
rm -rf ./out/

.PHONY: validate
validate: manual-full.xml
jing "$$RNG" manual-full.xml

out/html/index.html: manual-full.xml style.css
mkdir -p out/html
xsltproc $$xsltFlags \
--nonet --xinclude \
--output $@ \
"$$XSL/docbook/xhtml/docbook.xsl" \
./manual-full.xml

cp ./style.css out/html/style.css

mkdir -p out/html/images/callouts
cp "$$XSL/docbook/images/callouts/"*.gif out/html/images/callouts/
chmod u+w -R out/html/images/

out/epub/manual.epub: manual-full.xml
mkdir -p out/epub/scratch
xsltproc $$xsltFlags --nonet \
--output out/epub/scratch/ \
"$$XSL/docbook/epub/docbook.xsl" \
./manual-full.xml

cp "$$XSL/docbook/images/callouts/"*.gif out/epub/scratch/OEBPS
echo "application/epub+zip" > mimetype
zip -0Xq "out/epub/manual.epub" mimetype
rm mimetype
cd "out/epub/scratch/" && zip -Xr9D "../manual.epub" *
rm -rf "out/epub/scratch/"

manual-full.xml: ${MD_TARGETS} .version *.xml
xmllint --nonet --xinclude --noxincludenode manual.xml --output manual-full.xml

.version:
nix-instantiate --eval \
-E '(import ../lib).nixpkgsVersion' > .version

%.section.xml: %.section.md
pandoc $^ -w docbook+smart \
-f markdown+smart \
| sed -e 's|<ulink url=|<link xlink:href=|' \
-e 's|</ulink>|</link>|' \
-e 's|<sect. id=|<section xml:id=|' \
-e 's|</sect[0-9]>|</section>|' \
-e '1s| id=| xml:id=|' \
-e '1s|\(<[^ ]* \)|\1xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" |' \
| cat > $@

%.chapter.xml: %.chapter.md
pandoc $^ -w docbook+smart \
--top-level-division=chapter \
-f markdown+smart \
| sed -e 's|<ulink url=|<link xlink:href=|' \
-e 's|</ulink>|</link>|' \
-e 's|<sect. id=|<section xml:id=|' \
-e 's|</sect[0-9]>|</section>|' \
-e '1s| id=| xml:id=|' \
-e '1s|\(<[^ ]* \)|\1|' \
| cat > $@
23 changes: 19 additions & 4 deletions doc/contributing.xml
Original file line number Diff line number Diff line change
@@ -6,12 +6,27 @@

<para>The DocBook sources of the Nixpkgs manual are in the <filename
xlink:href="https://github.com/NixOS/nixpkgs/tree/master/doc">doc</filename>
subdirectory of the Nixpkgs repository. If you make modifications to
the manual, it's important to build it before committing. You can do that as follows:
subdirectory of the Nixpkgs repository.</para>

<para>You can quickly check your edits with <command>make</command>:</para>

<screen>
$ cd /path/to/nixpkgs/doc
$ nix-shell
[nix-shell]$ make
</screen>

<para>If you experience problems, run <command>make debug</command>
to help understand the docbook errors.</para>

<para>After making modifications to the manual, it's important to
build it before committing. You can do that as follows:

<screen>
$ cd /path/to/nixpkgs
$ nix-build doc
$ cd /path/to/nixpkgs/doc
$ nix-shell
[nix-shell]$ make clean
[nix-shell]$ nix-build .
</screen>

If the build succeeds, the manual will be in
129 changes: 26 additions & 103 deletions doc/default.nix
Original file line number Diff line number Diff line change
@@ -7,112 +7,35 @@ in
pkgs.stdenv.mkDerivation {
name = "nixpkgs-manual";


buildInputs = with pkgs; [ pandoc libxml2 libxslt zip ];

xsltFlags = ''
--param section.autolabel 1
--param section.label.includes.component.label 1
--param html.stylesheet 'style.css'
--param xref.with.number.and.title 1
--param toc.section.depth 3
--param admon.style '''
--param callout.graphics.extension '.gif'
'';


buildCommand = let toDocbook = { useChapters ? false, inputFile, outputFile }:
let
extraHeader = lib.optionalString (!useChapters)
''xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" '';
in ''
{
pandoc '${inputFile}' -w docbook+smart ${lib.optionalString useChapters "--top-level-division=chapter"} \
-f markdown+smart \
| sed -e 's|<ulink url=|<link xlink:href=|' \
-e 's|</ulink>|</link>|' \
-e 's|<sect. id=|<section xml:id=|' \
-e 's|</sect[0-9]>|</section>|' \
-e '1s| id=| xml:id=|' \
-e '1s|\(<[^ ]* \)|\1${extraHeader}|'
} > '${outputFile}'
'';
in

''
ln -s '${sources}/'*.xml .
mkdir ./languages-frameworks
cp -s '${sources-langs}'/* ./languages-frameworks
''
+ toDocbook {
inputFile = ./introduction.md;
outputFile = "introduction.xml";
useChapters = true;
}
+ toDocbook {
inputFile = ./shell.md;
outputFile = "shell.xml";
}
+ toDocbook {
inputFile = ./languages-frameworks/python.md;
outputFile = "./languages-frameworks/python.xml";
}
+ toDocbook {
inputFile = ./languages-frameworks/haskell.md;
outputFile = "./languages-frameworks/haskell.xml";
}
+ toDocbook {
inputFile = ../pkgs/development/idris-modules/README.md;
outputFile = "languages-frameworks/idris.xml";
}
+ toDocbook {
inputFile = ../pkgs/development/node-packages/README.md;
outputFile = "languages-frameworks/node.xml";
}
+ toDocbook {
inputFile = ../pkgs/development/r-modules/README.md;
outputFile = "languages-frameworks/r.xml";
}
+ toDocbook {
inputFile = ./languages-frameworks/rust.md;
outputFile = "./languages-frameworks/rust.xml";
}
+ toDocbook {
inputFile = ./languages-frameworks/vim.md;
outputFile = "./languages-frameworks/vim.xml";
}
+ ''
buildInputs = with pkgs; [ pandoc libxml2 libxslt zip jing ];

src = ./.;

XSL = "${pkgs.docbook5_xsl}/xml/xsl";
RNG = "${pkgs.docbook5}/xml/rng/docbook/docbook.rng";
xsltFlags = lib.concatStringsSep " " [
"--param section.autolabel 1"
"--param section.label.includes.component.label 1"
"--param html.stylesheet 'style.css'"
"--param xref.with.number.and.title 1"
"--param toc.section.depth 3"
"--param admon.style ''"
"--param callout.graphics.extension '.gif'"
];

postPatch = ''
echo ${lib.nixpkgsVersion} > .version
'';

# validate against relaxng schema
xmllint --nonet --xinclude --noxincludenode manual.xml --output manual-full.xml
${pkgs.jing}/bin/jing ${pkgs.docbook5}/xml/rng/docbook/docbook.rng manual-full.xml
dst=$out/share/doc/nixpkgs
mkdir -p $dst
xsltproc $xsltFlags --nonet --xinclude \
--output $dst/manual.html \
${pkgs.docbook5_xsl}/xml/xsl/docbook/xhtml/docbook.xsl \
./manual.xml
cp ${./style.css} $dst/style.css
mkdir -p $dst/images/callouts
cp "${pkgs.docbook5_xsl}/xml/xsl/docbook/images/callouts/"*.gif $dst/images/callouts/
mkdir -p $out/nix-support
echo "doc manual $dst manual.html" >> $out/nix-support/hydra-build-products
installPhase = ''
dest="$out/share/doc/nixpkgs"
mkdir -p "$(dirname "$dest")"
mv out/html "$dest"
mv "$dest/index.html" "$dest/manual.html"
xsltproc $xsltFlags --nonet --xinclude \
--output $dst/epub/ \
${pkgs.docbook5_xsl}/xml/xsl/docbook/epub/docbook.xsl \
./manual.xml
mv out/epub/manual.epub "$dest/nixpkgs-manual.epub"
cp -r $dst/images $dst/epub/OEBPS
echo "application/epub+zip" > mimetype
manual="$dst/nixpkgs-manual.epub"
zip -0Xq "$manual" mimetype
cd $dst/epub && zip -Xr9D "$manual" *
rm -rf $dst/epub
mkdir -p $out/nix-support/
echo "doc manual $dest manual.html" >> $out/nix-support/hydra-build-products
'';
}
File renamed without changes.
File renamed without changes.
39 changes: 39 additions & 0 deletions doc/languages-frameworks/idris.section.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
Idris packages
==============

This directory contains build rules for idris packages. In addition,
it contains several functions to build and compose those packages.
Everything is exposed to the user via the `idrisPackages` attribute.

callPackage
------------

This is like the normal nixpkgs callPackage function, specialized to
idris packages.

builtins
---------

This is a list of all of the libraries that come packaged with Idris
itself.

build-idris-package
--------------------

A function to build an idris package. Its sole argument is a set like
you might pass to `stdenv.mkDerivation`, except `build-idris-package`
sets several attributes for you. See `build-idris-package.nix` for
details.

build-builtin-package
----------------------

A version of `build-idris-package` specialized to builtin libraries.
Mostly for internal use.

with-packages
-------------

Bundle idris together with a list of packages. Because idris currently
only supports a single directory in its library path, you must include
all desired libraries here, including `prelude` and `base`.
15 changes: 7 additions & 8 deletions doc/languages-frameworks/index.xml
Original file line number Diff line number Diff line change
@@ -17,19 +17,18 @@ such as Perl or Haskell. These are described in this chapter.</para>
<xi:include href="bower.xml" />
<xi:include href="coq.xml" />
<xi:include href="go.xml" />
<xi:include href="haskell.xml" />
<xi:include href="idris.xml" /> <!-- generated from ../../pkgs/development/idris-modules/README.md -->
<xi:include href="haskell.section.xml" />
<xi:include href="idris.section.xml" />
<xi:include href="java.xml" />
<xi:include href="lua.xml" />
<xi:include href="node.xml" /> <!-- generated from ../../pkgs/development/node-packages/README.md -->
<xi:include href="node.section.xml" />
<xi:include href="perl.xml" />
<xi:include href="python.xml" />
<xi:include href="python.section.xml" />
<xi:include href="qt.xml" />
<xi:include href="r.xml" /> <!-- generated from ../../pkgs/development/r-modules/README.md -->
<xi:include href="r.section.xml" />
<xi:include href="ruby.xml" />
<xi:include href="rust.xml" />
<xi:include href="rust.section.xml" />
<xi:include href="texlive.xml" />
<xi:include href="vim.xml" />

<xi:include href="vim.section.xml" />

</chapter>
51 changes: 51 additions & 0 deletions doc/languages-frameworks/node.section.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
Node.js packages
================
The `pkgs/development/node-packages` folder contains a generated collection of
[NPM packages](https://npmjs.com/) that can be installed with the Nix package
manager.

As a rule of thumb, the package set should only provide *end user* software
packages, such as command-line utilities. Libraries should only be added to the
package set if there is a non-NPM package that requires it.

When it is desired to use NPM libraries in a development project, use the
`node2nix` generator directly on the `package.json` configuration file of the
project.

The package set also provides support for multiple Node.js versions. The policy
is that a new package should be added to the collection for the latest stable LTS
release (which is currently 6.x), unless there is an explicit reason to support
a different release.

If your package uses native addons, you need to examine what kind of native
build system it uses. Here are some examples:

* `node-gyp`
* `node-gyp-builder`
* `node-pre-gyp`

After you have identified the correct system, you need to override your package
expression while adding in build system as a build input. For example, `dat`
requires `node-gyp-build`, so we override its expression in `default-v6.nix`:

```nix
dat = nodePackages.dat.override (oldAttrs: {
buildInputs = oldAttrs.buildInputs ++ [ nodePackages.node-gyp-build ];
});
```

To add a package from NPM to nixpkgs:

1. Modify `pkgs/development/node-packages/node-packages-v6.json` to add, update
or remove package entries. (Or `pkgs/development/node-packages/node-packages-v4.json`
for packages depending on Node.js 4.x)
2. Run the script: `(cd pkgs/development/node-packages && ./generate.sh)`.
3. Build your new package to test your changes:
`cd /path/to/nixpkgs && nix-build -A nodePackages.<new-or-updated-package>`.
To build against a specific Node.js version (e.g. 4.x):
`nix-build -A nodePackages_4_x.<new-or-updated-package>`
4. Add and commit all modified and generated files.

For more information about the generation process, consult the
[README.md](https://github.com/svanderburg/node2nix) file of the `node2nix`
tool.
File renamed without changes.
Loading