Re: [Sugar-devel] "Another osbuild instance is running" error

2016-01-01 Thread Shraddha Barke



On Sat, 2 Jan 2016, James Cameron wrote:


On Sat, Jan 02, 2016 at 10:21:12AM +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 
   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


Since the open does fail, and yet the file does not exist, the problem
must be in creating the file.

The most likely cause is owner or protection mask of the directory;
the directory in which the file is to be created, so please check:

stat /home/shraddha/git/sugar-build

Example expected output;

 File: ‘/home/use/git/sugar-build’
 Size: x   Blocks: xx IO Block:    directory
Device: xxxh/d  Inode: Links: xxx
Access: (0755/drwxr-xr-x)  Uid: ( 1000/   user)   Gid: ( 1000/   user)
Access: 2016-01-02 17:15:56.881528661 +1100
Modify: 2016-01-02 17:14:19.290923184 +1100
Change: 2016-0

Re: [Sugar-devel] "Another osbuild instance is running" error

2016-01-01 Thread James Cameron
On Sat, Jan 02, 2016 at 10:21:12AM +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 
> >>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. Meanw

Re: [Sugar-devel] "Another osbuild instance is running" error

2016-01-01 Thread Iain Brown Douglas
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 
> >> 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/.lo

Re: [Sugar-devel] "Another osbuild instance is running" error

2016-01-01 Thread Shraddha Barke



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 
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

Kind Regards,
Shraddha___
Sugar-devel mailing list
Sugar-devel@lists.sugarlabs.org
http://lists.sugarlabs.org/listinfo/sugar-devel


Re: [Sugar-devel] "Another osbuild instance is running" error

2016-01-01 Thread James Cameron
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 
> 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.

> Kind Regards,
> Shraddha
> 
> >>Sorry for the novice questions :(
> >
> >When you see me say something that doesn't match what you see, please
> >be sure to tell me about it!
> >
> >>
> >>Kind Regards,
> >>Shraddha
> >>
> >>>
> >>>--
> >>>James Cameron
> >>>http://quozl.netrek.org/
> >>>
> >
> >-- 
> >James Cameron
> >http://quozl.netrek.org/
> >


-- 
James Cameron
http://quozl.netrek.org/
___
Sugar-devel mailing list
Sugar-devel@lists.sugarlabs.org
http://lists.sugarlabs.org/listinfo/sugar-devel

Re: [Sugar-devel] "Another osbuild instance is running" error

2016-01-01 Thread Shraddha Barke



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 
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'




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!

Kind Regards,
Shraddha


Sorry for the novice questions :(


When you see me say something that doesn't match what you see, please
be sure to tell me about it!



Kind Regards,
Shraddha



--
James Cameron
http://quozl.netrek.org/



--
James Cameron
http://quozl.netrek.org/
___
Sugar-devel mailing list
Sugar-devel@lists.sugarlabs.org
http://lists.sugarlabs.org/listinfo/sugar-devel


[Sugar-devel] MusicBlocks

2016-01-01 Thread Daksh Shah
I have worked a bit with Music Blocks and I feel that it is a really nice 
Activity but the problem is that there are just too many features and not 
enough documentation on them or the code properly structured. Even the code 
needs some nice comments form documentation so that the new developers as well 
as the users understand it properly. I suggest that the activity should go on a 
feature-freeze for some time and in the time it should be documented and 
structured.
(is this the right place to be saying this?)
Best,Daksh___
Sugar-devel mailing list
Sugar-devel@lists.sugarlabs.org
http://lists.sugarlabs.org/listinfo/sugar-devel