blob: 779f07347548aade4699600349f4348aeeb25a37 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
|
declare composerLock
declare version
declare composerNoDev
declare composerNoPlugins
declare composerNoScripts
preConfigureHooks+=(composerRepositoryConfigureHook)
preBuildHooks+=(composerRepositoryBuildHook)
preCheckHooks+=(composerRepositoryCheckHook)
preInstallHooks+=(composerRepositoryInstallHook)
composerRepositoryConfigureHook() {
echo "Executing composerRepositoryConfigureHook"
if [[ -e "$composerLock" ]]; then
cp $composerLock composer.lock
fi
if [[ ! -f "composer.lock" ]]; then
composer \
--no-ansi \
--no-install \
--no-interaction \
${composerNoDev:+--no-dev} \
${composerNoPlugins:+--no-plugins} \
${composerNoScripts:+--no-scripts} \
update
mkdir -p $out
cp composer.lock $out/
echo
echo 'No composer.lock file found, consider adding one to your repository to ensure reproducible builds.'
echo "In the meantime, a composer.lock file has been generated for you in $out/composer.lock"
echo
echo 'To fix the issue:'
echo "1. Copy the composer.lock file from $out/composer.lock to the project's source:"
echo " cp $out/composer.lock <path>"
echo '2. Add the composerLock attribute, pointing to the copied composer.lock file:'
echo ' composerLock = ./composer.lock;'
echo
exit 1
fi
echo "Finished composerRepositoryConfigureHook"
}
composerRepositoryBuildHook() {
echo "Executing composerRepositoryBuildHook"
mkdir -p repository
# Build the local composer repository
# The command 'build-local-repo' is provided by the Composer plugin
# nix-community/composer-local-repo-plugin.
COMPOSER_CACHE_DIR=/dev/null \
composer-local-repo-plugin --no-ansi build-local-repo ${composerNoDev:+--no-dev} -r repository
echo "Finished composerRepositoryBuildHook"
}
composerRepositoryCheckHook() {
echo "Executing composerRepositoryCheckHook"
composer validate --no-ansi --no-interaction
echo "Finished composerRepositoryCheckHook"
}
composerRepositoryInstallHook() {
echo "Executing composerRepositoryInstallHook"
mkdir -p $out
cp -ar repository/. $out/
# Copy the composer.lock files to the output directory, to be able to validate consistency with
# the src composer.lock file where this fixed-output derivation is used
cp composer.lock $out/
echo "Finished composerRepositoryInstallHook"
}
|