You are right: the default FreeBSD make does not understand the gnu make 
extensions an therefore is unable to run the soelim stuff.

I think that the only viable solution is to expand by hand the gmake specific 
targets an pattern rules, to obtain a **true** portable Makefile.

IMHO the equation is

more portable makefile == harder to maintain makefile.am

I have to confess that I was aware that my makefile was not bombproof, but 
assumed that if you go the gnu way (autoconf+automake+libtool) you are willing 
to accept the use of gmake instead of a generic portable make.

My error was not considering that the dev environment (in which installing 
gmake makes little difference once you installed the whole autoconf thing) is 
different from the build environment, which should work in a very generic 
setting.

However the recent problems with archlinux show that while building from the 
git repo is safe (but you need the whole autoconf thing installed and to 
./bootstrap the environment), building from the source distro (which should 
require only a generic make plus the compilers and libraries and no 
./bootstrap) is not so safe.

At this point I would like to ask Paul if he prefers a short and simple 
makefile.am (with gnu extensions) or a long, verbose, but portable makefile.am

Of course I’m ready to provide the portable makefile.am if this is the desired 
solution.

Bye, and sorry for having caused this problem.

Stefano

> On 20 Dec 2014, at 15:02, Johan Ström <jo...@stromnet.se 
> <mailto:jo...@stromnet.se>> wrote:
> 
> Hi,
> 
> as evident, busy with work here too.. :)
> 
> Here is the output of the commands, on FreeBSD 10 with standard make:
> 
> # make -C src/man
> Making all in man1
> Making all in man3
> Making all in man5
> Making all in mann
> # 
> # make -C src/man prefix=/tmp/owfs install
> Making install in man1
>  ../../../src/scripts/install/install-sh -c -d '/tmp/owfs/share/man/man1'
>  /usr/bin/install -c -m 644 libowcapi.1 owdir.1 owget.1 owread.1 owwrite.1 
> owpresent.1 ownetapi.1 ownetlib.1 libownet.1 '/tmp/owfs/share/man/man1'
> Making install in man3
>  ../../../src/scripts/install/install-sh -c -d '/tmp/owfs/share/man/man3'
>  /usr/bin/install -c -m 644 DS1427.3 DS1904.3 DS1920.3 DS1971.3 DS1982.3 
> DS1982U.3 DS1985.3 DS1985U.3 DS1986.3 DS1986U.3 DS1990A.3 DS1994.3 DS2404S.3 
> DS2407.3 DS2411.3 DS2417.3 DS2502-E48.3 DS2502-UNW.3 DS2505-UNW.3 
> DS2506-UNW.3 DS2756.3 DS2761.3 DS2762.3 DS2788.3 DS2804.3 EDS0064.3 EDS0065.3 
> EDS0066.3 EDS0067.3 EDS0068.3 EDS0070.3 EDS0071.3 EDS0072.3 EDS0080.3 
> EDS0082.3 EDS0083.3 EDS0085.3 EDS0090.3 MAX31820.3 MAX31826.3 
> '/tmp/owfs/share/man/man3'
>  /usr/bin/install -c -m 644 MAX31850.3 MAX31851.3 OWNet.3 Thermachron.3 UVI.3 
> '/tmp/owfs/share/man/man3'
> Making install in man5
>  ../../../src/scripts/install/install-sh -c -d '/tmp/owfs/share/man/man5'
>  /usr/bin/install -c -m 644 owfs.conf.5 '/tmp/owfs/share/man/man5'
> Making install in mann
>  ../../../src/scripts/install/install-sh -c -d '/tmp/owfs/share/man/mann'
>  /usr/bin/install -c -m 644 ow.n '/tmp/owfs/share/man/mann'
> 
> # ls /tmp/owfs/share/man/*
> /tmp/owfs/share/man/man1:
> libowcapi.1     libownet.1      owdir.1         owget.1         ownetapi.1    
>   ownetlib.1      owpresent.1     owread.1        owwrite.1
> 
> /tmp/owfs/share/man/man3:
> DS1427.3        DS1982.3        DS1986.3        DS2404S.3       DS2502-E48.3  
>   DS2756.3        DS2804.3        EDS0067.3       EDS0072.3       EDS0085.3   
>     MAX31850.3      UVI.3
> DS1904.3        DS1982U.3       DS1986U.3       DS2407.3        DS2502-UNW.3  
>   DS2761.3        EDS0064.3       EDS0068.3       EDS0080.3       EDS0090.3   
>     MAX31851.3
> DS1920.3        DS1985.3        DS1990A.3       DS2411.3        DS2505-UNW.3  
>   DS2762.3        EDS0065.3       EDS0070.3       EDS0082.3       MAX31820.3  
>     OWNet.3
> DS1971.3        DS1985U.3       DS1994.3        DS2417.3        DS2506-UNW.3  
>   DS2788.3        EDS0066.3       EDS0071.3       EDS0083.3       MAX31826.3  
>     Thermachron.3
> 
> /tmp/owfs/share/man/man5:
> owfs.conf.5
> 
> /tmp/owfs/share/man/mann:
> ow.n
> 
> 
> 
> So, a lot of files missing. But it doesn't execute the soelim stuff at all, I 
> guess that is the problem.. :) 
> If I instead use gmake, I get the same output as the one you posted (i.e. all 
> manfiles properly installed).
> 
> In previous version it was totally broken, I think.. It installed a bunch of 
> non-man-pages such as "description.3so.gz" etc.
> 
> For me it is acceptable to just use gmake in the FreeBSD port, and not "waste 
> time" with making it portable.. But the owfs project owners might have a 
> different opinion.
> Thus, for now I'll just change the FreeBSD port to always use gmake, so the 
> port works on older systems (and the FreeBSD build machines stops bugging me 
> about broken port).
> This has been submitted to the ports: 
> https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=196156 
> <https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=196156>
> 
> Johan
> 
> On 12/5/14 12:08 , Stefano Miccoli wrote:
>> Sorry, it was a very busy time for work, no free time for free software…
>> 
>> Please could you run these commands
>> 
>> $ tar xf owfs-2.9p8.tar
>> $ cd owfs-2.9p8
>> $ mkdir build
>> $ cd build
>> $ ../configure
>> $ make -C src/man
>> $ make -C src/man prefix=/tmp/owfs install
>> 
>> and check if the relevant man pages are actually in 
>> /tmp/owfs/share/man/man{1,3,5,n}? Under Linux I find
>> 
>> /tmp/owfs-2.9p8/build$ ls /tmp/owfs/share/man/man1
>> libowcapi.1  owdir.1   owget.1    ownet.1     owpresent.1  owshell.1
>> libownet.1   owfs.1    owhttpd.1  ownetapi.1  owread.1     owtap.1
>> owcapi.1     owftpd.1  owmon.1    ownetlib.1  owserver.1   owwrite.1
>> /tmp/owfs-2.9p8/build$ ls /tmp/owfs/share/man/man3 
>> DS1427.3   DS1986.3   DS2411.3      DS2506-UNW.3  DS28EA00.3  LCD.3
>> DS1821.3   DS1986U.3  DS2413.3      DS2506.3      DS28EC20.3  MAX31820.3
>> DS1822.3   DS1990A.3  DS2415.3      DS2720.3      EDS.3       MAX31826.3
>> DS1825.3   DS1991.3   DS2417.3      DS2740.3      EDS0064.3   MAX31850.3
>> DS18B20.3  DS1992.3   DS2423.3      DS2751.3      EDS0065.3   MAX31851.3
>> DS18S20.3  DS1993.3   DS2430A.3     DS2755.3      EDS0066.3   OWNet.3
>> DS1904.3   DS1994.3   DS2431.3      DS2756.3      EDS0067.3   Thermachron.3
>> DS1920.3   DS1995.3   DS2433.3      DS2760.3      EDS0068.3   UVI.3
>> DS1921.3   DS1996.3   DS2436.3      DS2761.3      EDS0070.3   mAM001.3
>> DS1963L.3  DS2401.3   DS2437.3      DS2762.3      EDS0071.3   mCM001.3
>> DS1963S.3  DS2404.3   DS2438.3      DS2770.3      EDS0072.3   mDI001.3
>> DS1971.3   DS2404S.3  DS2450.3      DS2780.3      EDS0080.3   mRS001.3
>> DS1977.3   DS2405.3   DS2502-E48.3  DS2781.3      EDS0082.3   owperl.3
>> DS1982.3   DS2406.3   DS2502-UNW.3  DS2788.3      EDS0083.3
>> DS1982U.3  DS2407.3   DS2502.3      DS2804.3      EDS0085.3
>> DS1985.3   DS2408.3   DS2505-UNW.3  DS2890.3      EDS0090.3
>> DS1985U.3  DS2409.3   DS2505.3      DS28E04.3     EEEF.3
>> /tmp/owfs-2.9p8/build$ ls /tmp/owfs/share/man/man5
>> owfs.5  owfs.conf.5
>> /tmp/owfs-2.9p8/build$ ls /tmp/owfs/share/man/mann
>> ow.n  owtcl.n
>> 
>> In https://gist.github.com/anonymous/ac9b425c5ffc4cc39596 
>> <https://gist.github.com/anonymous/ac9b425c5ffc4cc39596> you will find a 
>> typescript of what happens under Debian 7.7 GNU-Linux when I run those 
>> commands. Please feel free to post your output on gist and I will check 
>> what's wrong.
>> 
>> Stefano
>> 
>> 
>> PS:
>> 
>> as what regards patching for a portable make: unfortunately there is no easy 
>> solution, unless a very verbose (and difficult to maintain Makefile.ac) is 
>> written. I'm in favour of *explicit* Makefile.am files, in which every file 
>> is listed, but not to repetition.
>> 
>> The actual snippet:
>> 
>> ## man sources
>> MANFILES = \
>>     owcapi.man ...
>> 
>> man1_MANS = $(addsuffix .1,$(basename $(MANFILES)))
>> 
>> to be portable should be written as
>> 
>> ## man sources
>> MANFILES = \
>>     owcapi.man owfs.man ...
>> 
>> man1_MANS = owcapi.1 owfs.1 ...
>> 
>> Since there are 120 man files, keeping the MANFILES and man1_MANS man1_MANS  
>> man3_MANS  man5_MANS  mann_MANS targets consistent is an error prone task. I 
>> understand that this could be obtained by a shell script, but even this is 
>> not possible in a truly portable makefile.
>> 
>> PPS:
>> 
>> The old makefile for man pages was based on a non portable shell script that 
>> was disabled under BSD and OSX, so please check if in previous versions the 
>> missing files were present.
>> 
>> 

------------------------------------------------------------------------------
Download BIRT iHub F-Type - The Free Enterprise-Grade BIRT Server
from Actuate! Instantly Supercharge Your Business Reports and Dashboards
with Interactivity, Sharing, Native Excel Exports, App Integration & more
Get technology previously reserved for billion-dollar corporations, FREE
http://pubads.g.doubleclick.net/gampad/clk?id=164703151&iu=/4140/ostg.clktrk
_______________________________________________
Owfs-developers mailing list
Owfs-developers@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/owfs-developers

Reply via email to