git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [ANNOUNCE] tig 0.7
@ 2007-05-31 12:38 Jonas Fonseca
  2007-05-31 19:51 ` Steven Grimm
  0 siblings, 1 reply; 7+ messages in thread
From: Jonas Fonseca @ 2007-05-31 12:38 UTC (permalink / raw)
  To: git

Hello,

tig version 0.7 has been released into the wild. Apart from a few bug
fixes, cleanups, and minor improvements, it has support for a very basic
status view, which makes it possible to stage/unstage changes as well as
add untracked files.

Thanks for the patches related to the build/packaging infrastructure.

Grab the tarball at http://jonas.nitro.dk/tig/releases/
or pull it from git://repo.or.cz/tig.git

Following is a slightly edited shortlog:

Greg KH (1):
      Make it possible to install man pages and html files separately

Jakub Narebski (1):
      Infrastructure for tig rpm builds

Jonas Fonseca (22):
      Add TODO item about diff chunk staging/unstaging
      Fix revision graph visualization during incremental updating
      Introduce add_line_text to simplify pager based rendering
      move_view: fix view->offset overflow bug
      Be more paranoid about paths when updating the tree view
      Improve management of view->ref and the title line
      Move space separator from get_key to formatting in open_help_view
      Make keybinding reference more dynamic
      Add string_copy_rev
      Add notice about empty pager view
      Add open method to view_ops
      Refactor add_line_text parts into add_line_data; use it in main_read
      main_read: cleanup and simplify
      Add status view
      Add manpage XSL from git and enhance with literallayout fixes
      Add version information to man pages
      Move "static" version info to VERSION file
      Update sync-docs target to use git porcelain instead of cogito
      Various random Makefile cleanups
      Rename sync-docs to release-doc; add release-dist rule
      tig-0.7

-- 
Jonas Fonseca

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [ANNOUNCE] tig 0.7
  2007-05-31 12:38 [ANNOUNCE] tig 0.7 Jonas Fonseca
@ 2007-05-31 19:51 ` Steven Grimm
  2007-05-31 21:55   ` Jonas Fonseca
  0 siblings, 1 reply; 7+ messages in thread
From: Steven Grimm @ 2007-05-31 19:51 UTC (permalink / raw)
  To: Jonas Fonseca; +Cc: git

This doesn't build on OS X out of the box, FYI. It needs the following 
tweaks (which break the build on Linux, so I'm not suggesting you apply 
this -- looks like you might need a configure script or at least some 
conditionals in the Makefile.) The change to tig.c cleans up a compiler 
warning, but it does build fine without that change.

---
 Makefile |    2 +-
 tig.c    |    2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/Makefile b/Makefile
index 57196b0..db5844c 100644
--- a/Makefile
+++ b/Makefile
@@ -19,7 +19,7 @@ endif
 
 RPM_VERSION = $(subst -,.,$(VERSION))
 
-LDLIBS = -lcurses
+LDLIBS = -lcurses -liconv
 CFLAGS = -Wall -O2 '-DVERSION="$(VERSION)"'
 DFLAGS = -g -DDEBUG -Werror
 PROGS  = tig
diff --git a/tig.c b/tig.c
index e918fe6..e94ef4b 100644
--- a/tig.c
+++ b/tig.c
@@ -1913,7 +1913,7 @@ update_view(struct view *view)
                        line[linelen - 1] = 0;
 
                if (opt_iconv != ICONV_NONE) {
-                       char *inbuf = line;
+                       const char *inbuf = line;
                        size_t inlen = linelen;
 
                        char *outbuf = out_buffer;
-- 
1.5.2.35.ga334

^ permalink raw reply related	[flat|nested] 7+ messages in thread

* Re: [ANNOUNCE] tig 0.7
  2007-05-31 19:51 ` Steven Grimm
@ 2007-05-31 21:55   ` Jonas Fonseca
  2007-06-01  1:29     ` Greg KH
  2007-06-03 19:35     ` [PATCH] Add autoconf-based build infrastructure for tig Steven Grimm
  0 siblings, 2 replies; 7+ messages in thread
From: Jonas Fonseca @ 2007-05-31 21:55 UTC (permalink / raw)
  To: Steven Grimm; +Cc: git

Steven Grimm <koreth@midwinter.com> wrote Thu, May 31, 2007:
> This doesn't build on OS X out of the box, FYI. It needs the following 
> tweaks (which break the build on Linux, so I'm not suggesting you apply 
> this -- looks like you might need a configure script or at least some 
> conditionals in the Makefile.) The change to tig.c cleans up a compiler 
> warning, but it does build fine without that change.

I am aware of this and your suggestion is already in the TODO file.
However, for 0.7 I ended up needing the new status view feature more
than working on fixing that.

-- 
Jonas Fonseca

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [ANNOUNCE] tig 0.7
  2007-05-31 21:55   ` Jonas Fonseca
@ 2007-06-01  1:29     ` Greg KH
  2007-06-03 19:35     ` [PATCH] Add autoconf-based build infrastructure for tig Steven Grimm
  1 sibling, 0 replies; 7+ messages in thread
From: Greg KH @ 2007-06-01  1:29 UTC (permalink / raw)
  To: Jonas Fonseca; +Cc: Steven Grimm, git

On Thu, May 31, 2007 at 11:55:08PM +0200, Jonas Fonseca wrote:
> Steven Grimm <koreth@midwinter.com> wrote Thu, May 31, 2007:
> > This doesn't build on OS X out of the box, FYI. It needs the following 
> > tweaks (which break the build on Linux, so I'm not suggesting you apply 
> > this -- looks like you might need a configure script or at least some 
> > conditionals in the Makefile.) The change to tig.c cleans up a compiler 
> > warning, but it does build fine without that change.
> 
> I am aware of this and your suggestion is already in the TODO file.
> However, for 0.7 I ended up needing the new status view feature more
> than working on fixing that.

Which is fricken nice to have, thank you very much for adding this, I'm
already using it.

greg "welded to the command line" k-h

^ permalink raw reply	[flat|nested] 7+ messages in thread

* [PATCH] Add autoconf-based build infrastructure for tig
  2007-05-31 21:55   ` Jonas Fonseca
  2007-06-01  1:29     ` Greg KH
@ 2007-06-03 19:35     ` Steven Grimm
  2007-06-09  9:31       ` Jonas Fonseca
  1 sibling, 1 reply; 7+ messages in thread
From: Steven Grimm @ 2007-06-03 19:35 UTC (permalink / raw)
  To: git

---
	This is a first cut at building tig using autoconf. I'm including
	a script to run the various autoconf tools rather than packaging
	up a finished configure script. With this patch, tig configures
	and builds on both Linux (FC4) and OS X. I left a lot of the code
	from the original Makefile intact so as to (hopefully) not mess
	up building release tarballs, etc.

 INSTALL                 |    8 +++---
 Makefile => Makefile.am |   44 +++++--------------------------------
 autoconf.sh             |   24 ++++++++++++++++++++
 configure.ac            |   55 +++++++++++++++++++++++++++++++++++++++++++++++
 tig.c                   |   14 ++++++-----
 version.sh              |   23 +++++++++++++++++++
 6 files changed, 120 insertions(+), 48 deletions(-)
 rename Makefile => Makefile.am (75%)
 create mode 100755 autoconf.sh
 create mode 100644 configure.ac
 create mode 100644 version.sh

diff --git a/INSTALL b/INSTALL
index 586878e..db7dcbf 100644
--- a/INSTALL
+++ b/INSTALL
@@ -8,16 +8,16 @@ available either in the tarballs or in the above repository in the branch named
 
 To install tig simply run:
 
+	$ sh autoconf.sh
+	$ ./configure
 	$ make install
 
 To install documentation run:
 
 	$ make install-doc
 
-Edit the Makefile if you need to configure specific compiler or linker flags.
-On FreeBSD for example the c library does not support the iconv interface and
-to compile tig you need to append `-L/usr/local/lib -liconv` to `LDLIBS` and
-`-I/usr/local/include` to the `CFLAGS` variable.
+If you had to install your own copy of libiconv, you'll probably want to pass
+the "--with-libiconv" option to the "configure" script to tell it where to look.
 
 The following tools and packages are needed:
 
diff --git a/Makefile b/Makefile.am
similarity index 75%
rename from Makefile
rename to Makefile.am
index 91cb097..9f146f9 100644
--- a/Makefile
+++ b/Makefile.am
@@ -1,48 +1,18 @@
-prefix	= $(HOME)
-bindir	= $(prefix)/bin
-mandir	= $(prefix)/man
-docdir	= $(prefix)/share/doc
-# DESTDIR=
-
-# Get version either via git or from VERSION file. Allow either
-# to be overwritten by setting DIST_VERSION on the command line.
-ifneq (,$(wildcard .git))
-GITDESC	= $(subst tig-,,$(shell git describe))
-WTDIRTY	= $(if $(shell git-diff-index HEAD 2>/dev/null),-dirty)
-VERSION	= $(GITDESC)$(WTDIRTY)
-else
-VERSION	= $(shell test -f VERSION && cat VERSION || echo "unknown-version")
-endif
-ifdef DIST_VERSION
-VERSION = $(DIST_VERSION)
-endif
-
-RPM_VERSION = $(subst -,.,$(VERSION))
-
-LDLIBS	= -lcurses
-CFLAGS	= -Wall -O2
-DFLAGS	= -g -DDEBUG -Werror
-PROGS	= tig
+AM_CPPFLAGS = -DTIG_VERSION=\"`sh version.sh`\"
+AM_CFLAGS = -Wall -O2
+
+bin_PROGRAMS = tig
+tig_SOURCES = tig.c
+
 MANDOC	= tig.1 tigrc.5
 HTMLDOC = tig.1.html tigrc.5.html manual.html README.html
 ALLDOC	= $(MANDOC) $(HTMLDOC) manual.html-chunked manual.pdf
 TARNAME	= tig-$(RPM_VERSION)
 
-override CFLAGS += '-DVERSION="$(VERSION)"'
-
-all: $(PROGS)
-all-debug: $(PROGS)
-all-debug: CFLAGS += $(DFLAGS)
 doc: $(ALLDOC)
 doc-man: $(MANDOC)
 doc-html: $(HTMLDOC)
 
-install: all
-	mkdir -p $(DESTDIR)$(bindir) && \
-	for prog in $(PROGS); do \
-		install -p -m 0755 $$prog $(DESTDIR)$(bindir); \
-	done
-
 install-doc-man: doc-man
 	mkdir -p $(DESTDIR)$(mandir)/man1 \
 		 $(DESTDIR)$(mandir)/man5
@@ -107,8 +77,6 @@ release-dist: release-doc
 tig.spec: tig.spec.in
 	sed -e 's/@@VERSION@@/$(RPM_VERSION)/g' < $< > $@
 
-tig: tig.c
-
 manual.html: manual.toc
 manual.toc: manual.txt
 	sed -n '/^\[\[/,/\(---\|~~~\)/p' < $< | while read line; do \
diff --git a/autoconf.sh b/autoconf.sh
new file mode 100755
index 0000000..5492de0
--- /dev/null
+++ b/autoconf.sh
@@ -0,0 +1,24 @@
+#!/bin/sh
+
+echo "aclocal..."
+ACLOCAL=${ACLOCAL:-aclocal-1.9}
+$ACLOCAL || aclocal-1.7 || aclocal-1.5 || aclocal || exit 1
+
+echo "autoheader..."
+AUTOHEADER=${AUTOHEADER:-autoheader}
+$AUTOHEADER || exit 1
+
+echo "automake..."
+# shut automake up about missing files
+touch missing NEWS AUTHORS ChangeLog
+AUTOMAKE=${AUTOMAKE:-automake-1.9}
+$AUTOMAKE --add-missing --foreign || 
+	automake-1.7 --add-missing --foreign || 
+	automake --add-missing --foreign || 
+	exit 1
+rm missing NEWS AUTHORS ChangeLog
+
+echo "autoconf..."
+AUTOCONF=${AUTOCONF:-autoconf}
+$AUTOCONF || exit 1
+
diff --git a/configure.ac b/configure.ac
new file mode 100644
index 0000000..2cdb320
--- /dev/null
+++ b/configure.ac
@@ -0,0 +1,55 @@
+AC_INIT([tig], [0],
+	[Jonas Fonesca <fonesca@diku.dk>],
+	[tig])
+AC_LANG([C])
+AM_CONFIG_HEADER(config.h)
+AC_CONFIG_SRCDIR(tig.c)
+AM_INIT_AUTOMAKE([no-dist])
+
+AC_ARG_WITH(libiconv,
+        AC_HELP_STRING([--with-libiconv=DIRECTORY],[base directory for libiconv]))
+if test "$with_libiconv" != ""
+then
+	CFLAGS="$CFLAGS -I$with_libiconv/include"
+	LDFLAGS="$LDFLAGS -L$with_libiconv/lib"
+fi
+
+dnl
+dnl See if we need to link with -liconv to get the iconv() function.
+dnl
+AC_SEARCH_LIBS([iconv], [iconv])
+AC_SEARCH_LIBS([wclear], [ncurses])
+
+if test "$ac_cv_search_iconv" = "no"
+then
+	AC_MSG_FAILURE([iconv() not found. Please install libiconv.],[1])
+fi
+
+dnl
+dnl See if iconv() requires a const char ** for the input buffer.
+dnl
+if test "$GCC" = "yes"
+then
+	OLD_CFLAGS="$CFLAGS"
+	CFLAGS="$CFLAGS -Werror"
+	AC_MSG_CHECKING([whether iconv needs const char **])
+	AC_COMPILE_IFELSE(
+		[AC_LANG_PROGRAM([[#include <iconv.h>]],
+				 [[char **buf;
+				   size_t *size;
+				   iconv_t cd;
+				   iconv(cd, buf, size, buf, size);]])],
+		[AC_DEFINE([ICONV_INBUF_TYPE],[char *],
+			   [Type of iconv() input buffer])
+		 AC_MSG_RESULT([no])],
+		[AC_DEFINE([ICONV_INBUF_TYPE],[const char *],
+			   [Type of iconv() input buffer])
+		 AC_MSG_RESULT([yes])])
+	CFLAGS="$OLD_CFLAGS"
+fi
+
+AC_PROG_CC
+AC_PROG_INSTALL
+
+AC_CONFIG_FILES([Makefile])
+AC_OUTPUT
diff --git a/tig.c b/tig.c
index 6adfb33..6648c4e 100644
--- a/tig.c
+++ b/tig.c
@@ -11,8 +11,8 @@
  * GNU General Public License for more details.
  */
 
-#ifndef VERSION
-#define VERSION "unknown-version"
+#ifndef TIG_VERSION
+#define TIG_VERSION "unknown-version"
 #endif
 
 #ifndef DEBUG
@@ -40,6 +40,8 @@
 
 #include <curses.h>
 
+#include "config.h"
+
 #if __GNUC__ >= 3
 #define __NORETURN __attribute__((__noreturn__))
 #else
@@ -388,7 +390,7 @@ get_request(const char *name)
  */
 
 static const char usage[] =
-"tig " VERSION " (" __DATE__ ")\n"
+"tig " TIG_VERSION " (" __DATE__ ")\n"
 "\n"
 "Usage: tig [options]\n"
 "   or: tig [options] [--] [git log options]\n"
@@ -513,7 +515,7 @@ parse_options(int argc, char *argv[])
 		}
 
 		if (check_option(opt, 'v', "version", OPT_NONE)) {
-			printf("tig version %s\n", VERSION);
+			printf("tig version %s\n", TIG_VERSION);
 			return FALSE;
 		}
 
@@ -1918,7 +1920,7 @@ update_view(struct view *view)
 			line[linelen - 1] = 0;
 
 		if (opt_iconv != ICONV_NONE) {
-			char *inbuf = line;
+			ICONV_INBUF_TYPE inbuf = line;
 			size_t inlen = linelen;
 
 			char *outbuf = out_buffer;
@@ -2245,7 +2247,7 @@ view_driver(struct view *view, enum request request)
 		break;
 
 	case REQ_SHOW_VERSION:
-		report("tig-%s (built %s)", VERSION, __DATE__);
+		report("tig-%s (built %s)", TIG_VERSION, __DATE__);
 		return TRUE;
 
 	case REQ_SCREEN_RESIZE:
diff --git a/version.sh b/version.sh
new file mode 100644
index 0000000..2519876
--- /dev/null
+++ b/version.sh
@@ -0,0 +1,23 @@
+#!/bin/sh
+if [ -n "$DIST_VERSION" ]
+then
+	echo "$DIST_VERSION"
+	exit 0
+else
+	if [ -d .git ]
+	then
+		GITDESC="`git describe | sed s/tig-//`"
+		if git-diff-index HEAD 2> /dev/null > /dev/null
+		then
+			WTDIRTY="-dirty"
+		fi
+		echo $GITDESC$WTDIRTY
+	else
+		if [ -f VERSION ]
+		then
+			cat VERSION
+		else
+			echo "unknown-version"
+		fi
+	fi
+fi
-- 
1.5.2.35.ga334

^ permalink raw reply related	[flat|nested] 7+ messages in thread

* Re: [PATCH] Add autoconf-based build infrastructure for tig
  2007-06-03 19:35     ` [PATCH] Add autoconf-based build infrastructure for tig Steven Grimm
@ 2007-06-09  9:31       ` Jonas Fonseca
  2007-06-09 17:47         ` Steven Grimm
  0 siblings, 1 reply; 7+ messages in thread
From: Jonas Fonseca @ 2007-06-09  9:31 UTC (permalink / raw)
  To: Steven Grimm; +Cc: git

Hi Steven,

Steven Grimm <koreth@midwinter.com> wrote Sun, Jun 03, 2007:
> ---
> 	This is a first cut at building tig using autoconf. I'm including
> 	a script to run the various autoconf tools rather than packaging
> 	up a finished configure script. With this patch, tig configures
> 	and builds on both Linux (FC4) and OS X. I left a lot of the code
> 	from the original Makefile intact so as to (hopefully) not mess
> 	up building release tarballs, etc.

First of all, thank you for starting this work!

I've only played little with this patch, but overall I like most of the
changes. I would, however, want to look into making the dependency on
autoconf optional (like it is for git) and avoid using automake at all.
It would make the autoconf.sh bootstrap script obsolete, since the
Makefile can just take care of it, and it would keep the build system
simple.

So the idea is for configure to also generate a Makefile.config that can
be sourced by the Makefile. Then of course inclusion of the config.h
file should depend on some -DHAVE_CONFIG_H flag for the compiler.

What do you think? You are of course welcome to come up with a patch for
this proposal, but else I would like to get your permission/sign-off to
include the configure.ac script and the tig.c changes you made.

-- 
Jonas Fonseca

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH] Add autoconf-based build infrastructure for tig
  2007-06-09  9:31       ` Jonas Fonseca
@ 2007-06-09 17:47         ` Steven Grimm
  0 siblings, 0 replies; 7+ messages in thread
From: Steven Grimm @ 2007-06-09 17:47 UTC (permalink / raw)
  To: Jonas Fonseca; +Cc: git

Jonas Fonseca wrote:
> I've only played little with this patch, but overall I like most of the
> changes. I would, however, want to look into making the dependency on
> autoconf optional (like it is for git) and avoid using automake at all.
> It would make the autoconf.sh bootstrap script obsolete, since the
> Makefile can just take care of it, and it would keep the build system
> simple.
>
> So the idea is for configure to also generate a Makefile.config that can
> be sourced by the Makefile. Then of course inclusion of the config.h
> file should depend on some -DHAVE_CONFIG_H flag for the compiler.
>
> What do you think? You are of course welcome to come up with a patch for
> this proposal, but else I would like to get your permission/sign-off to
> include the configure.ac script and the tig.c changes you made.

That sounds perfectly sensible to me. Not sure when I'll have time to 
work on that proposal, but in the meantime you can use whatever bits of 
my original patch you like. Sorry about the lack of a Signed-off-by line 
in the original post -- I use git for private stuff at work 99% of the 
time and it sometimes slips my mind to add that extra header line for 
public changes. So, retroactively (though if you like I can resend the 
whole patch with this line):

Signed-off-by: Steven Grimm <koreth@midwinter.com>

-Steve

^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2007-06-09 17:47 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2007-05-31 12:38 [ANNOUNCE] tig 0.7 Jonas Fonseca
2007-05-31 19:51 ` Steven Grimm
2007-05-31 21:55   ` Jonas Fonseca
2007-06-01  1:29     ` Greg KH
2007-06-03 19:35     ` [PATCH] Add autoconf-based build infrastructure for tig Steven Grimm
2007-06-09  9:31       ` Jonas Fonseca
2007-06-09 17:47         ` Steven Grimm

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).