From 86928403b7e769d1dcb1b453a277635cb4604e4c Mon Sep 17 00:00:00 2001 From: Magnus Feuer Date: Mon, 16 Jul 2012 16:43:19 -0700 Subject: [PATCH 1/5] Now cross compiles under exodev --- rebar.config | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/rebar.config b/rebar.config index 3c9cd7d..0981196 100644 --- a/rebar.config +++ b/rebar.config @@ -1,9 +1,8 @@ %% -*- erlang -*- {erl_opts, [debug_info]}. {deps, [ - {edown, ".*", {git, "git://github.com/esl/edown.git", "HEAD"}}, - {gen_leader, ".*", - {git, "git://github.com/abecciu/gen_leader_revival.git", "HEAD"}} + {edown, ".*", {git, "git@github.com:Feuerlabs/edown.git", "HEAD"}}, + {gen_leader, ".*", {git, "git@github.com:Feuerlabs/gen_leader_revival.git", "HEAD"}} ]}. {dialyzer_opts, [{warnings, [no_unused, no_improper_lists, no_fun_app, no_match, From 9aa5a54068b7e278107e2bae27e902f941ddc6f9 Mon Sep 17 00:00:00 2001 From: Magnus Feuer Date: Tue, 17 Jul 2012 15:06:45 -0700 Subject: [PATCH 2/5] Blocks recursive deps on exodev build --- rebar.config.script | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 rebar.config.script diff --git a/rebar.config.script b/rebar.config.script new file mode 100644 index 0000000..cc46b44 --- /dev/null +++ b/rebar.config.script @@ -0,0 +1,18 @@ +%% -*- erlang -*- + +%% +%% If the environment variable X_COMP is set, it is an indication that self is being compiled +%% as a dependency under exodev. Since exodev lists all dependency in its root rebar.config +%% file in order to have a flat view of the dependency tree, we should nil out our local +%% deps list provided by our local rebar.config +%% +case os:getenv("EXODEV_COMP") of + false -> + CONFIG; + + _ -> + case lists:keytake(deps, 1, CONFIG) of + { value, _, Remainder } -> Remainder; + _ -> CONFIG + end +end. From 9ae8d8feabef1464536552f6608a93e492bf7743 Mon Sep 17 00:00:00 2001 From: Magnus Feuer Date: Sun, 2 Dec 2012 18:12:04 -0800 Subject: [PATCH 3/5] Added license file --- LICENSE | 288 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 288 insertions(+) create mode 100644 LICENSE diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..5961ccf --- /dev/null +++ b/LICENSE @@ -0,0 +1,288 @@ + +ERLANG PUBLIC LICENSE +Version 1.1 + +1. Definitions. + +1.1. ``Contributor`` means each entity that creates or contributes to +the creation of Modifications. + +1.2. ``Contributor Version`` means the combination of the Original +Code, prior Modifications used by a Contributor, and the Modifications +made by that particular Contributor. + +1.3. ``Covered Code`` means the Original Code or Modifications or the +combination of the Original Code and Modifications, in each case +including portions thereof. + +1.4. ``Electronic Distribution Mechanism`` means a mechanism generally +accepted in the software development community for the electronic +transfer of data. + +1.5. ``Executable`` means Covered Code in any form other than Source +Code. + +1.6. ``Initial Developer`` means the individual or entity identified +as the Initial Developer in the Source Code notice required by Exhibit +A. + +1.7. ``Larger Work`` means a work which combines Covered Code or +portions thereof with code not governed by the terms of this License. + +1.8. ``License`` means this document. + +1.9. ``Modifications`` means any addition to or deletion from the +substance or structure of either the Original Code or any previous +Modifications. When Covered Code is released as a series of files, a +Modification is: + +A. Any addition to or deletion from the contents of a file containing + Original Code or previous Modifications. + +B. Any new file that contains any part of the Original Code or + previous Modifications. + +1.10. ``Original Code`` means Source Code of computer software code +which is described in the Source Code notice required by Exhibit A as +Original Code, and which, at the time of its release under this +License is not already Covered Code governed by this License. + +1.11. ``Source Code`` means the preferred form of the Covered Code for +making modifications to it, including all modules it contains, plus +any associated interface definition files, scripts used to control +compilation and installation of an Executable, or a list of source +code differential comparisons against either the Original Code or +another well known, available Covered Code of the Contributor`s +choice. The Source Code can be in a compressed or archival form, +provided the appropriate decompression or de-archiving software is +widely available for no charge. + +1.12. ``You`` means an individual or a legal entity exercising rights +under, and complying with all of the terms of, this License. For legal +entities,``You`` includes any entity which controls, is controlled by, +or is under common control with You. For purposes of this definition, +``control`` means (a) the power, direct or indirect, to cause the +direction or management of such entity, whether by contract or +otherwise, or (b) ownership of fifty percent (50%) or more of the +outstanding shares or beneficial ownership of such entity. + +2. Source Code License. + +2.1. The Initial Developer Grant. +The Initial Developer hereby grants You a world-wide, royalty-free, +non-exclusive license, subject to third party intellectual property +claims: + +(a) to use, reproduce, modify, display, perform, sublicense and + distribute the Original Code (or portions thereof) with or without + Modifications, or as part of a Larger Work; and + +(b) under patents now or hereafter owned or controlled by Initial + Developer, to make, have made, use and sell (``Utilize``) the + Original Code (or portions thereof), but solely to the extent that + any such patent is reasonably necessary to enable You to Utilize + the Original Code (or portions thereof) and not to any greater + extent that may be necessary to Utilize further Modifications or + combinations. + +2.2. Contributor Grant. +Each Contributor hereby grants You a world-wide, royalty-free, +non-exclusive license, subject to third party intellectual property +claims: + +(a) to use, reproduce, modify, display, perform, sublicense and + distribute the Modifications created by such Contributor (or + portions thereof) either on an unmodified basis, with other + Modifications, as Covered Code or as part of a Larger Work; and + +(b) under patents now or hereafter owned or controlled by Contributor, + to Utilize the Contributor Version (or portions thereof), but + solely to the extent that any such patent is reasonably necessary + to enable You to Utilize the Contributor Version (or portions + thereof), and not to any greater extent that may be necessary to + Utilize further Modifications or combinations. + +3. Distribution Obligations. + +3.1. Application of License. +The Modifications which You contribute are governed by the terms of +this License, including without limitation Section 2.2. The Source +Code version of Covered Code may be distributed only under the terms +of this License, and You must include a copy of this License with +every copy of the Source Code You distribute. You may not offer or +impose any terms on any Source Code version that alters or restricts +the applicable version of this License or the recipients` rights +hereunder. However, You may include an additional document offering +the additional rights described in Section 3.5. + +3.2. Availability of Source Code. +Any Modification which You contribute must be made available in Source +Code form under the terms of this License either on the same media as +an Executable version or via an accepted Electronic Distribution +Mechanism to anyone to whom you made an Executable version available; +and if made available via Electronic Distribution Mechanism, must +remain available for at least twelve (12) months after the date it +initially became available, or at least six (6) months after a +subsequent version of that particular Modification has been made +available to such recipients. You are responsible for ensuring that +the Source Code version remains available even if the Electronic +Distribution Mechanism is maintained by a third party. + +3.3. Description of Modifications. +You must cause all Covered Code to which you contribute to contain a +file documenting the changes You made to create that Covered Code and +the date of any change. You must include a prominent statement that +the Modification is derived, directly or indirectly, from Original +Code provided by the Initial Developer and including the name of the +Initial Developer in (a) the Source Code, and (b) in any notice in an +Executable version or related documentation in which You describe the +origin or ownership of the Covered Code. + +3.4. Intellectual Property Matters + +(a) Third Party Claims. + If You have knowledge that a party claims an intellectual property + right in particular functionality or code (or its utilization + under this License), you must include a text file with the source + code distribution titled ``LEGAL`` which describes the claim and + the party making the claim in sufficient detail that a recipient + will know whom to contact. If you obtain such knowledge after You + make Your Modification available as described in Section 3.2, You + shall promptly modify the LEGAL file in all copies You make + available thereafter and shall take other steps (such as notifying + appropriate mailing lists or newsgroups) reasonably calculated to + inform those who received the Covered Code that new knowledge has + been obtained. + +(b) Contributor APIs. + If Your Modification is an application programming interface and + You own or control patents which are reasonably necessary to + implement that API, you must also include this information in the + LEGAL file. + +3.5. Required Notices. +You must duplicate the notice in Exhibit A in each file of the Source +Code, and this License in any documentation for the Source Code, where +You describe recipients` rights relating to Covered Code. If You +created one or more Modification(s), You may add your name as a +Contributor to the notice described in Exhibit A. If it is not +possible to put such notice in a particular Source Code file due to +its structure, then you must include such notice in a location (such +as a relevant directory file) where a user would be likely to look for +such a notice. You may choose to offer, and to charge a fee for, +warranty, support, indemnity or liability obligations to one or more +recipients of Covered Code. However, You may do so only on Your own +behalf, and not on behalf of the Initial Developer or any +Contributor. You must make it absolutely clear than any such warranty, +support, indemnity or liability obligation is offered by You alone, +and You hereby agree to indemnify the Initial Developer and every +Contributor for any liability incurred by the Initial Developer or +such Contributor as a result of warranty, support, indemnity or +liability terms You offer. + +3.6. Distribution of Executable Versions. +You may distribute Covered Code in Executable form only if the +requirements of Section 3.1-3.5 have been met for that Covered Code, +and if You include a notice stating that the Source Code version of +the Covered Code is available under the terms of this License, +including a description of how and where You have fulfilled the +obligations of Section 3.2. The notice must be conspicuously included +in any notice in an Executable version, related documentation or +collateral in which You describe recipients` rights relating to the +Covered Code. You may distribute the Executable version of Covered +Code under a license of Your choice, which may contain terms different +from this License, provided that You are in compliance with the terms +of this License and that the license for the Executable version does +not attempt to limit or alter the recipient`s rights in the Source +Code version from the rights set forth in this License. If You +distribute the Executable version under a different license You must +make it absolutely clear that any terms which differ from this License +are offered by You alone, not by the Initial Developer or any +Contributor. You hereby agree to indemnify the Initial Developer and +every Contributor for any liability incurred by the Initial Developer +or such Contributor as a result of any such terms You offer. + +3.7. Larger Works. +You may create a Larger Work by combining Covered Code with other code +not governed by the terms of this License and distribute the Larger +Work as a single product. In such a case, You must make sure the +requirements of this License are fulfilled for the Covered Code. + +4. Inability to Comply Due to Statute or Regulation. +If it is impossible for You to comply with any of the terms of this +License with respect to some or all of the Covered Code due to statute +or regulation then You must: (a) comply with the terms of this License +to the maximum extent possible; and (b) describe the limitations and +the code they affect. Such description must be included in the LEGAL +file described in Section 3.4 and must be included with all +distributions of the Source Code. Except to the extent prohibited by +statute or regulation, such description must be sufficiently detailed +for a recipient of ordinary skill to be able to understand it. + +5. Application of this License. + +This License applies to code to which the Initial Developer has +attached the notice in Exhibit A, and to related Covered Code. + +6. CONNECTION TO MOZILLA PUBLIC LICENSE + +This Erlang License is a derivative work of the Mozilla Public +License, Version 1.0. It contains terms which differ from the Mozilla +Public License, Version 1.0. + +7. DISCLAIMER OF WARRANTY. + +COVERED CODE IS PROVIDED UNDER THIS LICENSE ON AN ``AS IS`` BASIS, +WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, +WITHOUT LIMITATION, WARRANTIES THAT THE COVERED CODE IS FREE OF +DEFECTS, MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE OR +NON-INFRINGING. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF +THE COVERED CODE IS WITH YOU. SHOULD ANY COVERED CODE PROVE DEFECTIVE +IN ANY RESPECT, YOU (NOT THE INITIAL DEVELOPER OR ANY OTHER +CONTRIBUTOR) ASSUME THE COST OF ANY NECESSARY SERVICING, REPAIR OR +CORRECTION. THIS DISCLAIMER OF WARRANTY CONSTITUTES AN ESSENTIAL PART +OF THIS LICENSE. NO USE OF ANY COVERED CODE IS AUTHORIZED HEREUNDER +EXCEPT UNDER THIS DISCLAIMER. + +8. TERMINATION. +This License and the rights granted hereunder will terminate +automatically if You fail to comply with terms herein and fail to cure +such breach within 30 days of becoming aware of the breach. All +sublicenses to the Covered Code which are properly granted shall +survive any termination of this License. Provisions which, by their +nature, must remain in effect beyond the termination of this License +shall survive. + +9. DISCLAIMER OF LIABILITY +Any utilization of Covered Code shall not cause the Initial Developer +or any Contributor to be liable for any damages (neither direct nor +indirect). + +10. MISCELLANEOUS +This License represents the complete agreement concerning the subject +matter hereof. If any provision is held to be unenforceable, such +provision shall be reformed only to the extent necessary to make it +enforceable. This License shall be construed by and in accordance with +the substantive laws of Sweden. Any dispute, controversy or claim +arising out of or relating to this License, or the breach, termination +or invalidity thereof, shall be subject to the exclusive jurisdiction +of Swedish courts, with the Stockholm City Court as the first +instance. + +EXHIBIT A. + +``The contents of this file are subject to the Erlang Public License, +Version 1.1, (the "License"); you may not use this file except in +compliance with the License. You should have received a copy of the +Erlang Public License along with this software. If not, it can be +retrieved via the world wide web at http://www.erlang.org/. + +Software distributed under the License is distributed on an "AS IS" +basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See +the License for the specific language governing rights and limitations +under the License. + +The Initial Developer of the Original Code is Ericsson Utvecklings AB. +Portions created by Ericsson are Copyright 1999, Ericsson Utvecklings +AB. All Rights Reserved.`` + From b4d4bf1ea58e28c8be669d25ce978ea5884d0003 Mon Sep 17 00:00:00 2001 From: Magnus Feuer Date: Sun, 2 Dec 2012 18:16:08 -0800 Subject: [PATCH 4/5] xref fix. first test. --- src/gproc_dist.erl | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/gproc_dist.erl b/src/gproc_dist.erl index 743f7c3..832859e 100644 --- a/src/gproc_dist.erl +++ b/src/gproc_dist.erl @@ -194,7 +194,8 @@ sync() -> %% @doc Returns the node of the current gproc leader. %% @end get_leader() -> - gen_leader:call(?MODULE, get_leader). + GenLeader = gen_leader, + GenLEader:call(?MODULE, get_leader). %% ========================================================== %% Server-side @@ -269,11 +270,12 @@ check_sync_requests(Node, #state{sync_requests = SReqs} = S) -> S#state{sync_requests = SReqs1}. handle_leader_call(sync, From, #state{sync_requests = SReqs} = S, E) -> - case gen_leader:alive(E) -- [node()] of + GenLeader = gen_leader, + case GenLeader:alive(E) -- [node()] of [] -> {reply, true, S}; Alive -> - gen_leader:broadcast({from_leader, {sync, From}}, Alive, E), + GenLeader:broadcast({from_leader, {sync, From}}, Alive, E), {noreply, S#state{sync_requests = [{From, Alive}|SReqs]}} end; handle_leader_call({reg, {C,g,Name} = K, Value, Pid}, _From, S, _E) -> From 24391a4d2582c94fd31edf98f8fe8d889949b21d Mon Sep 17 00:00:00 2001 From: Magnus Feuer Date: Sun, 2 Dec 2012 18:19:11 -0800 Subject: [PATCH 5/5] xref fix. first test. --- src/gproc_dist.erl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/gproc_dist.erl b/src/gproc_dist.erl index 832859e..ba43394 100644 --- a/src/gproc_dist.erl +++ b/src/gproc_dist.erl @@ -195,7 +195,7 @@ sync() -> %% @end get_leader() -> GenLeader = gen_leader, - GenLEader:call(?MODULE, get_leader). + GenLeader:call(?MODULE, get_leader). %% ========================================================== %% Server-side