Packaging crosstool-ng

View: New views
2 Messages — Rating Filter:   Alert me  

Packaging crosstool-ng

by Oron Peled :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Hi,

I've started packaging CT-NG for Fedora. The current results
are in http://oron.fedorapeople.org/crosstool-ng

Checking the results with rpmlint, I did some cleanups:
1. The populate script was configured during toolchain build.
   I moved most of this to configuration time, like other .in
   files. The only thing that's still postponed to toolchain build
   is CT_TARGET substitution.
   This change is contained in the attached patch.

2. Two scripts have 644 permissions instead of 755:
     /usr/share/ct-ng-1.4.2/kconfig/lxdialog/check-lxdialog.sh
     /usr/share/ct-ng-1.4.2/kconfig/check-gettext.sh
   I changed it in my package, but IMO it should be done in the
   upstream tarball.

3. There are other 3 "scripts" with 644 perms:
     /usr/share/ct-ng-1.5.0/scripts/toolchain-config.in
     /usr/share/ct-ng-1.5.0/scripts/build/debug/duma.in
     /usr/share/ct-ng-1.5.0/scripts/wrapper.in
   I didn't change their permissions, as they are actually
   templates used to generate scripts. Just making them
   executable to silence rpmlint does not seem right to me.
   Hmmm.... re-thinking of this, the populate script also
   belong to the same category, so maybe I shouldn't have
   made it executable in the new Makefile.

What do you think?

--
Oron Peled                                 Voice: +972-4-8228492
oron@...                  http://users.actcom.co.il/~oron
...there are two types of command interfaces in the world of
             computing: good interfaces and user interfaces.
                            - Dan Bernstein, Author of qmail

[crosstool-ng-1.5.0.populate.patch]

diff -up crosstool-ng.1.5.0/Makefile.in.orig crosstool-ng.1.5.0/Makefile.in
--- crosstool-ng.1.5.0/Makefile.in.orig 2009-10-04 13:14:13.000000000 +0200
+++ crosstool-ng.1.5.0/Makefile.in 2009-10-13 10:01:32.000000000 +0200
@@ -102,7 +102,7 @@ uninstall: real-uninstall
 #--------------------------------------
 # Build rules
 
-build-bin: ct-ng scripts/crosstool-NG.sh scripts/saveSample.sh scripts/showTuple.sh
+build-bin: ct-ng scripts/crosstool-NG.sh scripts/saveSample.sh scripts/showTuple.sh scripts/populate
  @chmod 755 $^
 
 build-lib: paths.mk
@@ -125,6 +125,8 @@ docs/ct-ng.1.gz: docs/ct-ng.1
            -e 's,@@CT_DATE@@,$(DATE),g;'        \
            -e 's,@@CT_make@@,$(make),g;'        \
            -e 's,@@CT_bash@@,$(bash),g;'        \
+           -e 's,@@CT_grep@@,'"${grep}"',g;'    \
+           -e 's,@@CT_sed@@,'"${sed}"',g;'      \
            $@.in >$@
 
 # We create a script fragment that is parseable from inside a Makefile,
@@ -202,6 +204,7 @@ install-lib-main: $(DESTDIR)$(LIBDIR)
  done
  @chmod a+x $(DESTDIR)$(LIBDIR)/scripts/crosstool-NG.sh
  @chmod a+x $(DESTDIR)$(LIBDIR)/scripts/saveSample.sh
+ @chmod a+x $(DESTDIR)$(LIBDIR)/scripts/populate
  @rm -f "$(DESTDIR)$(LIBDIR)/scripts/addToolVersion.sh"
  @echo "  INST   'steps.mk'"
  @$(install) -m 644 steps.mk "$(DESTDIR)$(LIBDIR)/steps.mk"
diff -up crosstool-ng.1.5.0/scripts/build/internals.sh.orig crosstool-ng.1.5.0/scripts/build/internals.sh
--- crosstool-ng.1.5.0/scripts/build/internals.sh.orig 2009-10-13 09:54:40.000000000 +0200
+++ crosstool-ng.1.5.0/scripts/build/internals.sh 2009-10-13 09:55:44.000000000 +0200
@@ -11,12 +11,7 @@ do_finish() {
     if [ "${CT_BARE_METAL}" != "y" ]; then
         CT_DoLog EXTRA "Installing the populate helper"
         sed -r -e 's|@@CT_TARGET@@|'"${CT_TARGET}"'|g;' \
-               -e 's|@@CT_install@@|'"${install}"'|g;'  \
-               -e 's|@@CT_bash@@|'"${bash}"'|g;'        \
-               -e 's|@@CT_grep@@|'"${grep}"'|g;'        \
-               -e 's|@@CT_make@@|'"${make}"'|g;'        \
-               -e 's|@@CT_sed@@|'"${sed}"'|g;'          \
-               "${CT_LIB_DIR}/scripts/populate.in"      \
+               "${CT_LIB_DIR}/scripts/populate"      \
                >"${CT_PREFIX_DIR}/bin/${CT_TARGET}-populate"
         CT_DoExecLog ALL chmod 755 "${CT_PREFIX_DIR}/bin/${CT_TARGET}-populate"
     fi



--
For unsubscribe information see http://sourceware.org/lists.html#faq

Re: Packaging crosstool-ng

by Yann E. MORIN :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Hello Oron!

Sorry for the delay, I was away at ELC-E this week, and only
came back home tonight.

On Wednesday 14 October 2009 10:46:18 Oron Peled wrote:
> I've started packaging CT-NG for Fedora. The current results
> are in http://oron.fedorapeople.org/crosstool-ng

Hey! Nice! :-)

> Checking the results with rpmlint, I did some cleanups:
> 1. The populate script was configured during toolchain build.
>    I moved most of this to configuration time, like other .in
>    files. The only thing that's still postponed to toolchain build
>    is CT_TARGET substitution.
>    This change is contained in the attached patch.

Nothing really wrong with the patch, except that I would prefer that we
mangle populate in a single place. And becasue CT_TARGET is not known at
that time, we should keep the whole mangling to where it is now. Unless
you come with a reason better than 'rpmlint complains', which I don't
buy.

OTOH, it's not the only .in file that gets isntalled: the tools wrapper is
also installed as .in, and then copied at the end of the toolchain build
(although the wrapper is not mangled). Maybe we need to find a naming scheme
for files that are mangled at crosstool-NG installation, and another scheme
for files that are mangled when the toolchain is built.

Anyway, next time, please submit a Mercurial patch. This keeps attribution,
history, and is easier to manage. Please have a look at the documentation,
section "Contributing".

> 2. Two scripts have 644 permissions instead of 755:
>      /usr/share/ct-ng-1.4.2/kconfig/lxdialog/check-lxdialog.sh
>      /usr/share/ct-ng-1.4.2/kconfig/check-gettext.sh
>    I changed it in my package, but IMO it should be done in the
>    upstream tarball.

Hmmm. Lemme see... No, they are called from the kconfig/kconfig.mk
makefile fragment with: $(shell $(SHELL) blabla...)
So they need not be executable.

I remember that they previously were executables, but directly calling
them was failing on some systems, so I reverted to calling for the shell
to interpret them, and expressly removed the x-bit.

> 3. There are other 3 "scripts" with 644 perms:
>      /usr/share/ct-ng-1.5.0/scripts/toolchain-config.in
>      /usr/share/ct-ng-1.5.0/scripts/build/debug/duma.in
>      /usr/share/ct-ng-1.5.0/scripts/wrapper.in
>    I didn't change their permissions, as they are actually
>    templates used to generate scripts. Just making them
>    executable to silence rpmlint does not seem right to me.

Nope. They are source files, execpt they contain script code.

>    Hmmm.... re-thinking of this, the populate script also
>    belong to the same category, so maybe I shouldn't have
>    made it executable in the new Makefile.

Yep. On the whole, I think that rpmlint is wrong here.

Thanks for taking the burden to try and package crosstool-NG! :-)

Regards,
Yann E. MORIN.

--
.-----------------.--------------------.------------------.--------------------.
|  Yann E. MORIN  | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
| +33 662 376 056 | Software  Designer | \ / CAMPAIGN     |  ___               |
| +33 223 225 172 `------------.-------:  X  AGAINST      |  \e/  There is no  |
| http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL    |   v   conspiracy.  |
`------------------------------^-------^------------------^--------------------'



--
For unsubscribe information see http://sourceware.org/lists.html#faq