https://github.com/owncloud/core
Tip revision: b8ca775c2f3d404989b907aa67920328cfee69b3 authored by sagargurung1001@gmail.com on 03 May 2022, 09:03:21 UTC
Added scenarios for get domains(blocked) from sharing with guests from commandline after setting it from webUI
Added scenarios for get domains(blocked) from sharing with guests from commandline after setting it from webUI
Tip revision: b8ca775
Makefile
# Main Makefile for ownCloud development
#
# Requirements to run make here:
# - composer
# - node
# - yarn
#
# Installing composer can be done via https://getcomposer.org/doc/00-intro.md#installation-linux-unix-osx
#
# Node/Yarn can be installed following e.g. the Debian/Ubuntu instructions at
# https://nodejs.org/en/download/package-manager/
#
# curl -sL https://deb.nodesource.com/setup_7.x | sudo -E bash -
# sudo apt-get install -y nodejs build-essential
#
# (installation from distro packages is not recommended, often old versions)
#
#
# Usage:
#
# make
# - prepare everything
# make clean
# - clean up
# make test-php
# make test-js
# - testing targets
# Detailed documentation in https://github.com/owncloud/documentation:
# - https://doc.owncloud.com/server/latest/developer_manual/general/devenv.html#check-out-the-code
# - https://doc.owncloud.com/server/latest/developer_manual/testing/unit-testing.html#running-unit-tests-for-owncloud-core
#
NODE_PREFIX=build
SHELL=/bin/bash
#
# Define YARN and check if it is available on the system.
#
YARN := $(shell command -v yarn 2> /dev/null)
KARMA=$(NODE_PREFIX)/node_modules/.bin/karma
JSDOC=$(NODE_PREFIX)/node_modules/.bin/jsdoc
PHPUNIT="$(shell pwd)/lib/composer/phpunit/phpunit/phpunit"
COMPOSER_BIN := $(shell command -v composer 2> /dev/null)
# bin file definitions
PHP_CS_FIXER=php -d zend.enable_gc=0 vendor-bin/owncloud-codestyle/vendor/bin/php-cs-fixer
PHP_CODESNIFFER=vendor-bin/php_codesniffer/vendor/bin/phpcs
PHAN=php -d zend.enable_gc=0 vendor-bin/phan/vendor/bin/phan
PHPSTAN=php -d zend.enable_gc=0 vendor-bin/phpstan/vendor/bin/phpstan
TEST_DATABASE=sqlite
TEST_EXTERNAL_ENV=smb-silvershell
TEST_PHP_SUITE=
DOC_LINK_VERSION=
# Acceptance test flags (for shells supporting autocompletion of makefiles, eg: zsh)
TEST_SERVER_URL?=
TEST_SERVER_FED_URL?=
TEST_WITH_LDAP?=
BEHAT_FEATURE?=
NORERUN?=
BEHAT_RERUN_TIMES?=
# set TESTING_REMOTE_SYSTEM to default=true and make it a system env. variable
export TESTING_REMOTE_SYSTEM?=true
RELEASE_CHANNEL=git
# internal aliases
composer_deps=lib/composer
composer_dev_deps=lib/composer/phpunit
acceptance_test_deps=vendor-bin/behat/vendor
nodejs_deps=build/node_modules
core_vendor=core/vendor
core_doc_files=AUTHORS COPYING README.md CHANGELOG.md
core_src_files=$(wildcard *.php) index.html db_structure.xml .htaccess .user.ini robots.txt
core_src_dirs=apps core l10n lib occ ocs ocs-provider ocm-provider resources settings
core_test_dirs=tests
core_all_src=$(core_src_files) $(core_src_dirs) $(core_doc_files)
core_config_files=config/config.sample.php config/config.apps.sample.php
dist_dir=build/dist
work_dir=${shell pwd}
#
# Catch-all rules
#
.PHONY: all
all: help-hint $(composer_dev_deps) $(nodejs_deps)
.PHONY: clean
clean: clean-composer-deps clean-nodejs-deps clean-test clean-dist
.PHONY: help-hint
help-hint:
@echo "Building core"
@echo
@echo "Note: You can type 'make help' for more targets"
@echo
.PHONY: help
help:
@echo "Please use 'make <target>' where <target> is one of the following:"
@echo
@echo -e "Dependencies:\n"
@echo -e "make clean\t\t\tclean everything"
@echo -e "make install-composer-deps\tinstall composer dependencies"
@echo -e "make update-composer\t\tupdate composer.lock"
@echo -e "make install-nodejs-deps\tinstall Node JS and Javascript dependencies"
@echo
@echo -e "Note that running 'make' without arguments already installs all required dependencies"
@echo
@echo -e "Testing:\n"
@echo -e "make test\t\t\trun all tests"
@echo -e "make test-php-unit\t\trun all PHP tests"
@echo -e "make test-php-style\t\trun PHP code style checks"
@echo -e "make test-php-phan\t\trun PHP phan static code analyzer"
@echo -e "make test-php-phpstan\t\trun PHP phpstan static code analyzer"
@echo -e "make test-js\t\t\trun Javascript tests"
@echo -e "make test-js-debug\t\trun Javascript tests in debug mode (continuous)"
@echo -e "make test-acceptance-api\trun API acceptance tests"
@echo -e "make test-acceptance-cli\trun CLI acceptance tests"
@echo -e "make test-acceptance-webui\trun webUI acceptance tests"
@echo -e "make clean-test\t\t\tclean test results"
@echo
@echo It is also possible to run individual PHP test files with the following command:
@echo -e "make test-php-unit TEST_DATABASE=mysql TEST_PHP_SUITE=path/to/testfile.php"
@echo
@echo -e "Tools:\n"
@echo -e "make test-php-style-fix\t\trun PHP code style checks and fix any issues found"
@echo -e "make update-php-license-header\tUpdate license headers"
@echo -e "make changelog\t\t\tGenerate the CHANGELOG.md file for testing"
@echo
@echo -e "make test-doc-links\t\tTest if the doc links are valid"
@echo
@echo It is also possible to specify the ownCloud version to look for in the docs:
@echo -e "make test-doc-links DOC_LINK_VERSION=10.7"
#
# ownCloud core PHP dependencies
#
$(composer_deps): composer.json composer.lock
php $(COMPOSER_BIN) install --no-dev
$(composer_dev_deps): composer.json composer.lock
php $(COMPOSER_BIN) install
.PHONY: install-composer-release-deps
install-composer-release-deps: $(composer_deps)
.PHONY: install-composer-dev-deps
install-composer-dev-deps: $(composer_dev_deps)
.PHONY: install-composer-deps
install-composer-deps: install-composer-dev-deps
.PHONY: update-composer
update-composer:
rm -f composer.lock
php $(COMPOSER_BIN) install --prefer-dist
.PHONY: clean-composer-deps
clean-composer-deps:
rm -Rf lib/composer
rm -Rf vendor-bin/**/vendor vendor-bin/**/composer.lock
#
# Node JS dependencies for tools
#
$(nodejs_deps): build/package.json
@test -x "$(YARN)" || { echo "yarn is not available on your system, please install yarn (npm install -g yarn)" && exit 1; }
cd $(NODE_PREFIX) && $(YARN) install
touch $@
# alias for core deps
$(core_vendor): $(nodejs_deps)
.PHONY: install-nodejs-deps
install-nodejs-deps: $(nodejs_deps)
.PHONY: clean-nodejs-deps
clean-nodejs-deps:
rm -Rf $(core_vendor)
rm -Rf $(nodejs_deps)
##---------------------
## Tests
##---------------------
.PHONY: test-php-unit
test-php-unit: $(composer_dev_deps)
PHPUNIT=$(PHPUNIT) build/autotest.sh $(TEST_DATABASE) $(TEST_PHP_SUITE)
.PHONY: test-external
test-external: $(composer_dev_deps)
PHPUNIT=$(PHPUNIT) build/autotest-external.sh $(TEST_DATABASE) $(TEST_EXTERNAL_ENV) $(TEST_PHP_SUITE)
.PHONY: test-js
test-js: $(nodejs_deps)
NODE_PATH='$(NODE_PREFIX)/node_modules' $(KARMA) start tests/karma.config.js --single-run
.PHONY: test-js-debug
test-js-debug: $(nodejs_deps)
NODE_PATH='$(NODE_PREFIX)/node_modules' $(KARMA) start tests/karma.config.js
.PHONY: test-acceptance-api
test-acceptance-api: $(acceptance_test_deps)
./tests/acceptance/run.sh --type api
.PHONY: test-acceptance-cli
test-acceptance-cli: $(acceptance_test_deps)
./tests/acceptance/run.sh --type cli
.PHONY: test-acceptance-webui
test-acceptance-webui: $(acceptance_test_deps)
./tests/acceptance/run.sh --type webUI
.PHONY: test-php-style
test-php-style: vendor-bin/owncloud-codestyle/vendor vendor-bin/php_codesniffer/vendor
$(PHP_CS_FIXER) fix -v --diff --allow-risky yes --dry-run
$(PHP_CODESNIFFER) --cache --runtime-set ignore_warnings_on_exit --standard=phpcs.xml tests/acceptance tests/TestHelpers
php build/OCPSinceChecker.php
.PHONY: test-php-style-fix
test-php-style-fix: vendor-bin/owncloud-codestyle/vendor
$(PHP_CS_FIXER) fix -v --diff --allow-risky yes
.PHONY: test-php-phan
test-php-phan: vendor-bin/phan/vendor
$(PHAN) --config-file .phan/config.php --require-config-exists -p
.PHONY: test-php-phpstan
test-php-phpstan: vendor-bin/phpstan/vendor
$(PHPSTAN) analyse --memory-limit=2G --configuration=./phpstan.neon --level=0 apps core settings lib/private lib/public ocs ocs-provider
.PHONY: test
test: test-php-style test-php-unit test-js test-acceptance-api test-acceptance-cli test-acceptance-webui
.PHONY: clean-test-acceptance
clean-test-acceptance:
$(MAKE) -C tests/acceptance clean
.PHONY: clean-test-results
clean-test-results:
rm -Rf tests/autotest-*results*.xml
$(MAKE) -C tests/acceptance clean
.PHONY: clean-test
clean-test: clean-test-acceptance clean-test-results
#
# Documentation
#
.PHONY: docs-js
docs-js: $(nodejs_deps)
$(JSDOC) -d build/jsdocs core/js/*.js core/js/**/*.js apps/*/js/*.js
.PHONY: docs
docs: docs-js
.PHONY: clean-docs
clean-docs:
rm -Rf build/jsdocs
.PHONY: test-doc-links
test-doc-links:
php tests/docs/DocLinksTest.php $(DOC_LINK_VERSION)
#
# Build distribution
#
$(dist_dir)/owncloud: $(composer_deps) $(core_vendor) $(core_all_src)
cd $(NODE_PREFIX) && $(YARN) run clean-modules
rm -Rf $@; mkdir -p $@/config
cp -RL $(core_all_src) $@
cp -R $(core_config_files) $@/config
find $@ -name .gitkeep -delete
find $@ -name .gitignore -delete
find $@ -name no-php -delete
rm -Rf $@/core/js/tests
rm -Rf $@/settings/tests
rm -Rf $@/core/vendor/*/{.bower.json,bower.json,package.json,testem.json}
rm -Rf $@/l10n/
find $@/core/ -iname \*.sh -delete
find $@/{apps/,lib/composer/,core/vendor/} \( \
-name bin -o \
-name test -o \
-name tests -o \
-name examples -o \
-name demo -o \
-name demos -o \
-name doc -o \
-name travis -o \
-iname \*.sh \
\) -print | xargs rm -Rf
find $@/{apps/,lib/composer/} -iname \*.exe -delete
# Set build
$(eval _BUILD="$(shell date -u --iso-8601=seconds) $(shell git rev-parse HEAD)")
# Replace channel in version.php
sed -i \
-e 's/$$OC_Channel.*$$/$$OC_Channel = '"'"$(RELEASE_CHANNEL)"'"';/g' \
-e 's/$$OC_Build.*$$/$$OC_Build = '"'"$(_BUILD)"'"';/g' \
$(dist_dir)/owncloud/version.php
$(dist_dir)/owncloud-core.tar.bz2: $(dist_dir)/owncloud
cd $(dist_dir) && tar cjf owncloud-core.tar.bz2 owncloud --format=gnu
$(dist_dir)/owncloud-core.zip: $(dist_dir)/owncloud
cd $(dist_dir) && zip -rq9 owncloud-core.zip owncloud
.PHONY: dist
dist: $(dist_dir)/owncloud-core.tar.bz2 $(dist_dir)/owncloud-core.zip
.PHONY: dist-dir
dist-dir: $(dist_dir)/owncloud
.PHONY: clean-dist
clean-dist:
rm -Rf $(dist_dir)
#
# Build qa distribution
#
$(dist_dir)/qa/owncloud: $(composer_dev_deps) $(core_vendor) $(core_all_src) $(core_test_dirs)
cd $(NODE_PREFIX) && $(YARN) run clean-modules
rm -Rf $@; mkdir -p $@/config
cp -RL $(core_all_src) $@
cp -Rf $(core_test_dirs) $@
cp -R $(core_config_files) $@/config
rm -Rf $@/lib/composer/bin; cp -R lib/composer/bin $@/lib/composer/bin
find $@ -name .gitkeep -delete
find $@ -name .gitignore -delete
find $@ -name no-php -delete
rm -Rf $@/core/vendor/*/{.bower.json,bower.json,package.json,testem.json}
rm -Rf $@/l10n/
find $@/core/ -iname \*.sh -delete
find $@/{apps/,lib/composer/,core/vendor/} \( \
-name test -o \
-name examples -o \
-name demo -o \
-name demos -o \
-name doc -o \
-name travis -o \
-iname \*.sh \
\) -print | xargs rm -Rf
find $@/{apps/,lib/composer/} -iname \*.exe -delete
# Set build
$(eval _BUILD="$(shell date -u --iso-8601=seconds) $(shell git rev-parse HEAD)")
# Replace channel in version.php
sed -i \
-e 's/$$OC_Channel.*$$/$$OC_Channel = '"'"$(RELEASE_CHANNEL)"'"';/g' \
-e 's/$$OC_Build.*$$/$$OC_Build = '"'"$(_BUILD)"'"';/g' \
$(dist_dir)/qa/owncloud/version.php
$(dist_dir)/owncloud-qa-core.tar.bz2: $(dist_dir)/qa/owncloud
cd $(dist_dir)/qa && tar cjf owncloud-qa-core.tar.bz2 owncloud --format=gnu
.PHONY: dist-qa
dist-qa: $(dist_dir)/owncloud-qa-core.tar.bz2
.PHONY: dist-dir-qa
dist-dir-qa: $(dist_dir)/qa/owncloud
#
# Miscellaneous tools
#
.PHONY: update-php-license-header
update-php-license-header:
php build/license.php
.PHONY: changelog
changelog:
@echo ======================================================================
@echo WARNING: Please do NOT commit changes in the CHANGELOG.md file to git!
@echo This file is autogenerated on the master branch.
@echo Committing changes to this file will result in merge conflicts.
@echo ======================================================================
docker run --rm -v $(work_dir):$(work_dir) -w $(work_dir) toolhippie/calens calens >| CHANGELOG.md
docker run --rm -v $(work_dir):$(work_dir) -w $(work_dir) toolhippie/calens calens -t changelog/CHANGELOG-html.tmpl >| CHANGELOG.html
#
# Dependency management
#--------------------------------------
composer.lock: composer.json
@echo composer.lock is not up to date.
vendor: composer.lock
composer install --no-dev
vendor/bamarni/composer-bin-plugin: composer.lock
composer install
.PHONY: vendor-bin-deps
vendor-bin-deps: vendor-bin/owncloud-codestyle/vendor vendor-bin/php_codesniffer/vendor vendor-bin/phan/vendor vendor-bin/phpstan/vendor vendor-bin/behat/vendor
.PHONY: vendor-bin-codestyle
vendor-bin-codestyle: vendor-bin/owncloud-codestyle/vendor
.PHONY: vendor-bin-codesniffer
vendor-bin-codesniffer: vendor-bin/php_codesniffer/vendor
.PHONY: vendor-bin-phan
vendor-bin-phan: vendor-bin/phan/vendor
.PHONY: vendor-bin-phpstan
vendor-bin-phpstan: vendor-bin/phpstan/vendor
.PHONY: vendor-bin-behat
vendor-bin-behat: vendor-bin/behat/vendor
vendor-bin/owncloud-codestyle/vendor: vendor/bamarni/composer-bin-plugin vendor-bin/owncloud-codestyle/composer.lock
composer bin owncloud-codestyle install --no-progress
vendor-bin/owncloud-codestyle/composer.lock: vendor-bin/owncloud-codestyle/composer.json
@echo owncloud-codestyle composer.lock is not up to date.
vendor-bin/php_codesniffer/vendor: vendor/bamarni/composer-bin-plugin vendor-bin/php_codesniffer/composer.lock
composer bin php_codesniffer install --no-progress
vendor-bin/php_codesniffer/composer.lock: vendor-bin/php_codesniffer/composer.json
@echo php_codesniffer composer.lock is not up to date.
vendor-bin/phan/vendor: vendor/bamarni/composer-bin-plugin vendor-bin/phan/composer.lock
composer bin phan install --no-progress
vendor-bin/phan/composer.lock: vendor-bin/phan/composer.json
@echo phan composer.lock is not up to date.
vendor-bin/phpstan/vendor: vendor/bamarni/composer-bin-plugin vendor-bin/phpstan/composer.lock
composer bin phpstan install --no-progress
vendor-bin/phpstan/composer.lock: vendor-bin/phpstan/composer.json
@echo phpstan composer.lock is not up to date.
vendor-bin/behat/vendor: vendor/bamarni/composer-bin-plugin vendor-bin/behat/composer.lock
composer bin behat install --no-progress
vendor-bin/behat/composer.lock: vendor-bin/behat/composer.json
@echo behat composer.lock is not up to date.