Git development
 help / color / mirror / Atom feed
* Re: [PATCH 1/5] Library code for user-relative paths, take three.
From: Andreas Ericsson @ 2005-11-18 10:08 UTC (permalink / raw)
  To: Junio C Hamano; +Cc: git
In-Reply-To: <7v8xvmsu9o.fsf@assigned-by-dhcp.cox.net>

Junio C Hamano wrote:
> 
>>+	/* This is perfectly safe, and people tend to think of the directory
>>+	 * where they ran git-init-db as their repository, so humour them. */
>>+	(void)chdir(".git");
> 
> 
> It might be safe, but I think it changes the behaviour of
> upload-pack with strict case.  My gut reaction is we would want
> "if (!strict)" in front.  Thoughts?
> 

As it says in the comment; People tend to think of the directory where 
they ran "git init-db" as their repository, so humour them. It's nice 
for sharing files between devs in the office, and it *is* safe. Do as 
you please though. It's the generality of the

-- 
Andreas Ericsson                   andreas.ericsson@op5.se
OP5 AB                             www.op5.se
Tel: +46 8-230225                  Fax: +46 8-230231

^ permalink raw reply

* Re: "make test" fails with current HEAD
From: Matthias Urlichs @ 2005-11-18  8:56 UTC (permalink / raw)
  To: git
In-Reply-To: <7vbr0imlha.fsf@assigned-by-dhcp.cox.net>

Hi, Junio C Hamano wrote:

> Matthias Urlichs <smurf@smurf.noris.de> writes:
> 
>>>> Files /dev/null and b/file3 differ
>>
>> Of course, with LANG=de_DE.UTF-8 the situation is worse ...
> 
> A midway compromise solution would be to detect if either file
> is binary ourselves and not to call diff but always say "Binary
> files difer".

Actually, there's a better way:

$ diff -u /dev/null /tmp/ra
Binary files /dev/null and /tmp/ra differ
$ echo $?
2

So the trivial fix is to emit our own "Binary files FOO and BAR differ"
line if the exit status is 2.

-- 
Matthias Urlichs   |   {M:U} IT Design @ m-u-it.de   |  smurf@smurf.noris.de
Disclaimer: The quote was selected randomly. Really. | http://smurf.noris.de
 - -
If a man will go as far as he can see, he will be able to see farther when
he gets there.

^ permalink raw reply

* Re: [RFC] Applying a graft to a tree and "rippling" the changes through the history
From: Matthias Urlichs @ 2005-11-18  8:49 UTC (permalink / raw)
  To: git
In-Reply-To: <7vll01ut6j.fsf@assigned-by-dhcp.cox.net>

Hi, Junio C Hamano wrote:

> Ryan Anderson <ryan@michonline.com> writes:
> 
>> I've written a tool that will take a single commit, add it as a parent
>> of another commit, and recreate the history above that second commit in
>> a fully compatible manner.
> 
You're not the only one. My tool is different, however, in that it accepts
a list of old=>new commits. I have used it successfully to re-graft my
changes from a CVS->GIT tree to the corresponding CVS->SVN->GIT tree
(which cannot be identical, because (a) SVN's timestamps are not accurate
enough and (b) SVN's CVS import is more accurate in reproducing CVS
archives than cvsps can be).

> Also another rhetorical, tongue-in-cheek question.  What is your
> plan to ripple the graft through to update signed tags?  ;-)

I'd suggest adding the capability of grafting something onto a tag...


#!/usr/bin/python

# This is a simple script which clones a git subtree to another.

import sys,re,optparse,os,subprocess

parser = optparse.OptionParser("corresponding_file [ old_commit ]", conflict_handler="resolve", description="""\
Transfer a list of commits from one repository to another.

The first argument is a list of SHA1 entries of the form
	old new
It lists which commits are "the same".

old_commit and those of its parents which are not listed in the
corresponding_file are copied, i.e. new commit objects are created.
Their SHA1s are added to the file so that you may repeat the process
with other commits, or run it incrementally.

""")
parser.add_option("-h","--help","-?", action="help",
                    help="Print this help message and exit")
parser.add_option("-v", "--verbose", dest="verbose", action="store_true",
                    help="Report progress")

(options, args) = parser.parse_args()

if len(args) < 1 or len(args) > 3:
	parser.error("requires one to three arguments")


def end(p):
	try:
		retcode = p.wait()
	except OSError,e:
		print >>sys.stderr, "git-rev-list failed:", e
	else:
		if retcode < 0:
			print >>sys.stderr, "git-rev-list was terminated by signal", -retcode
			sys.exit(1)
		elif retcode > 0:
			print >>sys.stderr, "git-rev-list exited with non-zero exit code", retcode
			sys.exit(1)


re_cmt = re.compile(r'\s*#.*')
corr = {}
for l in open(args[0]):
	l = re_cmt.sub("",l).strip()
	if l == "": continue
	try:
		a,b = l.split()
	except ValueError:
		continue
	if len(a) != 40: continue
	if len(b) != 40: continue
	corr[a]=b

corrf=open(args[0],"a")

if len(args) >= 2:
	srctag = args[1]
else:
	srctag = "HEAD"

srcrepo = os.path.curdir

commits=[]
cmd = ["git-rev-list",srctag]
for k in corr.iterkeys():
	cmd.append("^"+k)
if options.verbose:
	print cmd

p=subprocess.Popen(cmd, stdout=subprocess.PIPE)
for l in p.stdout:
	l = l.strip()
	commits.append(l)
end(p)

while len(commits):
	c = commits.pop()
	if c in corr: continue
	if options.verbose:
		print "Processing:",c

	p=subprocess.Popen(["git-cat-file","commit",c], stdout=subprocess.PIPE)
	qf=os.tempnam()
	try:
		q=open(qf,"w")
		nx=False
		for l in p.stdout:
			if nx:
				q.write(l)
				continue
			l = l.strip()
			if l == "":
				nx=True
				q.write("\n")
				continue
			a,b = l.split(" ",1)
			if a == "parent":
				b = corr[b]
			print >>q,a,b
		q.close()
		q=subprocess.Popen(["git-hash-object","-w","-t","commit",qf], stdout=subprocess.PIPE)
		d = q.stdout.read().strip()
		end(q)
	finally:
		os.unlink(qf)
	end(p)
	corr[c] = d
	print >>corrf, c,d
	if options.verbose:
		print c,d,l

# OK, everything is done.
corrf.close()
print d

-- 
Matthias Urlichs   |   {M:U} IT Design @ m-u-it.de   |  smurf@smurf.noris.de
Disclaimer: The quote was selected randomly. Really. | http://smurf.noris.de
 - -
It's not what you know or what you do, it's who you know.

^ permalink raw reply

* Re: [ANNOUNCE] GIT 0.99.9j aka 1.0rc3
From: Junio C Hamano @ 2005-11-18  8:29 UTC (permalink / raw)
  To: Fernando J. Pereda; +Cc: git
In-Reply-To: <20051118083215.GA9551@ferdyx.org>

"Fernando J. Pereda" <ferdy@ferdyx.org> writes:

> We use the full tarball to build git in Gentoo Linux, are you planning
> to provide it ? Or from now on you won't provide the full tarball ?

No, it was a fallout from RPM renaming.  I'll fix up the release
script.

Thanks for letting me know.
 

^ permalink raw reply

* Re: git rebase conflict help?
From: Franck Bui-Huu @ 2005-11-18  8:04 UTC (permalink / raw)
  To: Kevin Geiss; +Cc: git
In-Reply-To: <33D6F7FB-7864-471B-A111-9991C768577A@desertsol.com>

Kevin Geiss wrote:

> I fetched my origin branch, then tried to run 'git rebase origin'.  
> one of my commits from master which is not yet in origin got a  
> conflict, so git rebase origin told me that the Simple cherry-pick  
> failed, and the Automatic cherry-pick got conflicts. and it saved the  
> commit message for me in .msg and my offending commit's id in .rebase- 
> tmp32409.
>
> I'm not sure how to proceed from here. actually, I know what the  
> offending changes are, and I could re-do the changes by hand and  
> commit them again, but I'd like to know what git tools I'm supposed  
> to use in this case...
>
You can take a look at this:
http://www.gelato.unsw.edu.au/archives/git/0508/7789.html

              Franck

^ permalink raw reply

* Re: "make test" fails with current HEAD
From: Junio C Hamano @ 2005-11-18  8:03 UTC (permalink / raw)
  To: Matthias Urlichs; +Cc: git
In-Reply-To: <20051118075117.GK31613@kiste.smurf.noris.de>

Matthias Urlichs <smurf@smurf.noris.de> writes:

>>> Files /dev/null and b/file3 differ
>
> Of course, with LANG=de_DE.UTF-8 the situation is worse ...

And at this point it becomes more and more tempting to have our
own internal diff generator, without relying on external diff.

A midway compromise solution would be to detect if either file
is binary ourselves and not to call diff but always say "Binary
files difer".

^ permalink raw reply

* Re: "make test" fails with current HEAD
From: Junio C Hamano @ 2005-11-18  8:03 UTC (permalink / raw)
  To: Matthias Urlichs; +Cc: git
In-Reply-To: <20051118075117.GK31613@kiste.smurf.noris.de>

Matthias Urlichs <smurf@smurf.noris.de> writes:

>>> Files /dev/null and b/file3 differ
>
> Of course, with LANG=de_DE.UTF-8 the situation is worse ...

And at this point it becomes more and more tempting to have our
own internal diff generator, without relying on external diff.

A midway compromise solution would be to detect if either file
is binary ourselves and not to call diff but always say "Binary
files differ".

^ permalink raw reply

* Re: [RFC] Using sticky directories to control access to branches.
From: Junio C Hamano @ 2005-11-18  7:55 UTC (permalink / raw)
  To: Carl Baldwin; +Cc: git
In-Reply-To: <20051117170129.GA14013@hpsvcnb.fc.hp.com>

Carl Baldwin <cnb@fc.hp.com> writes:

> Now, git was probably designed to do this on purpose because it is the
> safest way to update a branch in an automic way.

Yes.  How about using hooks/update?  The documentation for
receive-pack suggests the use of it for generating commit
notification e-mails, but this is more general mechanism.

When your developer runs git-push into the repository,
git-receive-pack is run (either locally or over ssh) as that
developer, so is hooks/update script.  Quoting from the relevant
section of the documentation:

    Before each ref is updated, if $GIT_DIR/hooks/update file exists
    and executable, it is called with three parameters:

           $GIT_DIR/hooks/update refname sha1-old sha1-new

    The refname parameter is relative to $GIT_DIR; e.g. for the
    master head this is "refs/heads/master".  Two sha1 are the
    object names for the refname before and after the update.  Note
    that the hook is called before the refname is updated, so either
    sha1-old is 0{40} (meaning there is no such ref yet), or it
    should match what is recorded in refname.

So if your policy is (1) always require fast-forward push
(i.e. never allow "git-push repo +branch:branch"), (2) you
have a list of users allowed to update each branch, and (3) you
do not let tags to be overwritten, then:

	#!/bin/sh
	# This is a sample hooks/update script, written by JC
        # in his e-mail buffer, so naturally it is not tested
        # but hopefully would convey the idea.

	umask 002
        case "$1" in
        refs/tags/*)
		# No overwriting an existing tag
        	if test -f "$GIT_DIR/$1"
                then
                	exit 1
		fi
	refs/heads/*)
        	# No rebasing or rewinding
                if expr "$2" : '0*$' >/dev/null
                then
                	# creating a new branch
			;
		else
                	# updating -- make sure it is a fast forward
        		mb=`git-merge-base "$2" "$3"`
			case "$mb,$2" in
                        "$2,$mb")
                        	;; # fast forward -- happy
			*)
                        	exit 1 ;; # unhappy
			esac
		fi
	esac

	# Is he allowed to update it?
	me=`id -u -n` ;# e.g. "junio"
	while read head_pattern users
        do
		if expr "$1" : "$head_pattern" >/dev/null
		then
			case " $users " in
			*" $me "*)
                        	exit 0 ;; # happy
			'*')
                        	exit 0 ;; # anybody
			esac
		fi
	done
	exit 1

For the sake of simplicity, I assumed that you keep something
like this in $GIT_DIR/info/allowed-pushers file:

	refs/heads/master	junio
        refs/heads/cogito$	pasky
	refs/heads/bw/		linus
        refs/heads/tmp/		*
        refs/tags/v[0-9]*	junio

With , Linus can push or create "bw/penguin" or "bw/zebra" or
"bw/panda" branches, Pasky can do only "cogito", and I can do
master branch and make versioned tags.  And anybody can do
tmp/blah branches.  This assumes all the users are in a single
group that can write into $GIT_DIR/ and underneath.

^ permalink raw reply

* Re: "make test" fails with current HEAD
From: Matthias Urlichs @ 2005-11-18  7:51 UTC (permalink / raw)
  To: Junio C Hamano; +Cc: git
In-Reply-To: <7v7jb6o1kl.fsf@assigned-by-dhcp.cox.net>

[-- Attachment #1: Type: text/plain, Size: 726 bytes --]

Hi,

Junio C Hamano:
> > May I suggest to please run "make test" before pushing? Thanks! ;-)
> 
> Well, I do, but the thing is, I do not have an access to your
> particular machine ;-).
> 
*Sigh*.

Sorry about that. It's not you, it's diff 2.8.7 -- which conveniently
omits the word "Binary".

>> Files /dev/null and b/file3 differ

Of course, with LANG=de_DE.UTF-8 the situation is worse ...

>> Dateien /dev/null und b/file3 sind verschieden.

... so git-diff-* might want to set LANG=C.

-- 
Matthias Urlichs   |   {M:U} IT Design @ m-u-it.de   |  smurf@smurf.noris.de
Disclaimer: The quote was selected randomly. Really. | http://smurf.noris.de
 - -
They're only trying to make me LOOK paranoid!

[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 189 bytes --]

^ permalink raw reply

* Re: "make test" fails with current HEAD
From: Junio C Hamano @ 2005-11-18  7:30 UTC (permalink / raw)
  To: Matthias Urlichs; +Cc: git
In-Reply-To: <pan.2005.11.17.15.31.56.755022@smurf.noris.de>

Matthias Urlichs <smurf@smurf.noris.de> writes:

> t4103.sh:
>
> fatal: patch with only garbage at line 30
> * FAIL 7: check binary diff with replacement.
>         git-checkout master
>                  git-apply --check --allow-binary-replacement BF.diff
>
> May I suggest to please run "make test" before pushing? Thanks! ;-)

Well, I do, but the thing is, I do not have an access to your
particular machine ;-).

I *think* this is the same problem as I fixed tonight with help
from LASCM and John Benes, and I'm hoping to push the fix out
before going to bed tonight.  If you are impatient the patch has
already been sent out.

^ permalink raw reply

* Re: [ANNOUNCE] GIT 0.99.9j aka 1.0rc3
From: Fernando J. Pereda @ 2005-11-18  8:32 UTC (permalink / raw)
  To: git
In-Reply-To: <7vfypvzsos.fsf@assigned-by-dhcp.cox.net>

[-- Attachment #1: Type: text/plain, Size: 552 bytes --]

On Wed, Nov 16, 2005 at 10:36:51PM -0800, Junio C Hamano wrote:
| GIT 0.99.9j aka 1.0rc3 is found at usual places.

We use the full tarball to build git in Gentoo Linux, are you planning
to provide it ? Or from now on you won't provide the full tarball ?

It is not a big problem since I can download it from git, but hey, it is
always easier to use the sources provided by upstream for us.

Thanks
	Ferdy

-- 
Fernando J. Pereda Garcimartín
Gentoo Developer (Alpha,net-mail,mutt,git)
20BB BDC3 761A 4781 E6ED  ED0B 0A48 5B0C 60BD 28D4

[-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --]

^ permalink raw reply

* Re: Question on GIT tutorial.
From: Junio C Hamano @ 2005-11-18  7:24 UTC (permalink / raw)
  To: Franck; +Cc: git
In-Reply-To: <7vlkznt5tc.fsf@assigned-by-dhcp.cox.net>

Junio C Hamano <junkio@cox.net> writes:

>> """
>> Copy over the packed files from "project lead" public repository to
>> your public repository.
>> """
>>
>> Why is it needed ?
>
> That was a remnant from the days some transports did not
> understand objects/info/alternates; I think we do not need that
> step anymore.

After re-reading that section, I take it back.  What I meant to
say there was this:

   You are the subsystem maintainer, so your tree would have
   many overlapping objects with your project lead.  So in step
   2, you prepare an empty repository first, and then in step
   3., copy the packs from the project lead.  Then pushing into
   that repository in step 4 would prevent the objects you
   inherited from your project lead from getting expanded in
   your public repository.

But these days, there is a more efficient way *if* your public
repository resides on the same machine as the public repository
of your project lead.  First, on the public repository side:

   pub$ export GIT_DIR=/pub/my.git
   pub$ HIS_GIT=/pub/his.git
   pub$ git-init-db
   pub$ echo "$HIS_GIT/objects" >"$GIT_DIR/objects/info/alternates"
   pub$ (cd "$HIS_GIT/refs" && tar - heads tags) |
        (cd "$GIT_DIR/refs" && mkdir j.u.n.k && cd j.u.n.k && tar xf -)

This makes your repository to have the same refs as your
project lead has but under funny names.  Then from your primary
development repository, you push into your public repository:

   home$ git-send-pack --all ssh://pub.repo.xz/pub/my.git/

Thanks to the funny refs you stole from your project lead when
you prepared your public repository, this transfer sends only
objects the project lead does not have, and your refs.  After
this is done, you can get rid of the funny refs you stole from
your project lead:

   pub$ cd "$GIT_DIR/refs" && rm -fr j.u.n.k

If your public repository is not on the same machine as your
project lead's, objects/info/alternates trick cannot be used, so
what we have in the tutorial section still applies.

^ permalink raw reply

* Re: "make test" fails with current HEAD
From: Matthias Urlichs @ 2005-11-18  7:21 UTC (permalink / raw)
  To: Johannes Schindelin; +Cc: A Large Angry SCM, git
In-Reply-To: <Pine.LNX.4.63.0511180425200.6820@wbgn013.biozentrum.uni-wuerzburg.de>

[-- Attachment #1: Type: text/plain, Size: 509 bytes --]

Hi,

Johannes Schindelin:
> Any chance you investigate this in detail? Like inserting "test_done; 
> exit" right before that test, only running t4103-*, and then executing
> the command yourself?
> 
Thank you, I know how to debug ;-)

Already in progress.

-- 
Matthias Urlichs   |   {M:U} IT Design @ m-u-it.de   |  smurf@smurf.noris.de
Disclaimer: The quote was selected randomly. Really. | http://smurf.noris.de
 - -
A life spent in search of the perfect hash brownie is a life well spent.

[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 189 bytes --]

^ permalink raw reply

* Re: [PATCH] 'make clean' forgot about some files
From: Junio C Hamano @ 2005-11-18  6:48 UTC (permalink / raw)
  To: Nicolas Pitre; +Cc: git
In-Reply-To: <Pine.LNX.4.64.0511171038290.14287@localhost.localdomain>

Thanks

^ permalink raw reply

* Re: [PATCH] Add test case for git-config-set
From: Junio C Hamano @ 2005-11-18  6:32 UTC (permalink / raw)
  To: Johannes Schindelin; +Cc: git, junkio
In-Reply-To: <7vd5kypjv2.fsf@assigned-by-dhcp.cox.net>

Junio C Hamano <junkio@cox.net> writes:

> 	git-config-set section.key
>
> confusingly enough is --unset (we probably would want to require
> an explicit command line noise-word "--unset" in this case).

This is too confusing, so I think we should require --unset.  I
think the C-interface I suggested in the previous message can
stay the same, but from the command line perspective, we should
have a bit easier syntax.

A revised suggestion is:

	;# remove all
	git-config-set --unset section.key

	;# remove values that match rx and then append zero or more values
	git-config-set --remove rx section.key [value...]

	;# append one or more values (equivalent to specifying --remove
        ;# with rx that never matches anything).  To reduce
        ;# confusion, we always require at least one value here.
	git-config-set section.key value [value...]

	;# Additionally, purely as a syntax sugar, replace the
	;# entire multivalue with one or more values
	;# (equivalent to saying --remove '^').
	git-config-set --replace section.key value [value...]


I think (aside from "*-set" now becomes confusing), showing the
value of the specified key to stdout with

	git-config-set section.key

would be a nice addition to complete the suite; has anybody
noticed that git-var is cumbersome to use for this?

^ permalink raw reply

* Re: [PATCH] Add test case for git-config-set
From: Junio C Hamano @ 2005-11-18  6:09 UTC (permalink / raw)
  To: Johannes Schindelin; +Cc: git, junkio
In-Reply-To: <Pine.LNX.4.63.0511172249410.18285@wbgn013.biozentrum.uni-wuerzburg.de>

Johannes Schindelin <Johannes.Schindelin@gmx.de> writes:

> +test_expect_failure 'ambiguous unset' \
> +	'git-config-set --unset nextsection.nonewline'

I am not so sure about this case.  Shouldn't this remove both?

For example, if a Porcelain wants to force pull.twohead to be
resolve and nothing else, and it wants to do it unconditionally,
it would first want to empty whatever multivalue there are
currently, and then insert its own, and I'd imagine the way to
say that would be like this:

	git-config-set --unset pull.twohead '^'
        git-config-set pull.twohead resolve

More simply (I do not think you have a test case for this):

        git-config-set pull.twohead resolve '^'

I think it is the easiest to explain and understand the
semantics of config_set_multivalue if it were to first remove all
existing key-value for matching ones, and then insert what was
provided by the user.

Extending that multivalue example a bit more, I think it is a
bit cumbersome for a Porcelain to set pull.twohead to recursive
and then resolve, with your interface.  Even if you had the
emptying behaviour I suggested above, you would have to say
something awkard like this:

	git-config-set --unset pull.twohead '^'
        git-config-set pull.twohead recursive
        git-config-set pull.twohead resolve no-such-value-should-be-there

Maybe we could have the shell-level interface like this:

	git-config-set [--remove rx] section.key [value...]

When --remove rx is specified, the command first removes
existing multivalue for the given section.key that match rx, and
then insert given value(s); not giving any values amounts to
--unset.  Not giving --remove rx is the same as giving a regexp
that matches all multivalues.  So the simplest:

	git-config-set section.key value

becomes a single-value assignment (insert-or-replace),

	git-config-set section.key

confusingly enough is --unset (we probably would want to require
an explicit command line noise-word "--unset" in this case).
And "replacing with two values regardless of whatever there are
currently" naturally becomes:

	git-config-set pull.twohead recursive resolve

The C-level interface would become something like:

	git_config_set_multivar(const char *key,
        			const char *remove_value_regex,
                                const char **values)

where values is a NULL terminated list of values.

BTW, do we want to remove the section after removing the last
key and making it empty?

^ permalink raw reply

* Re: [PATCH] Small script to patch .spec for Suse
From: A Large Angry SCM @ 2005-11-18  5:47 UTC (permalink / raw)
  To: H. Peter Anvin; +Cc: Josef Weidendorfer, git
In-Reply-To: <437D6294.8020003@zytor.com>

[-- Attachment #1: Type: text/plain, Size: 581 bytes --]

H. Peter Anvin wrote:
> Josef Weidendorfer wrote:
>> On Tuesday 15 November 2005 23:22, H. Peter Anvin wrote:
>>
>>> Sure.  It's called %if.  There is also %ifdef and %define.
>>
>>
>> So by replacing @@FOR_SUSE@@ to 0 or 1 in the Makefile, this:
>>  %if @@FOR_SUSE@@
>>  BuildRequires: openssh ...
>>  %else
>>  BuildRequires: openssh-clients ...
>>  %endif
>>
>> would work?
>>
> 
> SuSE might even have defined a distribution-specific macro that one can 
> key off of.  Some SuSE expert would have to comment.
> 

Attached is the output of 'rpm --showrc' on my Suse 9.3 system.

[-- Attachment #2: Suse_9.3_rpm--showrc.txt --]
[-- Type: text/plain, Size: 32347 bytes --]

ARCHITECTURE AND OS:
build arch            : i586
compatible build archs: i686 i586 i486 i386 noarch
build os              : Linux
compatible build os's : Linux
install arch          : i686
install os            : Linux
compatible archs      : i686 i586 i486 i386 noarch
compatible os's       : Linux

RPMRC VALUES:
macrofiles            : /usr/lib/rpm/macros:/usr/lib/rpm/i686-linux/macros:/usr/lib/rpm/suse_macros:/etc/rpm/macros.specspo:/etc/rpm/macros.prelink:/etc/rpm/macros.solve:/etc/rpm/macros.up2date:/etc/rpm/macros:/etc/rpm/i686-linux/macros:~/.rpmmacros
optflags              : -O2 -g -march=i686 -mcpu=i686

Features supported by rpmlib:
    rpmlib(VersionedDependencies) = 3.0.3-1
	PreReq:, Provides:, and Obsoletes: dependencies support versions.
    rpmlib(CompressedFileNames) = 3.0.4-1
	file name(s) stored as (dirName,baseName,dirIndex) tuple, not as path.
    rpmlib(PayloadIsBzip2) = 3.0.5-1
	package payload can be compressed using bzip2.
    rpmlib(PatchRPMs) = 3.0.6-1
	understand rpms that replace a subset of files.
    rpmlib(PayloadFilesHavePrefix) = 4.0-1
	package payload file(s) have "./" prefix.
    rpmlib(ExplicitPackageProvide) = 4.0-1
	package name-version-release is not implicitly provided.
    rpmlib(HeaderLoadSortsTags) = 4.0.1-1
	header tags are always sorted after being loaded.
    rpmlib(ScriptletInterpreterArgs) = 4.0.3-1
	the scriptlet interpreter can use arguments from header.
    rpmlib(PartialHardlinkSets) = 4.0.4-1
	a hardlink file set may be installed without being complete.
    rpmlib(ConcurrentAccess) = 4.1-1
	package scriptlets may access the rpm database while installing.

========================
-14: GNUconfigure(MCs:)	
  CFLAGS="${CFLAGS:-%optflags}" ; export CFLAGS; 
  LDFLAGS="${LDFLAGS:-%{-s:-s}}"  ; export LDFLAGS; 
  %{-C:_mydir="`pwd`"; %{-M: %{__mkdir} -p %{-C*};} cd %{-C*}} 
  dirs="`find ${_mydir} -name configure.in -print`"; export dirs; 
    for coin in `echo ${dirs}` 
do 
  dr=`dirname ${coin}`; 
if test -f ${dr}/NO-AUTO-GEN; then 
 : 
else 
     macrodirs=`sed -n -e 's,AM_ACLOCAL_INCLUDE((.*)),1,gp' < ${coin}`; 
    ( cd ${dr}; 
      aclocalinclude="${ACLOCAL_FLAGS}"; 
      for k in ${macrodirs}; do 
        if test -d ${k}; then 
          aclocalinclude="${aclocalinclude} -I ${k}"; 
        ##else 
        ##  echo "**Warning**: No such directory `${k}'.  Ignored." 
        fi 
      done 
      if grep "^AM_GNU_GETTEXT" configure.in >/dev/null; then 
        if grep "sed.*POTFILES" configure.in >/dev/null; then 
          : do nothing -- we still have an old unmodified configure.in 
        else 
          test -r ${dr}/aclocal.m4 || touch ${dr}/aclocal.m4; 
          echo "no" | gettextize --force --copy; 
          test -r ${dr}/aclocal.m4 && %{__chmod} u+w ${dr}/aclocal.m4; 
        fi 
      fi 
      if grep "^AM_PROG_LIBTOOL" configure.in >/dev/null; then 
        %{__libtoolize} --force --copy; 
      fi 
      aclocal ${aclocalinclude}; 
      if grep "^AM_CONFIG_HEADER" configure.in >/dev/null; then 
        %{__autoheader}; 
      fi 
      echo "Running automake --gnu ${am_opt} ..."; 
      %{__automake} --add-missing --gnu ${am_opt}; 
      %{__autoconf}; 
    ); 
  fi 
done 
  %{-C:${_mydir}}%{!-C:.}/configure %{_target_platform} --prefix=%{_prefix} --exec-prefix=%{_exec_prefix} --bindir=%{_bindir} --sbindir=%{_sbindir} --sysconfdir=%{_sysconfdir} --datadir=%{_datadir} --includedir=%{_includedir} --libdir=%{_libdir} --libexecdir=%{_libexecdir} --localstatedir=%{_localstatedir} --sharedstatedir=%{_sharedstatedir} --mandir=%{_mandir} --infodir=%{_infodir} %* ; 
  %{-C:cd ${_mydir}; unset _mydir}
-14: ___build_args	-e
-14: ___build_cmd	%{?_sudo:%{_sudo} }%{?_remsh:%{_remsh} %{_remhost} }%{?_remsudo:%{_remsudo} }%{?_remchroot:%{_remchroot} %{_remroot} }%{___build_shell} %{___build_args}
-14: ___build_post	exit 0
-14: ___build_pre	
  RPM_SOURCE_DIR="%{u2p:%{_sourcedir}}"
  RPM_BUILD_DIR="%{u2p:%{_builddir}}"
  RPM_OPT_FLAGS="%{optflags}"
  RPM_ARCH="%{_arch}"
  RPM_OS="%{_os}"
  export RPM_SOURCE_DIR RPM_BUILD_DIR RPM_OPT_FLAGS RPM_ARCH RPM_OS
  RPM_DOC_DIR="%{_docdir}"
  export RPM_DOC_DIR
  RPM_PACKAGE_NAME="%{name}"
  RPM_PACKAGE_VERSION="%{version}"
  RPM_PACKAGE_RELEASE="%{release}"
  export RPM_PACKAGE_NAME RPM_PACKAGE_VERSION RPM_PACKAGE_RELEASE
  %{?buildroot:RPM_BUILD_ROOT="%{u2p:%{buildroot}}"
  export RPM_BUILD_ROOT}
  %{?_javaclasspath:CLASSPATH="%{_javaclasspath}"
  export CLASSPATH}
  
  %{verbose:set -x}%{!verbose:exec > /dev/null}
  umask 022
  cd %{u2p:%{_builddir}}
-14: ___build_shell	%{?_buildshell:%{_buildshell}}%{!?_buildshell:/bin/sh}
-14: ___build_template	#!%{___build_shell}
%{___build_pre}
%{nil}
-14: __aclocal	aclocal
-14: __ar	ar
-14: __arch_install_post	%{nil}
-14: __as	as
-14: __autoconf	autoconf
-14: __autoheader	autoheader
-14: __automake	automake
-14: __awk	gawk
-14: __bzip2	/usr/bin/bzip2
-14: __cat	/bin/cat
-14: __cc	gcc
-14: __check_files	/usr/lib/rpm/check-files %{buildroot}
-14: __chgrp	/bin/chgrp
-14: __chgrp_Rhf	%{__chgrp} -Rhf
-14: __chmod	/bin/chmod
-14: __chown	/bin/chown
-14: __chown_Rhf	%{__chown} -Rhf
-14: __cp	/bin/cp
-14: __cpio	/usr/bin/cpio
-14: __cpp	gcc -E
-14: __cxx	g++
-14: __dbi_btconfig	
  btree		
  %{__dbi_other}
  %{__dbi_perms}
%{nil}
-14: __dbi_btconfig_current	%{__dbi_btconfig}
-14: __dbi_btconfig_rebuild	%{__dbi_btconfig} %{__dbi_rebuild}
-14: __dbi_cdb	create cdb mpool mp_mmapsize=16Mb mp_size=1Mb
-14: __dbi_htconfig	
  hash		
  %{__dbi_other}
  %{__dbi_perms}
%{nil}
-14: __dbi_htconfig_current	%{__dbi_htconfig}
-14: __dbi_htconfig_rebuild	%{__dbi_htconfig} %{__dbi_rebuild}
-14: __dbi_other	%{?_tmppath:tmpdir=%{_tmppath}} %{?__dbi_cdb}
-14: __dbi_perms	perms=0644
-14: __dbi_rebuild	nofsync !log !txn !cdb
-14: __dbi_transient	%{__dbi_rebuild} temporary private
-14: __debug_install_post	
   /usr/lib/rpm/find-debuginfo.sh %{_builddir}/%{?buildsubdir}
%{nil}
-14: __file	/usr/bin/file
-14: __find_provides	/usr/lib/rpm/find-provides
-14: __find_requires	/usr/lib/rpm/find-requires
-14: __gpg	/usr/bin/gpg
-14: __gpg_check_password_cmd	%{__gpg} 
	gpg --batch --no-verbose --passphrase-fd 3 -u "%{_gpg_name}" -so -
-14: __gpg_sign_cmd	%{__gpg} 
	gpg --batch --no-verbose --no-armor --passphrase-fd 3 --no-secmem-warning 
	-u "%{_gpg_name}" -sbo %{__signature_filename} %{__plaintext_filename}
-14: __grep	/usr/bin/grep
-14: __gzip	/usr/bin/gzip
-14: __id	/usr/bin/id
-14: __id_u	%{__id} -u
-14: __install	/usr/bin/install
-14: __ld	/usr/bin/ld
-14: __libtoolize	libtoolize
-14: __ln_s	ln -s
-14: __make	/usr/bin/make
-14: __mkdir	/bin/mkdir
-14: __mkdir_p	/bin/mkdir -p
-14: __mv	/bin/mv
-14: __nm	/usr/bin/nm
-14: __objcopy	/usr/bin/objcopy
-14: __objdump	/usr/bin/objdump
-14: __os_install_post	
    %{suse_check} 
    /usr/lib/rpm/brp-compress 
    /usr/lib/rpm/brp-symlink 
%{nil}
-14: __patch	/usr/bin/patch
-14: __perl	/usr/bin/perl
-14: __perl_provides	/usr/lib/rpm/perl.prov
-14: __perl_requires	/usr/lib/rpm/perl.req
-14: __pgp	/usr/bin/pgp
-14: __pgp5_check_password_cmd	%{__pgp} 
	pgps +batchmode=on +verbose=0 +armor=off "%{_pgp_name}" -f
-14: __pgp5_sign_cmd	%{__pgp} 
	pgps +batchmode=on +verbose=0 +armor=off 
	"+myname=%{_pgp_name}" -b %{__plaintext_filename} -o %{__signature_filename}
-14: __pgp_check_password_cmd	%{__pgp} 
	pgp +batchmode=on +verbose=0 "%{_pgp_name}" -sf
-14: __pgp_sign_cmd	%{__pgp} 
	pgp +batchmode=on +verbose=0 +armor=off 
	"+myname=%{_pgp_name}" -sb %{__plaintext_filename} %{__signature_filename}
-14: __python	/usr/bin/python
-14: __ranlib	ranlib
-14: __remsh	%{__rsh}
-14: __rm	/bin/rm
-14: __rsh	/usr/bin/rsh
-14: __sed	/usr/bin/sed
-14: __spec_build_args	%{___build_args}
-14: __spec_build_body	%{___build_body}
-14: __spec_build_cmd	%{___build_cmd}
-14: __spec_build_post	%{___build_post}
-14: __spec_build_pre	%{___build_pre}
%{?buildroot:  %__rm -rf "$RPM_BUILD_ROOT"
  %__mkdir_p `dirname "$RPM_BUILD_ROOT"`
  %__mkdir "$RPM_BUILD_ROOT"
}
-14: __spec_build_shell	%{___build_shell}
-14: __spec_build_template	#!%{__spec_build_shell}
%{__spec_build_pre}
%{nil}
-14: __spec_check_args	%{___build_args}
-14: __spec_check_body	%{___build_body}
-14: __spec_check_cmd	%{___build_cmd}
-14: __spec_check_post	%{___build_post}
-14: __spec_check_pre	%{___build_pre}
-14: __spec_check_shell	%{___build_shell}
-14: __spec_check_template	#!%{__spec_check_shell}
%{__spec_check_pre}
%{nil}
-14: __spec_clean_args	%{___build_args}
-14: __spec_clean_body	%{___build_body}
-14: __spec_clean_cmd	%{___build_cmd}
-14: __spec_clean_post	%{___build_post}
-14: __spec_clean_pre	%{___build_pre}
-14: __spec_clean_shell	%{___build_shell}
-14: __spec_clean_template	#!%{__spec_clean_shell}
%{__spec_clean_pre}
%{nil}
-14: __spec_install_args	%{___build_args}
-14: __spec_install_body	%{___build_body}
-14: __spec_install_cmd	%{___build_cmd}
-14: __spec_install_post	
    %{?__debug_package:%{__debug_install_post}}
    %{__arch_install_post}
    %{__os_install_post}
%{nil}
-14: __spec_install_pre	%{___build_pre}
-14: __spec_install_shell	%{___build_shell}
-14: __spec_install_template	#!%{__spec_install_shell}
%{__spec_install_pre}
%{nil}
-14: __spec_prep_args	%{___build_args}
-14: __spec_prep_body	%{___build_body}
-14: __spec_prep_cmd	%{___build_cmd}
-14: __spec_prep_post	%{___build_post}
-14: __spec_prep_pre	%{___build_pre}
-14: __spec_prep_shell	%{___build_shell}
-14: __spec_prep_template	#!%{__spec_prep_shell}
%{__spec_prep_pre}
%{nil}
-14: __spec_rmbuild_args	%{___build_args}
-14: __spec_rmbuild_body	%{___build_body}
-14: __spec_rmbuild_cmd	%{___build_cmd}
-14: __spec_rmbuild_post	%{___build_post}
-14: __spec_rmbuild_pre	%{___build_pre}
-14: __spec_rmbuild_shell	%{___build_shell}
-14: __spec_rmbuild_template	#!%{__spec_rmbuild_shell}
%{__spec_rmbuild_pre}
%{nil}
-14: __ssh	/usr/bin/ssh
-14: __strip	/usr/bin/strip
-14: __tar	/bin/tar
-14: __unzip	/usr/bin/unzip
-14: __vsflags	0
-14: _arch	i386
-14: _bhA	RPMS
-14: _bhN	@(SRPMS|i386|alpha|sparc|s390|ia64)
-14: _bhVR	RedHat
-14: _bhcoll	@(7.3|7.2|7.1|7.1sbe|7.1k|7.0|7.01j|7.0j|7.0sbe|7.0tc|6.2|6.2ha|6.2ee|6.1|6.0|5.2|5.1|5.0)
-14: _bhpath	file://localhost/mnt/dist
-14: _binary_payload	w9.bzdio
-14: _bindir	%{_exec_prefix}/bin
-14: _build	%{_host}
-14: _build_alias	%{_host_alias}
-14: _build_arch	i386
-14: _build_cpu	%{_host_cpu}
-14: _build_name_fmt	%%{ARCH}/%%{NAME}-%%{VERSION}-%%{RELEASE}.%%{ARCH}.rpm
-14: _build_os	%{_host_os}
-14: _build_vendor	%{_host_vendor}
-14: _builddir	%{_topdir}/BUILD
-14: _buildshell	/bin/sh
-14: _bzip2bin	%{__bzip2}
-14: _cache_dbpath	/var/spool/up2date/cache
-14: _datadir	%{_prefix}/share
-14: _dbapi	3
-14: _dbapi_rebuild	3
-14: _dbi_btconfig	
  %{?_rpmdb_rebuild:%{__dbi_btconfig_rebuild}}
  %{!?_rpmdb_rebuild:%{__dbi_btconfig_current}}
%{nil}
-14: _dbi_config	%{_dbi_htconfig} nofsync
-14: _dbi_config_Depends	%{_dbi_htconfig} temporary private nofsync
-14: _dbi_config_Dirnames	%{_dbi_btconfig} nofsync
-14: _dbi_config_Installtid	%{_dbi_btconfig} nofsync
-14: _dbi_config_Packages	%{_dbi_htconfig} lockdbfd
-14: _dbi_config_Provideversion	%{_dbi_btconfig} nofsync
-14: _dbi_config_Removetid	%{_dbi_btconfig} nofsync
-14: _dbi_config_Requireversion	%{_dbi_btconfig} nofsync
-14: _dbi_htconfig	
  %{?_rpmdb_rebuild:%{__dbi_htconfig_rebuild}}
  %{!?_rpmdb_rebuild:%{__dbi_htconfig_current}}
%{nil}
-14: _dbi_tags	Packages:Name:Basenames:Group:Requirename:Providename:Conflictname:Triggername:Dirnames:Requireversion:Provideversion:Installtid:Sigmd5:Sha1header:Filemd5s:Depends:Pubkeys
-14: _dbpath	%{_var}/lib/rpm
-14: _dbpath_rebuild	%{_dbpath}
-14: _defaultdocdir	%{_usr}/share/doc/packages
-14: _docdir_fmt	%%{NAME}
-14: _exec_prefix	%{_prefix}
-14: _fixgroup	[ `%{__id_u}` = '0' ] && %{__chgrp_Rhf} root
-14: _fixowner	[ `%{__id_u}` = '0' ] && %{__chown_Rhf} root
-14: _fixperms	%{__chmod} -Rf a+rX,g-w,o-w
-14: _gnu	-gnu
-14: _gzipbin	%{__gzip}
-14: _host	i686-suse-linux
-14: _host_alias	i686-suse-linux%{nil}
-14: _host_cpu	i686
-14: _host_os	linux
-14: _host_vendor	suse
-14: _includedir	%{_prefix}/include
-14: _infodir	%{_prefix}/share/info
-14: _initrddir	%{_sysconfdir}/init.d
-14: _install_langs	all
-14: _install_script_path	/sbin:/bin:/usr/sbin:/usr/bin:/usr/X11R6/bin
-14: _instchangelog	5
-14: _javadir	%{_datadir}/java
-14: _javadocdir	%{_datadir}/javadoc
-14: _jnidir	%{_libdir}/java
-14: _jvmdir	%{_libdir}/jvm
-14: _jvmjardir	%{_libdir}/jvm-exports
-14: _jvmprivdir	%{_libdir}/jvm-private
-14: _lib	lib
-14: _libdir	%{_exec_prefix}/%{_lib}
-14: _libexecdir	%{_exec_prefix}/libexec
-14: _localstatedir	/var
-14: _mandir	%{_prefix}/share/man
-14: _missing_doc_files_terminate_build	1
-14: _multilibno	1
-14: _multilibpatt	(/%{_lib}|/usr/%{_lib}(|/gconv)|/usr/local/%{_lib}|/usr/X11R6/%{_lib}|/opt/%{_lib})/[^/]*\.([oa]|la|so[0-9.]*)$
-14: _oldincludedir	/usr/include
-14: _os	linux
-14: _package_version	30005
-14: _pgpbin	%{__pgp}
-15: _preScriptEnvironment	
RPM_SOURCE_DIR="%{_sourcedir}"
RPM_BUILD_DIR="%{_builddir}"
RPM_OPT_FLAGS="%{optflags}"
RPM_ARCH="%{_arch}"
RPM_OS="%{_os}"
export RPM_SOURCE_DIR RPM_BUILD_DIR RPM_OPT_FLAGS RPM_ARCH RPM_OS
RPM_DOC_DIR="%{_docdir}"
export RPM_DOC_DIR
RPM_PACKAGE_NAME="%{name}"
RPM_PACKAGE_VERSION="%{version}"
RPM_PACKAGE_RELEASE="%{release}"
export RPM_PACKAGE_NAME RPM_PACKAGE_VERSION RPM_PACKAGE_RELEASE
%{?buildroot:RPM_BUILD_ROOT="%{buildroot}"
export RPM_BUILD_ROOT
}
-14: _prefix	/usr
-14: _query_all_fmt	%%{name}-%%{version}-%%{release}
-14: _query_selector_match	default
-14: _repackage_all_erasures	0
-14: _repackage_dir	/var/spool/repackage
-14: _repackage_name_fmt	%%{NAME}-%%{VERSION}-%%{RELEASE}.%%{ARCH}.rpm
-14: _repackage_root	%{nil}
-14: _rpmdir	%{_topdir}/RPMS
-14: _rpmfilename	%{_build_name_fmt}
-14: _sbindir	%{_exec_prefix}/sbin
-14: _sharedstatedir	%{_prefix}/com
-14: _signature	none
-14: _smp_mflags	%([ -z "$RPM_BUILD_NCPUS" ] \
	&& RPM_BUILD_NCPUS="`/usr/bin/getconf _NPROCESSORS_ONLN`"; \
	[ "$RPM_BUILD_NCPUS" -gt 1 ] && echo "-j$RPM_BUILD_NCPUS")
-14: _sourcedir	%{_topdir}/SOURCES
-14: _specdir	%{_topdir}/SPECS
-14: _srcrpmdir	%{_topdir}/SRPMS
-14: _sysconfdir	/etc
-11: _target	i586-linux
-14: _target_alias	%{_host_alias}
-11= _target_cpu	i586
-11= _target_os	linux
-14: _target_platform	%{_target_cpu}-%{_vendor}-%{_target_os}
-14: _target_vendor	%{_host_vendor}
-14: _tmppath	%{_topdir}/TMP
-14: _topdir	/home/internet/RPM_TOP_DIR
-14: _transaction_color	0
-14: _unpackaged_files_terminate_build	1
-14: _unzipbin	%{__unzip}
-14: _use_internal_dependency_generator	0
-14: _usr	/usr
-14: _usrsrc	%{_usr}/src
-14: _var	/var
-14: _vendor	suse
-14: _vsflags_build	%{__vsflags}
-14: _vsflags_erase	%{__vsflags}
-14: _vsflags_install	%{__vsflags}
-14: _vsflags_query	%{__vsflags}
-14: _vsflags_rebuilddb	%{__vsflags}
-14: _vsflags_up2date	%{__vsflags}
-14: _vsflags_verify	%{__vsflags}
-14: add_jvm_extension	JAVA_LIBDIR=%{buildroot}/%{_javadir}	%{_bindir}/jvmjar -l
-14: add_start_if_needed	
   set -- %{?*} 
    while [ ${#*} -gt 0 ] ; do 
	SCRIPTNAME=$1 
	STARTVAR=$2 
	shift 2 
	test -n "$STARTVAR" -a -n "$SCRIPTNAME" || { 
	    echo "STARTVAR or SCRIPTNAME unknown" 
	    exit 1 
	} 
	if test "$FIRST_ARG" = "1" -o "$REMOVED_START" = "yes" -o "$FORCE_YES" = "1" ; then 
	  if test -n "$YAST_IS_RUNNING" ; then 
	    INSSERV_FORCE="-f" 
	  else 
	    INSSERV_FORCE="" 
	  fi 
	  if test "${!STARTVAR}" = "yes" -o "$FORCE_YES" = "1" ; then 
	    sbin/insserv $INSSERV_FORCE etc/init.d/$SCRIPTNAME 
	  else 
	    sbin/insserv $INSSERV_FORCE -r etc/init.d/$SCRIPTNAME 
	  fi 
	fi 
    done
-14: ant	JAVA_HOME=%{java_home} ant
-14: cflags_profile_feedback	-fbranch-probabilities
-14: cflags_profile_generate	-fprofile-arcs
-14: configure	
  CFLAGS="${CFLAGS:-%optflags}" ; export CFLAGS ; 
  CXXFLAGS="${CXXFLAGS:-%optflags}" ; export CXXFLAGS ; 
  FFLAGS="${FFLAGS:-%optflags}" ; export FFLAGS ; 
  ./configure --host=%{_host} --build=%{_build} \
	--target=%{_target_platform} \
	--program-prefix=%{?_program_prefix} \
 	--prefix=%{_prefix} \
	--exec-prefix=%{_exec_prefix} \
	--bindir=%{_bindir} \
	--sbindir=%{_sbindir} \
	--sysconfdir=%{_sysconfdir} \
	--datadir=%{_datadir} \
	--includedir=%{_includedir} \
	--libdir=%{_libdir} \
	--libexecdir=%{_libexecdir} \
	--localstatedir=%{_localstatedir} \
	--sharedstatedir=%{_sharedstatedir} \
	--mandir=%{_mandir} \
	--infodir=%{_infodir}
-14: configure_kernel_source	
	if test -d /usr/src/linux ; then 
	    pushd /usr/src/linux 
	    test -f .config || cp arch/%_arch/defconfig.default .config 
	    yes "" | make oldconfig 
	    make dep 
	    popd 
	fi 
	%nil
-14: debug_package	
%ifnarch noarch
%global __debug_package 1
%package debuginfo
Summary: Debug information for package %{name}
Group: Development/Debug
AutoReqProv: 0
%description debuginfo
This package provides debug information for package %{name}.
Debug information is useful when developing applications that use this
package or when debugging this package.
%files debuginfo -f debugfiles.list
%defattr(-,root,root)
%endif
%{nil}
-14: do_profiling	1
-14: do_real_fillup	
    TEMPLATE_DIR=var/adm/fillup-templates 
    SYSC_TEMPLATE=$TEMPLATE_DIR/sysconfig.$PNAME 
    RC_TEMPLATE=$TEMPLATE_DIR/rc.config.$PNAME 
    SD_NAME="" 
    if [ -x bin/fillup ] ; then 
	%{sysc_fillup} 
	# remove the START_ variables from the base fillup template 
	if [ -f $RC_TEMPLATE.del -a -f $RC_TEMPLATE ] ; then 
	  bin/fillup -q -r -i  $RC_TEMPLATE $RC_TEMPLATE.del /dev/null 
	  mv $RC_TEMPLATE.new $RC_TEMPLATE 
	fi 
	if [ -f etc/rc.config ] ; then 
	  %{rc_fillup} 
	  # remove the deprecated START_ variables from rc.config 
	  if [ -f $TEMPLATE_DIR/rc.config.$PNAME.del ] ; then 
	    rm -f etc/rc.config.xtract 
	    bin/fillup -q -r -i etc/rc.config $RC_TEMPLATE.del etc/rc.config.xtract 
	    if [ -f etc/rc.config.xtract ] ; then 
	      . etc/rc.config.xtract 
	    fi 
	    rm -f etc/rc.config.xtract $RC_TEMPLATE.del 
	    if [ -f etc/rc.config.new ] ; then 
	      cmp -s etc/rc.config.new etc/rc.config || REMOVED_START=yes 
	      mv etc/rc.config.new etc/rc.config 
	    fi 
	  fi 
	fi 
    else 
	echo "ERROR: fillup not found. This should not happen. Please compare" 
	echo "etc/rc.config and $TEMPLATE_DIR/rc.config.$PNAME and" 
	echo "update by hand." 
    fi
-14: fillup_and_insserv(finpsyY)	
  test -n "$FIRST_ARG" || FIRST_ARG=$1 
  %{-Y:FORCE_YES=1}%{!-Y:FORCE_YES=0} 
  REMOVED_START=no 
  set -- %{?*} 
  %{-n:PNAME=$1 ; shift }%{!-n:PNAME=%{name}} 
  INSSRV_ARRAY="" 
  while [ ${#*} -gt 0 ] ; do 
    SCRIPTNAME=$1 
    shift 
    %{-s:STARTVAR=$1 ; shift} 
    %{!-s:STARTVAR=START_`echo $SCRIPTNAME | tr a-z.- A-Z__`} 
    SV_B='^### BEGIN INIT INFO' 
    SV_E='^### END INIT INFO' 
    SV_KW=X-UnitedLinux-Default-Enabled 
    SV_VAL=`sed -n -e "/$SV_B/,/$SV_E/{/^# $SV_KW:[[:space:]]*\([^[:space:]]*\).*/s//\1/p;}" < etc/init.d/$SCRIPTNAME` 
    test -n "$SV_VAL" || SV_VAL=%{-y:"yes"}%{!-y:"no"} 
    eval $STARTVAR=$SV_VAL 
    test -n "$STARTVAR" -a -n "$SCRIPTNAME" || { 
	echo "STARTVARIABLE or SCRIPTNAME unknown" 
	exit 1 
    } 
    INSSRV_ARRAY="$INSSRV_ARRAY $SCRIPTNAME $STARTVAR" 
    %{!-f:%{!-i:grep -q "$STARTVAR=" var/adm/fillup-templates/rc.config.$PNAME.del 2>/dev/null || 
	echo -e "#\n# Start service $SCRIPTNAME\n#\n$STARTVAR=\"${!STARTVAR}\"\n\n" >> var/adm/fillup-templates/rc.config.$PNAME.del } } 
  done 
  %{!-f: %{do_real_fillup}} 
  %{!-i: %{add_start_if_needed $INSSRV_ARRAY } }
-14: fillup_only(dans)	
  %{-n:PNAME=%{1}}%{!-n:PNAME=%{name}} 
  %{-s:SUBPNAME=-%{2}}%{!-s:SUBPNAME=%{-a:-%{name}}} 
    TEMPLATE_DIR=var/adm/fillup-templates 
    SYSC_TEMPLATE=$TEMPLATE_DIR/sysconfig.$PNAME$SUBPNAME 
    RC_TEMPLATE=$TEMPLATE_DIR/rc.config.$PNAME 
    SD_NAME="" 
    %{-d:%{-s:SD_NAME=%{3}/}%{!-s:SD_NAME=%{2}/}} 
    if [ -x bin/fillup ] ; then 
	%{sysc_fillup} 
	%{rc_fillup} 
    else 
	echo "ERROR: fillup not found. This should not happen. Please compare" 
	echo "etc/rc.config and $RC_TEMPLATE and" 
	echo "update by hand." 
    fi
-14: fillup_prereq	fillup coreutils
-14: find_lang	/usr/lib/rpm/find-lang.sh %{buildroot}
-14: insserv_cleanup	
	sbin/insserv etc/init.d
-14: insserv_force_if_yast	
	if test -n "$YAST_IS_RUNNING" ; then 
            INSSERV_FORCE="-f" 
	else 
	    INSSERV_FORCE="" 
	fi 
	sbin/insserv $INSSERV_FORCE %{?*}
-14: insserv_prereq	insserv sed devs
-14: install_info(:-:)	
	ALL_ARGS=(%{**}) 
	NUM_ARGS=${#ALL_ARGS[@]} 
	if test -x sbin/install-info ; then 
	    if test -e "${ALL_ARGS[$((NUM_ARGS-1))]}" ; then 
		sbin/install-info "${ALL_ARGS[@]}" 
	    fi 
	fi ;
-14: install_info_delete(:-:)	
	ALL_ARGS=(%{**}) 
	NUM_ARGS=${#ALL_ARGS[@]} 
	if test -x sbin/install-info ; then 
	   if ! test -e "${ALL_ARGS[$((NUM_ARGS-1))]}" ; then 
		sbin/install-info --quiet --delete "${ALL_ARGS[@]}" 
	   fi ; 
	fi ;
-14: install_info_prereq	info
-14: is_plus	%(if test -f /.buildenv ; then source /.buildenv ; if [[ "$BUILD_BASENAME" == *+kde ]] ; then echo 1 ; else echo 0 ; fi ; else echo 0 ; fi)
-14: ix86	i386 i486 i586 i686 athlon
-14: jar	%{java_home}/bin/jar
-14: java	%(. %{_javadir}-utils/java-functions; set_javacmd; echo $JAVACMD)
-14: java_home	%(. %{_javadir}-utils/java-functions; set_jvm; echo $JAVA_HOME)
-14: javac	%{java_home}/bin/javac
-14: javadoc	%{java_home}/bin/javadoc
-14: jpackage_script	
install -d -m 755 $RPM_BUILD_ROOT%{_bindir}
cat > $RPM_BUILD_ROOT%{_bindir}/%5 << EOF 
#!/bin/sh
#
# %{name} script
# JPackage Project <http://www.jpackage.org/>

# Source functions library
. %{_javadir}-utils/java-functions

# Source system prefs
if [ -f %{_sysconfdir}/java/%{name}.conf ] ; then
  . %{_sysconfdir}/java/%{name}.conf
fi

# Source user prefs
if [ -f \$HOME/.%{name}rc ] ; then
  . \$HOME/.%{name}rc
fi

# Configuration
MAIN_CLASS=%1
BASE_FLAGS=%2
BASE_OPTIONS=%3
BASE_JARS="%(echo %4 | sed -e 's,:, ,g')"

# Set parameters
set_jvm
set_classpath \$BASE_JARS
set_flags \$BASE_FLAGS
set_options \$BASE_OPTIONS

# Let's start
run "\$@"
EOF
-14: makeinstall	make DESTDIR=%{?buildroot:%{buildroot}} install
-14: nil	%{!?nil}
-11: optflags	-O2 -g -march=i586 -mcpu=i686 -fmessage-length=0
-14: perl_archlib	%(eval "`perl -V:installarchlib`"; echo $installarchlib)
-14: perl_installarchlib	%(perl -V:installarchlib | sed "s!.*='!!;s!'.*!!")
-14: perl_installman1dir	%(perl -V:installman1dir | sed "s!.*='!!;s!'.*!!")
-14: perl_installman3dir	%(perl -V:installman3dir | sed "s!.*='!!;s!'.*!!")
-14: perl_make_install	make DESTDIR=$RPM_BUILD_ROOT install_vendor
-14: perl_man1dir	%(perl -V:man1dir | sed "s!.*='!!;s!'.*!!")
-14: perl_man1ext	%(perl -V:man1ext | sed "s!.*='!!;s!'.*!!")
-14: perl_man3dir	%(perl -V:man3dir | sed "s!.*='!!;s!'.*!!")
-14: perl_man3ext	%(perl -V:man3ext | sed "s!.*='!!;s!'.*!!")
-14: perl_prefix	%{buildroot}
-14: perl_process_packlist(n:)	
  mkdir -p $RPM_BUILD_ROOT/var/adm/perl-modules 
  test -f $RPM_BUILD_ROOT%{perl_archlib}/perllocal.pod && { sed -e "s@$RPM_BUILD_ROOT@@g" < $RPM_BUILD_ROOT%{perl_archlib}/perllocal.pod > $RPM_BUILD_ROOT/var/adm/perl-modules/%{-n:%{-n*}}%{!-n:%{name}} ; } ; 
  test -n "$RPM_BUILD_ROOT" -a -d $RPM_BUILD_ROOT/%perl_sitearch/auto && find $RPM_BUILD_ROOT/%perl_sitearch/auto -name .packlist -print0 | xargs -0 -r perl -spi -e "s@$RPM_BUILD_ROOT@@g" ; 
  test -n "$RPM_BUILD_ROOT" -a -d $RPM_BUILD_ROOT/%perl_vendorarch/auto && find $RPM_BUILD_ROOT/%perl_vendorarch/auto -name .packlist -print0 | xargs -0 -r perl -spi -e "s@$RPM_BUILD_ROOT@@g" ; 
  rm -f $RPM_BUILD_ROOT%{perl_archlib}/perllocal.pod 
  %nil
-14: perl_sitearch	%(eval "`perl -V:installsitearch`"; echo $installsitearch)
-14: perl_sitelib	%(perl -V:sitelib | sed "s!.*='!!;s!'.*!!")
-14: perl_vendorarch	%(perl -V:vendorarch | sed "s!.*='!!;s!'.*!!")
-14: perl_vendorlib	%(perl -V:vendorlib | sed "s!.*='!!;s!'.*!!")
-14: perl_version	%(perl -V:version | sed "s!.*='!!;s!'.*!!")
-14: py_compile(O)	
find %1 -name '*.pyc' -exec rm -f {} \; 
python -c "import sys, os, compileall; br='%{buildroot}'; compileall.compile_dir(sys.argv[1], ddir=br and (sys.argv[1][len(os.path.abspath(br)):]+'/') or None)" %1 
%{-O: 
find %1 -name '*.pyo' -exec rm -f {} \; 
python -O -c "import sys, os, compileall; br='%{buildroot}'; compileall.compile_dir(sys.argv[1], ddir=br and (sys.argv[1][len(os.path.abspath(br)):]+'/') or None)" %1 
}
-14: py_incdir	%{py_prefix}/include/python%{py_ver}
-14: py_libdir	%{py_prefix}/%{_lib}/python%{py_ver}
-14: py_prefix	%(python -c "import sys; print sys.prefix" 2>/dev/null || echo PYTHON-NOT-FOUND)
-14: py_requires(d)	
%define minver %py_ver 
%define maxver %(python -c "import sys; a,b=sys.version_info[:2]; print '%%d.%%d'%%(a,b+1)" 2>/dev/null || echo PYTHON-NOT-FOUND) 
BuildRequires: python %{-d:python-devel} 
PreReq: python >= %minver, python < %maxver
-14: py_sitedir	%{py_libdir}/site-packages
-14: py_ver	%(python -c "import sys; v=sys.version_info[:2]; print '%%d.%%d'%%v" 2>/dev/null || echo PYTHON-NOT-FOUND)
-14: rc_fillup	
	# maybe the fillup template for rc.config is old, make sure we do not readd stuff here 
	if [ -f $SYSC_TEMPLATE -a -f $RC_TEMPLATE ] ; then 
	  bin/fillup -q -r -i $RC_TEMPLATE $SYSC_TEMPLATE /dev/null 
	  mv $RC_TEMPLATE.new $RC_TEMPLATE 
	fi 
	# do the normal fillup for the rc.config variables 
	if [ -f $RC_TEMPLATE ] ; then 
	  bin/fillup -q -d = etc/rc.config $RC_TEMPLATE 
	fi
-14: remove_and_set(n:y)	
  %{-n:PNAME=%{-n*}}%{!-n:PNAME=%{name}} 
  DEF_VAL=%{-y:"yes"}%{!-y:"no"} 
  DEL_TEMPL=var/adm/fillup-templates/$PNAME.del 
  rm -f $DEL_TEMPL 
  for var in %{?*} ; do 
    echo -e "#\n$var=$DEF_VAL\n" >> $DEL_TEMPL 
  done 
  if [ -f etc/rc.config ]  ; then 
    bin/fillup -q -t -r -i -d "=" etc/rc.config $DEL_TEMPL etc/rc.config.xtract 
    test -f etc/rc.config.new && mv etc/rc.config.new etc/rc.config 
  fi 
  if [ -f etc/sysconfig/$PNAME ] ; then 
    bin/fillup -q -t -r -i -d "=" etc/sysconfig/$PNAME $DEL_TEMPL etc/rc.config.xtract.too 
    test -f etc/sysconfig/$PNAME.new && mv etc/sysconfig/$PNAME.new etc/sysconfig/$PNAME 
  fi  
  for i in $DEL_TEMPL etc/rc.config.xtract etc/rc.config.xtract.too ; do 
    if [ -f $i ] ; then 
     . $i 
     rm -f $i 
    fi 
  done
-14: rename_sysconfig_variable(f:)	
	%{!-f:FILE=etc/rc.config}%{-f:FILE=%{-f*}} 
	if [ -f $FILE ] ; then 
	  sed -e "s/^%{1}=/%{2}=/" $FILE > $FILE.new 
	  mv $FILE.new $FILE 
	fi
-14: requires_eq	%(LC_ALL="C" echo '%*' | xargs -r rpm -q --qf 'Requires: %%{name} = %%{epoch}:%%{version}\n' | sed -e 's/ (none):/ /' -e 's/ 0:/ /' | grep -v "is not")
-14: restart_on_update	
	test -n "$FIRST_ARG" || FIRST_ARG=$1 
	if test "$FIRST_ARG" -ge 1 ; then 
	   test -f /etc/sysconfig/services && . /etc/sysconfig/services 
           if test "$YAST_IS_RUNNING" != "instsys" -a "$DISABLE_RESTART_ON_UPDATE" != yes ; then 
              for service in %{?*} ; do 
                 /etc/init.d/$service try-restart > /dev/null || : 
              done 
           fi 
        fi 
	%nil
-14: run_ldconfig	/sbin/ldconfig
-14: run_permissions	
	if test "$YAST_IS_RUNNING" != "instsys" ; then 
	    if test -x /sbin/SuSEconfig -a -f /sbin/conf.d/SuSEconfig.permissions ; then 
		/sbin/SuSEconfig --module permissions 
	    fi 
	fi 
	%nil
-14: run_suseconfig(m:)	
   %{!-m:echo -e "\nERROR: missing parameter for macro run_suseconfig\n" ; exit 1 ; } 
   if test "$YAST_IS_RUNNING" != "instsys" ; then 
     if test -x /sbin/SuSEconfig -a -f /sbin/conf.d/SuSEconfig.%{-m*} ; then 
       /sbin/SuSEconfig --module %{-m*} 
     else 
       echo -e "\nERROR: SuSEconfig or requested SuSEconfig module not present!\n" ; exit 1 
     fi 
   fi 
   %nil
-14: run_suseconfig_fonts(c)	
  if test -x /sbin/conf.d/SuSEconfig.fonts ; then 
    %run_suseconfig -m fonts 
  fi 
  if test -x /sbin/conf.d/SuSEconfig.pango ; then 
    %run_suseconfig -m pango 
  fi 
  %{-c:if test -x /sbin/conf.d/SuSEconfig.ghostscript-cjk ; then 
         %run_suseconfig -m ghostscript-cjk 
       fi} 
  %nil
-14: save_rc_config_d_was_in_filelist(n)	
  %{-n:PNAME=%{?*}}%{!-n:PNAME=%{name}} 
  mkdir -p etc/sysconfig 
  if [ -f etc/rc.config.d/$PNAME.rc.config -a ! -f etc/sysconfig/$PNAME ] ; then 
    cp etc/rc.config.d/$PNAME.rc.config etc/sysconfig/$PNAME 
  fi
-15: sigtype	none
-14: sles_version	0
-14: stop_on_removal	
        test -n "$FIRST_ARG" || FIRST_ARG=$1 
        if test "$FIRST_ARG" = "0" ; then 
	   test -f /etc/sysconfig/services && . /etc/sysconfig/services 
           if test "$YAST_IS_RUNNING" != "instsys" -a "$DISABLE_STOP_ON_REMOVAL" != yes ; then 
              for service in %{?*} ; do 
                 /etc/init.d/$service stop > /dev/null 
              done 
           fi 
        fi 
        %nil
-14: suse_check	
        %{?buildroot:RPM_BUILD_ROOT="%{buildroot}"
        export RPM_BUILD_ROOT}
        test -x /usr/sbin/Check -a $UID = 0 -o -x /usr/sbin/Check -a ! -z "$RPM_BUILD_ROOT" && {
            echo "I call /usr/sbin/Check..."
            /usr/sbin/Check
        }
-14: suse_update_config(fcl)	
    AUTOMAKE_DIR=/usr/share/automake 
    [ -d $AUTOMAKE_DIR ] || AUTOMAKE_DIR=/usr/share/automake* 
    %{!-c:
      [ -d $AUTOMAKE_DIR ] || { 
        echo 'Please, install automake.' 
        exit 1 
      } 
    } 
    for d in . %{?*}; do 
      %{!-c:
        for f in config.sub config.guess; do 
          if test -f $d/$f -a ! $d/$f -ef $AUTOMAKE_DIR/$f ; then 
            %{!-f:[ $d/$f -nt $AUTOMAKE_DIR/$f ] ||} cp -f $AUTOMAKE_DIR/$f $d/$f 
          fi 
	  if test -d $d -a ! -f $d/depcomp -a -f $AUTOMAKE_DIR/depcomp ; then 
	    cp -f $AUTOMAKE_DIR/depcomp $d/depcomp 
	    echo "please add depcomp to sources for new automake!" 
	  fi 
	  if test -f $d/missing -a ! $d/missing -ef $AUTOMAKE_DIR/missing ; then 
	     cp -f $AUTOMAKE_DIR/missing $d/missing 
	  fi 
        done 
      } 
      %{!-l:
        for f in ltconfig ltmain.sh; do 
          if test -f $d/$f; then 
	    sed 's/linux-gnu\([^*][^*]*\)\*/linux*\1*/g; s/linux-gnu/linux/g; s,/lib\>,/%_lib,g; s,/%_lib\([$-]\),/lib\1,g' $d/$f > $d/$f-$$ && 
	    mv -f $d/$f-$$ $d/$f 
	    chmod +x $d/$f 
          fi 
        done 
      } 
    done
-14: suse_update_desktop_file(cinrud)	
  /usr/lib/rpm/suse_update_desktop_file.sh %{-c:-c} %{-i:-i} %{-n:-n} %{-r:-r} %{-u:-u} %{-d:-d} %* || exit 1 
  %nil
-14: suse_update_libdir	
   if [ %_lib != lib ]; then 
     for file in %{?*} ; do 
        [ ! -e $file ] && echo "Error:  $file does not exist!" && exit -1 
        [ -e $file.nolib64 ] && echo "Error:  $file.nolib64 already exists!" && exit -1 
        cp $file $file.nolib64 
        echo "patching $file" 
        sed -e "s,/lib\>,/%_lib,g" $file.nolib64 | sed -e "s,/%_lib/cpp,/lib/cpp,; s,/usr/%_lib/perl,/usr/lib/perl, ; s,/%_lib\([$-]\),/lib\1,g" > $file 
        rm -f $file.nolib64 
     done; 
   fi ;
-14: suse_version	930
-14: suseconfig_fonts_prereq	perl aaa_base
-14: sysc_fillup	
	if [ -f $SYSC_TEMPLATE ] ; then 
	    echo "Updating etc/sysconfig/$SD_NAME$PNAME..." 
	    if [ ! -d etc/sysconfig/$SD_NAME ] ; then 
		mkdir -p etc/sysconfig/$SD_NAME 
	    fi 
	    if [ -f etc/rc.config.d/$PNAME.rc.config ] ; then 
		if [ -f etc/sysconfig/$SD_NAME$PNAME ] ; then 
		    bin/fillup -q etc/sysconfig/$SD_NAME$PNAME etc/rc.config.d/$PNAME.rc.config 
		    rm -f etc/rc.config.d/$PNAME.rc.config 
		else 
		    mv etc/rc.config.d/$PNAME.rc.config etc/sysconfig/$SD_NAME$PNAME 
		fi 
	    fi 
	    if [ ! -f etc/rc.config ] ; then 
		test -f etc/sysconfig/$SD_NAME$PNAME || touch etc/sysconfig/$SD_NAME$PNAME 
		bin/fillup -q etc/sysconfig/$SD_NAME$PNAME $SYSC_TEMPLATE 
	    else 
	        if [ ! -f etc/sysconfig/$SD_NAME$PNAME ] ; then 
		    bin/fillup -q -r -i etc/rc.config $SYSC_TEMPLATE etc/sysconfig/$SD_NAME$PNAME 
	        else 
		    bin/fillup -q -r -i etc/rc.config $SYSC_TEMPLATE etc/sysconfig/$SD_NAME$PNAME.tmp 
		    bin/fillup -q etc/sysconfig/$SD_NAME$PNAME etc/sysconfig/$SD_NAME$PNAME.tmp 
		    rm -f etc/sysconfig/$SD_NAME$PNAME.tmp 
	        fi 
	        if [ -f etc/rc.config.new ] ; then 
		    mv etc/rc.config.new etc/rc.config 
	        fi 
	    fi
	fi
-14: tcl_version	%(echo 'puts [package require Tcl]' | tclsh)
-14: ul_version	0
-14: verify_permissions(:-:)	
   if test -f /etc/sysconfig/security ; then 
      source /etc/sysconfig/security 
   fi 
   PERMFILES="/etc/permissions" 
   for PERMEXT in $PERMISSION_SECURITY ; do 
     if test -f /etc/permissions.$PERMEXT ; then 
       PERMFILES="$PERMFILES /etc/permissions.$PERMEXT" 
     fi 
   done 
   /usr/bin/chkstat -n %{**} $PERMFILES 1>&2 
   %nil
======================== active 314 empty 0

^ permalink raw reply

* Re: [PATCH] Small script to patch .spec for Suse
From: H. Peter Anvin @ 2005-11-18  5:57 UTC (permalink / raw)
  To: gitzilla; +Cc: Josef Weidendorfer, git
In-Reply-To: <437D6AD8.90907@gmail.com>

A Large Angry SCM wrote:
> 
> Attached is the output of 'rpm --showrc' on my Suse 9.3 system.
> 
> -14: _vendor	suse

... looks promising.

	-hpa

^ permalink raw reply

* Re: [PATCH] Small script to patch .spec for Suse
From: H. Peter Anvin @ 2005-11-18  5:11 UTC (permalink / raw)
  To: Josef Weidendorfer; +Cc: git
In-Reply-To: <200511160232.15162.Josef.Weidendorfer@gmx.de>

Josef Weidendorfer wrote:
> On Tuesday 15 November 2005 23:22, H. Peter Anvin wrote:
> 
>>Sure.  It's called %if.  There is also %ifdef and %define.
> 
> 
> So by replacing @@FOR_SUSE@@ to 0 or 1 in the Makefile, this: 
> 
>  %if @@FOR_SUSE@@
>  BuildRequires: openssh ...
>  %else
>  BuildRequires: openssh-clients ...
>  %endif
> 
> would work?
> 

SuSE might even have defined a distribution-specific macro that one can 
key off of.  Some SuSE expert would have to comment.

	-hpa

^ permalink raw reply

* Re: [PATCH] Deal with binary diff output from (unknown version of) diff
From: A Large Angry SCM @ 2005-11-18  4:58 UTC (permalink / raw)
  To: Junio C Hamano; +Cc: John Benes, git
In-Reply-To: <7v1x1er2ai.fsf_-_@assigned-by-dhcp.cox.net>

Passed here!


Junio C Hamano wrote:
> Some vintage of diff says just "Files X and Y differ\n", instead
> of "Binary files X and Y differ\n", so catch both patterns.
> 
> Signed-off-by: Junio C Hamano <junkio@cox.net>
> 
> ---
> 
>     Junio C Hamano <junkio@cox.net> writes:
> 
>     >> Files /dev/null and b/file3 differ
>     >> diff --git a/file4 b/file4
>     >> index edc575d..adb07b7 100644
>     >> Files a/file4 and b/file4 differ
>     >
>     > Thanks.  I've seen enough.  I expected diff (GNU diffutils 2.8.1
>     > is what I have handy) output which says "Binary files a/foo and
>     > b/foo differ".
>     >
>     > Hmph.  Now I'd need to find a way to catch at least these two
>     > cases...
> 
>     Could you two try this patch please?

[snip snip]

^ permalink raw reply

* [PATCH] Deal with binary diff output from (unknown version of) diff
From: Junio C Hamano @ 2005-11-18  4:46 UTC (permalink / raw)
  To: A Large Angry SCM, John Benes; +Cc: git
In-Reply-To: <7vbr0ir387.fsf@assigned-by-dhcp.cox.net>

Some vintage of diff says just "Files X and Y differ\n", instead
of "Binary files X and Y differ\n", so catch both patterns.

Signed-off-by: Junio C Hamano <junkio@cox.net>

---

    Junio C Hamano <junkio@cox.net> writes:

    >> Files /dev/null and b/file3 differ
    >> diff --git a/file4 b/file4
    >> index edc575d..adb07b7 100644
    >> Files a/file4 and b/file4 differ
    >
    > Thanks.  I've seen enough.  I expected diff (GNU diffutils 2.8.1
    > is what I have handy) output which says "Binary files a/foo and
    > b/foo differ".
    >
    > Hmph.  Now I'd need to find a way to catch at least these two
    > cases...

    Could you two try this patch please?

diff --git a/apply.c b/apply.c
index 129edb1..50be8f3 100644
--- a/apply.c
+++ b/apply.c
@@ -893,12 +893,24 @@ static int parse_chunk(char *buffer, uns
 	patchsize = parse_single_patch(buffer + offset + hdrsize, size - offset - hdrsize, patch);
 
 	if (!patchsize) {
-		static const char binhdr[] = "Binary files ";
-
-		if (sizeof(binhdr) - 1 < size - offset - hdrsize &&
-		    !memcmp(binhdr, buffer + hdrsize + offset,
-			    sizeof(binhdr)-1))
-			patch->is_binary = 1;
+		static const char *binhdr[] = {
+			"Binary files ",
+			"Files ",
+			NULL,
+		};
+		int i;
+		int hd = hdrsize + offset;
+		unsigned long llen = linelen(buffer + hd, size - hd);
+
+		if (!memcmp(" differ\n", buffer + hd + llen - 8, 8))
+			for (i = 0; binhdr[i]; i++) {
+				int len = strlen(binhdr[i]);
+				if (len < size - hd &&
+				    !memcmp(binhdr[i], buffer + hd, len)) {
+					patch->is_binary = 1;
+					break;
+				}
+			}
 
 		/* Empty patch cannot be applied if:
 		 * - it is a binary patch and we do not do binary_replace, or

^ permalink raw reply related

* current HEAD in bash prompt
From: Ben Clifford @ 2005-11-17  8:39 UTC (permalink / raw)
  To: Git Mailing List

After getting a bit confused when having too many branches, and for  
people who don't mind extra forks and like too much info in their  
prompt, I've recently started using this:

export PS1='!\! [\j] \u@\h:\w$(output-git-head-or-blank)\$ '

where output-git-head-or-blank is:

#!/bin/bash

PS_GIT=$(git-symbolic-ref HEAD 2>/dev/null) && echo "[$(basename  
$PS_GIT)]" && exit

# else output nothing


When in a non-git directory, you get a non-git prompt (of course,  
modify this to whatever you want)

!502 [0] benc@piva:~$

and when in a git directory you get (a truncated form of) whatever  
today's head points at:


!502 [0] benc@piva:~$ cd src/globe
!503 [0] benc@piva:~/src/globe[master]$


-- 
Ben • ベン • Бэн • 벤 • 班明
http://www.hawaga.org.uk/ben/
My email is high latency but best way to contact me. Alternatively,  
SMS number(s) at above URL.

^ permalink raw reply

* Re: master has some toys
From: A Large Angry SCM @ 2005-11-18  4:40 UTC (permalink / raw)
  To: Junio C Hamano; +Cc: John Benes, git
In-Reply-To: <7v7jb6r35s.fsf@assigned-by-dhcp.cox.net>

Junio C Hamano wrote:
> John Benes <smartcat99s@gmail.com> writes:
> 
>>diff --git a/file4 b/file4
>>index
>>edc575dec543a684da5007b43886ee32ecb381ae..adb07b7ad3fa2c63251b06d1d39cb90a
>>85b860b4 100644
>>Files a/file4 and b/file4 differ
> 
> Thanks.  This is the same problem as what Large Angly SCM
> reports.  What does your "diff --version" say?


 > diff --version
diff (GNU diffutils) 2.8.7
Written by Paul Eggert, Mike Haertel, David Hayes,
Richard Stallman, and Len Tower.

Copyright (C) 2004 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
 >

^ permalink raw reply

* Re: master has some toys
From: John Benes @ 2005-11-18  4:35 UTC (permalink / raw)
  To: Junio C Hamano, git
In-Reply-To: <7v7jb6r35s.fsf@assigned-by-dhcp.cox.net>

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Junio C Hamano wrote:
> Thanks.  This is the same problem as what Large Angly SCM
> reports.  What does your "diff --version" say?

Twinkie@squirrel ~
$ diff --version
diff (GNU diffutils) 2.8.7
Written by Paul Eggert, Mike Haertel, David Hayes,
Richard Stallman, and Len Tower.
[snip 2004 copyright notice]

Extra useful info about my cygwin enviroment:

Twinkie@squirrel ~
$ cygcheck -V
cygcheck version 1.74
System Checker for Cygwin
Copyright 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005 Red Hat, Inc.
Compiled on Jul  2 2005

cygwin1.dll Version: 1.5.18

HTH!

- --
John Benes
GPG Fingerprint: D519 25DB BB5C 38FC 9D02  02E7 596D BC50 F880 27FA
"It is not only the living who are killed in war." - Isaac Asimov
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.1 (MingW32)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iQIVAwUBQ31aF2F0oWcU9kCNAQJrSRAAqDVQuCuF0PBn0ssGJA4sZ5fSa4S4hUju
yftaR9dDaWqpML4ieMcp5NXD1HEm6yzJbL9WhGuDQlpolo7ujbiI1sx7jP53Au+3
zm7iWojJVnRBirRAqsZpD2Ufriuzwnm6/rPJqe97RSkYIm29BcKsiSly67mFKEKJ
AL/MiAmH62h7HLOjSRR2o+3eGmvMlAesojoLdoTaCkic5l34WIfv4EzSSTSfwS+O
cn0K8MFqbuuApZTwECl5OdmAVbKGdC0PjgqgJQIEM39dWxKqqGrmSLvbs42AAEok
tOPTdB+4O2ECEIIYtjiqUAZ2ZDwVvxJwEyTEt60tzvbcfX0TwfXaO+JDxd9gmr8P
he/f05NT+IlqFrcXyXD8PVc+29ZBr7ocM1k+VIzqclGIjHMO6VjytEO3xppbtEDz
iAA5MFYsCM5fiJRndNYiH51WvVMjmmY1SO6LJtqGiwZhX3/couMy71JorXeqGgaW
Yjrkvs8q9AtvTG3Nq9BpmJCz0kXHbMmULchooaNtpDlPVVti9CA08vJ/9PssWRfD
MrkVkEijTpkw/lWClqW91aGWT9vlMeQSBVZf8Cr2Zg9DQNAFEE4LiVmlt10odZGw
cE4TlhaCk2Z2X1AeuDTimyN7hL6FMVweMsLgio1XNpk/NOCGkgvXDo7R76MfU8PS
dsT2ItOIm6w=
=o9sa
-----END PGP SIGNATURE-----

^ permalink raw reply

* Re: master has some toys
From: Junio C Hamano @ 2005-11-18  4:27 UTC (permalink / raw)
  To: John Benes; +Cc: git
In-Reply-To: <437D5219.6060300@gmail.com>

John Benes <smartcat99s@gmail.com> writes:

> diff --git a/file4 b/file4
> index
> edc575dec543a684da5007b43886ee32ecb381ae..adb07b7ad3fa2c63251b06d1d39cb90a
> 85b860b4 100644
> Files a/file4 and b/file4 differ

Thanks.  This is the same problem as what Large Angly SCM
reports.  What does your "diff --version" say?

^ permalink raw reply


This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox