2013-04-14 3 views
3

Редактирование: Я считаю, проблема в том, что YAML не работает на 5.4/5.5.Проблемы с PHP YAML в Travis CI

У меня есть библиотека, которая устанавливается в Travis CI и использует расширение PHP YAML PECL. Тем не менее, я не могу получить расширение YAML для работы в Travis & PHP 5.4, и мне любопытно, есть ли у кого-нибудь еще? Никакое количество Google не разрешило мою проблему.

Вот выход Travis:

$ git clone --depth=50 --branch="master" git://github.com/titon/IO.git titon/IO 

Cloning into 'titon/IO'... 

remote: Counting objects: 531, done. 

remote: Compressing objects: 100% (256/256), done. 

remote: Total 531 (delta 267), reused 460 (delta 196) 

Receiving objects: 100% (531/531), 79.41 KiB, done. 

Resolving deltas: 100% (267/267), done. 

$ cd titon/IO 
git.2 

$ git checkout -qf 3940a6673413da224eeaaebbc6a98167e4feda38 

$ phpenv global 5.4 

$ php --version 

PHP 5.4.13 (cli) (built: Mar 31 2013 06:18:12) 

Copyright (c) 1997-2013 The PHP Group 

Zend Engine v2.4.0, Copyright (c) 1998-2013 Zend Technologies 

with Xdebug v2.2.1, Copyright (c) 2002-2012, by Derick Rethans 
before_script.1 

$ sudo apt-get install libyaml-dev 

Reading package lists... Done 

Building dependency tree 

Reading state information... Done 

libyaml-dev is already the newest version. 

0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded. 

$ pecl install yaml 

downloading yaml-1.1.0.tgz ... 

Starting to download yaml-1.1.0.tgz (35,916 bytes) 

..........done: 35,916 bytes 

9 source files, building 

WARNING: php_bin /home/travis/.phpenv/versions/5.4.13/bin/php appears to have a prefix ., but config variable php_prefix does not match 

WARNING: php_bin /home/travis/.phpenv/versions/5.4.13/bin/php appears to have a suffix env/versions/5.4.13/bin/php, but config variable php_suffix does not match 

running: phpize 

Configuring for: 

PHP Api Version: 20100412 

Zend Module Api No: 20100525 

Zend Extension Api No: 220100525 

Please provide the prefix of libyaml installation [autodetect] : (Waits until it times out) 

travis.yml в вопросе: https://github.com/titon/IO/blob/master/.travis.yml

ответ

6

Automating PECL устанавливает это проблема, которая встречается не только на Travis CI. В этом случае псевдо- expect сценарий может быть создан путем отправки cariage возврата в стандартный ввод программы установки PECL, который в свою очередь, передать его в конфигурационном скрипте, который подсказок для ввода:

printf "\n" | pecl install yaml 

A Рабочая версия вашего .travis.yml будет выглядеть примерно так:

language: php 

php: 
    - 5.4 
    - 5.5 

before_script: 
    - printf "\n" | pecl install yaml-beta 
    - echo "extension=yaml.so" >> ~/.phpenv/versions/$(phpenv version-name)/etc/php.ini 
    - composer install --dev 

notifications: 
    email: false 
+0

я заметил ваш тэ жало на Github, большое спасибо за помощь! Я попытался перенести его в свой проект, но продолжаю получать разрешенные отклонения при попытке запустить скрипт bash. Не уверен, что делать дальше. https://github.com/titon/IO –

+0

@MilesJohnson У вашего bin/travis-yaml.sh не установлен бит выполнения, установленный в его разрешениях на файл. Вам нужно «chmod a + x bin/travis-yaml.sh; git add.; git commit', чтобы файл был отмечен как исполняемый, когда Travis клонирует репо. – bd808

+0

Да, я пробовал это, но я на окнах, поэтому он никогда не срабатывает. Мне нужно попробовать его на другом компьютере. –

2

.travis.ci

language: php 

php: 
    - 5.4 
    - 5.5 
    - 5.6 

sudo: 
    false 

before_install: 
    - pecl channel-update pecl.php.net 
    - (CFLAGS="-O1 -g3 -fno-strict-aliasing"; pecl install yaml < /dev/null &) 

addons: 
    apt: 
    packages: 
     - libyaml-dev 
+0

Я не думаю, что существует необходимость в ' addons'. [Моя сборка] (https://travis-ci.org/shadiakiki1986/fatca-ides-php/builds/137704548#L203) находит файлы deva yaml без него. – shadi