Skip to content

Commit

Permalink
Merge pull request #3466 from vhf/makefile
Browse files Browse the repository at this point in the history
Makefile all the things
  • Loading branch information
SpaceFox committed Mar 31, 2016
2 parents e10297b + aeae757 commit 9573d27
Show file tree
Hide file tree
Showing 14 changed files with 220 additions and 117 deletions.
4 changes: 2 additions & 2 deletions Gulpfile.js
Original file line number Diff line number Diff line change
Expand Up @@ -196,12 +196,12 @@ gulp.task("watch", function() {
/**
* Tests
*/
gulp.task("test", ["jshint"]);
gulp.task("lint", ["jshint"]);

/**
* CI builds
*/
gulp.task("travis", ["test", "build"]);
gulp.task("travis", ["lint", "build"]);

/**
* Build all the things!
Expand Down
118 changes: 118 additions & 0 deletions Makefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,118 @@
all: help

# install
## linux
install-debian:
sudo apt-get install git python-dev python-setuptools libxml2-dev python-lxml libxslt-dev libz-dev python-sqlparse libjpeg8 libjpeg8-dev libfreetype6 libfreetype6-dev libffi-dev python-pip python-tox

install-ubuntu:
sudo apt-get install git python-dev python-setuptools libxml2-dev python-lxml libxslt1-dev libz-dev python-sqlparse libjpeg8 libjpeg8-dev libfreetype6 libfreetype6-dev libffi-dev python-pip python-tox

install-fedora:
sudo dnf install git python-devel python-setuptools libxml2-devel python-lxml libxslt-devel zlib-devel python-sqlparse libjpeg-turbo-devel libjpeg-turbo-devel freetype freetype-devel libffi-devel python-pip python-tox

install-osx:
brew install virtualenv_select py27-virtualenv py27-virtualenvwrapper py27-tox node

# dev back
## django
generate-pdf:
python manage.py generate_pdf

migrate:
python manage.py migrate

reset:
python manage.py reset

shell:
python manage.py shell

## back-utils
clean-back:
find . -name '*.pyc' -exec rm {} \;

install-back:
pip install --upgrade -r requirements.txt -r requirements-dev.txt

lint-back:
flake8 --exclude=migrations --max-line-length=120 zds

report-release-back:
python scripts/release_generator.py

run-back:
python manage.py runserver 0.0.0.0:8000

test-back:
make clean-back && \
python manage.py test

# front
## front-utils

build-front:
npm run build

clean-front:
npm run clean

install-front:
npm install

lint-front:
npm run lint

watch-front:
npm run gulp

# generic utils

clean: clean-back clean-front

doc:
cd doc && \
make html

fixtures:
python manage.py loaddata fixtures/*.yaml.

help:
@echo "Please use \`make <target>' where <target> is one of"
@echo " build-front to build frontend code"
@echo " doc to generate the html documentation"
@echo " generate-pdf to regenerate all PDFs"
@echo " help to get this help"
@echo " install-back to install backend dependencies"
@echo " install-front to install frontend dependencies"
@echo " install-debian to install debian dependencies"
@echo " install-ubuntu to install ubuntu dependencies"
@echo " install-fedora to install fedora dependencies"
@echo " install-osx to install os x dependencies"
@echo " lint-back to lint backend code (flake8)"
@echo " lint-front to lint frontend code (jshint)"
@echo " clean-back to clean *.pyc"
@echo " clean-front to clean frontend builds"
@echo " clean to clean everything"
@echo " watch-front to watch frontend code"
@echo " migrate to migrate the project"
@echo " report-release-back to generate release report"
@echo " run to run the project locally"
@echo " run-back to only run the backend"
@echo " shell to get django shell"
@echo " test to run django tests"
@echo "Open this Makefile to see what each target does."
@echo "When a target uses an env variable (eg. $$(VAR)), you can do"
@echo " make VAR=my_var cible"

install: install-back install-front

lint: lint-back lint-front

run:
make -j2 watch-front run-back

test: test-back

travis:
tox $TEST_APP # set by travis, see .travis.yml
62 changes: 31 additions & 31 deletions doc/source/api.rst

Large diffs are not rendered by default.

4 changes: 2 additions & 2 deletions doc/source/front-end.rst
Original file line number Diff line number Diff line change
Expand Up @@ -8,9 +8,9 @@ Il s'agit donc de la partie du code définissant le design et l'affichage, mais

+ Le HTML, aidé du `langage de gabarit de Django <https://docs.djangoproject.com/fr/1.8/topics/templates/>`__ ;
+ `SASS (en) <http://sass-lang.com/>`__ pour les feuilles de style ;
+ Javascript pour les interactions.
+ JavaScript pour les interactions.

`NodeJS (en) <https://nodejs.org/>`__, `NPM (en) <https://www.npmjs.com/>`__ (gestionnaire de paquet pour NodeJS) et `Gulp (en) <http://gulpjs.com/>`__ sont utilisés pour générer le code final minifié et cohérent. Le développement du *front-end* requiert donc des outils spécifiques dont l'installation `est expliquée ici <install/frontend-install.html>`__.
`Node.js (en) <https://nodejs.org/>`__, `npm (en) <https://www.npmjs.com/>`__ (gestionnaire de paquet pour Node.js) et `Gulp (en) <http://gulpjs.com/>`__ sont utilisés pour générer le code final minifié et cohérent. Le développement du *front-end* requiert donc des outils spécifiques dont l'installation `est expliquée ici <install/frontend-install.html>`__.

.. toctree::
:maxdepth: 2
Expand Down
34 changes: 22 additions & 12 deletions doc/source/install/backend-linux-install.rst
Original file line number Diff line number Diff line change
Expand Up @@ -3,13 +3,17 @@ Installation du backend sous Linux
==================================

Pour installer une version locale de ZdS sur GNU/Linux, veuillez suivre les instructions suivantes.
Si une commande ne passe pas, essayez de savoir pourquoi avant de continuer.

Certaines des commandes d'installation (débutant par ``apt-get``) sont données ici pour Debian et ses dérivés, pour lesquels il est sûr qu'elles fonctionnent. Néanmoins, si vous utilisez une distribution différente, le nom des paquets à installer devrait être fort semblable, n'hésitez dès lors pas à employer la fonction "recherche" de votre gestionnaire de paquet préféré. Les autres commandes sont génériques et indépendantes de la distribution utilisée.
- Si une commande ne passe pas, essayez de savoir pourquoi avant de continuer.
- Si vous voulez savoir ce qui se cache derrière une commande ``make``, ouvrez le fichier nommé ``Makefile`` présent à la racine du projet.
- Si une erreur s'est glissée dans la doc, ou si la doc a glissé vers l'obscolescence, ouvrez `un ticket sur notre repo github <https://github.com/zestedesavoir/zds-site/issues/new>`_
- Si malgré tout vous ne parvenez pas à installer ZdS, n'hésitez pas à ouvrir `un sujet sur le forum <https://zestedesavoir.com/forums/sujet/nouveau/?forum=2>`_

Certaines des commandes d'installation (débutant par ``apt-get``) sont données ici pour Debian et ses dérivés, pour lesquels il est sûr qu'elles fonctionnent. Si vous utilisez une distribution différente, le nom des paquets à installer devrait être fort semblable, n'hésitez dès lors pas à employer la fonction "recherche" de votre gestionnaire de paquet préféré. Les autres commandes sont génériques et indépendantes de la distribution utilisée.

**NB** : il est impératif que la locale fr_FR.UTF-8 soit installée sur votre distribution.

Assurez-vous que les dépendances suivantes soient résolues :
ZdS a besoin des dépendances suivantes, installables manuellement ou à l'aide d'un Makefile (voir plus bas) :

- git : ``apt-get install git``
- python2.7
Expand All @@ -25,24 +29,30 @@ Assurez-vous que les dépendances suivantes soient résolues :
- libffi : ``apt-get install libffi-dev``
- libjpeg62-turbo libjpeg62-turbo-dev libfreetype6 libfreetype6-dev : ``apt-get install libjpeg62-turbo libjpeg62-turbo-dev libfreetype6 libfreetype6-dev``

Ou, en une ligne :
Ou à l'aide du Makefile (``sudo`` sera appelé automatiquement, ne l'ajoutez jamais si on ne le précise pas) :

Pour Debian.

.. sourcecode:: bash

make install-debian

Pour Ubuntu.

.. sourcecode:: bash

sudo apt-get install git python-dev python-setuptools libxml2-dev python-lxml libxslt-dev libz-dev python-sqlparse libjpeg8 libjpeg8-dev libfreetype6 libfreetype6-dev libffi-dev python-pip python-tox
make install-ubuntu

Pour Fedora.

.. sourcecode:: bash

sudo dnf install git python-devel python-setuptools libxml2-devel python-lxml libxslt-devel zlib-devel python-sqlparse libjpeg-turbo-devel libjpeg-turbo-devel freetype freetype-devel libffi-devel python-pip python-tox
make install-fedora

Installation et configuration de `virtualenv`
=============================================

(cette étape n'est pas obligatoire, mais fortement conseillée ; ne tapez PAS les commandes en étant sudo)
(cette étape n'est pas obligatoire mais fortement conseillée; ne tapez PAS les commandes en root donc pas avec ``sudo``)

.. sourcecode:: bash

Expand All @@ -57,7 +67,7 @@ Installation et configuration de `virtualenv`
source zdsenv/bin/activate # PAS sudo


Pour sortir de votre environnement : ``deactivate``
Pour sortir de votre environnement, tapez ``deactivate``

Une documentation plus complète de cet outil `est disponible ici <http://docs.python-guide.org/en/latest/dev/virtualenvs/>`_.

Expand All @@ -73,9 +83,10 @@ Une fois dans votre environnement python (``source ../bin/activate`` si vous uti

.. sourcecode:: bash

pip install --upgrade -r requirements.txt -r requirements-dev.txt # Dépendances Python
python manage.py migrate # Cf. "migrate" de Django
python manage.py runserver # Démarre l'instance de ZdS

make install-back # Dépendances Python
make migrate # Cf. "migrate" de Django
make run-back # Démarre l'instance de ZdS


Aller plus loin
Expand All @@ -94,4 +105,3 @@ Ce qui revient à lancer les commmandes suivantes :
cabal install pandoc

Vous pouvez également `indiquer à Git de ne pas effectuer de commit s'il y a des erreurs de formatage dans le code <../utils/git-pre-hook.html>`__.

45 changes: 9 additions & 36 deletions doc/source/install/backend-os-x-install.rst
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ Si une commande ne passe pas, essayez de savoir pourquoi avant de continuer.
Avant de vous lancez dans l'installation de l'environnement de zds, il faut quelques pré-requis :

- Installer `XCode <http://itunes.apple.com/us/app/xcode/id497799835?ls=1&mt=12>`_ pour pouvoir exécuter des commandes (g)cc.
- Installer `MacPorts <http://www.macports.org/>`_ pour récupérer certains paquets utiles pour l'installation des dépendances de ce projet.
- Installer `Homebrew <http://brew.sh/>`_ pour récupérer certains paquets utiles pour l'installation des dépendances de ce projet.
- Installer python 2.7
- Installer pip
- Installer git
Expand All @@ -22,16 +22,12 @@ Installation de virtualenv

.. sourcecode:: bash

sudo port install virtualenv_select py27-virtualenv py27-virtualenvwrapper py27-tox
make install-osx

mkdir ~/.virtualenvs
echo "export WORKON_HOME=$HOME/.virtualenvs" >> ~/.bash_profile && export WORKON_HOME=$HOME/.virtualenvs
echo "source /usr/local/bin/virtualenvwrapper.sh" >> ~/.bash_profile && source /usr/local/bin/virtualenvwrapper.sh

.. Attention::

Il se peut que MacPorts ne vous installe pas virtualenvwrapper dans /usr/local/bin. Si ça diffère, pensez à mettre à jour la commande avec le chemin que MacPorts à utilisé.


Création de votre environnement
===============================
Expand All @@ -41,36 +37,14 @@ Création de votre environnement
mkvirtualenv zdsenv


Récupération de la librairie lxml pour python 2.7 via MacPorts
==============================================================

.. sourcecode:: bash

sudo port install py27-lxml

Récupération de cairo (svg)
===========================

Il existe 2 moyens d'installer cairo sur votre système. L'un avec Homebrew, l'autre avec MacPorts. Dans un premier temps, tentez d'installer cairo avec homebrew. Si ça ne fonctionne pas, désinstallez les dépendances Homebrew et tentez l'installation avec MacPorts.

.. sourcecode:: bash

brew install cairo --without-x11
brew install py2cairo # py3cairo quand ZdS sera en python 3

.. sourcecode:: bash

sudo port install cairo


Ajout de flags pour compiler avec gcc plutôt que clang lors de l'installation de lxml
=====================================================================================

.. sourcecode:: bash

export CFLAGS=-Qunused-arguments
export CPPFLAGS=-Qunused-arguments


Installation des outils front-end
=================================
Expand All @@ -82,16 +56,15 @@ Installation de toutes les dépendances

.. sourcecode:: bash

pip install --upgrade -r requirements.txt -r requirements-dev.txt
npm install
gulp build
make install-back
make install-front


Pour relancer votre environnement : ``source ~/.virtualenvs/zdsenv/bin/activate``.

Si vous avez installé virtualenvwrapper, vous pouvez utiliser le raccourcis ``workon zdsenv``.

Pour sortir de votre environnement : ``deactive``.
Pour sortir de votre environnement : ``deactivate``.

Lancer ZdS
==========
Expand All @@ -100,8 +73,8 @@ Une fois dans votre environnement python et toutes les dépendances installées,

.. sourcecode:: bash

python manage.py migrate
python manage.py runserver
make migrate
make run-back

Aller plus loin
===============
Expand All @@ -116,13 +89,13 @@ Pour faire fonctionner ZdS dans son ensemble vous devez installer les outils Lat

.. sourcecode:: bash

sudo port install texlive-basic
brew install texlive-basic

- Téléchargez et installez `Pandoc <https://github.com/jgm/pandoc/releases>`_

.. sourcecode:: bash

sudo port install pandoc
brew install pandoc


Vous pouvez également `indiquer à Git de ne pas effectuer de commit s'il y a des erreurs de formatage dans le code <../utils/git-pre-hook.html>`__.
Loading

0 comments on commit 9573d27

Please sign in to comment.