Re: Update: Newbie's first RPM goes wrong

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



(re-post to list, got bounced because message size was over 5k with original
text)


Again quite a simple problem, looking at the output you can see:

  + make install
  cp howdy /u/ek/pln/bin

Your makefile installs the binary to /u/ek/pln/bin, and your .spec file
calls "make install"

Normaly in a .spec file you would use the %makeinstall macro instead of
doing "make install", that macro includes things like prefix=(buildroot)
exec_prefix=(buildroot)/bin bindir=(buildroot)/bin sbindir=(buildroot)/sbin
etc etc... That prefix is what you should use in the make file to copy the
file to .. A whole new can of worms though, managing project with make :-)

A workaround not to have to fuck around with Makefiles (forgive my french),
would be to do the copying in the spec file.. (see sugested new spec file @
the end of my reply) and not from the Makefile.

Also as mentioned in another mail i send you on this ongoing project of
yours, you shouldn't hard specify the /u/ek/pln/bin in the spect file, but
use %{_bindir}, and then install the package using
rpm -ivh --prefix=/u/ek/pln ...

What your doing now is hard coding everything to /u/ek/pln/bin, then
changing some things around (specifying a build root), which causes rpm to
check %{build_root}/u/ek/pln/bin/howdy for the file, which ofcource failed
(it worked before, but only because of a another bug in your spec file)

Standardising the whole way is the only way to go, things like %{_bindir}
and %makeinstall in your spec file, and rpm -ivh --prefix
howdy-1.0-1.i386.rpm to install the package to a non standard prefix (ie
/u/ek/pln instead of /usr). Otherwise your gonna run into tons more of these
little problems..

Your spec file could then be simplified to this:

Summary: A hello world program
Name: howdy
Version: 1.0
Release: 1
Source: howdy-1.0.tar.gz
Group: Misc/Nonsense
Buildroot: /%{_tmppath}/%{name}-%{version}-%{release}-root

%description
A trivial program to practice on

%prep
%setup -q

%build
make

%install
rm -rf $RPM_BUILD_ROOT
mkdir -p $RPM_BUILD_ROOT/%{_bindir}
install -m755 $RPM_BUILD_DIR/howdy $RPM_BUILD_ROOT/%{_bindir}

 %clean
rm -rf $RPM_BUILD_ROOT

%files
%{_bindir}/howdy


_______________________________________________
Rpm-list mailing list
Rpm-list@xxxxxxxxxx
https://www.redhat.com/mailman/listinfo/rpm-list

[Index of Archives]     [RPM Ecosystem]     [Linux Kernel]     [Red Hat Install]     [PAM]     [Red Hat Watch]     [Red Hat Development]     [Red Hat]     [Gimp]     [Yosemite News]     [IETF Discussion]

  Powered by Linux