All the mail mirrored from lore.kernel.org
 help / color / mirror / Atom feed
* [Buildroot] [PATCH 1/9 v2] pkg-infra: allow specifying the local tarball name when calling DOWNLOAD
  2014-12-06 11:13 [Buildroot] [PATCH 0/9 v2] pkg-infra: better github handling, download enhancements (branch yem/download) Yann E. MORIN
@ 2014-12-06 11:13 ` Yann E. MORIN
  2014-12-06 11:13 ` [Buildroot] [PATCH 2/9 v2] pkg-infra: differentiate remote tarball name from local filename Yann E. MORIN
                   ` (7 subsequent siblings)
  8 siblings, 0 replies; 12+ messages in thread
From: Yann E. MORIN @ 2014-12-06 11:13 UTC (permalink / raw
  To: buildroot

Add a second optinal argument to the DOWNLOAD macro, to define the local
filename of the tarball.

If not specified, defaults to the basename of the remote URI.

This will be needed to be able to differentiate the upstream filename
from the local filename, which may differ in some cases.

Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
Cc: Maxime Hadjinlian <maxime.hadjinlian@gmail.com>
Cc: Samuel Martin <s.martin49@gmail.com>
Cc: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Cc: Peter Korsgaard <jacmet@uclibc.org>
Cc: Thomas De Schampheleire <patrickdepinguin@gmail.com>
Cc: Arnout Vandecappelle <arnout@mind.be>

---
Changes v1 -> v2:
  - retain the ability to not pass the local filename
---
 package/pkg-download.mk | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/package/pkg-download.mk b/package/pkg-download.mk
index f3409bd..5bd8eac 100644
--- a/package/pkg-download.mk
+++ b/package/pkg-download.mk
@@ -245,13 +245,15 @@ endef
 # 3) BR2_BACKUP_SITE if enabled, unless BR2_PRIMARY_SITE_ONLY is set
 #
 # Argument 1 is the source location
+# Argument 2 is the local filename, without any path component, optional;
+#            if not specified, defaults to the basename of $(1)
 #
 # E.G. use like this:
 # $(call DOWNLOAD,$(FOO_SITE))
 ################################################################################
 
 define DOWNLOAD
-	$(call DOWNLOAD_INNER,$(1),$(notdir $(1)))
+	$(call DOWNLOAD_INNER,$(1),$(if $(2),$(2),$(notdir $(1))))
 endef
 
 define DOWNLOAD_INNER
-- 
1.9.1

^ permalink raw reply related	[flat|nested] 12+ messages in thread

* [Buildroot] [PATCH 2/9 v2] pkg-infra: differentiate remote tarball name from local filename
  2014-12-06 11:13 [Buildroot] [PATCH 0/9 v2] pkg-infra: better github handling, download enhancements (branch yem/download) Yann E. MORIN
  2014-12-06 11:13 ` [Buildroot] [PATCH 1/9 v2] pkg-infra: allow specifying the local tarball name when calling DOWNLOAD Yann E. MORIN
@ 2014-12-06 11:13 ` Yann E. MORIN
  2014-12-06 13:28   ` Samuel Martin
  2014-12-06 11:13 ` [Buildroot] [PATCH 3/9 v2] docs/manual: document the new variable FOO_UPSTREAM_SOURCE Yann E. MORIN
                   ` (6 subsequent siblings)
  8 siblings, 1 reply; 12+ messages in thread
From: Yann E. MORIN @ 2014-12-06 11:13 UTC (permalink / raw
  To: buildroot

Some upstreams may use a naming scheme that does not fit well in how
Buildroot wants to handle filenames.

For example, GitHub used to have a scheme like:
    https://github.com/USER/REPO/archive/VERSION.tar.gz

which means we would have a local file named VERSION.tar.gz, when we
want to have PKG-VERSION.tar.gz

Other forges are also known to have similar schemes. Google Code, for
example, may also use similarly named files.

Introduce a new variable, FOO_UPSTREAM_SOURCE, which the package may set
in that case. If not set, it defaults to FOO_SOURCE.

Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
Cc: Maxime Hadjinlian <maxime.hadjinlian@gmail.com>
Cc: Samuel Martin <s.martin49@gmail.com>
Cc: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Cc: Peter Korsgaard <jacmet@uclibc.org>
Cc: Thomas De Schampheleire <patrickdepinguin@gmail.com>
Cc: Arnout Vandecappelle <arnout@mind.be>
Signed-off-by: Yann E. MORIN <yann.morin.1998@free.fr>

---
Note:

A suggested alternative would be to specify the local filename if it
were to be different from upstream, adding the new variable as
FOO_LOCAL_SOURCE (or whatever it would be named).

I believe this is not an appropriate solution, because I believe we
want to show that it is *upstream* doing things weirdly, not us. Using
the alternative would convey the message that we, Buildroot, are doing
something weird, which is really not the case.

Besides, I think users should only be concerned about the local
filename, and thus the value of FOO_SOURCE should really be the filename
users have to manipulate, always. Having a second, optional variable
holding the filename risks making it less straightforward in the users'
eyes.
---
 package/pkg-generic.mk | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/package/pkg-generic.mk b/package/pkg-generic.mk
index 9643a30..30bce59 100644
--- a/package/pkg-generic.mk
+++ b/package/pkg-generic.mk
@@ -84,7 +84,7 @@ ifeq ($(DL_MODE),DOWNLOAD)
 		done ; \
 	fi
 endif
-	$(if $($(PKG)_SOURCE),$(call DOWNLOAD,$($(PKG)_SITE:/=)/$($(PKG)_SOURCE)))
+	$(if $($(PKG)_SOURCE),$(call DOWNLOAD,$($(PKG)_SITE:/=)/$($(PKG)_UPSTREAM_SOURCE),$($(PKG)_SOURCE)))
 	$(foreach p,$($(PKG)_EXTRA_DOWNLOADS),$(call DOWNLOAD,$($(PKG)_SITE:/=)/$(p))$(sep))
 	$(foreach p,$($(PKG)_PATCH),\
 		$(if $(findstring ://,$(p)),\
@@ -361,6 +361,10 @@ ifndef $(2)_SOURCE
  endif
 endif
 
+ifndef $(2)_UPSTREAM_SOURCE
+  $(2)_UPSTREAM_SOURCE = $$($(2)_SOURCE)
+endif
+
 ifndef $(2)_PATCH
  ifdef $(3)_PATCH
   $(2)_PATCH = $$($(3)_PATCH)
-- 
1.9.1

^ permalink raw reply related	[flat|nested] 12+ messages in thread

* [Buildroot] [PATCH 3/9 v2] docs/manual: document the new variable FOO_UPSTREAM_SOURCE
  2014-12-06 11:13 [Buildroot] [PATCH 0/9 v2] pkg-infra: better github handling, download enhancements (branch yem/download) Yann E. MORIN
  2014-12-06 11:13 ` [Buildroot] [PATCH 1/9 v2] pkg-infra: allow specifying the local tarball name when calling DOWNLOAD Yann E. MORIN
  2014-12-06 11:13 ` [Buildroot] [PATCH 2/9 v2] pkg-infra: differentiate remote tarball name from local filename Yann E. MORIN
@ 2014-12-06 11:13 ` Yann E. MORIN
  2014-12-06 11:13 ` [Buildroot] [PATCH 4/9 v2] pkg-infra: add support for GitHub as a forge Yann E. MORIN
                   ` (5 subsequent siblings)
  8 siblings, 0 replies; 12+ messages in thread
From: Yann E. MORIN @ 2014-12-06 11:13 UTC (permalink / raw
  To: buildroot

Add the documentation for the new _UPSTREAM_SOURCE variable.
Explain that the local filename is to be used in the .hash file.

Fix a .Note section marking at the same time.

Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
Cc: Maxime Hadjinlian <maxime.hadjinlian@gmail.com>
Cc: Samuel Martin <s.martin49@gmail.com>
Cc: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Cc: Peter Korsgaard <jacmet@uclibc.org>
Cc: Thomas De Schampheleire <patrickdepinguin@gmail.com>
Cc: Arnout Vandecappelle <arnout@mind.be>
Cc: Baruch Siach <baruch@tkos.co.il>

---
Changes v1 -> v2:
  - add blurb in .hash file, that the filename is the local one, not the
    remote one  (Baruch)
---
 docs/manual/adding-packages-directory.txt |  8 +++++++-
 docs/manual/adding-packages-generic.txt   | 12 ++++++++++++
 2 files changed, 19 insertions(+), 1 deletion(-)

diff --git a/docs/manual/adding-packages-directory.txt b/docs/manual/adding-packages-directory.txt
index 0ea03f9..07f6427 100644
--- a/docs/manual/adding-packages-directory.txt
+++ b/docs/manual/adding-packages-directory.txt
@@ -390,6 +390,11 @@ hash, each line being space-separated, with these three fields:
 ** for +sha512+, 128 hexadecimal characters
 * the name of the file, without any directory component
 
+.Note
+If the remote and the local filenames differ, you must use the local
+filename, that is the filename referenced in +LIBFOO_SOURCE+, not the one
+referenced in +LIBFOO_UPSTREAM_SOURCE+.
+
 Lines starting with a +#+ sign are considered comments, and ignored. Empty
 lines are ignored.
 
@@ -403,7 +408,8 @@ best to add all those hashes in the +.hash+ file. If upstream does not
 provide any hash, then compute at least one yourself, and mention this in a
 comment line above the hashes.
 
-*Note:* the number of spaces does not matter, so one can use spaces to
+.Note
+The number of spaces does not matter, so one can use spaces to
 properly align the different fields.
 
 The example below defines a +sha1+ and a +sha256+ published by upstream for
diff --git a/docs/manual/adding-packages-generic.txt b/docs/manual/adding-packages-generic.txt
index 67a7453..69d1cfa 100644
--- a/docs/manual/adding-packages-generic.txt
+++ b/docs/manual/adding-packages-generic.txt
@@ -211,6 +211,18 @@ information is (assuming the package name is +libfoo+) :
   +libfoo-$(LIBFOO_VERSION).tar.gz+. +
   Example: +LIBFOO_SOURCE = foobar-$(LIBFOO_VERSION).tar.bz2+
 
+* +LIBFOO_UPSTREAM_SOURCE+ may contain the name of the tarball as
+  known by upstream. If +HOST_LIBFOO_UPSTREAM_SOURCE+ is not specified,
+  it defaults to +LIBFOO_UPSTREAM_SOURCE+. If none is specified, then
+  the value is assumed to be the same as +LIBFOO_SOURCE+.
+
+.Note
++LIBFOO_SOURCE+ is the filename Buildroot will save the tarball as,
+while +LIBFOO_UPSTREAM_SOURCE+ is the name by which upstream names
+that tarball. The two are usually the same, except in very rare cases
+where upstream has a strange naming convention, so you normally should
+not have to set +LIBFOO_UPSTREAM_SOURCE+.
+
 * +LIBFOO_PATCH+ may contain a space-separated list of patch file
   names, that will be downloaded from the same location as the tarball
   indicated in +LIBFOO_SOURCE+, and then applied to the package source
-- 
1.9.1

^ permalink raw reply related	[flat|nested] 12+ messages in thread

* [Buildroot] [PATCH 0/9 v2] pkg-infra: better github handling, download enhancements (branch yem/download)
@ 2014-12-06 11:13 Yann E. MORIN
  2014-12-06 11:13 ` [Buildroot] [PATCH 1/9 v2] pkg-infra: allow specifying the local tarball name when calling DOWNLOAD Yann E. MORIN
                   ` (8 more replies)
  0 siblings, 9 replies; 12+ messages in thread
From: Yann E. MORIN @ 2014-12-06 11:13 UTC (permalink / raw
  To: buildroot

Hello All!

This series introduces a few download enhancements, especially related
to how we handle GitHub and other forces.

First, it introduces a way to differentiate the upstream tarball
name from the local tarball name. Please read the post-commit note
about the reason the choice was made that way. It is worth discusing.

Second, it introduces a new concept: a forge, for which we automatically
set the correct values for _SITE, _SOURCE and _UPSTREAM_SOURCE. This
is supposed to serve the same role as our github helper, except it will
allow setting more than one variable, and is extensible to other forges.
Two forges are added: GitHub and Gitorious.

Third, it converts all GitHub-hosted packages from using the github
helper, over to using the new github forge, and all Gitorious-hosted
packages to use the new gitorious forge. This has the side benefit of
using an http:// transport scheme for gitorious packages, when we were
in-so-far using git:// which does pass through restrictive corporate
firewalls/proxies.

Finally, the github helper is removed, as it is no longer used.

To be noted: only two forges were added so far, but others, like
Google Code (32 packages) or Sourceforge (21 packages), can be added
in the future.


Changes v1 -> v2:
  - fix case when _UPSTREAM_SOURCE is not specified (for patches or
    extra downloads, for example)  (Arnout)
  - hashes should reference the loc al filename  (Baruch)
  - add the 'forge' concept, and convert packages accordingly


Regards,
Yann E. MORIN.


The following changes since commit c5f0e93d2cc6107cce249e1f11158aeccb4a3449:

  rp-pppoe: install default conf file (2014-12-03 23:26:21 +0100)

are available in the git repository at:

  git://git.busybox.net/~ymorin/git/buildroot yem/download

for you to fetch changes up to cfd6a26419331267f1351dc1e32c0ff36f65612a:

  pkg-infra: remove the legacy github helper (2014-12-06 11:40:38 +0100)

----------------------------------------------------------------
Yann E. MORIN (9):
      pkg-infra: allow specifying the local tarball name when calling DOWNLOAD
      pkg-infra: differentiate remote tarball name from local filename
      docs/manual: document the new variable FOO_UPSTREAM_SOURCE
      pkg-infra: add support for GitHub as a forge
      pkg-infra: add support for Gitorious as a forge
      docs/manual: document the new forges we support: github and gitorious
      packages: switch to using the github forge
      packages: switch to using the gitorious forge
      pkg-infra: remove the legacy github helper

 boot/at91bootstrap3/at91bootstrap3.mk              |  3 +-
 boot/xloader/xloader.mk                            |  3 +-
 docs/manual/adding-packages-directory.txt          |  8 +++-
 docs/manual/adding-packages-generic.txt            | 27 ++++++++++--
 docs/manual/adding-packages-tips.txt               | 50 +++++++++++++++++-----
 package/a10disp/a10disp.mk                         |  3 +-
 package/am335x-pru-package/am335x-pru-package.mk   |  3 +-
 package/apitrace/apitrace.mk                       |  3 +-
 package/avrdude/avrdude.mk                         |  3 +-
 package/bandwidthd/bandwidthd.mk                   |  3 +-
 package/bcache-tools/bcache-tools.mk               |  3 +-
 package/binutils/binutils.mk                       |  3 +-
 package/can-utils/can-utils.mk                     |  3 +-
 package/civetweb/civetweb.mk                       |  3 +-
 package/cppzmq/cppzmq.mk                           |  3 +-
 package/cpuload/cpuload.mk                         |  3 +-
 package/czmq/czmq.mk                               |  3 +-
 package/e2tools/e2tools.mk                         |  3 +-
 package/faifa/faifa.mk                             |  3 +-
 package/fb-test-app/fb-test-app.mk                 |  3 +-
 package/filemq/filemq.mk                           |  3 +-
 package/flann/flann.mk                             |  3 +-
 package/freerdp/freerdp.mk                         |  3 +-
 package/gcc/gcc.mk                                 |  3 +-
 package/gdb/gdb.mk                                 |  6 ++-
 package/glm/glm.mk                                 |  3 +-
 package/inotify-tools/inotify-tools.mk             |  3 +-
 package/input-event-daemon/input-event-daemon.mk   |  3 +-
 package/jack2/jack2.mk                             |  3 +-
 package/jquery-keyboard/jquery-keyboard.mk         |  3 +-
 package/jsmin/jsmin.mk                             |  3 +-
 package/json-javascript/json-javascript.mk         |  3 +-
 package/kexec-lite/kexec-lite.mk                   |  3 +-
 package/ktap/ktap.mk                               |  3 +-
 package/lcdapi/lcdapi.mk                           |  3 +-
 package/libatomic_ops/libatomic_ops.mk             |  3 +-
 package/libcec/libcec.mk                           |  3 +-
 package/libcofi/libcofi.mk                         |  3 +-
 package/libconfuse/libconfuse.mk                   |  3 +-
 package/libenca/libenca.mk                         |  3 +-
 package/libevent/libevent.mk                       |  3 +-
 package/libiqrf/libiqrf.mk                         |  3 +-
 package/liblog4c-localtime/liblog4c-localtime.mk   |  3 +-
 package/libndp/libndp.mk                           |  3 +-
 package/libnfs/libnfs.mk                           |  3 +-
 package/librtlsdr/librtlsdr.mk                     |  3 +-
 package/libsha1/libsha1.mk                         |  3 +-
 package/libshairplay/libshairplay.mk               |  3 +-
 package/libsoc/libsoc.mk                           |  3 +-
 package/libstrophe/libstrophe.mk                   |  3 +-
 package/libtpl/libtpl.mk                           |  3 +-
 package/libuv/libuv.mk                             |  3 +-
 package/linenoise/linenoise.mk                     |  3 +-
 package/ljsyscall/ljsyscall.mk                     |  3 +-
 package/lpc3250loader/lpc3250loader.mk             |  3 +-
 package/lua-ev/lua-ev.mk                           |  3 +-
 package/lua-msgpack-native/lua-msgpack-native.mk   |  3 +-
 package/luaexpatutils/luaexpatutils.mk             |  3 +-
 package/luaposix/luaposix.mk                       |  3 +-
 package/lz4/lz4.mk                                 |  3 +-
 package/mongoose/mongoose.mk                       |  3 +-
 package/mrouted/mrouted.mk                         |  3 +-
 package/mtdev2tuio/mtdev2tuio.mk                   |  3 +-
 package/ne10/ne10.mk                               |  3 +-
 package/neardal/neardal.mk                         |  3 +-
 package/omap-u-boot-utils/omap-u-boot-utils.mk     |  3 +-
 package/on2-8170-modules/on2-8170-modules.mk       |  3 +-
 package/opencv/opencv.mk                           |  3 +-
 package/pifmrds/pifmrds.mk                         |  3 +-
 package/pkg-download.mk                            |  7 ++-
 package/pkg-generic.mk                             | 16 ++++++-
 package/pps-tools/pps-tools.mk                     |  3 +-
 package/protobuf-c/protobuf-c.mk                   |  3 +-
 .../python-configshell-fb/python-configshell-fb.mk |  3 +-
 package/python-ipy/python-ipy.mk                   |  3 +-
 package/python-itsdangerous/python-itsdangerous.mk |  3 +-
 package/python-libconfig/python-libconfig.mk       |  3 +-
 package/python-pyusb/python-pyusb.mk               |  3 +-
 package/python-rtslib-fb/python-rtslib-fb.mk       |  3 +-
 package/python-webpy/python-webpy.mk               |  3 +-
 package/qdecoder/qdecoder.mk                       |  3 +-
 package/qhull/qhull.mk                             |  3 +-
 package/qjson/qjson.mk                             |  3 +-
 package/qlibc/qlibc.mk                             |  3 +-
 package/qtuio/qtuio.mk                             |  3 +-
 package/rapidjson/rapidjson.mk                     |  3 +-
 package/rpi-firmware/rpi-firmware.mk               |  3 +-
 package/rpi-userland/rpi-userland.mk               |  3 +-
 package/sconeserver/sconeserver.mk                 |  3 +-
 package/shairport-sync/shairport-sync.mk           |  3 +-
 package/smack/smack.mk                             |  3 +-
 package/snappy/snappy.mk                           |  3 +-
 .../snowball-hdmiservice/snowball-hdmiservice.mk   |  3 +-
 package/socketcand/socketcand.mk                   |  3 +-
 package/sqlcipher/sqlcipher.mk                     |  3 +-
 package/sunxi-boards/sunxi-boards.mk               |  3 +-
 package/sunxi-cedarx/sunxi-cedarx.mk               |  3 +-
 package/sunxi-mali-prop/sunxi-mali-prop.mk         |  3 +-
 package/sunxi-mali/sunxi-mali.mk                   |  3 +-
 package/sunxi-tools/sunxi-tools.mk                 |  3 +-
 package/targetcli-fb/targetcli-fb.mk               |  3 +-
 package/ti-uim/ti-uim.mk                           |  3 +-
 package/ti-utils/ti-utils.mk                       |  3 +-
 package/tinyalsa/tinyalsa.mk                       |  3 +-
 package/tinymembench/tinymembench.mk               |  3 +-
 package/trinity/trinity.mk                         |  3 +-
 package/tslib/tslib.mk                             |  3 +-
 package/tvheadend/tvheadend.mk                     |  3 +-
 package/tzdump/tzdump.mk                           |  3 +-
 package/uclibc/uclibc.mk                           |  3 +-
 package/xbmc-addon-xvdr/xbmc-addon-xvdr.mk         |  3 +-
 package/xbmc-pvr-addons/xbmc-pvr-addons.mk         |  3 +-
 package/xinetd/xinetd.mk                           |  3 +-
 package/xl2tp/xl2tp.mk                             |  3 +-
 package/yajl/yajl.mk                               |  3 +-
 package/ympd/ympd.mk                               |  3 +-
 package/zlog/zlog.mk                               |  3 +-
 package/zmqpp/zmqpp.mk                             |  3 +-
 package/znc/znc.mk                                 |  3 +-
 package/zyre/zyre.mk                               |  3 +-
 120 files changed, 320 insertions(+), 136 deletions(-)

-- 
.-----------------.--------------------.------------------.--------------------.
|  Yann E. MORIN  | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
| +33 662 376 056 | Software  Designer | \ / CAMPAIGN     |  ___               |
| +33 223 225 172 `------------.-------:  X  AGAINST      |  \e/  There is no  |
| http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL    |   v   conspiracy.  |
'------------------------------^-------^------------------^--------------------'

^ permalink raw reply	[flat|nested] 12+ messages in thread

* [Buildroot] [PATCH 4/9 v2] pkg-infra: add support for GitHub as a forge
  2014-12-06 11:13 [Buildroot] [PATCH 0/9 v2] pkg-infra: better github handling, download enhancements (branch yem/download) Yann E. MORIN
                   ` (2 preceding siblings ...)
  2014-12-06 11:13 ` [Buildroot] [PATCH 3/9 v2] docs/manual: document the new variable FOO_UPSTREAM_SOURCE Yann E. MORIN
@ 2014-12-06 11:13 ` Yann E. MORIN
  2014-12-06 11:13 ` [Buildroot] [PATCH 5/9 v2] pkg-infra: add support for Gitorious " Yann E. MORIN
                   ` (4 subsequent siblings)
  8 siblings, 0 replies; 12+ messages in thread
From: Yann E. MORIN @ 2014-12-06 11:13 UTC (permalink / raw
  To: buildroot

Our github helper currently uses a download scheme that is not
guaranteed to be stable over the long run. So, we have a github helper
that generates the correct _SITE value, so we can change it in a single
place, rather than touch all the packages.

This URL scheme is not stable, but GitHub publishes an API for dealing
with the content hosted on GitHub:
    https://developer.github.com/v3/

This API defines a stable end-point for downloading any abitrary commit
from a repository:
    https://developer.github.com/v3/repos/contents/#get-archive-link

    GET /repos/:owner/:repo/:archive_format/:ref

Switching to using the API implies we can no longer use the github
helper, because all it can do is only return an URL. But the way the
GitHub API works means we have to set both FOO_UPSTREAM_SOURCE and
FOO_SITE for a package, because the remote name is only $(FOO_VERSION).

The only way to continue using our github helper would be to make it
generate Makefile code to set two variables. This is not nice, as this
would be the only thing in the package infra to rely on generating
Makefile code.

Also, the API is rate-limited, and allows only 60 un-authenticated
requests per hour. This is not acceptable for Buildroot, as a user may
well select more than 60 packages coming from GitHub (we currently have
111 GitHub-hosted packages).

Also, some other forges (like Gitorious, Google code...) may need a
download scheme that is closer to the GitHub API scheme (Gitorious) than
what we currently have with _SOURCE and _SITE, and thus require the use
of _UPSTREAM_SOURCE as well.

Introduce a "forge" as a new concept for specifying the upstream
location, whereby the package can tell the type of forge and the
forge-related path of the repository. This is in turned interpreted by
the package infrastructure, which uses it to internally set the
appropriate variables to the appropriate values:

    FOO_FORGE = forge-name
    FOO_FORGE_PATH = user/repository

This patch introduces GitHub as the first such "forge" we support.
Packages will be converted over in a subsequent patch.

Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
Cc: Maxime Hadjinlian <maxime.hadjinlian@gmail.com>
Cc: Samuel Martin <s.martin49@gmail.com>
Cc: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Cc: Peter Korsgaard <jacmet@uclibc.org>
Cc: Thomas De Schampheleire <patrickdepinguin@gmail.com>
Cc: Arnout Vandecappelle <arnout@mind.be>
---
 package/pkg-generic.mk | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/package/pkg-generic.mk b/package/pkg-generic.mk
index 30bce59..dd67b51 100644
--- a/package/pkg-generic.mk
+++ b/package/pkg-generic.mk
@@ -353,6 +353,12 @@ ifneq ($$($(2)_OVERRIDE_SRCDIR),)
 $(2)_VERSION = custom
 endif
 
+ifndef $(2)_SITE
+ifeq ($$($(2)_FORGE),github)
+$(2)_SITE = https://github.com/$$($(2)_FORGE_PATH)/archive/$$($(2)_VERSION)
+endif # github
+endif
+
 ifndef $(2)_SOURCE
  ifdef $(3)_SOURCE
   $(2)_SOURCE = $$($(3)_SOURCE)
-- 
1.9.1

^ permalink raw reply related	[flat|nested] 12+ messages in thread

* [Buildroot] [PATCH 5/9 v2] pkg-infra: add support for Gitorious as a forge
  2014-12-06 11:13 [Buildroot] [PATCH 0/9 v2] pkg-infra: better github handling, download enhancements (branch yem/download) Yann E. MORIN
                   ` (3 preceding siblings ...)
  2014-12-06 11:13 ` [Buildroot] [PATCH 4/9 v2] pkg-infra: add support for GitHub as a forge Yann E. MORIN
@ 2014-12-06 11:13 ` Yann E. MORIN
  2014-12-06 11:13 ` [Buildroot] [PATCH 6/9 v2] docs/manual: document the new forges we support: github and gitorious Yann E. MORIN
                   ` (3 subsequent siblings)
  8 siblings, 0 replies; 12+ messages in thread
From: Yann E. MORIN @ 2014-12-06 11:13 UTC (permalink / raw
  To: buildroot

Similar to what we did for GitHub, add Gitorious as a known forge.

We need to specify the _UPSTREAM tarball name, because Gitorious uses a
custom naming scheme, whereby the basename of the archive only contains
the version string (plus the extension), but not the package name.

Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
Cc: Maxime Hadjinlian <maxime.hadjinlian@gmail.com>
Cc: Samuel Martin <s.martin49@gmail.com>
Cc: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Cc: Peter Korsgaard <jacmet@uclibc.org>
Cc: Thomas De Schampheleire <patrickdepinguin@gmail.com>
Cc: Arnout Vandecappelle <arnout@mind.be>
---
 package/pkg-generic.mk | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/package/pkg-generic.mk b/package/pkg-generic.mk
index dd67b51..415574e 100644
--- a/package/pkg-generic.mk
+++ b/package/pkg-generic.mk
@@ -357,6 +357,10 @@ ifndef $(2)_SITE
 ifeq ($$($(2)_FORGE),github)
 $(2)_SITE = https://github.com/$$($(2)_FORGE_PATH)/archive/$$($(2)_VERSION)
 endif # github
+ifeq ($$($(2)_FORGE),gitorious)
+$(2)_SITE = https://gitorious.org/$$($(2)_FORGE_PATH)/archive/
+$(2)_UPSTREAM_SOURCE = $$($(2)_VERSION).tar.gz
+endif # github
 endif
 
 ifndef $(2)_SOURCE
-- 
1.9.1

^ permalink raw reply related	[flat|nested] 12+ messages in thread

* [Buildroot] [PATCH 6/9 v2] docs/manual: document the new forges we support: github and gitorious
  2014-12-06 11:13 [Buildroot] [PATCH 0/9 v2] pkg-infra: better github handling, download enhancements (branch yem/download) Yann E. MORIN
                   ` (4 preceding siblings ...)
  2014-12-06 11:13 ` [Buildroot] [PATCH 5/9 v2] pkg-infra: add support for Gitorious " Yann E. MORIN
@ 2014-12-06 11:13 ` Yann E. MORIN
  2014-12-06 11:13 ` [Buildroot] [PATCH 7/9 v2] packages: switch to using the github forge Yann E. MORIN
                   ` (2 subsequent siblings)
  8 siblings, 0 replies; 12+ messages in thread
From: Yann E. MORIN @ 2014-12-06 11:13 UTC (permalink / raw
  To: buildroot

Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
---
 docs/manual/adding-packages-generic.txt | 15 ++++++++--
 docs/manual/adding-packages-tips.txt    | 50 +++++++++++++++++++++++++--------
 2 files changed, 51 insertions(+), 14 deletions(-)

diff --git a/docs/manual/adding-packages-generic.txt b/docs/manual/adding-packages-generic.txt
index 69d1cfa..260144b 100644
--- a/docs/manual/adding-packages-generic.txt
+++ b/docs/manual/adding-packages-generic.txt
@@ -239,9 +239,7 @@ not have to set +LIBFOO_UPSTREAM_SOURCE+.
   URL or a local filesystem path. HTTP, FTP and SCP are supported URL
   types for retrieving package tarballs. Git, Subversion, Mercurial,
   and Bazaar are supported URL types for retrieving packages directly
-  from source code management systems. There is a helper function to make
-  it easier to download source tarballs from GitHub (refer to
-  xref:github-download-url[] for details). A filesystem path may be used
+  from source code management systems. A filesystem path may be used
   to specify either a tarball or a directory containing the package
   source code. See +LIBFOO_SITE_METHOD+ below for more details on how
   retrieval works. +
@@ -258,6 +256,17 @@ not have to set +LIBFOO_UPSTREAM_SOURCE+.
     +LIBFOO_SITE=/opt/software/libfoo.tar.gz+ +
     +LIBFOO_SITE=$(TOPDIR)/../src/libfoo/+
 
+* +LIBFOO_FORGE+ and +LIBFOO_FORGE_PATH+ may be used instead of
+  +LIBFOO_SITE+, when +libfoo+ is hosted to a well known forge:
+  GitHub of Gitorious. In such a case, +LIBFOO_VERSION+,
+  +LIBFOO_UPSTREAM_SOURCE+ and +LIBFOO_SITE+ must be set to special
+  values. This is conveniently done with +LIBFOO_FORGE+.
+  +LIBFOO_FORGE+ should be set to the lowercase name of the forge,
+  while +LIBFOO_FORGE_PATH+ should be set to the +/+-separated tuple
+  +USER/REPOS+. If +LIBFOO_FORGE+ is set, then +LIBFOO_SITE+ must
+  *not* be used. See xref:forge-download[] for the known forges, and
+  special cases for when to use it or not.
+
 * +LIBFOO_EXTRA_DOWNLOADS+ lists a number of additional files that
   Buildroot should download from +LIBFOO_SITE+ in addition to the main
   +LIBFOO_SOURCE+ (which usually is a tarball). Buildroot will not do
diff --git a/docs/manual/adding-packages-tips.txt b/docs/manual/adding-packages-tips.txt
index 6f5e785..71a3330 100644
--- a/docs/manual/adding-packages-tips.txt
+++ b/docs/manual/adding-packages-tips.txt
@@ -33,40 +33,68 @@ using the following rules:
   +FOO_BAR_BOO_VERSION+).
 
 
-[[github-download-url]]
-==== How to add a package from GitHub
+[[forge-download]]
+==== How to add a package from a forge
+
+===== GitHub
 
 Packages on GitHub often don't have a download area with release tarballs.
 However, it is possible to download tarballs directly from the repository
 on GitHub. As GitHub is known to have changed download mechanisms in the
-past, the 'github' helper function should be used as shown below.
+past, the 'github' forge should be used as shown below.
 
 ------------------------
-FOO_VERSION = v1.0 # tag or full commit ID
-FOO_SITE = $(call github,<user>,<package>,$(FOO_VERSION))
+FOO_VERSION = v1.0
+FOO_FORGE = github
+FOO_FORGE_PATH = user/foo
 ------------------------
 
-.Notes
-- The FOO_VERSION can either be a tag or a commit ID.
+.Note
+- The +FOO_VERSION+ can be either a tag or a commit ID.
 - The tarball name generated by github matches the default one from
   Buildroot (e.g.: +foo-f6fb6654af62045239caed5950bc6c7971965e60.tar.gz+),
   so it is not necessary to specify it in the +.mk+ file.
 - When using a commit ID as version, you should use the full 40 hex characters.
+- 'user' is the name of the GitHub user to whom the 'foo' repository belongs.
 
 If the package you wish to add does have a release section on GitHub, the
 maintainer may have uploaded a release tarball, or the release may just point
 to the automatically generated tarball from the git tag. If there is a
 release tarball uploaded by the maintainer, we prefer to use that since it
 may be slightly different (e.g. it contains a configure script so we don't
-need to do AUTORECONF).
+need to do AUTORECONF), and thus you should not use +FOO_FORGE+ in that case.
 
 You can see on the release page if it's an uploaded tarball or a git tag:
 
 - If there is a green download button, like
   https://github.com/zedshaw/mongrel2/releases/tag/v1.9.1[mongrel2], then it
   was uploaded by the maintainer and you should use the link of that button to
-  specify +FOO_SITE+, and not use the 'github' helper.
+  specify +FOO_SITE+, and not use the 'github' forge.
 - If there is grey download button, like
   https://github.com/xbmc/xbmc/releases/tag/13.2-Gotham[xbmc], then it's an
-  automatically generated tarball and you should use the 'github' helper
-  function.
+  automatically generated tarball and you should use the 'github' forge.
+
+===== Gitorious
+
+Gitorious does not offer a download area for packages to put their
+releases on. However, it offers a way to download tarballs from any
+tag or sha1 changeset, but the naming scheme it uses for the tarballs'
+basename does not contain the package name, only the version string.
+
+Buildroot allows you to easily specify that a package should be
+downloaded from Gitorious. Like for GitHub (above), we recognise
+'gitorious' as a forge; it should be used as shown below.
+
+----
+FOO_VERSION = v1.0
+FOO_FORGE = gitorious
+FOO_FORGE_PATH = user/foo
+----
+
+.Note
+- The +FOO_VERSION+ can be either a tag or a commit ID.
+- The tarball name generated by gitorious matches the default one from
+  Buildroot (e.g.: +foo-f6fb6654af62045239caed5950bc6c7971965e60.tar.gz+),
+  so it is not necessary to specify it in the +.mk+ file.
+- When using a commit ID as version, you should use the full 40 hex characters.
+- 'user' is the name of the Gitorious user to whom the 'foo' repository belongs.
-- 
1.9.1

^ permalink raw reply related	[flat|nested] 12+ messages in thread

* [Buildroot] [PATCH 7/9 v2] packages: switch to using the github forge
  2014-12-06 11:13 [Buildroot] [PATCH 0/9 v2] pkg-infra: better github handling, download enhancements (branch yem/download) Yann E. MORIN
                   ` (5 preceding siblings ...)
  2014-12-06 11:13 ` [Buildroot] [PATCH 6/9 v2] docs/manual: document the new forges we support: github and gitorious Yann E. MORIN
@ 2014-12-06 11:13 ` Yann E. MORIN
  2014-12-06 11:13 ` [Buildroot] [PATCH 8/9 v2] packages: switch to using the gitorious forge Yann E. MORIN
  2014-12-06 11:13 ` [Buildroot] [PATCH 9/9 v2] pkg-infra: remove the legacy github helper Yann E. MORIN
  8 siblings, 0 replies; 12+ messages in thread
From: Yann E. MORIN @ 2014-12-06 11:13 UTC (permalink / raw
  To: buildroot

Patch generated with:
    sed -r -i -e '/^([^[:space:]]+)_SITE[[:space:]]*=[[:space:]]*\$\(call github,([^,]+),([^,]+),.*$/s//\1_FORGE = github\n\1_FORGE_PATH = \2\/\3/' $( git grep -l -E '_SITE = \$\(call github,' boot package )

Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>

---
Changes v1 -> v2:
  - convert packages added after v1
---
 boot/at91bootstrap3/at91bootstrap3.mk                  | 3 ++-
 package/a10disp/a10disp.mk                             | 3 ++-
 package/am335x-pru-package/am335x-pru-package.mk       | 3 ++-
 package/apitrace/apitrace.mk                           | 3 ++-
 package/avrdude/avrdude.mk                             | 3 ++-
 package/bandwidthd/bandwidthd.mk                       | 3 ++-
 package/bcache-tools/bcache-tools.mk                   | 3 ++-
 package/binutils/binutils.mk                           | 3 ++-
 package/civetweb/civetweb.mk                           | 3 ++-
 package/cppzmq/cppzmq.mk                               | 3 ++-
 package/cpuload/cpuload.mk                             | 3 ++-
 package/czmq/czmq.mk                                   | 3 ++-
 package/e2tools/e2tools.mk                             | 3 ++-
 package/faifa/faifa.mk                                 | 3 ++-
 package/fb-test-app/fb-test-app.mk                     | 3 ++-
 package/filemq/filemq.mk                               | 3 ++-
 package/flann/flann.mk                                 | 3 ++-
 package/freerdp/freerdp.mk                             | 3 ++-
 package/gcc/gcc.mk                                     | 3 ++-
 package/gdb/gdb.mk                                     | 6 ++++--
 package/glm/glm.mk                                     | 3 ++-
 package/inotify-tools/inotify-tools.mk                 | 3 ++-
 package/input-event-daemon/input-event-daemon.mk       | 3 ++-
 package/jack2/jack2.mk                                 | 3 ++-
 package/jquery-keyboard/jquery-keyboard.mk             | 3 ++-
 package/jsmin/jsmin.mk                                 | 3 ++-
 package/json-javascript/json-javascript.mk             | 3 ++-
 package/kexec-lite/kexec-lite.mk                       | 3 ++-
 package/ktap/ktap.mk                                   | 3 ++-
 package/lcdapi/lcdapi.mk                               | 3 ++-
 package/libatomic_ops/libatomic_ops.mk                 | 3 ++-
 package/libcec/libcec.mk                               | 3 ++-
 package/libcofi/libcofi.mk                             | 3 ++-
 package/libconfuse/libconfuse.mk                       | 3 ++-
 package/libenca/libenca.mk                             | 3 ++-
 package/libevent/libevent.mk                           | 3 ++-
 package/libiqrf/libiqrf.mk                             | 3 ++-
 package/liblog4c-localtime/liblog4c-localtime.mk       | 3 ++-
 package/libndp/libndp.mk                               | 3 ++-
 package/libnfs/libnfs.mk                               | 3 ++-
 package/librtlsdr/librtlsdr.mk                         | 3 ++-
 package/libsha1/libsha1.mk                             | 3 ++-
 package/libshairplay/libshairplay.mk                   | 3 ++-
 package/libsoc/libsoc.mk                               | 3 ++-
 package/libstrophe/libstrophe.mk                       | 3 ++-
 package/libtpl/libtpl.mk                               | 3 ++-
 package/libuv/libuv.mk                                 | 3 ++-
 package/linenoise/linenoise.mk                         | 3 ++-
 package/ljsyscall/ljsyscall.mk                         | 3 ++-
 package/lua-ev/lua-ev.mk                               | 3 ++-
 package/lua-msgpack-native/lua-msgpack-native.mk       | 3 ++-
 package/luaexpatutils/luaexpatutils.mk                 | 3 ++-
 package/luaposix/luaposix.mk                           | 3 ++-
 package/lz4/lz4.mk                                     | 3 ++-
 package/mongoose/mongoose.mk                           | 3 ++-
 package/mrouted/mrouted.mk                             | 3 ++-
 package/mtdev2tuio/mtdev2tuio.mk                       | 3 ++-
 package/ne10/ne10.mk                                   | 3 ++-
 package/neardal/neardal.mk                             | 3 ++-
 package/omap-u-boot-utils/omap-u-boot-utils.mk         | 3 ++-
 package/on2-8170-modules/on2-8170-modules.mk           | 3 ++-
 package/opencv/opencv.mk                               | 3 ++-
 package/pifmrds/pifmrds.mk                             | 3 ++-
 package/pps-tools/pps-tools.mk                         | 3 ++-
 package/protobuf-c/protobuf-c.mk                       | 3 ++-
 package/python-configshell-fb/python-configshell-fb.mk | 3 ++-
 package/python-ipy/python-ipy.mk                       | 3 ++-
 package/python-itsdangerous/python-itsdangerous.mk     | 3 ++-
 package/python-libconfig/python-libconfig.mk           | 3 ++-
 package/python-pyusb/python-pyusb.mk                   | 3 ++-
 package/python-rtslib-fb/python-rtslib-fb.mk           | 3 ++-
 package/python-webpy/python-webpy.mk                   | 3 ++-
 package/qdecoder/qdecoder.mk                           | 3 ++-
 package/qjson/qjson.mk                                 | 3 ++-
 package/qlibc/qlibc.mk                                 | 3 ++-
 package/qtuio/qtuio.mk                                 | 3 ++-
 package/rapidjson/rapidjson.mk                         | 3 ++-
 package/rpi-firmware/rpi-firmware.mk                   | 3 ++-
 package/rpi-userland/rpi-userland.mk                   | 3 ++-
 package/sconeserver/sconeserver.mk                     | 3 ++-
 package/shairport-sync/shairport-sync.mk               | 3 ++-
 package/smack/smack.mk                                 | 3 ++-
 package/snappy/snappy.mk                               | 3 ++-
 package/snowball-hdmiservice/snowball-hdmiservice.mk   | 3 ++-
 package/socketcand/socketcand.mk                       | 3 ++-
 package/sqlcipher/sqlcipher.mk                         | 3 ++-
 package/sunxi-boards/sunxi-boards.mk                   | 3 ++-
 package/sunxi-cedarx/sunxi-cedarx.mk                   | 3 ++-
 package/sunxi-mali-prop/sunxi-mali-prop.mk             | 3 ++-
 package/sunxi-mali/sunxi-mali.mk                       | 3 ++-
 package/sunxi-tools/sunxi-tools.mk                     | 3 ++-
 package/targetcli-fb/targetcli-fb.mk                   | 3 ++-
 package/ti-utils/ti-utils.mk                           | 3 ++-
 package/tinyalsa/tinyalsa.mk                           | 3 ++-
 package/tinymembench/tinymembench.mk                   | 3 ++-
 package/trinity/trinity.mk                             | 3 ++-
 package/tslib/tslib.mk                                 | 3 ++-
 package/tvheadend/tvheadend.mk                         | 3 ++-
 package/tzdump/tzdump.mk                               | 3 ++-
 package/uclibc/uclibc.mk                               | 3 ++-
 package/xbmc-addon-xvdr/xbmc-addon-xvdr.mk             | 3 ++-
 package/xbmc-pvr-addons/xbmc-pvr-addons.mk             | 3 ++-
 package/xinetd/xinetd.mk                               | 3 ++-
 package/xl2tp/xl2tp.mk                                 | 3 ++-
 package/yajl/yajl.mk                                   | 3 ++-
 package/ympd/ympd.mk                                   | 3 ++-
 package/zlog/zlog.mk                                   | 3 ++-
 package/zmqpp/zmqpp.mk                                 | 3 ++-
 package/znc/znc.mk                                     | 3 ++-
 package/zyre/zyre.mk                                   | 3 ++-
 110 files changed, 222 insertions(+), 111 deletions(-)

diff --git a/boot/at91bootstrap3/at91bootstrap3.mk b/boot/at91bootstrap3/at91bootstrap3.mk
index bc8d912..fda67f6 100644
--- a/boot/at91bootstrap3/at91bootstrap3.mk
+++ b/boot/at91bootstrap3/at91bootstrap3.mk
@@ -5,7 +5,8 @@
 ################################################################################
 
 AT91BOOTSTRAP3_VERSION = v3.6.2
-AT91BOOTSTRAP3_SITE = $(call github,linux4sam,at91bootstrap,$(AT91BOOTSTRAP3_VERSION))
+AT91BOOTSTRAP3_FORGE = github
+AT91BOOTSTRAP3_FORGE_PATH = linux4sam/at91bootstrap
 
 AT91BOOTSTRAP3_INSTALL_IMAGES = YES
 AT91BOOTSTRAP3_INSTALL_TARGET = NO
diff --git a/package/a10disp/a10disp.mk b/package/a10disp/a10disp.mk
index 066e988..e499882 100644
--- a/package/a10disp/a10disp.mk
+++ b/package/a10disp/a10disp.mk
@@ -5,7 +5,8 @@
 ################################################################################
 
 A10DISP_VERSION = a899cc6dcf909360aac00482ede5369f3656f226
-A10DISP_SITE = $(call github,hglm,a10disp,$(A10DISP_VERSION))
+A10DISP_FORGE = github
+A10DISP_FORGE_PATH = hglm/a10disp
 A10DISP_LICENSE = MIT
 
 A10DISP_DEPENDENCIES = linux
diff --git a/package/am335x-pru-package/am335x-pru-package.mk b/package/am335x-pru-package/am335x-pru-package.mk
index 1e4fc0d..805ad2d 100644
--- a/package/am335x-pru-package/am335x-pru-package.mk
+++ b/package/am335x-pru-package/am335x-pru-package.mk
@@ -5,7 +5,8 @@
 ################################################################################
 
 AM335X_PRU_PACKAGE_VERSION = 506e074859891a2b350eb4f5fcb451c4961410ea
-AM335X_PRU_PACKAGE_SITE = $(call github,beagleboard,am335x_pru_package,$(AM335X_PRU_PACKAGE_VERSION))
+AM335X_PRU_PACKAGE_FORGE = github
+AM335X_PRU_PACKAGE_FORGE_PATH = beagleboard/am335x_pru_package
 AM335X_PRU_PACKAGE_LICENSE = BSD-3c
 AM335X_PRU_PACKAGE_LICENSE_FILES = pru_sw/utils/LICENCE.txt
 AM335X_PRU_PACKAGE_DEPENDENCIES = host-am335x-pru-package
diff --git a/package/apitrace/apitrace.mk b/package/apitrace/apitrace.mk
index b164367..565f053 100644
--- a/package/apitrace/apitrace.mk
+++ b/package/apitrace/apitrace.mk
@@ -5,7 +5,8 @@
 ################################################################################
 
 APITRACE_VERSION = c181b7fbf4b1c3912424761fec8ac7124640543a
-APITRACE_SITE = $(call github,apitrace,apitrace,$(APITRACE_VERSION))
+APITRACE_FORGE = github
+APITRACE_FORGE_PATH = apitrace/apitrace
 APITRACE_LICENSE = MIT
 APITRACE_LICENSE_FILES = LICENSE
 
diff --git a/package/avrdude/avrdude.mk b/package/avrdude/avrdude.mk
index 03d6490..b40132f 100644
--- a/package/avrdude/avrdude.mk
+++ b/package/avrdude/avrdude.mk
@@ -5,7 +5,8 @@
 ################################################################################
 
 AVRDUDE_VERSION = eabe067c4527bc2eedc5db9288ef5cf1818ec720
-AVRDUDE_SITE = $(call github,kcuzner,avrdude,$(AVRDUDE_VERSION))
+AVRDUDE_FORGE = github
+AVRDUDE_FORGE_PATH = kcuzner/avrdude
 AVRDUDE_LICENSE = GPLv2+
 AVRDUDR_LICENSE_FILES = avrdude/COPYING
 AVRDUDE_SUBDIR = avrdude
diff --git a/package/bandwidthd/bandwidthd.mk b/package/bandwidthd/bandwidthd.mk
index ca991f9..d5ee492 100644
--- a/package/bandwidthd/bandwidthd.mk
+++ b/package/bandwidthd/bandwidthd.mk
@@ -5,7 +5,8 @@
 ################################################################################
 
 BANDWIDTHD_VERSION = v2.0.1-auto-r11
-BANDWIDTHD_SITE = $(call github,nroach44,bandwidthd,$(BANDWIDTHD_VERSION))
+BANDWIDTHD_FORGE = github
+BANDWIDTHD_FORGE_PATH = nroach44/bandwidthd
 
 # Specified as "any version of the GPL that is current as of your
 # download" by upstream.
diff --git a/package/bcache-tools/bcache-tools.mk b/package/bcache-tools/bcache-tools.mk
index 666a02f..cb5f68d 100644
--- a/package/bcache-tools/bcache-tools.mk
+++ b/package/bcache-tools/bcache-tools.mk
@@ -5,7 +5,8 @@
 ################################################################################
 
 BCACHE_TOOLS_VERSION = v1.0.7
-BCACHE_TOOLS_SITE = $(call github,g2p,bcache-tools,$(BCACHE_TOOLS_VERSION))
+BCACHE_TOOLS_FORGE = github
+BCACHE_TOOLS_FORGE_PATH = g2p/bcache-tools
 BCACHE_TOOLS_LICENSE = GPLv2
 BCACHE_TOOLS_LICENSE_FILES = COPYING
 BCACHE_TOOLS_DEPENDENCIES = host-pkgconf util-linux
diff --git a/package/binutils/binutils.mk b/package/binutils/binutils.mk
index b8dab5d..565780a 100644
--- a/package/binutils/binutils.mk
+++ b/package/binutils/binutils.mk
@@ -20,7 +20,8 @@ ifeq ($(ARCH),avr32)
 BINUTILS_SITE = ftp://www.at91.com/pub/buildroot
 endif
 ifeq ($(BR2_arc),y)
-BINUTILS_SITE = $(call github,foss-for-synopsys-dwc-arc-processors,binutils-gdb,$(BINUTILS_VERSION))
+BINUTILS_FORGE = github
+BINUTILS_FORGE_PATH = foss-for-synopsys-dwc-arc-processors/binutils-gdb
 BINUTILS_SOURCE = binutils-$(BINUTILS_VERSION).tar.gz
 BINUTILS_FROM_GIT = y
 endif
diff --git a/package/civetweb/civetweb.mk b/package/civetweb/civetweb.mk
index 2940a7a..f261387 100644
--- a/package/civetweb/civetweb.mk
+++ b/package/civetweb/civetweb.mk
@@ -5,7 +5,8 @@
 ################################################################################
 
 CIVETWEB_VERSION = v1.5
-CIVETWEB_SITE = $(call github,sunsetbrew,civetweb,$(CIVETWEB_VERSION))
+CIVETWEB_FORGE = github
+CIVETWEB_FORGE_PATH = sunsetbrew/civetweb
 CIVETWEB_LICENSE = MIT
 CIVETWEB_LICENSE_FILES = LICENSE.md
 
diff --git a/package/cppzmq/cppzmq.mk b/package/cppzmq/cppzmq.mk
index 5446de8..9c197ed 100644
--- a/package/cppzmq/cppzmq.mk
+++ b/package/cppzmq/cppzmq.mk
@@ -5,7 +5,8 @@
 ################################################################################
 
 CPPZMQ_VERSION = 1f05e0d111197c64be32ad5aecd59f4d1b05a819
-CPPZMQ_SITE = $(call github,zeromq,cppzmq,$(CPPZMQ_VERSION))
+CPPZMQ_FORGE = github
+CPPZMQ_FORGE_PATH = zeromq/cppzmq
 CPPZMQ_INSTALL_STAGING = YES
 CPPZMQ_DEPENDENCIES = zeromq
 CPPZMQ_LICENSE = MIT
diff --git a/package/cpuload/cpuload.mk b/package/cpuload/cpuload.mk
index 30c3db6..e9a7593 100644
--- a/package/cpuload/cpuload.mk
+++ b/package/cpuload/cpuload.mk
@@ -5,7 +5,8 @@
 ################################################################################
 
 CPULOAD_VERSION = v0.3
-CPULOAD_SITE = $(call github,kelvincheung,cpuload,$(CPULOAD_VERSION))
+CPULOAD_FORGE = github
+CPULOAD_FORGE_PATH = kelvincheung/cpuload
 CPULOAD_LICENSE = GPLv2
 CPULOAD_LICENSE_FILES = COPYING
 
diff --git a/package/czmq/czmq.mk b/package/czmq/czmq.mk
index 25f67d5..7769f75 100644
--- a/package/czmq/czmq.mk
+++ b/package/czmq/czmq.mk
@@ -5,7 +5,8 @@
 ################################################################################
 
 CZMQ_VERSION = v3.0.0
-CZMQ_SITE = $(call github,zeromq,czmq,$(CZMQ_VERSION))
+CZMQ_FORGE = github
+CZMQ_FORGE_PATH = zeromq/czmq
 
 # Autoreconf required as we use the git tree
 CZMQ_AUTORECONF = YES
diff --git a/package/e2tools/e2tools.mk b/package/e2tools/e2tools.mk
index 789519f..0242d64 100644
--- a/package/e2tools/e2tools.mk
+++ b/package/e2tools/e2tools.mk
@@ -5,7 +5,8 @@
 ################################################################################
 
 E2TOOLS_VERSION = 3158ef18a903ca4a98b8fa220c9fc5c133d8bdf6
-E2TOOLS_SITE = $(call github,ndim,e2tools,$(E2TOOLS_VERSION))
+E2TOOLS_FORGE = github
+E2TOOLS_FORGE_PATH = ndim/e2tools
 
 # Source coming from GitHub, no configure included.
 E2TOOLS_AUTORECONF = YES
diff --git a/package/faifa/faifa.mk b/package/faifa/faifa.mk
index a56a8c0..758b166 100644
--- a/package/faifa/faifa.mk
+++ b/package/faifa/faifa.mk
@@ -5,7 +5,8 @@
 ################################################################################
 
 FAIFA_VERSION = v0.1
-FAIFA_SITE = $(call github,ffainelli,faifa,$(FAIFA_VERSION))
+FAIFA_FORGE = github
+FAIFA_FORGE_PATH = ffainelli/faifa
 FAIFA_INSTALL_STAGING = YES
 FAIFA_DEPENDENCIES = libpcap host-autoconf
 FAIFA_LICENSE = BSD-3c
diff --git a/package/fb-test-app/fb-test-app.mk b/package/fb-test-app/fb-test-app.mk
index 9cd0aec..2a05a23 100644
--- a/package/fb-test-app/fb-test-app.mk
+++ b/package/fb-test-app/fb-test-app.mk
@@ -5,7 +5,8 @@
 ################################################################################
 
 FB_TEST_APP_VERSION = rosetta-1.1.0
-FB_TEST_APP_SITE = $(call github,prpplague,fb-test-app,$(FB_TEST_APP_VERSION))
+FB_TEST_APP_FORGE = github
+FB_TEST_APP_FORGE_PATH = prpplague/fb-test-app
 FB_TEST_APP_LICENSE = GPLv2
 FB_TEST_APP_LICENSE_FILES = COPYING
 
diff --git a/package/filemq/filemq.mk b/package/filemq/filemq.mk
index d3dc6da..223360d 100644
--- a/package/filemq/filemq.mk
+++ b/package/filemq/filemq.mk
@@ -5,7 +5,8 @@
 ################################################################################
 
 FILEMQ_VERSION = 482797b8aa30fcc9ea1377aabdf2b0769f9f698e
-FILEMQ_SITE = $(call github,zeromq,filemq,$(FILEMQ_VERSION))
+FILEMQ_FORGE = github
+FILEMQ_FORGE_PATH = zeromq/filemq
 
 FILEMQ_AUTORECONF = YES
 FILEMQ_CONF_ENV = fmq_have_asciidoc=no
diff --git a/package/flann/flann.mk b/package/flann/flann.mk
index 8af58e3..b9d927d 100644
--- a/package/flann/flann.mk
+++ b/package/flann/flann.mk
@@ -5,7 +5,8 @@
 ################################################################################
 
 FLANN_VERSION = 04b4a56533faf8c8228d011d05ba376038364b49
-FLANN_SITE = $(call github,mariusmuja,flann,$(FLANN_VERSION))
+FLANN_FORGE = github
+FLANN_FORGE_PATH = mariusmuja/flann
 FLANN_INSTALL_STAGING = YES
 FLANN_LICENSE = BSD-3c
 FLANN_LICENSE_FILES = COPYING
diff --git a/package/freerdp/freerdp.mk b/package/freerdp/freerdp.mk
index cb745ec..5f601c5 100644
--- a/package/freerdp/freerdp.mk
+++ b/package/freerdp/freerdp.mk
@@ -6,7 +6,8 @@
 
 # Changeset on the stable-1.1 branch
 FREERDP_VERSION = 440916eae2e07463912d5fe507677e67096eb083
-FREERDP_SITE = $(call github,FreeRDP,FreeRDP,$(FREERDP_VERSION))
+FREERDP_FORGE = github
+FREERDP_FORGE_PATH = FreeRDP/FreeRDP
 FREERDP_DEPENDENCIES = openssl zlib \
 	xlib_libX11 xlib_libXt xlib_libXext xlib_libXcursor
 FREERDP_LICENSE = Apache-2.0
diff --git a/package/gcc/gcc.mk b/package/gcc/gcc.mk
index cdd71aa..b1a62e0 100644
--- a/package/gcc/gcc.mk
+++ b/package/gcc/gcc.mk
@@ -13,7 +13,8 @@ GCC_VERSION = $(call qstrip,$(BR2_GCC_VERSION))
 ifeq ($(findstring avr32,$(GCC_VERSION)),avr32)
 GCC_SITE = ftp://www.at91.com/pub/buildroot
 else ifeq ($(BR2_arc),y)
-GCC_SITE = $(call github,foss-for-synopsys-dwc-arc-processors,gcc,$(GCC_VERSION))
+GCC_FORGE = github
+GCC_FORGE_PATH = foss-for-synopsys-dwc-arc-processors/gcc
 GCC_SOURCE = gcc-$(GCC_VERSION).tar.gz
 else
 GCC_SITE = $(BR2_GNU_MIRROR:/=)/gcc/gcc-$(GCC_VERSION)
diff --git a/package/gdb/gdb.mk b/package/gdb/gdb.mk
index dbec760..75db9f5 100644
--- a/package/gdb/gdb.mk
+++ b/package/gdb/gdb.mk
@@ -8,13 +8,15 @@ GDB_VERSION = $(call qstrip,$(BR2_GDB_VERSION))
 GDB_SITE = $(BR2_GNU_MIRROR)/gdb
 
 ifeq ($(BR2_arc),y)
-GDB_SITE = $(call github,foss-for-synopsys-dwc-arc-processors,binutils-gdb,$(GDB_VERSION))
+GDB_FORGE = github
+GDB_FORGE_PATH = foss-for-synopsys-dwc-arc-processors/binutils-gdb
 GDB_SOURCE = gdb-$(GDB_VERSION).tar.gz
 GDB_FROM_GIT = y
 endif
 
 ifeq ($(BR2_microblaze),y)
-GDB_SITE = $(call github,Xilinx,gdb,$(GDB_VERSION))
+GDB_FORGE = github
+GDB_FORGE_PATH = Xilinx/gdb
 GDB_SOURCE = gdb-$(GDB_VERSION).tar.gz
 GDB_FROM_GIT = y
 endif
diff --git a/package/glm/glm.mk b/package/glm/glm.mk
index ff9423d..d04502a 100644
--- a/package/glm/glm.mk
+++ b/package/glm/glm.mk
@@ -5,7 +5,8 @@
 ################################################################################
 
 GLM_VERSION = 0.9.5.4
-GLM_SITE = $(call github,g-truc,glm,$(GLM_VERSION))
+GLM_FORGE = github
+GLM_FORGE_PATH = g-truc/glm
 GLM_LICENSE = MIT
 GLM_LICENSE_FILES = copying.txt
 
diff --git a/package/inotify-tools/inotify-tools.mk b/package/inotify-tools/inotify-tools.mk
index 3502525..d581e05 100644
--- a/package/inotify-tools/inotify-tools.mk
+++ b/package/inotify-tools/inotify-tools.mk
@@ -5,7 +5,8 @@
 ################################################################################
 
 INOTIFY_TOOLS_VERSION = 06007d350faa8731c67e186923ab417486104719
-INOTIFY_TOOLS_SITE = $(call github,rvoicilas,inotify-tools,$(INOTIFY_TOOLS_VERSION))
+INOTIFY_TOOLS_FORGE = github
+INOTIFY_TOOLS_FORGE_PATH = rvoicilas/inotify-tools
 INOTIFY_TOOLS_LICENSE = GPL
 INOTIFY_TOOLS_LICENSE_FILES = COPYING
 INOTIFY_TOOLS_INSTALL_STAGING = YES
diff --git a/package/input-event-daemon/input-event-daemon.mk b/package/input-event-daemon/input-event-daemon.mk
index 67b8cc4..6a16d5b 100644
--- a/package/input-event-daemon/input-event-daemon.mk
+++ b/package/input-event-daemon/input-event-daemon.mk
@@ -5,7 +5,8 @@
 ################################################################################
 
 INPUT_EVENT_DAEMON_VERSION = v0.1.3
-INPUT_EVENT_DAEMON_SITE = $(call github,gandro,input-event-daemon,$(INPUT_EVENT_DAEMON_VERSION))
+INPUT_EVENT_DAEMON_FORGE = github
+INPUT_EVENT_DAEMON_FORGE_PATH = gandro/input-event-daemon
 INPUT_EVENT_DAEMON_LICENSE = input-event-daemon license
 INPUT_EVENT_DAEMON_LICENSE_FILES = README
 
diff --git a/package/jack2/jack2.mk b/package/jack2/jack2.mk
index 3f52ff4..3de23fe 100644
--- a/package/jack2/jack2.mk
+++ b/package/jack2/jack2.mk
@@ -5,7 +5,8 @@
 ################################################################################
 
 JACK2_VERSION = ab409a65df95bc261ff72b52d6b3f4a65cf3266a
-JACK2_SITE = $(call github,jackaudio,jack2,$(JACK2_VERSION))
+JACK2_FORGE = github
+JACK2_FORGE_PATH = jackaudio/jack2
 JACK2_LICENSE = GPLv2+ (jack server), LGPLv2.1+ (jack library)
 JACK2_DEPENDENCIES = libsamplerate libsndfile alsa-lib host-python
 JACK2_INSTALL_STAGING = YES
diff --git a/package/jquery-keyboard/jquery-keyboard.mk b/package/jquery-keyboard/jquery-keyboard.mk
index a1320dc..c3f7932 100644
--- a/package/jquery-keyboard/jquery-keyboard.mk
+++ b/package/jquery-keyboard/jquery-keyboard.mk
@@ -5,7 +5,8 @@
 ################################################################################
 
 JQUERY_KEYBOARD_VERSION = v1.18.12
-JQUERY_KEYBOARD_SITE = $(call github,Mottie,Keyboard,$(JQUERY_KEYBOARD_VERSION))
+JQUERY_KEYBOARD_FORGE = github
+JQUERY_KEYBOARD_FORGE_PATH = Mottie/Keyboard
 JQUERY_KEYBOARD_LICENSE = MIT WTFPL
 JQUERY_KEYBOARD_LICENSE_FILES = README.markdown
 
diff --git a/package/jsmin/jsmin.mk b/package/jsmin/jsmin.mk
index a66ba71..90c312a 100644
--- a/package/jsmin/jsmin.mk
+++ b/package/jsmin/jsmin.mk
@@ -5,7 +5,8 @@
 ################################################################################
 
 JSMIN_VERSION = 1bf6ce5f74a9f8752ac7f5d115b8d7ccb31cfe1b
-JSMIN_SITE = $(call github,douglascrockford,JSMin,$(JSMIN_VERSION))
+JSMIN_FORGE = github
+JSMIN_FORGE_PATH = douglascrockford/JSMin
 JSMIN_LICENSE = MIT
 JSMIN_LICENSE_FILES = jsmin.c
 
diff --git a/package/json-javascript/json-javascript.mk b/package/json-javascript/json-javascript.mk
index c15b531..b4c4497 100644
--- a/package/json-javascript/json-javascript.mk
+++ b/package/json-javascript/json-javascript.mk
@@ -5,7 +5,8 @@
 ################################################################################
 
 JSON_JAVASCRIPT_VERSION = 3d7767b6b1f3da363c625ff54e63bbf20e9e83ac
-JSON_JAVASCRIPT_SITE = $(call github,douglascrockford,JSON-js,$(JSON_JAVASCRIPT_VERSION))
+JSON_JAVASCRIPT_FORGE = github
+JSON_JAVASCRIPT_FORGE_PATH = douglascrockford/JSON-js
 JSON_JAVASCRIPT_LICENSE = Public Domain
 JSON_JAVASCRIPT_LICENSE_FILES = json2.js
 
diff --git a/package/kexec-lite/kexec-lite.mk b/package/kexec-lite/kexec-lite.mk
index 7e3c8d3..575fe4f 100644
--- a/package/kexec-lite/kexec-lite.mk
+++ b/package/kexec-lite/kexec-lite.mk
@@ -5,7 +5,8 @@
 ################################################################################
 
 KEXEC_LITE_VERSION = fb8543fea3beb0522b5a63a74ea1a845dbd7b954
-KEXEC_LITE_SITE = $(call github,antonblanchard,kexec-lite,$(KEXEC_LITE_VERSION))
+KEXEC_LITE_FORGE = github
+KEXEC_LITE_FORGE_PATH = antonblanchard/kexec-lite
 KEXEC_LITE_LICENSE = GPLv2+
 KEXEC_LITE_DEPENDENCIES = elfutils dtc
 
diff --git a/package/ktap/ktap.mk b/package/ktap/ktap.mk
index 50ad222..08a19a4 100644
--- a/package/ktap/ktap.mk
+++ b/package/ktap/ktap.mk
@@ -5,7 +5,8 @@
 ################################################################################
 
 KTAP_VERSION = 5b16b61deb6c8a99d71e5167706a5f5566135828
-KTAP_SITE = $(call github,ktap,ktap,$(KTAP_VERSION))
+KTAP_FORGE = github
+KTAP_FORGE_PATH = ktap/ktap
 KTAP_LICENSE = GPLv2
 KTAP_LICENSE_FILES = LICENSE-GPL
 
diff --git a/package/lcdapi/lcdapi.mk b/package/lcdapi/lcdapi.mk
index bcf5c47..56b187a 100644
--- a/package/lcdapi/lcdapi.mk
+++ b/package/lcdapi/lcdapi.mk
@@ -5,7 +5,8 @@
 ################################################################################
 
 LCDAPI_VERSION = dbbdca06f271b8cf81b4817a9da3d558cfe59905
-LCDAPI_SITE = $(call github,spdawson,lcdapi,$(LCDAPI_VERSION))
+LCDAPI_FORGE = github
+LCDAPI_FORGE_PATH = spdawson/lcdapi
 LCDAPI_LICENSE = LGPLv2.1+
 LCDAPI_LICENSE_FILES = COPYING
 LCDAPI_AUTORECONF = YES
diff --git a/package/libatomic_ops/libatomic_ops.mk b/package/libatomic_ops/libatomic_ops.mk
index 6a26775..f82d520 100644
--- a/package/libatomic_ops/libatomic_ops.mk
+++ b/package/libatomic_ops/libatomic_ops.mk
@@ -5,7 +5,8 @@
 ################################################################################
 
 LIBATOMIC_OPS_VERSION = libatomic_ops-7_4_0
-LIBATOMIC_OPS_SITE = $(call github,ivmai,libatomic_ops,$(LIBATOMIC_OPS_VERSION))
+LIBATOMIC_OPS_FORGE = github
+LIBATOMIC_OPS_FORGE_PATH = ivmai/libatomic_ops
 LIBATOMIC_OPS_AUTORECONF = YES
 
 # From doc/LICENSING.txt: "Our intent is to make it easy to use
diff --git a/package/libcec/libcec.mk b/package/libcec/libcec.mk
index 5a889b9..4f6b6c8 100644
--- a/package/libcec/libcec.mk
+++ b/package/libcec/libcec.mk
@@ -5,7 +5,8 @@
 ################################################################################
 
 LIBCEC_VERSION = libcec-2.1.4-repack
-LIBCEC_SITE = $(call github,Pulse-Eight,libcec,$(LIBCEC_VERSION))
+LIBCEC_FORGE = github
+LIBCEC_FORGE_PATH = Pulse-Eight/libcec
 LIBCEC_LICENSE = GPLv2+
 LIBCEC_LICENSE_FILES = COPYING
 
diff --git a/package/libcofi/libcofi.mk b/package/libcofi/libcofi.mk
index 90daff2..917bd73 100644
--- a/package/libcofi/libcofi.mk
+++ b/package/libcofi/libcofi.mk
@@ -5,7 +5,8 @@
 ################################################################################
 
 LIBCOFI_VERSION = 7313fbe12b0593034d0a1b606bf33c7cf4ababce
-LIBCOFI_SITE = $(call github,simonjhall,copies-and-fills,$(LIBCOFI_VERSION))
+LIBCOFI_FORGE = github
+LIBCOFI_FORGE_PATH = simonjhall/copies-and-fills
 LIBCOFI_LICENSE = LGPLv2.1
 LIBCOFI_LICENSE_FILES = README.md
 
diff --git a/package/libconfuse/libconfuse.mk b/package/libconfuse/libconfuse.mk
index b3dcceb..783b572 100644
--- a/package/libconfuse/libconfuse.mk
+++ b/package/libconfuse/libconfuse.mk
@@ -5,7 +5,8 @@
 ################################################################################
 
 LIBCONFUSE_VERSION = 9413a82f9cb56a94f71fa420f146e841c5372ed8
-LIBCONFUSE_SITE = $(call github,martinh,libconfuse,$(LIBCONFUSE_VERSION))
+LIBCONFUSE_FORGE = github
+LIBCONFUSE_FORGE_PATH = martinh/libconfuse
 LIBCONFUSE_INSTALL_STAGING = YES
 LIBCONFUSE_CONF_OPTS = --disable-rpath
 LIBCONFUSE_DEPENDENCIES = host-flex
diff --git a/package/libenca/libenca.mk b/package/libenca/libenca.mk
index 7ab95f5..c1c675a 100644
--- a/package/libenca/libenca.mk
+++ b/package/libenca/libenca.mk
@@ -5,7 +5,8 @@
 ################################################################################
 
 LIBENCA_VERSION = 1.16
-LIBENCA_SITE = $(call github,nijel,enca,$(LIBENCA_VERSION))
+LIBENCA_FORGE = github
+LIBENCA_FORGE_PATH = nijel/enca
 LIBENCA_INSTALL_STAGING = YES
 LIBENCA_LICENSE = GPLv2
 LIBENCA_LICENSE_FILES = COPYING
diff --git a/package/libevent/libevent.mk b/package/libevent/libevent.mk
index 607b7b2..8c4c4c1 100644
--- a/package/libevent/libevent.mk
+++ b/package/libevent/libevent.mk
@@ -5,7 +5,8 @@
 ################################################################################
 
 LIBEVENT_VERSION = release-2.0.21-stable
-LIBEVENT_SITE = $(call github,libevent,libevent,$(LIBEVENT_VERSION))
+LIBEVENT_FORGE = github
+LIBEVENT_FORGE_PATH = libevent/libevent
 LIBEVENT_INSTALL_STAGING = YES
 LIBEVENT_LICENSE = BSD-3c, OpenBSD
 LIBEVENT_LICENSE_FILES = LICENSE
diff --git a/package/libiqrf/libiqrf.mk b/package/libiqrf/libiqrf.mk
index 0531602..00c0c55 100644
--- a/package/libiqrf/libiqrf.mk
+++ b/package/libiqrf/libiqrf.mk
@@ -5,7 +5,8 @@
 ################################################################################
 
 LIBIQRF_VERSION = v0.1.2
-LIBIQRF_SITE = $(call github,nandra,libiqrf,$(LIBIQRF_VERSION))
+LIBIQRF_FORGE = github
+LIBIQRF_FORGE_PATH = nandra/libiqrf
 LIBIQRF_INSTALL_STAGING = YES
 LIBIQRF_DEPENDENCIES = libusb
 LIBIQRF_LICENSE = LGPLv2.1+
diff --git a/package/liblog4c-localtime/liblog4c-localtime.mk b/package/liblog4c-localtime/liblog4c-localtime.mk
index bc6d1ab..90211d1 100644
--- a/package/liblog4c-localtime/liblog4c-localtime.mk
+++ b/package/liblog4c-localtime/liblog4c-localtime.mk
@@ -5,7 +5,8 @@
 ################################################################################
 
 LIBLOG4C_LOCALTIME_VERSION = v1.0
-LIBLOG4C_LOCALTIME_SITE = $(call github,rcmadruga,log4c-localtime,$(LIBLOG4C_LOCALTIME_VERSION))
+LIBLOG4C_LOCALTIME_FORGE = github
+LIBLOG4C_LOCALTIME_FORGE_PATH = rcmadruga/log4c-localtime
 LIBLOG4C_LOCALTIME_INSTALL_STAGING = YES
 LIBLOG4C_LOCALTIME_CONF_OPTS = --disable-expattest
 LIBLOG4C_LOCALTIME_DEPENDENCIES = expat
diff --git a/package/libndp/libndp.mk b/package/libndp/libndp.mk
index c40a017..1ed4d90 100644
--- a/package/libndp/libndp.mk
+++ b/package/libndp/libndp.mk
@@ -5,7 +5,8 @@
 ################################################################################
 
 LIBNDP_VERSION = v1.4
-LIBNDP_SITE = $(call github,jpirko,libndp,$(LIBNDP_VERSION))
+LIBNDP_FORGE = github
+LIBNDP_FORGE_PATH = jpirko/libndp
 LIBNDP_LICENSE = LGPLv2.1+
 LIBNDP_LICENSE_FILES = COPYING
 LIBNDP_AUTORECONF = YES
diff --git a/package/libnfs/libnfs.mk b/package/libnfs/libnfs.mk
index 0c8c4f5..93e4afa 100644
--- a/package/libnfs/libnfs.mk
+++ b/package/libnfs/libnfs.mk
@@ -5,7 +5,8 @@
 ################################################################################
 
 LIBNFS_VERSION = libnfs-1.9.5
-LIBNFS_SITE = $(call github,sahlberg,libnfs,$(LIBNFS_VERSION))
+LIBNFS_FORGE = github
+LIBNFS_FORGE_PATH = sahlberg/libnfs
 LIBNFS_INSTALL_STAGING = YES
 LIBNFS_AUTORECONF = YES
 LIBNFS_MAKE = $(MAKE1)
diff --git a/package/librtlsdr/librtlsdr.mk b/package/librtlsdr/librtlsdr.mk
index 2c5cf1f..0da5dc3 100644
--- a/package/librtlsdr/librtlsdr.mk
+++ b/package/librtlsdr/librtlsdr.mk
@@ -5,7 +5,8 @@
 ################################################################################
 
 LIBRTLSDR_VERSION = v0.5.3
-LIBRTLSDR_SITE = $(call github,steve-m,librtlsdr,$(LIBRTLSDR_VERSION))
+LIBRTLSDR_FORGE = github
+LIBRTLSDR_FORGE_PATH = steve-m/librtlsdr
 LIBRTLSDR_LICENSE = GPLv2+
 LIBRTLSDR_LICENSE_FILES = COPYING
 LIBRTLSDR_INSTALL_STAGING = YES
diff --git a/package/libsha1/libsha1.mk b/package/libsha1/libsha1.mk
index 647f986..8cc9746 100644
--- a/package/libsha1/libsha1.mk
+++ b/package/libsha1/libsha1.mk
@@ -5,7 +5,8 @@
 ################################################################################
 
 LIBSHA1_VERSION = 0.3
-LIBSHA1_SITE = $(call github,dottedmag,libsha1,$(LIBSHA1_VERSION))
+LIBSHA1_FORGE = github
+LIBSHA1_FORGE_PATH = dottedmag/libsha1
 LIBSHA1_LICENSE = BSD-3c or GPL
 LIBSHA1_LICENSE_FILES = COPYING
 
diff --git a/package/libshairplay/libshairplay.mk b/package/libshairplay/libshairplay.mk
index 35bbeac..b874820 100644
--- a/package/libshairplay/libshairplay.mk
+++ b/package/libshairplay/libshairplay.mk
@@ -5,7 +5,8 @@
 ################################################################################
 
 LIBSHAIRPLAY_VERSION = 64d59e3087f829006d091fa0d114efb50972a2bf
-LIBSHAIRPLAY_SITE = $(call github,juhovh,shairplay,$(LIBSHAIRPLAY_VERSION))
+LIBSHAIRPLAY_FORGE = github
+LIBSHAIRPLAY_FORGE_PATH = juhovh/shairplay
 LIBSHAIRPLAY_INSTALL_STAGING = YES
 LIBSHAIRPLAY_AUTORECONF = YES
 LIBSHAIRPLAY_LICENSE = MIT, BSD-3c, LGPLv2.1+
diff --git a/package/libsoc/libsoc.mk b/package/libsoc/libsoc.mk
index 3253c50..f4122fc 100644
--- a/package/libsoc/libsoc.mk
+++ b/package/libsoc/libsoc.mk
@@ -5,7 +5,8 @@
 ################################################################################
 
 LIBSOC_VERSION = 0.6.3
-LIBSOC_SITE = $(call github,jackmitch,libsoc,$(LIBSOC_VERSION))
+LIBSOC_FORGE = github
+LIBSOC_FORGE_PATH = jackmitch/libsoc
 LIBSOC_LICENSE = LGPLv2.1
 LIBSOC_LICENSE_FILES = COPYING
 LIBSOC_AUTORECONF = YES
diff --git a/package/libstrophe/libstrophe.mk b/package/libstrophe/libstrophe.mk
index d7202d7..7c5bcdb 100644
--- a/package/libstrophe/libstrophe.mk
+++ b/package/libstrophe/libstrophe.mk
@@ -5,7 +5,8 @@
 ################################################################################
 
 LIBSTROPHE_VERSION = 0.8.6
-LIBSTROPHE_SITE = $(call github,strophe,libstrophe,$(LIBSTROPHE_VERSION))
+LIBSTROPHE_FORGE = github
+LIBSTROPHE_FORGE_PATH = strophe/libstrophe
 LIBSTROPHE_DEPENDENCIES = openssl host-pkgconf
 LIBSTROPHE_AUTORECONF = YES
 LIBSTROPHE_LICENSE = MIT or GPLv3
diff --git a/package/libtpl/libtpl.mk b/package/libtpl/libtpl.mk
index ed3bfb5..a4fe310 100644
--- a/package/libtpl/libtpl.mk
+++ b/package/libtpl/libtpl.mk
@@ -5,7 +5,8 @@
 ################################################################################
 
 LIBTPL_VERSION = v1.6.1
-LIBTPL_SITE = $(call github,troydhanson,tpl,$(LIBTPL_VERSION))
+LIBTPL_FORGE = github
+LIBTPL_FORGE_PATH = troydhanson/tpl
 LIBTPL_INSTALL_STAGING = YES
 LIBTPL_LICENSE = BSD-like
 LIBTPL_LICENSE_FILES = LICENSE
diff --git a/package/libuv/libuv.mk b/package/libuv/libuv.mk
index 08bf8c5..ff1f464 100644
--- a/package/libuv/libuv.mk
+++ b/package/libuv/libuv.mk
@@ -5,7 +5,8 @@
 ################################################################################
 
 LIBUV_VERSION = v0.11.29
-LIBUV_SITE = $(call github,joyent,libuv,$(LIBUV_VERSION))
+LIBUV_FORGE = github
+LIBUV_FORGE_PATH = joyent/libuv
 LIBUV_DEPENDENCIES = host-pkgconf
 LIBUV_INSTALL_STAGING = YES
 LIBUV_AUTORECONF = YES
diff --git a/package/linenoise/linenoise.mk b/package/linenoise/linenoise.mk
index 7321564..bef6ccd 100644
--- a/package/linenoise/linenoise.mk
+++ b/package/linenoise/linenoise.mk
@@ -5,7 +5,8 @@
 ################################################################################
 
 LINENOISE_VERSION = cf1bdf5f89e10b504a0bec3efc8a8587eadecd2c
-LINENOISE_SITE = $(call github,antirez,linenoise,$(LINENOISE_VERSION))
+LINENOISE_FORGE = github
+LINENOISE_FORGE_PATH = antirez/linenoise
 LINENOISE_LICENSE = BSD-2c
 LINENOISE_LICENSE_FILES = LICENSE
 LINENOISE_INSTALL_STAGING = YES
diff --git a/package/ljsyscall/ljsyscall.mk b/package/ljsyscall/ljsyscall.mk
index a17da3f..35d8cc4 100644
--- a/package/ljsyscall/ljsyscall.mk
+++ b/package/ljsyscall/ljsyscall.mk
@@ -5,7 +5,8 @@
 ################################################################################
 
 LJSYSCALL_VERSION = v0.10
-LJSYSCALL_SITE = $(call github,justincormack,ljsyscall,$(LJSYSCALL_VERSION))
+LJSYSCALL_FORGE = github
+LJSYSCALL_FORGE_PATH = justincormack/ljsyscall
 LJSYSCALL_LICENSE = MIT
 LJSYSCALL_LICENSE_FILES = COPYRIGHT
 
diff --git a/package/lua-ev/lua-ev.mk b/package/lua-ev/lua-ev.mk
index 745d6ed..27d6d4a 100644
--- a/package/lua-ev/lua-ev.mk
+++ b/package/lua-ev/lua-ev.mk
@@ -5,7 +5,8 @@
 ################################################################################
 
 LUA_EV_VERSION = 458165bdfe0c6eadc788813925f11a0e6a823845
-LUA_EV_SITE = $(call github,brimworks,lua-ev,$(LUA_EV_VERSION))
+LUA_EV_FORGE = github
+LUA_EV_FORGE_PATH = brimworks/lua-ev
 LUA_EV_DEPENDENCIES = luainterpreter libev
 LUA_EV_LICENSE = MIT
 LUA_EV_LICENSE_FILES = README
diff --git a/package/lua-msgpack-native/lua-msgpack-native.mk b/package/lua-msgpack-native/lua-msgpack-native.mk
index acd3a0e..d101e98 100644
--- a/package/lua-msgpack-native/lua-msgpack-native.mk
+++ b/package/lua-msgpack-native/lua-msgpack-native.mk
@@ -5,7 +5,8 @@
 ################################################################################
 
 LUA_MSGPACK_NATIVE_VERSION = 41a91b994c70389dc9daa1a15678741d8ec41749
-LUA_MSGPACK_NATIVE_SITE = $(call github,kengonakajima,lua-msgpack-native,$(LUA_MSGPACK_NATIVE_VERSION))
+LUA_MSGPACK_NATIVE_FORGE = github
+LUA_MSGPACK_NATIVE_FORGE_PATH = kengonakajima/lua-msgpack-native
 LUA_MSGPACK_NATIVE_DEPENDENCIES = luainterpreter
 LUA_MSGPACK_NATIVE_LICENSE = Apache-2.0
 LUA_MSGPACK_NATIVE_LICENSE_FILES = LICENSE.txt
diff --git a/package/luaexpatutils/luaexpatutils.mk b/package/luaexpatutils/luaexpatutils.mk
index 9bfc654..fcf4879 100644
--- a/package/luaexpatutils/luaexpatutils.mk
+++ b/package/luaexpatutils/luaexpatutils.mk
@@ -5,7 +5,8 @@
 ################################################################################
 
 LUAEXPATUTILS_VERSION = 88c228365b084224c911d34aff06002634b38b50
-LUAEXPATUTILS_SITE = $(call github,stevedonovan,LuaExpatUtils,$(LUAEXPATUTILS_VERSION))
+LUAEXPATUTILS_FORGE = github
+LUAEXPATUTILS_FORGE_PATH = stevedonovan/LuaExpatUtils
 LUAEXPATUTILS_LICENSE = Public Domain
 LUAEXPATUTILS_DEPENDENCIES = luaexpat
 
diff --git a/package/luaposix/luaposix.mk b/package/luaposix/luaposix.mk
index a723a50..103a3b6 100644
--- a/package/luaposix/luaposix.mk
+++ b/package/luaposix/luaposix.mk
@@ -5,7 +5,8 @@
 ################################################################################
 
 LUAPOSIX_VERSION = 32
-LUAPOSIX_SITE = $(call github,luaposix,luaposix,release-v$(LUAPOSIX_VERSION))
+LUAPOSIX_FORGE = github
+LUAPOSIX_FORGE_PATH = luaposix/luaposix
 LUAPOSIX_LICENSE = MIT
 LUAPOSIX_LICENSE_FILES = COPYING
 LUAPOSIX_DEPENDENCIES = luainterpreter host-lua
diff --git a/package/lz4/lz4.mk b/package/lz4/lz4.mk
index 761ce4d..7a5e4cc 100644
--- a/package/lz4/lz4.mk
+++ b/package/lz4/lz4.mk
@@ -5,7 +5,8 @@
 ################################################################################
 
 LZ4_VERSION = r123
-LZ4_SITE = $(call github,Cyan4973,lz4,$(LZ4_VERSION))
+LZ4_FORGE = github
+LZ4_FORGE_PATH = Cyan4973/lz4
 LZ4_INSTALL_STAGING = YES
 LZ4_LICENSE = BSD-2c
 LZ4_LICENSE_FILES = LICENSE
diff --git a/package/mongoose/mongoose.mk b/package/mongoose/mongoose.mk
index 7a5d356..ccb6272 100644
--- a/package/mongoose/mongoose.mk
+++ b/package/mongoose/mongoose.mk
@@ -5,7 +5,8 @@
 ################################################################################
 
 MONGOOSE_VERSION = 5.5
-MONGOOSE_SITE = $(call github,cesanta,mongoose,$(MONGOOSE_VERSION))
+MONGOOSE_FORGE = github
+MONGOOSE_FORGE_PATH = cesanta/mongoose
 MONGOOSE_LICENSE = GPLv2
 MONGOOSE_LICENSE_FILES = LICENSE
 MONGOOSE_INSTALL_STAGING = YES
diff --git a/package/mrouted/mrouted.mk b/package/mrouted/mrouted.mk
index 78fe98a..2999f83 100644
--- a/package/mrouted/mrouted.mk
+++ b/package/mrouted/mrouted.mk
@@ -5,7 +5,8 @@
 ################################################################################
 
 MROUTED_VERSION = 3.9.6
-MROUTED_SITE = $(call github,troglobit,mrouted,$(MROUTED_VERSION))
+MROUTED_FORGE = github
+MROUTED_FORGE_PATH = troglobit/mrouted
 MROUTED_DEPENDENCIES = host-bison
 
 define MROUTED_BUILD_CMDS
diff --git a/package/mtdev2tuio/mtdev2tuio.mk b/package/mtdev2tuio/mtdev2tuio.mk
index 7b00221..ccc8891 100644
--- a/package/mtdev2tuio/mtdev2tuio.mk
+++ b/package/mtdev2tuio/mtdev2tuio.mk
@@ -5,7 +5,8 @@
 ################################################################################
 
 MTDEV2TUIO_VERSION = e1e7378d86abe751158e743586133022f32fa4d1
-MTDEV2TUIO_SITE = $(call github,olivopaolo,mtdev2tuio,$(MTDEV2TUIO_VERSION))
+MTDEV2TUIO_FORGE = github
+MTDEV2TUIO_FORGE_PATH = olivopaolo/mtdev2tuio
 MTDEV2TUIO_DEPENDENCIES = mtdev liblo
 MTDEV2TUIO_LICENSE = GPLv3+
 MTDEV2TUIO_LICENSE_FILES = COPYING
diff --git a/package/ne10/ne10.mk b/package/ne10/ne10.mk
index cb635e4..5585c99 100644
--- a/package/ne10/ne10.mk
+++ b/package/ne10/ne10.mk
@@ -5,7 +5,8 @@
 ################################################################################
 
 NE10_VERSION = v1.0.0
-NE10_SITE = $(call github,projectNe10,Ne10,$(NE10_VERSION))
+NE10_FORGE = github
+NE10_FORGE_PATH = projectNe10/Ne10
 NE10_LICENSE = BSD-3c or Apache-2.0
 NE10_LICENSE_FILES = doc/LICENSE
 
diff --git a/package/neardal/neardal.mk b/package/neardal/neardal.mk
index 0720fe8..b970cce 100644
--- a/package/neardal/neardal.mk
+++ b/package/neardal/neardal.mk
@@ -5,7 +5,8 @@
 ################################################################################
 
 NEARDAL_VERSION = da8e06d3884d214bb19b894d2b8fdc9c7ca8575f
-NEARDAL_SITE = $(call github,connectivity,neardal,$(NEARDAL_VERSION))
+NEARDAL_FORGE = github
+NEARDAL_FORGE_PATH = connectivity/neardal
 NEARDAL_INSTALL_STAGING = YES
 NEARDAL_LICENSE = GPLv2
 NEARDAL_LICENSE_FILES = COPYING
diff --git a/package/omap-u-boot-utils/omap-u-boot-utils.mk b/package/omap-u-boot-utils/omap-u-boot-utils.mk
index 7cfed65..7d630a1 100644
--- a/package/omap-u-boot-utils/omap-u-boot-utils.mk
+++ b/package/omap-u-boot-utils/omap-u-boot-utils.mk
@@ -5,7 +5,8 @@
 ################################################################################
 
 OMAP_U_BOOT_UTILS_VERSION = 3f07426cddc0be9e24702e7aacc7574ddd7fba28
-OMAP_U_BOOT_UTILS_SITE = $(call github,nmenon,omap-u-boot-utils,$(OMAP_U_BOOT_UTILS_VERSION))
+OMAP_U_BOOT_UTILS_FORGE = github
+OMAP_U_BOOT_UTILS_FORGE_PATH = nmenon/omap-u-boot-utils
 OMAP_U_BOOT_UTILS_LICENSE = GPLv2, GPLv2+
 OMAP_U_BOOT_UTILS_LICENSE_FILES = COPYING
 
diff --git a/package/on2-8170-modules/on2-8170-modules.mk b/package/on2-8170-modules/on2-8170-modules.mk
index 209bcb5..23a5c8c 100644
--- a/package/on2-8170-modules/on2-8170-modules.mk
+++ b/package/on2-8170-modules/on2-8170-modules.mk
@@ -5,7 +5,8 @@
 ################################################################################
 
 ON2_8170_MODULES_VERSION = 73b08061d30789178e692bc332b73d1d9922bf39
-ON2_8170_MODULES_SITE = $(call github,alexandrebelloni,on2-8170-modules,$(ON2_8170_MODULES_VERSION))
+ON2_8170_MODULES_FORGE = github
+ON2_8170_MODULES_FORGE_PATH = alexandrebelloni/on2-8170-modules
 
 ON2_8170_MODULES_DEPENDENCIES = linux
 
diff --git a/package/opencv/opencv.mk b/package/opencv/opencv.mk
index 61f529e..e20e120 100644
--- a/package/opencv/opencv.mk
+++ b/package/opencv/opencv.mk
@@ -5,7 +5,8 @@
 ################################################################################
 
 OPENCV_VERSION = 2.4.10
-OPENCV_SITE = $(call github,itseez,opencv,$(OPENCV_VERSION))
+OPENCV_FORGE = github
+OPENCV_FORGE_PATH = itseez/opencv
 OPENCV_INSTALL_STAGING = YES
 OPENCV_LICENSE = BSD-3c
 OPENCV_LICENSE_FILES = LICENSE
diff --git a/package/pifmrds/pifmrds.mk b/package/pifmrds/pifmrds.mk
index 5179715..0d76361 100644
--- a/package/pifmrds/pifmrds.mk
+++ b/package/pifmrds/pifmrds.mk
@@ -5,7 +5,8 @@
 ################################################################################
 
 PIFMRDS_VERSION = 0bf57f9ce0d954365a38d8af8e7be6f28521c3f2
-PIFMRDS_SITE = $(call github,ChristopheJacquet,PiFmRds,$(PIFMRDS_VERSION))
+PIFMRDS_FORGE = github
+PIFMRDS_FORGE_PATH = ChristopheJacquet/PiFmRds
 PIFMRDS_DEPENDENCIES = libsndfile
 PIFMRDS_LICENSE = GPLv3+
 PIFMRDS_LICENSE_FILES = LICENSE
diff --git a/package/pps-tools/pps-tools.mk b/package/pps-tools/pps-tools.mk
index 7876403..eb310bd 100644
--- a/package/pps-tools/pps-tools.mk
+++ b/package/pps-tools/pps-tools.mk
@@ -5,7 +5,8 @@
 ################################################################################
 
 PPS_TOOLS_VERSION = 0deb9c7e135e9380a6d09e9d2e938a146bb698c8
-PPS_TOOLS_SITE = $(call github,ago,pps-tools,$(PPS_TOOLS_VERSION))
+PPS_TOOLS_FORGE = github
+PPS_TOOLS_FORGE_PATH = ago/pps-tools
 PPS_TOOLS_INSTALL_STAGING = YES
 PPS_TOOLS_LICENSE = GPLv2+
 PPS_TOOLS_LICENSE_FILES = COPYING
diff --git a/package/protobuf-c/protobuf-c.mk b/package/protobuf-c/protobuf-c.mk
index d73eb25..d3b6d01 100644
--- a/package/protobuf-c/protobuf-c.mk
+++ b/package/protobuf-c/protobuf-c.mk
@@ -5,7 +5,8 @@
 ################################################################################
 
 PROTOBUF_C_VERSION = v1.0.0-rc1
-PROTOBUF_C_SITE = $(call github,protobuf-c,protobuf-c,$(PROTOBUF_C_VERSION))
+PROTOBUF_C_FORGE = github
+PROTOBUF_C_FORGE_PATH = protobuf-c/protobuf-c
 PROTOBUF_C_DEPENDENCIES = host-protobuf-c
 HOST_PROTOBUF_C_DEPENDENCIES = host-protobuf host-pkgconf
 PROTOBUF_C_MAKE = $(MAKE1)
diff --git a/package/python-configshell-fb/python-configshell-fb.mk b/package/python-configshell-fb/python-configshell-fb.mk
index 76ef48d..919430a 100644
--- a/package/python-configshell-fb/python-configshell-fb.mk
+++ b/package/python-configshell-fb/python-configshell-fb.mk
@@ -5,7 +5,8 @@
 ################################################################################
 
 PYTHON_CONFIGSHELL_FB_VERSION = v1.1.fb15
-PYTHON_CONFIGSHELL_FB_SITE = $(call github,agrover,configshell-fb,$(PYTHON_CONFIGSHELL_FB_VERSION))
+PYTHON_CONFIGSHELL_FB_FORGE = github
+PYTHON_CONFIGSHELL_FB_FORGE_PATH = agrover/configshell-fb
 PYTHON_CONFIGSHELL_FB_LICENSE = Apache-2.0
 PYTHON_CONFIGSHELL_FB_LICENSE_FILES = COPYING
 PYTHON_CONFIGSHELL_FB_SETUP_TYPE = setuptools
diff --git a/package/python-ipy/python-ipy.mk b/package/python-ipy/python-ipy.mk
index 6773aaf..05ea0db 100644
--- a/package/python-ipy/python-ipy.mk
+++ b/package/python-ipy/python-ipy.mk
@@ -5,7 +5,8 @@
 ################################################################################
 
 PYTHON_IPY_VERSION = IPy-0.82a
-PYTHON_IPY_SITE = $(call github,haypo,python-ipy,$(PYTHON_IPY_VERSION))
+PYTHON_IPY_FORGE = github
+PYTHON_IPY_FORGE_PATH = haypo/python-ipy
 PYTHON_IPY_LICENSE = BSD-3c
 PYTHON_IPY_LICENSE_FILES = COPYING
 PYTHON_IPY_SETUP_TYPE = distutils
diff --git a/package/python-itsdangerous/python-itsdangerous.mk b/package/python-itsdangerous/python-itsdangerous.mk
index 8b055d6..dec8487 100644
--- a/package/python-itsdangerous/python-itsdangerous.mk
+++ b/package/python-itsdangerous/python-itsdangerous.mk
@@ -5,7 +5,8 @@
 ################################################################################
 
 PYTHON_ITSDANGEROUS_VERSION = 0.24
-PYTHON_ITSDANGEROUS_SITE = $(call github,mitsuhiko,itsdangerous,$(PYTHON_ITSDANGEROUS_VERSION))
+PYTHON_ITSDANGEROUS_FORGE = github
+PYTHON_ITSDANGEROUS_FORGE_PATH = mitsuhiko/itsdangerous
 PYTHON_ITSDANGEROUS_SETUP_TYPE = setuptools
 PYTHON_ITSDANGEROUS_LICENSE = BSD-3c
 PYTHON_ITSDANGEROUS_LICENSE_FILES = LICENSE
diff --git a/package/python-libconfig/python-libconfig.mk b/package/python-libconfig/python-libconfig.mk
index 3f5984b..6091834 100644
--- a/package/python-libconfig/python-libconfig.mk
+++ b/package/python-libconfig/python-libconfig.mk
@@ -5,7 +5,8 @@
 ################################################################################
 
 PYTHON_LIBCONFIG_VERSION = b271c3d9dac938ad5cd29b67bd08cc5536a5a391
-PYTHON_LIBCONFIG_SITE = $(call github,cnangel,python-libconfig,$(PYTHON_LIBCONFIG_VERSION))
+PYTHON_LIBCONFIG_FORGE = github
+PYTHON_LIBCONFIG_FORGE_PATH = cnangel/python-libconfig
 
 PYTHON_LIBCONFIG_LICENSE = BSD
 PYTHON_LIBCONFIG_LICENSE_FILES = README
diff --git a/package/python-pyusb/python-pyusb.mk b/package/python-pyusb/python-pyusb.mk
index ae69026..740da7b 100644
--- a/package/python-pyusb/python-pyusb.mk
+++ b/package/python-pyusb/python-pyusb.mk
@@ -5,7 +5,8 @@
 ################################################################################
 
 PYTHON_PYUSB_VERSION = 1.0.0b2
-PYTHON_PYUSB_SITE = $(call github,walac,pyusb,$(PYTHON_PYUSB_VERSION))
+PYTHON_PYUSB_FORGE = github
+PYTHON_PYUSB_FORGE_PATH = walac/pyusb
 PYTHON_PYUSB_LICENSE = BSD-3c
 PYTHON_PYUSB_LICENSE_FILES = LICENSE
 PYTHON_PYUSB_SETUP_TYPE = distutils
diff --git a/package/python-rtslib-fb/python-rtslib-fb.mk b/package/python-rtslib-fb/python-rtslib-fb.mk
index d45c261..0fb4358 100644
--- a/package/python-rtslib-fb/python-rtslib-fb.mk
+++ b/package/python-rtslib-fb/python-rtslib-fb.mk
@@ -5,7 +5,8 @@
 ################################################################################
 
 PYTHON_RTSLIB_FB_VERSION = v2.1.fb50
-PYTHON_RTSLIB_FB_SITE = $(call github,agrover,rtslib-fb,$(PYTHON_RTSLIB_FB_VERSION))
+PYTHON_RTSLIB_FB_FORGE = github
+PYTHON_RTSLIB_FB_FORGE_PATH = agrover/rtslib-fb
 PYTHON_RTSLIB_FB_LICENSE = Apache-2.0
 PYTHON_RTSLIB_FB_LICENSE_FILES = COPYING
 PYTHON_RTSLIB_FB_SETUP_TYPE = setuptools
diff --git a/package/python-webpy/python-webpy.mk b/package/python-webpy/python-webpy.mk
index ef5b6b3..33e3a77 100644
--- a/package/python-webpy/python-webpy.mk
+++ b/package/python-webpy/python-webpy.mk
@@ -5,7 +5,8 @@
 ################################################################################
 
 PYTHON_WEBPY_VERSION = 0.37
-PYTHON_WEBPY_SITE = $(call github,webpy,webpy,webpy-$(PYTHON_WEBPY_VERSION))
+PYTHON_WEBPY_FORGE = github
+PYTHON_WEBPY_FORGE_PATH = webpy/webpy
 PYTHON_WEBPY_SETUP_TYPE = distutils
 PYTHON_WEBPY_LICENSE = Public Domain, CherryPy License
 PYTHON_WEBPY_LICENSE_FILES = LICENSE.txt web/wsgiserver/LICENSE.txt
diff --git a/package/qdecoder/qdecoder.mk b/package/qdecoder/qdecoder.mk
index bbbf42a..c4e9ff5 100644
--- a/package/qdecoder/qdecoder.mk
+++ b/package/qdecoder/qdecoder.mk
@@ -5,7 +5,8 @@
 ################################################################################
 
 QDECODER_VERSION = r12.0.5
-QDECODER_SITE = $(call github,wolkykim,qdecoder,$(QDECODER_VERSION))
+QDECODER_FORGE = github
+QDECODER_FORGE_PATH = wolkykim/qdecoder
 QDECODER_LICENSE = BSD-2
 QDECODER_LICENSE_FILES = COPYING
 # we patch configure.ac
diff --git a/package/qjson/qjson.mk b/package/qjson/qjson.mk
index 6a16617..555adb5 100644
--- a/package/qjson/qjson.mk
+++ b/package/qjson/qjson.mk
@@ -5,7 +5,8 @@
 ################################################################################
 
 QJSON_VERSION = ba273682a9d33a7b3090e74f4742b5f3bf6c9b02
-QJSON_SITE = $(call github,flavio,qjson,$(QJSON_VERSION))
+QJSON_FORGE = github
+QJSON_FORGE_PATH = flavio/qjson
 QJSON_INSTALL_STAGING = YES
 QJSON_DEPENDENCIES = \
 	$(if $(BR2_PACKAGE_QT),qt) \
diff --git a/package/qlibc/qlibc.mk b/package/qlibc/qlibc.mk
index 6a747e4..a7f7bc5 100644
--- a/package/qlibc/qlibc.mk
+++ b/package/qlibc/qlibc.mk
@@ -5,7 +5,8 @@
 ################################################################################
 
 QLIBC_VERSION = v2.1.6
-QLIBC_SITE = $(call github,wolkykim,qlibc,$(QLIBC_VERSION))
+QLIBC_FORGE = github
+QLIBC_FORGE_PATH = wolkykim/qlibc
 QLIBC_LICENSE = BSD-2c
 QLIBC_LICENSE_FILES = COPYING
 
diff --git a/package/qtuio/qtuio.mk b/package/qtuio/qtuio.mk
index 9925f84..70301b3 100644
--- a/package/qtuio/qtuio.mk
+++ b/package/qtuio/qtuio.mk
@@ -5,7 +5,8 @@
 ################################################################################
 
 QTUIO_VERSION = abe4973ff60654aad9df7037c4ca15c45f811d24
-QTUIO_SITE = $(call github,x29a,qTUIO,$(QTUIO_VERSION))
+QTUIO_FORGE = github
+QTUIO_FORGE_PATH = x29a/qTUIO
 QTUIO_INSTALL_STAGING = YES
 QTUIO_DEPENDENCIES = qt
 
diff --git a/package/rapidjson/rapidjson.mk b/package/rapidjson/rapidjson.mk
index 6658da2..8a60201 100644
--- a/package/rapidjson/rapidjson.mk
+++ b/package/rapidjson/rapidjson.mk
@@ -5,7 +5,8 @@
 ################################################################################
 
 RAPIDJSON_VERSION = 39f5eeb764c6d1e1cbff1717410d9710bf943009
-RAPIDJSON_SITE = $(call github,miloyip,rapidjson,$(RAPIDJSON_VERSION))
+RAPIDJSON_FORGE = github
+RAPIDJSON_FORGE_PATH = miloyip/rapidjson
 RAPIDJSON_LICENSE = MIT
 RAPIDJSON_LICENSE_FILES = license.txt
 RAPIDJSON_INSTALL_TARGET = NO
diff --git a/package/rpi-firmware/rpi-firmware.mk b/package/rpi-firmware/rpi-firmware.mk
index 033ff33..2bd0e07 100644
--- a/package/rpi-firmware/rpi-firmware.mk
+++ b/package/rpi-firmware/rpi-firmware.mk
@@ -5,7 +5,8 @@
 ################################################################################
 
 RPI_FIRMWARE_VERSION = 53162d55fa557e60453c0652aa00fa3daf4ed618
-RPI_FIRMWARE_SITE = $(call github,raspberrypi,firmware,$(RPI_FIRMWARE_VERSION))
+RPI_FIRMWARE_FORGE = github
+RPI_FIRMWARE_FORGE_PATH = raspberrypi/firmware
 RPI_FIRMWARE_LICENSE = BSD-3c
 RPI_FIRMWARE_LICENSE_FILES = boot/LICENCE.broadcom
 
diff --git a/package/rpi-userland/rpi-userland.mk b/package/rpi-userland/rpi-userland.mk
index 3f92950..3cba481 100644
--- a/package/rpi-userland/rpi-userland.mk
+++ b/package/rpi-userland/rpi-userland.mk
@@ -5,7 +5,8 @@
 ################################################################################
 
 RPI_USERLAND_VERSION = ba753c1a7f68d7a2e00edaf03364eef001e233ef
-RPI_USERLAND_SITE = $(call github,raspberrypi,userland,$(RPI_USERLAND_VERSION))
+RPI_USERLAND_FORGE = github
+RPI_USERLAND_FORGE_PATH = raspberrypi/userland
 RPI_USERLAND_LICENSE = BSD-3c
 RPI_USERLAND_LICENSE_FILES = LICENCE
 RPI_USERLAND_INSTALL_STAGING = YES
diff --git a/package/sconeserver/sconeserver.mk b/package/sconeserver/sconeserver.mk
index fd2123d..d5172d7 100644
--- a/package/sconeserver/sconeserver.mk
+++ b/package/sconeserver/sconeserver.mk
@@ -7,7 +7,8 @@
 # Release 0.6.0 doesn't build cleanly, so use a recent
 # Git commit.
 SCONESERVER_VERSION = 3b886c3dda6eda39bcb27472d29ed7fd3185ba1d
-SCONESERVER_SITE = $(call github,sconemad,sconeserver,$(SCONESERVER_VERSION))
+SCONESERVER_FORGE = github
+SCONESERVER_FORGE_PATH = sconemad/sconeserver
 SCONESERVER_LICENSE = GPLv2+
 SCONESERVER_LICENSE_FILES = COPYING
 
diff --git a/package/shairport-sync/shairport-sync.mk b/package/shairport-sync/shairport-sync.mk
index 39017a0..1ffdf28 100644
--- a/package/shairport-sync/shairport-sync.mk
+++ b/package/shairport-sync/shairport-sync.mk
@@ -5,7 +5,8 @@
 ################################################################################
 
 SHAIRPORT_SYNC_VERSION = 2.1.11
-SHAIRPORT_SYNC_SITE = $(call github,mikebrady,shairport-sync,$(SHAIRPORT_SYNC_VERSION))
+SHAIRPORT_SYNC_FORGE = github
+SHAIRPORT_SYNC_FORGE_PATH = mikebrady/shairport-sync
 
 SHAIRPORT_SYNC_LICENSE = MIT, BSD-3c
 SHAIRPORT_SYNC_LICENSE_FILES = LICENSES
diff --git a/package/smack/smack.mk b/package/smack/smack.mk
index 7e0a362..82e4d05 100644
--- a/package/smack/smack.mk
+++ b/package/smack/smack.mk
@@ -5,7 +5,8 @@
 ################################################################################
 
 SMACK_VERSION = v1.0.4
-SMACK_SITE = $(call github,smack-team,smack,$(SMACK_VERSION))
+SMACK_FORGE = github
+SMACK_FORGE_PATH = smack-team/smack
 SMACK_LICENSE = LGPLv2.1
 SMACK_LICENSE_FILES = COPYING
 SMACK_INSTALL_STAGING = YES
diff --git a/package/snappy/snappy.mk b/package/snappy/snappy.mk
index fd89325..c0713ab 100644
--- a/package/snappy/snappy.mk
+++ b/package/snappy/snappy.mk
@@ -5,7 +5,8 @@
 ################################################################################
 
 SNAPPY_VERSION = 1ff9be9b8fafc8528ca9e055646f5932aa5db9c4
-SNAPPY_SITE = $(call github,google,snappy,$(SNAPPY_VERSION))
+SNAPPY_FORGE = github
+SNAPPY_FORGE_PATH = google/snappy
 SNAPPY_LICENSE = BSD-3c
 SNAPPY_LICENSE_FILES = COPYING
 # from git
diff --git a/package/snowball-hdmiservice/snowball-hdmiservice.mk b/package/snowball-hdmiservice/snowball-hdmiservice.mk
index 267b5ad..9e241db 100644
--- a/package/snowball-hdmiservice/snowball-hdmiservice.mk
+++ b/package/snowball-hdmiservice/snowball-hdmiservice.mk
@@ -5,7 +5,8 @@
 ################################################################################
 
 SNOWBALL_HDMISERVICE_VERSION = f75c99d1c52707240a78b4ba78e41d20d3aa3b08
-SNOWBALL_HDMISERVICE_SITE = $(call github,igloocommunity,hdmiservice,$(SNOWBALL_HDMISERVICE_VERSION))
+SNOWBALL_HDMISERVICE_FORGE = github
+SNOWBALL_HDMISERVICE_FORGE_PATH = igloocommunity/hdmiservice
 SNOWBALL_HDMISERVICE_LICENSE = MIT
 SNOWBALL_HDMISERVICE_LICENSE_FILES = debian/copyright
 SNOWBALL_HDMISERVICE_INSTALL_STAGING = YES
diff --git a/package/socketcand/socketcand.mk b/package/socketcand/socketcand.mk
index 90d7540..a7b8157 100644
--- a/package/socketcand/socketcand.mk
+++ b/package/socketcand/socketcand.mk
@@ -5,7 +5,8 @@
 ################################################################################
 
 SOCKETCAND_VERSION = 274e4e44107f6138a29bbc4e20f9fbd2a7d4dab1
-SOCKETCAND_SITE = $(call github,dschanoeh,socketcand,$(SOCKETCAND_VERSION))
+SOCKETCAND_FORGE = github
+SOCKETCAND_FORGE_PATH = dschanoeh/socketcand
 SOCKETCAND_AUTORECONF = YES
 SOCKETCAND_LICENSE = BSD-3c or GPLv2
 SOCKETCAND_LICENSE_FILES = socketcand.c
diff --git a/package/sqlcipher/sqlcipher.mk b/package/sqlcipher/sqlcipher.mk
index 9b4446c..b703b97 100644
--- a/package/sqlcipher/sqlcipher.mk
+++ b/package/sqlcipher/sqlcipher.mk
@@ -5,7 +5,8 @@
 ################################################################################
 
 SQLCIPHER_VERSION = v3.2.0
-SQLCIPHER_SITE = $(call github,sqlcipher,sqlcipher,$(SQLCIPHER_VERSION))
+SQLCIPHER_FORGE = github
+SQLCIPHER_FORGE_PATH = sqlcipher/sqlcipher
 SQLCIPHER_DEPENDENCIES = openssl host-tcl
 SQLCIPHER_INSTALL_STAGING = YES
 
diff --git a/package/sunxi-boards/sunxi-boards.mk b/package/sunxi-boards/sunxi-boards.mk
index 1a2bb4c..7157f2a 100644
--- a/package/sunxi-boards/sunxi-boards.mk
+++ b/package/sunxi-boards/sunxi-boards.mk
@@ -5,7 +5,8 @@
 ################################################################################
 
 SUNXI_BOARDS_VERSION = 68acb3b1610a44b9402560623f7e35b7882585e9
-SUNXI_BOARDS_SITE = $(call github,linux-sunxi,sunxi-boards,$(SUNXI_BOARDS_VERSION))
+SUNXI_BOARDS_FORGE = github
+SUNXI_BOARDS_FORGE_PATH = linux-sunxi/sunxi-boards
 SUNXI_BOARDS_DEPENDENCIES = host-sunxi-tools
 SUNXI_BOARDS_INSTALL_IMAGES = YES
 SUNXI_BOARDS_INSTALL_TARGET = NO
diff --git a/package/sunxi-cedarx/sunxi-cedarx.mk b/package/sunxi-cedarx/sunxi-cedarx.mk
index 219f1bc..97986dd 100644
--- a/package/sunxi-cedarx/sunxi-cedarx.mk
+++ b/package/sunxi-cedarx/sunxi-cedarx.mk
@@ -5,7 +5,8 @@
 ################################################################################
 
 SUNXI_CEDARX_VERSION = b8f52d913f73720e50d8f1b2f8610467b575dc45
-SUNXI_CEDARX_SITE = $(call github,linux-sunxi,cedarx-libs,$(SUNXI_CEDARX_VERSION))
+SUNXI_CEDARX_FORGE = github
+SUNXI_CEDARX_FORGE_PATH = linux-sunxi/cedarx-libs
 
 SUNXI_CEDARX_INSTALL_STAGING = YES
 
diff --git a/package/sunxi-mali-prop/sunxi-mali-prop.mk b/package/sunxi-mali-prop/sunxi-mali-prop.mk
index 0cb2d93..5505967 100644
--- a/package/sunxi-mali-prop/sunxi-mali-prop.mk
+++ b/package/sunxi-mali-prop/sunxi-mali-prop.mk
@@ -5,6 +5,7 @@
 ################################################################################
 
 SUNXI_MALI_PROP_VERSION = e4ced471d576708ac9aa093e41a0f91cf429862b
-SUNXI_MALI_PROP_SITE = $(call github,linux-sunxi,sunxi-mali-proprietary,$(SUNXI_MALI_PROP_VERSION))
+SUNXI_MALI_PROP_FORGE = github
+SUNXI_MALI_PROP_FORGE_PATH = linux-sunxi/sunxi-mali-proprietary
 
 $(eval $(generic-package))
diff --git a/package/sunxi-mali/sunxi-mali.mk b/package/sunxi-mali/sunxi-mali.mk
index c6900c8..ea9f37c 100644
--- a/package/sunxi-mali/sunxi-mali.mk
+++ b/package/sunxi-mali/sunxi-mali.mk
@@ -5,7 +5,8 @@
 ################################################################################
 
 SUNXI_MALI_VERSION = c2491fe952354ba44538064e534ed7c731cedb1e
-SUNXI_MALI_SITE = $(call github,linux-sunxi,sunxi-mali,$(SUNXI_MALI_VERSION))
+SUNXI_MALI_FORGE = github
+SUNXI_MALI_FORGE_PATH = linux-sunxi/sunxi-mali
 
 SUNXI_MALI_INSTALL_STAGING = YES
 SUNXI_MALI_DEPENDENCIES = sunxi-mali-prop
diff --git a/package/sunxi-tools/sunxi-tools.mk b/package/sunxi-tools/sunxi-tools.mk
index f84b286..062ec84 100644
--- a/package/sunxi-tools/sunxi-tools.mk
+++ b/package/sunxi-tools/sunxi-tools.mk
@@ -5,7 +5,8 @@
 ################################################################################
 
 SUNXI_TOOLS_VERSION = ed6f7969d80b91048b0ed95ccb61cc98f46fead7
-SUNXI_TOOLS_SITE = $(call github,linux-sunxi,sunxi-tools,$(SUNXI_TOOLS_VERSION))
+SUNXI_TOOLS_FORGE = github
+SUNXI_TOOLS_FORGE_PATH = linux-sunxi/sunxi-tools
 SUNXI_TOOLS_LICENSE = GPLv2+
 SUNXI_TOOLS_LICENSE_FILES = COPYING
 HOST_SUNXI_TOOLS_DEPENDENCIES = host-libusb
diff --git a/package/targetcli-fb/targetcli-fb.mk b/package/targetcli-fb/targetcli-fb.mk
index b5f2fbe..8532977 100644
--- a/package/targetcli-fb/targetcli-fb.mk
+++ b/package/targetcli-fb/targetcli-fb.mk
@@ -5,7 +5,8 @@
 ################################################################################
 
 TARGETCLI_FB_VERSION = v2.1.fb37
-TARGETCLI_FB_SITE = $(call github,agrover,targetcli-fb,$(TARGETCLI_FB_VERSION))
+TARGETCLI_FB_FORGE = github
+TARGETCLI_FB_FORGE_PATH = agrover/targetcli-fb
 TARGETCLI_FB_LICENSE = Apache-2.0
 TARGETCLI_FB_LICENSE_FILES = COPYING
 TARGETCLI_FB_SETUP_TYPE = setuptools
diff --git a/package/ti-utils/ti-utils.mk b/package/ti-utils/ti-utils.mk
index 7ee7afa..8f74449 100644
--- a/package/ti-utils/ti-utils.mk
+++ b/package/ti-utils/ti-utils.mk
@@ -5,7 +5,8 @@
 ################################################################################
 
 TI_UTILS_VERSION = 06dbdb2727354b5f3ad7c723897f40051fddee49
-TI_UTILS_SITE = $(call github,gxk,ti-utils,$(TI_UTILS_VERSION))
+TI_UTILS_FORGE = github
+TI_UTILS_FORGE_PATH = gxk/ti-utils
 TI_UTILS_DEPENDENCIES = libnl
 TI_UTILS_LICENSE = BSD-3c
 TI_UTILS_LICENSE_FILES = COPYING
diff --git a/package/tinyalsa/tinyalsa.mk b/package/tinyalsa/tinyalsa.mk
index a3dcc9a..b5ab7e2 100644
--- a/package/tinyalsa/tinyalsa.mk
+++ b/package/tinyalsa/tinyalsa.mk
@@ -5,7 +5,8 @@
 #############################################################
 
 TINYALSA_VERSION = f2a7b6d3d81bd337a540d56704b4aaa7bdb046fe
-TINYALSA_SITE = $(call github,tinyalsa,tinyalsa,$(TINYALSA_VERSION))
+TINYALSA_FORGE = github
+TINYALSA_FORGE_PATH = tinyalsa/tinyalsa
 TINYALSA_LICENSE = BSD-3c
 TINYALSA_INSTALL_STAGING = YES
 
diff --git a/package/tinymembench/tinymembench.mk b/package/tinymembench/tinymembench.mk
index ab479d6..f10e1ac 100644
--- a/package/tinymembench/tinymembench.mk
+++ b/package/tinymembench/tinymembench.mk
@@ -5,7 +5,8 @@
 ################################################################################
 
 TINYMEMBENCH_VERSION = v0.3
-TINYMEMBENCH_SITE = $(call github,ssvb,tinymembench,$(TINYMEMBENCH_VERSION))
+TINYMEMBENCH_FORGE = github
+TINYMEMBENCH_FORGE_PATH = ssvb/tinymembench
 TINYMEMBENCH_LICENSE = MIT
 TINYMEMBENCH_LICENSE_FILES = main.c
 
diff --git a/package/trinity/trinity.mk b/package/trinity/trinity.mk
index 52805e0..c17699a 100644
--- a/package/trinity/trinity.mk
+++ b/package/trinity/trinity.mk
@@ -5,7 +5,8 @@
 ################################################################################
 
 TRINITY_VERSION = 5d2dfe9727eb9c8dc44c31e95968e8d85284ffcc
-TRINITY_SITE = $(call github,kernelslacker,trinity,$(TRINITY_VERSION))
+TRINITY_FORGE = github
+TRINITY_FORGE_PATH = kernelslacker/trinity
 TRINITY_LICENSE = GPLv2
 TRINITY_LICENSE_FILES = COPYING
 
diff --git a/package/tslib/tslib.mk b/package/tslib/tslib.mk
index 51aaf23..fd4770b 100644
--- a/package/tslib/tslib.mk
+++ b/package/tslib/tslib.mk
@@ -5,7 +5,8 @@
 ################################################################################
 
 TSLIB_VERSION = 1.1
-TSLIB_SITE = $(call github,kergoth,tslib,$(TSLIB_VERSION))
+TSLIB_FORGE = github
+TSLIB_FORGE_PATH = kergoth/tslib
 TSLIB_LICENSE = GPL, LGPL
 TSLIB_LICENSE_FILES = COPYING
 
diff --git a/package/tvheadend/tvheadend.mk b/package/tvheadend/tvheadend.mk
index f593b3f..2c48c4d 100644
--- a/package/tvheadend/tvheadend.mk
+++ b/package/tvheadend/tvheadend.mk
@@ -5,7 +5,8 @@
 ################################################################################
 
 TVHEADEND_VERSION = fcd16fa0d835d7fd4f57c350ed8b76350440c68c
-TVHEADEND_SITE = $(call github,tvheadend,tvheadend,$(TVHEADEND_VERSION))
+TVHEADEND_FORGE = github
+TVHEADEND_FORGE_PATH = tvheadend/tvheadend
 TVHEADEND_LICENSE = GPLv3+
 TVHEADEND_LICENSE_FILES = LICENSE.md
 TVHEADEND_DEPENDENCIES = host-pkgconf $(if $(BR2_PACKAGE_PYTHON3),host-python3,host-python) openssl
diff --git a/package/tzdump/tzdump.mk b/package/tzdump/tzdump.mk
index 3f035a5..bc136b6 100644
--- a/package/tzdump/tzdump.mk
+++ b/package/tzdump/tzdump.mk
@@ -5,7 +5,8 @@
 ################################################################################
 
 TZDUMP_VERSION = 65a10105564801094b18c3fcacf4dde4c44e4ab8
-TZDUMP_SITE = $(call github,alexandrebelloni,tzdump,$(TZDUMP_VERSION))
+TZDUMP_FORGE = github
+TZDUMP_FORGE_PATH = alexandrebelloni/tzdump
 HOST_TZDUMP_DEPENDENCIES = host-zic
 
 define HOST_TZDUMP_BUILD_CMDS
diff --git a/package/uclibc/uclibc.mk b/package/uclibc/uclibc.mk
index 2d95ce1..753853c 100644
--- a/package/uclibc/uclibc.mk
+++ b/package/uclibc/uclibc.mk
@@ -12,7 +12,8 @@ UCLIBC_LICENSE_FILES = COPYING.LIB
 ifeq ($(BR2_UCLIBC_VERSION_SNAPSHOT),y)
 UCLIBC_SITE = http://www.uclibc.org/downloads/snapshots
 else ifeq ($(BR2_arc),y)
-UCLIBC_SITE = $(call github,foss-for-synopsys-dwc-arc-processors,uClibc,$(UCLIBC_VERSION))
+UCLIBC_FORGE = github
+UCLIBC_FORGE_PATH = foss-for-synopsys-dwc-arc-processors/uClibc
 UCLIBC_SOURCE = uClibc-$(UCLIBC_VERSION).tar.gz
 else ifeq ($(BR2_UCLIBC_VERSION_XTENSA_GIT),y)
 UCLIBC_SITE = git://git.busybox.net/uClibc
diff --git a/package/xbmc-addon-xvdr/xbmc-addon-xvdr.mk b/package/xbmc-addon-xvdr/xbmc-addon-xvdr.mk
index a4d9624..87d5100 100644
--- a/package/xbmc-addon-xvdr/xbmc-addon-xvdr.mk
+++ b/package/xbmc-addon-xvdr/xbmc-addon-xvdr.mk
@@ -8,7 +8,8 @@
 # follow it, as incompatible changes in the plugins API can happen
 # on the master branch.
 XBMC_ADDON_XVDR_VERSION = 82b5093ad33847f97a978cb620c9a87d2dbcf7eb
-XBMC_ADDON_XVDR_SITE = $(call github,pipelka,xbmc-addon-xvdr,$(XBMC_ADDON_XVDR_VERSION))
+XBMC_ADDON_XVDR_FORGE = github
+XBMC_ADDON_XVDR_FORGE_PATH = pipelka/xbmc-addon-xvdr
 XBMC_ADDON_XVDR_LICENSE = GPLv2+
 XBMC_ADDON_XVDR_LICENSE_FILES = COPYING
 
diff --git a/package/xbmc-pvr-addons/xbmc-pvr-addons.mk b/package/xbmc-pvr-addons/xbmc-pvr-addons.mk
index bfcb7ed..b16124f 100644
--- a/package/xbmc-pvr-addons/xbmc-pvr-addons.mk
+++ b/package/xbmc-pvr-addons/xbmc-pvr-addons.mk
@@ -7,7 +7,8 @@
 # This cset is on the branch 'gotham'
 # When XBMC is updated, then this should be updated to the corresponding branch
 XBMC_PVR_ADDONS_VERSION = be12a8da2072e9c3ddad54892df2f85b759d4e9a
-XBMC_PVR_ADDONS_SITE = $(call github,opdenkamp,xbmc-pvr-addons,$(XBMC_PVR_ADDONS_VERSION))
+XBMC_PVR_ADDONS_FORGE = github
+XBMC_PVR_ADDONS_FORGE_PATH = opdenkamp/xbmc-pvr-addons
 XBMC_PVR_ADDONS_LICENSE = GPLv3+
 XBMC_PVR_ADDONS_LICENSE_FILES = COPYING
 
diff --git a/package/xinetd/xinetd.mk b/package/xinetd/xinetd.mk
index 92d0d53..33bad4a 100644
--- a/package/xinetd/xinetd.mk
+++ b/package/xinetd/xinetd.mk
@@ -5,7 +5,8 @@
 ################################################################################
 
 XINETD_VERSION = xinetd-2-3-15
-XINETD_SITE = $(call github,xinetd-org,xinetd,$(XINETD_VERSION))
+XINETD_FORGE = github
+XINETD_FORGE_PATH = xinetd-org/xinetd
 XINETD_LICENSE = xinetd license
 XINETD_LICENSE_FILES = COPYRIGHT
 
diff --git a/package/xl2tp/xl2tp.mk b/package/xl2tp/xl2tp.mk
index abed7e8..d0f1214 100644
--- a/package/xl2tp/xl2tp.mk
+++ b/package/xl2tp/xl2tp.mk
@@ -5,7 +5,8 @@
 ################################################################################
 
 XL2TP_VERSION = v1.3.6
-XL2TP_SITE = $(call github,xelerance,xl2tpd,$(XL2TP_VERSION))
+XL2TP_FORGE = github
+XL2TP_FORGE_PATH = xelerance/xl2tpd
 XL2TP_DEPENDENCIES = libpcap openssl
 XL2TP_LICENSE = GPLv2
 XL2TP_LICENSE_FILES = LICENSE
diff --git a/package/yajl/yajl.mk b/package/yajl/yajl.mk
index ff64123..5b4d6c1 100644
--- a/package/yajl/yajl.mk
+++ b/package/yajl/yajl.mk
@@ -5,7 +5,8 @@
 ################################################################################
 
 YAJL_VERSION = 2.0.4
-YAJL_SITE = $(call github,lloyd,yajl,$(YAJL_VERSION))
+YAJL_FORGE = github
+YAJL_FORGE_PATH = lloyd/yajl
 YAJL_INSTALL_STAGING = YES
 YAJL_LICENSE = ISC
 YAJL_LICENSE_FILES = COPYING
diff --git a/package/ympd/ympd.mk b/package/ympd/ympd.mk
index 2898c9d..fb56b52 100644
--- a/package/ympd/ympd.mk
+++ b/package/ympd/ympd.mk
@@ -5,7 +5,8 @@
 ################################################################################
 
 YMPD_VERSION = a98d760dddff4b0dd595d977c9077f34beff05c5
-YMPD_SITE = $(call github,notandy,ympd,$(YMPD_VERSION))
+YMPD_FORGE = github
+YMPD_FORGE_PATH = notandy/ympd
 YMPD_LICENSE = GPLv2
 YMPD_LICENSE_FILE = LICENSE
 YMPD_DEPENDENCIES = libmpdclient
diff --git a/package/zlog/zlog.mk b/package/zlog/zlog.mk
index fb8762c..1a8ce2c 100644
--- a/package/zlog/zlog.mk
+++ b/package/zlog/zlog.mk
@@ -5,7 +5,8 @@
 ################################################################################
 
 ZLOG_VERSION = ca6162be1608839e99c6388c28488c51ccf98e4a
-ZLOG_SITE = $(call github,HardySimpson,zlog,$(ZLOG_VERSION))
+ZLOG_FORGE = github
+ZLOG_FORGE_PATH = HardySimpson/zlog
 ZLOG_LICENSE = LGPLv2.1
 ZLOG_LICENSE_FILES = COPYING
 ZLOG_INSTALL_STAGING = YES
diff --git a/package/zmqpp/zmqpp.mk b/package/zmqpp/zmqpp.mk
index fbb0260..8bede6c 100644
--- a/package/zmqpp/zmqpp.mk
+++ b/package/zmqpp/zmqpp.mk
@@ -5,7 +5,8 @@
 ################################################################################
 
 ZMQPP_VERSION = 36413487f05b165dfc82ad307a5a1c36a795e607
-ZMQPP_SITE = $(call github,benjamg,zmqpp,$(ZMQPP_VERSION))
+ZMQPP_FORGE = github
+ZMQPP_FORGE_PATH = benjamg/zmqpp
 ZMQPP_INSTALL_STAGING = YES
 ZMQPP_DEPENDENCIES = zeromq
 ZMQPP_LICENSE = LGPLv3+ with exceptions
diff --git a/package/znc/znc.mk b/package/znc/znc.mk
index 779a7b1..f559731 100644
--- a/package/znc/znc.mk
+++ b/package/znc/znc.mk
@@ -5,7 +5,8 @@
 ################################################################################
 
 ZNC_VERSION = b396cafdb249544164ed02942a5babba59e519a3
-ZNC_SITE = $(call github,znc,znc,$(ZNC_VERSION))
+ZNC_FORGE = github
+ZNC_FORGE_PATH = znc/znc
 ZNC_LICENSE = Apache-2.0
 ZNC_LICENSE_FILES = LICENSE
 ZNC_DEPENDENCIES = host-pkgconf host-autoconf host-automake
diff --git a/package/zyre/zyre.mk b/package/zyre/zyre.mk
index 661dddc..c66c357 100644
--- a/package/zyre/zyre.mk
+++ b/package/zyre/zyre.mk
@@ -5,7 +5,8 @@
 ################################################################################
 
 ZYRE_VERSION = v1.0.0
-ZYRE_SITE = $(call github,zeromq,zyre,$(ZYRE_VERSION))
+ZYRE_FORGE = github
+ZYRE_FORGE_PATH = zeromq/zyre
 ZYRE_LICENSE = LGPLv3+
 ZYRE_LICENSE_FILES = COPYING COPYING.LESSER
 ZYRE_INSTALL_STAGING = YES
-- 
1.9.1

^ permalink raw reply related	[flat|nested] 12+ messages in thread

* [Buildroot] [PATCH 8/9 v2] packages: switch to using the gitorious forge
  2014-12-06 11:13 [Buildroot] [PATCH 0/9 v2] pkg-infra: better github handling, download enhancements (branch yem/download) Yann E. MORIN
                   ` (6 preceding siblings ...)
  2014-12-06 11:13 ` [Buildroot] [PATCH 7/9 v2] packages: switch to using the github forge Yann E. MORIN
@ 2014-12-06 11:13 ` Yann E. MORIN
  2014-12-06 11:13 ` [Buildroot] [PATCH 9/9 v2] pkg-infra: remove the legacy github helper Yann E. MORIN
  8 siblings, 0 replies; 12+ messages in thread
From: Yann E. MORIN @ 2014-12-06 11:13 UTC (permalink / raw
  To: buildroot

Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
---
 boot/xloader/xloader.mk                | 3 ++-
 package/can-utils/can-utils.mk         | 3 ++-
 package/lpc3250loader/lpc3250loader.mk | 3 ++-
 package/qhull/qhull.mk                 | 3 ++-
 package/ti-uim/ti-uim.mk               | 3 ++-
 5 files changed, 10 insertions(+), 5 deletions(-)

diff --git a/boot/xloader/xloader.mk b/boot/xloader/xloader.mk
index 90d5fa2..a9319b1 100644
--- a/boot/xloader/xloader.mk
+++ b/boot/xloader/xloader.mk
@@ -5,7 +5,8 @@
 ################################################################################
 
 XLOADER_VERSION = 6f3a26101303051e0f91b6213735b68ce804e94e
-XLOADER_SITE = git://gitorious.org/x-loader/x-loader.git
+XLOADER_FORGE = gitorious
+XLOADER_FORGE_PATH = x-loader/x-loader
 XLOADER_BOARD_NAME = $(call qstrip,$(BR2_TARGET_XLOADER_BOARDNAME))
 
 XLOADER_LICENSE = GPLv2+
diff --git a/package/can-utils/can-utils.mk b/package/can-utils/can-utils.mk
index 44713cf..3bdbf15 100644
--- a/package/can-utils/can-utils.mk
+++ b/package/can-utils/can-utils.mk
@@ -5,7 +5,8 @@
 ################################################################################
 
 CAN_UTILS_VERSION = 111f8d3acf6f6b30bf208fd9c98399c5fb9d29de
-CAN_UTILS_SITE = git://gitorious.org/linux-can/can-utils.git
+CAN_UTILS_FORGE = gitorious
+CAN_UTILS_FORGE_PATH = linux-can/can-utils
 CAN_UTILS_AUTORECONF = YES
 
 $(eval $(autotools-package))
diff --git a/package/lpc3250loader/lpc3250loader.mk b/package/lpc3250loader/lpc3250loader.mk
index d13ab40..ff0cedf 100644
--- a/package/lpc3250loader/lpc3250loader.mk
+++ b/package/lpc3250loader/lpc3250loader.mk
@@ -4,7 +4,8 @@
 #
 ################################################################################
 
-HOST_LPC3250LOADER_SITE = git://gitorious.org/lpc3250loader/lpc3250loader.git
+HOST_LPC3250LOADER_FORGE = gitorious
+HOST_LPC3250LOADER_FORGE_PATH = lpc3250loader/lpc3250loader
 HOST_LPC3250LOADER_VERSION = 1.0
 LPC3250LOADER_LICENSE = GPLv2+
 LPC3250LOADER_LICENSE_FILES = LPC3250loader.py
diff --git a/package/qhull/qhull.mk b/package/qhull/qhull.mk
index 6992d71..9de72fc 100644
--- a/package/qhull/qhull.mk
+++ b/package/qhull/qhull.mk
@@ -5,7 +5,8 @@
 ################################################################################
 
 QHULL_VERSION = 60d55819729d7b49391dde0271e15a56c70992b9
-QHULL_SITE = git://gitorious.org/qhull/qhull.git
+QHULL_FORGE = gitorious
+QHULL_FORGE_PATH = qhull/qhull
 QHULL_INSTALL_STAGING = YES
 QHULL_LICENSE = BSD-Style
 QHULL_LICENSE_FILES = COPYING.txt
diff --git a/package/ti-uim/ti-uim.mk b/package/ti-uim/ti-uim.mk
index b498180..381fbe0 100644
--- a/package/ti-uim/ti-uim.mk
+++ b/package/ti-uim/ti-uim.mk
@@ -5,7 +5,8 @@
 ################################################################################
 
 TI_UIM_VERSION = c73894456df5def97111cb33d2106b684b8b7959
-TI_UIM_SITE = git://gitorious.org/uim/uim.git
+TI_UIM_FORGE = gitorious
+TI_UIM_FORGE_PATH = uim/uim
 TI_UIM_LICENSE = GPLv2+
 
 define TI_UIM_BUILD_CMDS
-- 
1.9.1

^ permalink raw reply related	[flat|nested] 12+ messages in thread

* [Buildroot] [PATCH 9/9 v2] pkg-infra: remove the legacy github helper
  2014-12-06 11:13 [Buildroot] [PATCH 0/9 v2] pkg-infra: better github handling, download enhancements (branch yem/download) Yann E. MORIN
                   ` (7 preceding siblings ...)
  2014-12-06 11:13 ` [Buildroot] [PATCH 8/9 v2] packages: switch to using the gitorious forge Yann E. MORIN
@ 2014-12-06 11:13 ` Yann E. MORIN
  8 siblings, 0 replies; 12+ messages in thread
From: Yann E. MORIN @ 2014-12-06 11:13 UTC (permalink / raw
  To: buildroot

Now that we have GitHub as a forge, we can get rid of the now useless
github helper.

Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
---
 package/pkg-download.mk | 3 ---
 1 file changed, 3 deletions(-)

diff --git a/package/pkg-download.mk b/package/pkg-download.mk
index 5bd8eac..0fa7750 100644
--- a/package/pkg-download.mk
+++ b/package/pkg-download.mk
@@ -55,9 +55,6 @@ notdomain = $(patsubst $(call domain,$(1),$(2))$(call domainseparator,$(2))%,%,$
 # default domainseparator is /, specify alternative value as first argument
 domainseparator = $(if $(1),$(1),/)
 
-# github(user,package,version): returns site of GitHub repository
-github = https://github.com/$(1)/$(2)/archive/$(3)
-
 # Helper for checking a tarball's checksum
 # If the hash does not match, remove the incorrect file
 # $(1): the path to the file with the hashes
-- 
1.9.1

^ permalink raw reply related	[flat|nested] 12+ messages in thread

* [Buildroot] [PATCH 2/9 v2] pkg-infra: differentiate remote tarball name from local filename
  2014-12-06 11:13 ` [Buildroot] [PATCH 2/9 v2] pkg-infra: differentiate remote tarball name from local filename Yann E. MORIN
@ 2014-12-06 13:28   ` Samuel Martin
  2014-12-06 15:08     ` Yann E. MORIN
  0 siblings, 1 reply; 12+ messages in thread
From: Samuel Martin @ 2014-12-06 13:28 UTC (permalink / raw
  To: buildroot

Hi Yann,

On Sat, Dec 6, 2014 at 12:13 PM, Yann E. MORIN <yann.morin.1998@free.fr> wrote:
> Some upstreams may use a naming scheme that does not fit well in how
> Buildroot wants to handle filenames.
>
> For example, GitHub used to have a scheme like:
>     https://github.com/USER/REPO/archive/VERSION.tar.gz
>
> which means we would have a local file named VERSION.tar.gz, when we
> want to have PKG-VERSION.tar.gz
>
> Other forges are also known to have similar schemes. Google Code, for
> example, may also use similarly named files.
>
> Introduce a new variable, FOO_UPSTREAM_SOURCE, which the package may set
> in that case. If not set, it defaults to FOO_SOURCE.

I wonder how it will play when download falls back on
http://sources.buildroot.net/, I mean what will be the tarball
filename uploaded on s.b.n? Will it be FOO_UPSTREAM_SOURCE or
FOO_SOURCE?

Afaics, FOO_SOURCE will be uploaded on s.b.n, whereas the fallback url will be:
  http://sources.buildroot.net/$(FOO_UPSTREAM_SOURCE)

Regards,

>
> Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
> Cc: Maxime Hadjinlian <maxime.hadjinlian@gmail.com>
> Cc: Samuel Martin <s.martin49@gmail.com>
> Cc: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
> Cc: Peter Korsgaard <jacmet@uclibc.org>
> Cc: Thomas De Schampheleire <patrickdepinguin@gmail.com>
> Cc: Arnout Vandecappelle <arnout@mind.be>
> Signed-off-by: Yann E. MORIN <yann.morin.1998@free.fr>
>
> ---
> Note:
>
> A suggested alternative would be to specify the local filename if it
> were to be different from upstream, adding the new variable as
> FOO_LOCAL_SOURCE (or whatever it would be named).
>
> I believe this is not an appropriate solution, because I believe we
> want to show that it is *upstream* doing things weirdly, not us. Using
> the alternative would convey the message that we, Buildroot, are doing
> something weird, which is really not the case.
>
> Besides, I think users should only be concerned about the local
> filename, and thus the value of FOO_SOURCE should really be the filename
> users have to manipulate, always. Having a second, optional variable
> holding the filename risks making it less straightforward in the users'
> eyes.
> ---
>  package/pkg-generic.mk | 6 +++++-
>  1 file changed, 5 insertions(+), 1 deletion(-)
>
> diff --git a/package/pkg-generic.mk b/package/pkg-generic.mk
> index 9643a30..30bce59 100644
> --- a/package/pkg-generic.mk
> +++ b/package/pkg-generic.mk
> @@ -84,7 +84,7 @@ ifeq ($(DL_MODE),DOWNLOAD)
>                 done ; \
>         fi
>  endif
> -       $(if $($(PKG)_SOURCE),$(call DOWNLOAD,$($(PKG)_SITE:/=)/$($(PKG)_SOURCE)))
> +       $(if $($(PKG)_SOURCE),$(call DOWNLOAD,$($(PKG)_SITE:/=)/$($(PKG)_UPSTREAM_SOURCE),$($(PKG)_SOURCE)))
>         $(foreach p,$($(PKG)_EXTRA_DOWNLOADS),$(call DOWNLOAD,$($(PKG)_SITE:/=)/$(p))$(sep))
>         $(foreach p,$($(PKG)_PATCH),\
>                 $(if $(findstring ://,$(p)),\
> @@ -361,6 +361,10 @@ ifndef $(2)_SOURCE
>   endif
>  endif
>
> +ifndef $(2)_UPSTREAM_SOURCE
> +  $(2)_UPSTREAM_SOURCE = $$($(2)_SOURCE)
> +endif
> +
>  ifndef $(2)_PATCH
>   ifdef $(3)_PATCH
>    $(2)_PATCH = $$($(3)_PATCH)
> --
> 1.9.1
>



-- 
Samuel

^ permalink raw reply	[flat|nested] 12+ messages in thread

* [Buildroot] [PATCH 2/9 v2] pkg-infra: differentiate remote tarball name from local filename
  2014-12-06 13:28   ` Samuel Martin
@ 2014-12-06 15:08     ` Yann E. MORIN
  0 siblings, 0 replies; 12+ messages in thread
From: Yann E. MORIN @ 2014-12-06 15:08 UTC (permalink / raw
  To: buildroot

Samuel, All,

On 2014-12-06 14:28 +0100, Samuel Martin spake thusly:
> On Sat, Dec 6, 2014 at 12:13 PM, Yann E. MORIN <yann.morin.1998@free.fr> wrote:
> > Some upstreams may use a naming scheme that does not fit well in how
> > Buildroot wants to handle filenames.
> >
> > For example, GitHub used to have a scheme like:
> >     https://github.com/USER/REPO/archive/VERSION.tar.gz
> >
> > which means we would have a local file named VERSION.tar.gz, when we
> > want to have PKG-VERSION.tar.gz
> >
> > Other forges are also known to have similar schemes. Google Code, for
> > example, may also use similarly named files.
> >
> > Introduce a new variable, FOO_UPSTREAM_SOURCE, which the package may set
> > in that case. If not set, it defaults to FOO_SOURCE.
> 
> I wonder how it will play when download falls back on
> http://sources.buildroot.net/, I mean what will be the tarball
> filename uploaded on s.b.n? Will it be FOO_UPSTREAM_SOURCE or
> FOO_SOURCE?
> 
> Afaics, FOO_SOURCE will be uploaded on s.b.n, whereas the fallback url will be:
>   http://sources.buildroot.net/$(FOO_UPSTREAM_SOURCE)

I don't think so.

As far as I can see, we're doing:

    # Argument 1 is the source location
    # Argument 2 is the local filename, optional [...]
    define DOWNLOAD
        $(call DOWNLOAD_INNER,$(1),$(if $(2),$(2),$(notdir $(1))))
    endef

So, we have two cases:
  - upstream and local filenames differ: the second argument is the
    local filename
  - upstream and local filenames are the same: the second argument is
    empty, and defaults to the upstream filename

So, we always end up calling DOWNLOAD_INNER with the local filename as
second argument. Then,

    define DOWNLOAD_INNER
        [...]
        if test -n "$(call qstrip,$(BR2_BACKUP_SITE))" ; then \
            $(call $(DL_MODE)_WGET,$(BR2_BACKUP_SITE)/$(2),$(2)) && exit ; \
        fi ; \
        [...]
    endef

So, we're fetching $(2) from the backup site. And $(2) is the local
filename.

Ergo, the fallback site case is covered. :-)

Pfeww, you made me doubt for a moment, and I was afraid I'd have to
rework the whole series entirely. Not the case, Hehe! ;-p

Regards,
Yann E. MORIN.

-- 
.-----------------.--------------------.------------------.--------------------.
|  Yann E. MORIN  | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
| +33 662 376 056 | Software  Designer | \ / CAMPAIGN     |  ___               |
| +33 223 225 172 `------------.-------:  X  AGAINST      |  \e/  There is no  |
| http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL    |   v   conspiracy.  |
'------------------------------^-------^------------------^--------------------'

^ permalink raw reply	[flat|nested] 12+ messages in thread

end of thread, other threads:[~2014-12-06 15:08 UTC | newest]

Thread overview: 12+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-12-06 11:13 [Buildroot] [PATCH 0/9 v2] pkg-infra: better github handling, download enhancements (branch yem/download) Yann E. MORIN
2014-12-06 11:13 ` [Buildroot] [PATCH 1/9 v2] pkg-infra: allow specifying the local tarball name when calling DOWNLOAD Yann E. MORIN
2014-12-06 11:13 ` [Buildroot] [PATCH 2/9 v2] pkg-infra: differentiate remote tarball name from local filename Yann E. MORIN
2014-12-06 13:28   ` Samuel Martin
2014-12-06 15:08     ` Yann E. MORIN
2014-12-06 11:13 ` [Buildroot] [PATCH 3/9 v2] docs/manual: document the new variable FOO_UPSTREAM_SOURCE Yann E. MORIN
2014-12-06 11:13 ` [Buildroot] [PATCH 4/9 v2] pkg-infra: add support for GitHub as a forge Yann E. MORIN
2014-12-06 11:13 ` [Buildroot] [PATCH 5/9 v2] pkg-infra: add support for Gitorious " Yann E. MORIN
2014-12-06 11:13 ` [Buildroot] [PATCH 6/9 v2] docs/manual: document the new forges we support: github and gitorious Yann E. MORIN
2014-12-06 11:13 ` [Buildroot] [PATCH 7/9 v2] packages: switch to using the github forge Yann E. MORIN
2014-12-06 11:13 ` [Buildroot] [PATCH 8/9 v2] packages: switch to using the gitorious forge Yann E. MORIN
2014-12-06 11:13 ` [Buildroot] [PATCH 9/9 v2] pkg-infra: remove the legacy github helper Yann E. MORIN

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.