Skip to contentSkip to conversation

pkg-infra: better github handling, download enhancements (branch yem/download)

PATCH New Yann E. MORIN 2 participants 12 messages Dec 6, 2014

Subsystems (2)
lore
Share & tools
lore
#0 lore raw

v2 cover pkg-infra: better github handling, download enhancements (branch yem/download)

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(-)
Signature · 6 lines
.-----------------.--------------------.------------------.--------------------.
|  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.  |
'------------------------------^-------^------------------^--------------------'
#1 lore raw

PATCH v2 1/9 pkg-infra: allow specifying the local tarball name when calling DOWNLOAD

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.

Cc Maxime Hadjinlian <[email protected]>
Cc Samuel Martin <[email protected]>
Cc Thomas Petazzoni <[email protected]>
Cc Peter Korsgaard <[email protected]>
Cc Thomas De Schampheleire <[email protected]>
Cc Arnout Vandecappelle <[email protected]>

---
Changes v1 -> v2:
- retain the ability to not pass the local filename

---
 package/pkg-download.mk | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)
package/pkg-download.mk +3 -1
index f3409bd..5bd8eac 100644
@@ -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
Signature · 1 line
1.9.1
#2 lore raw

PATCH v2 2/9 pkg-infra: differentiate remote tarball name from local filename

In reply to Yann E. MORIN

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.

Cc Maxime Hadjinlian <[email protected]>
Cc Samuel Martin <[email protected]>
Cc Thomas Petazzoni <[email protected]>
Cc Peter Korsgaard <[email protected]>
Cc Thomas De Schampheleire <[email protected]>
Cc Arnout Vandecappelle <[email protected]>

---
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(-)
package/pkg-generic.mk +5 -1
index 9643a30..30bce59 100644
@@ -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)
Signature · 1 line
1.9.1
#3 lore raw

PATCH v2 2/9 pkg-infra: differentiate remote tarball name from local filename

Hi Yann,

Quoted 6 lines · Yann E. MORIN

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

Quoted 8 lines

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,

Quoted 58 lines
Cc Maxime Hadjinlian <[email protected]>
Cc Samuel Martin <[email protected]>
Cc Thomas Petazzoni <[email protected]>
Cc Peter Korsgaard <[email protected]>
Cc Thomas De Schampheleire <[email protected]>
Cc Arnout Vandecappelle <[email protected]>

---
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(-)
package/pkg-generic.mk +5 -2
index 9643a30..30bce59 100644
@@ -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

Signature · 1 line
Samuel
#4 lore raw

PATCH v2 2/9 pkg-infra: differentiate remote tarball name from local filename

Samuel, All,

On 2014-12-06 14:28 +0100, Samuel Martin spake thusly:

Quoted 16 lines · Yann E. MORIN
Quoted 6 lines

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

Quoted 8 lines

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.

Quoted 7 lines

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.

Signature · 6 lines
.-----------------.--------------------.------------------.--------------------.
|  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.  |
'------------------------------^-------^------------------^--------------------'
#5 lore raw

PATCH v2 3/9 docs/manual: document the new variable FOO_UPSTREAM_SOURCE

In reply to Yann E. MORIN

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.

Cc Maxime Hadjinlian <[email protected]>
Cc Samuel Martin <[email protected]>
Cc Thomas Petazzoni <[email protected]>
Cc Peter Korsgaard <[email protected]>
Cc Thomas De Schampheleire <[email protected]>
Cc Arnout Vandecappelle <[email protected]>
Cc Baruch Siach <[email protected]>

---
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(-)
docs/manual/adding-packages-directory.txt +7 -1
index 0ea03f9..07f6427 100644
@@ -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
docs/manual/adding-packages-generic.txt +12 -0
index 67a7453..69d1cfa 100644
@@ -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
Signature · 1 line
1.9.1
#6 lore raw

PATCH v2 4/9 pkg-infra: add support for GitHub as a forge

In reply to Yann E. MORIN

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.

Cc Maxime Hadjinlian <[email protected]>
Cc Samuel Martin <[email protected]>
Cc Thomas Petazzoni <[email protected]>
Cc Peter Korsgaard <[email protected]>
Cc Thomas De Schampheleire <[email protected]>
Cc Arnout Vandecappelle <[email protected]>
---
 package/pkg-generic.mk | 6 ++++++
 1 file changed, 6 insertions(+)
package/pkg-generic.mk +6 -0
index 30bce59..dd67b51 100644
@@ -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)
Signature · 1 line
1.9.1
#7 lore raw

PATCH v2 5/9 pkg-infra: add support for Gitorious as a forge

In reply to Yann E. MORIN

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.

Cc Maxime Hadjinlian <[email protected]>
Cc Samuel Martin <[email protected]>
Cc Thomas Petazzoni <[email protected]>
Cc Peter Korsgaard <[email protected]>
Cc Thomas De Schampheleire <[email protected]>
Cc Arnout Vandecappelle <[email protected]>
---
 package/pkg-generic.mk | 4 ++++
 1 file changed, 4 insertions(+)
package/pkg-generic.mk +4 -0
index dd67b51..415574e 100644
@@ -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
Signature · 1 line
1.9.1
#8 lore raw

PATCH v2 6/9 docs/manual: document the new forges we support: github and gitorious

In reply to Yann E. MORIN
---
 docs/manual/adding-packages-generic.txt | 15 ++++++++--
 docs/manual/adding-packages-tips.txt    | 50 +++++++++++++++++++++++++--------
 2 files changed, 51 insertions(+), 14 deletions(-)
docs/manual/adding-packages-generic.txt +12 -3
index 69d1cfa..260144b 100644
@@ -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
docs/manual/adding-packages-tips.txt +39 -11

79 lines not on this page · raw message

Signature · 1 line
1.9.1
#9 lore raw

PATCH v2 7/9 packages: switch to using the github forge

In reply to Yann E. MORIN

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 )

---
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(-)
boot/at91bootstrap3/at91bootstrap3.mk +2 -1
index bc8d912..fda67f6 100644
@@ -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
package/a10disp/a10disp.mk +2 -1
index 066e988..e499882 100644
@@ -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
package/am335x-pru-package/am335x-pru-package.mk +2 -1
index 1e4fc0d..805ad2d 100644
@@ -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
package/apitrace/apitrace.mk +2 -1
index b164367..565f053 100644
@@ -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
 
package/avrdude/avrdude.mk +2 -1
index 03d6490..b40132f 100644
@@ -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
package/bandwidthd/bandwidthd.mk +2 -1
index ca991f9..d5ee492 100644
@@ -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.
package/bcache-tools/bcache-tools.mk +2 -1
index 666a02f..cb5f68d 100644
@@ -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
package/binutils/binutils.mk +2 -1
index b8dab5d..565780a 100644
@@ -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
package/civetweb/civetweb.mk +2 -1
index 2940a7a..f261387 100644
@@ -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
 
package/cppzmq/cppzmq.mk +2 -1
index 5446de8..9c197ed 100644
@@ -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
package/cpuload/cpuload.mk +2 -1
index 30c3db6..e9a7593 100644
@@ -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
 
package/czmq/czmq.mk +2 -1
index 25f67d5..7769f75 100644
@@ -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
package/e2tools/e2tools.mk +2 -1
index 789519f..0242d64 100644
@@ -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
package/faifa/faifa.mk +2 -1
index a56a8c0..758b166 100644
@@ -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
package/fb-test-app/fb-test-app.mk +2 -1
index 9cd0aec..2a05a23 100644
@@ -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
 
package/filemq/filemq.mk +2 -1
index d3dc6da..223360d 100644
@@ -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
package/flann/flann.mk +2 -1
index 8af58e3..b9d927d 100644
@@ -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
package/freerdp/freerdp.mk +2 -1
index cb745ec..5f601c5 100644
@@ -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
package/gcc/gcc.mk +2 -1
index cdd71aa..b1a62e0 100644
@@ -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)
package/gdb/gdb.mk +4 -2
index dbec760..75db9f5 100644
@@ -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
package/glm/glm.mk +2 -1
index ff9423d..d04502a 100644
@@ -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
 
package/inotify-tools/inotify-tools.mk +2 -1
index 3502525..d581e05 100644
@@ -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
package/input-event-daemon/input-event-daemon.mk +2 -1
index 67b8cc4..6a16d5b 100644
@@ -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
 
package/jack2/jack2.mk +2 -1
index 3f52ff4..3de23fe 100644
@@ -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
package/jquery-keyboard/jquery-keyboard.mk +2 -1
index a1320dc..c3f7932 100644
@@ -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
 
package/jsmin/jsmin.mk +2 -1
index a66ba71..90c312a 100644
@@ -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
 
package/json-javascript/json-javascript.mk +2 -1
index c15b531..b4c4497 100644
@@ -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
 
package/kexec-lite/kexec-lite.mk +2 -1
index 7e3c8d3..575fe4f 100644
@@ -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
 
package/ktap/ktap.mk +2 -1
index 50ad222..08a19a4 100644
@@ -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
 
package/lcdapi/lcdapi.mk +2 -1
index bcf5c47..56b187a 100644
@@ -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
package/libatomic_ops/libatomic_ops.mk +2 -1
index 6a26775..f82d520 100644
@@ -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
package/libcec/libcec.mk +2 -1
index 5a889b9..4f6b6c8 100644
@@ -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
 
package/libcofi/libcofi.mk +2 -1
index 90daff2..917bd73 100644
@@ -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
 
package/libconfuse/libconfuse.mk +2 -1
index b3dcceb..783b572 100644
@@ -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
package/libenca/libenca.mk +2 -1
index 7ab95f5..c1c675a 100644
@@ -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
package/libevent/libevent.mk +2 -1
index 607b7b2..8c4c4c1 100644
@@ -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
package/libiqrf/libiqrf.mk +2 -1
index 0531602..00c0c55 100644
@@ -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+
package/liblog4c-localtime/liblog4c-localtime.mk +2 -1
index bc6d1ab..90211d1 100644
@@ -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
package/libndp/libndp.mk +2 -1
index c40a017..1ed4d90 100644
@@ -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
package/libnfs/libnfs.mk +2 -1
index 0c8c4f5..93e4afa 100644
@@ -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)
package/librtlsdr/librtlsdr.mk +2 -1
index 2c5cf1f..0da5dc3 100644
@@ -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
package/libsha1/libsha1.mk +2 -1
index 647f986..8cc9746 100644
@@ -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
 
package/libshairplay/libshairplay.mk +2 -1
index 35bbeac..b874820 100644
@@ -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+
package/libsoc/libsoc.mk +2 -1
index 3253c50..f4122fc 100644
@@ -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
package/libstrophe/libstrophe.mk +2 -1
index d7202d7..7c5bcdb 100644
@@ -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
package/libtpl/libtpl.mk +2 -1
index ed3bfb5..a4fe310 100644
@@ -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
package/libuv/libuv.mk +2 -1
index 08bf8c5..ff1f464 100644
@@ -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
package/linenoise/linenoise.mk +2 -1
index 7321564..bef6ccd 100644
@@ -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
package/ljsyscall/ljsyscall.mk +2 -1
index a17da3f..35d8cc4 100644
@@ -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
 
package/lua-ev/lua-ev.mk +2 -1
index 745d6ed..27d6d4a 100644
@@ -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
package/lua-msgpack-native/lua-msgpack-native.mk +2 -1
index acd3a0e..d101e98 100644
@@ -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
package/luaexpatutils/luaexpatutils.mk +2 -1
index 9bfc654..fcf4879 100644
@@ -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
 
package/luaposix/luaposix.mk +2 -1
index a723a50..103a3b6 100644
@@ -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
package/lz4/lz4.mk +2 -1
index 761ce4d..7a5e4cc 100644
@@ -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
package/mongoose/mongoose.mk +2 -1
index 7a5d356..ccb6272 100644
@@ -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
package/mrouted/mrouted.mk +2 -1
index 78fe98a..2999f83 100644
@@ -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
package/mtdev2tuio/mtdev2tuio.mk +2 -1
index 7b00221..ccc8891 100644
@@ -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
package/ne10/ne10.mk +2 -1
index cb635e4..5585c99 100644
@@ -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
 
package/neardal/neardal.mk +2 -1
index 0720fe8..b970cce 100644
@@ -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
package/omap-u-boot-utils/omap-u-boot-utils.mk +2 -1
index 7cfed65..7d630a1 100644
@@ -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
 
package/on2-8170-modules/on2-8170-modules.mk +2 -1
index 209bcb5..23a5c8c 100644
@@ -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
 
package/opencv/opencv.mk +2 -1
index 61f529e..e20e120 100644
@@ -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
package/pifmrds/pifmrds.mk +2 -1
index 5179715..0d76361 100644
@@ -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
package/pps-tools/pps-tools.mk +2 -1
index 7876403..eb310bd 100644
@@ -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
package/protobuf-c/protobuf-c.mk +2 -1
index d73eb25..d3b6d01 100644
@@ -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)
package/python-configshell-fb/python-configshell-fb.mk +2 -1
index 76ef48d..919430a 100644
@@ -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
package/python-ipy/python-ipy.mk +2 -1
index 6773aaf..05ea0db 100644
@@ -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
package/python-itsdangerous/python-itsdangerous.mk +2 -1
index 8b055d6..dec8487 100644
@@ -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
package/python-libconfig/python-libconfig.mk +2 -1
index 3f5984b..6091834 100644
@@ -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
package/python-pyusb/python-pyusb.mk +2 -1
index ae69026..740da7b 100644
@@ -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
package/python-rtslib-fb/python-rtslib-fb.mk +2 -1
index d45c261..0fb4358 100644
@@ -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
package/python-webpy/python-webpy.mk +2 -1
index ef5b6b3..33e3a77 100644
@@ -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
package/qdecoder/qdecoder.mk +2 -1
index bbbf42a..c4e9ff5 100644
@@ -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
package/qjson/qjson.mk +2 -1
index 6a16617..555adb5 100644
@@ -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) \
package/qlibc/qlibc.mk +2 -1
index 6a747e4..a7f7bc5 100644
@@ -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
 
package/qtuio/qtuio.mk +2 -1
index 9925f84..70301b3 100644
@@ -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
 
package/rapidjson/rapidjson.mk +2 -1
index 6658da2..8a60201 100644
@@ -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
package/rpi-firmware/rpi-firmware.mk +2 -1
index 033ff33..2bd0e07 100644
@@ -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
 
package/rpi-userland/rpi-userland.mk +2 -1
index 3f92950..3cba481 100644
@@ -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
package/sconeserver/sconeserver.mk +2 -1
index fd2123d..d5172d7 100644
@@ -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
 
package/shairport-sync/shairport-sync.mk +2 -1
index 39017a0..1ffdf28 100644
@@ -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
package/smack/smack.mk +2 -1
index 7e0a362..82e4d05 100644
@@ -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
package/snappy/snappy.mk +2 -1
index fd89325..c0713ab 100644
@@ -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
package/snowball-hdmiservice/snowball-hdmiservice.mk +2 -1
index 267b5ad..9e241db 100644
@@ -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
package/socketcand/socketcand.mk +2 -1
index 90d7540..a7b8157 100644
@@ -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
package/sqlcipher/sqlcipher.mk +2 -1
index 9b4446c..b703b97 100644
@@ -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
 
package/sunxi-boards/sunxi-boards.mk +2 -1
index 1a2bb4c..7157f2a 100644
@@ -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
package/sunxi-cedarx/sunxi-cedarx.mk +2 -1
index 219f1bc..97986dd 100644
@@ -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
 
package/sunxi-mali-prop/sunxi-mali-prop.mk +2 -1
index 0cb2d93..5505967 100644
@@ -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))
package/sunxi-mali/sunxi-mali.mk +2 -1
index c6900c8..ea9f37c 100644
@@ -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
package/sunxi-tools/sunxi-tools.mk +2 -1
index f84b286..062ec84 100644
@@ -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
package/targetcli-fb/targetcli-fb.mk +2 -1
index b5f2fbe..8532977 100644
@@ -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
package/ti-utils/ti-utils.mk +2 -1
index 7ee7afa..8f74449 100644
@@ -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
package/tinyalsa/tinyalsa.mk +2 -1
index a3dcc9a..b5ab7e2 100644
@@ -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
 
package/tinymembench/tinymembench.mk +2 -1
index ab479d6..f10e1ac 100644
@@ -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
 
package/trinity/trinity.mk +2 -1
index 52805e0..c17699a 100644
@@ -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
 
package/tslib/tslib.mk +2 -1
index 51aaf23..fd4770b 100644
@@ -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
 
package/tvheadend/tvheadend.mk +2 -1
index f593b3f..2c48c4d 100644
@@ -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
package/tzdump/tzdump.mk +2 -1
index 3f035a5..bc136b6 100644
@@ -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
package/uclibc/uclibc.mk +2 -1
index 2d95ce1..753853c 100644
@@ -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
package/xbmc-addon-xvdr/xbmc-addon-xvdr.mk +2 -1
index a4d9624..87d5100 100644
@@ -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
 
package/xbmc-pvr-addons/xbmc-pvr-addons.mk +2 -1
index bfcb7ed..b16124f 100644
@@ -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
 
package/xinetd/xinetd.mk +2 -1
index 92d0d53..33bad4a 100644
@@ -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
 
package/xl2tp/xl2tp.mk +2 -1
index abed7e8..d0f1214 100644
@@ -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
package/yajl/yajl.mk +2 -1
index ff64123..5b4d6c1 100644
@@ -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
package/ympd/ympd.mk +2 -1
index 2898c9d..fb56b52 100644
@@ -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
package/zlog/zlog.mk +2 -1
index fb8762c..1a8ce2c 100644
@@ -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
package/zmqpp/zmqpp.mk +2 -1
index fbb0260..8bede6c 100644
@@ -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
package/znc/znc.mk +2 -1
index 779a7b1..f559731 100644
@@ -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
package/zyre/zyre.mk +2 -1
index 661dddc..c66c357 100644
@@ -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
Signature · 1 line
1.9.1
#10 lore raw

PATCH v2 8/9 packages: switch to using the gitorious forge

In reply to Yann E. MORIN
---
 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(-)
boot/xloader/xloader.mk +2 -1
index 90d5fa2..a9319b1 100644
@@ -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+
package/can-utils/can-utils.mk +2 -1
index 44713cf..3bdbf15 100644
@@ -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))
package/lpc3250loader/lpc3250loader.mk +2 -1
index d13ab40..ff0cedf 100644
@@ -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
package/qhull/qhull.mk +2 -1
index 6992d71..9de72fc 100644
@@ -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
package/ti-uim/ti-uim.mk +2 -1
index b498180..381fbe0 100644
@@ -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
Signature · 1 line
1.9.1
#11 lore raw

PATCH v2 9/9 pkg-infra: remove the legacy github helper

In reply to Yann E. MORIN

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

---
 package/pkg-download.mk | 3 ---
 1 file changed, 3 deletions(-)
package/pkg-download.mk +0 -3
index 5bd8eac..0fa7750 100644
@@ -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
Signature · 1 line
1.9.1