Re: [Harbour] Re: To Viktor about openSuse rpm

2010-01-04 Thread Viktor Szakáts
 so it is controlled by some heuristics mechanism, i couldn't quickly 
 find where this is. i suppose it has to do with known sysloc paths. 
 building the deb n stuff it looks like:
 
 ! HB_BIN_INSTALL: /usr/bin
 ! HB_LIB_INSTALL: /usr/lib/harbour
 ! HB_INC_INSTALL: /usr/include/harbour
 ! HB_DOC_INSTALL: /usr/share/doc/harbour
 ! HB_INSTALL_PREFIX automatically set to: /usr/local
 
 this might be it. install locations are explicitly set, but setting 
 install_prefix doesn't take these into account, and is also set to a 
 non-system loc, which in turn somehow controls dyn builds.
 
 it is generally not acceptable to ship packages like this. especially 
 if there is a shared lib, then it shall be used by applications.

Good point.

I think the above is wrong because it tries to override 
make system, while it simply should set HB_INSTALL_PREFIX 
to /usr and let it set the rest automatically. In case 
there is a problem with these settings it should be 
fixed in global.mk.

Or HB_DYN_INSTALL should be also set. Should be checked 
why HB_INSTALL_PREFIX is used behind the scenes directly.

 management, network management, dbf drivers, full stop). should the 
 compiler and headers, and contrib/rddads be installed in this case? 
 hardly.
 
 Well, standalone apps built using Harbour and part 
 of Harbour package can be like that (like hbrun), 
 but I think this projects primary goal is to build 
 a compiler, and even hbrun may need .ch header and 
 even such dbf server is most likely to have a client 
 side, which will in turn need the compiler.
 
 What you describe fits the 'harbour-tool' category, 
 which is fine.
 
 So to reiterate, maybe a harbour-dynlibs package, 
 and a harbour-staticlibs package are justified, but 
 
 this to me feels like breaking the principle of least surprise. what 
 is in harbour-dynlibs would be called libharbour-dev by convention 
 (watch me cheat, it would be called harbour-devel in rpm-land :), but 
 the principle of separation still is the same); similarly, 
 harbour-statislibs would be harbour-dev; although i agree that the 
 fact that there is a runtime and also a compiler is provided by hb 
 makes this a little special.

Please note that I used these names just like as 
an indication of their content, not as final names, final 
names should be whatever they be, and I'm not interested 
in the details too much to be honest, there are much 
better candidates to decide on that :) (to me it's total 
mess: see. harbour-dev vs harbour-devel to start with :/)

 maybe so that libharbour has the shared objects, libharbour-dev has 
 the static archives and the headers. are ch needed when only using an 
 app linked against libharbour? if yes, and for example hbrun needs 

.ch are needed by harbour, hbrun and hbmk2.

 that, tools can be made to depend on -dev.
 
 harbour would then have the compiler, pp and the rest of the gang.
 
 libhb is the base of all stuff. hbrun pulls libhb-dev, harbour pulls 
 in hbrun (and lets hbrun implicitly pull libhb-dev).
 
 what existing package might be similar to this that could be studied 
 for some inspiration? i can't really think of any now.

I had python and ruby in mind, but I can't guarantee 
they are similar enough, for sure their 'contrib' 
solution is worth to see, I'm not sure about the core.

 Since they are meant as separate entities, we 
 should have the option to untie they versioning 
 from core anytime. Until they live inside the 
 same repository, we should sync their version to 
 core.
 
 it just dawned on me that there also is hbide, which for the moment 
 lives in contrib yes, but is shortly (for an arbitrary definition of 
 short) is expected to enter core, so i think we also should take a 
 harbour-ide package into consideration right at the beginning.
 
 i'd rather prefer it not be made part of dev.

I think such things should be always packaged separately, 
they may have pretty large requirements, and there is no 
point in forcing anyone to install qt libs just to use 
Harbour. Same goes for anything else executable which 
currently resides in contrib or examples, like hbnetiosrv.

As a general rule of thumb I wouldn't add fat to core 
unless absolutely necessary, but rather grow a vivid 
circle of addons as separate packages.

Also notice that current GNU make system doesn't support 
building of executable in the contrib area. Maybe it 
would work, but I certainly haven't tried it, and I bet 
it would need some polishing here and there.

I have also the notion to move out all contribs from 
GNU Make territory and make them build with hbmk2. 
This would nicely solve the dynlib creation problem, 
plus few other ones (more lose integration with core, 
easily detachable, good test bed for hbmk2, etc). 
This system is already implemented for the /examples 
tree.

 As for the expected _set of content_, I agree we should have 
 a standard defined, and it's defined well already.
 It's roughly everything inside /src except compiler. We 

Re: [Harbour] Re: To Viktor about openSuse rpm

2010-01-03 Thread francesco perillo
I will start over later today.

I want just to say that I did not use HB_*_INSTALL overrides when
building rpm...

It is true that I used HB_*_INSTAL in a previous make; make install
style compilation that I used to check which files were compiled but
it was in another terminal session

The RPMs created are:
harbour-2.0.1-devsus112.i586.rpm
harbour-allegro-2.0.1-devsus112.i586.rpm
harbour-cairo-2.0.1-devsus112.i586.rpm
harbour-contrib-2.0.1-devsus112.i586.rpm
harbour-curl-2.0.1-devsus112.i586.rpm
harbour-firebird-2.0.1-devsus112.i586.rpm
harbour-gd-2.0.1-devsus112.i586.rpm
harbour-lib-2.0.1-devsus112.i586.rpm
harbour-mysql-2.0.1-devsus112.i586.rpm
harbour-odbc-2.0.1-devsus112.i586.rpm
harbour-pgsql-2.0.1-devsus112.i586.rpm
harbour-qt-2.0.1-devsus112.i586.rpm
harbour-static-2.0.1-devsus112.i586.rpm


harbour-lib contains the .so libraries
harbour-static contains the .a libraries

It seems that some .a libraries (like hbcplr.a) are needed also for
linking the .so libraries I don't know if this is an Harbour
requirement or hbmk2 requirement

Francesco
___
Harbour mailing list (attachment size limit: 40KB)
Harbour@harbour-project.org
http://lists.harbour-project.org/mailman/listinfo/harbour


Re: [Harbour] Re: To Viktor about openSuse rpm

2010-01-03 Thread Viktor Szakáts
Hi,

 I will start over later today.
 
 I want just to say that I did not use HB_*_INSTALL overrides when
 building rpm...
 
 It is true that I used HB_*_INSTAL in a previous make; make install
 style compilation that I used to check which files were compiled but
 it was in another terminal session

Okay, thank you.

 The RPMs created are:
 harbour-2.0.1-devsus112.i586.rpm
 harbour-allegro-2.0.1-devsus112.i586.rpm
 harbour-cairo-2.0.1-devsus112.i586.rpm
 harbour-contrib-2.0.1-devsus112.i586.rpm
 harbour-curl-2.0.1-devsus112.i586.rpm
 harbour-firebird-2.0.1-devsus112.i586.rpm
 harbour-gd-2.0.1-devsus112.i586.rpm
 harbour-lib-2.0.1-devsus112.i586.rpm
 harbour-mysql-2.0.1-devsus112.i586.rpm
 harbour-odbc-2.0.1-devsus112.i586.rpm
 harbour-pgsql-2.0.1-devsus112.i586.rpm
 harbour-qt-2.0.1-devsus112.i586.rpm
 harbour-static-2.0.1-devsus112.i586.rpm

 harbour-lib contains the .so libraries
 harbour-static contains the .a libraries

To me this practice looks rather strange.
Unless there is good reason to split Harbour 
core into main/lib/static packages, IMO they 
should be packaged together. I don't why it 
was implemented this way, and I hope someone 
will clarify.

 It seems that some .a libraries (like hbcplr.a) are needed also for
 linking the .so libraries I don't know if this is an Harbour
 requirement or hbmk2 requirement

hbmk2 has no extra requirements over Harbour. 
Its only job is to serve Harbour requirements 
as is. You're right that hbcplr.a may be required 
even when .so is used. This is normal, as the 
compiler (hbcplr) is licensed differently, and not 
part of .so.

This means that to build certain tools (like 
hbrun, hbmk2 itself), both static and dynamic 
libs should be installed.

Brgds,
Viktor

___
Harbour mailing list (attachment size limit: 40KB)
Harbour@harbour-project.org
http://lists.harbour-project.org/mailman/listinfo/harbour


Re: [Harbour] Re: To Viktor about openSuse rpm

2010-01-03 Thread Tamas TEVESZ
On Sun, 3 Jan 2010, francesco perillo wrote:

  harbour-static contains the .a libraries

doesn't suse name these kinds of packages -devel, like any 
rpm system with good manners does?

-- 
[-]

mkdir /nonexistent
___
Harbour mailing list (attachment size limit: 40KB)
Harbour@harbour-project.org
http://lists.harbour-project.org/mailman/listinfo/harbour


Re: [Harbour] Re: To Viktor about openSuse rpm

2010-01-03 Thread francesco perillo
On Sun, Jan 3, 2010 at 11:20 AM, Tamas TEVESZ i...@extreme.hu wrote:
 On Sun, 3 Jan 2010, francesco perillo wrote:

   harbour-static contains the .a libraries

 doesn't suse name these kinds of packages -devel, like any
 rpm system with good manners does?

Well, I will check with other compiler packages
___
Harbour mailing list (attachment size limit: 40KB)
Harbour@harbour-project.org
http://lists.harbour-project.org/mailman/listinfo/harbour


Re: [Harbour] Re: To Viktor about openSuse rpm

2010-01-03 Thread Tamas TEVESZ
On Sun, 3 Jan 2010, francesco perillo wrote:

  On Sun, Jan 3, 2010 at 11:20 AM, Tamas TEVESZ i...@extreme.hu wrote:
   On Sun, 3 Jan 2010, francesco perillo wrote:
  
     harbour-static contains the .a libraries
  
   doesn't suse name these kinds of packages -devel, like any
   rpm system with good manners does?
  
  Well, I will check with other compiler packages

you should be checking the library packages instead.

-static means a completely different thing.

-- 
[-]

mkdir /nonexistent
___
Harbour mailing list (attachment size limit: 40KB)
Harbour@harbour-project.org
http://lists.harbour-project.org/mailman/listinfo/harbour


Re: [Harbour] Re: To Viktor about openSuse rpm

2010-01-03 Thread francesco perillo
-devel packages include files that permit to extend core functionalities...
python-devel: Include Files and Libraries Mandatory for Building Python Modules

I don't agree to have a harbour-devel.. .gcc doesn't have a -devel...
it has a compiler package taht includes almost everything...

From what I understand, harbour-lib MUST be installed on all systems
that must run shared compiled Harbour programs.

core and static are instead for programmers-only... I'd merge
these two because static is required anyway if you compile a shared
library !

Francesco
___
Harbour mailing list (attachment size limit: 40KB)
Harbour@harbour-project.org
http://lists.harbour-project.org/mailman/listinfo/harbour


Re: [Harbour] Re: To Viktor about openSuse rpm

2010-01-03 Thread Viktor Szakáts
 From what I understand, harbour-lib MUST be installed on all systems
 that must run shared compiled Harbour programs.
 
 core and static are instead for programmers-only... I'd merge
 these two because static is required anyway if you compile a shared
 library !

I agree to merge.

hbmk2 indeed refers to static hbcplr even when not strictly 
required to build the app, it's simply present in lib list.
This is required to present similar behavior in both static 
and dynamic hbmk2 build modes.

Brgds,
Viktor

___
Harbour mailing list (attachment size limit: 40KB)
Harbour@harbour-project.org
http://lists.harbour-project.org/mailman/listinfo/harbour


Re: [Harbour] Re: To Viktor about openSuse rpm

2010-01-03 Thread Tamas TEVESZ
On Sun, 3 Jan 2010, francesco perillo wrote:

francesco,

honestly this is not intended as an offence, far be from it, but there 
are established standards and policies for packaging, which you are 
not to reinvent, override or outsmart, but to follow.

opensuse has some nice documentation on packaging at 
http://en.opensuse.org/Packaging, especially for the currently 
relevant topic of libraries at 
http://en.opensuse.org/Packaging/Shared_Library_Packaging_Policy

note it says packaging policy, not packaging suggestions.

proper packaging is much more complicated and tricky business than 
most of you can even begin to imagine, and it most certainly isn't 
just lets shovel a metric shitload of files into an rpm (or deb, or 
anything else, for that matter) container and call it a day.

as things stand now, as far as i can tell (this is a long shot, and a 
premature statement from my side, but hey) the upstream build system 
and upstream procedures aren't even able to support proper packaging.

again, do not take this the wrong way, but it really is a much more 
complicated matter than most of you seem to think.

-- 
[-]

mkdir /nonexistent
___
Harbour mailing list (attachment size limit: 40KB)
Harbour@harbour-project.org
http://lists.harbour-project.org/mailman/listinfo/harbour


Re: [Harbour] Re: To Viktor about openSuse rpm

2010-01-03 Thread Viktor Szakáts
 note it says packaging policy, not packaging suggestions.
 
 proper packaging is much more complicated and tricky business than 
 most of you can even begin to imagine, and it most certainly isn't 
 just lets shovel a metric shitload of files into an rpm (or deb, or 
 anything else, for that matter) container and call it a day.

I have a pending commit, which merges core + lib + static 
rpms into one. Is this okay?

We can rename it to anything, although I have to wonder about 
these policies... This policy is OpenSUSE specific. Now if each 
distro has its own policy (and why not, I bet they have), we 
will have some fun waste of time trying to satisfy all of them.

I'm naiv, but I'd think there must exist some RPM / DEB level 
policies which are idealistically in sync with downstream 
distro policies. If there are such policies, first we should 
try to stick to them.

So to sum it up, I propose these priorities when it comes to 
cleanup up our RPM / DEB support:

1. general *nix policies (SUS)
2. general Linux policies (LSB)
3. RPM / DEB packaging level policies
4. distro specific policies

Some contradictions are expected, f.e. LSB doesn't support 
DEB, anyway it's no question we must support it.

 as things stand now, as far as i can tell (this is a long shot, and a 
 premature statement from my side, but hey) the upstream build system 
 and upstream procedures aren't even able to support proper packaging.

What is exactly missing?

Watching the chaos and total _enduser_ unfriendliness 
in the Linux world, I'm a little bit worried now about the 
price to pay to become part of this system. For a start, 
Linux was unable to reach a common packaging method in 
15 years. (No wonder it doesn't catch up on the desktop)
Seems we will be forced to use some tools which will try 
to pull us to become Linux specific, instead of being 
portable/multiplatform. We should try to avoid this.

Worst case we can maintain patches which implement these 
whatever requirements of each distribution we may want to 
support.

Brgds,
Viktor

___
Harbour mailing list (attachment size limit: 40KB)
Harbour@harbour-project.org
http://lists.harbour-project.org/mailman/listinfo/harbour


Re: [Harbour] Re: To Viktor about openSuse rpm

2010-01-03 Thread francesco perillo
Hi Tamas,
I'm not offended since I'm not the original author of the .spec
files... I just wanted to help build the RPMs on Suse (both openSuse
and SLE[D|S]) since I have several running systems at work and at home
that I can use to do such builds.

I was trying to understand how these builds worked and found some
inconsistencies... and I reported them...

 opensuse has some nice documentation on packaging at
 http://en.opensuse.org/Packaging, especially for the currently
 relevant topic of libraries at
 http://en.opensuse.org/Packaging/Shared_Library_Packaging_Policy

I will read them later... but I miss some infos on Harbour internals,
libraries and dependencies I can't help too much...


Francesco
___
Harbour mailing list (attachment size limit: 40KB)
Harbour@harbour-project.org
http://lists.harbour-project.org/mailman/listinfo/harbour


Re: [Harbour] Re: To Viktor about openSuse rpm

2010-01-03 Thread Tamas TEVESZ
On Sun, 3 Jan 2010, Viktor Szakáts wrote:

most things below are just scratching the problem-surface, and 
definitely need more eyes.

  I have a pending commit, which merges core + lib + static 
  rpms into one. Is this okay?

definitely not.

i think that the proper splitting is something very close to this (as 
i'm primarily familiar with deb, that's what i base the following 
upon, but the general principle applies with most every distro, and to 
some extent ports, pkgsrc, and whatever other packaging method there 
is):

harbour-utils - hbrun, maybe hbtest
libharbour$shlib_version - libharbour{mt,}.so.x.y.z
libharbour-dev - *.h, *.api, libharbour{mt,}.so (symlink to .x.y.z)
harbour - harbour, hbmk2, *.ch, other stuff that are directly used 
  when compiling prg to native code
harbour-doc - stuff in doc/
libharbour-foo - a foo component with the foo.so.x.y.z
libharbour-foo-dev - headers for this foo.so.x.y.z, and foo.so (link 
  to foo.so.x.y.z)

of course with carefully crafted dependencies between these, where 
internal dependencies between tools and stuff may further change the 
scene.

as you can see, there is a lot of the above that is not there in the 
build system.

the first problem is a consistent shared library versioning policy. 
currently the so version is stuck to the harbour version number, which 
is suboptimal. it has had the same version number for quite some time, 
with api and maybe abi changes too, this is bad karma. there needs to 
be a procedure stating if you change abi in an incompatible way, bump 
major; if you change abi in a compatible way, bump minor; if unsure, 
bump, or something along these lines.

this is a strict prerequisite for any libharbour package, which in 
turn is a strict prerequisite for (other, 3rd party) stuff written in 
harbour entering any distro (which i suppose is an implicit goal, 
otherwise there's no point in harbour itself entering any distro).

this only covers libharbour, and does not even begin to scratch the 
stuff that is currently only shipped in static archives. it seems to 
be customary not to make shared versions of these; i haven't yet 
figured out whether this is good or bad (i can reason either case, 
though :).

yes, this detaches libharbour version from the actual harbour version, 
but it also makes it possible (with some extra tweaks i s'pose) to 
have several libharbour versions installed, which is good for example 
if there is a harbour-2.0 package with the release version, and a 
harbour-be (for bleeding edge) version updated regularly, thus 
making it possible for a developer (harbour user, who develops in 
harbour, but who does not develop harbour) to have a stable 
development environment as well as be able to test new features, 
follow new features (maybe in a separate branch in her application), 
and also report bugs with the development version of harbour.

libharbour also needs some baseline functionality. what this means is 
that no matter where, on what system, in what environment, etc etc, is 
a libharbour.so.x.y.z is generated, any other libharbour.so with the 
same x.y.z version generated on any other system in any other 
environment need to have at least a well-defined common ground (call 
it core functionality), ideally be the same. what this actually 
means is up for definition (eg. what rdds, what gts, etc etc).

optional (everything the above does not cover) is to be supplied in 
separate {libraries, archives, ...} maybe by libharbour dlopening them 
on demand, or whatever.

consider this: i have application `foobar', it uses 
libharbour-4.3.11, and it crashes when i look to the left. the 
backtrace says `system has been recalled'. currently basically 
there's no way to tell what actually *is* in libharbour-4.3.11, making 
debugging in email (which *will* happen, when we're there) nigh 
impossible. mix and match this with the currently non-existing 
consistent shlib versions, and it quickly translates to hm, 
libharbour-4.3.11. we have absolutely no idea what it might be.

then there's the question of packaging the contrib stuff, possibly 
creating packages that support cross-compiling (the picture starts to 
get blurry now -- see, you don't, for example, package gtwvw for a 
native package, but you do for a cross-compile environment).

then there's the question of (again) packaging the contrib stuff - do 
we want a separate package for each (i can reason pro and con against 
either), or do we want to group them by some attributes (i can reason 
pro and con against either) (though my preference is this latter), ...

at this point i literally got tired of citing the issues, as in i 
really need a coffee, but i'm pretty much certain that by now everyone 
sees that it is _rather a complicated issue_.

  We can rename it to anything, although I have to wonder about 
  these policies... This policy is OpenSUSE specific. Now if each 
  distro has its own policy (and why not, I bet they have), we 
  will have some fun waste 

Re: [Harbour] Re: To Viktor about openSuse rpm

2010-01-03 Thread Viktor Szakáts
 definitely not.
 
 i think that the proper splitting is something very close to this (as 
 i'm primarily familiar with deb, that's what i base the following 
 upon, but the general principle applies with most every distro, and to 
 some extent ports, pkgsrc, and whatever other packaging method there 
 is):
 
 harbour-utils - hbrun, maybe hbtest
 libharbour$shlib_version - libharbour{mt,}.so.x.y.z
 libharbour-dev - *.h, *.api, libharbour{mt,}.so (symlink to .x.y.z)
 harbour - harbour, hbmk2, *.ch, other stuff that are directly used 
  when compiling prg to native code
 harbour-doc - stuff in doc/
 libharbour-foo - a foo component with the foo.so.x.y.z
 libharbour-foo-dev - headers for this foo.so.x.y.z, and foo.so (link 
  to foo.so.x.y.z)

What is the point of having 'harbour' package, when 
nothing useful can be done with it? In any case, hbmk2 
needs to be moved to utils since it requires libs to 
work.

Then what is the point of having hbrun without dynamic 
libs, when hbrun is built as shared binary in certain 
situations, so it cannot work without Harbour dynamic 
lib also.

I think the ultimate difference between Harbour and 
regular 'lib' packages, is that in Harbour there is 
not much point in having a dev packages, as development 
consists of building final apps in 99.99% of cases, 
and not building something else with the help of Harbour 
headers.

harbour compiler executable can do very little thing 
by itself, as far as real-life usage goes.

Here comes to mind, that maybe we should also list 
C compiler tools as dependency, because without C 
compiler, Harbour is again unusable.

 of course with carefully crafted dependencies between these, where 
 internal dependencies between tools and stuff may further change the 
 scene.
 
 as you can see, there is a lot of the above that is not there in the 
 build system.
 
 the first problem is a consistent shared library versioning policy. 
 currently the so version is stuck to the harbour version number, which 
 is suboptimal. it has had the same version number for quite some time, 
 with api and maybe abi changes too, this is bad karma. there needs to 

We've been in development stage. Version in increased 
by each major release, and we promise to keep compatibility 
between minor releases only. Emphasis on _release_. Current 
SVN, beta, or rc isn't a release.

 be a procedure stating if you change abi in an incompatible way, bump 
 major; if you change abi in a compatible way, bump minor; if unsure, 
 bump, or something along these lines.

We have that, see above.

 this only covers libharbour, and does not even begin to scratch the 
 stuff that is currently only shipped in static archives. it seems to 
 be customary not to make shared versions of these; i haven't yet 
 figured out whether this is good or bad (i can reason either case, 
 though :).

Yes, shared lib creation for contribs is not implemented 
(yet?).

 yes, this detaches libharbour version from the actual harbour version, 
 but it also makes it possible (with some extra tweaks i s'pose) to 
 have several libharbour versions installed, which is good for example 
 if there is a harbour-2.0 package with the release version, and a 
 harbour-be (for bleeding edge) version updated regularly, thus 
 making it possible for a developer (harbour user, who develops in 
 harbour, but who does not develop harbour) to have a stable 
 development environment as well as be able to test new features, 
 follow new features (maybe in a separate branch in her application), 
 and also report bugs with the development version of harbour.

This is only possible in pure dynamic world I guess.

 libharbour also needs some baseline functionality. what this means is 
 that no matter where, on what system, in what environment, etc etc, is 
 a libharbour.so.x.y.z is generated, any other libharbour.so with the 
 same x.y.z version generated on any other system in any other 
 environment need to have at least a well-defined common ground (call 
 it core functionality), ideally be the same. what this actually 
 means is up for definition (eg. what rdds, what gts, etc etc).

I'd personally define get Harbour lib version as the only 
core functionality which we promise to be compatible across 
all version. I don't see a point in limiting ourselves, as it 
would just effectively halt development and force us to 
concentrate on nothing else, but compatibility.

As for the expected _set of content_, I agree we should have 
a standard defined, and it's defined well already.
It's roughly everything inside /src except compiler. We call 
this Harbour core. [ The only place this can be violated 
is an extra undocumented build option to mash together core 
dynamic lib with contribs libs, something I've been arguing 
against recently. ]

Above this are contribs, which are independent of each 
other and independent of core, utilizing official Harbour 
APIs only, plus they may have extra external dependencies.

 optional 

Re: [Harbour] Re: To Viktor about openSuse rpm

2010-01-03 Thread Tamas TEVESZ
On Sun, 3 Jan 2010, Viktor Szakáts wrote:

   harbour-utils - hbrun, maybe hbtest
   libharbour$shlib_version - libharbour{mt,}.so.x.y.z
   libharbour-dev - *.h, *.api, libharbour{mt,}.so (symlink to .x.y.z)
   harbour - harbour, hbmk2, *.ch, other stuff that are directly used 
when compiling prg to native code
   harbour-doc - stuff in doc/
   libharbour-foo - a foo component with the foo.so.x.y.z
   libharbour-foo-dev - headers for this foo.so.x.y.z, and foo.so (link 
to foo.so.x.y.z)
  
  What is the point of having 'harbour' package, when 
  nothing useful can be done with it? In any case, hbmk2 
  needs to be moved to utils since it requires libs to 
  work.

naturally there are dependencies between them, also external deps as 
needed.

  Then what is the point of having hbrun without dynamic 
  libs, when hbrun is built as shared binary in certain 
  situations, so it cannot work without Harbour dynamic 
  lib also.

i might be misunderstanding something, but this seems to be untrue. i 
have a hbrun binary that (to a certain extent) chugs along nicely, 
without any trace of a dynamic libharbour (or anything else harbour) 
being around anywhere.

  I think the ultimate difference between Harbour and 
  regular 'lib' packages, is that in Harbour there is 
  not much point in having a dev packages, as development 
  consists of building final apps in 99.99% of cases, 
  and not building something else with the help of Harbour 
  headers.

hbrun's script interpreter mode is the prime example of the contrary. 
also imagine przemek coming up with (arbitrary example) an ads-like 
dbf server, which relies on and only relies on libhb (file 
management, network management, dbf drivers, full stop). should the 
compiler and headers, and contrib/rddads be installed in this case? 
hardly.

  harbour compiler executable can do very little thing 
  by itself, as far as real-life usage goes.
  
  Here comes to mind, that maybe we should also list 
  C compiler tools as dependency, because without C 
  compiler, Harbour is again unusable.

yes, of course. i deliberately didn't go into such details for fear of 
being lost in them.

   the first problem is a consistent shared library versioning policy. 
   currently the so version is stuck to the harbour version number, which 
   is suboptimal. it has had the same version number for quite some time, 
   with api and maybe abi changes too, this is bad karma. there needs to 
  
  We've been in development stage. Version in increased 
  by each major release, and we promise to keep compatibility 
  between minor releases only. Emphasis on _release_. Current 
  SVN, beta, or rc isn't a release.

ok, i accept that. i still think that bumping as changes go would be 
better, but i accept that.

   this only covers libharbour, and does not even begin to scratch the 
   stuff that is currently only shipped in static archives. it seems to 
   be customary not to make shared versions of these; i haven't yet 
   figured out whether this is good or bad (i can reason either case, 
   though :).
  
  Yes, shared lib creation for contribs is not implemented 
  (yet?).

i feel they also should be, but this also raises libver questions. do 
they live a separate life, or do we go with one and only one version 
for the whole shebang?

   have several libharbour versions installed, which is good for example 
   if there is a harbour-2.0 package with the release version, and a 
   harbour-be (for bleeding edge) version updated regularly, thus 
   making it possible for a developer (harbour user, who develops in 
   harbour, but who does not develop harbour) to have a stable 
   development environment as well as be able to test new features, 
   follow new features (maybe in a separate branch in her application), 
   and also report bugs with the development version of harbour.
  
  This is only possible in pure dynamic world I guess.

certainly. in a static world, none of this thread applies at all. in 
that case, any harbour package is only used by a developer 
(application developer writing prg code, producing executables that 
only (dyn)link against stuff outside harbour), thus making the whole 
proper package idea moot at best, as any package becomes just a 
convenience container, for which the current setup is ok. won't ever 
enter any distro, but if no end-user is ever to use it, then it 
doesn't matter either.

   libharbour also needs some baseline functionality. what this means is 
   that no matter where, on what system, in what environment, etc etc, is 
   a libharbour.so.x.y.z is generated, any other libharbour.so with the 
   same x.y.z version generated on any other system in any other 
   environment need to have at least a well-defined common ground (call 
   it core functionality), ideally be the same. what this actually 
   means is up for definition (eg. what rdds, what gts, etc etc).
  
  I'd personally define get Harbour lib version as the only 
  core 

Re: [Harbour] Re: To Viktor about openSuse rpm

2010-01-03 Thread Viktor Szakáts
 What is the point of having 'harbour' package, when 
 nothing useful can be done with it? In any case, hbmk2 
 needs to be moved to utils since it requires libs to 
 work.
 
 naturally there are dependencies between them, also external deps as 
 needed.
 
 Then what is the point of having hbrun without dynamic 
 libs, when hbrun is built as shared binary in certain 
 situations, so it cannot work without Harbour dynamic 
 lib also.
 
 i might be misunderstanding something, but this seems to be untrue. i 
 have a hbrun binary that (to a certain extent) chugs along nicely, 
 without any trace of a dynamic libharbour (or anything else harbour) 
 being around anywhere.

It depends on the setup. For cases where Harbour 
is built to be installed in system locations, 
the binaries are built against the shared lib.

 I think the ultimate difference between Harbour and 
 regular 'lib' packages, is that in Harbour there is 
 not much point in having a dev packages, as development 
 consists of building final apps in 99.99% of cases, 
 and not building something else with the help of Harbour 
 headers.
 
 hbrun's script interpreter mode is the prime example of the contrary. 
 also imagine przemek coming up with (arbitrary example) an ads-like 
 dbf server, which relies on and only relies on libhb (file 

That's true, although hbrun is _not_ part of the 
default core package we're talking about. hbrun 
however, requires shared lib.

 management, network management, dbf drivers, full stop). should the 
 compiler and headers, and contrib/rddads be installed in this case? 
 hardly.

Well, standalone apps built using Harbour and part 
of Harbour package can be like that (like hbrun), 
but I think this projects primary goal is to build 
a compiler, and even hbrun may need .ch header and 
even such dbf server is most likely to have a client 
side, which will in turn need the compiler.

What you describe fits the 'harbour-tool' category, 
which is fine.

So to reiterate, maybe a harbour-dynlibs package, 
and a harbour-staticlibs package are justified, but 
only as long as these are always pulled by harbour-core 
package. harbour-tools package would only pull 
harbour-dynlibs.

 this only covers libharbour, and does not even begin to scratch the 
 stuff that is currently only shipped in static archives. it seems to 
 be customary not to make shared versions of these; i haven't yet 
 figured out whether this is good or bad (i can reason either case, 
 though :).
 
 Yes, shared lib creation for contribs is not implemented 
 (yet?).
 
 i feel they also should be, but this also raises libver questions. do 
 they live a separate life, or do we go with one and only one version 
 for the whole shebang?

Since they are meant as separate entities, we 
should have the option to untie they versioning 
from core anytime. Until they live inside the 
same repository, we should sync their version to 
core.

 libharbour also needs some baseline functionality. what this means is 
 that no matter where, on what system, in what environment, etc etc, is 
 a libharbour.so.x.y.z is generated, any other libharbour.so with the 
 same x.y.z version generated on any other system in any other 
 environment need to have at least a well-defined common ground (call 
 it core functionality), ideally be the same. what this actually 
 means is up for definition (eg. what rdds, what gts, etc etc).
 
 I'd personally define get Harbour lib version as the only 
 core functionality which we promise to be compatible across 
 all version. I don't see a point in limiting ourselves, as it 
 
 no, no. i'm not talking versions, i'm talking instances. both you 
 and i have r13450 sources. you build on your system, i build on mine.
 can you be sure we have a libharbour.so with the exact same 
 functionality? no, you can't.

The only thing we can guarantee is that 2.0.0 (release) will 
be compatible with 2.0.2 (release), but we don't guarantee 
that 3.0.0 will be compatible with any of them.

Revision-level compatibility isn't achievable, and it would 
be insane to pursue such goal. It's simply unmanageable.

 btw, is this api or abi compatibility that is promised?

Ideally both.

 would just effectively halt development and force us to 
 concentrate on nothing else, but compatibility.
 
 i fail to see why, but let's not get lost in this detail. i'll just 
 accept your point.

That would mean every SVN revision is a final release. 
Who would guarantee this promise? Or, who would try to 
document all the changes in between each revision which 
happens to break some compatibility details?

I think here on the dev lists users are too much given 
the impression that each SVN revision is a release, 
because these revisions are most of the time stable. 
But: they are not.

 As for the expected _set of content_, I agree we should have 
 a standard defined, and it's defined well already.
 It's roughly everything inside /src except compiler. We call 
 
 this flat out can not be 

Re: [Harbour] Re: To Viktor about openSuse rpm

2010-01-03 Thread Tamas TEVESZ
On Sun, 3 Jan 2010, Viktor Szakáts wrote:

   Then what is the point of having hbrun without dynamic 
   libs, when hbrun is built as shared binary in certain 
   situations, so it cannot work without Harbour dynamic 
   lib also.
   
   i might be misunderstanding something, but this seems to be untrue. i 
   have a hbrun binary that (to a certain extent) chugs along nicely, 
   without any trace of a dynamic libharbour (or anything else harbour) 
   being around anywhere.
  
  It depends on the setup. For cases where Harbour 
  is built to be installed in system locations, 
  the binaries are built against the shared lib.

so it is controlled by some heuristics mechanism, i couldn't quickly 
find where this is. i suppose it has to do with known sysloc paths. 
building the deb n stuff it looks like:

! HB_BIN_INSTALL: /usr/bin
! HB_LIB_INSTALL: /usr/lib/harbour
! HB_INC_INSTALL: /usr/include/harbour
! HB_DOC_INSTALL: /usr/share/doc/harbour
! HB_INSTALL_PREFIX automatically set to: /usr/local

this might be it. install locations are explicitly set, but setting 
install_prefix doesn't take these into account, and is also set to a 
non-system loc, which in turn somehow controls dyn builds.

it is generally not acceptable to ship packages like this. especially 
if there is a shared lib, then it shall be used by applications.

   I think the ultimate difference between Harbour and 
   regular 'lib' packages, is that in Harbour there is 
   not much point in having a dev packages, as development 
   consists of building final apps in 99.99% of cases, 
   and not building something else with the help of Harbour 
   headers.
   
   hbrun's script interpreter mode is the prime example of the contrary. 
   also imagine przemek coming up with (arbitrary example) an ads-like 
   dbf server, which relies on and only relies on libhb (file 
  
  That's true, although hbrun is _not_ part of the 
  default core package we're talking about. hbrun 
  however, requires shared lib.
  
   management, network management, dbf drivers, full stop). should the 
   compiler and headers, and contrib/rddads be installed in this case? 
   hardly.
  
  Well, standalone apps built using Harbour and part 
  of Harbour package can be like that (like hbrun), 
  but I think this projects primary goal is to build 
  a compiler, and even hbrun may need .ch header and 
  even such dbf server is most likely to have a client 
  side, which will in turn need the compiler.
  
  What you describe fits the 'harbour-tool' category, 
  which is fine.
  
  So to reiterate, maybe a harbour-dynlibs package, 
  and a harbour-staticlibs package are justified, but 

this to me feels like breaking the principle of least surprise. what 
is in harbour-dynlibs would be called libharbour-dev by convention 
(watch me cheat, it would be called harbour-devel in rpm-land :), but 
the principle of separation still is the same); similarly, 
harbour-statislibs would be harbour-dev; although i agree that the 
fact that there is a runtime and also a compiler is provided by hb 
makes this a little special.

maybe so that libharbour has the shared objects, libharbour-dev has 
the static archives and the headers. are ch needed when only using an 
app linked against libharbour? if yes, and for example hbrun needs 
that, tools can be made to depend on -dev.

harbour would then have the compiler, pp and the rest of the gang.

libhb is the base of all stuff. hbrun pulls libhb-dev, harbour pulls 
in hbrun (and lets hbrun implicitly pull libhb-dev).

what existing package might be similar to this that could be studied 
for some inspiration? i can't really think of any now.

  only as long as these are always pulled by harbour-core 
  package. harbour-tools package would only pull 
  harbour-dynlibs.

   i feel they also should be, but this also raises libver questions. do 
   they live a separate life, or do we go with one and only one version 
   for the whole shebang?
  
  Since they are meant as separate entities, we 
  should have the option to untie they versioning 
  from core anytime. Until they live inside the 
  same repository, we should sync their version to 
  core.

it just dawned on me that there also is hbide, which for the moment 
lives in contrib yes, but is shortly (for an arbitrary definition of 
short) is expected to enter core, so i think we also should take a 
harbour-ide package into consideration right at the beginning.

i'd rather prefer it not be made part of dev.

   As for the expected _set of content_, I agree we should have 
   a standard defined, and it's defined well already.
   It's roughly everything inside /src except compiler. We call 
   
   this flat out can not be true ;)
   
   if you have slang-dev installed and i don't, you get a libharbour with 
   gtslang, i get one without. same sources, system-dependent result.
  
  I you ask me, I wanted to pull out gtcrs and gtsln from 
  inside the core for somewhat similar reasons, but it got 
  

Re: [Harbour] Re: To Viktor about openSuse rpm

2010-01-02 Thread Viktor Szakáts
I suggest you to start over, and if you still have problems, 
pls publish your build log so we can see what exactly happened 
and what settings were used.

Brgds,
Viktor

On 2010 Jan 3, at 03:07, francesco perillo wrote:

 3bis)
 I installed the contrib package where harupdf is but I got another error:
 
 contrib/hbhpdf/tests # hbmk2  harupdf.prg
 hbmk2: Processing local make script: hbmk.hbm
 hbmk2: Processing configuration: /usr/bin/hbmk.cfg
 Harbour 2.0.1dev (Rev. 13448)
 Copyright (c) 1999-2010, http://www.harbour-project.org/
 Compiling 'harupdf.prg'...
 Lines 2246, Functions/Procedures 18
 Generating C source output to 'harupdf.c'... Done.
 /usr/lib/gcc/i586-suse-linux/4.4/../../../../i586-suse-linux/bin/ld:
 cannot find -llibhpdf
 collect2: ld returned 1 exit status
 hbmk2: Error: Running linker. 1
 gcc harupdf.o hbmk_cwkl0s.o   -Wl,--start-group -lhbhpdf -llibhpdf
 -lpng -lhbct -lhbcplr -lhbdebug -lharbour  -Wl,--end-group -oharupdf
 -L/usr/lib/harbour
 
 
 
 4)
 I was able to succesfully compile, link and run Qt samples (after
 installing the Qt package of course, hbide, hbxbp, hbqt) and cairo
 ___
 Harbour mailing list (attachment size limit: 40KB)
 Harbour@harbour-project.org
 http://lists.harbour-project.org/mailman/listinfo/harbour

___
Harbour mailing list (attachment size limit: 40KB)
Harbour@harbour-project.org
http://lists.harbour-project.org/mailman/listinfo/harbour