[Date Prev][Date Next][Thread Prev][Thread Next]
[Date Index]
[Thread Index]
- Subject: Re: Installing and locating scripts
- From: Hisham <h@...>
- Date: Tue, 5 Mar 2013 00:00:01 -0300
On 4 March 2013 19:45, Rena <hyperhacker@gmail.com> wrote:
>> I'll update it to embed the install path in the executable as well.
You shouldn't need to. Just load the other scripts using require() and
install them into /usr/local/share/lua/5.1/.
What actually may require editing is the hash-bang line, as in some
systems it's "#!/usr/bin/env lua" and others use variants such as
"lua5.1" or "lua51" (or 5.2, if it's the case). Unfortunately there's
no easy way around this, AFAIK.
>> I like the idea of the actual "executable" being a symlink and putting
>> all of the app's actual scripts in one directory.
That's fine, but it complicates things a little more than necessary.
For example, distro packagers often install to a temporary sandbox
directory and then move files around when creating the package. If you
use an absolute symlink it will require editing it.
>> The one thing I don't like about this method is you can change
>> INSTALLDIR on the command line, but not where the executable itself is
>> placed. That's easy enough to fix, but I wonder what to call that
>> variable... no doubt there's standards I'm not aware of for that, too.
Here's a document I wrote a while ago collecting recommendations for
Makefiles based on feedback from project authors when submitting
packages to LuaRocks. Most of it deals with handling C code, but I
guess some parts may still apply:
http://luarocks.org/en/Recommended_practices_for_Makefiles
(Suggestions, criticism and requests for clarifications are welcome.)
> Whoops, I should have made sure the installed program actually worked
> after running that script.
> PROGRAM=imgview
> INSTALLDIR=/usr/local/share/$(PROGRAM)
> PWD=$(shell pwd)
> .PHONY: all install uninstall
>
> all:
> @echo This program does not need to be compiled, just run \`make install\`.
>
> install:
> mkdir -p $(INSTALLDIR)
> ln -fs $(PWD)/$(PROGRAM).lua /usr/local/bin/$(PROGRAM)
You're making a symbolic link that's hardcoded from the location of
your sources to /usr/local/bin. When a user unpacks your tarball, runs
make install and then delete the directory with the unpacked tarball,
you'll end up with a broken symbolic link. (In general, you shouldn't
depend on $PWD like that when installing.)
Hope that helps,
-- Hisham
http://hisham.hm/