Bienvenue, Invité. Merci de vous connecter ou de vous inscrire.
Avez-vous perdu votre e-mail d'activation ?

Auteur Sujet: Paquet NuGet  (Lu 15434 fois)

0 Membres et 1 Invité sur ce sujet

ctxnop

  • Newbie
  • *
  • Messages: 28
    • Voir le profil
Paquet NuGet
« le: Septembre 20, 2013, 02:28:55 pm »
Salut,
J'ai suivi avec attention l'évènement Going Native de cette année et j'y ai découvert que la gestion des bibliothèques via NuGet était maintenant possible pour les bibliothèques C et C++.
Est-il prévu que la SFML distribue un tel paquet ?

Au passage, Herb Sutter à fait un peu de pub pour SFML (a environ 1h18).

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32498
    • Voir le profil
    • SFML's website
    • E-mail
Re : Paquet NuGet
« Réponse #1 le: Septembre 20, 2013, 02:41:24 pm »
C'est pas prévu pour le moment, mais si quelqu'un souhaite le faire ce sera avec plaisir que rendrai ça officiel :)

Citer
Au passage, Herb Sutter à fait un peu de pub pour SFML (a environ 1h18).
Oui, je me suis inscrit sur la mailing list de discussion autour de l'API graphique 2D pour C++, et je vais essayer de participer si je peux, mais pour l'instant je suis encore assez perplexe concernant l'idée.

cf. http://en.sfml-dev.org/forums/index.php?topic=12789.0
Laurent Gomila - SFML developer

ctxnop

  • Newbie
  • *
  • Messages: 28
    • Voir le profil
Re : Paquet NuGet
« Réponse #2 le: Septembre 20, 2013, 02:58:20 pm »
Je ne suis pas familier de la création de paquets nuget pour le moment, mais j'envisage d'en faire pour utilisation interne dans ma boite (pour du C# par contre). Une fois que j'aurais joué un peu plus avec le système, si j'ai un peu de temps et que personne ne s'y est collé d'ici là, je verrai a tenter de créer un tel paquet. Mais bon, je ne promet vraiment rien.

ctxnop

  • Newbie
  • *
  • Messages: 28
    • Voir le profil
Re : Paquet NuGet
« Réponse #3 le: Septembre 21, 2013, 01:42:47 am »
Bon finalement, en rentrant de soirée j'ai été voir comment créer un paquet nuget pour du c++ et bah... c'est pas bien dur. Donc je l'ai fait.

Voici le code de création du paquet :
nuget {
        nuspec {
                id = sfml;
        version : 2.1.0.0;
        title: SFML;
        authors: {Laurent Gomila};
        owners: {Laurent Gomila};
        licenseUrl: "http://www.sfml-dev.org/license.php";
        projectUrl: "http://www.sfml-dev.org";
        iconUrl: "http://www.sfml-dev.org/images/logo.png";
        requireLicenseAcceptance:false;
        summary: "SFML provides a simple interface to the various components of your PC, to ease the development of games and multimedia applications. It is composed of five modules: system, window, graphics, audio and network." ;

        description: @"SFML provides a simple interface to the various components
                of your PC, to ease the development of games and multimedia applications.
                It is composed of five modules: system, window, graphics, audio and network.

        With SFML, your application can compile and run out of the box on the most
                common operating systems: Windows, Linux, Mac OS X and soon Android & iOS.

        SFML has official bindings for the C and .Net languages. And thanks to its
                active community, it is also available in many other languages such as Java,
                Ruby, Python, Go, and more.
        ";
        releaseNotes: "Release of SFML 2.1 libraries.";
        copyright: Copyright 2013;
        tags: { sfml, native, CoApp };
    }
       
        files {
                #defines {
                        SRC = sources\;
                }
               
                include: { "${SRC}include\**" };
                docs: { "${SRC}doc\**" };
               
                [x86,v90,debug] {
                        bin: "${SRC}bin\x86\v90\debug\bin\*";
                        lib: "${SRC}bin\x86\v90\debug\lib\*";
                }
               
                [x86,v90,release] {
                        bin: "${SRC}bin\x86\v90\release\bin\*";
                        lib: "${SRC}bin\x86\v90\release\lib\*";
                }
               
                [x64,v90,debug] {
                        bin: "${SRC}bin\x64\v90\debug\bin\*";
                        lib: "${SRC}bin\x64\v90\debug\lib\*";
                }
               
                [x64,v90,release] {
                        bin: "${SRC}bin\x64\v90\release\bin\*";
                        lib: "${SRC}bin\x64\v90\release\lib\*";
                }
               
                [x86,v100,debug] {
                        bin: "${SRC}bin\x86\v100\debug\bin\*";
                        lib: "${SRC}bin\x86\v100\debug\lib\*";
                }
               
                [x86,v100,release] {
                        bin: "${SRC}bin\x86\v100\release\bin\*";
                        lib: "${SRC}bin\x86\v100\release\lib\*";
                }
               
                [x64,v100,debug] {
                        bin: "${SRC}bin\x64\v100\debug\bin\*";
                        lib: "${SRC}bin\x64\v100\debug\lib\*";
                }
               
                [x64,v100,release] {
                        bin: "${SRC}bin\x64\v100\release\bin\*";
                        lib: "${SRC}bin\x64\v100\release\lib\*";
                }
               
                [x86,v110,debug,desktop] {
                        bin: "${SRC}bin\x86\v110\debug\bin\*";
                        lib: "${SRC}bin\x86\v110\debug\lib\*";
                }
               
                [x86,v110,release,desktop] {
                        bin: "${SRC}bin\x86\v110\release\bin\*";
                        lib: "${SRC}bin\x86\v110\release\lib\*";
                }
               
                [x64,v110,debug,desktop] {
                        bin: "${SRC}bin\x64\v110\debug\bin\*";
                        lib: "${SRC}bin\x64\v110\debug\lib\*";
                }
               
                [x64,v110,release,desktop] {
                        bin: "${SRC}bin\x64\v110\release\bin\*";
                        lib: "${SRC}bin\x64\v110\release\lib\*";
                }
        }
       
        targets {
                Defines += HAS_SFML;
        }
}
 

Suffit de regarder le code ci-dessus pour déduire l'arbo que j'ai utilisé. (Tous les fichiers ont été obtenus en downloadant toutes les versions Visual Studio que tu proposes au téléchargement ici, il manque les symboles car tu ne les fournits pas).
Ce qui me donne deux paquets que j'héberge ici (home serveur, donc pas beaucoup de bande passante) :
sfml.2.1.0.0.nupkg
sfml.redist.2.1.0.0.nupkg

Il faut impérativement prendre les deux !
Donc si ça te conviens on peut publier ça sur nuget.org. Dès que ce sera le cas je stopperai l'hébergement et les liens ci-dessus seront morts.

J'ai testé sur Visual Studio 2012 avec un projet console en debug/release en ciblant x86 et x64. Ca a l'air de bien fonctionner (vraiment génial d'ajouter ses dépendances comme ça en tout cas).

Quelques petites remarques :
- Ca serait cool de changer l'url du logo pour une version qui ne contient que "l'image", pas le texte "SFML". Parce que dans le gestionnaire de paquet ça rend pas terrible et SFML est déjà affiché vu que c'est le nom du paquet.
- Il faut impérativement >=NuGet-2.5. Sinon on ne peut installer le paquet que pour la solution et non le projet. Donc c'est quasi useless (il faut se taper toute la conf du projet à la main alors que c'est justement le but de NuGet d'éviter ça)
- Je n'ai pas réussit (pas vraiment cherché non plus) a permettre une configuration automatique du mode "statique". Mais je les inclus dans le paquet tout de même donc on peut changer ça à la main.
- Je n'ai pas géré les dépendances de SFML (libsndfile-1.dll et openal32.dll). Je les distribue avec le paquet tout comme toi. Idéalement il faudrait créer une dépendance vers des paquets nuget qui fourniraient ces dll. Je n'ai pas pris le temps de vérifier si ces paquets nuget existent.
- J'ai été obligé d'ajouter un fichier "SFML.hpp" dans le répertoire parent de celui contenant "Graphics.hpp" et autre. En effet, la commande qui génère le paquet ne conserve pas l'arborescence si je ne fais pas ça, du coup on doit faire #include <Graphics.hpp> au lieu de <SFML/Graphics.hpp>. Le fichier que j'ai ajouté se contente de faire un include SFML/*.hpp.
Si ça dérange je chercherai un moyen de le dégager tout en gardant la structure.

Voilà, je crois que c'est tout.

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32498
    • Voir le profil
    • SFML's website
    • E-mail
Re : Paquet NuGet
« Réponse #4 le: Septembre 21, 2013, 09:15:57 am »
Génial :)

Citer
- Ca serait cool de changer l'url du logo pour une version qui ne contient que "l'image", pas le texte "SFML".
J'ai pas trop le temps en ce moment, vois si tu peux l'extraire de la version SVG.

Citer
- J'ai été obligé d'ajouter un fichier "SFML.hpp" dans le répertoire parent de celui contenant "Graphics.hpp" et autre. En effet, la commande qui génère le paquet ne conserve pas l'arborescence si je ne fais pas ça, du coup on doit faire #include <Graphics.hpp> au lieu de <SFML/Graphics.hpp>. Le fichier que j'ai ajouté se contente de faire un include SFML/*.hpp.
Si ça dérange je chercherai un moyen de le dégager tout en gardant la structure.
Oui ça me dérange un peu, les gens qui vont chopper SFML via NuGet auront / utiliseront un fichier qui n'existe pas dans la distribution officielle. S'ils distribuent leur code ça ne compilera même pas chez quelqu'un d'autre (s'ils incluent SFML.hpp).
Laurent Gomila - SFML developer

ctxnop

  • Newbie
  • *
  • Messages: 28
    • Voir le profil
Re : Paquet NuGet
« Réponse #5 le: Septembre 21, 2013, 10:39:42 am »
Oui c'est pas faux pour le sfml.hpp. comme dis dans mon message et comme l'heure le montre j'ai fais ça en rentrant de soirée.  Je n'ai pas pris le temps de chercher. C'est vraiment un premier jet. Je vais tenter de corriger dans la journée si jai un peu de temps.
Pas de problème pour extraire l'icône du svg mais il faudra l'héberger.

ctxnop

  • Newbie
  • *
  • Messages: 28
    • Voir le profil
Re : Paquet NuGet
« Réponse #6 le: Septembre 21, 2013, 11:46:21 am »
Déjà, voila l'icone SFML sans le texte. J'ai fais une version SVG et une version png 128x128. J'utiliserai la version png dans le paquet nuget (je doute qu'un svg s'affiche correctement dans Visual Studio).
Pour le paquet nuget il va falloir attendre un peu, je ne suis pas chez moi ni sur le même ordi, il faut donc que j'installe les outils pour le créer, or le site est down pour le moment  :-\

ctxnop

  • Newbie
  • *
  • Messages: 28
    • Voir le profil
Re : Paquet NuGet
« Réponse #7 le: Septembre 21, 2013, 02:08:16 pm »
Voilà, le site de CoApp est toujours down mais j'ai réussit à trouver l'url direct de download de l'outil qu'il me manquais. J'ai mis les paquets à jour. Ils sont dispo à la même adresse.

- J'ai viré le fichier SFML.hpp, je l'ai remplacé par un fichier vide nommé "delete.me". Quand le site de CoApp sera à nouveau en ligne je regarderai s'il y a moyen de se débarrasser totalement de ce fichier. En attendant ça ne devrait pas poser de problème vu que c'est un fichier vide et qu'il n'est ni un .h ni un .hpp.

- J'ai utilisé "http://www.sfml-dev.org/images/sfml-icon.png" comme url de l'icône, donc quand tu uploaderas l'icône ça sera pris en compte automatiquement, en attendant, tant que l'icône est introuvable, l'icône par défaut de NuGet est utilisée.

Faudrait aussi que tu jettes un coup d'oeil aux métadonnées du paquets (partie 'nuspec' du fichier que j'ai posté hier soir) histoire de vérifier si ça te conviens ou non.

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32498
    • Voir le profil
    • SFML's website
    • E-mail
Re : Paquet NuGet
« Réponse #8 le: Septembre 21, 2013, 07:29:29 pm »
J'ai uploadé l'image.

Concernant les metadonnées, ça me paraît bon. Je n'ai pas vérifié le texte mais j'imagine que tu as juste collé la description officielle ;)
Laurent Gomila - SFML developer

ctxnop

  • Newbie
  • *
  • Messages: 28
    • Voir le profil
Re : Paquet NuGet
« Réponse #9 le: Septembre 21, 2013, 07:44:21 pm »
Tout à fait, j'ai copier/coller le texte de la page d'accueil de la page anglais.
En pièce jointe un petit screenshot de ce que ça donne dans Visual Studio.
Donc si tu es ok j'upload tout ça sur nuget.org

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32498
    • Voir le profil
    • SFML's website
    • E-mail
Re : Paquet NuGet
« Réponse #10 le: Septembre 21, 2013, 09:39:34 pm »
Ca m'a l'air pas mal du tout :)

Attention : il y a un "for for" dans la description de SFML Redist.

Pour info : tout cela est compatible avec quelles versions de Visual Studio ? comment vont se passer les prochaines releases, tu serais ok pour faire les updates correspondant ?
Laurent Gomila - SFML developer

ctxnop

  • Newbie
  • *
  • Messages: 28
    • Voir le profil
Re : Paquet NuGet
« Réponse #11 le: Septembre 21, 2013, 09:43:19 pm »
Au moins 2010 et 2012. Mais il me semble que 2008 aussi il me semble. A confirmer.  Je corrigerais la description tout a l'heure et j'uploaderai tout ca....

ctxnop

  • Newbie
  • *
  • Messages: 28
    • Voir le profil
Re : Paquet NuGet
« Réponse #12 le: Septembre 21, 2013, 11:41:25 pm »
Désolé, j'ai répondu avec mon téléphone tout à l'heure et du coup j'ai zapé la moitié du message.

Le coup du "for for" c'est l'outil de CoApp qui génère ça tout seul, faudra que je le leurs signale. J'ai trafiqué le paquet final à la main pour corriger en attendant.
J'ai uploadé le "sfml.redist", le "sfml" est en cours mais ma connexion n'a pas l'air de vouloir y mettre du sien...

Les futures updates se feront en gardant la structure. Il suffit de mettre les bons fichiers aux bons endroit, lancer la commande et uploader le résultat.
On pourrait voir à améliorer et automatiser un peu tout ça dans le future. Je pense qu'en jouant un peu avec cmake il doit y avoir moyen de tout faire d'un coup.

Pour les futures updates je veux bien m'y coller mais je ne peux garantir que j'aurais toujours le temps immédiatement. Donc si une petite latence entre la release "classique" et la release "nuget" ne te gènes pas, alors tu peux compter sur moi.
Dans le cas contraire, n'importe qui peut me remplacer, je te filerai un zip avec tout ce qu'il faut ainsi qu'une petite doc sur comment qu'on fait. Tu verra c'est très simple.

ctxnop

  • Newbie
  • *
  • Messages: 28
    • Voir le profil
Re : Paquet NuGet
« Réponse #13 le: Septembre 22, 2013, 12:05:20 am »
Voilà, c'est en ligne, accessible à tous, la SFML 2.1 peut maintenant être installée et utilisée directement depuis Visual Studio grâce à NuGet \o/

https://www.nuget.org/packages?q=sfml

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32498
    • Voir le profil
    • SFML's website
    • E-mail
Re : Paquet NuGet
« Réponse #14 le: Septembre 22, 2013, 08:45:54 am »
Bravo :D

Pour les prochaines releases, ça ne me gêne pas qu'il y ait un peu de latence. Du moment que quelqu'un s'en occupe, c'est déjà génial ;)
Laurent Gomila - SFML developer