1

I'm attempting to build an RPM to install a "devel" package of ACE-TAO.

I know RPM's of ACE-TAO already exist, but for our application they are insufficient. Asking the developer to compile ACE+TAO is error prone.

Anyway, I build a spec file to do this:

%define _topdir %(echo $PWD)/
%define _builddir %(echo $PWD/BUILD)/

Summary: Shortens the manually installation process of ACE+TAO
Name: ace-tao-amg
Version: 6.1.7
Release: 1
Source: ACE+TAO+CIAO-src-%{version}.tar.gz
License: GLP
Group: Applications/JARSS
Vendor: <<removed>>
Packager: <<removed>>
BuildRoot: %_topdir/BUILDROOT

%define debug_package %{nil}

%description
Shortens the install process for ACE+TAO

%prep
# explicitly remove the last one and setup the new one
rm -Rf %_builddir/ACE_wrappers
%setup -q -n ACE_wrappers

%build

# we want to build ACE first
export ACE_ROOT=%_builddir/ACE_wrappers
touch $ACE_ROOT/ace/config.h
echo "#include \"ace/config-linux.h\"" >> $ACE_ROOT/ace/config.h
touch $ACE_ROOT/include/makeinclude/platform_macros.GNU
echo "include %_builddir/ACE_wrappers/include/makeinclude/platform_linux.GNU" >> $ACE_ROOT/include/makeinclude/platform_macros.GNU
#export $LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ACE_ROOT/lib
$ACE_ROOT/bin/mwc.pl -type gnuace ACE.mwc --exclude tests --exclude examples
make -j 8

# and then we want to build TAO
export TAO_ROOT=$ACE_ROOT/TAO
cd $TAO_ROOT
$ACE_ROOT/bin/mwc.pl -type gnuace TAO.mwc --exclude tests --exclude examples
make -j 8

%install
mkdir -p $RPM_BUILD_ROOT/usr/local
cp -Rf %_builddir/ACE_wrappers $RPM_BUILD_ROOT/usr/local

%files
%defattr(-,root,root,-)
/usr/local/ACE_wrappers

%post
touch /etc/ld.so.conf.d/ace-6.1.7.conf
touch /etc/ld.so.conf.d/tao-6.1.7.conf
echo "/usr/local/ACE_wrappers/lib" > /etc/ld.so.conf.d/ace-6.1.7.conf
echo "/usr/local/ACE_wrappers/TAO/lib" > /etc/ld.so.conf.d/tao-6.1.7.conf
/sbin/ldconfig

# and update the config linux and platform_linux with the correct wildcard paths
echo -e "include \$(ACE_ROOT)/include/makeinclude/platform_linux.GNU" > /usr/local/ACE_wrappers/include/makeinclude/platform_macros.GNU

%postun
rm -Rf /usr/local/ACE_wrappers
rm -Rf /etc/ld.so.conf.d/ace-6.1.7.conf
rm -Rf /etc/ld.so.conf.d/tao-6.1.7.conf
/sbin/ldconfig

All this thing is trying to do is copy a compiled ACE+TAO to /usr/local. However, when I attempt to install it, I get the following errors:

error: Failed dependencies:
    /pkg/gnu/bin//perl is needed by ace-tao-amg-6.1.7-1.x86_64
    /pkg/gnu/bin//perl5 is needed by ace-tao-amg-6.1.7-1.x86_64
    perl(CORBA) is needed by ace-tao-amg-6.1.7-1.x86_64
    perl(CosNotification::NotificationServiceMonitorControl) is needed by ace-tao-amg-6.1.7-1.x86_64
    perl(Net::Telnet) is needed by ace-tao-amg-6.1.7-1.x86_64
    perl(NotifyMonitoringExt::ActiveEventChannelNames) is needed by ace-tao-amg-6.1.7-1.x86_64
    perl(NotifyMonitoringExt::EventChannelConsumerNames) is needed by ace-tao-amg-6.1.7-1.x86_64
    perl(NotifyMonitoringExt::EventChannelCreationTime) is needed by ace-tao-amg-6.1.7-1.x86_64
    perl(NotifyMonitoringExt::EventChannelFactoryNames) is needed by ace-tao-amg-6.1.7-1.x86_64
    perl(NotifyMonitoringExt::EventChannelOldestEvent) is needed by ace-tao-amg-6.1.7-1.x86_64
    perl(NotifyMonitoringExt::EventChannelQueueElementCount) is needed by ace-tao-amg-6.1.7-1.x86_64
    perl(NotifyMonitoringExt::EventChannelQueueSize) is needed by ace-tao-amg-6.1.7-1.x86_64
    perl(NotifyMonitoringExt::EventChannelSlowestConsumers) is needed by ace-tao-amg-6.1.7-1.x86_64
    perl(NotifyMonitoringExt::EventChannelSupplierNames) is needed by ace-tao-amg-6.1.7-1.x86_64
    perl(NotifyMonitoringExt::InactiveEventChannelNames) is needed by ace-tao-amg-6.1.7-1.x86_64
    perl(PerlACE::Run_Test) is needed by ace-tao-amg-6.1.7-1.x86_64
    perl(Process) is needed by ace-tao-amg-6.1.7-1.x86_64
    perl(Tk) is needed by ace-tao-amg-6.1.7-1.x86_64
    perl(Tk::DialogBox) is needed by ace-tao-amg-6.1.7-1.x86_64
    perl(Tk::ROText) is needed by ace-tao-amg-6.1.7-1.x86_64
    perl(Tk::Tree) is needed by ace-tao-amg-6.1.7-1.x86_64
    perl(VmsProcess) is needed by ace-tao-amg-6.1.7-1.x86_64
    perl(Win32::Process) is needed by ace-tao-amg-6.1.7-1.x86_64
    perl(XML::DOM) is needed by ace-tao-amg-6.1.7-1.x86_64

Even though I don't have perl on my system, and the RPM can be build without these.

So, herein lies my question: is it possible to explicitly tell the RPM you don't need these dependencies? I'm not sure where they're manifested from, and I know that they don't affect the installed environment.

Thanks!

Tyler Jandreau
  • 4,245
  • 1
  • 22
  • 47
  • The spec files we use for compiling the RPMs on OBS are in the rpmbuild directory of the package. If you have suggestions for improvements, please post them on the ACE mailing list. – Johnny Willemsen Sep 16 '13 at 06:57
  • Woah! Johnny W! I see your name all over this code. I don't have any specific improvements. I basically wanted to bundle compiled ACE+TAO code much like the `make` process *without* the `make install`. I wasn't aware that you had already made a spec file for ACE. I'll go check that out. – Tyler Jandreau Sep 16 '13 at 12:26

1 Answers1

2

After digging through the documentation for RPM,

AutoReqProv: no

in the spec file is the way to go.

Tyler Jandreau
  • 4,245
  • 1
  • 22
  • 47