OVH Cloud OVH Cloud

Recompiler un binaire du système de base [FreeBSD]

16 réponses
Avatar
Kevin Denis
Bonjour,

je cherche à recompiler un des binaires de base de FreeBSD.

Est-ce possible sans télécharger l'arbre des sources complet?

Merci
--
Kevin

6 réponses

1 2
Avatar
espie
In article ,
Kevin Denis wrote:
Le 27-01-2015, Marc Espie a écrit :
je cherche à recompiler un des binaires de base de FreeBSD.

Est-ce possible sans télécharger l'arbre des sources complet?



"bonjour, je voudrais faire un truc, mais je vais surtout pas vous
dire precisement quoi, est-ce que c'est possible ?"...
A ton avis, quelle est la reponse ?



J'espérai un truc du genre: tu vas là, tu télécharges ça, puis ça,
puis tu lances ça, et ton binaire est là, et/ou une doc bien faite sur
ce sujet est disponible là.
C'est une question générale, je ne cherche pas à recompiler un
binaire en particulier.



Il n'y a pas de reponse generale, alors. L'arbre source d'un BSD est
"integre", on suppose le plus souvent que tu as tout l'arbre dispo, et on
ne fait pas specialement d'efforts pour rendre un repertoire compilable
independamment du reste...
Avatar
Antoine Leca
Le 27/01/2015 22:38, Kevin Denis écrivit :
"bonjour, je voudrais faire un truc, mais je vais surtout pas vous
dire precisement quoi, est-ce que c'est possible ?"...
A ton avis, quelle est la reponse ?



J'espérai un truc du genre: tu vas là, tu télécharges ça, puis ça,
puis tu lances ça, et ton binaire est là,



Là, tu le cherches !
La réponse simple est celle que tu connais depuis le début, télécharger
les sources, puis make -C /usr/src/usr.bin/kivabien all
Avec en plus tous les commentaires pertinents qui ont été faits sur les
dépendances, qui pourraient être précisées si «kivabien» était défini.

Après, on peut forcément faire plus compliqué en échangeant un peu de
place (bande passante et espace disque) contre beaucoup de ton temps.
Par contre j'ai un fort doute que l'on puisse arriver à échanger
beaucoup de place contre peu de temps.


Antoine
Avatar
Bruno Ducrot
On 2015-01-27, Kevin Denis wrote:
Le 27-01-2015, Marc Espie a écrit :
je cherche à recompiler un des binaires de base de FreeBSD.

Est-ce possible sans télécharger l'arbre des sources complet?



"bonjour, je voudrais faire un truc, mais je vais surtout pas vous
dire precisement quoi, est-ce que c'est possible ?"...
A ton avis, quelle est la reponse ?



J'espérai un truc du genre: tu vas là, tu télécharges ça, puis ça,
puis tu lances ça, et ton binaire est là, et/ou une doc bien faite sur
ce sujet est disponible là.
C'est une question générale, je ne cherche pas à recompiler un
binaire en particulier.

Indice: l'arbre source d'un BSD est relativement interconnecte, il y a
des choses qui sont triviales a recompiler independamment, d'autres plutot
moins.



Commençons par le simple, alors.



Ben, le problème c'est que ce n'est pas si simple que ça, sauf cas
trivial.

Un exemple trivial, pour compiler 'ls' :

~/test_compile_ls> mkdir test_compile_ls
~/test_compile_ls> cd test_compile_ls
~/test_compile_ls> svn https://svn0.us-west.FreeBSD.org/base/releng/9.3/bin/ls bin/ls
~/test_compile_ls> cd bin/ls
~/test_compile_ls/bin/ls> make
Warning: Object directory not changed from original /home/bruno/test_compile_ls/bin/ls
cc -O2 -pipe -DCOLORLS -std=gnu99 -Qunused-arguments -fstack-protector
-c cmp.c
cc -O2 -pipe -DCOLORLS -std=gnu99 -Qunused-arguments -fstack-protector
-c ls.c
cc -O2 -pipe -DCOLORLS -std=gnu99 -Qunused-arguments -fstack-protector
-c print.c
cc -O2 -pipe -DCOLORLS -std=gnu99 -Qunused-arguments -fstack-protector
-c util.c
cc -O2 -pipe -DCOLORLS -std=gnu99 -Qunused-arguments -fstack-protector
-o ls cmp.o ls.o print.o util.o -lutil -ltermcap
gzip -cn ls.1 > ls.1.gz

Cependant, si tu fais la même chose avec 'sh', par exemple, tu verra
assez rapidement que ce n'est plus aussi simple :


~/test_compile_ls> svn co
https://svn0.us-west.FreeBSD.org/base/releng/9.3/bin/sh bin/sh
A bin/sh/bltin
...
...
A bin/sh/redir.c
Checked out revision 277949.
~/test_compile_ls> cd sh
sh: No such file or directory.
~/test_compile_ls> cd bin/sh
~/test_compile_ls/bin/sh> less Makefile
~/test_compile_ls/bin/sh> make
Warning: Object directory not changed from original
/home/bruno/test_compile_ls/bin/sh
cd /home/bruno/test_compile_ls/bin/sh; sh mkbuiltins
/home/bruno/test_compile_ls/bin/sh
cc -O2 -pipe -DSHELL -I. -I/home/bruno/test_compile_ls/bin/sh
-std=gnu99 -Qunused-arguments -fstack-protector -Wsystem-headers -Werror
...
...

cc -O2 -pipe -DSHELL -I. -I/home/bruno/test_compile_ls/bin/sh
-std=gnu99 -Qunused-arguments -fstack-protector -Wsystem-headers -Werror
-Wall -Wno-format-y2k -Wno-uninitialized -Wno-pointer-sign
-Wno-empty-body -Wno-string-plus-int -Wno-tautological-compare
-Wno-unused-value -Wno-parentheses-equality -Wno-unused-function
-Wno-conversion -Wno-switch -Wno-switch-enum -Wno-knr-promoted-parameter
-c jobs.c
make: don't know how to make kill.c. Stop
~/test_compile_ls/bin/sh>

En fait, kill.c est dans bin/kill, qu'il faudra aussi récupérer via
svn. Tu peux, certes, regarder dans le Makefile afin de savoir
ce qu'il faut récupérer (hint .PATH=...), mais après, pour des
trucs encore plus touchy comme 'zfs', là ca va vraiment être
plus compliqué.

BIG FAT WARING:
FreeBSD ne supporte en aucune façon des updates partielles.
Il vaut mieux qu'à minima les sources que tu récupères via
svn corresponde *exactement* à la version du système installé.

Enfin, tu ne pourra faire un 'make install' dans la racine de
l'utilitaire que tu veux recompiler. Il te faut ../Makefile.inc,
et à ce moment là tu peux taper quelque chose comme :
make -f ../Makefile.inc -f Makefile install DESTDIR=/rep/de/test

Il te faudra bien entendu récupérer ce fameux Makefile.inc correspondant
à src/bin/Makefile.inc


A plus,

--
Bruno Ducrot

A quoi ca sert que Ducrot hisse des carcasses ?
Avatar
Bruno Ducrot
On 2015-01-27, Miod Vallat wrote:

Il te faudra les sources du binaire en question ainsi que les Makefiles
et les éventuelles dépendances nécessaires pour le build.



attention à ne pas oublier ../Makefile.inc, sinon il y a des surprises
au make install...



Sous Free, on peut s'en sortir en incluant /usr/share/mk/bsd.own.mk.
Cependant, il manque BINDIR qu'il faut préciser si l'on veut tester
l'installation. Je ne sais pas si c'est aussi le cas sous Open.

A plus,

--
Bruno Ducrot

A quoi ca sert que Ducrot hisse des carcasses ?
Avatar
Johnny Be Good
Le 27/01/15 13:14, Michel a écrit :
Le 27/01/2015 12:44, Kevin Denis a écrit :
Bonjour,

je cherche à recompiler un des binaires de base de FreeBSD.

Est-ce possible sans télécharger l'arbre des sources complet?

Merci



Bonjour,

Le plus simple est pourtant de récupérer l'arbre des ports ( qui
contient les makefiles, mais pas les sources ) et de compiler ce dont tu
as besoin ( les sources seront téléchargées à ce moment ).



Les ports ce n'est pas le système de base
Avatar
caterina123
Le mardi 27 Janvier 2015 à 12:44 par Kevin Denis :
Bonjour,

je cherche à recompiler un des binaires de base de FreeBSD.

Est-ce possible sans télécharger l'arbre des sources complet?

Merci
--
Kevin


Bonjour Madame / Monsieur,

Je lance un appel à toutes les personnes qui ont besoin de financement pour leur exprimer que je prête de l'argent 2000-3.000.000 D'Euros crédible à toute personne capable de
rembourser avec intérêt au taux de 2% par an et les périodes allant de 1 à 35 ans, selon de la quantité requise. Je le fais dans les domaines suivants:

- Prêt financière
- Hypothèque
- Investissement de prêt
- Prêt automobile
- Consolidation de la dette
- Rachat de crédit
- Prêt personnel
- Vous êtes dans l'archive

Vous êtes fichés, interdits bancaires et vous n'avez pas la faveur des banques ou mieux vous avez un projet et besoin de financement, un mauvais dossier de crédit ou besoin d'argent pour payer des factures, fonds à investir sur les entreprises.
Notre site web : www.investissement-pep.com
E-mail:
Nous sommes en mesure de satisfaire mes clients dans les 48 heures suivant la réception de votre demande de crédit bien formulé. Si vous avez vraiment besoin d'argent pour faire ce prêt en bon état Veuillez me contacter tôt aujourd'hui pour obtenir votre prêt.
PS / mais pas sérieuse s'abstenir.
Donc, je suis impatient de vos demandes.
Merci pour la compréhension
1 2