aboutsummaryrefslogtreecommitdiff
path: root/reproduce
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
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')
-rw-r--r--reproduce/software/config/installation/checksums.mk2
-rw-r--r--reproduce/software/config/installation/versions.mk2
-rw-r--r--reproduce/software/make/high-level.mk42
3 files changed, 31 insertions, 15 deletions
diff --git a/reproduce/software/config/installation/checksums.mk b/reproduce/software/config/installation/checksums.mk
index b4efaa1..6ea6da4 100644
--- a/reproduce/software/config/installation/checksums.mk
+++ b/reproduce/software/config/installation/checksums.mk
@@ -73,7 +73,7 @@ zlib-checksum = 73fd3fff4adeccd4894084c15ddac89890cd10ef105dd5e1835e1e9bbb6a49ff
# `reproduce/software/config/installation/TARGETS.mk' will be built as part
# of a project. To specify a software there, just remove the `-checksum'
# suffix from the list below.
-apachelog4cxx-checksum = 1c34d80983db5648bc4582ddcf6b4fdefdc6594c2769f95235f5441cd6d03cf279cc8f365e9a687085b113f79ebac9d7d33a54b6aa3b3b808c0e1a56a15ffa37
+apachelog4cxx-checksum = aa59ce549c2c5cbeec031361dfce09cdfc3e62ee3bc9ecbc809507b7ec878c14409b98536b7d13c27690809c8e9d5ebafc3589c9fb5e4aecd5cc064943ae7d6b
apr-checksum = daa140c83c7e2c45c3980d9dc81d34fa662bebd050653562c39572d0ddf2eaedb71767c518a59d77f59db9b32e00221ef48b9f72ec3666c4521dd511969f3706
apr-util-checksum = 84da76e9b64da2de0996d4d6f3ab3f23db3724eb6352d218e0e8196bcc0b0a5d4fe791f41b4cc350ce3d04cce3bb3cf8bfb513d777d0cd030928368e6b55a536
astrometrynet-checksum = 35c268bf0a7068e01323b9bfccdf255c993df83c24b2e6026a00084c4ab87d031f1024205d0ed3aecc7e2a495d4bc0b0e67270d66679020b7cc2e4b2f30f5c4a
diff --git a/reproduce/software/config/installation/versions.mk b/reproduce/software/config/installation/versions.mk
index b498733..bf503ff 100644
--- a/reproduce/software/config/installation/versions.mk
+++ b/reproduce/software/config/installation/versions.mk
@@ -71,7 +71,7 @@ zlib-version = 1.2.11
# `reproduce/software/config/installation/TARGETS.mk' will be built as part
# of a project. To specify a software there, just remove the `-version'
# suffix from the list below.
-apachelog4cxx-version = 0.10.0
+apachelog4cxx-version = 0.10.0-603-014954db
apr-version = 1.7.0
apr-util-version = 1.6.1
astrometrynet-version = 0.77
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 \