Hello,
I built APR 1.6.3 and APR-util 1.6.1 and noticed dependencies to files located
in APR's repository.
buildconf: l.61
# Remove some files, then copy them from apr source tree
rm -f build/apr_common.m4 build/find_apr.m4 build/install.sh \
build/config.guess build/config.sub build/get-version.sh
cp -p $apr_src_dir/build/apr_common.m4 $apr_src_dir/build/find_apr.m4 \
$apr_src_dir/build/install.sh $apr_src_dir/build/config.guess \
$apr_src_dir/build/config.sub $apr_src_dir/build/get-version.sh \
build/
buildconf: l.90
echo "Generating 'make' outputs ..."
$apr_src_dir/build/gen-build.py $verbose make
Why are these files not directly included in apr-utils's repository if they are
necessary for the build ?
In my opinion, if apr-utils depends on apr, I should firstly build apr as
follow:
./buildconf
./configure --prefix=/usr
make && make install
Since apr's libraries and headers are installed in standard pathes, I should be
able to
build apr-util directly without having to specify the location of the sources
of apr.
./buildconf --with-apr=/usr
./configure --prefix=/usr
make && make install
My real use case is the packaging of apr and apr-util with conan
(http://docs.conan.io/en/latest/)
You can find here below the recipes (note: the one for apr-util does not work
because of what I mentioned above)
conan recipe for APR:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
from conans import ConanFile, tools, AutoToolsBuildEnvironment
class APRConan(ConanFile):
name = "apr"
version = "1.6.3"
description = "..."
license = "http://www.apache.org/licenses/LICENSE-2.0";
url = "https://.../conan-apr.git";
settings = "os", "compiler", "build_type", "arch"
options = {"PIC": [True, False], "shared": [True, False]}
default_options = "PIC=True", "shared=False"
source_dir = "apache-{}-{}".format(name, version)
def source(self):
repo_url = "https://.../apache-apr.git";
self.run("git clone {} {}".format(repo_url, self.source_dir))
def build(self):
env_build = AutoToolsBuildEnvironment(self)
with tools.chdir(self.source_dir):
args = []
if not self.options['shared']:
args.append('--disable-shared')
args.append('--prefix={}'.format(self.package_folder))
self.run('./buildconf')
env_build.configure(args=args)
env_build.make()
env_build.make(args=['install'])
def package(self):
# already done by make install
pass
def package_info(self):
self.cpp_info.includedirs = ['include']
self.cpp_info.libdirs = ['lib']
self.cpp_info.bindirs = ['bin']
self.cpp_info.resdirs = ['build-1']
self.cpp_info.libs = ["apr-1"]
conan recipe for APR util:
#/usr/bin/env python
# -*- coding: utf-8 -*-
from os import path
from conans import CMake, ConanFile, tools, AutoToolsBuildEnvironment
class APRConan(ConanFile):
name = "apr-util"
version = "1.6.1"
description = "..."
license = "http://www.apache.org/licenses/LICENSE-2.0";
url = "https://.../conan-apr-util.git";
settings = "os", "compiler", "build_type", "arch"
options = {"PIC": [True, False], "shared": [True, False]}
default_options = "PIC=True", "shared=False"
source_dir = "apache-{}-{}".format(name, version)
build_requires = "apr/1.6.3@matthieu/testing"
def source(self):
repo_url = "https://.../apache-apr-util.git";
self.run("git clone {} {}".format(repo_url, self.source_dir))
def build(self):
env_build = AutoToolsBuildEnvironment(self)
with tools.chdir(self.source_dir):
apr_prefix = self.deps_cpp_info['apr'].rootpath
args = []
args.append('--prefix={}'.format(self.package_folder))
#args.append('--with-apr={}'.format(apr_prefix))
self.run('./buildconf --with-apr={}'.format(apr_prefix))
env_build.configure(args=args)
env_build.make()
env_build.make(args=['install'])
def package(self):
# already done by make install
pass
def package_info(self):
self.cpp_info.includedirs = ['include']
self.cpp_info.libdirs = ['lib']
self.cpp_info.bindirs = ['bin']
self.cpp_info.libs = ["apr-util-1"]
What do you think about making the build of APR util more independent ?
Regards,
Matthieu
***
This e-mail contains information for the intended recipient only. It may
contain proprietary material or confidential information. If you are not t