aboutsummaryrefslogtreecommitdiff
path: root/reproduce/software/make
diff options
context:
space:
mode:
authorMohammad Akhlaghi <mohammad@akhlaghi.org>2019-11-03 14:07:55 +0000
committerMohammad Akhlaghi <mohammad@akhlaghi.org>2019-11-03 14:07:55 +0000
commitdda89debd25af2ed4628fdd5772640b958de86f9 (patch)
treef3638c32fc71a8bcbff1a7691dc234a179a6c92a /reproduce/software/make
parente37673130c821a8bbdf9da1907cf1cdb0b689bbe (diff)
Corrected build of log4cxx by re-building the tarball used
When building the log4cxx tarball from its Git history, I noticed that files with very long names are not packaged by tar (because by default Automake uses the ancient v7 tar format that only supports file names less than 99 characters). So I build the tarball with the `tar-ustar' option to Automake (by modifying the log4cxx source) and the resulting tarball was able to compile and run successfully. This has been described above the rule to build log4cxx and I also sent an email to their developing mailing list to inform them of this problem. If they address it, I will remove the note on the necessary corrections.
Diffstat (limited to 'reproduce/software/make')
-rw-r--r--reproduce/software/make/high-level.mk42
1 files changed, 29 insertions, 13 deletions
diff --git a/reproduce/software/make/high-level.mk b/reproduce/software/make/high-level.mk
index 0812067..7f0e044 100644
--- a/reproduce/software/make/high-level.mk
+++ b/reproduce/software/make/high-level.mk
@@ -132,7 +132,7 @@ include reproduce/software/make/python.mk
# convention, but include the name/version in their tarball names with
# another format, we'll do the modification before the download so the
# downloaded file has our desired format.
-tarballs = $(foreach t, apachelog4cxx-$(apachelog4cxx-version).tar.gz \
+tarballs = $(foreach t, apachelog4cxx-$(apachelog4cxx-version).tar.lz \
apr-$(apr-version).tar.gz \
apr-util-$(apr-util-version).tar.gz \
astrometry.net-$(astrometrynet-version).tar.gz \
@@ -190,10 +190,7 @@ $(tarballs): $(tdir)/%: | $(lockdir)
# Set the top download link of the requested tarball.
mergenames=1
- if [ $$n = apachelog ]; then
- mergenames=0;
- c=$(apachelog4cxx-checksum);
- w=https://www-eu.apache.org/dist/logging/log4cxx/$(apachelog4cxx-version)/apache-log4cxx-$(apachelog4cxx-version).tar.lz
+ if [ $$n = apachelog ]; then c=$(apachelog4cxx-checksum); w=http://akhlaghi.org/reproduce-software
elif [ $* = apr-util-$(apr-util-version).tar.gz ]; then
c=$(apr-util-checksum); w=https://www-us.apache.org/dist/apr
elif [ $$n = apr ]; then c=$(apr-checksum); w=https://www-us.apache.org/dist/apr
@@ -346,18 +343,37 @@ $(tarballs): $(tdir)/%: | $(lockdir)
# library names.
# Until version 0.11.0 is released, we are using the version corresponding
-# to commit 014954db
+# to commit 014954db (603 commits after version 0.10.0, most recent when
+# first importing log4cxx into this project).
+#
+# Note that after cloning the project, the following changes are necessary
+# in `configure.ac'.
+# - Update the final name of the tarball and its version (from `git
+# - describe') by modifying the `AC_INIT' line:
+# AC_INIT([apachelog4cxx], [0.10.0-603-014954db])
+# - Because of the long file names in the project, some files will not be
+# packaged by default, so pass the `tar-ustar' option to Automake (the
+# `AM_INIT_AUTOMAKE' line of `configure.ac':
+# AM_INIT_AUTOMAKE([foreign subdir-objects -Wall tar-ustar])
+#
+# You can then simply bootstrap the project and make the distribution
+# tarball like this:
+# ./autogen.sh && ./configure && make -j8 && make dist-lzip
+#
+# Unfortunately we have to re-run the `autogen.sh' script on the tarball to
+# build it because it will complain about the version of libtool, so until
+# the version 0.11.0 of log4cxx, we'll have to run `autogen.sh' on the
+# unpacked source also.
$(ibidir)/apachelog4cxx: | $(ibidir)/automake \
- $(tdir)/apachelog4cxx-$(apachelog4cxx-version).tar.gz
+ $(tdir)/apachelog4cxx-$(apachelog4cxx-version).tar.lz
- #########################
- # STILL NOT COMPLETE: needs a patch.
- #########################
- pdir=apache-log4cxx-$(apachelog4cxx-version)
+ pdir=apachelog4cxx-$(apachelog4cxx-version)
rm -rf $(ddir)/$$pdir
- topdir=$(pwd); cd $(ddir);
+ topdir=$(pwd)
+ cd $(ddir)
tar xf $(word 1,$(filter $(tdir)/%,$|))
- cd $$pdir \
+ cd $$pdir
+ ./autogen.sh \
&& ./configure SHELL=$(ibdir)/bash --prefix=$(idir) \
&& make -j$(numthreads) SHELL=$(ibdir)/bash \
&& make install \