2009-06-09 20:30:49

by Christian Kujau

[permalink] [raw]
Subject: [PATCH] scripts/setlocalversion on readonly source

Hi,

I'm building kernels with O=/some/dir and at some point
scripts/setlocalversion is being called, doing:

+ git update-index --refresh --unmerged
fatal: Unable to create '.git/index.lock': Read-only file system

Not only does it throw this error but it takes quite a long time to run,
only to fail anyway because the kernel source dir is located on a
read-only NFS mount.

The following patch makes the error go away:

--- linux-2.6-git/scripts/setlocalversion 2009-05-29 07:14:34.746191990 +0200
+++ /home/dummy/tmp/scripts/setlocalversion.edited 2009-06-09 22:20:29.000000000 +0200
@@ -39,8 +39,8 @@
printf -- '-svn%s' "`git svn find-rev $head`"
fi

- # Are there uncommitted changes?
- git update-index --refresh --unmerged > /dev/null
+ # Are there uncommitted changes? (and can we update the repo?)
+ touch . 2>/dev/null && git update-index --refresh --unmerged > /dev/null
if git diff-index --name-only HEAD | grep -v "^scripts/package" \
| read dummy; then
printf '%s' -dirty


Thanks,
Christian.
--
BOFH excuse #426:

internet is needed to catch the etherbunny


2009-06-12 08:00:48

by Nico Schottelius

[permalink] [raw]
Subject: Re: [PATCH] scripts/setlocalversion on readonly source

Hello everybody,

Christian Kujau [Tue, Jun 09, 2009 at 01:30:18PM -0700]:
> [...]
> + git update-index --refresh --unmerged
> fatal: Unable to create '.git/index.lock': Read-only file system
>
> [...] throw this error [...] takes quite a long time to run,
> [...] on a read-only NFS mount.

Agreed, one can spent time better.

But

> The following patch makes the error go away:
> [...]
> + touch . 2>/dev/null && git update-index --refresh --unmerged > /dev/null

changing stuff (mtime here) where it is not necessary is maybe not
the best thing todo. I suggest instead checking for a writable directory
(which is what you want todo anyway):

[ -w . ] && git update-index --refresh --unmerged > /dev/null

Full patch including comment cleanup is attached below.

Sincerly,

Nico


Do not update index on read only media.
Idea published by Christian Kujau <[email protected]>.

diff --git a/scripts/setlocalversion b/scripts/setlocalversion
index 0079047..46989b8 100755
--- a/scripts/setlocalversion
+++ b/scripts/setlocalversion
@@ -39,8 +39,10 @@ if head=`git rev-parse --verify --short HEAD 2>/dev/null`; then
printf -- '-svn%s' "`git svn find-rev $head`"
fi

- # Are there uncommitted changes?
- git update-index --refresh --unmerged > /dev/null
+ # Update index only on r/w media
+ [ -w . ] && git update-index --refresh --unmerged > /dev/null
+
+ # Check for uncommitted changes
if git diff-index --name-only HEAD | grep -v "^scripts/package" \
| read dummy; then
printf '%s' -dirty

--
Currently moving *.schottelius.org to http://www.nico.schottelius.org/ ...

PGP: BFE4 C736 ABE5 406F 8F42 F7CF B8BE F92A 9885 188C


Attachments:
(No filename) (1.62 kB)
signature.asc (197.00 B)
Digital signature
Download all attachments

2009-06-12 17:05:29

by Christian Kujau

[permalink] [raw]
Subject: Re: [PATCH] scripts/setlocalversion on readonly source

On Fri, 12 Jun 2009, Nico Schottelius wrote:
> changing stuff (mtime here) where it is not necessary is maybe not
> the best thing todo. I suggest instead checking for a writable directory
> (which is what you want todo anyway):
>
> [ -w . ] && git update-index --refresh --unmerged > /dev/null

Even better, thanks!

Christian.
--
BOFH excuse #187:

Reformatting Page. Wait...

2009-06-14 20:24:53

by Sam Ravnborg

[permalink] [raw]
Subject: Re: [PATCH] scripts/setlocalversion on readonly source

>
>
> Do not update index on read only media.
> Idea published by Christian Kujau <[email protected]>.
>
> diff --git a/scripts/setlocalversion b/scripts/setlocalversion
> index 0079047..46989b8 100755
> --- a/scripts/setlocalversion
> +++ b/scripts/setlocalversion
> @@ -39,8 +39,10 @@ if head=`git rev-parse --verify --short HEAD 2>/dev/null`; then
> printf -- '-svn%s' "`git svn find-rev $head`"
> fi
>
> - # Are there uncommitted changes?
> - git update-index --refresh --unmerged > /dev/null
> + # Update index only on r/w media
> + [ -w . ] && git update-index --refresh --unmerged > /dev/null
> +
> + # Check for uncommitted changes
> if git diff-index --name-only HEAD | grep -v "^scripts/package" \
> | read dummy; then
> printf '%s' -dirty

Please sign-off future patches.
I applied this with no signoff - but this is an exception.

Sam

2009-06-14 20:48:07

by Christian Kujau

[permalink] [raw]
Subject: Re: [PATCH] scripts/setlocalversion on readonly source

On Sun, 14 Jun 2009, Sam Ravnborg wrote:
> > Do not update index on read only media.
> > Idea published by Christian Kujau <[email protected]>.
> >
> > diff --git a/scripts/setlocalversion b/scripts/setlocalversion
> > index 0079047..46989b8 100755
> > --- a/scripts/setlocalversion
> > +++ b/scripts/setlocalversion
> > @@ -39,8 +39,10 @@ if head=`git rev-parse --verify --short HEAD 2>/dev/null`; then
> > printf -- '-svn%s' "`git svn find-rev $head`"
> > fi
> >
> > - # Are there uncommitted changes?
> > - git update-index --refresh --unmerged > /dev/null
> > + # Update index only on r/w media
> > + [ -w . ] && git update-index --refresh --unmerged > /dev/null
> > +
> > + # Check for uncommitted changes
> > if git diff-index --name-only HEAD | grep -v "^scripts/package" \
> > | read dummy; then
> > printf '%s' -dirty
>
> Please sign-off future patches.
> I applied this with no signoff - but this is an exception.

I'm not sure if we want to have patches w/o a signoff in the tree; but I
could only add a

Tested-by: Christian Kujau <[email protected]>

since it's Nico's patch now.

Thanks,
Christian.
--
BOFH excuse #446:

Mailer-daemon is busy burning your message in hell.