On Sat, 2016-01-02 at 10:21 +0530, Shraddha Barke wrote: > > On Sat, 2 Jan 2016, James Cameron wrote: > > > On Fri, Jan 01, 2016 at 08:38:34PM +0530, Shraddha Barke wrote: > >> > >> > >> On Fri, 1 Jan 2016, James Cameron wrote: > >> > >>> On Thu, Dec 31, 2015 at 11:26:26PM +0530, Shraddha Barke wrote: > >>>> > >>>> > >>>> On Thu, 31 Dec 2015, James Cameron wrote: > >>>> > >>>>> On Thu, Dec 31, 2015 at 03:38:02AM +0530, Shraddha Barke wrote: > >>>>>>> On Wed, Dec 30, 2015 at 04:30:17AM +0530, Shraddha Barke wrote: > >>>>>>>> I am trying to build sugar on Ubuntu 15.04 laptop. After git clone > >>>>>>>> and cd into sugar-build I get this error-Another osbuild instance is > >>>>>>>> running on executing ./osbuild pull > >>>>>>>> I searched the internet and found 2 such threads but the issue wasn't > >>>>>>>> resolved. > >>>>>>> > >>>>>>> There's more than two such threads on sugar-devel at . > >>>>>>> > >>>>>>>> Is this a bug that needs fixing? > >>>>>>> > >>>>>>> Yes, it's a bug in osbuild, please fix it. > >>>>>> > >>>> Hello James, > >>>> I made the following changes in check_lock() > >>>> > >>>> def check_lock(): > >>>> - try: > >>>> - fcntl.lockf(get_lock_file(), fcntl.LOCK_EX | fcntl.LOCK_NB) > >>>> - except IOError: > >>>> - return False > >>>> - > >>>> - return True > >>>> - > >>>> > >>>> + pid = os.getpid() > >>>> + try: > >>>> + fcntl.lockf(pid, fcntl.LOCK_EX | fcntl.LOCK_NB) > >>>> + except IOError: > >>>> + return False > >>>> + try: > >>>> + os.kill(pid(), 0) > >>>> + except OSError: > >>>> + return False > >>>> + return True > >>> > >>> Ah, that's not what I meant. > >>> > >>> But I was wrong to suggest a redesign using getpid and kill, because > >>> my analysis of the code _today_ shows the underlying cause must be > >>> something other than locking. > >>> > >>> Let me explain. > >>> > >>> check_lock does try fcntl.lock, and if an exception IOError occurs, > >>> does return False. > >>> > >>> But inside the same try clause is a call to get_lock_file. Therefore > >>> any IOError inside get_lock_file will also cause check_lock to return > >>> False. > >>> > >>> A possible error is that the file could not be opened for write, > >>> e.g. because it is owned by someone else, or the protection mask > >>> (chmod) is wrong, or the directory does not exist, or the directory is > >>> protected. > >>> > >>> def check_lock(): > >>> lock_file = get_lock_file() > >>> try: > >>> fcntl.lockf(lock_file, fcntl.LOCK_EX | fcntl.LOCK_NB) > >>> except IOError: > >>> return False > >>> > >>> return True > >>> > >>> As a result of this change, any problem opening and writing to the > >>> file will be reported before the "another instance" error. > >>> > >> > >> Ah Got it! Thanks :) > >> > >> Like you said it's a permission error. I've posted it below - > >> > >> Traceback (most recent call last): > >> File "./osbuild", line 504, in <module> > >> if not main(): > >> File "./osbuild", line 467, in main > >> if not check_lock(): > >> File "./osbuild", line 406, in check_lock > >> lock_file = get_lock_file() > >> File "./osbuild", line 90, in get_lock_file > >> lock_file = open(get_lock_file_path(), "w") > >> IOError: [Errno 13] Permission denied: > >> '/home/shraddha/git/sugar-build/.lock-host' > > > > Okay, that will certainly stop osbuild from working. > > > >> > >>>> > >>>> so that when there is no process running false is returned. However it is > >>>> not fixing the bug. > >>>> And yeah when I try to delete the lock file, I get 'file or > >>>> directory doesn't exist' > >>> > >>> That's not possible to explain given the data you sent. > >>> > >>> You said the print statement showed the file path as > >>> > >>> .../git/sugar-build/.lock-host > >>> > >>> Presumably ... is something like /home/username > >>> > >>> Does the .lock-host file still exist? > >>> > >>> Show me "stat .lock-host"? > >>> > >>> If the file exists, but you cannot delete it, then osbuild will fail > >>> to open it for write. > >>> > >> > >> stat: cannot stat ‘.lock-host’: No such file or directory > >> > >> This is what I get. It's confusing that although it's failing to write, > >> stat says no such directory exists! > > > > Ye, that is strange. On the one hand the file exists and cannot be > > opened for write, yet now the file does not exist. > > > > Please check you are in the right directory when you use stat, or use > > stat with the same full path to the file (as reported by osbuild); > > > > stat /home/shraddha/git/sugar-build/.lock-host > > > > I'm trying not to presume any knowledge; if you only type "stat > > .lock-host", then the stat program will look for the file .lock-host > > in the current directory. You can see what the current directory is > > by typing "pwd". You can change the current directory using the "cd" > > command. > > > stat: cannot stat ‘/home/shraddha/git/sugar-build/.lock-host’: No such > file or directory > > I'm searching why this is happening. Meanwhile if anything strikes you > do let me know >
Hi Shraddha, May I ask, before this sugar-build failure, had you attempted to clone and build sugar-build on your machine before? I am thinking of a situation where you had tried and run out of time or bandwidth, and decided to start over? I have experienced this behaviour "when I try to delete the lock file, I get 'file or directory doesn't exist'" - it is most frustrating. Today, I have both .lock-host and .lock, as zero byte plain text documents, in a fresh, working Debian sugar-build. Can you see /home/shraddha/git/sugar-build/.lock-host in your regular file manager? I never reported it as a bug because I always thought (for a period of over a year) it was self-inflicted due to starting over (several times) on another partition. I cannot yet explain how I have overcome the problem other than by following along with the advice of James to you. @James, thank you. Regards, Iain > Kind Regards, > Shraddha > _______________________________________________ Sugar-devel mailing list > Sugar-devel@lists.sugarlabs.org > http://lists.sugarlabs.org/listinfo/sugar-devel _______________________________________________ Sugar-devel mailing list Sugar-devel@lists.sugarlabs.org http://lists.sugarlabs.org/listinfo/sugar-devel