| Back to the Main Page. | am_rpm_init |
Download the M4 Source. |
AM_RPM_INIT
2000-07-19 0.5.65 : InstalledPackages
Dale K. Hawkins <dhawkins@cdrgts.com>
license: AllPermissive
dnl For my rpm.m4 macros RPM_RELEASE=1 AC_SUBST(RPM_RELEASE) AM_RPM_INIT dnl Enable or disable the rpm making rules in Makefile.am AM_CONDITIONAL(MAKE_RPMS, test x$make_rpms = xtrue) dnl This is a little hack to make this work with rpm better (see mysql++.spec.in) test -z "$CXXFLAGS" && CXXFLAGS="${CFLAGS}" if MAKE_RPMS rpm: @RPM_TARGET@ .PHONY: rpm $(RPM_TARGET): $(DISTFILES) ${MAKE} dist -mkdir -p $(RPM_DIR)/SRPMS -mkdir -p `dirname $(RPM_TARGET)` $(RPM_PROG) $(RPM_ARGS) $(RPM_TARBALL) @echo Congratulations, $(RPM_TARGET) "(and friends)" should now exist. else endif ---------- 8< ---------- # -*- Mode:rpm-spec -*- # mysql++.spec.in Summary: Your package description goes here %define rel @RPM_RELEASE@ %define version @VERSION@ %define pkgname @PACKAGE@ %define prefix /usr %define lt_release @LT_RELEASE@ %define lt_version @LT_CURRENT@.@LT_REVISION@.@LT_AGE@ # This is a hack until I can figure out how to better handle replacing # autoconf macros... (gotta love autoconf...) %define __aclocal aclocal || aclocal -I ./macros %define configure_args @RPM_CONFIGURE_ARGS@ Name: %{pkgname} Version: %{version} Release: %{rel} Copyright: LGPL Group: # your group name goes here Source: %{pkgname}-%{version}.tar.gz Requires: # additional requirements Buildroot: /tmp/%{pkgname}-root URL: http://yoururl.go.here Prefix: %{prefix} BuildArchitectures: # Target platforms, i.e., i586 Packager: Your Name <youremail@your.address> %description Your package description %changelog %prep %setup #%patch %build %GNUconfigure %{configure_args} # This is why we copy the CFLAGS to the CXXFLAGS in configure.in # CFLAGS="%{optflags}" CXXFLAGS="%{optflags}" ./configure %{_target_platform} --prefix=%{prefix} make %install # To make things work with BUILDROOT if [ "$RPM_BUILD_ROOT" != "/tmp/%{pkgname}-root" ] then echo echo @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ echo @ @ echo @ RPM_BUILD_ROOT is not what I expected. Please clean it yourself. @ echo @ @ echo @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ echo else echo Cleaning RPM_BUILD_ROOT: "$RPM_BUILD_ROOT" rm -rf "$RPM_BUILD_ROOT" fi make DESTDIR="$RPM_BUILD_ROOT" install %clean # Call me paranoid, but I do not want to be responsible for nuking # someone's harddrive! if [ "$RPM_BUILD_ROOT" != "/tmp/%{pkgname}-root" ] then echo echo @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ echo @ @ echo @ RPM_BUILD_ROOT is not what I expected. Please clean it yourself. @ echo @ @ echo @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ echo else echo Cleaning RPM_BUILD_ROOT: "$RPM_BUILD_ROOT" rm -rf "$RPM_BUILD_ROOT" fi %files %defattr(-, root, root) # Your application file list goes here # %{prefix}/lib/lib*.so* %doc COPYRIGHT ChangeLog README AUTHORS NEWS %doc doc/* # If you install a library %post -p /sbin/ldconfig # If you install a library %postun -p /sbin/ldconfig %package devel Summary: Development files for %{pkgname} Group: Applications/Databases %description devel Development files for %{pkgname}. %files devel %defattr(-, root, root) # Your development files go here # Programmers documentation goes here %doc doc # end of file ---------- >8 ----------
dnl AM_RPM_INIT
dnl Figure out how to create rpms for this system and setup for an
dnl automake target
AC_DEFUN([AM_RPM_INIT],
[dnl
AC_REQUIRE([AC_CANONICAL_HOST])
dnl Find the RPM program
AC_ARG_WITH(rpm-prog,[ --with-rpm-prog=PROG Which rpm to use (optional)],
rpm_prog="$withval", rpm_prog="")
AC_ARG_ENABLE(rpm-rules, [ --enable-rpm-rules Try to create rpm make rules (defaults to yes for Linux)],
enable_rpm_rules="$withval",enable_rpm_rules=no)
AC_ARG_WITH(rpm-extra-args, [ --with-rpm-extra-args=ARGS Run rpm with extra arguments (defaults to none)],
rpm_extra_args="$withval", rpm_extra_args="")
dnl AC_ARG_ENABLE(rpm-topdir, [ --enable-rpm Try to create rpm make rules (defaults to yes for Linux)],
dnl enable_rpm_rules="$withval",no)
dnl echo enable_rpm_rules is $enable_rpm_rules
dnl echo rpm_prog is $rpm_prog
RPM_TARGET=""
if test x$enable_rpm_rules = xno ; then
echo "Not trying to build rpms for your system (use --enable-rpm-rules to override) "
no_rpm=yes
else
if test x$rpm_prog != x ; then
if test x${RPM_PROG+set} != xset ; then
RPM_PROG=$rpm_prog
fi
fi
AC_PATH_PROG(RPM_PROG, rpm, no)
no_rpm=no
if test "$RPM_PROG" = "no" ; then
echo *** RPM Configuration Failed
echo *** Failed to find the rpm program. If you want to build rpm packages
echo *** indicate the path to the rpm program using --with-rpm-prog=PROG
no_rpm=yes
RPM_MAKE_RULES=""
else
AC_MSG_CHECKING(how rpm sets %{_rpmdir})
rpmdir=`rpm --eval %{_rpmdir}`
if test x$rpmdir = x"%{_rpmdir}" ; then
AC_MSG_RESULT([not set (cannot build rpms?)])
echo *** Could not determine the value of %{_rpmdir}
echo *** This could be because it is not set, or your version of rpm does not set it
echo *** It must be set in order to generate the correct rpm generation commands
echo ***
echo *** You might still be able to create rpms, but I could not automate it for you
echo *** BTW, if you know this is wrong, please help to improve the rpm.m4 module
echo *** Send corrections, updates and fixes to dhawkins@cdrgts.com. Thanks.
else
AC_MSG_RESULT([$rpmdir])
fi
AC_MSG_CHECKING(how rpm sets %{_rpmfilename})
rpmfilename=$rpmdir/`rpm --eval %{_rpmfilename} | sed "s/%{ARCH}/${host_cpu}/g" | sed "s/%{NAME}/$PACKAGE/g" | sed "s/%{VERSION}/${VERSION}/g" | sed "s/%{RELEASE}/${RPM_RELEASE}/g"`
AC_MSG_RESULT([$rpmfilename])
RPM_DIR=${rpmdir}
RPM_TARGET=$rpmfilename
RPM_ARGS="-ta $rpm_extra_args"
RPM_TARBALL=${PACKAGE}-${VERSION}.tar.gz
fi
fi
case "${no_rpm}" in
yes) make_rpms=false;;
no) make_rpms=true;;
*) AC_MSG_WARN([bad value ${no_rpm} for no_rpm (not making rpms)])
make_rpms=false;;
esac
AC_SUBST(RPM_DIR)
AC_SUBST(RPM_TARGET)
AC_SUBST(RPM_ARGS)
AC_SUBST(RPM_TARBALL)
RPM_CONFIGURE_ARGS=${ac_configure_args}
AC_SUBST(RPM_CONFIGURE_ARGS)
])