L'utilisateur a Anaconda Python dans son répertoire personnel S'il est installé, Disponible dans le package Conda ainsi que Python Applications, bibliothèques, etc. Ce sera facile à utiliser.
Cet article explique comment créer un package Conda dans Anaconda Python Ceci est un document pour Linux.
Comme pour les packages Python, les packages distribués par PyPI (Python Package Index) sont connus. Ceux-ci peuvent être installés avec la commande pip.
** Exemple d'installation avec la commande pip **
$ pip install shpinx
Les packages PyPI sont créés avec un outil de packaging appelé setuptools. Parce que c'est une méthode de création de paquet légèrement excentrique Il y a des difficultés d'utilisation.
Dans Anaconda Python Vous pouvez ajouter / supprimer des packages avec la commande Conda, Un moyen simple de créer un package est fourni.
Le package Conda est téléchargé à partir de l'emplacement suivant:
Si juste pour construire le package Conda Vous pouvez utiliser miniconda.
** Comment installer miniconda **
$ wget https://repo.continuum.io/miniconda/Miniconda3-4.3.14-Linux-x86_64.sh
$ bash Miniconda3-4.3.14-Linux-x86_64.sh -b -p $HOME/conda/x64
$ echo export PATH=$HOME/conda/x64/bin:$PATH >> $HOME/.bash_profile
$ source $HOME/.bash_profile
Ensuite, dans l'environnement racine d'Anaconda Python Installez le package conda-build.
$ conda install -n root conda-build
Il est recommandé d'utiliser la dernière version de conda-build. Même après l'installation, vous pouvez mettre à jour comme suit.
$ conda upgrade -n root conda
$ conda upgrade -n root conda-build
Miniconda3 si vous avez Miniconda3 installé sous $ HOME / conda / x64 conda-build place les fichiers dans les répertoires suivants:
$HOME/conda/x64/conda-bld/
├── git_cache --Source téléchargée avec git
├── hg_cache --Source téléchargée avec mercurial
├── linux-64 --forfait conda(x86_64:Dépendant du système)
├── linux-ppc64le --forfait conda(ppc64le:Dépendant du système)
├── noarch --forfait conda(noarch)
├── src_cache --Source téléchargée avec curl
└── svn_cache --Source téléchargée avec subversion
Le package est construit selon la recette (plus à ce sujet plus tard), Lorsque vous installez le package, il est généralement extrait dans le répertoire suivant.
$HOME/conda/x64
├── bin
├── etc
├── lib
├── include
├── man
└── share
Si vous le mettez dans un package conda, Sous le répertoire personnel de l'utilisateur Vous pouvez ajouter / supprimer des packages avec des privilèges d'utilisateur.
Vous pouvez le trouver sur CPAN, CRAN, luarocks.org, PyPI en utilisant la commande conda skeleton. Vous pouvez convertir un package existant en package Conda.
Par exemple, pyinstrument distribué par PyPI Pour en faire un package Conda, exécutez la commande comme suit.
$ conda skeleton pypi autopep8
Using url https://pypi.python.org/packages/0a/fc/c541b2fa1b244e0484216076b95468dc011ae90016b8f37333a24a11e468/autopep8-1.3.2.tar.gz (105 KB) for autopep8.
Downloading autopep8
INFO:fetch.start:('autopep8-1.3.2', 107915)
INFO:fetch.update:16384
INFO:fetch.update:32768
INFO:fetch.update:49152
INFO:fetch.update:65536
INFO:fetch.update:81920
INFO:fetch.update:98304
INFO:fetch.update:107915
INFO:fetch.stop:None
Unpacking autopep8...
done
working in /tmp/tmptgwzsstsconda_skeleton_autopep8-1.3.2.tar.gz
The following NEW packages will be INSTALLED:
openssl: 1.0.2l-0
pip: 9.0.1-py35_1
python: 3.5.3-1
pyyaml: 3.12-py35_0 hpcs
readline: 6.2-2 local
setuptools: 27.2.0-py35_0
sqlite: 3.13.0-0
tk: 8.5.18-0
wheel: 0.29.0-py35_0
xz: 5.2.2-1
zlib: 1.2.8-3
Applying patch: '/tmp/tmptgwzsstsconda_skeleton_autopep8-1.3.2.tar.gz/pypi-distutils.patch'
patching file core.py
Hunk #1 succeeded at 167 with fuzz 2 (offset 1 line).
Writing recipe for autopep8
INFO:conda_build.config:--dirty flag not specified. Removing build folder after successful build/test.
Une fois exécuté, il sera dans le répertoire courant Un répertoire avec le nom de package sphinx est créé Les fichiers requis seront créés.
$ $ ls autopep8/
bld.bat build.sh meta.yaml
Ces fichiers sont appelés recettes de package Conda.
Si vous donnez à la commande conda build le répertoire dans lequel la recette est stockée, Vous pouvez créer un package Conda.
conda build autopep8
Cela créera un fichier de package (en fait une archive tar).
/home/iisaka/conda/x64/conda-bld/linux-64/autopep8-1.3.2-py35_0.tar.bz2
Le package Conda crée un fichier de package avec la même convention de dénomination que maintenant.
nom du paquet-version-Type de construction_Numéro de build.tar.bz2
Lorsque vous installez Miniconda3-4.3.14 La version Python par défaut est 3.6. Sur cette plateforme Si vous souhaitez créer un package Conda pour Python 2.7 Construisez comme suit:
$ conda build --python=2.7 autopep8
Le fichier créé à la suite de la construction est le suivant
/home/iisaka//conda/x64/conda-bld/linux-64/autopep8-1.3.2-py27_0.tar.bz2
Enregistrement de la chaîne
Par exemple, sur une machine Linux avec l'architecture x86_64 Avec conda installé sous / home / iisaka / py3 Lorsque vous construisez le package, il sera enregistré dans le répertoire suivant.
Enregistrons ceci en tant que canal.
$ conda config --add channels file:///home/iisaka/conda/x64/conda-bld
La recette se compose des fichiers suivants.
Métadonnées du package Nom du package, numéro de package, numéro de build, comment obtenir la source, etc. Le fichier est écrit au format YAML et le nom du fichier est meta.yaml.
#Commentaires du signe pointu à la fin de la ligne
package:
name:nom du paquet
version:Numéro de version
source:
fn:Nom de fichier à enregistrer
url:URL pour télécharger la source
#La valeur de la somme de contrôle peut être l'un ou l'autre
md5:Vérifier la valeur de somme de md5sum
sha1:Vérifier la valeur de la somme de sha1sum
sha256:Vérifier la valeur de la somme de sha256sum
# patches: #Liste des fichiers de correctifs(Optionnel)
# - fix1.patch
# - fix2.patch
build:
number: 0 #Numéro de build
requirements: #Décrivez le nom du package dépendant
build: #Paquets requis au moment de la construction
- python
- setuptools
run: #Packages requis lors de l'exécution
- python
about: #Décrivez la description du package
home: #URL du site ou du projet qui distribue la source
license: #Liste de licence GPL2, GPL3, AGPL3, BSD,MIT etc.
summary: #Aperçu
description:La description
license_family: BSD
Pour la source au lieu de l'url Vous pouvez également spécifier un chemin relatif à partir du répertoire de recette avec chemin.
Le format du nombre vierge suit PEP-440.
Si vous souhaitez modifier les exigences et le numéro de build de chaque plateforme, Spécifiez le sélecteur et décrivez comme suit.
build:
number: 2 # [osx]
number: 1 # [linux]
requirements:
build:
- ncurses
- dbus # [osx]
- jpeg # [linux]
Le sélecteur est donné au format
# [valeur]
, et la valeur peut être spécifiée comme suit.
Valeur du sélecteur | Contenu |
---|---|
x86 | Architecture X86 avec processeurs Intel et AMD(32bit/64bit)Vrai à |
x86_64 | X86 avec processeur Intel ou AMD_64 architecture(64bit)Vrai à |
linux | Vrai quand la plate-forme est Linux |
linux32 | Vrai lorsque la plate-forme est Linux et que l'architecture Python est 32 bits |
linux64 | Vrai lorsque la plate-forme est Linux et que l'architecture Python est 64 bits |
armv6l | Vrai lorsque la plate-forme est Linux et que l'architecture Python est armv6l |
armv7l | Vrai lorsque la plate-forme est Linux et que l'architecture Python est armv7l |
ppc64le | Vrai lorsque la plate-forme est Linux et que l'architecture Python est ppc64le |
osx | Vrai quand la plate-forme est OS X |
unix | La plate-forme est Unix(OS X ou Linux)Vrai à |
win | Vrai lorsque la plate-forme est Windows |
win32 | Vrai lorsque la plate-forme est Windows et que l'architecture Python est 32 bits |
win64 | Vrai lorsque la plate-forme est Windows et que l'architecture Python est 64 bits |
py XX | Notation de version à deux lettres de Python(Exemple 27)Donner CONDA_Identique à la valeur de PY) |
py3k | Vrai quand la version majeure de Python est 3 |
py2k | Vrai quand la version majeure de Python est 2 |
py27 | Python version 2.Vrai à 7 |
py34 | Python version 3.Vrai quand 4 |
py35 | Python version 3.Vrai à 5 |
py36 | Python version 3.Vrai à 6 |
np XX | Notation entière de la version NumPy(Exemple 111) CONDA_Identique à la valeur de NPY |
Qu'est-ce qu'un script de construction? Requis pour créer un package Un script avec des instructions.
#!/bin/bash
$PYTHON setup.py install
# Add more build steps here, if they are necessary.
# See
# http://docs.continuum.io/conda/build.html
# for a list of environment variables that are set during the build process.
Selon les informations de disponibilité de la source décrites dans les métadonnées Téléchargement de la commande conda build Extrayez-le dans votre répertoire de travail, puis appelez le script de construction.
Le répertoire de travail se trouve sous $ HOME / conda / x64 / conda-build, Créé avec un nom de répertoire * nom de package-époque *.
Lors de l'installation lors de la création d'un package
Sous le répertoire de travail, allez dans le répertoire commençant par _b_env_
Il sera installé dans.
/home/iisaka/conda/x64/conda-bld/lftp_1485460657191
├── _b_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_pl
│ ├── bin
│ ├── conda-meta
│ ├── include
│ ├── lib
│ ├── share
│ └── ssl
└── work
└── lftp-4.7.5
Si vous souhaitez traiter avant et après l'installation du package conda, Créez le script suivant.
Ces scripts sont exécutés une fois les variables d'environnement suivantes définies.
Variable d'environnement | Contenu |
---|---|
PREFIX | (--Spécifié par préfixe)Répertoire d'installation |
PKG_VERSION | Version du package |
PKG_BUILDNUM | Numéro de version du package |
En pré / post-traitement, rien n'est émis vers la sortie standard ou la sortie d'erreur standard, Il est stocké dans $ PREFIX / .messages.txt.
Les variables d'environnement suivantes sont définies en interne dans Conda, Vous pouvez vous y référer dans le script de construction.
Variable d'environnement | Contenu |
---|---|
ARCH | Soit 32 ou 64. La valeur par défaut est choisie en fonction de la plate-forme sur laquelle conda est exécuté. |
CMAKE_GENERATOR | Chaîne de générateur CMake pour l'environnement de construction actuel. Sur les systèmes Unix, c'est toujours"Unix Makefiles"est. |
CONDA_BUILD=1 | 1 est toujours défini. |
CPU_COUNT | Nombre de processeurs(multiprocessing.cpu_count()Valeur renvoyée par) |
SHLIB_EXT | Extension de bibliothèque partagée |
DIRTY | à la commande conda build--Si le drapeau sale est passé, il sera mis à 1. Il peut être utilisé pour ignorer conditionnellement des parties du script de construction.(Pas besoin de répéter pour gagner du temps lors du téléchargement, du déploiement, du développement de recettes>Quelque chose comme) |
HTTP_PROXY | Hérite des variables d'environnement définies dans le shell. |
HTTPS_PROXY | Hérite des variables d'environnement définies dans le shell. |
LANG | Hérite des variables d'environnement définies dans votre shell. |
MAKEFLAGS | Hérite des variables d'environnement définies dans votre shell. Pour construire avec deux processeurs-Arguments à ajouter à faire, tels que j2. |
NPY_VER | Version Numpy à construire(CONDA_Variables d'environnement NPY et--Sertie de numpy) |
PATH | Hérite des variables d'environnement définies dans votre shell.$PREFIX/bin est ajouté. |
PREFIX | (--Spécifié par préfixe)Répertoire d'installation) |
PKG_VERSION | Version du package |
PYTHON | Le chemin d'accès à l'exécutable Python dans l'environnement de construction. |
R | Chemin d'accès à l'exécutable R dans l'environnement de construction. R ne sera installé que s'il est répertorié comme une exigence de construction) |
RECIPE_DIR | Répertoire de recettes |
SP_DIR | Site Python-Chemin d'accès aux packages |
SRC_DIR | La source se déroule(Ou cloner)Chemin que le fichier source peut reconnaître(.zip, .tar, .tar.gz, .tar.bz2, .tar.xz )Sinon, ce sera le chemin vers le répertoire où les fichiers source ont été copiés. |
STDLIB_DIR | Chemin vers la bibliothèque standard Python |
PKG_CONFIG_PATH | Chemin vers le répertoire pkgconfig |
LD_RUN_PATH | <build_prefix>/lib |
Si vous spécifiez un référentiel git avec git_url
ou path
pour la source, les variables d'environnement suivantes sont également définies:
Variable d'environnement | Contenu |
---|---|
GIT_BUILD_STR | GIT_DESCRIBE_NUMBER et GIT_DESCRIBE_Souligner HASH(_)Chaînes de caractères reliées par. |
GIT_DESCRIBE_HASH | git describe --Valeur de hachage courte de validation actuelle affichée par les balises |
GIT_DESCRIBE_NUMBER | Une chaîne indiquant le nombre de validations de la balise la plus récente |
GIT_DESCRIBE_TAG | Une chaîne représentant la dernière balise du commit actuel(git describe --Sortie de balises) |
GIT_FULL_HASH | Une chaîne indiquant la valeur SHA1 complète de la HEAD actuelle |
Lorsqu'un référentiel mercuriel est spécifié pour la source, Les variables d'environnement suivantes sont également définies:
Variable d'environnement | Contenu |
---|---|
HG_BRANCH | Une chaîne indiquant la branche actuellement active |
HG_BUILD_STR | HG_NUM_ID et HG_SHORT_Identifiant de soulignement(_)Chaîne de caractères reliée par |
HG_LATEST_TAG | Une chaîne indiquant la dernière balise de la validation actuelle |
HG_LATEST_TAG_DISTANCE | Une chaîne indiquant le nombre de validations de la dernière balise |
HG_NUM_ID | Chaîne de caractères indiquant le numéro de révision |
HG_SHORT_ID | Une chaîne indiquant le hachage de validation |
Sur la plate-forme Linux, dans un environnement qui appelle conda build autre que ce qui précède, Aucune variable n'est héritée. En l'ajoutant à meta.yaml Vous pouvez ajouter des variables d'environnement à hériter.
build:
script_env:
- TMPDIR
- LD_LIBRARY_PATH # [linux]
Si la variable héritée est absente de l'environnement shell au moment de la construction Cette variable reste non allouée, Un avertissement s'affiche indiquant que la valeur n'a pas été définie.
Remarque: hériter des variables d'environnement Il peut être difficile pour d'autres de reproduire le binaire à partir de la source en utilisant la recette. Utilisez cette fonction avec prudence ou évitez-la du tout.
Variable d'environnement | Contenu |
---|---|
CONDA_PY | 27,Donnez 34 ou 35. La version de Python pour la construction du package. |
CONDA_NPY | 19,Donnez 110 ou 111. La version de numpy utilisée lors de la construction du package. |
CONDA_PREFIX | /path/to/conda/Chemin d'accès à l'environnement conda utilisé lors de la construction d'un package comme env |
Même si les fonctionnalités ont le même nom et la même version C'est un mécanisme qui vous permet d'enregistrer la différence entre les packages. Les packages spécifiés par track_features seront également installés.
La fonctionnalité n'est pas le package lui-même Ce sont les caractéristiques de l'environnement dans lequel le package est installé. Par exemple, si mkl est spécifié dans track_features, Numpy régulier supprimé et package numpy en vedette mkl installé En effet, la conda change automatiquement en fonction de la fonctionnalité spécifiée, telle que.
Variable d'environnement | Contenu |
---|---|
FEATURE_NOMKL | Donnez la fonction nomkl lors de la construction du paquet. 0 pour désactivé, 1 pour activé |
FEATURE_DEBU | Donnez des fonctionnalités de débogage lors de la création de packages. 0 pour désactivé, 1 pour activé |
FEATURE_OPT | Donnez la fonction opt lors de la construction du package. 0 pour désactivé, 1 pour activé |
Lorsque j'essaie de créer un package, j'obtiens plusieurs packages dépendants Vous devrez peut-être le construire.
Faites en sorte que le nom du répertoire de recette soit le même que le nom du package spécifié dans le métafichier.
De cette façon, lorsque vous créez le package Le même répertoire que le package dépendant Si dans le répertoire courant Il construira automatiquement ce package pour vous.
Depuis 2016, la version communautaire du compilateur PGI est disponible gratuitement, donc Faisons un package Conda.
Tout d'abord, créez le package numactl requis par le compilateur PGI.
Créez le même répertoire que le nom du package numactl Placez-y le fichier de métadonnées et le script bulld.
$ mkdir numactl
** Fichier de métadonnées **
package:
name: numactl
version: 2.0.11
source:
fn: numactl-2.0.11.tar.gz
url: https://github.com/numactl/numactl/archive/v2.0.11.tar.gz
md5: b56d2367217cde390b4d8087e00773b8
requirements:
build:
- m4
- autoconf
- automake
- libtool
- pkg-config
run:
about:
home: http://oss.sgi.com/projects/libnuma/
summary: NUMA support for Linux
license: GPL2.0
** Script de construction **
#!/bin/bash
export CFLAGS="${CFLAGS} -I${PREFIX}/include"
export CXXFLAGS="${CFLAGS}"
export CPPFLAGS="-I${PREFIX}/include"
export LDFLAGS="${LDFLAGS} -L${PREFIX}/lib"
bash autogen.sh
./configure --help
./configure \
--prefix="${PREFIX}" \
--enable-static
make -j${CPU_COUNT}
make install
Construire le package numactl
$ conda build numactl
Puisque la notation de jinja2 peut être utilisée dans le fichier méta, Généré par la valeur de la variable d'environnement au moment de la construction comme suit J'essaye de changer de paquet.
Définir les valeurs par défaut pour les packages dépendants
{% set require1 = "" %}
{% set require2 = "" %}
{% set numactl = "" %}
#Contient la valeur de la variable d'environnement HOME
{% set home = environ.get("HOME") %}
#Variable d'environnement PGI_Contient la valeur de COMPONENT
{% set component = environ.get("PGI_COMPONENT") %}
# PGI_La cible du package est divisée en fonction de la valeur donnée par COMPONENT.
{% if component == "openmpi" %}
{% set name = "pgi-openmpi" %}
{% set require1 = "- pgi-compiler" %}
{% elif component == "cuda80" %}
{% set name = "pgi-cuda80" %}
{% set require1 = "- pgi-compiler" %}
{% set require2 = "- pgi-java" %}
{% elif component == "cuda75" %}
{% set name = "pgi-cuda75" %}
{% set require1 = "- pgi-compiler" %}
{% set require2 = "- pgi-java" %}
{% elif component == "examples" %}
{% set name = "pgi-examples" %}
{% set require1 = "- pgi-compiler" %}
{% elif component == "java" %}
{% set name = "pgi-java" %}
{% else %}
{% set name = "pgi-compiler" %}
#Demander des packages numactl uniquement pour les compilateurs
{% set numactl = "- numactl" %}
{% endif %}
package:
name: {{ name }}
version: 17.4
source:
#Balle TAR téléchargée à l'avance sur le site PGI$Enregistrer dans HOME
url: file://{{ home }}/pgilinux-2017-174-x86_64.tar.gz
patch:
- fix-install.patch
build:
number: 0
binary_relocation: false
requirements:
build:
- perl
{{ numactl }}
run:
{{ numactl }}
{{ require1 }}
{{ require2 }}
about:
home: http://www.pgroup.com/products/community.htm
license: PGI Eng-User License
license_file: LICENSE.txt
summary: "A no-cost license to a recent release of the PGI Fortran, C and C++ compilers and tools for multicore CPUs and NVIDIA Tesla GPUs, including all OpenACC, OpenMP and CUDA Fortran features."
Le script de construction ressemble à ceci:
#!/bin/bash
#Définir les paramètres du script d'installation
export PGI_SILENT=true
export PGI_ACCEPT_EULA=accept
export PGI_INSTALL_DIR=${PREFIX}/pgi
export PGI_INSTALL_NVIDIA=false
export PGI_INSTALL_AMD=false
export PGI_INSTALL_JAVA=false
export PGI_INSTALL_MPI=false
export PGI_MPI_GPU_SUPPORT=false
export PGI_INSTALL_MANAGED=false
#Créer un répertoire d'installation
[ -d ${PREFIX}/pgi ] || mkdir ${PREFIX}/pgi
# post-link.sh / pre-unlink.Supprimer sh s'il se trouve dans le répertoire des recettes
[ -f ${RECIPE_DIR}/post-link.sh ] && rm -f ${RECIPE_DIR}/post-link.sh
[ -f ${RECIPE_DIR}/pre-unlink.sh ] && rm -f ${RECIPE_DIR}/pre-unlink.sh
Extraire le fichier en fonction du nom du package
case "${PKG_NAME}" in
*-cuda75)
tar -zxvf install_components/linux86-64.pgicuda.tar.gz \
-C ${PREFIX}/pgi
rm -rf ${PREFIX}/pgi/linux86-64/2017/cuda/8.0
exit 0
;;
*-cuda80)
tar -zxvf install_components/linux86-64.pgicuda8.0-libnvvp.tar.gz \
-C ${PREFIX}/pgi
tar -zxvf install_components/linux86-64.pgicuda.tar.gz \
-C ${PREFIX}/pgi
rm -rf ${PREFIX}/pgi/linux86-64/2017/cuda/7.5
exit 0
;;
*-compiler)
export PGI_INSTALL_MANAGED=true
export PGI_INSTALL_AMD=true
#Publier uniquement pour le compilateur-link.sh / pre-unlink.activer sh
[ -f ${RECIPE_DIR}/scripts/post-link.sh ] && \
cp ${RECIPE_DIR}/scripts/post-link.sh ${RECIPE_DIR}/post-link.sh
[ -f ${RECIPE_DIR}/scripts/pre-unlink.sh ] && \
cp ${RECIPE_DIR}/scripts/pre-unlink.sh ${RECIPE_DIR}/pre-unlink.sh
;;
*-openmpi)
export PGI_INSTALL_MPI=true
mkdir -vp workdir
tar -zxvf install_components/openmpi-1.10.2_2017_x86_64.tar.gz \
-C workdir
tar -zxvf workdir/linux86-64.openmpi-1.10.2.tar.gz \
-C ${PREFIX}/pgi/
tar -zxvf install_components/scalapack-2.0.2_2017_x86_64.tar.gz \
-C ${PREFIX}/pgi/
mkdir -vp ${PREFIX}/pgi/modulefiles
perl workdir/openmpi.pl \
-libdir ${PREFIX}/pgi/linux86-64/2017/mpi/openmpi-1.10.2 \
-openmpiver 1.10.2 \
-install ${PREFIX}/pgi/modulefiles/ \
-release 2017
exit 0
;;
*-java)
export PGI_INSTALL_JAVA=true
mkdir -vp ${PREFIX}/pgi/linux86-64/17.4/java
tar -zxvf install_components/common/jre-8u112-linux-x64.tar.gz \
-C ${PREFIX}/pgi/linux86-64/17.4/java
mkdir -vp ${PREFIX}/pgi/linux86-64/17.4/bin
cp install_components/linux86-64/17.4/bin/*.jar \
${PREFIX}/pgi/linux86-64/17.4/bin
cp install_components/linux86-64/17.4/bin/pgtjavarc \
${PREFIX}/pgi/linux86-64/17.4/bin
exit 0
;;
*-example)
tar -zxvf install_components/linux86-64.examples.tar.gz \
-C ${PREFIX}/pgi
exit 0
;;
esac
./install
#Supprimer les fichiers inutiles
rm -rf ${PREFIX}/pgi/linux86-64/17.4/cray
rm -rf ${PREFIX}/pgi/linux86-64/2017/cray
rm -rf ${PREFIX}/pgi/linux86-64/2017/examples/
[ "${PGI_INSTALL_MPI}" != "true" ] && \
rm -rf ${PREFIX}/pgi/linux86-64/17.4/lib/scalapack
[ "${PGI_INSTALL_MPI}" != "true" ] && {
rm -rf ${PREFIX}/pgi/linux86-5/17.4/bin/*.jar
rm -rf ${PREFIX}/pgi/linux86-5/17.4/bin/pgtjavarc
}
Avec scripts / post-link.sh
dans le répertoire des recettes
Créez scripts / pre-unlink.sh
.
scripts/post-link.sh
#!/bin/bash
mkdir -p ${PREFIX}/etc/conda/deactivate.d
mkdir -p ${PREFIX}/etc/conda/activate.d
cat <<EOF > ${PREFIX}/etc/conda/deactivate.d/${PKG_NAME}.sh
export PATH=\${PATH_pgi}
export MANPATH=\${MANPATH_pgi}
export LD_LIBRARY_PATH=\${LD_LIBRARY_PATH_pgi}
unset PATH_pgi
unset MANPATH_pgi
unset LD_LIBRARY_PATH_pgi
EOF
cat <<EOF > ${PREFIX}/etc/conda/activate.d/${PKG_NAME}.sh
export PGI=${PREFIX}/pgi/linux86-64/${PKG_VERSION}
export CC=\${PGI}/bin/pgcc
export FC=\${PGI}/bin/pgfortran
export F90=\${PGI}/bin/pgf90
export F77=\${PGI}/bin/pgf77
export CPP="\${PGI}/bin/pgcc -E"
export CXX=\${PGI}/bin/pgc++
#
export PATH_pgi=\${PATH}
export PATH=\${PGI}/bin:\${PATH}
#
export MANPATH_pgi=\${MANPATH}
export MANPATH=\${PGI}/man:\${MANPATH}
#
export LD_LIBRARY_PATH_pgi=\${LD_LIBRARY_PATH}
export LD_LIBRARY_PATH=\${PGI}/lib:\${LD_LIBRARY_PATH}
EOF
scripts/pre-unlink.sh
#!/bin/sh
rm -f ${PREFIX}/etc/conda/deactivate.d/${PKG_NAME}.sh
rm -f ${PREFIX}/etc/conda/activate.d/${PKG_NAME}.sh
Fichier de correctif spécifié dans le fichier de métadonnées
fix-install.patch
diff -Nru pgilinux-2017-174-x86_64.orig/install_components/install pgilinux-2017-174-x86_64/install_components/install
--- pgilinux-2017-174-x86_64.orig/install_components/install 2017-04-22 02:16:31.000000000 +0900
+++ pgilinux-2017-174-x86_64/install_components/install 2017-06-01 14:30:18.902018374 +0900
@@ -739,27 +739,7 @@
cd ..
rm -rf scalapack
- numa_lib=""
- if test -e /usr/lib64/libnuma.so ; then
- numa_lib=/usr/lib64/libnuma.so
- elif test -e /usr/lib64/libnuma.so.1 ; then
- numa_lib=/usr/lib64/libnuma.so.1
- elif test -e /lib64/libnuma.so ; then
- numa_lib=/lib64/libnuma.so
- elif test -e /lib64/libnuma.so.1 ; then
- numa_lib=/lib64/libnuma.so.1
- elif test -e /usr/lib/x86_64-linux-gnu/libnuma.so ; then
- numa_lib=/usr/lib/x86_64-linux-gnu/libnuma.so
- elif test -e /usr/lib/x86_64-linux-gnu/libnuma.so.1 ; then
- numa_lib=/usr/lib/x86_64-linux-gnu/libnuma.so.1
- fi
- if test "numa_lib" != "" ; then
- ln -sf $numa_lib $INSTALL_DIR/linux86-64/$REL_VERSION/mpi/openmpi-${OMPI_VERSION}/lib/libnuma.so
- else
- echo "WARNING: libnuma.so was not found on your system!"
- echo "Open MPI requires libnuma.so to function correctly."
- echo "Please install libnuma.so from your Linux distribution onto this system."
- fi
+ numa_lib="${PREFIX}/lib/libnuma.so"
if test "$ans" != "y" -a "$ans" != "yes" ; then
mpi_wrapper="$INSTALL_DIR/linux86-64/$REL_VERSION/mpi/openmpi-${OMPI_VERSION}/bin/env.sh"
Recommended Posts