Add MN4 section and rename
This commit is contained in:
parent
0cc5fe92e5
commit
8613253395
127
README
127
README
@ -3,17 +3,19 @@
|
|||||||
BSC Nixpkgs: User guide
|
BSC Nixpkgs: User guide
|
||||||
|
|
||||||
|
|
||||||
1 Introduction
|
ABSTRACT
|
||||||
|
|
||||||
This repository contains a set of nix packages used in the Barcelona
|
This repository contains a set of nix packages used in the Barcelona
|
||||||
Supercomputing Center by the Programming Models group.
|
Supercomputing Center by the Programming Models group.
|
||||||
|
|
||||||
|
The current setup uses the xeon07 machine to build packages, which are
|
||||||
|
automatically uploaded to MareNostrum4, due to lack of permissions in
|
||||||
|
the latter to perform the build safely.
|
||||||
|
|
||||||
Some preliminary steps must be done manually to be able to build and
|
Some preliminary steps must be done manually to be able to build and
|
||||||
install packages (derivations in nix jargon).
|
install packages (derivations in nix jargon).
|
||||||
|
|
||||||
This guide is specific for the nix installation in the xeon07 node,
|
1. Introduction
|
||||||
accessed by the ssfhead.bsc.es login node, but it may be used in other
|
|
||||||
machines as well.
|
|
||||||
|
|
||||||
To easily connect to xeon07 in one step, setup the SSH (for version
|
To easily connect to xeon07 in one step, setup the SSH (for version
|
||||||
7.3 and upwards) configuration file in ~/.ssh/config adding these
|
7.3 and upwards) configuration file in ~/.ssh/config adding these
|
||||||
@ -30,39 +32,22 @@
|
|||||||
|
|
||||||
You should be able to connect with:
|
You should be able to connect with:
|
||||||
|
|
||||||
$ ssh xeon07
|
laptop$ ssh xeon07
|
||||||
|
|
||||||
1.1 Network access
|
1.1 Network access
|
||||||
|
|
||||||
In order to use nix would you need to be able to download the sources
|
In order to use nix you would need to be able to download the sources
|
||||||
from Internet. Usually the download requires the ports 22, 80 and 443
|
from Internet. Usually the download requires the ports 22, 80 and 443
|
||||||
to be open for outgoing traffic.
|
to be open for outgoing traffic.
|
||||||
|
|
||||||
Unfortunately, in some clusters (as is the case in xeon07) access to
|
Check that you have network access in xeon07 provided by the
|
||||||
Internet is disabled. However you can tunnel the connection by SSH to
|
environment variables "http_proxy" and "https_proxy". Try to fetch a
|
||||||
your local machine, and then reach the Internet.
|
webpage with curl, to ensure the proxy is working:
|
||||||
|
|
||||||
In order to tell nix to use the proxy connection, you will need to
|
xeon07$ curl x.com
|
||||||
export the "https_proxy" and "http_proxy" variables. A proxy
|
x
|
||||||
connection is already configured in xeon07 and you can automatically
|
|
||||||
set those variables to the correct address by loading:
|
|
||||||
|
|
||||||
xeon07$ . /scratch/nix/internet
|
1.2 SSH keys
|
||||||
|
|
||||||
Consider adding the command to your ~/.bashrc file so you don't need
|
|
||||||
to do it every time you want to use nix.
|
|
||||||
|
|
||||||
Now you should be able to reach the outside world by running:
|
|
||||||
|
|
||||||
xeon07$ curl google.com
|
|
||||||
<HTML><HEAD><meta http-equiv="content-type" content="text/html;charset=utf-8">
|
|
||||||
<TITLE>301 Moved</TITLE></HEAD><BODY>
|
|
||||||
<H1>301 Moved</H1>
|
|
||||||
The document has moved
|
|
||||||
<A HREF="http://www.google.com/">here</A>.
|
|
||||||
</BODY></HTML>
|
|
||||||
|
|
||||||
1.1 Prepare SSH keys
|
|
||||||
|
|
||||||
Package sources are usually downloaded directly from the git server,
|
Package sources are usually downloaded directly from the git server,
|
||||||
so you must be able to access all repositories without a password
|
so you must be able to access all repositories without a password
|
||||||
@ -103,41 +88,76 @@
|
|||||||
Welcome to GitLab, @rarias!
|
Welcome to GitLab, @rarias!
|
||||||
Connection to bscpm02.bsc.es closed.
|
Connection to bscpm02.bsc.es closed.
|
||||||
|
|
||||||
Verify that you can access rarias/nanos6 repository (otherwise you
|
Verify that you can access nanos6/nanos6 repository (otherwise you
|
||||||
first need to ask to be granted read access), at:
|
first need to ask to be granted read access), at:
|
||||||
|
|
||||||
https://pm.bsc.es/gitlab/rarias/nanos6
|
https://pm.bsc.es/gitlab/nanos6/nanos6
|
||||||
|
|
||||||
Finally, you should be able to download the rarias/nanos6 git
|
Finally, you should be able to download the nanos6/nanos6 git
|
||||||
repository without any password interaction by running:
|
repository without any password interaction by running:
|
||||||
|
|
||||||
xeon07$ git clone git@bscpm02.bsc.es:rarias/nanos6.git
|
xeon07$ git clone git@bscpm02.bsc.es:nanos6/nanos6.git
|
||||||
|
|
||||||
1.3 Prepare the bsc-nixpkgs repo
|
1.3 The bscpkgs repo
|
||||||
|
|
||||||
Once you have Internet and you have granted access to the PM GitLab
|
Once you have Internet and you have granted access to the PM GitLab
|
||||||
repositories you can begin down the rabbit hole of nix. First ensure
|
repositories you can begin building software with nix. First ensure
|
||||||
that the nix binaries are available from your shell in xeon07:
|
that the nix binaries are available from your shell in xeon07:
|
||||||
|
|
||||||
xeon07$ nix --version
|
xeon07$ nix --version
|
||||||
nix (Nix) 2.3.6
|
nix (Nix) 2.3.6
|
||||||
|
|
||||||
Now you are set to install packages with nix. Clone the bsc-nixpkgs
|
Now you are ready to build and install packages with nix. Clone the
|
||||||
repository:
|
bscpkgs repository:
|
||||||
|
|
||||||
xeon07$ git clone git@bscpm02.bsc.es:rarias/bsc-nixpkgs.git
|
xeon07$ git clone git@bscpm02.bsc.es:nanos6/bscpkgs.git
|
||||||
|
|
||||||
Nix looks in the current folder for a file named "default.nix" for
|
Nix looks in the current folder for a file named "default.nix" for
|
||||||
packages, so go to the repo:
|
packages, so go to the repo directory:
|
||||||
|
|
||||||
xeon07$ cd bsc-nixpkgs
|
xeon07$ cd bscpkgs
|
||||||
|
|
||||||
Now you should be able to build nanos6 from the git repository:
|
Now you should be able to build nanos6 from the git repository:
|
||||||
|
|
||||||
xeon07$ nix-build -A bsc.nanos6-git
|
xeon07$ nix-build -A bsc.nanos6
|
||||||
|
..
|
||||||
|
/nix/store/3i0qkdywm9xjv2cm1ldx9smb552sf6r1-nanos6-2.4-6f10a32
|
||||||
|
|
||||||
The output is placed in the "result" symbolic link.
|
The installation is placed in the nix store, with the "result"
|
||||||
|
symbolic link pointing to the same location:
|
||||||
|
|
||||||
|
xeon07$ readlink result
|
||||||
|
/nix/store/3i0qkdywm9xjv2cm1ldx9smb552sf6r1-nanos6-2.4-6f10a32
|
||||||
|
|
||||||
|
1.4 Configuration of mn4 (MareNostrum 4)
|
||||||
|
|
||||||
|
In order to execute the programs built at xeon07, you first need to
|
||||||
|
enter nix environment. To do so, add to the end of the file ~/.profile
|
||||||
|
in mn4 the following line:
|
||||||
|
|
||||||
|
export PATH=/gpfs/projects/bsc15/nix/bin:$PATH
|
||||||
|
|
||||||
|
Then logout and login again (our source the ~/.profile file) and you
|
||||||
|
will now have the `nix-setup` command available. This command executes
|
||||||
|
a new shell where the /nix store is available. To execute it:
|
||||||
|
|
||||||
|
mn4$ nix-setup
|
||||||
|
|
||||||
|
Now you will see a new shell, where you can access the nix store:
|
||||||
|
|
||||||
|
nix|mn4$ ls /nix
|
||||||
|
gcroots profiles store var
|
||||||
|
|
||||||
|
The last build of nanos6 can be also found in mn4 at the same
|
||||||
|
location:
|
||||||
|
|
||||||
|
/nix/store/3i0qkdywm9xjv2cm1ldx9smb552sf6r1-nanos6-2.4-6f10a32
|
||||||
|
|
||||||
|
Remember to enter the nix environment by running `nix-setup` when you
|
||||||
|
need something from the nix store.
|
||||||
|
|
||||||
|
You cannot perform any build operations from mn4: to do so use the
|
||||||
|
xeon07 machine.
|
||||||
|
|
||||||
2. Basic usage of nix
|
2. Basic usage of nix
|
||||||
|
|
||||||
@ -239,7 +259,7 @@
|
|||||||
has already built the package then the build process is not needed,
|
has already built the package then the build process is not needed,
|
||||||
and the package is used as is.
|
and the package is used as is.
|
||||||
|
|
||||||
In order to build a BSC package go to the `bsc-nixpkgs` directory, and
|
In order to build a BSC package go to the `bscpkgs` directory, and
|
||||||
run:
|
run:
|
||||||
|
|
||||||
xeon07$ nix-build -A bsc.dummy
|
xeon07$ nix-build -A bsc.dummy
|
||||||
@ -314,7 +334,7 @@
|
|||||||
|
|
||||||
https://nixos.wiki/wiki/Nix#Sandboxing
|
https://nixos.wiki/wiki/Nix#Sandboxing
|
||||||
|
|
||||||
The top level "default.nix" file of the bsc-nixpkgs serves as a index
|
The top level "default.nix" file of the bscpkgs serves as a index
|
||||||
of all BSC packages. You can see the definition for each package, for
|
of all BSC packages. You can see the definition for each package, for
|
||||||
example the nbody app:
|
example the nbody app:
|
||||||
|
|
||||||
@ -378,7 +398,7 @@
|
|||||||
libmpi.so.12 => /nix/store/jvsjvxj2a08340fpdrqbqix9z3mpp3bd-intel-mpi-2019.7.217/lib/libmpi.so.12 (0x00007f39fed34000)
|
libmpi.so.12 => /nix/store/jvsjvxj2a08340fpdrqbqix9z3mpp3bd-intel-mpi-2019.7.217/lib/libmpi.so.12 (0x00007f39fed34000)
|
||||||
|
|
||||||
Take a look at the different package description files in the
|
Take a look at the different package description files in the
|
||||||
bsc-nixpkgs repository if you want to understand more details. Also
|
bscpkgs repository if you want to understand more details. Also
|
||||||
the nix pills are a very good reference:
|
the nix pills are a very good reference:
|
||||||
|
|
||||||
https://nixos.org/nixos/nix-pills/
|
https://nixos.org/nixos/nix-pills/
|
||||||
@ -419,4 +439,21 @@
|
|||||||
failed. Source the build/env-vars file to get the same environment
|
failed. Source the build/env-vars file to get the same environment
|
||||||
variables (which include the $PATH) of the build process.
|
variables (which include the $PATH) of the build process.
|
||||||
|
|
||||||
|
3. Running programs in MN4
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
After a successful build, the result is automatically uploaded to MN4,
|
||||||
|
and is ready to be used. You could see a line stating that the upload
|
||||||
|
process was successful, and were the output was placed:
|
||||||
|
|
||||||
|
xeon07$ nix-build -A bsc.dummy
|
||||||
|
...
|
||||||
|
running post-build-hook '/etc/nix/upload.sh'...
|
||||||
|
post-build-hook: Upload complete
|
||||||
|
/nix/store/pk1pzhnciynh8k6w5fhdn70zxq06k5kh-dummy
|
||||||
|
/nix/store/pk1pzhnciynh8k6w5fhdn70zxq06k5kh-dummy
|
||||||
|
|
||||||
|
.
|
||||||
|
|
||||||
/* vim: set ts=2 sw=2 tw=72 fo=watqc expandtab spell autoindent: */
|
/* vim: set ts=2 sw=2 tw=72 fo=watqc expandtab spell autoindent: */
|
||||||
|
Loading…
Reference in New Issue
Block a user