Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

[FreeBSD] Compatibilité avec Linux

8 réponses
Avatar
Sébastien D.
Salut,

D'abord 1000 excuses si la question à déjà été posée 1000 fois.

Je pense changer ma Mandrake pour une distrib FreeBSD, mais je me pose des
questions existentielles quant à tous les programmes que j'ai développé sous
Linux (ou que d'autres ont développés et que j'utilise) .

Qu'en est-il de la compatibilité des sources entre BSD et Linux ? Devrais-je
modifier le Makefile, voire les sources, de tous les projets que j'ai fait
ou téléchargé pour pouvoir les utiliser / installer à nouveau ? J'utilise
parfois Automake / Autoconf dans mes sources, cela va t-il poser un problème
sous FreeBSD ?

Si modifications il y a, qu'elles sont-elles et est-ce long de faire le
portage ?

Seb.

8 réponses

Avatar
Olivier Cherrier
In article <403f313e$0$28102$, Sébastien D wrote:
Salut,

D'abord 1000 excuses si la question à déjà été posée 1000 fois.

Je pense changer ma Mandrake pour une distrib FreeBSD, mais je me pose des


Il n'existe pas de "distributions" *BSD.
On parle, à juste titre, de systèmes d'exploitation.

questions existentielles quant à tous les programmes que j'ai développé sous
Linux (ou que d'autres ont développés et que j'utilise) .

Qu'en est-il de la compatibilité des sources entre BSD et Linux ? Devrais-je


Ca dépend de degrés de portabilité des sources en question ...

modifier le Makefile, voire les sources, de tous les projets que j'ai fait
ou téléchargé pour pouvoir les utiliser / installer à nouveau ? J'utilise
parfois Automake / Autoconf dans mes sources, cela va t-il poser un problème
sous FreeBSD ?


auto{make, ...} fonctionnent sous *BSD

Si modifications il y a, qu'elles sont-elles et est-ce long de faire le
portage ?


Regarde du côté des ports ou pkgsrc sous *BSD

Avatar
Marwan Burelle
On Fri, 27 Feb 2004 12:59:52 +0100
Sébastien D. wrote:

Qu'en est-il de la compatibilité des sources entre BSD et Linux ?
Devrais-je modifier le Makefile, voire les sources, de tous les
projets que j'ai fait ou téléchargé pour pouvoir les utiliser /
installer à nouveau ? J'utilise parfois Automake / Autoconf dans mes
sources, cela va t-il poser un problème sous FreeBSD ?


Ça dépend si tu utilises ou non des gnuteries ou des linuxeries
(typiquement certaines fonctions spécifiques à la glibc ou certains
include du genre <linux/toto.h>.)

Après, reste les histoires de make/gmake. Il y a des différences dès que
l'on utilise certaines fonctions avancées, mais gmake est dispo dans les
ports/package de FreeBSD (s'il s'agit d'un FreeBSD, mais il est dispo
pour les autres aussi.) Le seul détail est de bien utiliser ${MAKE} lors
des appels à make à l'intérieur d'un makefile et non de faire make
directement.

Ça c'est pour tes sources à toi. Sinon pour la plus part des logiciels
libres, il y a l'arbre des ports (ou pkgsrc pour NetBSD) qui contient
tout ce qu'il faut compiler/installer pas mal de chose (10535
aujourd'hui pour FreeBSD, d'après freshports.org.)

Le mieux pour est d'aller faire un tour sur http://www.freebsd.org (ou
http://www.openbsd.org et http://www.netbsd.org) pour feuilleter un peu
la doc.

--
Burelle Marwan,
Equipe Bases de Donnees - LRI
http://www.cduce.org
( | )

Avatar
Nathan
In article <403f313e$0$28102$, Sébastien D wrote:
Salut,

D'abord 1000 excuses si la question à déjà été posée 1000 fois.

Je pense changer ma Mandrake pour une distrib FreeBSD, mais je me pose des
questions existentielles quant à tous les programmes que j'ai développé sous
Linux (ou que d'autres ont développés et que j'utilise) .

Qu'en est-il de la compatibilité des sources entre BSD et Linux ? Devrais-je
modifier le Makefile, voire les sources, de tous les projets que j'ai fait
ou téléchargé pour pouvoir les utiliser / installer à nouveau ? J'utilise



probablement parce que le make sous *BSD n'est pas compatible avec
le gmake. La portabilité de tes sources va essentiellement dépendre
des apis que tu utilisais sous Linux. Il faut savoir qu'il y a
quelque différence entre les deux, voire même quelques
particularismes au système Linux. Les *BSD tentent avant tout de
coller aux normes.

parfois Automake / Autoconf dans mes sources, cela va t-il poser un problème
sous FreeBSD ?
non ssi tes sources sont portables. Une fois FreeBSD installé ,


étudie attentivement le système des ports. c'est mécanisme bien
différent de celui des autotools


Si modifications il y a, qu'elles sont-elles et est-ce long de faire le
portage ?

Consulte Mme Irma, ma boule déconne ces derniers temps ;-)



Nathan


Avatar
Marwan Burelle
On 27 Feb 2004 12:37:17 GMT
Nathan wrote:

non ssi tes sources sont portables. Une fois FreeBSD installé ,
étudie attentivement le système des ports. c'est mécanisme bien
différent de celui des autotools


Et pour cause, il ne sert pas du tout à la même chose.

Les autotools sont la pour générer et configurer de manière plus ou
moins automatique la compilation d'une appli distribuée sous forme de
sources.

Le système de ports quant à lui à pour but de factoriser le travail
d'intégration des applications opensource et de gérer leur installation
et leur intégration dans le système. Mise à part le côté compilation,
les ports ont plus ou moins le même rôle que les packages dans les
distributions linux (les packages binaires des *BSD sont de toute façon
construit à partir des ports.)

--
Burelle Marwan,
Equipe Bases de Donnees - LRI
http://www.cduce.org
( | )

Avatar
Nathan
In article , Marwan Burelle wrote:
On 27 Feb 2004 12:37:17 GMT
Nathan wrote:

non ssi tes sources sont portables. Une fois FreeBSD installé ,
étudie attentivement le système des ports. c'est mécanisme bien
différent de celui des autotools


Et pour cause, il ne sert pas du tout à la même chose.

Les autotools sont la pour générer et configurer de manière plus ou
moins automatique la compilation d'une appli distribuée sous forme de
sources.

Le système de ports quant à lui à pour but de factoriser le travail
d'intégration des applications opensource et de gérer leur installation
et leur intégration dans le système. Mise à part le côté compilation,
les ports ont plus ou moins le même rôle que les packages dans les
distributions linux (les packages binaires des *BSD sont de toute façon
construit à partir des ports.)




oui sauf que quand même, le système des ports te permet de modifier les
sources d'une application en fonction des régles définies dans le
makefile (appliquer des patch par exemple en fonction de telles ou
telles caractéristique du système ou de l'architecture, vérifier les
dépendances) ; les autotools font à peu de chose près le même travail.



Avatar
Marwan Burelle
On 27 Feb 2004 15:27:37 GMT
Nathan wrote:

oui sauf que quand même, le système des ports te permet de modifier
les sources d'une application en fonction des régles définies dans le
makefile (appliquer des patch par exemple en fonction de telles ou
telles caractéristique du système ou de l'architecture, vérifier les
dépendances) ; les autotools font à peu de chose près le même travail.


Pas du tout, le rôle des autotools est de générer des makefiles en
fonction de l'envirronement d'installation. D'ailleurs, si les sources
que tu récupères utilisent les autotools, le port va utiliser le script
de configure si besoin est, ce qui ne l'empèchera pas de patcher.

La différence est que un port est juste un wrapper pour l'intégration
d'une application (ou d'une lib) dans le système (d'une pour éviter
d'avoir à patcher soit même à la main, et de l'autre pour gérer
proprement l'installation de ces applications sur le système.)

Les autotools sont utiliser lorsque tu distribues tes sources, ils sont
indépendant (hum ... pas de troll ;) du système et permettent de
paramétrer un makefile en fonction de l'envirronement de compilation.

Les deux choses ne font vraiment pas du tout le même boulot (d'ailleurs,
lorsque les sources d'une appli utilisent les autotools, le makefile des
ports les utilise, enfin il utilise le configure.)

--
Burelle Marwan,
Equipe Bases de Donnees - LRI
http://www.cduce.org
( | )

Avatar
Sébastien D.
<snip mon post ci-dessus>

Merci à tous, j'y vois plus clair, d'autant qu'en parallèle j'ai googlisé.
Je suis quelque peu refroidi mais pas découragé, je me lance (et risque donc
de revenir dans le coin d'ici peu ;-)

Seb.
Avatar
espie
In article <c1nccn$tgn$,
Olivier Cherrier wrote:
auto{make, ...} fonctionnent sous *BSD


Faut le dire vite, parfois tres vite meme.
Dans mon experience, auto* sont plus les trucs qui m'embetent
que les trucs qui m'aident. Et la moitie (ou plus) des logiciels
que je vois qui utilisent auto* font des suppositions loufoques
sur mon systeme qui n'ont des chances que d'etre verifiees sur un
linux.

Je dirais bien que les 3/4 du boulot de portage (le vrai boulot, celui
ou il faut comprendre ce qui se passe) d'une appli vers l'arbre des ports
d'un BSD, c'est se battre avec les cretineries d'auto*.

Le dernier en date, qu'on rigole: kdelibs s'est mis a me sortir des
trucs bizarres pendant le configure (style, je n'ai pas de setenv), a
commencer a se construire quand meme (style, je vais aller chercher les
fonctions correspondantes dans kdefakes), a raler parce qu'il ne trouvait
pas la bonne version d'automake et a relancer autoconf (style,
merci les dependances dans le Makefile), puis a reconfigurer et a trouver
setenv.

Mais c'est quoi ce binz ?

Il se trouve qu'on est oblige de patcher libtool (qui ne marchera jamais
bien sous OpenBSD tant que les gens qui le maintiennent voudront faire un
systeme GNU et pas un systeme OpenBSD), et donc de relancer autoconf.

Moi, je vois un `generated with autoconf-2.57', je lance autoconf-2.57.
Eh bien, kde fait passer un script de post-processing derriere. Ce script
corrige le probleme avec setenv... c'est la que ca devient saignant.

Comme les gens d'autoconf et de gcc ont oublie de se parler, il se trouve
que le preprocesseur de gcc, en mode -pedantic, informe l'utilisateur que
les numeros de ligne > 32767, c'est pas bien. A cote de ca, pour aider
l'utilisateur, autoconf etiquette les fragments de source C qu'il compile
avec un numero de ligne... et on sait tres bien qu'un script configure
consequent parvient sans probleme a depasser 32000 lignes. D'ou le clash.
D'ou le premier configure qui deconne. D'ou le 2e qui passe grace au
script de kde qui repatche #line 33333 en /* #line 33333 */

Bref... je ne vous explique pas le bazar pour comprendre ce qui se passe,
et c'est comme ca quasiment tous les jours.