This is the mail archive of the cygwin mailing list for the Cygwin project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Standard LEX variable doesn't work in Make.


On 2016-11-25 17:08, Hans-Bernhard Bröker wrote:
Am 25.11.2016 um 15:31 schrieb Brian Inglis:

One solution, and the most common in Cygwin, is the package flex should
create a symlink lex if no such symlink or exe exists;

In this case I believe that would be less than fully correct, because
flex is not a clean drop-in replacement for generic lex. For that one
has to add the '-l' flag. So instead of a symlink one would use a
wrapper script much like the 'yacc' script found in the 'bison'
package, i.e.:

    #! /bin/sh
    exec /usr/bin/flex -l "$@"

On Debian both yacc and bison.yacc are alternatives;

or by the FHS,
create a group of alternatives, with a slave alternative for each of
its public components e.g. bin, man, info, etc. files.

I don't think 'alternatives' is applicable here. We're not looking at
several packages providing the same file --- we're looking at

* single packages offering the same executable under more than one
name, causing it to express different personalities, like ex ->
vi.exe, view -> vi.exe, latex --> pdftex.exe,

and all vi, vim, nvi, elvis etc. links are handled via alternatives:
it's used as the canonical example in

	https://wiki.debian.org/DebianAlternatives
* a subsystem like texlive installing a truckload of executable
scripts somewhere else, and links from /bin to them.

but tex uses no alternatives.

So while I agree that the 'alternatives' mechanism could, or even
should be used more in Cygwin, I don't think this is one of the cases
where that applies.

Cygwin currently seems to follow the RH/RHEL/Fedora model using it in
limited cases. Not running Cygwin/X I don't know if it is used for X
or Gnome packages, where it is used extensively in Debian-based distros.
One commenter on Debian notes it is also used for: "
- cases where you've got a common name referring to specific name
  (like emacs-->/usr/bin/emacs20)
- cases where an older style name refers to the modern equivalent
  (maybe cc-->/usr/bin/gcc or csh-->/usr/bin/tcsh or rcp-->/usr/bin/scp)
- cases where a Unix-style name refers to the modern GNU equivalent
  (like yacc-->/usr/bin/bison)."
and I'd add it is also used for some versioned .so files and language
variants, so it appears it can apply wherever the packager decides it
should.
Cygport currently supports it for postinstall(/preremove) in the berkdb
cygclass and Google shows some other packages also appear to use it.
Perhaps Cygwin packages should use it more, whenever symlink creation
is considered for some component.

--
Take care. Thanks, Brian Inglis, Calgary, Alberta, Canada

--
Problem reports:       http://cygwin.com/problems.html
FAQ:                   http://cygwin.com/faq/
Documentation:         http://cygwin.com/docs.html
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]