autotools_workshop
LOGS
13:29:39 <debiansid> #startmeeting
13:29:39 <zodbot> Meeting started Mon May  3 13:29:39 2010 UTC.  The chair is debiansid. Information about MeetBot at http://wiki.debian.org/MeetBot.
13:29:40 <Spencer_tt> so is the teacher here
13:29:40 <zodbot> Useful Commands: #action #agreed #halp #info #idea #link #topic.
13:29:47 <debiansid> #meetingtopic Autotools workshop
13:29:54 <debiansid> #meetingname Autotools workshop
13:29:54 <zodbot> The meeting name has been set to 'autotools_workshop'
13:30:01 <debiansid> #chair debiansid
13:30:02 <zodbot> Current chairs: debiansid
13:30:07 <npatil> Spencer_tt: debiansid is teacher
13:30:21 <debiansid> #info Introduction
13:30:25 <Spencer_tt> k got it
13:30:28 <debiansid> Hi, I am Siddhesh Poyarekar, a FOSS contributor. I will be leading you guys through the autotools workshop today
13:30:31 <FranciscoD> debiansid: #topic
13:30:39 <FranciscoD> to set topic
13:31:15 <debiansid> FranciscoD: ahh yes, thanks. I was using info instead :)
13:31:45 <FranciscoD> :)
13:31:56 <debiansid> So we will be autotoolizing the program at http://siddhesh.in/linkc.tar.bz2
13:32:06 <debiansid> This program is a Turbo C++ clone written by Yogesh Wani and Narendra kangralkar
13:32:15 <debiansid> It is very raw, but the project is complete enough to demonstrate this workshop
13:32:30 <debiansid> You will need the gcc, make, autoconf and automake packages as a minimum for this workshop
13:32:46 <debiansid> Without them, you won't be able to get the real fun of it, which is being able to build the package yourself
13:32:56 <debiansid> If you plan to autotoolize anything related to libraries, then you'll also need libtool
13:33:08 <debiansid> We won't go into that in this session, since this is only meant as an introductory session
13:33:15 <debiansid> Please feel free to ask questions during the session by raising your hand (!)
13:33:36 <debiansid> #topic What are autotools
13:34:06 <debiansid> So autotools are programs used to make a bunch of scripts to ensure that the code we write can build correctly on the target system
13:34:24 <debiansid> It is how we get the 'configure' script in most popular GNU sources
13:34:37 <debiansid> The script does the job of choosing the compiler needed, checks for dependent libraries, files and programs
13:34:51 <debiansid> Based on the above it generates a bunch of makefiles, one for each directory within the source tree and one for the root source directory
13:35:08 <debiansid> We will be using an example program to demonstrate the process of "autotoolizing" any code
13:35:33 <debiansid> #topic Getting sources
13:35:47 <morpheuss> ok
13:35:48 <debiansid> You can download the example program from http://siddhesh.in/linkc.tar.bz2
13:35:56 <debiansid> #link http://siddhesh.in/linkc.tar.bz2
13:36:04 <praveenkumar> ok
13:36:08 <debiansid> If you have git and know how to use it, you can clone this repository: git://github.com/siddhesh/linkc.git
13:36:23 <debiansid> cd into the directory once you have untarred/cloned your sources
13:36:30 * DiscordianUK has got and untarred the example
13:36:48 <pranay_09> done
13:36:54 * tuxdna too
13:36:56 * Spencer_tt downloads and reads through
13:37:13 * praveenkumar downloaded
13:37:46 <morpheuss> done
13:37:46 <debiansid> great, so the action starts now. Anyone needs some time/ stuck on anything?
13:37:55 <ashwin_man> !
13:38:03 <debiansid> ashwin_man: yes
13:38:40 <ashwin_man> want to verify the contents of the tar file - 8 files and 1 folder. Correct ?
13:39:00 <debiansid> ashwin_man: yes, that should be it
13:39:07 <ashwin_man> thanks
13:39:24 <ashwin_man> eof
13:39:25 <debiansid> ok cool, so the first thing we do is move the Makefile out of the way
13:39:45 <debiansid> autotools generates that for us and the current one is quite primitive
13:40:26 <debiansid> So there are two files that we need to create to autotoolize our program: configure.ac and Makefile.am
13:40:42 <debiansid> If the source tree has subdirectories, then you need a Makefile.am for each of those directories
13:41:01 <debiansid> I'll explain the significance of those files as we start writing them
13:41:37 <debiansid> Anyone need help moving makefile out of the way?
13:41:58 <FranciscoD> moving = rm , right?
13:42:00 <debiansid> You can either delete it or back it up as Makefile.bak
13:42:17 <debiansid> FranciscoD: you're ruthless :P
13:42:44 <FranciscoD> well, "moving out of the way" ! :P
13:42:49 * Spencer_tt renames Makefile to Makefile.bkp
13:42:57 <pranay_09> done
13:43:06 <praveenkumar> moved
13:43:10 <debiansid> Cool, so let us start with the first file, configure.ac
13:43:14 * tuxdna moved it
13:43:22 <debiansid> #topic configure.ac
13:44:18 <FranciscoD> adimania: http://meetbot.fedoraproject.org/fedora-classroom/2010-05-03/autotools_workshop.2010-05-03-13.29.log.txt logs so far
13:44:33 * adimania thanks :)
13:44:51 <debiansid> configure.ac is used the create the configure script that one runs (./configure) to detect various properties of the system
13:45:14 <debiansid> The various function-like constructs that we will be writing in this script are referred to as macros
13:45:21 <debiansid> Put the first line in the script as:
13:45:29 <debiansid> AC_INIT([linkc], [0.1], [your_email_address])
13:46:22 <Spencer_tt> got it
13:46:37 <debiansid> Cool, so the AC_INIT macro is used to initialize the autoconf subsystem
13:46:42 <debiansid> The first argument of the macro is the program name
13:46:46 <debiansid> The second is the version number
13:46:53 <debiansid> The third is the email address of the program maintainer. So enter your email address in place of your_email_address
13:47:22 <tuxdna> ! are all three values mandatory?
13:47:44 <praveenkumar> ls
13:47:59 <debiansid> tuxdna: yes
13:48:10 <tuxdna> debiansid, ok got it
13:48:26 <debiansid> You may use square brackets [] to nest multi-word or multi-line input for individual arguments
13:48:53 <praveenkumar> debiansid: !
13:48:59 <debiansid> praveenkumar: yes
13:49:30 <praveenkumar> debiansid: we have to make a configure file and then write those things?
13:49:32 <FranciscoD> !
13:49:37 <pranay_09> ! this file must be made in the same folder where we downloaded the programme?
13:49:51 <FranciscoD> pranay_09: inside the linkc folder
13:49:55 <debiansid> praveenkumar: no, this is in the configure.ac file that I asked to create and open
13:49:59 * FranciscoD looks at debiansid for confirmation
13:50:12 <debiansid> pranay_09: yes, inside the linkc folder
13:50:19 <pranay_09> debiansid: ok
13:50:21 <Spencer_tt> any more lines
13:50:25 <FranciscoD> the second argument, is the version of autotools or the app youre doing?
13:50:41 <mbuf> tuxdna: only package and version are mandatory; AC_INIT(package, version, [bug-report], [tarname], [url])
13:50:43 <debiansid> Spencer_tt: plenty more, let's take them one at a time :)
13:50:51 * Spencer_tt waits
13:50:58 <mbuf> #link http://www.gnu.org/software/autoconf/manual/autoconf.html#Initializing-configure
13:51:00 <debiansid> FranciscoD: this is the version of your app, so you decide it
13:51:00 <FranciscoD> and can the email be xxx AT yyy DOT zzz or has to be xxx@yyy.zzz ?
13:51:10 <tuxdna> ! if the multi-line string contains square brackets itself, how do we escape them?
13:51:20 <tuxdna> mbuf, thanks :)
13:51:27 <debiansid> mbuf: ahh ok, thanks for that :)
13:53:27 <debiansid> tuxdna: I haven't actually tried that, so don't know how that can be done
13:53:39 * Spencer_tt takes notes
13:53:51 <tuxdna> debiansid, ok
13:54:25 <debiansid> FranciscoD: you can use xx DOT yy AT zz as the email address
13:55:05 <praveenkumar> debiansid: both i mean xx DOT yy AT zz or  xxx@yyy.zzz
13:55:34 <debiansid> praveenkumar: yes, you can use either
13:55:43 <praveenkumar> debiansid: ok
13:55:50 <debiansid> Ok, so the next line is:
13:55:56 <debiansid> AM_INIT_AUTOMAKE(dist-bzip2)
13:56:11 <debiansid> This macro is used to initialize the automake subsystem
13:56:51 <debiansid> The macro basically tells some things to be done in the makefile
13:57:27 <debiansid> In the above usage, I've told the automake subsystem to add an additional distribution target, bzip2
13:57:35 <debiansid> By default you only have gzip
13:57:59 <debiansid> So when you eventually do a 'make dist', it will now build a tar.zg and a tar.bz2
13:58:27 <debiansid> There are a number of other options available which can control make options
13:58:38 <debiansid> For example, there is an option 'check-news', which causes 'make dist' to fail if the first few lines of the NEWS file does not have the current version number
13:58:55 <debiansid> you enter multiple options as a space separated list
13:59:11 <debiansid> for example: AM_INIT_AUTOMAKE(dist-bzip2 dist-zip check-news)
13:59:36 <debiansid> A full list of these options is available here: http://www.gnu.org/software/libtool//manual/automake/Options.html#Options
13:59:36 <FranciscoD> debiansid: how do you comment? # ?
13:59:46 * FranciscoD would like to comment the file for future reference
13:59:50 <debiansid> FranciscoD: There is # and there is dnl
14:00:03 <debiansid> dnl This is a comment
14:00:05 <debiansid> or
14:00:09 <debiansid> # This is a comment
14:00:14 <debiansid> both work
14:00:46 <debiansid> So I move on to the next line, which is:
14:00:49 <debiansid> AC_CONFIG_SRCDIR([main.c])
14:00:53 <Spencer_tt> single hash or double hash for comments
14:01:03 <debiansid> Spencer_tt: single has is enough
14:01:33 <Spencer_tt> ok
14:02:03 <debiansid> AC_CONFIG_SRCDIR is a simple safety check to ensure that the source code is in the directory specified
14:02:23 <debiansid> This is an optional check, so you can skip it if you like
14:02:38 <ashwin_man> !
14:02:41 <debiansid> You can put in any existing file instead of main.c too
14:02:44 <debiansid> ashwin_man: yes
14:02:58 <FranciscoD> !
14:03:06 <ashwin_man> is it directory or folder specific or file specific check..?
14:03:16 <debiansid> ashwin_man: file specific
14:03:21 <debiansid> FranciscoD: yes
14:03:27 <ashwin_man> is there any other way to make a file specific check...?
14:03:50 <FranciscoD> debiansid: same query as ashwin_man , is it directory or file, and what file?
14:03:51 <debiansid> ashwin_man: what kind of a check are you looking at?
14:04:06 <debiansid> FranciscoD: any source file in your package
14:04:24 <ashwin_man> ok
14:04:45 <debiansid> Cool, so the next line is:
14:04:47 <debiansid> AM_MAINTAINER_MODE
14:05:07 <debiansid> This is another optional macro, but an important one
14:05:46 <debiansid> mbuf :)
14:06:00 <debiansid> So AM_MAINTAINER_MODE adds additional build rules to the Makefile so that it will do an autoreconf whenever configure.ac or Makefile.am change
14:06:22 <debiansid> I'll come to what autoreconf is a little later
14:06:56 <debiansid> in short, the macro puts in a check to rebuild the configure script whenever the autotools input scripts (configure.ac and Makefile.am) change
14:07:42 <debiansid> Without this macro, you can have a situation where you change these scripts and then wonder why your build is not reflecting the change
14:07:47 <debiansid> happens way too often
14:07:55 <debiansid> This can be enabled at configure time with the --enable-maintainer-mode switch
14:08:11 <debiansid> Alright, So the lines you've entered so far told the autotools subsystem about our program and about the properties of the output
14:08:24 <debiansid> Again, there is a lot more you can do here, but that is something you can find out when you actually need it. $SEARCH_ENGINE is your best friend :)
14:08:39 <debiansid> Next up is the important part: detection of various programs, libraries and headers to make sure they exist
14:08:57 <debiansid> This is where you do what is know as "dependency checks"
14:09:10 <debiansid> Put in the next two lines as:
14:09:17 <debiansid> AC_PROG_CC
14:09:17 <debiansid> AC_PROG_INSTALL
14:09:47 <debiansid> The first line checks for the C compiler installed on the system
14:10:10 <debiansid> The second line checks for the 'install' program. You will have it in your Fedora boxes as /usr/bin/install
14:10:17 <FranciscoD> debiansid: are AM and AC prefixes supposed to mean something?
14:10:23 <morpheuss> ok
14:10:25 <debiansid> AutoMake and AutoConf
14:11:18 <debiansid> Next we check for libraries needed to build the program
14:11:22 <debiansid> This sample program uses libncurses, so we need to check whether libncurses is installed or not
14:11:40 <debiansid> libncurses is part of a Fedora base install, but there will always be some *nix boxes that do not have it by default
14:12:02 <debiansid> So here's what you need as the next two lines:
14:12:14 <debiansid> AC_CHECK_LIB([ncurses], [initscr],, AC_MSG_ERROR([Could not find ncurses library]))
14:12:14 <debiansid> AC_CHECK_LIB([menu], [new_menu],, AC_MSG_ERROR([Could not find ncurses menu library]))
14:12:32 <debiansid> The AC_CHECK_LIB macro is used to check for existence of a particular library
14:12:41 <debiansid> The macro needs 4 arguments
14:12:46 <debiansid> The first one is the library name as you would specify to the linker as -l
14:13:34 <debiansid> The -l switches are provided to the linker to tell it the libraries the program needs to build
14:13:41 <debiansid> So if the library is 'libncurses.so', you need to specify 'ncurses' here
14:13:50 <debiansid> The next argument is any function name present inside the library
14:14:03 <debiansid> The third argument is an action you need to perform if the check succeeds. We don't need to do anything, so we leave it blank
14:14:17 <debiansid> Typically, the space is used to define preprocessor macros or even print out messages, but we need neither of those
14:15:10 <debiansid> Once the above checks are successful, the LDFLAGS Makefile variable will have -lncurses and -lmenu
14:15:32 <debiansid> Finally, the last argument is what you need to do if the check fails
14:15:53 <debiansid> Here we use the AC_MSG_ERROR macro to print out an error message and exit. This will cause the configure script to fail.
14:16:18 <debiansid> We all must have seen that happening due to missing libraries or programs
14:16:48 <debiansid> If you only want to print an error and proceed in case of such check failures, you use AC_MSG_WARNING macro instead -- usage is the same as AC_MSG_ERROR
14:17:24 <debiansid> This completes our checks section. We now need to generate makefiles as an output of the configure.
14:17:47 <debiansid> So put in the last macro in configure.ac as follows:
14:17:56 <debiansid> AC_OUTPUT([Makefile Help/Makefile])
14:18:25 <debiansid> This tells that the output of configure should be Makefile (in source root directory) and Help/Makefile
14:18:49 <debiansid> That completes our configure.ac. You may now save and close it
14:19:07 <DiscordianUK> Done
14:19:07 <debiansid> Next up is Makefile.am. Any questions so far?
14:19:35 <praveenkumar> done
14:19:36 <debiansid> Alright, I'll go on then
14:19:40 <pranay_09> done
14:19:44 <debiansid> #topic Makefile.am
14:20:00 <debiansid> You can think of Makefile.am as a skeleton for a Makefile
14:20:11 <debiansid> automake creates an intermediate skeleton Makefile.in from this file
14:20:23 <debiansid> Makefile.in is then used by the configure script to generate the final Makefile
14:20:30 <debiansid> We need a Makefile for each subdirectory inside the source directory
14:20:36 <debiansid> So on the same lines, we need to put a Makefile.am for each subdirectory
14:20:51 <debiansid> So first, create a new file Makefile.am in the source root directory
14:21:41 <debiansid> Put in the first line as:
14:21:42 <debiansid> SUBDIRS = Help
14:22:31 <debiansid> This is similar to the SUBDIRS clause in a Makefile. It tells the automake utility to process Makefile.am in the given subdirectories
14:22:43 <debiansid> Next, need to tell automake about the program code. So here's our first line:
14:22:49 <debiansid> bin_PROGRAMS = linkc
14:23:19 <debiansid> This is to declare that our program executable output name is linkc. You can put multiple targets here too if required. We need only one
14:23:34 <debiansid> Next, we mention the sources that linkc needs as follows:
14:23:46 <debiansid> linkc_SOURCES = main.c design.c file.c help.c \
14:23:46 <debiansid> design.h file.h help.h
14:24:37 <debiansid> I've made this multiline only for readability, and to show that you can continue on the next line with a \
14:24:48 <debiansid> The directive above reads as <programname>_SOURCES
14:25:01 <debiansid> If the program name contains any non-alphanumeric characters, it is replaced by an underscore
14:25:21 <debiansid> Anyone stuck anywhere so far?
14:25:46 <ashwin_man> no carry on please
14:25:52 <debiansid> ok great
14:25:58 <debiansid> Next is an optional line:
14:26:02 <debiansid> noinst_HEADERS = design.h file.h help.h
14:26:19 <debiansid> which basically tells us that these header files are not to be installed into /usr/include when we do a "make install"
14:26:33 <debiansid> With this, you're done with the first Makefile.am. Save and close.
14:26:46 <debiansid> Next up, create and open Help/Makefile.am
14:26:57 <debiansid> This is where we will write makefile rules for content in Help/
14:27:03 <debiansid> The Help/ directory contains some documents which the IDE uses to display short help and examples on your basic libraries
14:27:29 <debiansid> So you only really need to copy them to the right place
14:27:40 <debiansid> So all you need to add in this Makefile.am is the following:
14:27:50 <debiansid> Helpdir = $(datadir)/$(PACKAGE)/Help
14:27:50 <debiansid> Help_DATA = *.hlp
14:28:08 <debiansid> Helpdir specifies the directory where files need to be installed
14:28:55 <debiansid> Help_DATA specifies the files that need to be installed
14:29:02 <debiansid> The convention here is simply <somename>dir and <somename>_DATA
14:29:25 <debiansid> Save and close Help/Makefile.am
14:29:37 <debiansid> And you're done with your autotools configuration files
14:29:46 <debiansid> Now we need to execute a set of programs to generate the configure script
14:29:53 <debiansid> any questions so far?
14:30:25 <praveenkumar> debiansid: done
14:30:39 * Spencer_tt makes copious notes
14:30:42 <ashwin_man> done.....let us carry on
14:30:47 <pranay_09> done
14:30:53 <debiansid> Ok, cool
14:30:56 <debiansid> #topic Building configure
14:31:04 <debiansid> So the first command is:
14:31:06 <debiansid> aclocal
14:31:12 <ashwin_man> !
14:31:19 <debiansid> ashwin_man: yes
14:31:25 <ashwin_man> in which directory...?
14:31:34 <debiansid> in linkc
14:31:41 <ashwin_man> ok
14:31:43 <ashwin_man> eof
14:31:52 <debiansid> aclocal generates common macros (and any additional macros) in aclocal.m4 and in the directory autom4te.cache
14:31:58 <debiansid> Next:
14:32:02 <debiansid> autoconf
14:32:12 <debiansid> This generates the configure script
14:32:30 <mbuf> debiansid: please fpaste a copy of your configure.ac, Makefile.am so people can verify that they have the same as yours!
14:32:44 <debiansid> mbuf: ok, one sec, I'll do that
14:33:42 <debiansid> Here is my configure.ac: http://pastebin.com/AxGBCqUt
14:34:26 <debiansid> Makefile.am
14:34:29 <debiansid> http://pastebin.com/VJ3WMfyq
14:35:14 <Southern_Gentlem> http://fpaste.org/CDO1/
14:35:39 <debiansid> Help/Makefile.am: http://pastebin.com/NSF4XVCM
14:36:41 <Southern_Gentlem> debiansid,  the reason they asked for fpaste is that unlike pastebin it doesnt have ads
14:37:12 <debiansid> Southern_Gentlem: Ohh ok, I don't notice the ads much honestly :)
14:38:10 <debiansid> Makefile: http://fpaste.org/HMKx/
14:38:40 <debiansid> Help/Makefile.am: http://fpaste.org/cEPo/
14:38:57 <debiansid> The earlier one was Makefile.am, sorry about the typo
14:39:36 <debiansid> So any questions?
14:39:48 <pranay_09> nope
14:39:48 <ashwin_man> no, carry on
14:40:00 <praveenkumar> carry on
14:40:00 <debiansid> Ok, so I assume everyone has run:
14:40:06 <debiansid> aclocal
14:40:08 <debiansid> autoconf
14:40:16 <DiscordianUK> I have
14:40:18 <pranay_09> yes
14:40:21 <ashwin_man> yes, done
14:40:28 <praveenkumar> yeah done
14:40:30 <debiansid> Next, type:
14:40:32 <debiansid> automake -a -c
14:40:40 <debiansid> This will fail
14:41:06 <pranay_09> ya it does
14:41:13 <praveenkumar> i shows "option `dist-bzip2i' not recognized"
14:41:28 <ashwin_man> !
14:41:32 <debiansid> praveenkumar: you have a different problem. You have a typo
14:41:48 <debiansid> 'dist-bzip2' not 'dist-bzip2i'
14:41:54 <debiansid> ashwin_man: yes
14:41:57 <praveenkumar> debiansid: ok
14:42:18 <ashwin_man> it is failing with not found complaints
14:42:22 <ashwin_man> for NEWS
14:42:33 <debiansid> ashwin_man: yes, that is the failure I was referring to
14:42:35 <ashwin_man> README AUTHORS Changelog
14:42:49 <ashwin_man> ok...carry on please
14:42:50 <debiansid> automake generates the Makefile.in. -a adds any missing files, like the install script, depcomp (dependency generator), etc -c is to copy the files over. The default action is to create symlinks to existing files
14:42:51 <ashwin_man> eof
14:43:17 <debiansid> But it also checks for existence of some files
14:43:29 <debiansid> NEWS README AUTHORS ChangeLog
14:43:51 <debiansid> It does not add templates for these because they ought to be different for different programs
14:44:02 <debiansid> so you create blank placeholders for them for now
14:44:11 <debiansid> with this command:
14:44:11 <debiansid> touch NEWS README AUTHORS ChangeLog
14:44:30 <debiansid> Now run automake -a -c again
14:44:51 <debiansid> Does it fail for anyone now?
14:45:03 <ashwin_man> no. it is clean
14:45:03 <tuxdna> works for me now
14:45:07 <FranciscoD> +1
14:45:08 <pranay_09> !
14:45:11 <pranay_09> Makefile.am:4: variable `link_SOURCES' is defined but no program or
14:45:11 <pranay_09> Makefile.am:4: library has `link' as canonical name (possible typo)
14:45:33 <tuxdna> it should be linkc_SOURCES
14:45:36 <debiansid> pranay_09: probably a typo: What does your bin_PROGRAMS have?
14:45:55 <debiansid> tuxdna: yes
14:46:43 <praveenkumar> works for me too now
14:47:07 <pranay_09> linkc
14:47:20 <debiansid> pranay_09: yes
14:47:27 <debiansid> Great, so the last point is the license of the program. It should be mentioned in the file COPYING
14:47:35 <debiansid> If there is no such file, automake installs a GPLv3 license by default
14:47:40 <debiansid> You need to replace the content with the license you actually want to use
14:48:11 <debiansid> That is it. You're package has now been autotoolized
14:48:16 <debiansid> You can now do './configure && make && make install' to install the application
14:48:42 <debiansid> Don't rest our hopes on it running though, the program itself is work in progress :)
14:48:56 <ashwin_man> !
14:49:00 <pranay_09> !
14:49:12 <debiansid> To make things easier you can write a little script like this: http://fpaste.org/A1yS/
14:49:17 <debiansid> ashwin_man: yes
14:49:30 <ashwin_man> where will it install the binary...?
14:49:33 * tuxdna thinks that it was like a breeze
14:49:40 <praveenkumar> !
14:49:41 <pranay_09> checking for initscr in -lncurses... no configure: error: Could not find ncurses library
14:49:52 * mbuf suggests using ./autogen.sh or autoreconf -vfi
14:49:57 <debiansid> ashwin_man: By default it is /usr/local
14:50:16 <debiansid> mbuf: autogen.sh is a gnome thingy AFAIK
14:50:22 <ashwin_man> it shows lots of errors
14:50:27 <ashwin_man> for make install
14:50:34 <debiansid> pranay_09: you need ncurses-devel package
14:50:54 <debiansid> ashwin_man: You will need root privileges for install
14:51:03 <mbuf> ashwin_man: please fpaste the output; don't try to explain the errors/output
14:51:51 <debiansid> mbuf: I prefer using the individual commands because I add that script to by vcs
14:52:05 <FranciscoD> mbuf: those commands are suggested for what?
14:52:06 <mbuf> debiansid: not necessarily; it is for the GNU build system
14:52:06 <debiansid> mbuf: That way, anyone who checks out the source starts with a ./gen
14:52:50 * FranciscoD 's dir has no autogen.sh as of now
14:52:53 <mbuf> debiansid: some projects use it;
14:53:03 <ashwin_man> http://fpaste.org/GT3J/
14:53:15 <pranay_09> debiansid: can't find it
14:53:22 <mbuf> FranciscoD: they run the configure and its pre-requisite commands for you
14:53:44 <FranciscoD> mbuf: ill have to write an autogen.sh?
14:53:53 <mbuf> FranciscoD: no!
14:53:55 <pranay_09> debiansid: is it libncurses-dev?
14:53:59 <mbuf> FranciscoD: some upstream projects provide it already
14:54:04 <FranciscoD> the commands we used dint generate one for me.
14:54:08 <mbuf> FranciscoD: just have to run it
14:54:09 <debiansid> mbuf: I saw a lot of gnome projects use it, and they internally call gnome-autogen.sh
14:54:14 <ashwin_man> but after doing a ¨su¨ it works
14:54:22 <mbuf> debiansid: okay
14:54:29 <FranciscoD> mbuf: yeah, how do the upstream projects generate the file?
14:54:40 <mbuf> FranciscoD: it is a bash script
14:54:45 <debiansid> pranay_09: Ahh, yes. I forgot you're using ubuntu
14:54:56 <pranay_09> debiansid: ok
14:54:58 <mbuf> debiansid: but, it is not just a Gnome thingy is what I am trying to tell you
14:55:15 <praveenkumar> debiansid: what is output of that program i installed it successfully but when i type linkc then it show me many hashes(#).
14:55:19 <debiansid> mbuf: Yeah, I explained why I assumed it was, which meant I agree with you :)
14:55:27 <FranciscoD> mbuf: yeah, if im autotoolizing my project, how do i get the bash script?
14:55:48 <debiansid> praveenkumar: don't try testing the program, it is quite broken the way it is written right now :)
14:55:58 <mbuf> FranciscoD: copy it
14:56:04 <ashwin_man> debiansid : Thanks
14:56:09 <praveenkumar> debiansid: ok
14:56:14 <debiansid> mbuf: +1 :D
14:56:22 <ashwin_man> :)
14:56:38 <mbuf> FranciscoD: generally, you shouldn't copy configure.ac, Makefile.am from other projects and use it blindly, but, always try to read the sources, and customize it to your needs
14:56:39 <FranciscoD> mbuf: heh, okay, all of them are the same that means? there's a standard autogen.sh then?
14:56:43 <ashwin_man> debiansid: anything more...?
14:56:58 <FranciscoD> by them here i mean autogen.sh
14:56:58 * zer0c00l is late to the party
14:57:04 <debiansid> ashwin_man: nope, I'm done
14:57:11 <FranciscoD> zer0c00l: no, youve missed the party :P
14:57:12 <mbuf> I just want to add couple of more links here
14:57:16 <debiansid> Thanks everyone for attending :)
14:57:23 <ashwin_man> THANKS ONCE AGAIN :)
14:57:23 <zer0c00l> omg
14:57:26 <mbuf> I encourage those interested in autotools to read this good book:
14:57:30 <mbuf> #link http://www.freesoftwaremagazine.com/books/autotools_a_guide_to_autoconf_automake_libtool
14:57:30 <DiscordianUK> Thank you debiansid
14:57:30 <debiansid> mbuf: ahh ok, I'll wait for the links
14:57:40 <mbuf> and there is a very good presentation available at:
14:57:46 <mbuf> #link http://www.lrde.epita.fr/~adl/autotools.html
14:57:50 * tuxdna finally learned autotools... not its time to explore more
14:57:59 <tuxdna> s/not/now
14:58:08 <luceliofreitas> ok, thanks.
14:58:12 <ashwin_man> bye friends...dinner time
14:58:18 <mbuf> also the manuals for autoconf, automake and libtool are very details, and you are encouraged to kindly refer them!
14:58:19 <tuxdna> debiansid, thanks
14:58:26 <praveenkumar> debiansid: thanks
14:58:41 <debiansid> great, Thanks mbuf!
14:58:48 <debiansid> #endmeeting