Skip to content

Commit

Permalink
WIP: remove PHP-native MapScript code for 8.0 release (MapServer#6430)
Browse files Browse the repository at this point in the history
* remove EOL PHP native for 8.0 release (and update test infrastructure)

Co-authored-by: Even Rouault <[email protected]>
  • Loading branch information
jmckenna and rouault authored Jun 15, 2022
1 parent c046f6b commit 3a100ab
Show file tree
Hide file tree
Showing 254 changed files with 1,176 additions and 25,632 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,4 +11,4 @@ jobs:
uses: actions/checkout@v2

- name: Build
run: docker run -e WORK_DIR="$PWD" -v $PWD:$PWD ubuntu:18.04 $PWD/.github/workflows/start.sh
run: docker run -e WORK_DIR="$PWD" -v $PWD:$PWD ubuntu:20.04 $PWD/.github/workflows/start.sh
6 changes: 3 additions & 3 deletions .github/workflows/start.sh
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ set -e

apt-get update -y

export BUILD_NAME=PHP_7.3_WITH_PROJ7
export BUILD_NAME=PHP_7.4_WITH_PROJ8
#export PYTHON_VERSION=3.6
export PYTHON_VERSION=system

Expand All @@ -27,14 +27,14 @@ export PATH="/root/.pyenv/bin:$PATH"
eval "$(pyenv init -)"
eval "$(pyenv virtualenv-init -)"
ln -s /usr/bin/python3 /usr/bin/python
ln -s /usr/bin/pip3 /usr/bin/pip
#ln -s /usr/bin/pip3 /usr/bin/pip

export CRYPTOGRAPHY_DONT_BUILD_RUST=1 # to avoid issue when building Cryptography python module
pip install --upgrade pip

# Install recent cmake
wget -O - https://apt.kitware.com/keys/kitware-archive-latest.asc 2>/dev/null | gpg --dearmor - | sudo tee /etc/apt/trusted.gpg.d/kitware.gpg >/dev/null
sudo apt-add-repository 'deb https://apt.kitware.com/ubuntu/ bionic main'
sudo apt-add-repository 'deb https://apt.kitware.com/ubuntu/ focal main'

cd "$WORK_DIR"

Expand Down
20 changes: 10 additions & 10 deletions .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,27 +2,27 @@ branches:
except:
- /^(cherry-pick-)?backport-\d+-to-/

dist: bionic
dist: focal
language: php

matrix:
include:

- php: 7.2
- php: 7.4
env:
- BUILD_NAME=PHP_7.2_WITH_ASAN
- PYTHON_VERSION=3.6
- BUILD_NAME=PHP_7.4_WITH_ASAN
- PYTHON_VERSION=3.7
- CRYPTOGRAPHY_DONT_BUILD_RUST=1 # to avoid issue when building Cryptography python module (https://travis-ci.com/github/MapServer/MapServer/jobs/482212623)

- php: 7.3
- php: 8.0
env:
- BUILD_NAME=PHP_7.3_WITH_PROJ7
- PYTHON_VERSION=3.7
- BUILD_NAME=PHP_8.0
- PYTHON_VERSION=3.8

- php: 7.4
- php: 8.1.6
env:
- BUILD_NAME=PHP_7.4
- PYTHON_VERSION=3.8
- BUILD_NAME=PHP_8.1
- PYTHON_VERSION=3.9

cache:
apt: true
Expand Down
7 changes: 0 additions & 7 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -162,7 +162,6 @@ option(WITH_LIBXML2 "Choose if libxml2 support should be built in (used for sos,
option(WITH_THREAD_SAFETY "Choose if a thread-safe version of libmapserver should be built (only recommended for some mapscripts)" OFF)
option(WITH_GIF "Enable GIF support (for PIXMAP loading)" ON)
option(WITH_PYTHON "Enable Python mapscript support" OFF)
option(WITH_PHP "Enable PHP mapscript support" OFF)
option(WITH_PHPNG "Enable PHPNG (SWIG) mapscript support" OFF)
option(WITH_PERL "Enable Perl mapscript support" OFF)
option(WITH_RUBY "Enable Ruby mapscript support" OFF)
Expand Down Expand Up @@ -826,11 +825,6 @@ if(WITH_V8)
ENDIF()
ENDIF(WITH_V8)

if(WITH_PHP)
add_subdirectory("mapscript/php")
set(USE_PHP_MAPSCRIPT 1)
endif(WITH_PHP)

if(WITH_PHPNG)
add_subdirectory("mapscript/phpng")
set(USE_PHPNG_MAPSCRIPT 1)
Expand Down Expand Up @@ -968,7 +962,6 @@ status_optional_feature("XML Mapfile support" "${USE_XMLMAPFILE}")

message(STATUS " * Mapscripts")
status_optional_feature("Python" "${USE_PYTHON_MAPSCRIPT}")
status_optional_feature("PHP" "${USE_PHP_MAPSCRIPT}")
status_optional_feature("PHPNG" "${USE_PHPNG_MAPSCRIPT}")
status_optional_feature("PERL" "${USE_PERL_MAPSCRIPT}")
status_optional_feature("RUBY" "${USE_RUBY_MAPSCRIPT}")
Expand Down
7 changes: 5 additions & 2 deletions Makefile
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
AUTOTEST_OPTS?=--strict_mode
PHP_MAPSCRIPT=build/mapscript/php/php_mapscript.so
PHP_MAPSCRIPT?=build/mapscript/phpng/php_mapscriptng.so
PYTHON_MAPSCRIPT_PATH=build/mapscript/python
JAVA_MAPSCRIPT_PATH=build/mapscript/java
CSHARP_MAPSCRIPT_PATH=build/mapscript/csharp
Expand All @@ -8,7 +8,7 @@ BUILDPATH=../../build
FLEX=flex
YACC=yacc
CMAKEFLAGS_NOCOVERAGE=-DWITH_CLIENT_WMS=1 \
-DWITH_CLIENT_WFS=1 -DWITH_KML=1 -DWITH_SOS=1 -DWITH_CSHARP=1 -DWITH_PHP=1 -DWITH_PERL=1 \
-DWITH_CLIENT_WFS=1 -DWITH_KML=1 -DWITH_SOS=1 -DWITH_CSHARP=1 -DWITH_PHPNG=1 -DWITH_PERL=1 \
-DWITH_PYTHON=1 -DWITH_JAVA=1 -DWITH_THREAD_SAFETY=1 -DWITH_FRIBIDI=1 -DWITH_FCGI=1 -DWITH_EXEMPI=1 \
-DCMAKE_BUILD_TYPE=Release -DWITH_RSVG=1 -DWITH_CURL=1 -DWITH_HARFBUZZ=1 -DWITH_MSSQL2008=ON ${EXTRA_CMAKEFLAGS} -DLIBMAPSERVER_EXTRA_FLAGS="${LIBMAPSERVER_EXTRA_FLAGS}" -DCMAKE_INSTALL_PREFIX=/tmp/install-mapserver

Expand Down Expand Up @@ -61,6 +61,9 @@ mspython-wheel:
php-testcase:
test -f "$(PHP_MAPSCRIPT)" && (export PHP_MAPSCRIPT_SO="../../$(PHP_MAPSCRIPT)" && cd msautotest/php && ./run_test.sh)

phpng-build:
cd build && cmake --build . --config Release

java-testcase:
test -d "$(JAVA_MAPSCRIPT_PATH)" && (export JAVA_MAPSCRIPT_SO="../../$(JAVA_MAPSCRIPT_PATH)" && cd mapscript/java && ./run_test.sh)

Expand Down
2 changes: 1 addition & 1 deletion Vagrantfile
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
vm_ram = ENV['VAGRANT_VM_RAM'] || 2048
vm_cpu = ENV['VAGRANT_VM_CPU'] || 2

config.vm.box = "ubuntu/bionic64"
config.vm.box = "ubuntu/focal64"

config.vm.hostname = "mapserver-vagrant"

Expand Down
2 changes: 1 addition & 1 deletion ci/travis/after_success.sh
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
#!/bin/sh
set -eu

if [ "$BUILD_NAME" != "PHP_7.2_WITH_ASAN" ]; then
if [ "$BUILD_NAME" != "PHP_7.4_WITH_ASAN" ]; then
# Only run coverage when it is safe to do so (not on pull requests), and only on master branch
echo "$TRAVIS_SECURE_ENV_VARS"
echo "$TRAVIS_BRANCH"
Expand Down
47 changes: 41 additions & 6 deletions ci/travis/before_install.sh
Original file line number Diff line number Diff line change
Expand Up @@ -5,23 +5,57 @@ set -eu
if ls /etc/apt/sources.list.d/pgdg* 2>/dev/null >/dev/null; then sudo mv /etc/apt/sources.list.d/pgdg* /tmp; fi
dpkg -l | grep postgresql || /bin/true
dpkg -l | grep postgis || /bin/true
sudo apt-get remove --purge postgresql* libpq-dev libpq5 || /bin/true
sudo apt-get remove --purge postgresql* libpq-dev libpq5 cmake || /bin/true

sudo add-apt-repository -y ppa:ubuntugis/ubuntugis-unstable
sudo apt-get update
sudo apt-get install -y --allow-unauthenticated protobuf-c-compiler libprotobuf-c0-dev bison flex libfribidi-dev cmake librsvg2-dev colordiff libpq-dev libpng-dev libjpeg-dev libgif-dev libgeos-dev libfreetype6-dev libfcgi-dev libcurl4-gnutls-dev libcairo2-dev libgdal-dev libproj-dev libxml2-dev libexempi-dev lcov lftp postgis libharfbuzz-dev gdal-bin ccache curl postgresql-server-dev-10 postgresql-10-postgis-3 postgresql-10-postgis-3-scripts swig g++ ca-certificates
sudo apt-get install -y --allow-unauthenticated build-essential protobuf-c-compiler libprotobuf-c-dev bison flex libfribidi-dev librsvg2-dev colordiff libpq-dev libpng-dev libjpeg-dev libgif-dev libgeos-dev libfreetype6-dev libfcgi-dev libcurl4-gnutls-dev libcairo2-dev libgdal-dev libproj-dev libxml2-dev libexempi-dev lcov lftp postgis libharfbuzz-dev gdal-bin proj-bin ccache curl postgresql-server-dev-12 postgresql-12-postgis-3 postgresql-12-postgis-3-scripts g++ ca-certificates
# following are already installed on Travis CI
#sudo apt-get install --allow-unauthenticated php-dev python-dev python3-dev
sudo apt-get install -y --allow-unauthenticated libmono-system-drawing4.0-cil mono-mcs
sudo apt-get install -y --allow-unauthenticated libperl-dev
sudo apt-get install -y --allow-unauthenticated openjdk-8-jdk

#install recent cmake on GH build action
if [ -z ${TRAVIS+x} ]; then
sudo apt-get install -y --allow-unauthenticated cmake
#sudo apt-get install -y --allow-unauthenticated php-xdebug
export MSBUILD_ENV="NOT_TRAVIS"
else
# install recent CMake on Travis
DEPS_DIR="${TRAVIS_BUILD_DIR}/deps"
mkdir ${DEPS_DIR} && cd ${DEPS_DIR}
wget --no-check-certificate https://cmake.org/files/v3.23/cmake-3.23.1-linux-x86_64.tar.gz
tar -xvf cmake-3.23.1-linux-x86_64.tar.gz > /dev/null
mv cmake-3.23.1-linux-x86_64 cmake-install
export PATH=${DEPS_DIR}/cmake-install:${DEPS_DIR}/cmake-install/bin:${PATH}
cd ${TRAVIS_BUILD_DIR}
export MSBUILD_ENV="TRAVIS"
# check CMake version installed
cmake --version
fi

#upgrade to recent SWIG
git clone https://github.com/swig/swig.git swig-git-master
cd swig-git-master
wget https://github.com/PhilipHazel/pcre2/releases/download/pcre2-10.39/pcre2-10.39.tar.gz
./Tools/pcre-build.sh
./autogen.sh
./configure --prefix=/usr
make
sudo make install
sudo ldconfig
cd ../
#check SWIG version
swig -version

eval "$(pyenv init --path)"
eval "$(pyenv init -)"

# list installed and available Python versions
# list installed and available Python/PHP versions
# pyenv versions
# echo $(pyenv root)
# phpenv versions

# set the global Python version
pyenv global $PYTHON_VERSION
Expand All @@ -30,16 +64,17 @@ pyenv global $PYTHON_VERSION
pyenv which pip
pyenv which python

pip install --upgrade pip
pip install cryptography==3.4.6 # avoid requiring rust compiler for the cryptography dependency
pip install cpp-coveralls pyflakes lxml
pip install -r msautotest/requirements.txt

export CC="ccache gcc"
export CXX="ccache g++"

sudo sed -i 's/md5/trust/' /etc/postgresql/10/main/pg_hba.conf
sudo sed -i 's/peer/trust/' /etc/postgresql/10/main/pg_hba.conf
sudo service postgresql restart 10
sudo sed -i 's/md5/trust/' /etc/postgresql/12/main/pg_hba.conf
sudo sed -i 's/peer/trust/' /etc/postgresql/12/main/pg_hba.conf
sudo service postgresql restart 12

cd msautotest
python -m pyflakes .
Expand Down
34 changes: 26 additions & 8 deletions ci/travis/script.sh
Original file line number Diff line number Diff line change
Expand Up @@ -12,22 +12,40 @@ eval "$(pyenv init -)"
export CXX="ccache g++"
#fi

if [ "$BUILD_NAME" = "PHP_7.2_WITH_ASAN" ]; then
# Force use of PROJ 4 API
sudo rm /usr/include/proj.h
#make sure to use recent CMake, and the pyenv Python instance
export PYTHONPREFIX="$(dirname $(realpath $(pyenv which python)))/.."
if [ -z ${TRAVIS+x} ]; then
#not travis
export PATH=${PYTHONPREFIX}/bin:${PATH}
else
#travis
export PATH=${TRAVIS_BUILD_DIR}/deps/cmake-install:${TRAVIS_BUILD_DIR}/deps/cmake-install/bin:${PYTHONPREFIX}/bin:${PATH}
fi
cmake --version

# check we are using the correct versions
pyenv which pip
pyenv which python
#pyenv which python-config
# check for phpunit & xdebug
phpunit --version
php -v

if [ "$BUILD_NAME" = "PHP_7.4_WITH_ASAN" ]; then
# -DNDEBUG to avoid issues with cairo cleanup
make cmakebuild MFLAGS="-j2" CMAKE_C_FLAGS="-g -fsanitize=address -DNDEBUG -DACCEPT_USE_OF_DEPRECATED_PROJ_API_H" CMAKE_CXX_FLAGS="-g -fsanitize=address -DNDEBUG -DACCEPT_USE_OF_DEPRECATED_PROJ_API_H" EXTRA_CMAKEFLAGS="-DCMAKE_BUILD_TYPE=None -DCMAKE_EXE_LINKER_FLAGS=-fsanitize=address"
make cmakebuild MFLAGS="-j2" CMAKE_C_FLAGS="-g -fsanitize=address -DNDEBUG" CMAKE_CXX_FLAGS="-g -fsanitize=address -DNDEBUG" EXTRA_CMAKEFLAGS="-DCMAKE_BUILD_TYPE=None -DCMAKE_EXE_LINKER_FLAGS=-fsanitize=address"
export AUTOTEST_OPTS="--strict --run_under_asan"
# Only run tests that only involve mapserv/map2img binaries. mspython, etc would require LD_PREOLOAD'ing the asan shared object
make -j4 asan_compatible_tests
elif [ "$BUILD_NAME" = "PHP_7.3_WITH_PROJ7" ]; then
elif [ "$BUILD_NAME" = "PHP_7.4_WITH_PROJ8" ]; then
#runs through GitHub action
make cmakebuild MFLAGS="-j2" CMAKE_C_FLAGS="-O2" CMAKE_CXX_FLAGS="-O2" LIBMAPSERVER_EXTRA_FLAGS="-Wall -Werror -Wextra"
make mspython-wheel
make phpng-build
make -j4 test
else
# Force use of PROJ 4 API
sudo rm /usr/include/proj.h
make cmakebuild MFLAGS="-j2" CMAKE_C_FLAGS="-DACCEPT_USE_OF_DEPRECATED_PROJ_API_H" CMAKE_CXX_FLAGS="-DACCEPT_USE_OF_DEPRECATED_PROJ_API_H" LIBMAPSERVER_EXTRA_FLAGS="-Wall -Werror -Wextra"
make cmakebuild MFLAGS="-j2" CMAKE_C_FLAGS="-O2" CMAKE_CXX_FLAGS="-O2" LIBMAPSERVER_EXTRA_FLAGS="-Wall -Werror -Wextra"
make mspython-wheel
make phpng-build
make -j4 test
fi
46 changes: 0 additions & 46 deletions mapscript/php/CMakeLists.txt

This file was deleted.

Loading

0 comments on commit 3a100ab

Please sign in to comment.