Back out ./letsencrypt-dev; document "activate" more clearly

This commit is contained in:
Peter Eckersley 2015-10-23 16:12:33 -07:00
parent ad56bbbceb
commit 096b5ec32a
2 changed files with 73 additions and 10 deletions

40
bootstrap/install-deps.sh Normal file
View file

@ -0,0 +1,40 @@
#!/bin/sh -e
#
# Install OS dependencies. In the glorious future, letsencrypt-auto will
# source this...
if test "`id -u`" -ne "0" ; then
SUDO=sudo
else
SUDO=
fi
BOOTSTRAP=`dirname $0`/bootstrap
if [ ! -f $BOOTSTRAP/debian.sh ] ; then
echo "Cannot find the letsencrypt bootstrap scripts in $BOOTSTRAP"
exit 1
fi
if [ -f /etc/debian_version ] ; then
echo "Bootstrapping dependencies for Debian-based OSes..."
$SUDO $BOOTSTRAP/_deb_common.sh
elif [ -f /etc/arch-release ] ; then
echo "Bootstrapping dependencies for Archlinux..."
$SUDO $BOOTSTRAP/archlinux.sh
elif [ -f /etc/redhat-release ] ; then
echo "Bootstrapping dependencies for RedHat-based OSes..."
$SUDO $BOOTSTRAP/_rpm_common.sh
elif uname | grep -iq FreeBSD ; then
echo "Bootstrapping dependencies for FreeBSD..."
$SUDO $BOOTSTRAP/freebsd.sh
elif uname | grep -iq Darwin ; then
echo "Bootstrapping dependencies for Mac OS X..."
echo "WARNING: Mac support is very experimental at present..."
$BOOTSTRAP/mac.sh
else
echo "Sorry, I don't know how to bootstrap Let's Encrypt on your operating system!"
echo
echo "You will need to bootstrap, configure virtualenv, and run a pip install manually"
echo "Please see https://letsencrypt.readthedocs.org/en/latest/contributing.html#prerequisites"
echo "for more info"
exit 1
fi

View file

@ -10,23 +10,41 @@ Hacking
Running a local copy of the client
----------------------------------
Running the client in developer mode from your local tree is very similar to
running the released versions of the client; just replace ``letsencrypt-auto``
with ``letsencrypt-dev``:
Running the client in developer mode from your local tree is a little
different than running ``letsencrypt-auto``. To get set up, do these things
once:
.. code-block:: shell
git clone https://github.com/letsencrypt/letsencrypt
cd letsencrypt
./letsencrypt-dev
./bootstrap/install-deps.sh
./bootstrap/dev/venv.sh
Then in each shell where you're working on the client, do:
.. code-block:: shell
./venv/bin/activate
After that, your shell will be using the virtual environment, and you run the
client by typing:
.. code-block:: shell
letsencrypt
Activating a shell in this way makes it easier to run unit tests
with ``tox`` and integration tests, as described below.
Find issues to work on
----------------------
You can find the open issues in the `github issue tracker`_. If you're
starting work on something, post a comment to let others know and seek
feedback on your plan where appropriate.
You can find the open issues in the `github issue tracker`_. Comparatively
easy ones are marked `Good Volunteer Task`_. If you're starting work on
something, post a comment to let others know and seek feedback on your plan
where appropriate.
Once you've got a working branch, you can open a pull request. All changes in
your pull request must have thorough unit test coverage, pass our
@ -34,6 +52,7 @@ your pull request must have thorough unit test coverage, pass our
<coding-style>`.
.. _github issue tracker: https://github.com/letsencrypt/letsencrypt/issues
.. _Good Volunteer Task: https://github.com/letsencrypt/letsencrypt/issues?q=is%3Aopen+is%3Aissue+label%3A%22Good+Volunteer+Task%22
Testing
-------
@ -60,6 +79,8 @@ The following tools are there to help you:
Integration testing with the boulder CA
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.. _integration:
Generally it is sufficient to open a pull request and let Github and Travis run
integration tests for you.
@ -144,12 +165,14 @@ in a separate branch).
Installer
---------
Installers classes exist to actually setup the certificate in a server,
Installers plugins exist to actually setup the certificate in a server,
possibly tweak the security configuration to make it more correct and secure
(Fix some mixed content problems, turn on HSTS, redirect to HTTPS, etc).
Installer plugins tell the main client about their abilities to do the latter
via the :meth:`~.IInstaller.supported_enhancements` call. We currently only
have one Installer written (still developing), `~.ApacheConfigurator`.
via the :meth:`~.IInstaller.supported_enhancements` call. We currently
have two Installers in the tree, the `~.ApacheConfigurator`. and the
`~.NginxConfigurator`. External projects have made some progress toward
support for IIS, Icecast and Plesk.
Installers and Authenticators will oftentimes be the same class/object
(because for instance both tasks can be performed by a webserver like nginx)