debian package for newLisp

Started by Dmi, August 05, 2005, 01:47:39 PM

Previous topic - Next topic

pjot

#30
In Slackware and Zenwalk Linux the docs are also installed in '/usr/share/doc/<package>'. (In fact, '/usr/share/doc' is symlinked to '/usr/doc'.)



These distributions sometimes also provide a version number. So the directory would become '/usr/share/doc/newlis-9.0.19', for example. Most packages are stored without this version number, though.



Peter

Lutz

#31
Thanks Peter, the install will then be as follows:


usr/share/newlisp> ls -ltr
total 448
-rw-r--r--    1 root  wheel   3153 Jan 30 15:14 zlib.lsp
-rw-r--r--    1 root  wheel   7798 Jan 30 15:14 unix.lsp
-rw-r--r--    1 root  wheel    945 Jan 30 15:14 tcltk.lsp
-rwxr-xr-x    1 root  wheel   6166 Jan 30 15:14 syntax.cgi
-rw-r--r--    1 root  wheel  17070 Jan 30 15:14 stat.lsp
-rw-r--r--    1 root  wheel  10866 Jan 30 15:14 sqlite3.lsp
-rw-r--r--    1 root  wheel   3065 Jan 30 15:14 smtp.lsp
-rw-r--r--    1 root  wheel  28185 Jan 30 15:14 postscript.lsp
-rw-r--r--    1 root  wheel   9715 Jan 30 15:14 pop3.lsp
-rw-r--r--    1 root  wheel  16431 Jan 30 15:14 odbc.lsp
-rwxr-xr-x    1 root  wheel   7717 Jan 30 15:14 newlispdoc
-rw-r--r--    1 root  wheel  13104 Jan 30 15:14 mysql5.lsp
-rw-r--r--    1 root  wheel   7024 Jan 30 15:14 mysql.lsp
-rw-r--r--    1 root  wheel   2817 Jan 30 15:14 link.lsp
-rw-r--r--    1 root  wheel   1730 Jan 30 15:14 init.lsp.example
-rw-r--r--    1 root  wheel   3954 Jan 30 15:14 infix.lsp
-rw-r--r--    1 root  wheel   2087 Jan 30 15:14 httpd-conf.lsp
-rw-r--r--    1 root  wheel  15792 Jan 30 15:14 gmp.lsp
-rw-r--r--    1 root  wheel   4366 Jan 30 15:14 ftp.lsp
-rw-r--r--    1 root  wheel   5923 Jan 30 15:14 cgi.lsp
-rw-r--r--    1 root  wheel   5797 Jan 30 15:14 CREDITS
-rw-r--r--    1 root  wheel  15423 Jan 30 15:14 COPYING
drwxr-xr-x   10 root  wheel    340 Jan 30 15:14 newlisp-tk
/usr/share/newlisp> cd ../doc/newlisp/
/usr/share/doc/newlisp> ls -ltr
total 1872
-rw-r--r--   1 root  wheel  721320 Jan 30 15:14 newlisp_manual.html
-rw-r--r--   1 root  wheel   28453 Jan 30 15:14 newlisp_index.html
-rw-r--r--   1 root  wheel   82212 Jan 30 15:14 newlisp-tk.html
-rw-r--r--   1 root  wheel     775 Jan 30 15:14 manual_frame.html
-rw-r--r--   1 root  wheel  111763 Jan 30 15:14 CodePatterns.html
/usr/share/doc/newlisp>


this should then be good for Mac OS X, all BSDs and all Linux



Lutz

nigelbrown

#32
Hi Lutz

Re libreadline and 6.10 I'd found the 5.2 vs 5.1-7 issue when I tried Dmi's deb earlier :
Quote from: "nigelbrown"
I tried the 9.0.16 etch binary deb on Ubuntu but it won't install as it wants readline >=5.2 while ubuntu 6.10 has 5.1-7 as standard.

Nigel

 which is why I went to building on Ubuntu. I tried install with gdebi which refused install with the mismatch.

If you like I'll upload an Ubuntu built deb to my site with the rpm's when you're happy with the directory layout. Currently what is there ( http://users.cyberone.com.au/nbrown/newlisp/rpms.html">http://users.cyberone.com.au/nbrown/newlisp/rpms.html ) is :

"Ubuntu linux deb package made with checkinstall on Ubuntu 6.06 LTS Desktop newlisp-9.0.0_9.0.0-1_i386.deb".

Regards

Nigel

Lutz

#33
Thanks Nigel, I see packages made from the development releases rather as an exercise to get it right for 9.1.



Also, why is on your checkinstall packages always the version number repeated: newlisp-9.0.0_9.0.0-1_i386.deb should be just newlisp-9.0.0-1_i386.deb.



Lutz

Lutz

#34
It seems the only way to get a package right is to make it on the system it is targeted to and then offer it only for that system. So an UBUNTU package 6.06 should be made on an UBUNTU system 6.06 etc., including observing naming conventions for that distribution, etc.



Judging from the UBUNTU website their current distribution seems to be 6.10, which is what I was trying this  morning (life CD) and got a similar error message for the readline lib you got on 6.06.



The 6.06 they label as a LTS (long term support) release, so may be thats the one we should use, I don't know, any UBUNTU experts on the board?



Lutz

nigelbrown

#35
I'm not an expert but I think you'd have to support both the LTS release, the 6.06 currently, to target web server admins and latest stable desktop, eg 6.10 currently, to target new and updating users. Slightly different groups but both would benefit.



Nigel

nigelbrown

#36
Quote from: "Lutz"why is on your checkinstall packages always the version number repeated: newlisp-9.0.0_9.0.0-1_i386.deb should be just newlisp-9.0.0-1_i386.deb.



Lutz

It's not quite the version number repeated which is how it comes about.

Looking at the checkinstall script the default basename is the 'pwd' returned directory e.g. newlisp-9.0.0 and version 9.0.0 is probably from the makefile. Basically checkinstall default behaviour is to expect the build directory to be the packagename without version info i.e. newlisp.  This can be over-ridden but I just used default behaviour.



Nigel

Dmi

#37
Quote from: "Lutz"The output from: dpkg-buildpackage looks Ok to me.



I installed Dmitry's newlisp_9.0.19_i386.deb on a UBUNTU life CD 6.10 with following results/output:


Unpacking newlisp (from .../newlisp_9.0.19_i386.deb) ...
dpkg: dependency problems prevent configuration of newlisp:
 newlisp depends on libreadline5 (>= 5.2); however:
  Version of libreadline5 on system is 5.1-7build1.
dpkg: error processing newlisp (--install):
 dependency problems - leaving unconfigured
Errors were encountered while processing:
 newlisp
>


libreadline conflict has prevented post-install script to make a symlink /usr/share/newlisp/doc -> /usr/share/doc/newlisp



I'll investigate, how can I fix a libreadline compatibility version number independently of one currently installed. I suspect, this then makes etch and ubuntu packages binary compatible, because none of other libs (but libc) are used.


Quote from: "Lutz"Then I inspected the directories:

......

In /usr/share/doc/newlisp I found the following:


/usr/share/doc/newlisp> ls
changelog.gz       examples           MemoryManagement.html  newlisp-tk.html
CHANGES.gz         FILES.gz           newlisp.1.gz           README.Debian
CodePatterns.html  INSTALL.gz         newLISPdoc.html        syntax-help
COPYING.gz         keywords.txt       newlisp_index.html     TRU64BUILD
copyright          LOCALIZATION       newlisp_manual.html    util
CREDITS.gz         manual_frame.html  newlisp-tk.1


there are many files which do not belong here. The only files here should be those, that the 'make install' would put into /usr/share/newlisp/doc. These files are the following:


newlisp_manual.html
newlisp_index.html
newlisp-tk.html
manual_frame.html
CodePatterns.html


no other files should appear here. newlisp.1 and newlisp-tk.1 files are installed in some man directory. Other files here are directed towards developers. Editor support files are at http://newlisp.org">http://newlisp.org. The editor support files are available on http://newlisp.org">http://newlisp.org.

Hmmm... there is a slight difference between documentation on the newlisp and documentation on the system package, of newlisp.

For the latter, the documents such as
Quotechangelog.gz CHANGES.gz README.Debian INSTALL.gz copyright

are useful and descriptive. For ex., copyright information is suggested by Debian, changelog is a part of each debian package, that holds versioning information, newlisp's CHANGES - is very useful, because most users looks for changes perfectly here...

Also /usr/share/doc/[package]/ is often used to hold additional useful scripts, examples etc.

Directing the users to the site for the editor support files etc. is, probably a good way to rise up a site rating ;-) but is very unuseful for 'no-internet' installations, moreover they are already present in the source tarball :-



Probably the right structure can look like this:
dmi@stone:newlisp$ ls -R
.:
changelog.gz  copyright   docs/      manual         util
CHANGES.gz    CREDITS.gz  examples/  README.Debian

./docs:
INSTALL.gz  LOCALIZATION  MemoryManagement.html  newLISPdoc.html

./examples:
client          link.lsp                     server         udp-client.lsp
finger          newlispdoc.gz                sqlite3.cgi    udp-server.lsp
form.cgi        newLISP-Excel-Import.xls.gz  sqlite.cgi     upload.cgi
form.html       newlisp-log.txt              syntax.cgi.gz  upload.html
httpd-conf.lsp  opengl-demo.lsp.gz           syntax-help    xmlrpc.cgi.gz
index.html      prodcons.lsp                 tcltk.lsp      xmlrpc-server.gz

./manual:
CodePatterns.html  newlisp_index.html   newlisp-tk.html
manual_frame.html  newlisp_manual.html

./util:
keywords.txt  newlisp.jsf.gz  newlisp.vim.gz  sql.c  types.c

and then we can do a symlink
/usr/share/newlisp/doc -> /usr/share/doc/newlisp/manual
WBR, Dmi

Lutz

#38
There are files in the source distribution I do not want to have included in the binary distribution . As written yesterday I will move:



/usr/share/newlisp/doc  to: /usr/share/doc/newlisp



then it is not necessary to link files. I also added newLISPdoc. So we come to the following Scheme:



/usr/share/newlisp> ls
COPYING                 infix.lsp               newlispdoc              stat.lsp
CREDITS                 init.lsp.example        odbc.lsp                syntax.cgi
cgi.lsp                 link.lsp                pop3.lsp                tcltk.lsp
ftp.lsp                 mysql.lsp               postscript.lsp          unix.lsp
gmp.lsp                 mysql5.lsp              smtp.lsp                zlib.lsp
httpd-conf.lsp          newlisp-tk              sqlite3.lsp
/usr/share/newlisp> cd ../doc/newlisp/
/usr/share/doc/newlisp> ls
CodePatterns.html       newLISPdoc.html         newlisp_index.html
manual_frame.html       newlisp-tk.html         newlisp_manual.html
/usr/share/doc/newlisp>


To this only what is absolutely required by UBUNTU should be added. I do not want to have example progams or any other docs in the package. I am not sure what the rules are for the COPYING and CREDITS files. I left them in the main /usr/share/newlisp directory because they are not strictly usage documentation, but if UBUNTU requires them in /usr/share/doc/newlisp we can move them there.



Thanks



Lutz

Lutz

#39
Looking through the "New Maintainer's Guide" for Debian packages it looks like the files COPYING and CREDITS should go into /usr/share/doc/newlisp. A README.Debian made by the packager person should also be included.



README.Debian will not be supplied by 'make install' but will be added to  /usr/share/doc/newlisp by the packageing process.



So as of now we have the following contents after an install with the Debian package:


/usr/share/newlisp> ls
cgi.lsp                 link.lsp                pop3.lsp                tcltk.lsp
ftp.lsp                 mysql.lsp               postscript.lsp          unix.lsp
gmp.lsp                 mysql5.lsp              smtp.lsp                zlib.lsp
httpd-conf.lsp          newlisp-tk              sqlite3.lsp
infix.lsp               newlispdoc              stat.lsp
init.lsp.example        odbc.lsp                syntax.cgi
/usr/share/newlisp> cd ../doc/newlisp/
/usr/share/doc/newlisp> ls
README.Debian
COPYING                 CodePatterns.html       newLISPdoc.html         newlisp_index.html
CREDITS                 manual_frame.html       newlisp-tk.html         newlisp_manual.html
/usr/share/doc/newlisp>


All files with the exception of README.Debian are supplied by 'make install' README.Debian is supplied by the packager



Lutz

Dmi

#40
Thanks, Lutz!



Ok. Accepted. I'll correct all the stuff.



Nevertheless, some notes:



As I can see, all the 'COPYING' and 'CREDITS' files under /usr/share on my debian system are placed under /usr/share/doc, so I suggest you to move them there too.



Also 'changelog' - debian versioning info will be there, because it is a mandatory part of a debian "deb" package system. Unfortunately, it is meaningless at present because each time a new package is builded by a script.



Also I suggest you to include CHANGES, because it is a significant part of documentation for long living projects and there is no other sources of version compatibility information.



Also a README.Debian - a suggested filename for package maintainer's notes - probably will be there (completely rewritten) as a possible comments to rebuilding source package (utf-8 etc.)



Also, I point your attention again, that /usr/share/doc/newlisp is a package documentation in general - not a pure newlisp usage documentation... but if you prefer.... ;-)



Thanks again, I feel we are close to release :-)
WBR, Dmi

Dmi

#41
Quote from: "Lutz"All files with the exception of README.Debian are supplied by 'make install' README.Debian is supplied by the packager

I was too late with previous message :-))



Very cool!
WBR, Dmi

Lutz

#42
Thanks Dmitry,



I will include a newLISP_90_Release_Notes.html file in mayor releases. This file will be handled by 'make install' and go into /usr/share/doc/newlisp too and will inform the user about changes in the new version.


QuoteAlso 'changelog' - debian versioning info will be there


yes, supplied also by packager



Lutz

Dmi

#43
Source and binary packages for debian etch for newlisp 9.0.20 are published and ready for testing.



The only thing different from newlisp's "make install" is copying newlispdoc into /usr/bin - Lutz, what do you think about this?
WBR, Dmi

Lutz

#44
Thanks very much Dmitry, I will try the packages tomorrow on UBUNTU 6.10, and perhaps Nigel can try on 6.06.



About newlispdoc: it will be part of the install in a future version. I still have to: (1) write a man page for it and (2) embed syntax.cgi in it as part of the program, they are small enough to combine them, (3) change the newLISPdoc.html documentation file (4) let the man page and newLISPdoc.html be reviewed/edited by somebody who speaks/writes English better than I do.  I don't think I get to this until February 15th.



So we will not put it 9.1, but it will go into it in a a later version.



Lutz