Spec URL: http://people.redhat.com/rnorwood/rpms/cerebro.spec SRPM URL: http://people.redhat.com/rnorwood/rpms/cerebro-2.9.8-1.fc9.src.rpm Description: Cerebro provides presence information, extends the mesh network to regular 802.11b/g devices, allows sharing activities and provides an effient data transport mechanism.
Thank you for considering Cerebro. What Cerebro claims to do well is provide presence information and data transport in a mobile mesh network.
Expect a full review in few days: rpmlint output: [rpmbuild@rocky noarch]$ rp -i cerebro-2.9.8-1.fc9.noarch.rpm cerebro.noarch: W: conffile-without-noreplace-flag /etc/dbus-1/system.d/cerebro.conf A configuration file is stored in your package without the noreplace flag. A way to resolve this is to put the following in your SPEC file: %config(noreplace) /etc/your_config_file_here cerebro.noarch: W: service-default-enabled /etc/rc.d/init.d/cerebro The service is enabled by default after "chkconfig --add"; for security reasons, most services should not be. Use "-" as the default runlevel in the init script's "chkconfig:" line and/or remove the "Default-Start:" LSB keyword to fix this if appropriate for this service. 1 packages and 0 specfiles checked; 0 errors, 2 warnings. Am waiting for koji to get up -- have too low bandwidth to set up mock or local mirror. :(
Thanks for your comments. Could you please propose how the spec file should be affected to incorporate your comments? I would very much appreciate this, thanks! (In reply to comment #2) > Expect a full review in few days: > > rpmlint output: > [rpmbuild@rocky noarch]$ rp -i cerebro-2.9.8-1.fc9.noarch.rpm > cerebro.noarch: W: conffile-without-noreplace-flag > /etc/dbus-1/system.d/cerebro.conf > A configuration file is stored in your package without the noreplace flag. A > way to resolve this is to put the following in your SPEC file: > %config(noreplace) /etc/your_config_file_here > > cerebro.noarch: W: service-default-enabled /etc/rc.d/init.d/cerebro > The service is enabled by default after "chkconfig --add"; for security > reasons, most services should not be. Use "-" as the default runlevel in the > init script's "chkconfig:" line and/or remove the "Default-Start:" LSB keyword > to fix this if appropriate for this service. > > 1 packages and 0 specfiles checked; 0 errors, 2 warnings. > > Am waiting for koji to get up -- have too low bandwidth to set up mock or local > mirror. :(
Hi Polychronis, Don't worry, I'll take care of the issues with the spec file, and let you know if I have any questions or need help. I just Cc'ed you on the bug in case we run into trouble. Rakesh, Comments about your comments - conffile-without-noreplace-flag: dbus configs aren't really something that a normal user is going to edit - it doesn't make much sense to me to have (noreplace) on them, especially since, if the app changes the way it uses DBUS, having the configs not be updated on upgrade will break upgrades. Do we have a standard for this already? service-default-enabled: I don't mind to disable it by default, but since it's a network service, I would think it would be enabled by default, like NetworkManager. What do you think?
(In reply to comment #4) > > service-default-enabled: I don't mind to disable it by default, but since it's > a network service, I would think it would be enabled by default, like > NetworkManager. What do you think? In the network that Cerebro creates, every node can not only communicate with others, but also update its own profile and receive updates for everyone else. While you are not running Cerebro, the user will miss those updates. If necessary, the user can go into "silent mode" and have Cerebro never transmit a single byte, while still receiving as much of the information that is being broadcasted anyway and would otherwise be dropped by the kernel (because there is no process listening for this type of data). In conclusion, the user _might_ lose some potentially interesting information while not running Cerebro, but probably nothing to lose while running it.
@Polychronis & @Robin I am having some tough time with my system & will only be able to review as soon as infrastructure problems are solved. (koji or need to set up mock) as said above hopefully in few days. Thanks.
Review Point is I could not start server for me at least on my machine. The init.d script seems to be very bad: [rpmbuild@rocky cerebro]$ sudo /etc/init.d/cerebro start Starting Cerebro: [ OK ] [rpmbuild@rocky cerebro]$ cat: /sys/class/net/msh0/address: No such file or directory I tried with : [rpmbuild@rocky cerebro]$ cerebroui --help master True Error in sys.excepthook: TypeError: print_exc() takes at most 2 arguments (3 given) Original exception was: Traceback (most recent call last): File "/usr/bin/cerebroui", line 1038, in <module> gui = GUI() File "/usr/bin/cerebroui", line 291, in __init__ CerebroInterface.__init__(self, ATYPE) File "/usr/lib/python2.5/site-packages/cerebro/interface.py", line 58, in __init__ self.signup() File "/usr/lib/python2.5/site-packages/cerebro/interface.py", line 62, in signup iface = bus.get_object('org.laptop.cerebro', '/org/laptop/cerebro') File "/usr/lib/python2.5/site-packages/dbus/bus.py", line 244, in get_object follow_name_owner_changes=follow_name_owner_changes) File "/usr/lib/python2.5/site-packages/dbus/proxies.py", line 241, in __init__ self._named_service = conn.activate_name_owner(bus_name) File "/usr/lib/python2.5/site-packages/dbus/bus.py", line 183, in activate_name_owner self.start_service_by_name(bus_name) File "/usr/lib/python2.5/site-packages/dbus/bus.py", line 281, in start_service_by_name 'su', (bus_name, flags))) File "/usr/lib/python2.5/site-packages/dbus/connection.py", line 607, in call_blocking message, timeout) dbus.exceptions.DBusException: org.freedesktop.DBus.Error.ServiceUnknown: The name org.laptop.cerebro was not provided by any .service files [rpmbuild@rocky cerebro]$ [rpmbuild@rocky cerebro]$ /etc/init.d/cerebro start touch: cannot touch `/var/lock/subsys/cerebro': Permission denied ] [rpmbuild@rocky cerebro]$ Error in sys.excepthook: TypeError: print_exc() takes at most 2 arguments (3 given) Original exception was: Traceback (most recent call last): File "/usr/sbin/cerebro", line 1077, in <module> if __name__ == "__main__": main() File "/usr/sbin/cerebro", line 1054, in main sys.stdout = open("/var/log/cerebro", 'a') IOError: [Errno 13] Permission denied: '/var/log/cerebro' Does not look sane!! Regarding 1) conf file i agree 2) keep it on by default will be okay. rpmlint(rp => rpmlint): [rpmbuild@rocky noarch]$ rp -i cerebro-2.9.8-1.fc9.noarch.rpm cerebro.noarch: W: conffile-without-noreplace-flag /etc/dbus-1/system.d/cerebro.conf A configuration file is stored in your package without the noreplace flag. A way to resolve this is to put the following in your SPEC file: %config(noreplace) /etc/your_config_file_here *I agree with you here. It does not seem to be logical for putting a noreplace on it.* cerebro.noarch: W: service-default-enabled /etc/rc.d/init.d/cerebro The service is enabled by default after "chkconfig --add"; for security reasons, most services should not be. Use "-" as the default runlevel in the init script's "chkconfig:" line and/or remove the "Default-Start:" LSB keyword to fix this if appropriate for this service. *you can ignore it* 1 packages and 0 specfiles checked; 0 errors, 2 warnings. Build successfully: http://koji.fedoraproject.org/koji/taskinfo?taskID=781524 Required: [x] Name -- [!] License -- License seems to be GPLv2+ as I can check from COPYING & src [x] Spec file is in American Eng and legible [x] Build successfully [x] BuildRequires [x] Duplicate files - nil [NA] locale [x] permissions -- okay [x] source link correct [x] packaging guidlines [x] Buildroot correct [x] owns every directory it creates [x] file encoding - checked [x] package has no dependency on files in %doc [x] gui [x] No dependencies outside FHS guidelines [x] md5sum Source from site: 4402c421790fcb13a942f01815145413 Source from srpm: 4402c421790fcb13a942f01815145413 [x] np .pyc files in %{_bindir} [x] .egg taken care Optional suggestions: a. if you are still to report upstream about the missing shebang -- then may be you would like to inform. Key NA = N/A, x = Check, ! = Problem, ? = Not evaluated In short: may be you need to work on making application get to usable level in sane way first, then there is license issue.
(In reply to comment #7) > Review > > Point is I could not start server for me at least on my machine. The init.d > script seems to be very bad: Yes it is. I 'll get back with a better one. > I tried with : > > [rpmbuild@rocky cerebro]$ cerebroui --help cerebroui is intended to be used as a sample application for cerebro, but should be executed while cerebro is running. > master True > Error in sys.excepthook: > TypeError: print_exc() takes at most 2 arguments (3 given) > > Original exception was: > Traceback (most recent call last): > File "/usr/bin/cerebroui", line 1038, in <module> > gui = GUI() > File "/usr/bin/cerebroui", line 291, in __init__ > CerebroInterface.__init__(self, ATYPE) > File "/usr/lib/python2.5/site-packages/cerebro/interface.py", line 58, in > __init__ > self.signup() > File "/usr/lib/python2.5/site-packages/cerebro/interface.py", line 62, in > signup > iface = bus.get_object('org.laptop.cerebro', '/org/laptop/cerebro') > File "/usr/lib/python2.5/site-packages/dbus/bus.py", line 244, in get_object > follow_name_owner_changes=follow_name_owner_changes) > File "/usr/lib/python2.5/site-packages/dbus/proxies.py", line 241, in > __init__ > self._named_service = conn.activate_name_owner(bus_name) > File "/usr/lib/python2.5/site-packages/dbus/bus.py", line 183, in > activate_name_owner > self.start_service_by_name(bus_name) > File "/usr/lib/python2.5/site-packages/dbus/bus.py", line 281, in > start_service_by_name > 'su', (bus_name, flags))) > File "/usr/lib/python2.5/site-packages/dbus/connection.py", line 607, in > call_blocking > message, timeout) > dbus.exceptions.DBusException: org.freedesktop.DBus.Error.ServiceUnknown: The > name org.laptop.cerebro was not provided by any .service files > [rpmbuild@rocky cerebro]$ > > [rpmbuild@rocky cerebro]$ /etc/init.d/cerebro start > touch: cannot touch `/var/lock/subsys/cerebro': Permission denied ] cerebro is a service, not an application and as such it requires root privileges to execute. Chief among the reasons for elevated privileges is the use of raw sockets and the attachment to org.laptop.cerebro dbus interface. > [!] License -- License seems to be GPLv2+ as I can check from COPYING & src Huh? what is wrong with GPLv2+ ?
>cerebro is a service, not an application and as such it requires root >privileges to execute. Chief among the reasons for elevated privileges is the >use of raw sockets and the attachment to org.laptop.cerebro dbus interface. Yes, I know -- my point is, it should respond in a sane way for whatever user does. >> [!] License -- License seems to be GPLv2+ as I can check from COPYING & src >Huh? what is wrong with GPLv2+ ? Spec says: GPLv3+ which is wrong.
Hi Rakesh, Sounds like Poly is going to work on the initscript issues. I used the GPLv3+ license tag because demjson.py says GPLv3 or later (everything else says GPLv2+, as you say). My understanding is that the package as a whole therefore must be GPLv3 or later. If you want to block the review on the initscript, that's ok...I'll work with upstream to get it fixed.
(In reply to comment #9) > >cerebro is a service, not an application and as such it requires root > >privileges to execute. Chief among the reasons for elevated privileges is the > >use of raw sockets and the attachment to org.laptop.cerebro dbus interface. > > Yes, I know -- my point is, it should respond in a sane way for whatever user > does. I completely agree. Cerebro has received extensive network testing but this is a good exercise to make it usable also. I do not claim to be an expert in packaging or addressing a large user audience, so any suggestions are greatly appreciated. > > > >> [!] License -- License seems to be GPLv2+ as I can check from COPYING & src > > > >Huh? what is wrong with GPLv2+ ? > > Spec says: GPLv3+ which is wrong. I see. Is it a problem if while demjson.py is GPLv3+ while the rest is GPLv2+ ?
@robin & @Polychronis You may like to inform upstream that if there intention is to move to GPLv3+ & if yes then update whole source (LICENSE file, source code blocks)? That would be nice if you folks work upstream to get initscript fixed. It would be equally *cool* if user interaction is sane.
It has already been more then one month, without an update. I have CLOSED it as DEFERRED till I get more information about it from reporter who is working upstream to put things in place. Thanks
I'd like to revisit the status of this bug report. I am currently working on the following: 1) providing more informative error messages to the user 2) eliminating any parts of the code that were present mostly for debugging purposes (like a sample UI application) and turn cerebro into a purely networking and presence service 3) Is there still an issue with the license? Do I need to update the license to GPLv3+? Isn't this covered by GPLv2+? p.
GPLv2+ is okay, spec was not correct, if I remember. Good, looking for more update soon.
As far as item #2 in comment #14 goes, I think the standard practice for things like sample code is to make it non-executable and mark it as documentation. If you want to I can make this change for cerebroui when we resubmit cerebro. For item #3, yes, the license tag was set to GPLv3+ because of demjson.py - I think the license tag is correct. Since that file is GPLv3+, we can distribute cerebro as GPLv3+, but not as GPLv2+. The 'more restrictive' (GPLv3+) license wins. As a matter of clarity, the LICENSE file should probably be changed to match GPLv3+, but I don't think that's usually required to pass package review. I could be mistaken, though.
@Robin You are correct, regarding license. - Thanks.
Having dealt with all three issues in comment #14, I 'd like to ask you to reconsider opening this review request. Thanks, Pol
I will review it in few days or next week end. Thanks for your efforts.
Here's a new SRPM and spec based on ypod's latest 3.0.5 release: http://people.fedoraproject.org/~rnorwood/rpms/cerebro-3.0.5-1.fc11.src.rpm http://people.fedoraproject.org/~rnorwood/rpms/cerebro.spec
Sorry for being non responsive for long, I would like to review it now. May you re-upload spec and srpm again - they are not reachable.
Hi - here is the spec and SRPM files of the latest version: http://dev.laptop.org/~ypod/releases/SPECS/cerebro.spec http://dev.laptop.org/~ypod/releases/SRPMS/cerebro-3.0.6-1.olpc3.src.rpm thanks
Sorry for keeping this for long wait .. I reviwed it again and found everything fine .. but while running first as root it fails: [rakesh@dhcp7-204 noarch]$ cerebro /usr/lib/python2.6/site-packages/cerebro/teleporter.py:17: DeprecationWarning: the sha module is deprecated; use the hashlib module instead import sys, time, select, os, sha, threading Traceback (most recent call last): File "/usr/sbin/cerebro", line 71, in <module> filemode='a') File "/usr/lib64/python2.6/logging/__init__.py", line 1358, in basicConfig hdlr = FileHandler(filename, mode) File "/usr/lib64/python2.6/logging/__init__.py", line 790, in __init__ stream = self._open() File "/usr/lib64/python2.6/logging/__init__.py", line 810, in _open stream = open(self.baseFilename, self.mode) IOError: [Errno 13] Permission denied: '/var/log/cerebro' [rakesh@dhcp7-204 noarch]$ [rakesh@dhcp7-204 noarch]$ [rakesh@dhcp7-204 noarch]$ Even later as root ? [rakesh@dhcp7-204 noarch]$ su - Password: [root@dhcp7-204 ~]# cerebro /usr/lib/python2.6/site-packages/cerebro/teleporter.py:17: DeprecationWarning: the sha module is deprecated; use the hashlib module instead import sys, time, select, os, sha, threading Interface msh0 was not found! Aborting. May you update with latest updates if any ? Thanks,
So it is expecting .. I guess .. but it is fail sane way for non root users ???
ping ?? Lets finish this ASAP ??
For the first issue, we could pretty easily catch that error and display a prettier error message. For the second, I'm not sure - we could include a more descriptive error message ("Hey, Cerebro needs a mesh network interface to work.") and maybe a link to further documentation.
@robin that would suffice .. after this I don't see any other issues.
Addressed both issues and replaced the sha module with hashlib to eliminate the DeprecationWarning. The latest RPMs can be found at the usual place: http://dev.laptop.org/~ypod/releases/
Sorry for delay, APPROVED
Just missed one point ... do clean the SPEC file before importing.
ping, may you start cvs procedure ? :)
New Package CVS Request ======================= Package Name: cerebro Short Description: presence information service Owners: Polychronis Ypodimatopoulos Branches: F-10 F-11 FedoraOLPCDelta InitialCC: michael
set '?' for fedora-cvs, was missing. Thanks,
CVS Not done FedoraOLPCDelta is not a valid branch in cvs Polychronis and Ypodimatopoulos are not valid accounts in fas you need to use fas accounts and not emails for initialcc, and fas acounts for owners. please fix and submit a new cvs request.
(In reply to comment #34) > CVS Not done > > FedoraOLPCDelta is not a valid branch in cvs > > Polychronis and Ypodimatopoulos are not valid accounts in fas > > > you need to use fas accounts and not emails for initialcc, and fas acounts for > owners. please fix and submit a new cvs request. fas account: ypod I don't have permission to set the cvs request back to fedora-cvs?
I have set '?' on your behalf. Not sure everything is still alright for cvs work. Thanks,
I can't parse the only CVS request I see, in comment 32. In addition, the reason that you cannot set the cvs request flag is because you have not been sponsored and thus cannot own packages in Fedora. I don't see that you ever indicated that you need a sponsor, and I don't recall whether or not Rakesh has the ability to sponsor you. Rakesh, if you are able and willing to sponsor Polychronis, please do so. If you cannot or do not wish to do so, please clear the fedora-review flag and go ahead and have this ticket block FE-NEEDSPONSOR. Once the sponsorship dance has been done, please submit a corrected CVS request and set the fedora-cvs flag back to '?'.
Poly and Rakesh - I'm willing to sponsor and/or co-own the package if you need. I haven't had a lot of time to devote to Fedora or OLPC stuff lately, though.
Robin - thanks for the "sponsorship" and it would be great if you 'd like to co-own the package. To be honest, I was not even aware of those procedures. Please let me know when the sponsorship is set.
Polychronis, it may be useful for you to read through this if you haven't already done so: http://fedoraproject.org/wiki/Join_the_package_collection_maintainers
Thanks Jason, cleared fedora-cvs request till Poly gets sponsored and added FE-NEEDSPONSOR @Robin If you consider it apt, you may sponsor Poly.
Poly, I believe you need to go to your fedora account page to request sponsorship from there, then I can approve you: https://admin.fedoraproject.org/accounts/user/view/ypod
Robin, are you sure you can actually sponsor folks? FAS shows you as a user in the packager group, not a sponsor.
Jason: Drat, you're correct. I thought I was, but perhaps I lost it along the way somewhere. Ypod: I'm afraid we'll have to find a different sponsor for you, or I could just own the package. Probably the former, since I'm afraid I can't really guarantee that I'll be able to devote the time to proper maintainership. Sorry. :-(
@Polychronis: In case you are interested in this package .. you will need to find sponsorship. https://fedoraproject.org/wiki/How_to_get_sponsored_into_the_packager_group has details. In case you are not interested we can close this bug and deferrer its inclusion till someone else gets interested. Thanks,