Version-1.9.5 05 February 2008 - 05-fix_source_perms --handle different patch options automatically without the need to re-name patches to specify the -p? option - 08-fake_install --improved handling of the checks for install rule and DESTDIR by running a "dry-run" using 'make -n $INSTALL_RULE' and checking the exit status. This takes longer than grepping for an install rule, but sources which have the install rule hidden in a make.tmpl file or are using some other install rule would have to be checked for individually. It's easier and more reliable to check the exit status of the actual command. It may add a couple of minutes to the build time for very large packages which install lots of files. Still, this is better than having to write an even more complex routine which looks in many files for many different install rules using various formats and still not have them all covered. The old routine was fairly good, but lately several people have been trying to build sources which use both make.tmpl and/or weird un-guessable install rules. - DOCLIST can now include a subdirectory which will copied in its' entirety - (10-strip_bins) use --strip-debug for stripping static library archives since --strip-uneeded can cause problems more often - (13-make_description) handle slack-suggests and slack-conflicts files - (02-find_source) use '--tries=3 --timeout=15' as wget options - (14-make_doinst.sh) check for configuration files under $PKG_DIR/etc. If any are found that aren't already named with the '.new' suffix, change the name adding the suffix, then check to see if there is a 'conf()' routine in the doinst.sh file and add one if there isn't, plus a line for each configuration file found. Doing this with conf files prevents them from being overwritten when packages are upgraded if the conf files have been previously edited by the administrator. - (06-configure_source) add handling of sources which contain both a GNUmakefile and Makefile.in. we already did this the other way around where sources had both a Makefile and GNUmakefile.in. In either case, configuration causes the sources to contain both a Makefile and a GNUmakefile which seems to usually confuse the 'make' program. In both cases we rename the arbitrary file to disable it and allow the one generated by configure to be used. This feature can be bypassed by including USE_DEFAULT_MAKEFILES=YES in the src2pkg script. In practice I have only seen sources like this two or three times so most users will never be bothered by this either way. This current change was spotted in the sources for gnuplot. The former case where a GNUmakefile.in was present along with a Makefile was found in the old version of Abiword-1.0.7. - (01-pre_process) made changes to the get_flags function to accomodate the setting of CFLAGS for athlon-xp machines as well as setting the optimization flags for ppc, powerpc, s390 and s390x to -O0 (no optimization). athlon-xp flags are set to -O3 by default. - (src2pkg) when writing a build script with the -A or -N option, the line for the ARCH variable is commented out by default. This makes src2pkg scripts more portable for use on different architectures than the one on which the script is created. - (01-pre_process) allow MARCH_FLAG and CPU_FLAG to be set by the user. The standard values for Slackware (and most other standard distros) is to use -march=i486 and -mtune=i686 (or -mcpu=i686 with gcc<=3.4). By using a conditional statement here, a user who wants to 'abuse' the standards can do so. Many users want to do this in order to compiel applications for i686 only, thinking that some performance gains are to be had this way. The truth is that the performance gains are minimal unless the whole system (including glibc) is re-compiled. While this could set dynamically, src2pkg still defaults to i486/i696 for all ix86 machines. - (11-create_docs) fix checking for empty usr/share directory after possibly moving docs - (12-compress_man_pages) fix checking for empty usr/share directory after possibly moving man-pages - updated to libsentry-0.6.7.4 (only minor changes to debug format and upgrade version number) Version-1.9.4 31 January 2008 - 08-fake_install make do_generic_installation check that $OBJ_DIR/$NAME is both a file and is executable. Just checking to see if it was executable returns a false positive if a directory named $OBJ_DIR/$NAME is present. (Discovered trying to package ncurses) - The above bug was uncovered because grepping for an install rule was failing because of Makefile syntax: check for all alternative syntaxes: 'install:' 'install :', 'install::' and 'install ::' Also, use full path to Makefile (${OBJ_DIR}/$MAKEFILE) - 12-compress_man_pages - silence errors from trying to uncompress or compress links in the man directory by using 'find -type f'. Also only use chmod 644 on files and use chmod 755 for links - 05-fix_source-perms -fix checking for SHOULD_AUTORECONF so that autoreconf is not done if configure scripts have been patched directly. Note: Patching configure files directly (instead of patching configure.ac or configure.in) is bad form. Still some packagers do this so we let them get away with it. Normally, when patching configuration files, all changes should be made in *.ac or *.in files and then autoreconf should be run to apply the changes. But some developers/packagers patch both the *.ac/*.in files *and* the configure script -running autoreconf in these cases usually erases the changes made to the configure script. This is another case where building ncurses shows weirdness. - fix removal of PKG_DIR/usr/share directory in 11-create_docs and 12-compress_man_pages when it is empty after moving docs or man-pages - src2pkg --fix truncation of MAKE_COMMAND which contains '=' - src2pkg --add comments about $CWD, $SRC_DIR and $PKG_DIR to end of newly-created scripts to make cut-n-paste editing easier for the user - trackinstall --same as above for src2pkg and also cleanup help screen - 12-compress_man_pages --compress man-pages installed under /usr/local/man and info pages installed under /usr/local/info. Suggested by Mikhail Zotov. - added check for $SRC_DIR/$VERSION in search for non-standard configuration directories pointed out when trying to compile dmraid (unpacked dir layout: dmraid/1.0.0.rc14) - 01-pre_process --add athlon-xp to supported architectures -needs to be tested so I'll have to try to find a src2pkg user who is building on athlon. Also added powerpc - 06-configure_source --added running ./configure --help after show_requires - 14-make_doinst --added handling of doinst.sh.gz files Version-1.9.3 12 January 2008 - fixed a missing '#' comment marker in make_description. Ouch! This was causing database files in /var/log/packages to display The 'handy ruler' line when listing package contents. ugly, ugly. - fixed a problem in make_package with detection of the static tar version which caused package contents to be wrongly listed in the package database files in /var/log/packages. This looked bad but didn't cause any harm -except that it would prevent proper removal by removepkg. This has to do with the way tar-1.13 lists archive contents -inside an archive all paths begin with './' and the top directory './' is there also with tar-1.13. However, when listing the contents tar-1.13 strips off the './' for all paths except the first (top) dir. - switched the default installation method from -DEST back to -JAIL. It's kind of a toss-up between these two methods as neither one will always work. In fact many packages must be built using the -REAL method, including most packages like the Opera browser which use an 'install.sh' or other such script to install files. - updated man-pages to reflect the above changes - added code to the doinst.sh to handle cleanly installing the src2pkg 'noarch' package using upgradepkg. The feature of offering to compile libsentry and tar-static during installation is still questionable and may be dropped. I'd be glad top hear what users think about it. - Thanks to Tim Goya and Adrien Nader for reporting bugs in the last version. Version-1.9.2 03 January 2007 - src2pkg-1.9.2-noarch-2 (fixed an error in fake_install which affected installing binary packages like opera) - added a couple of extra checks to fix_pkg_perms to set /var/run and /var/lock if they are found in the package - fixed the search for SRC_DIR/doc SRC_DIR/docs when no docs have been installed - set OBJ_DIR to CONFIG_DIR instead of SRC_DIR in fake_install - add an extra check to make_description and read_pkg-info_desc to make it handle *.lsm description files also. - added some new examples to the examples in the doc directory. These show how to use some of the most common options in src2pkg scripts, as well as very advanced usage. - Finally forked the installwatch library and program after more changes. The amount of changes and version numbers are increasing quickly. It seemed best to go ahead and fork installwatch since development of the official version seems to be competely stalled. The new name for the program is 'sentry' and the library is 'libsentry'. See the libsentry sources for more details of the rationale and changes. The last change using a patch with the old name was to fix a bug which caused the library to fail to compile on x86_64 system using glibc<=2.4. Thanks to Piete Sartain for reporting the bug, and to him and Xavian-Anderson Macpherson for testing the fix. See notes for unreleased version-1.9.0 for other recent changes. - Fixed a bug in correction of hard-coded installation paths in Makefiles where paths under /usr/local (not /usr/local itself) were being mangled. This was fixed to ignore all paths at or under /usr/local and paths under /opt. Added a routine which disables correction of docs and man-pages when the above prefixes are used. This means that if you use these prefixes you are on your own for creating or correcting documents and for compressing any man-pages. Thanks to Stanislav Mukomela for finding this bug while trying some unusual prefixes. (in fake_install) - Added a switch to src2pkg for writing the STD_FLAGS variable to src2pkg scripts *uncommented* when the variable has been set on the command-line. - added setting of PRE_FIX variable to trackinstall - changed point of sourcing FUNCTIONS in trackinstall so that options set on the command-line are preserved without exporting them. - removed unused do_track_install function from FUNCTIONS - cleaned up some prompts in various functions - added a do_generic_installation function to FUNCTIONS and fixed missing check for 'install' rule before running any other installation type. This functionality had gotten lost when I separated the installation types. - fixed some code in get_rpm_config and get_rpm_config2 which translates rpm spec file variables into regular configure options(infodir & others) - changed the code for stripping leading slash from prefixes and added code to strip trailing slashes from prefixes also (pre_processing) - updated man-pages to reflect minor changes. - updated the README wiith information on 'src2pkg --setup' - check for BIN_DIRS in package and make everything inside executable. We used to do this and then started using 'find' to search for all ELF executables. Now we do both so that scripts in any BIN_DIR get set also. - make adding of dependency information to slack-desc files and generation of slack-required file optional. New options are in src2pkg.conf, but commented out. Default is to add the info to the slack-desc file and create a slack-required file in the package. - added automatic setting of --libdir=/usr/lib64 to pre_processing (in get_flags) for slamd64. This should make usage easier on some x86_64 systems. This is ignored if the systewm is BlueWhite64. - added code in create_package to automatically write install-info code to doinst.sh if there are info pages in the PKG_DIR and the install-info code is not already in the doinst.sh - Finished splitting the main src2pkg shell functions into individual files. This makes the code easier to read, understand and work on. - The src2pkg package is now a 'noarch' package without compiled binaries and libraries. This is to avoid having to build separate versions for the various kernels and architectures. When the package is installed, the user will be prompted to choose whether to setup src2pkg during installation. The package installs the sources for libsentry and tar-1.13 in /usr/src/src2pkg/src2pkg. If the user(root) does not choose to have src2pkg compile these sources during installation, the programs can be compiled after installation by running the command 'src2pkg --setup'. Of course, the user must be logged in as user 'root' to do this -otherwise it will not be done. If a user tries to run 'src2pkg --setup' they are warned and src2pkg exits. If 'root' forgets to do this step and later tries to create a package, src2pkg will run src2pkg.setup before continuing package creation. The src2pkg.setup script is located with the sources and creates all temporary files in /tmp/src2pkg.setup and deletes them after building. This is a good way to make sure that the system has everything needed for compiling sources and also makes sure that all the libraries and programs supplied by src2pkg are compatible with the system -no matter which architecture, kernel or OS version they are running. - clean up new.doinst.sh, new.slack-desc and $NAME.src2pkg.auto files in the current directory if '-W' (CLEANUP) is asked for. Suggested by Stanislav Mukomela - removed fakeroot and busybox. The use of fakeroot for allowing users to make packages would only open up security holes if used in a way that would provide any advantage over simply using the tar programs' ability to reset ownerships when the package is created. The buybox static programs are not really needed anymore since the REAL method of installation is no longer the default. Hopefully nobody will have the idea of using the REAL method to compile glibc, bash or coreutils. Version-1.9.1 01 January 2007 (unreleased) - use fakeroot to allow normal users to build packages. The fakeroot daemon is started just before running fix_pkg_perms and runs until package creation is finished. We check to be sure it is running when the package is about to be compressed also and start it if not. - use busybox-1.2.2 as it has ome fixes for tar in it. This is the last version of busybox which can be compiled statically against glibc libraries. - include tar functionality in busybox and use it for unpacking archives. tar-1.13 fails to properly unpack some large archives with long paths and/or long filenames. Changes in unpack_source and in pre_process so that TAR_STATIC gets aliased to tar-1.13 and BB_TAR gets aliased to tar(from busybox) Version-1.9.0 21 December 2007 (unreleased) - The big fix for this version: added handling of glibc 'fchmodat' calls to installwatch library. This is the only function call I've been able to pinpoint that was failing under glibc>=2.5(Slackware>=12.0). I'm still trying to find any other function calls which may be failing. The 'failure' just means that the operations aren't logged. The other fixes in installwatch-0.6.7.0 (in src2pkg-1.8) seem to have stopped the really weird things that were happening in the official versions of installwatch-0.7.0beta(1-5). I am still writing tests to search for other function calls which may fail, though some of the calls that installwatch tracks are not really necessary for the way we use it. Also added (in installwatch-0.6.7.2) a call to reduce relative path elements from the truepath. Version-1.8 04 December 2007 - Lots of *big* changes this time! I usually try to avoid this as it reduces the chances of introducing bugs. Hopefully I've tested this release enough to make sure no serious defects have gotten through. - Some of the main functions have been split out from the FUNCTIONS file into smaller files. The code bas has grown to over 3,000 lines and it was getting more difficult to scroll through the code to find the section I want to work with. This may make it a little harder to understand the execution order for some people, but it makes my work a little easier. I'll probably split the code up even more in another version. - I've finally introduced a later version of the installwatch library which src2pkg uses to track the files which are created during package making. I spent several weeks on this and added quite a few patches from other distros and individuals. This new version is based on the last official version (0.7.0beta5) but fixes some of the bugs which were never addressed by the maintainer. Some nagging problems were addressed which usually only show up when using the library with later versions of coreutils (>=6.9) and glibc >=2.5 along with the Linux kernel >=2.6.16. These problems revolve around some new functions called the 'openat' functions. It was these functions that have caused problems when using installwatch or checkinstall with any modern Linux distribution. The suggested fix was to disable file system translation which was one of the best new features introduced in installwatch-0.7.0beta1 in 2002. When working, this feature allows you to install files into a what might be called a 'virtual root'. That is files are not written to your main file system. Instead they are written into a subdirectory (the PKG_DIR). This allows for a much less intrusive way of running 'make install' or other installation command. By now the translation feature is more dependable and accurate than the old way of using the backup feature of installwatch to protect your system. I am still, however, working on improving the functionality of the backup feature so that it will work just as well as the translation feature -it already works much better than before. - The above fixes still make it possible to build packages the old way, by doing a real installation of the software, copying the files into the PKG_DIR and then restoring any original files which were overwritten. But, you can now use the 'virtual root' feature to create packages in a safer, less intrusive way. This option is called JAIL_ROOT. We've also brought back the possibility to run 'make install' using the DESTDIR, although it is probably the least reliable of the three methods. The JAIL_ROOT method is basically the same, but it works even with sources which don't support the use of DESTDIR or which use one of the similar variants like INTSALLROOT or PREFIX. src2pkg now uses the JAIL_ROOT installation method by default, but you can override this in your src2pkg scripts or from the command-line by using the '-DESTDIR' option for installation using the DESTDIR variable, or the '-REAL' option for installation using the old method of really installing and backing up overwritten files. The default JAIL_ROOT method uses the '-JAIL' option. If you try using the DESTDIR option and it is not supported by the source Makefiles, src2pkg will switch and use the JAIL_ROOT method instead. The DESTDIR method doesn't use the installwatch library to track file creation. Instead files are installed directly into the PKG_DIR. This is a more traditional way of creating package content and is preferred and trusted by many people. - Using the newer version of installwatch required some changes to the src2pkg functions to accomodate the new features and environmental variables. These changes are mostly transparent to the user except for the new options they present. - Now on to other major changes: - src2pkg can now retreive and use more information from rpm spec files or debian 'control' and 'rules' files if they are included in the sources: - src2pkg can now read the package description information from a spec or control file and use that to create better slack-desc files without the user having to edit them manually or enter text in interactive mode. - The interactive routine which allows the user to input text for the slack-desc file was also improved. Instead of limiting the user to inputing a small one line description, the user can now type in lots of text which will be wrapped into the appropriate line length and then inserted into the description file. - src2pkg also now adds dependency information to the description files and also generates a slack-required file which is used for compatibilty with the slapt-get package management program. This file is also required for packages which are submitted to linuxpackages.net, so this feature should make it easier for users to have their packages accepted for inclusion on that website. - src2pkg can also retreive options to pass to the configure script from a spec file or debian rules file. The options are translated into Slackware-conformant options and may help to ensure successful configuration and compilation of sources in some cases. - Regular users can now use src2pkg to create packages. src2pkg checks to make sure that the user has permission to write to all the directories it needs to work in. And it checks to make sure that the '-REAL' installation option is not being requested. Proper permissions for the package are achieved by using the '--owner' and '--group' options for tar. When the final compressed package is created all file ownerships are set to root just as when you run src2pkg as user 'root'. Several people had asked for this feature -it turned out to be fairly easy to implement it. - The src2pkg program wrapper now installs to /usr/bin instead of /usr/sbin so that it is in the normal path for regular users. Same for trackinstall. - re-wrote the tracklist utility to use the new installwatch - added more thorough check for documents when none were installed by the Makefile -checks for SRC_DIR/doc and SRC_DIR/docs directories. - If no man-pages were installed by the Makefile, check for man-pages in the SRC_DIR and in SRC_DIR/debian (if it exists) and copy to the PKG_DIR - added setup.py to the list of valid keyfiles. If src2pkg finds a setup.py script in the sources during configure_source, it sets the INSTALL_LINE to './setup.py build install' so that python modules get built automatically. Thanks to LQ member bassmadrigal for bringing up this change when he tried to build mutagen, hoping that src2pkg just knew what to do. Now it does. src2pkg will generate a description file for python modules from a PKG-INFO file, if present. - added support for using a BASE_URL for downloading sources and extra source files. This means that instead of giving the full URL for each item to download, a BASE_URL can be specified and other items to be downloaded can be given as a relative path to the BASE_URL. - added 'ls' to the busybox static commands - added kernel version signiature to the src2pkg source build script. This allows me to easily create two versions with the same build number, but with a different signiature. This is needed because the static busybox binary cannot be used with both kernel versions. When built with kernel-2.6.xx and glibc>=2.5 the installwatch library contains extra features. And busybox compiled statically under kernel 2.6.xx will not run on systems with a 2.4 kernel. Note: If you download a pre-built package of src2pkg, be sure to get the proper version for your kernel. If you are running Slack-12.0 or greater, you should get the src2pkg package with the '_K26' signiature in the package name. If you are running src2pkg with an older version of Slackware and are using a kernel from the 2.4 series, then use the src2pkg package with _K24 in the name. Version-1.7 16 November 2007 - fixed some code in examine_source which distinguished tarballs converted with rpm2tgz, but failed when unpacking other, more common tarballs which contain other compressed archives. - added support for rpm archives which contain a plain tar archive. - fixed missing 'cd $CONFIG_DIR' in autoreconf routines - added an interactive mode which prompts the user for input in 2-3 places where applicable. The options can be activated as the default behaviour in /etc/src2pkg/src2pkg.conf (either individually or all of them) or all can be activated with the '-Q' option when using src2pkg or trackinstall. The option QUERY_FOR _EXTRA_CONFIGS runs '$CONFIG_COMMAND --help' in the CONIFG_DIR to show the options available which can be passed to the configure script. It then waits for user input before continuing. The option CONFIRM_BUILD pauses after a successful configuration of sources and prompts the user to continue or quit. The option QUERY_FOR_PKG_DESC pauses during creation of the default slack-desc (or other PKG_DESC file) and prompts for a one-line description of the package, which is written to the third line of the description file. For those who miss being interrupted by checkinstall... Thanks to LinuxQuestions user Jim(LocoMojo) for the suggestion and patch demonstrating the desired behaviour. This also adds the extra options to the src2pkg.conf file, so if you want to use the new options you'll need to update your src2pkg.conf file manually with the new one (src2pkg.conf.new). - added support for builds using 'cmake'. It took a while to figure out how to pass the desired PRE_FIX/PREFIX non-interactively without hosing the other envronmental variables. - fixed automatic correction of PRE_FIX/PREFIX in Makefiles so that all are done, instead of only the top level. - suppressed display of the whole contents of rpm .spec files or debian/control files when using the '-R' (REPLAY_ERRORS) option. - added (again) removal the file $PKG_DIR/usr/info/dir to avoid whacking the much (and rightly) maligned functionality of 'info'. - rewrote condtional code for stripping libraries - changed the installation directory for pkgconfig *.pc files for LFH standard conformance (using /usr/lib/pkgconfig as these are architecture dependent files). - updated man-pages and their version numbers - changed to use our own hacked version of the installwatch libraries (0.63.a1) which still works fine, thank you, as opposed to the latest official versions (all of the 0.7.x versions are broken and may cause serious problems with your system). I say 'hacked' -the only difference between this version and the standard installwatch-0.6.3 is the inclusion of one useful patch backported from 0.7.x and a fix to the installwatch test program. - re-instated the 'tracklist' wrapper. Edited to remove unused code and paths are adjusted to use the installwatch wrapper which we now install to /usr/bin. Since Slackware no longer includes checkinstall we 'take over' the normal path for the installwatch wrapper. For those who really dislike or mistrust what src2pkg and trackinstall do, the tracklist program is completely non-intrusive and just produces a list of files and directories created by whatever command it is called with, without altering any content. In other words, it's just like using the plain 'installwatch' command, except that it parses the installwatch log to produce a FILELIST in the current directory. - src2pkg has been reviewed by LinuxQuestions user lufbery (Drew Ames) for the online magazine Linux.com. Article is due to be published on Thanksgiving Day 2007. A hearty thanks to Drew for his efforts and helpful criticism Version-1.6 - strip leading '/' characters from PRE_FIX inetrnally. This means that scripts which have $PKG_DIR$PRE_FIX will need to use $PKG_DIR/$PRE_FIX instead. This is more intuitive in scripts, I think, and is consistent with other usage. You can still give the PRE_FIX with a slash but it will be removed internally. - give each line in the PKG_DESC(slack-desc) file a variable name which can be specified or generated. These are named BLURB_1 to BLURB_13. By default BLURB_1 is set to show the name of the program, BLURB_3 is "No description was given for this package." and BLURB_11 is set to 'Packaged by src2pkg'. This can be used to add group-related info or dependencies. - Check for patches in the CWD before checking for a ./patches directory If there are patches in the CWD, patches in the patches directory are ignored. This allows you to have a directory named 'patches' in your build directory(CWD) with unused patches. - When patches are applied a list of the files patched is created inside the SRC_DIR. This list is examined to see if any *.ac, *.in or *.am files were modified. If so autoreconf -if is run in the sources -otherwise autoreconf is _not_ run as it takes a long time and may undo changes performed by the patching -this is especially true for crude patches which wrongly patch the 'configure' script without patching the corresponding configure.ac or configure.in files. Same goes for directly-patched Makefiles. DEBUG_FILELISTS will create a copy of the list of patched files in the CWD. - Remove extra whitespaces from CONFIG_ARGS - Use less code to correct Makefile prefix - Show a prompt and be verbose when running 'make clean' in verbose mode. - Fixed a reference to unused $INSTW_LOGFILE (installwatch-0.7). - added support for s390x ARCH - added SRC_DIR/source to CONFIG_SUBDIR search list. Thanks to "browser" on the LinuxQuestions Slackware forum for trying to compile samba with src2pkg which pointed out a useful, if obscure, case which might apply elsewhere. - fixed error if using src2pkg -X and there are multiple src2pkg scripts present - fixed substitution of PRE_FIX in automatically-corrected Makefiles. - added a FAQ (more like a short tutorial and made a few additions/changes to html documentation. Version-1.5 - fixed a missing case statement that caused the internal static tar program to fail when unpacking archives in verbose mode. Thanks to James Mueller for quickly reporting this. - more POSIX fixes: 'head -1' changed to 'head -n 1' in several places in src2pkg, trackinstall and FUNCTIONS - stopped using 'source' internally and in src2pkg or TrackBuild scripts. We used to use '.' but prefer using 'source' as being more readable. But it is not supported under ash, dash and sh. - Changed code which required awk to generate the 'Handy Ruler' in new slack-desc files. If awk is not present this will now still succeed. - eliminated the only usage of 'touch' in the same routine as above. - eliminated a call to sed when counting valid lines in slack-desc - Allow description files (slack-desc) with 9-13 lines. - Add BLURB_1 and BLURB_2. src2pkg usually writes a desc file with 11 lines. Using BLURB_1 and/or BLURB_2 will add extra lines to these 11 which can be used for whatever - fixed src2pkg build script to insure that src2pkg builds correctly under other architectures, such as _x86_64, ppc or s390. Thanks to Piete Sartain for testing this on _x86_64. This is a little tricker now that we include both statically compiled binaries and shared libraries in the package. Version-1.4 - use internal statically-linked binaries of tar and other programs which are used for critical operations, such as when restoring overwritten files just after 'make install' and before /sbin/ldconfig is run. This makes it possible and safe to normally compile and package tar itself without problems. It also means that if you've whacked your glibc somehow, your system should still get restored. I'm working toward a smooth way to use src2pkg during a complete system rebuild or bootstrap build, so other internal binaries may be included later. Currently we use a separate binary of tar and the rest of the programs are supplied by busybox. These programs are run mostly in the fake_install function: cat, cp, cut, egrep, grep, mkdir, rm, sort, tar and uniq The statically linked tar is used throughout src2pkg, so no external tar is needed by src2pkg. - integrated code for mini_installpkg using our static tar. This means that src2pkg no longer needs the Slackware pktools package to be installed either, since it already included the mini_makepkg routine. installpkg or other install program can still be used, if needed. The internal installer is enabled by default by setting INSTALLPKG="internal" in the DEFINES file. - added the ADM_DIR_NAME variable to DEFINES. mini_installpkg uses this to allow flexibility of usage with other distros which install database files somewhere besides /var/log/packages - better handling of non-standard files in the /install directory. - moved code to generate database files into a separate function so it can be used by mini_installpkg as well as during post_process. - src2pkg -N uses get_patch_list to check for patches - if patches have been applied and there is a Makefile.am, run autoreconf -if in the sources. Correctly patched configuration files need this to take effect. Badly patched config files may get whacked, though, so you can disable this behaviour for the package by using AUTORECONF=NO in your src2pkg script. - use uname -m to get arch info instead of uname -i - added some more comments to FUNCTIONS Version 1.3 - downgraded to installwatch-0.6.3 again. After about 2 weeks of testing I found a serious bug in installwatch which causes your compiler and compiler libs to be removed from your system when creating some packages. I discovered it while compiling libbonobo-2.14.0. - included new html docs -I really hope that these are useful as I would much rather write code than documents. They still need some work... - changes to src2pkg command-line options (-V is now DEBUG) (-R is REPLAY_ERRORS) - fixed a problem with USE_OBJ_DIR not working sometimes. - src2pkg program can now download a raw src2pkg script and then execute it. Version 1.2 - added URL handling for src2pkg scripts - upgraded to installwatch-0.7.0beta5 - improved auto-patching lets you specify the '-p ?' option for a patch by putting the option in the patch name: some-fixes.p0.diff would be applied with '-p 0' patching order can be controlled by specifying PATCHLIST - added handling of extra sources. For now these must be written into a script with EXTRA_SOURCES='URL-list' These changes make bootstrapping very easy by allowing src2pkg to download a script which then can download other needed sources for a build. - tracklist has been moved to pasture for now. It needs to be re-written for the new installwatch. Version 1.1 -updated the build script to detect and compile for x86_64 ARCH -added support for x86_64 and s390 to FLAGS, etc -added auto-patching feature -added handling of URL and downloading of sources -updated code for comatibility with BASH-3.2 -code cleanups -updated man-pages and README -added updating and execution of scripts -added routine to check for SRC_DIR/doc if no docs were installed and allow build to continue if no docs are present. -fixed a 'gotcha' in the source unpack routines where the unpacked archive has no version number and contains a binary with the same name