minivmac*: Use a subport for each model

This commit is contained in:
Ryan Schmidt
2018-07-08 17:37:44 -05:00
parent 98ba74bd7a
commit f6eb5a8f82
2 changed files with 340 additions and 150 deletions
+172 -76
View File
@@ -4,9 +4,11 @@ PortSystem 1.0
# Please keep the minivmac and minivmac-devel ports as similar as possible.
name minivmac-devel
conflicts minivmac
set my_name minivmac
set my_suffix -devel
name ${my_name}${my_suffix}
set my_subport [regsub -- {-devel$} ${subport} {}]
conflicts [lsearch -all -inline -not -exact [list ${my_subport} ${my_subport}-devel] ${subport}]
epoch 4
version 36.00alpha-20180506
set branch [join [lrange [split ${version} .] 0 1] .]
@@ -15,21 +17,55 @@ categories emulators aqua
maintainers {ryandesign @ryandesign}
license GPL-2
homepage http://www.gryphel.com/c/minivmac/alpha.html
use_zip yes
platforms macosx
use_parallel_build yes
dist_subdir ${my_name}
#distname ${my_name}${my_version}-${branch}
distname ${my_name}${my_version}
description an emulator of the Macintosh Plus and other early Macintosh models
long_description The Mini vMac emulator helps preserve software made for early \
Macintosh computers -- those sold by Apple from 1984 to 1996 \
based on Motorola's 680x0 microprocessors. \
The best-tested version emulates a Macintosh Plus, but there are \
also emulations of the Macintosh 128K, 512K, 512Ke, SE, Classic, \
and SE FDHD, and work on Macintosh II emulation is in progress.
long_description Mini vMac emulates early Macintosh computers that use \
Motorola's 680x0 processors, sold by Apple from 1984 \
to 1996.
options my_variations
default my_variations {}
if {${subport} eq ${name}} {
livecheck.type regex
livecheck.url ${homepage}
# livecheck.version ${my_version}-${branch}
livecheck.version ${my_version}
livecheck.regex ${my_name}-?(\[0-9.-\]+)\\.src
long_description-append \
The best-tested variation emulates a Macintosh Plus, \
but it can also emulate a Macintosh 128K, 512K, 512Ke, \
SE, SE FDHD, Classic, or Macintosh II.
revision 1
supported_archs noarch
depends_run port:${my_name}-plus${my_suffix}
distfiles
use_configure no
build {}
destroot {
xinstall -d ${destroot}${prefix}/share/doc/${subport}
system "echo ${subport} is a stub port > ${destroot}${prefix}/share/doc/${subport}/README"
}
notes "
The ${subport} stub port is not meant to be installed. Instead,\
install one (or more) of the available subports corresponding to the\
Macintosh model(s) you wish to emulate. Use `port info --subports\
${subport}\' to see the list of available subports.
"
} else {
livecheck.type none
revision 0
supported_archs i386 ppc
# distname ${my_name}${my_version}-${branch}
distname ${my_name}${my_version}
use_zip yes
master_sites http://www.gryphel.com/d/minivmac/c/:minivmacsource \
sourceforge:project/minivmac/minivmac-extras/extras6:minivmacextras6 \
@@ -92,35 +128,7 @@ set my_bootstrap_app "Mini vMac Bootstrap.app"
set my_rom_file vMac.ROM
set my_base_options "-ef 1 -maintainer MacPorts -homepage https://www.macports.org -cl -eol unx -sony-sum 1 -sony-tag 1"
options my_variations
my_variations {128K} {-m 128K} \
{512K} {-m 128K -mem 512K} \
{512Ke} {-m 512Ke} \
{Plus} {-m Plus -im 1} \
{SE} {-m SE} \
{SE FDHD} {-m SEFDHD} \
{Classic} {-m Classic} \
{II} {-m II -mem 8M -hres 800 -vres 600 -depth 3}
# To build the bootstrap, use "sudo port install bootstrap=yes +bootstrap".
# The variant is hidden because it is useful only to the port maintainer.
if {[tbool bootstrap]} {
variant bootstrap conflicts unsupported requires universal description {Build the bootstrap version of Mini vMac} {
my_variations {Bootstrap} {-m Plus -as 0 -bg 1 -mf 1 -sound 0 -speed a -var-fullscreen 0}
depends_build-append port:p7zip
depends_skip_archcheck p7zip
post-destroot {
exec 7za a ${destroot}${my_app_dir}/${my_name}-bootstrap-${version}_${revision}.zip ${destroot}${my_app_dir}/${my_bootstrap_app}
}
}
default_variants +bootstrap
}
variant universal {
configure.universal_args
configure.universal_archs ppc i386
}
supported_archs i386 ppc
configure.universal_archs {*}${supported_archs}
pre-extract {
if {[my_real_rom_file] eq ""} {
@@ -213,6 +221,7 @@ pre-configure {
foreach my_arch [get_canonical_archs] {
set my_target [my_arch_to_target ${my_arch}]
foreach {my_machine my_variation_options} ${my_variations} {
set my_variation ${my_version}_${revision}-[strsed [string tolower ${my_machine}] {g/[^a-z0-9_-]//}]-${my_target}
if {${i} > 0} {
lappend configure_args \;
}
@@ -220,7 +229,7 @@ pre-configure {
${my_base_options} \
-t ${my_target} \
${my_variation_options} \
-n ${my_version}_${revision}-[strsed [string tolower ${my_machine}] {g/[^a-z0-9_-]//}]-${my_target}
-n ${my_variation}
incr i
}
}
@@ -281,7 +290,7 @@ post-configure {
system -W ${build.dir} "tar xf '${my_src_tarball}'"
move ${build.dir}/${my_variation} ${build.dir}/${my_variation_dir}
if {[variant_exists bootstrap] && [variant_isset bootstrap]} {
if {${subport} eq "${my_name}-bootstrap${my_suffix}"} {
# Change the "export" function so that exported files are written to the same
# directory as Mini vMac, instead of prompting for a location.
system -W ${build.dir}/${my_variation_dir} "patch -p0 < ${filespath}/patch-src-MYOSGLUE.c.diff"
@@ -308,45 +317,26 @@ post-configure {
}
}
set my_share_dir ${prefix}/share/${my_name}
post-build {
set i 0
foreach my_arch [get_canonical_archs] {
set my_target [my_arch_to_target ${my_arch}]
foreach {my_machine unused} ${my_variations} {
if {[variant_isset universal]} {
reinplace "s|${my_target}|umch|" ${build.dir}/${my_arch}/${my_machine}/minivmac.app/Contents/Info.plist
}
if {![variant_exists bootstrap] || ![variant_isset bootstrap]} {
# To save space, keep only a single copy of the Resources directory.
set my_resources_dir ${build.dir}/${my_arch}/${my_machine}/minivmac.app/Contents/Resources
if {0 == ${i}} {
move ${my_resources_dir} ${build.dir}
} else {
delete ${my_resources_dir}
}
ln -s ${my_share_dir}/Resources ${my_resources_dir}
}
incr i
# Install the prettier icons.
xinstall -m 0644 ${worksrcpath}/${my_icons}/icons/AppIcon.icns \
${build.dir}/${my_arch}/${my_machine}/minivmac.app/Contents/Resources/ICONAPPO.icns
xinstall -m 0644 ${worksrcpath}/${my_icons}/icons/DskIcon.icns \
${build.dir}/${my_arch}/${my_machine}/minivmac.app/Contents/Resources/ICONDSKO.icns
xinstall -m 0644 ${worksrcpath}/${my_icons}/icons/RomIcon.icns \
${build.dir}/${my_arch}/${my_machine}/minivmac.app/Contents/Resources/ICONROMO.icns
}
}
if {![variant_exists bootstrap] || ![variant_isset bootstrap]} {
# Install the prettier icons.
xinstall -m 0644 ${worksrcpath}/${my_icons}/icons/AppIcon.icns ${build.dir}/Resources/ICONAPPO.icns
xinstall -m 0644 ${worksrcpath}/${my_icons}/icons/DskIcon.icns ${build.dir}/Resources/ICONDSKO.icns
xinstall -m 0644 ${worksrcpath}/${my_icons}/icons/RomIcon.icns ${build.dir}/Resources/ICONROMO.icns
}
}
destroot {
if {![variant_exists bootstrap] || ![variant_isset bootstrap]} {
# Install the global Resources directory.
xinstall -d ${destroot}${my_share_dir}
copy ${build.dir}/Resources ${destroot}${my_share_dir}
}
# Install the programs.
foreach my_arch [get_canonical_archs] {
if {[variant_isset universal]} {
@@ -365,6 +355,118 @@ destroot {
}
}
pre-activate {
if {![catch {set installed [lindex [registry_active ${name}] 0]}]} {
set installed_version [lindex ${installed} 1]
set installed_revision [lindex ${installed} 2]
set installed_epoch [lindex ${installed} 5]
if {[vercmp ${installed_epoch} 4] < 0 || (
[vercmp ${installed_epoch} 4] == 0 && (
[vercmp ${installed_version} 36.00alpha-20180506] < 0 || (
[vercmp ${installed_version} 36.00alpha-20180506] == 0 && [vercmp ${installed_revision} 1] < 0
)
)
)} {
registry_deactivate_composite ${name} "" [list ports_nodepcheck 1]
}
}
}
}
subport ${my_name}-128k${my_suffix} {
my_variations {128K} {-m 128K}
}
subport ${my_name}-512k${my_suffix} {
my_variations {512K} {-m 128K -mem 512K}
}
subport ${my_name}-512ke${my_suffix} {
my_variations {512Ke} {-m 512Ke}
}
subport ${my_name}-plus${my_suffix} {
my_variations {Plus} {-m Plus}
default_variants +icon_master
}
subport ${my_name}-se${my_suffix} {
my_variations {SE} {-m SE}
}
subport ${my_name}-sefdhd${my_suffix} {
my_variations {SE FDHD} {-m SEFDHD}
}
subport ${my_name}-classic${my_suffix} {
my_variations {Classic} {-m Classic}
}
subport ${my_name}-ii${my_suffix} {
my_variations {II} {-m II -mem 8M -hres 800 -vres 600 -depth 3}
}
# To build the bootstrap application, use:
# sudo port destroot minivmac-devel bootstrap=yes subport=minivmac-bootstrap-devel
# The subport is hidden because it is useful only to the port maintainer.
if {[tbool bootstrap]} {
subport ${my_name}-bootstrap${my_suffix} {
my_variations {Bootstrap} {-m Plus -as 0 -bg 1 -mf 1 -sound 0 -speed a -var-fullscreen 0}
description Mini vMac Bootstrap
long_description A copy of Mini vMac specially configured to be \
used to build other copies of Mini vMac.
depends_build-append port:p7zip
depends_skip_archcheck-append \
p7zip
if {${os.major} < 11} {
default_variants +universal
}
set output_archive ${workpath}/${my_name}-bootstrap-${version}_${revision}.zip
post-destroot {
exec 7za a ${output_archive} ${destroot}${my_app_dir}/${my_bootstrap_app}
ui_msg "The distribution zip file has been created:"
ui_msg
ui_msg "${output_archive}"
if {![variant_isset universal] || "ppc" ni ${configure.universal_archs}} {
ui_msg
ui_warn "DON'T DISTRIBUTE THIS FILE! It doesn't contain all the"
ui_warn "necessary architectures. To build a distributable"
ui_warn "bootstrap app, use the universal variant and build on"
ui_warn "Mac OS X Leopard or Snow Leopard."
}
}
}
}
if {${subport} ni [list "${my_name}${my_suffix}" "${my_name}-bootstrap${my_suffix}"]} {
description a Macintosh [lindex ${my_variations} 0] emulator
long_description-append \
This subport emulates a Macintosh \
[lindex ${my_variations} 0].
if {[lindex ${my_variations} 0] eq "Plus"} {
long_description-append \
This is the best-tested variation.
}
long_description-append \
There are other subports that emulate other Macintosh \
models.
variant icon_master description {Take ownership of disk image files and ROM image files; at most one copy of Mini vMac should do this} {
set my_base_options "${my_base_options} -im 1"
}
}
# Returns the full path to the ROM file, wherever the user has it,
# or the empty string if the user doesn't have it.
proc my_real_rom_file {} {
@@ -415,9 +517,3 @@ proc my_detach_disk_image {mountpoint} {
system "hdiutil detach ${mountpoint} -force"
delete ${mountpoint}
}
livecheck.type regex
livecheck.url ${homepage}
#livecheck.version ${my_version}-${branch}
livecheck.version ${my_version}
livecheck.regex ${my_name}-?(\[0-9.-\]+)\\.src
+168 -74
View File
@@ -4,29 +4,63 @@ PortSystem 1.0
# Please keep the minivmac and minivmac-devel ports as similar as possible.
name minivmac
conflicts minivmac-devel
set my_name minivmac
set my_suffix {}
name ${my_name}${my_suffix}
set my_subport [regsub -- {-devel$} ${subport} {}]
conflicts [lsearch -all -inline -not -exact [list ${my_subport} ${my_subport}-devel] ${subport}]
version 3.5.8
set my_version [strsed ${version} {g/^.*-20//}]
categories emulators aqua
maintainers {ryandesign @ryandesign}
license GPL-2
homepage http://www.gryphel.com/c/minivmac/
use_zip yes
platforms macosx
use_parallel_build yes
dist_subdir ${my_name}
distname ${my_name}-${my_version}
description an emulator of the Macintosh Plus and other early Macintosh models
long_description The Mini vMac emulator helps preserve software made for early \
Macintosh computers -- those sold by Apple from 1984 to 1996 \
based on Motorola's 680x0 microprocessors. \
The best-tested version emulates a Macintosh Plus, but there are \
also emulations of the Macintosh 128K, 512K, 512Ke, SE, Classic, \
and SE FDHD, and work on Macintosh II emulation is in progress.
long_description Mini vMac emulates early Macintosh computers that use \
Motorola's 680x0 processors, sold by Apple from 1984 \
to 1996.
options my_variations
default my_variations {}
if {${subport} eq ${name}} {
livecheck.type regex
livecheck.url ${homepage}doc/download.html
livecheck.regex ${my_name}-(\[0-9.\]+)\\.src
long_description-append \
The best-tested variation emulates a Macintosh Plus, \
but it can also emulate a Macintosh 128K, 512K, 512Ke, \
SE, SE FDHD, Classic, or Macintosh II.
revision 1
supported_archs noarch
depends_run port:${my_name}-plus${my_suffix}
distfiles
use_configure no
build {}
destroot {
xinstall -d ${destroot}${prefix}/share/doc/${subport}
system "echo ${subport} is a stub port > ${destroot}${prefix}/share/doc/${subport}/README"
}
notes "
The ${subport} stub port is not meant to be installed. Instead,\
install one (or more) of the available subports corresponding to the\
Macintosh model(s) you wish to emulate. Use `port info --subports\
${subport}\' to see the list of available subports.
"
} else {
livecheck.type none
revision 0
supported_archs i386 ppc
distname ${my_name}-${my_version}
use_zip yes
master_sites http://www.gryphel.com/d/minivmac/minivmac-${my_version}/:minivmacsource \
sourceforge:project/minivmac/minivmac-extras/extras6:minivmacextras6 \
@@ -88,35 +122,7 @@ set my_bootstrap_app "Mini vMac Bootstrap.app"
set my_rom_file vMac.ROM
set my_base_options "-maintainer MacPorts -homepage https://www.macports.org -cl -eol unx -sony-sum 1 -sony-tag 1"
options my_variations
my_variations {128K} {-m 128K} \
{512K} {-m 128K -mem 512K} \
{512Ke} {-m 512Ke} \
{Plus} {-m Plus -im 1} \
{SE} {-m SE} \
{SE FDHD} {-m SEFDHD} \
{Classic} {-m Classic} \
{II} {-m II -mem 8M -hres 800 -vres 600 -depth 3}
# To build the bootstrap, use "sudo port install bootstrap=yes +bootstrap".
# The variant is hidden because it is useful only to the port maintainer.
if {[tbool bootstrap]} {
variant bootstrap conflicts unsupported requires universal description {Build the bootstrap version of Mini vMac} {
my_variations {Bootstrap} {-m Plus -as 0 -bg 1 -mf 1 -sound 0 -speed a -var-fullscreen 0}
depends_build-append port:p7zip
depends_skip_archcheck p7zip
post-destroot {
exec 7za a ${destroot}${my_app_dir}/${my_name}-bootstrap-${version}_${revision}.zip ${destroot}${my_app_dir}/${my_bootstrap_app}
}
}
default_variants +bootstrap
}
variant universal {
configure.universal_args
configure.universal_archs ppc i386
}
supported_archs i386 ppc
configure.universal_archs {*}${supported_archs}
pre-extract {
if {[my_real_rom_file] eq ""} {
@@ -185,7 +191,7 @@ post-patch {
# See README-binary-patchfiles.md in the files directory for instructions
# on recreating these binary patchfiles.
# Modify the AutQuit7 disk to have an alias "app" pointing to the MnvM_b34
# Modify the AutQuit7 disk to have an alias "app" pointing to the MnvM_b35
# application and an 8192-byte TeachText file called "doc" (containing
# "@START@", 8180 periods and spaces, and "@END@").
system -W ${worksrcpath}/${my_autoquit} "${prefix}/bin/bspatch '${my_autoquit}.dsk' '${my_autoquit}.dsk.tmp' '${filespath}/patch-${my_autoquit}.dsk.bsdiff'"
@@ -209,6 +215,7 @@ pre-configure {
foreach my_arch [get_canonical_archs] {
set my_target [my_arch_to_target ${my_arch}]
foreach {my_machine my_variation_options} ${my_variations} {
set my_variation ${my_version}_${revision}-[strsed [string tolower ${my_machine}] {g/[^a-z0-9_-]//}]-${my_target}
if {${i} > 0} {
lappend configure_args \;
}
@@ -216,7 +223,7 @@ pre-configure {
${my_base_options} \
-t ${my_target} \
${my_variation_options} \
-n ${my_version}_${revision}-[strsed [string tolower ${my_machine}] {g/[^a-z0-9_-]//}]-${my_target}
-n ${my_variation}
incr i
}
}
@@ -257,7 +264,7 @@ post-configure {
system -W ${build.dir} "tar xf '${my_src_tarball}'"
move ${build.dir}/${my_variation} ${build.dir}/${my_variation_dir}
if {[variant_exists bootstrap] && [variant_isset bootstrap]} {
if {${subport} eq "${my_name}-bootstrap${my_suffix}"} {
# Change the "export" function so that exported files are written to the same
# directory as Mini vMac, instead of prompting for a location.
system -W ${build.dir}/${my_variation_dir} "patch -p0 < ${filespath}/patch-src-MYOSGLUE.c.diff"
@@ -284,45 +291,26 @@ post-configure {
}
}
set my_share_dir ${prefix}/share/${my_name}
post-build {
set i 0
foreach my_arch [get_canonical_archs] {
set my_target [my_arch_to_target ${my_arch}]
foreach {my_machine unused} ${my_variations} {
if {[variant_isset universal]} {
reinplace "s|${my_target}|umch|" ${build.dir}/${my_arch}/${my_machine}/minivmac.app/Contents/Info.plist
}
if {![variant_exists bootstrap] || ![variant_isset bootstrap]} {
# To save space, keep only a single copy of the Resources directory.
set my_resources_dir ${build.dir}/${my_arch}/${my_machine}/minivmac.app/Contents/Resources
if {0 == ${i}} {
move ${my_resources_dir} ${build.dir}
} else {
delete ${my_resources_dir}
}
ln -s ${my_share_dir}/Resources ${my_resources_dir}
}
incr i
# Install the prettier icons.
xinstall -m 0644 ${worksrcpath}/${my_icons}/icons/AppIcon.icns \
${build.dir}/${my_arch}/${my_machine}/minivmac.app/Contents/Resources/ICONAPPO.icns
xinstall -m 0644 ${worksrcpath}/${my_icons}/icons/DskIcon.icns \
${build.dir}/${my_arch}/${my_machine}/minivmac.app/Contents/Resources/ICONDSKO.icns
xinstall -m 0644 ${worksrcpath}/${my_icons}/icons/RomIcon.icns \
${build.dir}/${my_arch}/${my_machine}/minivmac.app/Contents/Resources/ICONROMO.icns
}
}
if {![variant_exists bootstrap] || ![variant_isset bootstrap]} {
# Install the prettier icons.
xinstall -m 0644 ${worksrcpath}/${my_icons}/icons/AppIcon.icns ${build.dir}/Resources/ICONAPPO.icns
xinstall -m 0644 ${worksrcpath}/${my_icons}/icons/DskIcon.icns ${build.dir}/Resources/ICONDSKO.icns
xinstall -m 0644 ${worksrcpath}/${my_icons}/icons/RomIcon.icns ${build.dir}/Resources/ICONROMO.icns
}
}
destroot {
if {![variant_exists bootstrap] || ![variant_isset bootstrap]} {
# Install the global Resources directory.
xinstall -d ${destroot}${my_share_dir}
copy ${build.dir}/Resources ${destroot}${my_share_dir}
}
# Install the programs.
foreach my_arch [get_canonical_archs] {
if {[variant_isset universal]} {
@@ -341,6 +329,116 @@ destroot {
}
}
pre-activate {
if {![catch {set installed [lindex [registry_active ${name}] 0]}]} {
set installed_version [lindex ${installed} 1]
set installed_revision [lindex ${installed} 2]
set installed_epoch [lindex ${installed} 5]
if {[vercmp ${installed_epoch} 0] == 0 && (
[vercmp ${installed_version} 3.5.8] < 0 || (
[vercmp ${installed_version} 3.5.8] == 0 && [vercmp ${installed_revision} 1] < 0
)
)} {
registry_deactivate_composite ${name} "" [list ports_nodepcheck 1]
}
}
}
}
subport ${my_name}-128k${my_suffix} {
my_variations {128K} {-m 128K}
}
subport ${my_name}-512k${my_suffix} {
my_variations {512K} {-m 128K -mem 512K}
}
subport ${my_name}-512ke${my_suffix} {
my_variations {512Ke} {-m 512Ke}
}
subport ${my_name}-plus${my_suffix} {
my_variations {Plus} {-m Plus}
default_variants +icon_master
}
subport ${my_name}-se${my_suffix} {
my_variations {SE} {-m SE}
}
subport ${my_name}-sefdhd${my_suffix} {
my_variations {SE FDHD} {-m SEFDHD}
}
subport ${my_name}-classic${my_suffix} {
my_variations {Classic} {-m Classic}
}
subport ${my_name}-ii${my_suffix} {
my_variations {II} {-m II -mem 8M -hres 800 -vres 600 -depth 3}
}
# To build the bootstrap application, use:
# sudo port destroot minivmac bootstrap=yes subport=minivmac-bootstrap
# The subport is hidden because it is useful only to the port maintainer.
if {[tbool bootstrap]} {
subport ${my_name}-bootstrap${my_suffix} {
my_variations {Bootstrap} {-m Plus -as 0 -bg 1 -mf 1 -sound 0 -speed a -var-fullscreen 0}
description Mini vMac Bootstrap
long_description A copy of Mini vMac specially configured to be \
used to build other copies of Mini vMac.
depends_build-append port:p7zip
depends_skip_archcheck-append \
p7zip
if {${os.major} < 11} {
default_variants +universal
}
set output_archive ${workpath}/${my_name}-bootstrap-${version}_${revision}.zip
post-destroot {
exec 7za a ${output_archive} ${destroot}${my_app_dir}/${my_bootstrap_app}
ui_msg "The distribution zip file has been created:"
ui_msg
ui_msg "${output_archive}"
if {![variant_isset universal] || "ppc" ni ${configure.universal_archs}} {
ui_msg
ui_warn "DON'T DISTRIBUTE THIS FILE! It doesn't contain all the"
ui_warn "necessary architectures. To build a distributable"
ui_warn "bootstrap app, use the universal variant and build on"
ui_warn "Mac OS X Leopard or Snow Leopard."
}
}
}
}
if {${subport} ni [list "${my_name}${my_suffix}" "${my_name}-bootstrap${my_suffix}"]} {
description a Macintosh [lindex ${my_variations} 0] emulator
long_description-append \
This subport emulates a Macintosh \
[lindex ${my_variations} 0].
if {[lindex ${my_variations} 0] eq "Plus"} {
long_description-append \
This is the best-tested variation.
}
long_description-append \
There are other subports that emulate other Macintosh \
models.
variant icon_master description {Take ownership of disk image files and ROM image files; at most one copy of Mini vMac should do this} {
set my_base_options "${my_base_options} -im 1"
}
}
# Returns the full path to the ROM file, wherever the user has it,
# or the empty string if the user doesn't have it.
proc my_real_rom_file {} {
@@ -375,7 +473,3 @@ proc my_arch_to_target {arch} {
}
}
}
livecheck.type regex
livecheck.url ${homepage}doc/download.html
livecheck.regex ${my_name}-(\[0-9.\]+)\\.src