Alpha core 4.5

Un message a été scindé en un nouveau sujet : Utlisation class http.com.php

Bonjour,

Pour info la version 4.5 du core a pas mal avancée reste juste nodejs 20 et gere le fichier composer.lock mais tout le reste semble bon. Pour la partie composer je viens de mettre en ligne une version très épuré pour voir l’impact (si c’est trop lourd je reviendrais bien evidement en arriere sur cette modification). Voila donc le fichier composer :

{
  "require": {
    "dragonmantank/cron-expression": "^3",
    "symfony/expression-language": "5 - 7",
    "pragmarx/google2fa-qrcode": "^3",
    "bacon/bacon-qr-code": "2 - 3"
  },
  "config": {
      "allow-plugins": {
          "php-http/discovery": true
      }
  }
}

A noter que comme le dit le changelog il faudra faire la maj 2 fois (la 1er sortant en erreur mais c’est normal).

Bonsoir,

J’ai voulu rafraichir mon image de l’alpha 4.5 (j’étais déjà en 4.5 juste avant, mais de la semaine dernière, sur un jeedom de tests sous Debian 11), et l’update a planté à 60% avec ces erreurs :

Check jeedom package | OK
Check jeedom database | OK
Check crons
PHP Fatal error:  Uncaught Error: Class 'Webmozart\Assert\Assert' not found in /var/www/html/vendor/dragonmantank/cron-expression/src/Cron/CronExpression.php:203
Stack trace:
#0 /var/www/html/vendor/dragonmantank/cron-expression/src/Cron/CronExpression.php(188): Cron\CronExpression->setExpression()
#1 /var/www/html/install/consistency.php(90): Cron\CronExpression->__construct()
#2 /var/www/html/install/update.php(326): require_once('/var/www/html/i')
#3 {main}
thrown in /var/www/html/vendor/dragonmantank/cron-expression/src/Cron/CronExpression.php on line 203

Comme je vois que dans ce sujet « dragonmantank » est évoqué, je post ici, s’il faut faire un post dédié, dites moi.

Bonne soirée,
TiTidom.

Bonjour
Je t’invite à lire le changelog la réponse est dedans.

Bonjour Loic,

Merci pour ta réponse.

Pour le coup, je l’ai lu le changelog, mais je ne vois rien qui dise que la mise à jour peut planter avec un « PHP Fatal error » :open_mouth:

J’imagine que cela a un lien avec la suppression du dossier vendor, mais il n’y a rien d’explicite là dessus dans le changelog (disant que ca peut faire planter le tout), et si cela a un rapport avec le warning qui est en bas :

Je ne vois pas le rapport entre le système de logs, et le check des Cron et un php fatal error :stuck_out_tongue: .

Et pour toutes les autres lignes du changelog, je ne vois pas de correspondance avec le message que j’ai eu :frowning:

Donc désolé, mais même avec la meilleure volonté du monde, je ne vois pas en quoi le changelog aurait pu m’aider (que je lis bien entendu avant de mettre à jour) ?

PS : par contre, effectivement, en relançant une deuxième fois la mise à jour, tout est passé sans soucis, peut être rendre plus explicite le changelog sur ce point ?

TiTidom.

Effectivement le changelog n’est peut être pas assez clair sur ce point je m’y mets immédiatement. Désolé pour le côté obscur du change log

Edit : c’est fait (désolé pour le délai biberon de la petite au milieu), ca sera en ligne d’ici quelques minutes (2h grand max) le temps que le robot et GitHub fasse la mise en ligne.

1 « J'aime »

Pas de soucis Loic, c’était pas à la minute :wink: La famille passe avant tout :wink:

Je remontais surtout cela pour d’autres qui pourraient avoir le cas et ne pas savoir / pouvoir s’en sortir, et donc éviter des posts sur le community :slight_smile:

En tout cas, merci pour ta réactivité (comme toujours !),

Bonne soirée,
TiTidom.

Moi je te suspecte d’avoir voulu priver la petite de son biberon !! :rofl:

1 « J'aime »

Y’a pas besoin d’essayer la privée malheureusement….

Ah, toi aussi tu as pas de chance et elle ne mange pas bien ? Mon fils c’était une galère pendant longtemps …

Oui ça dépend des semaine mais en général c’est un combat bon après elle dort donc je vais pas me plaindre

Nous on a cumulé, il mangeait pas. Une heure sur les biberons et énormément de temps pour s’endormir, soir comme pour les siestes en journée. Je connais bien le sujet.

Bon courage ! Ça va mieux au bout de quelques années et surtout on arrête d’avoir peur et se prendre la tête.

Bonjour j’arrête le HS je vais me faire remonter les bretelles par nos modos :laughing:

1 « J'aime »

Avec la disparition de monolog je vois seulement maintenant que la méthode log::getLogger() a aussi sauté
c’était une méthode public donc perso je l’utilisais dans pas mal de plugin

c’est donc un breaking change, pas de soucis, ca peut être décidé mais en théorie ca devrait être une nouvelle version majeure du coup
va falloir que les devs qui ont fait comme moi suivent à temps :slight_smile:

Tout a fait et c’est pour ca que c’est une 4.5 (version majeur de la branche 4) et non une 4.4.X c’est justement car il y a des Breaking change (et d’ailleurs c’est aussi pour ca que j’explique les changements sur le community).

Hello, donc si j’ai bien compris on sort des standards et plus moyen d’envoyer un logger à une classe php tierce…

On sort pas des standards Jeedom, il n’a jamais été prévu que vous utilisiez monolog directement mais seulement par l’intermédiaire de log::add qui est le standard jeedom et ne bouge pas.

Après jeedom gère composer donc si vous avez besoin de monologue rien ne vous interdit de l’ajouter a vos plugins.

j’entend que c’était pas prévu mais la fonction était publique donc par définition… on pouvait :slight_smile:

et monolog n’est pas le débat, ce n’était que l’implémentation de PSR-3: Logger Interface et c’est cette interface qui est utilisée dans les libs tierces.

qd tu as une lib tierces dont tu veux les logs et qu’elle accepte de se faire injecter sa dépendance sur un logger via une interface standard, je dois lui filer cette interface;
le standard jeedom elle connait pas :wink:

mais ok je vais gérer de mon coté avec une class (monolog ou autre) qui implémentera psr3 et fera le pont avec le log jeedom

1 « J'aime »

Après on peut faire en sorte que jeedom est une interface psr3 c’est possible ca mais je pense que revenir en arrière sur cette modification est une mauvaise idée, la simplification et la fiabilité de cette modification est un pas en avant.

si tu es ok, je peux voir pour proposer un pr qui ferait en sorte d’étendre la class log actuelle pour qu’elle implémente l’interface, j’ai déjà regardé et je pense que en 3/4 lignes c’est faisable avec 0 impact sur la class; en quelques mots, les changements seront:

  • use Psr\Log\AbstractLogger;
  • class log extends AbstractLogger {
  • implémenter public function log($level, $message, array $context = array()) { } (non static, qui doit appeler log::add() derrière, juste un passe plat)
  • implémenter une fonction getLogger (reprenons ce nom tant qu’à faire au cas où d’autres l’utilisaient) pour retourner une instance de la class avec le nom du log

faudra aussi ajouter une dépendance sur l’interface (psr/log) dans le composer mais en fait elle s’y trouve déjà via symfony/expression-language:

arbre complet des dépendances du core:

bacon/bacon-qr-code 2.0.8 BaconQrCode is a QR code generator for PHP.
├──dasprid/enum ^1.0.3
│  └──php >=7.1 <9.0
├──ext-iconv *
└──php ^7.1 || ^8.0
dragonmantank/cron-expression v3.3.3 CRON for PHP: Calculate the next or previous run date and determine if a CRON expression is due
├──php ^7.2|^8.0
└──webmozart/assert ^1.0
   ├──ext-ctype *
   └──php ^7.2 || ^8.0
pragmarx/google2fa-qrcode v3.0.0 QR Code package for Google2FA
├──php >=7.1
└──pragmarx/google2fa >=4.0
   ├──paragonie/constant_time_encoding ^1.0|^2.0
   │  └──php ^7|^8
   └──php ^7.1|^8.0
symfony/expression-language v5.4.43 Provides an engine that can compile and evaluate expressions
├──php >=7.2.5
├──symfony/cache ^4.4|^5.0|^6.0
│  ├──php >=7.2.5
└──pragmarx/google2fa >=4.0
   ├──paragonie/constant_time_encoding ^1.0|^2.0
   │  └──php ^7|^8
   └──php ^7.1|^8.0
symfony/expression-language v5.4.43 Provides an engine that can compile and evaluate expressions
├──php >=7.2.5
├──symfony/cache ^4.4|^5.0|^6.0
└──pragmarx/google2fa >=4.0
   ├──paragonie/constant_time_encoding ^1.0|^2.0
   │  └──php ^7|^8
   └──php ^7.1|^8.0
symfony/expression-language v5.4.43 Provides an engine that can compile and evaluate expressions
└──pragmarx/google2fa >=4.0
   ├──paragonie/constant_time_encoding ^1.0|^2.0
   │  └──php ^7|^8
   └──php ^7.1|^8.0
└──pragmarx/google2fa >=4.0
   ├──paragonie/constant_time_encoding ^1.0|^2.0
   │  └──php ^7|^8
   └──php ^7.1|^8.0
symfony/expression-language v5.4.43 Provides an engine that can compile and evaluate expressions
└──pragmarx/google2fa >=4.0
   ├──paragonie/constant_time_encoding ^1.0|^2.0
   │  └──php ^7|^8
   └──php ^7.1|^8.0
symfony/expression-language v5.4.43 Provides an engine that can compile and evaluate expressions
└──pragmarx/google2fa >=4.0
   ├──paragonie/constant_time_encoding ^1.0|^2.0
   │  └──php ^7|^8
   └──php ^7.1|^8.0
└──pragmarx/google2fa >=4.0
   ├──paragonie/constant_time_encoding ^1.0|^2.0
   │  └──php ^7|^8
   └──php ^7.1|^8.0
symfony/expression-language v5.4.43 Provides an engine that can compile and evaluate expressions
└──pragmarx/google2fa >=4.0
   ├──paragonie/constant_time_encoding ^1.0|^2.0
   │  └──php ^7|^8
   └──php ^7.1|^8.0
symfony/expression-language v5.4.43 Provides an engine that can compile and evaluate expressions
└──pragmarx/google2fa >=4.0
   ├──paragonie/constant_time_encoding ^1.0|^2.0
   │  └──php ^7|^8
   └──php ^7.1|^8.0
symfony/expression-language v5.4.43 Provides an engine that can compile and evaluate expressions
├──php >=7.2.5
├──symfony/cache ^4.4|^5.0|^6.0
└──pragmarx/google2fa >=4.0
   ├──paragonie/constant_time_encoding ^1.0|^2.0
   │  └──php ^7|^8
   └──php ^7.1|^8.0
symfony/expression-language v5.4.43 Provides an engine that can compile and evaluate expressions
├──php >=7.2.5
└──pragmarx/google2fa >=4.0
   ├──paragonie/constant_time_encoding ^1.0|^2.0
   │  └──php ^7|^8
   └──php ^7.1|^8.0
symfony/expression-language v5.4.43 Provides an engine that can compile and evaluate expressions
├──php >=7.2.5
└──pragmarx/google2fa >=4.0
   ├──paragonie/constant_time_encoding ^1.0|^2.0
   │  └──php ^7|^8
└──pragmarx/google2fa >=4.0
   ├──paragonie/constant_time_encoding ^1.0|^2.0
   │  └──php ^7|^8
   ├──paragonie/constant_time_encoding ^1.0|^2.0
   │  └──php ^7|^8
   └──php ^7.1|^8.0
symfony/expression-language v5.4.43 Provides an engine that can compile and evaluate expressions
   │  └──php ^7|^8
   └──php ^7.1|^8.0
symfony/expression-language v5.4.43 Provides an engine that can compile and evaluate expressions
├──php >=7.2.5
├──symfony/cache ^4.4|^5.0|^6.0
symfony/expression-language v5.4.43 Provides an engine that can compile and evaluate expressions
├──php >=7.2.5
├──symfony/cache ^4.4|^5.0|^6.0
│  ├──php >=7.2.5
├──php >=7.2.5
├──symfony/cache ^4.4|^5.0|^6.0
│  ├──php >=7.2.5
├──symfony/cache ^4.4|^5.0|^6.0
│  ├──php >=7.2.5
│  ├──psr/cache ^1.0|^2.0
│  │  └──php >=5.3.0
│  ├──psr/log ^1.1|^2|^3
│  │  └──php >=5.3.0
│  ├──symfony/cache-contracts ^1.1.7|^2
│  │  ├──php >=7.2.5
│  │  └──psr/cache ^1.0|^2.0|^3.0
│  ├──psr/log ^1.1|^2|^3
│  │  └──php >=5.3.0
│  ├──symfony/cache-contracts ^1.1.7|^2
│  │  ├──php >=7.2.5
│  │  └──psr/cache ^1.0|^2.0|^3.0
│  │  └──php >=5.3.0
│  ├──symfony/cache-contracts ^1.1.7|^2
│  │  ├──php >=7.2.5
│  │  └──psr/cache ^1.0|^2.0|^3.0
│  │  ├──php >=7.2.5
│  │  └──psr/cache ^1.0|^2.0|^3.0
│  │  └──psr/cache ^1.0|^2.0|^3.0
│  │     └──php >=5.3.0
│  ├──symfony/deprecation-contracts ^2.1|^3
│  │     └──php >=5.3.0
│  ├──symfony/deprecation-contracts ^2.1|^3
│  │  └──php >=7.1
│  ├──symfony/deprecation-contracts ^2.1|^3
│  │  └──php >=7.1
│  ├──symfony/polyfill-php73 ^1.9
│  │  └──php >=7.1
│  ├──symfony/polyfill-php73 ^1.9
│  │  └──php >=7.1
│  │  └──php >=7.1
│  ├──symfony/polyfill-php80 ^1.16
│  │  └──php >=7.1
│  ├──symfony/service-contracts ^1.1|^2|^3
│  │  ├──php >=7.2.5
│  │  └──php >=7.1
│  ├──symfony/service-contracts ^1.1|^2|^3
│  │  ├──php >=7.2.5
│  │  ├──psr/container ^1.1
│  ├──symfony/service-contracts ^1.1|^2|^3
│  │  ├──php >=7.2.5
│  │  ├──psr/container ^1.1
│  │  │  └──php >=7.4.0
│  │  ├──php >=7.2.5
│  │  ├──psr/container ^1.1
│  │  │  └──php >=7.4.0
│  │  └──symfony/deprecation-contracts ^2.1|^3
│  │  │  └──php >=7.4.0
│  │  └──symfony/deprecation-contracts ^2.1|^3
│  │  └──symfony/deprecation-contracts ^2.1|^3
│  │     └──php >=7.1
│  └──symfony/var-exporter ^4.4|^5.0|^6.0
│     ├──php >=7.2.5
│     └──symfony/polyfill-php80 ^1.16
│        └──php >=7.1
└──symfony/service-contracts ^1.1|^2|^3
   ├──php >=7.2.5
   ├──psr/container ^1.1
   │  └──php >=7.4.0
   └──symfony/deprecation-contracts ^2.1|^3
      └──php >=7.1

je te demande pas de le faire :wink:
je peux faire le PR (mais plus ajd)

1 « J'aime »

A ben oui vas y si ça sert moi ça me va. J’ai regardé effectivement c’est pas beaucoup de ligne donc tu peux oui.

Merci en tout cas