----- Original Message -----
I've run into some odd problems building a "scl-ified"
package and I'm hoping
other list subscribers who are smarter and/or more experienced with package
builds than me can shed some insight on what's going on here.
I'm building a software package called Freeside, which is a billing system
written primarily in Perl. The package website is <
http://www.freeside.biz/>
and I'm building their 3.0 version.
To do this, I used the freeside.spec file they include in their tarball. It
hadn't been updated since version 2.1, so I updated it and made some changes
to it to get it to build. Once I got a successful build, I ran spec2scl on
the
modified spec file.
What version of spec2scl did you use?
This created some interesting issues. Most notably, there were some
lines in
the spec file which invoked Perl to make some inline changes to makefiles.
Stuff
like this:
perl -pi -e 's|/usr/local/bin|%{_bindir}|g' fs_selfservice/FS-
SelfService/Makefile.PL
spec2scl modified lines like this with:
%{?scl:scl enable %{scl} "}
perl -pi -e 's|/usr/local/bin|%{_bindir}|g' fs_selfservice/FS-
SelfService/Makefile.PL
%{?scl:"}
This doesn't work.
Why doesn't it work, what's the error?
As I thought about it, I came to the conclusion I didn't really
need these
simple text file manipulations to be done by the Perl interpretter provided
by
the perl514 collection. It would be just fine if these commands were done by
the system Perl interpretter (5.8 or 5.10). So, I stripped all these commands
out of the 'scl enable' wrappers in the scl-ified spec file.
Yep, you can do that.
I'm building this package with mock and the mock build of the
scl-modified
spec
file seems to go fine until the %install phase. The spec file has a
%makeinstall
macro and that issues a long 'make install' line using the root Makefile for
the Freeside package. The Makefile has a target called install-perl-modules
that looks like this:
install-perl-modules: perl-modules install-rt-initialdata
[ -L ${PERL_INC_DEV_KLUDGE}/FS ] \
&& rm ${PERL_INC_DEV_KLUDGE}/FS \
&& mv ${PERL_INC_DEV_KLUDGE}/FS.old ${PERL_INC_DEV_KLUDGE}/FS \
|| true
cd FS; \
make install UNINST=1
#install this for freeside-setup
install -d $(DIST_CONF)
#install conf/[a-z]* $(DEFAULT_CONF)
#CVS is not [a-z]
install `ls -d conf/[a-z]* | grep -v CVS | grep -v '^conf/registries'`
$(DIST_CONF)
When it reaches the 'install -d $(DIST_CONF)' line, it doesn't prepend any
DESTDIR or PREFIX and ends up trying to create the directory
/usr/local/etc/freeside, which as a non-privileged user, it can not.
Could you also attach your mock buildlog? Or at least the "make install"
execution line? I'd like to see how it was executed. From the first glance, I cannot
tell where the problem is, but it seems that some paths/macros are defined badly.
I've attached the spec files (before and after the spec2scl) if
anyone wants
to
inspect them to see if there's anything obvious I've done to mess things up.
Otherwise, I'm wondering if I've tripped over some weird makefile bug.
The specfile looks sane, I see no immediate problems there. Mock buildlog will say the
most here.
Thanks,
Slavek.
--
Doran L. Barton <doran(a)bluehost.com> - Senior Developer, Bluehost, RHCE
"Let's enjoy your life. Sometimes you can do it only with lovely color."
-- Japanese stationary packaging
_______________________________________________
softwarecollections mailing list
softwarecollections(a)lists.fedorahosted.org
https://lists.fedorahosted.org/mailman/listinfo/softwarecollections
--
Regards,
Bohuslav "Slavek" Kabrda.