Re: Error (with rather opaque Python diagnostic output) installing P4 integration
On Oct 22, 7:18 pm, Christian Hammond chip...@chipx86.com wrote: What it tries to fetch varies between setups, as it's dependent on the operating system and such. It sure doesn't look to me like it varies between setups, not for p4python.tgz. So I am really flummoxed about what's going on, particularly since I can fetch that file (ftp://ftp.perforce.com/ perforce/r08.2/bin/tools/p4python.tgz) using the command-line FTP client on the same host with no trouble at all. Or is it actually some other file it's trying to fetch, and am I misreading the script, I wonder? Thor -- Want to help the Review Board project? Donate today at http://www.reviewboard.org/donate/ Happy user? Let us know at http://www.reviewboard.org/users/ -~--~~~~--~~--~--~--- To unsubscribe from this group, send email to reviewboard+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/reviewboard?hl=en
Re: Error (with rather opaque Python diagnostic output) installing P4 integration
On Oct 24, 11:06 am, Thor Simon t...@panix.com wrote: On Oct 22, 7:18 pm, Christian Hammond chip...@chipx86.com wrote: What it tries to fetch varies between setups, as it's dependent on the operating system and such. It sure doesn't look to me like it varies between setups, not for p4python.tgz. So I am really flummoxed about what's going on, particularly since I can fetch that file (ftp://ftp.perforce.com/ perforce/r08.2/bin/tools/p4python.tgz) using the command-line FTP client on the same host with no trouble at all. ...and as soon as I fire up tcpdump, the problem is gone! Sigh. I wonder just _what_ the intermittent issue is, here. I'm sure it will hit others. Now, a new question: It gets much further in the easy_install but eventually exits like this: | byte-compiling /usr/local/lib/python2.6/dist-packages/P4.py to P4.pyc | running install_egg_info | Writing /usr/local/lib/python2.6/dist-packages/P4Python-2008.2.egg- info | No eggs found in /tmp/easy_install-0W6i_x/P4PythonInstaller/egg- dist-tmp-8XWlcb (setup script problem?) Is this expected/normal/harmless? Thor -- Want to help the Review Board project? Donate today at http://www.reviewboard.org/donate/ Happy user? Let us know at http://www.reviewboard.org/users/ -~--~~~~--~~--~--~--- To unsubscribe from this group, send email to reviewboard+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/reviewboard?hl=en
Re: Error (with rather opaque Python diagnostic output) installing P4 integration
That last error is normal. A Python egg package is meant to install something of its own, but P4PythonInstaller is a fake package that really installs a different package. You can ignore that error. In fact, we really should make it print some text saying to ignore that error, since we can't suppress the error itself. As for the download issues, I don't know. Perhaps the Perforce guys are just having some problems on their end right now. I've seen intermittent issues with their public Perforce server as well. Christian -- Christian Hammond - chip...@chipx86.com Review Board - http://www.reviewboard.org VMware, Inc. - http://www.vmware.com On Sun, Oct 24, 2010 at 8:12 AM, Thor Simon t...@panix.com wrote: On Oct 24, 11:06 am, Thor Simon t...@panix.com wrote: On Oct 22, 7:18 pm, Christian Hammond chip...@chipx86.com wrote: What it tries to fetch varies between setups, as it's dependent on the operating system and such. It sure doesn't look to me like it varies between setups, not for p4python.tgz. So I am really flummoxed about what's going on, particularly since I can fetch that file (ftp://ftp.perforce.com/ perforce/r08.2/bin/tools/p4python.tgz) using the command-line FTP client on the same host with no trouble at all. ...and as soon as I fire up tcpdump, the problem is gone! Sigh. I wonder just _what_ the intermittent issue is, here. I'm sure it will hit others. Now, a new question: It gets much further in the easy_install but eventually exits like this: | byte-compiling /usr/local/lib/python2.6/dist-packages/P4.py to P4.pyc | running install_egg_info | Writing /usr/local/lib/python2.6/dist-packages/P4Python-2008.2.egg- info | No eggs found in /tmp/easy_install-0W6i_x/P4PythonInstaller/egg- dist-tmp-8XWlcb (setup script problem?) Is this expected/normal/harmless? Thor -- Want to help the Review Board project? Donate today at http://www.reviewboard.org/donate/ Happy user? Let us know at http://www.reviewboard.org/users/ -~--~~~~--~~--~--~--- To unsubscribe from this group, send email to reviewboard+unsubscr...@googlegroups.comreviewboard%2bunsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/reviewboard?hl=en -- Want to help the Review Board project? Donate today at http://www.reviewboard.org/donate/ Happy user? Let us know at http://www.reviewboard.org/users/ -~--~~~~--~~--~--~--- To unsubscribe from this group, send email to reviewboard+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/reviewboard?hl=en
Re: Error (with rather opaque Python diagnostic output) installing P4 integration
On Oct 22, 6:39 am, Christian Hammond chip...@chipx86.com wrote: I believe this was a temporary problem. I can no longer reproduce it. Doing an easy_install P4PythonInstaller works fine now. Are you still hitting that same error? Are you by any chance behind a proxy? Same error this morning. We're not behind a proxy! What's it trying to fetch from exactly where, anyway? Can I fetch it by hand and point P4PythonInstaller at the fetched file? r...@reviewboard:/home/tls# easy_install P4PythonInstaller install_dir /usr/local/lib/python2.6/dist-packages/ Searching for P4PythonInstaller Reading http://pypi.python.org/simple/P4PythonInstaller/ Reading http://www.review-board.org/ Best match: P4PythonInstaller 0.2 Downloading http://reviewboard.googlecode.com/svn/trunk/P4PythonInstaller#egg=P4PythonInstaller-0.2 Doing subversion checkout from http://reviewboard.googlecode.com/svn/trunk/P4PythonInstaller to /tmp/easy_install-rxpgT2/P4PythonInstaller Processing P4PythonInstaller Running setup.py -q bdist_egg --dist-dir /tmp/easy_install-rxpgT2/ P4PythonInstaller/egg-dist-tmp-LY5KtW Downloading p4api.tgz... Downloading p4python.tgz... Traceback (most recent call last): File /usr/bin/easy_install, line 9, in module load_entry_point('distribute==0.6.14', 'console_scripts', 'easy_install')() File /usr/lib/python2.6/dist-packages/setuptools/command/ easy_install.py, line 1903, in main with_ei_usage(lambda: File /usr/lib/python2.6/dist-packages/setuptools/command/ easy_install.py, line 1884, in with_ei_usage return f() File /usr/lib/python2.6/dist-packages/setuptools/command/ easy_install.py, line 1907, in lambda distclass=DistributionWithoutHelpCommands, **kw File /usr/lib/python2.6/distutils/core.py, line 152, in setup dist.run_commands() File /usr/lib/python2.6/distutils/dist.py, line 975, in run_commands self.run_command(cmd) File /usr/lib/python2.6/distutils/dist.py, line 995, in run_command cmd_obj.run() File /usr/lib/python2.6/dist-packages/setuptools/command/ easy_install.py, line 361, in run self.easy_install(spec, not self.no_deps) File /usr/lib/python2.6/dist-packages/setuptools/command/ easy_install.py, line 601, in easy_install return self.install_item(spec, dist.location, tmpdir, deps) File /usr/lib/python2.6/dist-packages/setuptools/command/ easy_install.py, line 631, in install_item dists = self.install_eggs(spec, download, tmpdir) File /usr/lib/python2.6/dist-packages/setuptools/command/ easy_install.py, line 821, in install_eggs return self.build_and_install(setup_script, setup_base) File /usr/lib/python2.6/dist-packages/setuptools/command/ easy_install.py, line 1098, in build_and_install self.run_setup(setup_script, setup_base, args) File /usr/lib/python2.6/dist-packages/setuptools/command/ easy_install.py, line 1087, in run_setup run_setup(setup_script, args) File /usr/lib/python2.6/dist-packages/setuptools/sandbox.py, line 29, in run_setup lambda: execfile( File /usr/lib/python2.6/dist-packages/setuptools/sandbox.py, line 70, in run return func() File /usr/lib/python2.6/dist-packages/setuptools/sandbox.py, line 31, in lambda {'__file__':setup_script, '__name__':'__main__'} File setup.py, line 176, in module File setup.py, line 145, in main File setup.py, line 34, in download File /usr/lib/python2.6/ftplib.py, line 570, in quit resp = self.voidcmd('QUIT') File /usr/lib/python2.6/ftplib.py, line 248, in voidcmd return self.voidresp() File /usr/lib/python2.6/ftplib.py, line 223, in voidresp resp = self.getresp() File /usr/lib/python2.6/ftplib.py, line 209, in getresp resp = self.getmultiline() File /usr/lib/python2.6/ftplib.py, line 195, in getmultiline line = self.getline() File /usr/lib/python2.6/ftplib.py, line 185, in getline if not line: raise EOFError EOFError r...@reviewboard:/home/tls# -- Want to help the Review Board project? Donate today at http://www.reviewboard.org/donate/ Happy user? Let us know at http://www.reviewboard.org/users/ -~--~~~~--~~--~--~--- To unsubscribe from this group, send email to reviewboard+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/reviewboard?hl=en
Re: Error (with rather opaque Python diagnostic output) installing P4 integration
What it tries to fetch varies between setups, as it's dependent on the operating system and such. The setup.py for P4PythonInstaller is at http://reviewboard.googlecode.com/svn/trunk/P4PythonInstaller/. You can kind of see what it's trying to get by looking at the perforce_hostname, perforce_path, etc. variables in the setup.py file, the result of get_p4api_path, and the steps in main(). If you're at all comfortable with Python, you may want to do some debugging, or just grab the files and perform the steps that main() performs to try to install this yourself. Christian -- Christian Hammond - chip...@chipx86.com Review Board - http://www.reviewboard.org VMware, Inc. - http://www.vmware.com On Fri, Oct 22, 2010 at 5:34 AM, Thor Simon t...@panix.com wrote: On Oct 22, 6:39 am, Christian Hammond chip...@chipx86.com wrote: I believe this was a temporary problem. I can no longer reproduce it. Doing an easy_install P4PythonInstaller works fine now. Are you still hitting that same error? Are you by any chance behind a proxy? Same error this morning. We're not behind a proxy! What's it trying to fetch from exactly where, anyway? Can I fetch it by hand and point P4PythonInstaller at the fetched file? r...@reviewboard:/home/tls# easy_install P4PythonInstaller install_dir /usr/local/lib/python2.6/dist-packages/ Searching for P4PythonInstaller Reading http://pypi.python.org/simple/P4PythonInstaller/ Reading http://www.review-board.org/ Best match: P4PythonInstaller 0.2 Downloading http://reviewboard.googlecode.com/svn/trunk/P4PythonInstaller#egg=P4PythonInstaller-0.2 Doing subversion checkout from http://reviewboard.googlecode.com/svn/trunk/P4PythonInstaller to /tmp/easy_install-rxpgT2/P4PythonInstaller Processing P4PythonInstaller Running setup.py -q bdist_egg --dist-dir /tmp/easy_install-rxpgT2/ P4PythonInstaller/egg-dist-tmp-LY5KtW Downloading p4api.tgz... Downloading p4python.tgz... Traceback (most recent call last): File /usr/bin/easy_install, line 9, in module load_entry_point('distribute==0.6.14', 'console_scripts', 'easy_install')() File /usr/lib/python2.6/dist-packages/setuptools/command/ easy_install.py, line 1903, in main with_ei_usage(lambda: File /usr/lib/python2.6/dist-packages/setuptools/command/ easy_install.py, line 1884, in with_ei_usage return f() File /usr/lib/python2.6/dist-packages/setuptools/command/ easy_install.py, line 1907, in lambda distclass=DistributionWithoutHelpCommands, **kw File /usr/lib/python2.6/distutils/core.py, line 152, in setup dist.run_commands() File /usr/lib/python2.6/distutils/dist.py, line 975, in run_commands self.run_command(cmd) File /usr/lib/python2.6/distutils/dist.py, line 995, in run_command cmd_obj.run() File /usr/lib/python2.6/dist-packages/setuptools/command/ easy_install.py, line 361, in run self.easy_install(spec, not self.no_deps) File /usr/lib/python2.6/dist-packages/setuptools/command/ easy_install.py, line 601, in easy_install return self.install_item(spec, dist.location, tmpdir, deps) File /usr/lib/python2.6/dist-packages/setuptools/command/ easy_install.py, line 631, in install_item dists = self.install_eggs(spec, download, tmpdir) File /usr/lib/python2.6/dist-packages/setuptools/command/ easy_install.py, line 821, in install_eggs return self.build_and_install(setup_script, setup_base) File /usr/lib/python2.6/dist-packages/setuptools/command/ easy_install.py, line 1098, in build_and_install self.run_setup(setup_script, setup_base, args) File /usr/lib/python2.6/dist-packages/setuptools/command/ easy_install.py, line 1087, in run_setup run_setup(setup_script, args) File /usr/lib/python2.6/dist-packages/setuptools/sandbox.py, line 29, in run_setup lambda: execfile( File /usr/lib/python2.6/dist-packages/setuptools/sandbox.py, line 70, in run return func() File /usr/lib/python2.6/dist-packages/setuptools/sandbox.py, line 31, in lambda {'__file__':setup_script, '__name__':'__main__'} File setup.py, line 176, in module File setup.py, line 145, in main File setup.py, line 34, in download File /usr/lib/python2.6/ftplib.py, line 570, in quit resp = self.voidcmd('QUIT') File /usr/lib/python2.6/ftplib.py, line 248, in voidcmd return self.voidresp() File /usr/lib/python2.6/ftplib.py, line 223, in voidresp resp = self.getresp() File /usr/lib/python2.6/ftplib.py, line 209, in getresp resp = self.getmultiline() File /usr/lib/python2.6/ftplib.py, line 195, in getmultiline line = self.getline() File /usr/lib/python2.6/ftplib.py, line 185, in getline if not line: raise EOFError EOFError r...@reviewboard:/home/tls# -- Want to help the Review Board project? Donate today at http://www.reviewboard.org/donate/ Happy user? Let us know at http://www.reviewboard.org/users/ -~--~~~~--~~--~--~--- To unsubscribe from this group, send email to
Re: Error (with rather opaque Python diagnostic output) installing P4 integration
On Oct 20, 3:02 pm, Christian Hammond chip...@chipx86.com wrote: The one we use is a custom installer we wrote to do the installation of Perforce's Python library. It's really just a wrapper. I am not Python savvy and really have no idea how to manually install the library so that Reviewboard can use it. We're trying to migrate an existing Reviewboard from one machine to another and are stuck at this point. Sigh. I noticed this EOF error myself. It just started a couple days ago. I'm trying to figure it out. Is there any simple way to even tell what it's trying to fetch, short of taking a packet capture? Maybe Perforce moved a file on their FTP server. Thor -- Want to help the Review Board project? Donate today at http://www.reviewboard.org/donate/ Happy user? Let us know at http://www.reviewboard.org/users/ -~--~~~~--~~--~--~--- To unsubscribe from this group, send email to reviewboard+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/reviewboard?hl=en
Error (with rather opaque Python diagnostic output) installing P4 integration
I'm trying to install ReviewBoard on an Ubuntu 10.10 (x86) system. I've followed the instructions in the administration guide and have just about everything installed except the Perforce integration. I've installed p4 from the 2010.2 release in /usr/local/bin, which is in $PATH. I can't figure out from the error python throws exactly what's going wrong, but I would guess there's a problem retrieving the p4python.tgz file. However, since the error messages don't say exactly what it was trying to download nor from where at the time of failure I can't be sure. Error log follows. Help? r...@reviewboard:/home/tls# easy_install P4PythonInstaller install_dir /usr/local/lib/python2.6/dist-packages/ Searching for P4PythonInstaller Reading http://pypi.python.org/simple/P4PythonInstaller/ Reading http://www.review-board.org/ Best match: P4PythonInstaller 0.2 Downloading http://reviewboard.googlecode.com/svn/trunk/P4PythonInstaller#egg=P4PythonInstaller-0.2 Doing subversion checkout from http://reviewboard.googlecode.com/svn/trunk/P4PythonInstaller to /tmp/easy_install-WLySwR/P4PythonInstaller Processing P4PythonInstaller Running setup.py -q bdist_egg --dist-dir /tmp/easy_install-WLySwR/ P4PythonInstaller/egg-dist-tmp-8u50ev Downloading p4api.tgz... Downloading p4python.tgz... Traceback (most recent call last): File /usr/bin/easy_install, line 9, in module load_entry_point('distribute==0.6.14', 'console_scripts', 'easy_install')() File /usr/lib/python2.6/dist-packages/setuptools/command/ easy_install.py, line 1903, in main with_ei_usage(lambda: File /usr/lib/python2.6/dist-packages/setuptools/command/ easy_install.py, line 1884, in with_ei_usage return f() File /usr/lib/python2.6/dist-packages/setuptools/command/ easy_install.py, line 1907, in lambda distclass=DistributionWithoutHelpCommands, **kw File /usr/lib/python2.6/distutils/core.py, line 152, in setup dist.run_commands() File /usr/lib/python2.6/distutils/dist.py, line 975, in run_commands self.run_command(cmd) File /usr/lib/python2.6/distutils/dist.py, line 995, in run_command cmd_obj.run() File /usr/lib/python2.6/dist-packages/setuptools/command/ easy_install.py, line 361, in run self.easy_install(spec, not self.no_deps) File /usr/lib/python2.6/dist-packages/setuptools/command/ easy_install.py, line 601, in easy_install return self.install_item(spec, dist.location, tmpdir, deps) File /usr/lib/python2.6/dist-packages/setuptools/command/ easy_install.py, line 631, in install_item dists = self.install_eggs(spec, download, tmpdir) File /usr/lib/python2.6/dist-packages/setuptools/command/ easy_install.py, line 821, in install_eggs return self.build_and_install(setup_script, setup_base) File /usr/lib/python2.6/dist-packages/setuptools/command/ easy_install.py, line 1098, in build_and_install self.run_setup(setup_script, setup_base, args) File /usr/lib/python2.6/dist-packages/setuptools/command/ easy_install.py, line 1087, in run_setup run_setup(setup_script, args) File /usr/lib/python2.6/dist-packages/setuptools/sandbox.py, line 29, in run_setup lambda: execfile( File /usr/lib/python2.6/dist-packages/setuptools/sandbox.py, line 70, in run return func() File /usr/lib/python2.6/dist-packages/setuptools/sandbox.py, line 31, in lambda {'__file__':setup_script, '__name__':'__main__'} File setup.py, line 176, in module File setup.py, line 145, in main File setup.py, line 34, in download File /usr/lib/python2.6/ftplib.py, line 570, in quit resp = self.voidcmd('QUIT') File /usr/lib/python2.6/ftplib.py, line 248, in voidcmd return self.voidresp() File /usr/lib/python2.6/ftplib.py, line 223, in voidresp resp = self.getresp() File /usr/lib/python2.6/ftplib.py, line 209, in getresp resp = self.getmultiline() File /usr/lib/python2.6/ftplib.py, line 195, in getmultiline line = self.getline() File /usr/lib/python2.6/ftplib.py, line 185, in getline if not line: raise EOFError EOFError -- Want to help the Review Board project? Donate today at http://www.reviewboard.org/donate/ Happy user? Let us know at http://www.reviewboard.org/users/ -~--~~~~--~~--~--~--- To unsubscribe from this group, send email to reviewboard+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/reviewboard?hl=en
RE: Error (with rather opaque Python diagnostic output) installing P4 integration
I _highly_ recommend using the Perforce Python library instead of the one you get from easy_install. http://www.perforce.com/perforce/loadsupp.html It's a bit more manual and less automated, but it works better (and supports all the latest Perforce features :) You have to download the Perforce C/C++ API and then build the python interfaces to it, but it's very quick and easy. I've never had it fail (and I usually use Ubuntu) Dana Lacoste -Original Message- From: reviewboard@googlegroups.com [mailto:reviewbo...@googlegroups.com] On Behalf Of Thor Simon Sent: Wednesday, October 20, 2010 4:14 AM To: reviewboard Subject: Error (with rather opaque Python diagnostic output) installing P4 integration I'm trying to install ReviewBoard on an Ubuntu 10.10 (x86) system. I've followed the instructions in the administration guide and have just about everything installed except the Perforce integration. I've installed p4 from the 2010.2 release in /usr/local/bin, which is in $PATH. I can't figure out from the error python throws exactly what's going wrong, but I would guess there's a problem retrieving the p4python.tgz file. However, since the error messages don't say exactly what it was trying to download nor from where at the time of failure I can't be sure. Error log follows. Help? r...@reviewboard:/home/tls# easy_install P4PythonInstaller install_dir /usr/local/lib/python2.6/dist-packages/ Searching for P4PythonInstaller Reading http://pypi.python.org/simple/P4PythonInstaller/ Reading http://www.review-board.org/ Best match: P4PythonInstaller 0.2 Downloading http://reviewboard.googlecode.com/svn/trunk/P4PythonInstaller#egg=P4Pyth onInstaller-0.2 Doing subversion checkout from http://reviewboard.googlecode.com/svn/trunk/P4PythonInstaller to /tmp/easy_install-WLySwR/P4PythonInstaller Processing P4PythonInstaller Running setup.py -q bdist_egg --dist-dir /tmp/easy_install-WLySwR/ P4PythonInstaller/egg-dist-tmp-8u50ev Downloading p4api.tgz... Downloading p4python.tgz... Traceback (most recent call last): File /usr/bin/easy_install, line 9, in module load_entry_point('distribute==0.6.14', 'console_scripts', 'easy_install')() File /usr/lib/python2.6/dist-packages/setuptools/command/ easy_install.py, line 1903, in main with_ei_usage(lambda: File /usr/lib/python2.6/dist-packages/setuptools/command/ easy_install.py, line 1884, in with_ei_usage return f() File /usr/lib/python2.6/dist-packages/setuptools/command/ easy_install.py, line 1907, in lambda distclass=DistributionWithoutHelpCommands, **kw File /usr/lib/python2.6/distutils/core.py, line 152, in setup dist.run_commands() File /usr/lib/python2.6/distutils/dist.py, line 975, in run_commands self.run_command(cmd) File /usr/lib/python2.6/distutils/dist.py, line 995, in run_command cmd_obj.run() File /usr/lib/python2.6/dist-packages/setuptools/command/ easy_install.py, line 361, in run self.easy_install(spec, not self.no_deps) File /usr/lib/python2.6/dist-packages/setuptools/command/ easy_install.py, line 601, in easy_install return self.install_item(spec, dist.location, tmpdir, deps) File /usr/lib/python2.6/dist-packages/setuptools/command/ easy_install.py, line 631, in install_item dists = self.install_eggs(spec, download, tmpdir) File /usr/lib/python2.6/dist-packages/setuptools/command/ easy_install.py, line 821, in install_eggs return self.build_and_install(setup_script, setup_base) File /usr/lib/python2.6/dist-packages/setuptools/command/ easy_install.py, line 1098, in build_and_install self.run_setup(setup_script, setup_base, args) File /usr/lib/python2.6/dist-packages/setuptools/command/ easy_install.py, line 1087, in run_setup run_setup(setup_script, args) File /usr/lib/python2.6/dist-packages/setuptools/sandbox.py, line 29, in run_setup lambda: execfile( File /usr/lib/python2.6/dist-packages/setuptools/sandbox.py, line 70, in run return func() File /usr/lib/python2.6/dist-packages/setuptools/sandbox.py, line 31, in lambda {'__file__':setup_script, '__name__':'__main__'} File setup.py, line 176, in module File setup.py, line 145, in main File setup.py, line 34, in download File /usr/lib/python2.6/ftplib.py, line 570, in quit resp = self.voidcmd('QUIT') File /usr/lib/python2.6/ftplib.py, line 248, in voidcmd return self.voidresp() File /usr/lib/python2.6/ftplib.py, line 223, in voidresp resp = self.getresp() File /usr/lib/python2.6/ftplib.py, line 209, in getresp resp = self.getmultiline() File /usr/lib/python2.6/ftplib.py, line 195, in getmultiline line = self.getline() File /usr/lib/python2.6/ftplib.py, line 185, in getline if not line: raise EOFError EOFError -- Want to help the Review Board project? Donate today at http://www.reviewboard.org/donate/ Happy user? Let us know at http://www.reviewboard.org/users/ -~--~~~~--~~--~--~--- To unsubscribe from this group, send