I still think the solution of wrapping the python interpreter rather than the python script is more elegant. As far as I can tell, there's no real downside to the approach and it avoids this problem entirely.
On Thu, May 21, 2015 at 12:15 PM, Domen Kožar <[email protected]> wrote: > Are you using unstable branch or 14.12? > > I think we'll need to drop use of sed and go with Python AST parsing for > injecting program name. > > On Thu, May 21, 2015 at 6:11 PM, Jeffrey David Johnson <[email protected]> > wrote: > >> I installed python27Packages.googlecl, and when running `google` it says: >> >> File >> "/nix/store/1ksk91s0kd1sv2clrkwcvzcmr67smgps-python2.7-googlecl-0.9.14/bin/.google-wrapped", >> line 45 >> from __future__ import with_statement >> SyntaxError: from __future__ imports must occur at the beginning of the >> file >> >> Indeed, that file has 44 lines of other stuff first that looks like they >> were added by a wrapper script: >> >> #!/nix/store/pbi1lgank10fy0xpjckbdpgacqw34dsz-python-2.7.9/bin/python2.7 >> # >> # Copyright (C) 2010 Google Inc. >> # >> # Licensed under the Apache License, Version 2.0 (the "License"); >> # you may not use this file except in compliance with the License. >> # You may obtain a copy of the License at >> # >> # http://www.apache.org/licenses/LICENSE-2.0 >> # >> # Unless required by applicable law or agreed to in writing, software >> # distributed under the License is distributed on an "AS IS" BASIS, >> # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. >> # See the License for the specific language governing permissions and >> # limitations under the License. >> >> >> import sys; sys.argv[0] = 'google' >> """Main function for the Google command line tool, GoogleCL. >> >> This program provides some functionality for a number of Google services >> from >> the command line. >> >> Example usage (omitting the initial "./google"): >> # Create a photo album with tags "Vermont" and name "Summer Vacation >> 2009" >> picasa create -n "Summer Vacation 2009" -t Vermont >> ~/photos/vacation2009/* >> >> # Post photos to an existing album >> picasa post -n "Summer Vacation 2008" ~/old_photos/*.jpg >> >> # Download another user's albums whose titles match a regular expression >> picasa get --user my.friend.joe --name ".*computer.*" >> ~/photos/joes_computer >> >> # Delete some posts you accidentally put up >> blogger delete -n "Silly post, number [0-9]*" >> >> # Post your latest film endeavor to YouTube >> youtube post --category Film --tag "Jane Austen, zombies" >> ~/final_project.mp4 >> >> Some terminology in use: >> service: The Google service being accessed (e.g. Picasa, Blogger, >> YouTube). >> task: What the client wants done by the service (e.g. post, get, >> delete). >> >> """ >> from __future__ import with_statement >> >> __author__ = '[email protected] (Tom Miller)' >> import glob >> import logging >> import optparse >> >> >> I guess we need to move this line below any __future__ statements: >> >> import sys; sys.argv[0] = 'google' >> >> According to https://docs.python.org/2/reference/simple_stmts.html#future >> the rest should be OK: >> >> A future statement must appear near the top of the module. The only lines >> that can appear before a future statement are: >> >> the module docstring (if any), >> comments, >> blank lines, and >> other future statements. >> >> Jeff >> _______________________________________________ >> nix-dev mailing list >> [email protected] >> http://lists.science.uu.nl/mailman/listinfo/nix-dev >> > > > _______________________________________________ > nix-dev mailing list > [email protected] > http://lists.science.uu.nl/mailman/listinfo/nix-dev > >
_______________________________________________ nix-dev mailing list [email protected] http://lists.science.uu.nl/mailman/listinfo/nix-dev
