i386 build

This commit is contained in:
Joe Watkins 2019-06-09 15:31:19 +02:00
parent 5c8b702e77
commit c2a78c7cac
No known key found for this signature in database
GPG Key ID: F9BA0ADA31CBD89E
5 changed files with 198 additions and 2 deletions

View File

@ -22,6 +22,22 @@ jobs:
parameters:
configurationName: DEBUG_ZTS
configurationParameters: '--enable-debug --enable-maintainer-zts'
- template: azure/i386/job.yml
parameters:
configurationName: I386_RELEASE_NTS
configurationParameters: '--disable-debug --disable-maintainer-zts'
- template: azure/i386/job.yml
parameters:
configurationName: I386_DEBUG_NTS
configurationParameters: '--enable-debug --disable-maintainer-zts'
- template: azure/i386/job.yml
parameters:
configurationName: I386_RELEASE_ZTS
configurationParameters: '--disable-debug --enable-maintainer-zts'
- template: azure/i386/job.yml
parameters:
configurationName: I386_DEBUG_ZTS
configurationParameters: '--enable-debug --enable-maintainer-zts'
- template: azure/macos/job.yml
parameters:
configurationName: MACOS_DEBUG_NTS

47
azure/i386/apt.yml Normal file
View File

@ -0,0 +1,47 @@
parameters:
packages: ''
steps:
- script: |
sudo dpkg --add-architecture i386
sudo apt-get update -y | true
sudo apt-get install -y gcc-multilib
sudo apt-get install -y g++-multilib
sudo apt-get install -y valgrind:i386
sudo apt-get install -y bison \
re2c \
locales \
language-pack-de \
libglib2.0-dev:i386 \
openssl:i386 \
zlib1g-dev:i386 \
libxml2-dev:i386 \
libgmp-dev:i386 \
libicu-dev:i386 \
libtidy-dev:i386 \
libenchant-dev:i386 \
libaspell-dev:i386 \
libpspell-dev:i386 \
librecode-dev:i386 \
libsasl2-dev:i386 \
libxpm-dev:i386 \
libjpeg-dev:i386 \
libpng-dev:i386 \
libzip-dev:i386 \
libbz2-dev:i386 \
libsqlite3-dev:i386 \
libwebp-dev:i386 \
libonig-dev:i386 \
libkrb5-dev:i386 \
libgssapi-krb5-2:i386 \
libcurl4-openssl-dev:i386 \
libxml2-dev:i386 \
libxslt1-dev:i386 \
libpq-dev:i386 \
libreadline-dev:i386 \
libffi-dev:i386 \
libfreetype6-dev:i386 \
postgresql \
postgresql-contrib \
${{ parameters.packages }}
displayName: 'APT'

103
azure/i386/job.yml Normal file
View File

@ -0,0 +1,103 @@
parameters:
configurationName: ''
configurationParameters: ''
jobs:
- job: ${{ parameters.configurationName }}
pool:
vmImage: 'ubuntu-latest'
steps:
- checkout: self
fetchDepth: 1
- template: apt.yml
- script: |
./buildconf --force
export CFLAGS=-m32
export CXXFLAGS=-m32
export LDFLAGS=-L/usr/lib/i386-linux-gnu
export PKG_CONFIG=/usr/bin/i686-linux-gnu-pkg-config
./configure ${{ parameters.configurationParameters }} \
--prefix=/usr \
--enable-phpdbg \
--enable-fpm \
--enable-intl \
--with-pdo-mysql=mysqlnd \
--with-mysqli=mysqlnd \
--with-pgsql \
--with-pdo-pgsql \
--with-pdo-sqlite \
--without-pear \
--enable-gd \
--with-jpeg \
--with-webp \
--with-freetype \
--with-xpm \
--enable-exif \
--with-zip \
--with-zlib \
--with-zlib-dir=/usr \
--enable-soap \
--enable-xmlreader \
--with-xsl \
--with-tidy \
--with-xmlrpc \
--enable-sysvsem \
--enable-sysvshm \
--enable-shmop \
--enable-pcntl \
--with-readline \
--enable-mbstring \
--with-curl \
--with-gettext \
--enable-sockets \
--with-bz2 \
--with-openssl \
--with-gmp \
--enable-bcmath \
--enable-calendar \
--enable-ftp \
--with-pspell=/usr \
--with-enchant=/usr \
--with-kerberos \
--enable-sysvmsg \
--with-ffi \
--enable-zend-test \
--with-config-file-path=/etc \
--with-config-file-scan-dir=/etc/php.d
displayName: 'Configure Build'
- script: make -j$(/usr/bin/nproc) >/dev/null
displayName: 'Make Build'
- script: |
sudo make install
sudo mkdir /etc/php.d
sudo chmod 777 /etc/php.d
echo mysqli.default_socket=/var/run/mysqld/mysqld.sock > /etc/php.d/mysqli.ini
echo pdo_mysql.default_socket=/var/run/mysqld/mysqld.sock > /etc/php.d/pdo_mysql.ini
displayName: 'Install Build'
- script: |
mysql -uroot -proot -e "CREATE DATABASE IF NOT EXISTS test"
sudo -u postgres psql -c "ALTER USER postgres PASSWORD 'postgres';"
sudo -u postgres psql -c "CREATE DATABASE test;"
displayName: 'Setup'
# - ${{ if ne(variables['Build.Reason'], 'PullRequest') }}: this will be uncommented on merge, we don't want to docker pull request builds
- task: Docker@2
inputs:
containerRegistry: 'phpazuredevops'
repository: ${{ variables['Build.SourceBranch'] }}
command: 'buildAndPush'
Dockerfile: '**/Dockerfile'
tags: ${{ parameters.configurationName }}
- template: test.yml
parameters:
configurationName: ${{ parameters.configurationName }}
- template: test.yml
parameters:
configurationName: ${{ parameters.configurationName }}
runTestsName: 'OpCache'
runTestsParameters: -d zend_extension=opcache.so -d opcache.enable_cli=1
- ${{ if ne(variables['Build.SourceBranch'], 'refs/heads/PHP-7.4') }}:
- template: test.yml
parameters:
configurationName: ${{ parameters.configurationName }}
runTestsName: 'JIT'
runTestsParameters: -d zend_extension=opcache.so -d opcache.enable_cli=1 -d opcache.jit_buffer_size=16M

32
azure/i386/test.yml Normal file
View File

@ -0,0 +1,32 @@
parameters:
runTestsName: ''
runTestsParameters: ''
steps:
- script: |
export MYSQL_TEST_USER=root
export MYSQL_TEST_PASSWD=root
export PDO_MYSQL_TEST_DSN="mysql:host=localhost;dbname=test"
export PDO_MYSQL_TEST_USER=root
export PDO_MYSQL_TEST_PASS=root
export TEST_PHP_JUNIT=junit.xml
export REPORT_EXIT_STATUS=no
export SKIP_IO_CAPTURE_TESTS=1
rm -rf junit.xml | true
php run-tests.php -P -q \
-j$(/usr/bin/nproc) \
-g FAIL,XFAIL,BORK,WARN,LEAK,XLEAK,SKIP \
--offline \
--show-slow 1000 \
--set-timeout 120 \
${{ parameters.runTestsParameters }}
displayName: 'Test ${{ parameters.configurationName }} ${{ parameters.runTestsName }}'
condition: or(succeeded(), failed())
- task: PublishTestResults@2
inputs:
testResultsFormat: 'JUnit'
testResultsFiles: junit.xml
testRunTitle: '${{ parameters.configurationName }} ${{ parameters.runTestsName }}'
failTaskOnFailedTests: false
displayName: 'Export ${{ parameters.configurationName }} ${{ parameters.runTestsName }} Results'
condition: or(succeeded(), failed())

View File

@ -14,11 +14,9 @@ var_dump(unixtojd(-1)) . PHP_EOL;
var_dump(unixtojd(false)) . PHP_EOL;
var_dump(unixtojd(null)) . PHP_EOL;
var_dump(unixtojd(time())) . PHP_EOL;
var_dump(unixtojd(PHP_INT_MAX)) . PHP_EOL;
?>
--EXPECTF--
bool(false)
int(%d)
int(%d)
int(%d)
bool(false)