Commit fdd56cfc authored by oni's avatar oni

Merge remote-tracking branch 'upstream' into experimental

parents 2e1495fa 80906c2a
This diff is collapsed.
......@@ -6,24 +6,22 @@ If you're new to Gluon and ready to get your feet wet, have a look at the
**Gluon IRC channel: `#gluon` in [hackint](http://hackint.org/)**
## Issues & Feature requests
Before opening an issue make sure to read check whether any existing issues
(open or closed) match. If you're suggesting a new feature, drop by on IRC or
our mailinglist to discuss it first.
## Use a release!
Please refrain from using the master branch for anything else but development purposes!
Use the most recent release instead. You can list all relaseses by running `git branch -a`
and switch to one by running `git checkout v2014.3;make update`.
and switch to one by running `git checkout v2015.1 && make update`.
If you're using the autoupdater, do not autoupdate nodes with anything but releases.
If you upgrade using random master commits the nodes *will break* eventually.
## Mailinglist (mostly for announcements)
I can handle administrative requests automatically. Please
do not send them to the list address! Instead, send
your message to the correct command address:
For help and a description of available commands, send a message to:
gluon-help@luebeck.freifunk.net
## Mailinglist
To subscribe to the list, send a message to:
......@@ -35,15 +33,3 @@ message. If you haven't changed addresses since subscribing,
you can also send a message to:
gluon-unsubscribe@luebeck.freifunk.net
or for the digest to:
gluon-digest-unsubscribe@luebeck.freifunk.net
If you need to get in touch with the human owner of this list,
please send a message to:
gluon-owner@luebeck.freifunk.net
Please include a FORWARDED list message with ALL HEADERS intact
to make it easier to help you.
......@@ -26,7 +26,7 @@ fi
pushd "$(dirname "$0")/.." >/dev/null
find packages -name Makefile | while read makefile; do
find ./package packages -name Makefile | while read makefile; do
dir="$(dirname "$makefile")"
pushd "$dir" >/dev/null
......@@ -36,7 +36,7 @@ find packages -name Makefile | while read makefile; do
package="$(basename "$dir")"
for file in "${SUFFIX}"/*; do
echo "${GREEN}$(basename "${file}")${RESET}" "(${BLUE}${repo}${RESET}/${dirname}/${RED}${package}${RESET}/${SUFFIX})"
echo "${GREEN}$(basename "${file}")${RESET}" "(${BLUE}${repo}${RESET}/${dirname}${dirname:+/}${RED}${package}${RESET}/${SUFFIX})"
done
popd >/dev/null
done | sort
......
......@@ -18,23 +18,23 @@ See also
EOHELP
exit 1
fi
SECRET=$1
manifest=$2
upper=$(mktemp)
lower=$(mktemp)
SECRET="$1"
manifest="$2"
upper="$(mktemp)"
lower="$(mktemp)"
awk "BEGIN { sep=0 }
/^---\$/ { sep=1; next }
{ if(sep==0) print > \"$upper\";
else print > \"$lower\"}" \
$manifest
ecdsasign $upper < $SECRET >> $lower
cat $upper > $manifest
echo --- >> $manifest
cat $lower >> $manifest
rm -f $upper $lower
"$manifest"
ecdsasign "$upper" < "$SECRET" >> "$lower"
cat "$upper" > "$manifest"
echo --- >> "$manifest"
cat "$lower" >> "$manifest"
rm -f "$upper" "$lower"
......@@ -47,16 +47,16 @@ master_doc = 'index'
# General information about the project.
project = 'Gluon'
copyright = '2014, Project Gluon'
copyright = '2015, Project Gluon'
# The version info for the project you're documenting, acts as replacement for
# |version| and |release|, also used in various other places throughout the
# built documents.
#
# The short X.Y version.
version = '2014.3'
version = '2015.1'
# The full version, including alpha/beta/rc tags.
release = '2014.3'
release = '2015.1'
# The language for content autogenerated by Sphinx. Refer to documentation
# for a list of supported languages.
......
......@@ -73,30 +73,23 @@ won't run correctly without some adjustments, so better double check that everyt
Add support to the build system
'''''''''''''''''''''''''''''''
A directory for the new target must be created under ``targets``, and it must be added
to ``targets/targets.mk``. In the new target directory, four files must be created:
to ``targets/targets.mk``. In the new target directory, three files must be created:
* config
* kernel-config
* kernel-vermagic
* profiles.mk
* vermagic
The file ``config`` can be used to add additional, target-specific options to the OpenWrt config. If such options
aren't necessary, it can be left empty. For ``profiles.mk``, see :ref:`hardware-adding-profiles`.
The file ``config`` can be used to add additional, target-specific options to the OpenWrt config. It
must at least select the correct target and subtarget. For ``profiles.mk``, see :ref:`hardware-adding-profiles`.
The files ``kernel-config`` and ``kernel-vermagic`` must have the correct content so kernel modules from the upstream repositories
can be easily installed. The OpenWrt version a Gluon release is based on is defined by the upstream package repo URL in ``include/gluon.mk``
(in the variable ``CONFIG_VERSION_REPO``); at the time this documentation was written, this was ``barrier_breaker/14.07-rc3``; whenever
the package repo is updated, all ``kernel-config`` and ``kernel-vermagic`` files must be updated as well.
The files ``vermagic`` must have the correct content so kernel modules from the upstream repositories
can be installed without dependency issues. The OpenWrt version a Gluon release is based on is defined by the upstream package repo URL in ``include/gluon.mk``
(in the variable ``CONFIG_VERSION_REPO``); at the time this documentation was written, this was ``barrier_breaker/14.07``; whenever
the package repo is updated, all ``vermagic`` files must be updated as well.
The file ``kernel-vermagic`` just contains a hash which is part of the version number of the kernel package. So in the case of ``ar71xx-generic`` on
``barrier_breaker/14.07-rc3``, we look in the directory ``https://downloads.openwrt.org/barrier_breaker/14.07-rc3/ar71xx/generic/packages/`` and
find that the kernel package is called ``kernel_3.10.49-1-94831e5bcf361d1c03e87a15e152b0e8_ar71xx.ipk``. This makes the ``kernel-vermagic`` the
string ``94831e5bcf361d1c03e87a15e152b0e8``.
For ``kernel-config``, the OpenWrt image builder must be downloaded. Again, for ``ar71xx-generic`` on
``barrier_breaker/14.07-rc3``, we download ``OpenWrt-SDK-ar71xx-for-linux-x86_64-gcc-4.8-linaro_uClibc-0.9.33.2.tar.bz2``
from ``https://downloads.openwrt.org/barrier_breaker/14.07-rc3/ar71xx/generic/``. After unpacking it, we use the file
``OpenWrt-ImageBuilder-ar71xx_generic-for-linux-x86_64/build_dir/target-mips_34kc_uClibc-0.9.33.2/linux-ar71xx_generic/linux-3.10.49/.config``
as our ``kernel-config``.
The content is a hash which is part of the version number of the kernel package. So in the case of ``ar71xx-generic`` on
``barrier_breaker``, we look for the kernel package in the directory ``https://downloads.openwrt.org/barrier_breaker/14.07/ar71xx/generic/packages/base/``.
As the kernel package is called ``kernel_3.10.49-1-0114c71ed85677c9c1e4911437af4743_ar71xx.ipk``, the correct ``vermagic`` string
is ``0114c71ed85677c9c1e4911437af4743``.
After this, is should be sufficient to call ``make GLUON_TARGET=<target>-<subtarget>`` to build the images for the new target.
Internationalization support
============================
General guidelines
------------------
* All config mode packages must be fully translatable, with complete English and German texts.
* All new expert mode packages be fully translatable. English texts are required, German texts recommended.
* Existing expert mode packages should be made translatable as soon as possible.
* The "message IDs" (which are the arguments to the ``translate`` function) should be the
English texts.
i18n support in LuCI
--------------------
Internationalization support can be found in the ``luci.i18n`` package.
Strings are translated using the ``i18n.translate`` and ``i18n.translatef`` functions
(``translate`` for static strings, ``translatef`` for printf-like formatted string).
Example from the ``gluon-config-mode-geo-location`` package::
local i18n = require "luci.i18n"
o = s:option(cbi.Flag, "_location", i18n.translate("Show node on the map"))
Adding translation templates to Gluon packages
----------------------------------------------
The i18n support is based on the standard gettext system. For each translatable package,
a translation template with extension ``.pot`` can be created using the ``i18n-scan.pl``
script from the LuCI repository::
cd package/gluon-config-mode-geo-location
mkdir i18n
cd i18n
../../../packages/luci/build/i18n-scan.pl ../files > gluon-config-mode-geo-location.pot
The entries in the template can be reordered after the generation if desirable. Lots of standard
translations like "Cancel" are already available in the LuCI base translation file (see
``packages/luci/po/templates/base.pot``) and can be removed from the template.
In addition, some additions to the Makefile must be made. Instead of OpenWrt's default package.mk,
the Gluon version ``$(GLUONDIR)/include/package.mk`` must be used. The i18n files must be installed
and PKG_CONFIG_DEPENDS must be added::
...
include $(GLUONDIR)/include/package.mk
PKG_CONFIG_DEPENDS += $(GLUON_I18N_CONFIG)
...
define Build/Compile
$(call GluonBuildI18N,gluon-config-mode-geo-location,i18n)
endef
define Package/gluon-config-mode-geo-location/install
...
$(call GluonInstallI18N,gluon-config-mode-geo-location,$(1))
endef
...
Adding translations
-------------------
A new translation file for a template can be added using the ``msginit`` command::
cd package/gluon-config-mode-geo-location/i18n
msginit -l de
This will create the file ``de.po`` in which the translations can be added.
The translation file can be updated to a new template version using the ``msgmerge`` command::
msgmerge -U de.po gluon-config-mode-geo-location.pot
After the merge, the translation file should be checked for "fuzzy matched" entries where
the original English texts have changed. All entries from the the translation file should be
translated in the ``.po`` file (or removed from it, so the original English texts are displayed
instead).
Adding support for new languages
--------------------------------
A list of all languages supported by LuCI can be found in the ``include/package.mk`` file of
the Gluon repository. Adding translations for these languages is straightforward using the ``msginit``
command.
For other languages, support must be added tu LuCI first, which constitutes completely translating
the ``base.pot``. Please contact the upstream LuCI maintainers if you'd like to do this.
......@@ -28,13 +28,12 @@ A fully automated nightly build could use the following commands:
(cd site && git pull)
make update
make clean
make -j5 GLUON_BRANCH=experimental
make -j5 GLUON_TARGET=ar71xx-generic GLUON_BRANCH=experimental
make manifest GLUON_BRANCH=experimental
contrib/sign.sh $SECRETKEY images/sysupgrade/experimental.manifest
rm -rf /where/to/put/this/experimental
cp -r images /where/to/put/this/experimental
ln -s experimental.manifest /where/to/put/this/experimental/sysupgrade/manifest
Infrastructure
......@@ -55,11 +54,7 @@ We suggest to have following directory tree accessible via http:
sysupgrade/
factory/
The last level is generated by the Gluon build process. Do not forget
to create symlinks from ``manifest`` to ``<branch>.manifest`` in the
sysupgrade directories to allow upgrades from Gluon versions before 2014.3.
The server should be available via IPv6.
The server must be available via IPv6.
Command Line
------------
......
Roles
=====
It is possible to define a set of roles you want to distinguish at backend side. One node can own one
role which it will announce via alfred inside the mesh. This will make it easier to differentiate
nodes when parsing alfred data. E.g to count only **normal** nodes and not the gateways
or servers (nodemap). A lot of things are possible.
For this the section ``roles`` in ``site.conf`` is needed::
roles = {
default = 'node',
list = {
node = 'Normal Node',
test = 'Test Node',
backbone = 'Backbone Node',
service = 'Service Node',
},
},
The value of ``default`` is the role every node will initially own. This value should be part of ``list`` as well.
If you want node owners to change the defined roles via config-mode you can add the package
``gluon-luci-node-role`` to your ``site.mk``. Then, you can select one of the defined roles from a dropdown list
where the right-handed value is the one which is displayed and the left-handed key the one which is configured into
the system.
The role is saved in ``gluon-node-info.system.role``. To change the role using command line do::
uci set gluon-node-info.system.role="$ROLE"
uci commit
Please replace ``$ROLE`` by the role you want the node to own.
......@@ -13,6 +13,7 @@ User Documentation
user/getting_started
user/site
user/x86
user/faq
Features
......@@ -27,6 +28,7 @@ Features
features/mesh-on-wan
features/announce
features/authorized-keys
features/roles
Developer Documentation
-----------------------
......@@ -39,9 +41,29 @@ Developer Documentation
dev/upgrade
dev/configmode
dev/wan
dev/i18n
Supported Devices
-----------------
Releases
--------
.. toctree::
:maxdepth: 1
releases/v2015.1
releases/v2014.4
releases/v2014.3.1
releases/v2014.3
Supported Devices & Architectures
---------------------------------
ar71xx-generic
^^^^^^^^^^^^^^
* Allnet
- ALL0315N
* Buffalo
......@@ -51,11 +73,23 @@ Supported Devices
* D-Link
- DIR-825 (B1)
- DIR-615 (C1)
* GL-Inet
- 6408A (v1)
- 6416A (v1)
* Linksys
- WRT160NL
* Netgear
- WNDR3700 (v1, v2)
- WNDR3800
- WNDRMAC (v2)
* TP-Link
- CPE210 (v1)
......@@ -64,12 +98,14 @@ Supported Devices
- CPE520 (v1)
- TL-MR3020 (v1)
- TL-MR3040 (v1, v2)
- TL-MR3220 (v1)
- TL-MR3220 (v1, v2)
- TL-MR3420 (v1, v2)
- TL-WA701N/ND (v1)
- TL-WA750RE (v1)
- TL-WA801N/ND (v2)
- TL-WA850RE (v1)
- TL-WA901N/ND (v2)
- TL-WA860RE (v1)
- TL-WA901N/ND (v2, v3)
- TL-WDR3500 (v1)
- TL-WDR3600 (v1)
- TL-WDR4300 (v1)
......@@ -78,29 +114,52 @@ Supported Devices
- TL-WR710N (v1)
- TL-WR740N (v1, v3, v4)
- TL-WR741N/ND (v1, v2, v4)
- TL-WR743N/ND (v1, v2)
- TL-WR841N/ND (v3, v5, v7, v8, v9)
- TL-WR842N/ND (v1, v2)
- TL-WR941N/ND (v2, v3, v4)
- TL-WR941N/ND (v2, v3, v4, v5)
- TL-WR2543N/ND (v1)
* Ubiquiti
- Bullet M2
- Nanostation M2
- Nanostation M XW
- Loco M XW
- Picostation M2
- Rocket M2
- UniFi AP
- UniFi AP Pro
- UniFi AP Outdoor
ar71xx-nand
^^^^^^^^^^^
Releases
--------
* Netgear
.. toctree::
:maxdepth: 1
- WNDR3700 (v4)
- WNDR4300 (v1)
releases/v2014.4
releases/v2014.3.1
releases/v2014.3
mpc85xx-generic
^^^^^^^^^^^^^^^
* TP-Link
- TL-WDR4900 (v1)
x86-generic
^^^^^^^^^^^
* x86-generic
* x86-virtualbox
* x86-vmware
See also: :doc:`user/x86`
x86-kvm_guest
^^^^^^^^^^^^^
* x86-kvm
See also: :doc:`user/x86`
License
-------
......@@ -114,4 +173,3 @@ Indices and tables
* :ref:`genindex`
* :ref:`search`
Gluon 2015.1
============
Added hardware support
~~~~~~~~~~~~~~~~~~~~~~
Gluon v2015.1 is the first release to officially support hardware
that is not handled by the `ar71xx-generic` OpenWrt target. This also
means that `ar71xx-generic` isn't the default target anymore, the ``GLUON_TARGET``
variable must be set for all runs of ``make`` and ``make clean`` now.
ar71xx-generic
^^^^^^^^^^^^^^
* Allnet
- ALL0315N
* D-Link
- DIR-615 (C1)
* GL-Inet
- 6408A (v1)
- 6416A (v1)
- WRT160NL
* Netgear
- WNDR3700 (v1, v2)
- WNDR3800
- WNDRMAC (v2)
* TP-Link