ERPNext Conference 2019* ERPNext.com Blog

ERPNext + Python 3

erpnext
frappe
python3

#1

Namaste,

We’re glad to announce that we’re soon porting from developing Frappe Applications (Frappe, ERPNext, etc.) with Python 3 (3.5+ and above, it was time we did) and drop our support for Python 2 (soon). This decision comes after a call made out by the PEP team to support Python 2.7 until 2020. We’re also witnessing a large number of popular Python libs porting to Python 3.

Complete support shall be provided for Frappe Apps published by the team at Frappe. We do not provide extended support to any apps published beyond Frappe. In case of your custom applications, here’s an excellent cheat sheet to have your apps ported to. By default, Frappe will use future and six for compatibility ports.

All development for this port will continue on our “develop” branch. You can raise bugs and issues (and assign it to me :smile:) in case there’s errors.

To switch to Python 3, ensure you have Python 3 installed.

For macOS, if you’re using brew, simply install on the command-line as follows:

$ brew install python

For Ubuntu/Debian:

$ sudo apt-get install python3-dev

Next, update your bench (should be on the latest commit published on the “master” branch) simply with a git pull. (bench although being P3 compat, wouldn’t matter for migration).

Finally, to create a New Bench Instance on a Python 3 environment, simply

$ bench init [BENCH_NAME] --python python3

where --python is the path to your python executable.

To migrate a current bench instance to Python 3, simply run within your bench instance:

$ bench migrate-env python3

where your 3rd parameter is the path to your python executable (mostly $PYTHONPATH). By default, this ensures a backup of your current environment within archived_envs in your bench instance. You can also be brave to use the --no-backup flag.

NOTE: PLEASE DO NOT USE THIS FOR PRODUCTION UNTIL FURTHER NOTICE.

  • Available only on 10-develop version.
  • For our next major version, we’ll be supporting both - Python 2.7 and Python 3.5+
  • After that, our next major version will drop Python 2.7 support.

Mess up your development workspace, help us raise issues and testing.

Happy Hacking!

EDIT

We’ve got https://demo.erpnext.com, https://translate.erpnext.com and a lot more ported to Python 3. You could also test out other compilers - PyPy for performance tests. For e.g.

$ bench migrate-env pypy

NOTE: Homebrew will now consider Python 3 as its default CPython interpreter.

Cheers
Achilles (git.io/achilles)


ERPNext V11, Python 3 or 2.7
Rollback to Python 2.x instead of 3
Why not Python 3 for developing
Consider deprecating python 2.7 (And any possible python 2 compatibility) (Duplicate)
Bench start execution failed (Wrote js/item-dashboard.min.js)
Demo.erpnext.com - up and running again, but is on v12
Upgrading to Python 2.7 => 3
#2

#3

so what about old bench instance and sites?


#4

Running on ErpNEXT Production Image

$ sudo apt-get install python3-dev
$ bench migrate-env python3

ENV:

  • ERPNext: v10.0.19 (master)
  • Frappe Framework: v10.0.20 (master)
  • OS: Ubuntu 14.04.5 LTS

Raised following issue:


  Collecting frappe (from frappe-ldap==1.0.0)
  Downloading frappe-2.1.4.tar.gz (217kB)
    100% |████████████████████████████████| 225kB 1.2MB/s
    Complete output from command python setup.py egg_info:
    Traceback (most recent call last):
      File "/tmp/pip-build-8dlu_r2r/frappe/setup.py", line 8, in <module>
        import testfm
    ImportError: No module named 'testfm'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "/tmp/pip-build-8dlu_r2r/frappe/setup.py", line 10, in <module>
    raise LookupError("You must have test.fm >= 1.0.4 installed before (https://github.com/grafos-ml/frappe)")
LookupError: You must have test.fm >= 1.0.4 installed before (https://github.com/grafos-ml/frappe)

----------------------------------------
Command "python setup.py egg_info" failed with error code 1 in /tmp/pip-build-8dlu_r2r/frappe/
Traceback (most recent call last):
  File "/usr/local/bin/bench", line 11, in <module>
    load_entry_point('bench', 'console_scripts', 'bench')()
  File "/home/frappe/bench-repo/bench/cli.py", line 40, in cli
    bench_command()
  File "/usr/local/lib/python2.7/dist-packages/click/core.py", line 722, in __call__
    return self.main(*args, **kwargs)
  File "/usr/local/lib/python2.7/dist-packages/click/core.py", line 697, in main
    rv = self.invoke(ctx)
  File "/usr/local/lib/python2.7/dist-packages/click/core.py", line 1066, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "/usr/local/lib/python2.7/dist-packages/click/core.py", line 895, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "/usr/local/lib/python2.7/dist-packages/click/core.py", line 535, in invoke
    return callback(*args, **kwargs)
  File "/home/frappe/bench-repo/bench/commands/__init__.py", line 138, in migrate_env
    pip = pip, app = papp
  File "/home/frappe/bench-repo/bench/utils.py", line 142, in exec_cmd
    raise CommandFailedError(cmd)
bench.utils.CommandFailedError: /tmp/tmpKslECl/env/bin/pip install -e /home/frappe/frappe-bench/apps/frappe_ldap

#5

Hi @aleksas, updated bench Bench PR - 563. Please update your bench once again and try the same. :smile:

@JoEz

To migrate a current bench instance to Python 3, simply run within your bench instance:

$ bench migrate-env python3

#6

Now this:

Collecting python-ldap (from frappe-ldap==1.0.0)
  Downloading python-ldap-2.5.2.tar.gz (297kB)
    100% |████████████████████████████████| 307kB 1.5MB/s
    Complete output from command python setup.py egg_info:
    Traceback (most recent call last):
      File "<string>", line 1, in <module>
      File "/tmp/pip-build-y4cft119/python-ldap/setup.py", line 9, in <module>
        from ConfigParser import ConfigParser
    ImportError: No module named 'ConfigParser'

    ----------------------------------------
Command "python setup.py egg_info" failed with error code 1 in /tmp/pip-build-y4cft119/python-ldap/
Traceback (most recent call last):
  File "/usr/local/bin/bench", line 11, in <module>
    load_entry_point('bench', 'console_scripts', 'bench')()
  File "/home/frappe/bench-repo/bench/cli.py", line 40, in cli
    bench_command()
  File "/usr/local/lib/python2.7/dist-packages/click/core.py", line 722, in __call__
    return self.main(*args, **kwargs)
  File "/usr/local/lib/python2.7/dist-packages/click/core.py", line 697, in main
    rv = self.invoke(ctx)
  File "/usr/local/lib/python2.7/dist-packages/click/core.py", line 1066, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "/usr/local/lib/python2.7/dist-packages/click/core.py", line 895, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "/usr/local/lib/python2.7/dist-packages/click/core.py", line 535, in invoke
    return callback(*args, **kwargs)
  File "/home/frappe/bench-repo/bench/commands/__init__.py", line 140, in migrate_env
    pip = pip, app = papp
  File "/home/frappe/bench-repo/bench/utils.py", line 142, in exec_cmd
    raise CommandFailedError(cmd)

#7

Let’s take the discussion to Issues? I’m mostly guessing you’ve got custom apps.


#8

I loathe to be a pedant, but this is on the wrong forum.


#9

Haha, well. As long as we get the message out there. This is going to hurt lot of custom apps! :smile:


#10

I think also there are nearly ten times the number of posts on the main forum compared to the Developers forum . So I would tend to agree with Achilles.
Perhaps it can be cross posted there too ?


#11

The primary intention of this post is to warn people to port to Python 3-based syntax in case of customised app development (this forum is filled with it)!

Also, it’d be nice if you can raise us issues when you switch to Python 3. I see no harm putting out Developer posts here, the community here is too huge to help us spread the word. Where else would be post? HackerNews? I bet I’d barely receive a few karma points on that!


#12

@aleksas

May be because you are on
ERPNext: v10.0.19 (master)

I was able to switch to python 3 from v10.1.4


#13

Got an issue while migrating, custom apps are migrated before erpnext so it fails looking up to erpnext requirements:

INFO:bench.utils:/home/frappe/frappe-bench/env/bin/pip install -e /home/frappe/frappe-bench/apps/my_custom_app
Obtaining file:///home/frappe/frappe-bench/apps/my_custom_app
Requirement already satisfied: frappe>=10 in ./apps/frappe (from my_custom_app==0.0.1)
Collecting erpnext>=9 (from my_custom_app==0.0.1)
  Could not find a version that satisfies the requirement erpnext>=9 (from my_custom_app==0.0.1) (from versions: )
No matching distribution found for erpnext>=9 (from my_custom_app==0.0.1)
Traceback (most recent call last):
  File "/usr/local/bin/bench", line 11, in <module>
    load_entry_point('bench', 'console_scripts', 'bench')()
  File "/home/frappe/bench-repo/bench/cli.py", line 40, in cli
    bench_command()
  File "/usr/local/lib/python2.7/dist-packages/click/core.py", line 722, in __call__
    return self.main(*args, **kwargs)
  File "/usr/local/lib/python2.7/dist-packages/click/core.py", line 697, in main
    rv = self.invoke(ctx)
  File "/usr/local/lib/python2.7/dist-packages/click/core.py", line 1066, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "/usr/local/lib/python2.7/dist-packages/click/core.py", line 895, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "/usr/local/lib/python2.7/dist-packages/click/core.py", line 535, in invoke
    return callback(*args, **kwargs)
  File "/home/frappe/bench-repo/bench/commands/__init__.py", line 150, in migrate_env
    pip = pip, app = papp
  File "/home/frappe/bench-repo/bench/utils.py", line 145, in exec_cmd
    raise CommandFailedError(cmd)

#14

That aspect was already established in private discussion, but I think I reproduced the issue on development version also. Not 100% sure though.
It was a while ago, since then I dropped the checking development version and got back to production.


#15

after migrating getting an error:

9:53:56 web.1            | INFO:werkzeug:172.19.0.1 - - [27/Feb/2018 19:53:56] "GET / HTTP/1.1" 500 -
19:53:56 web.1            | Traceback (most recent call last):
19:53:56 web.1            |   File "/home/frappe/frappe-bench/apps/frappe/frappe/middlewares.py", line 15, in __call__
19:53:56 web.1            |     return super(StaticDataMiddleware, self).__call__(environ, start_response)
19:53:56 web.1            |   File "/home/frappe/frappe-bench/env/lib/python3.5/site-packages/werkzeug/wsgi.py", line 766, in __call__
19:53:56 web.1            |     return self.app(environ, start_response)
19:53:56 web.1            |   File "/home/frappe/frappe-bench/env/lib/python3.5/site-packages/werkzeug/wsgi.py", line 766, in __call__
19:53:56 web.1            |     return self.app(environ, start_response)
19:53:56 web.1            |   File "/home/frappe/frappe-bench/env/lib/python3.5/site-packages/werkzeug/local.py", line 228, in application
19:53:56 web.1            |     return ClosingIterator(app(environ, start_response), self.cleanup)
19:53:56 web.1            |   File "/home/frappe/frappe-bench/env/lib/python3.5/site-packages/werkzeug/wrappers.py", line 308, in application
19:53:56 web.1            |     resp = f(*args[:-2] + (request,))
19:53:56 web.1            |   File "/home/frappe/frappe-bench/apps/frappe/frappe/app.py", line 88, in application
19:53:56 web.1            |     response = handle_exception(e)
19:53:56 web.1            |   File "/home/frappe/frappe-bench/apps/frappe/frappe/app.py", line 194, in handle_exception
19:53:56 web.1            |     http_status_code=http_status_code)
19:53:56 web.1            |   File "/home/frappe/frappe-bench/apps/frappe/frappe/website/render.py", line 72, in render
19:53:56 web.1            |     data = render_page(path)
19:53:56 web.1            |   File "/home/frappe/frappe-bench/apps/frappe/frappe/website/render.py", line 149, in render_page
19:53:56 web.1            |     return build(path)
19:53:56 web.1            |   File "/home/frappe/frappe-bench/apps/frappe/frappe/website/render.py", line 156, in build
19:53:56 web.1            |     return build_page(path)
19:53:56 web.1            |   File "/home/frappe/frappe-bench/apps/frappe/frappe/website/render.py", line 169, in build_page
19:53:56 web.1            |     context = get_context(path)
19:53:56 web.1            |   File "/home/frappe/frappe-bench/apps/frappe/frappe/website/context.py", line 28, in get_context
19:53:56 web.1            |     context = build_context(context)
19:53:56 web.1            |   File "/home/frappe/frappe-bench/apps/frappe/frappe/website/context.py", line 77, in build_context
19:53:56 web.1            |     context.update(get_website_settings())
19:53:56 web.1            |   File "/home/frappe/frappe-bench/apps/frappe/frappe/website/doctype/website_settings/website_settings.py", line 77, in get_website_settings
19:53:56 web.1            |     {"label": _("My Account"), "url": "/me"},
19:53:56 web.1            |   File "/home/frappe/frappe-bench/apps/frappe/frappe/__init__.py", line 56, in _
19:53:56 web.1            |     return get_full_dict(lang).get(msg) or msg
19:53:56 web.1            |   File "/home/frappe/frappe-bench/apps/frappe/frappe/translate.py", line 189, in get_full_dict
19:53:56 web.1            |     frappe.local.lang_full_dict = load_lang(lang)
19:53:56 web.1            |   File "/home/frappe/frappe-bench/apps/frappe/frappe/translate.py", line 215, in load_lang
19:53:56 web.1            |     out.update(get_translation_dict_from_file(path, lang, app) or {})
19:53:56 web.1            |   File "/home/frappe/frappe-bench/apps/frappe/frappe/translate.py", line 231, in get_translation_dict_from_file
19:53:56 web.1            |     csv_content = read_csv_file(path)
19:53:56 web.1            |   File "/home/frappe/frappe-bench/apps/frappe/frappe/translate.py", line 550, in read_csv_file
19:53:56 web.1            |     newdata = [[text_type(val, 'utf-8') for val in row] for row in data]
19:53:56 web.1            |   File "/home/frappe/frappe-bench/apps/frappe/frappe/translate.py", line 550, in <listcomp>
19:53:56 web.1            |     newdata = [[text_type(val, 'utf-8') for val in row] for row in data]
19:53:56 web.1            | _csv.Error: iterator should return strings, not bytes (did you open the file in text mode?)


#16

Yes it is celever now to freez the production for a while, and to wait the hard working team to smoothen version 11.


#17

Hi all. Stability has not been achieved so I request y’all to NOT USE THIS FOR PRODUCTION.

Having said that, thanks for raising these issues. I’ll have a look into it and send those fixes immediately.


#18

After the migration process I have some ERRORS:

Updating DocTypes for erpnext       : [========================================]
Syncing help database...
*** Error compiling '../apps/erpnext_demo/erpnext_demo/make_demo.py'...
  File "../apps/erpnext_demo/erpnext_demo/make_demo.py", line 42
    print "Creating Fresh Database..."
                                     ^
SyntaxError: Missing parentheses in call to 'print'

/home/frappe/frappe-bench/apps/frappe/frappe/build.py:108: UserWarning: Source /home/frappe/frappe-bench/apps/erpnext_demo/erpnext_demo/docs does not exist.
  warnings.warn('Source {source} does not exist.'.format(source = source))

> frappe@ production /home/frappe/frappe-bench/apps/frappe
> FRAPPE_ENV=production rollup -c

✨  Built libs.min.js

/home/frappe/frappe-bench/apps/frappe/frappe/public/js/frappe/class.js, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/lib/bootstrap.min.js, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/lib/md5.min.js, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/frappe/provide.js, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/frappe/format.js, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/frappe/misc/number_format.js, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/frappe/misc/common.js, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/frappe/translate.js, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/frappe/misc/pretty_date.js, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/lib/moment/moment.min.js, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/lib/highlight.pack.js, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/lib/microtemplate.js, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/frappe/query_string.js, /home/frappe/frappe-bench/apps/frappe/frappe/website/js/website.js, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/frappe/misc/rating_icons.html → ../../sites/assets/js/frappe-web.min.js...

Then in the end:

INFO:bench.utils:sudo supervisorctl restart frappe-bench-workers: frappe-bench-web:
frappe-bench-frappe-schedule: stopped
frappe-bench-frappe-default-worker-0: stopped
frappe-bench-frappe-long-worker-0: stopped
frappe-bench-frappe-short-worker-0: stopped
frappe-bench-node-socketio: stopped
frappe-bench-frappe-web: stopped
frappe-bench-frappe-schedule: started
frappe-bench-frappe-default-worker-0: ERROR (abnormal termination)
frappe-bench-frappe-long-worker-0: ERROR (abnormal termination)
frappe-bench-frappe-short-worker-0: started
frappe-bench-frappe-web: started
frappe-bench-node-socketio: started
________________________________________________________________________________
Bench: Deployment tool for Frappe and ERPNext (https://erpnext.org).
Open source depends on your contributions, so please contribute bug reports, patches, fixes or cash and be a part of the community
()
frappe@erpnext:~/frappe-bench$ ^C
frappe@erpnext:~/frappe-bench$

#19

Full trace:

()
frappe@erpnext:~/frappe-bench$ bench update --reset
INFO:bench.utils:updating bench
INFO:bench.utils:git pull
Already up-to-date.
INFO:bench.utils:./env/bin/pip install Pillow
Requirement already satisfied: Pillow in ./env/lib/python3.4/site-packages
INFO:bench.app:pulling frappe
INFO:bench.utils:git fetch --all
Fetching upstream
INFO:bench.utils:git reset --hard upstream/develop
HEAD is now at 23fafe7 Merge pull request #5101 from achillesrasquinha/chat-cleanup
INFO:bench.utils:find . -name "*.pyc" -delete
INFO:bench.app:pulling erpnext
INFO:bench.utils:git fetch --all
Fetching upstream
INFO:bench.utils:git reset --hard upstream/develop
HEAD is now at c209014 updated develop_version to 11 (#13133)
INFO:bench.utils:find . -name "*.pyc" -delete
INFO:bench.app:pulling erpnext_demo
INFO:bench.utils:git fetch --all
Fetching upstream
INFO:bench.utils:git reset --hard upstream/master
HEAD is now at 5567d19 Merge pull request #25 from neilLasrado/master
INFO:bench.utils:find . -name "*.pyc" -delete
Updating Python libraries...
INFO:bench.utils:./env/bin/pip install --upgrade pip
Requirement already up-to-date: pip in ./env/lib/python3.4/site-packages
INFO:bench.utils:./env/bin/pip install -q -r /home/frappe/bench-repo/requirements.txt
INFO:bench.utils:./env/bin/pip install -q -r ./apps/erpnext/requirements.txt
INFO:bench.utils:./env/bin/pip install -q -r ./apps/erpnext_demo/requirements.txt
INFO:bench.utils:./env/bin/pip install -q -r ./apps/frappe/requirements.txt
Updating node packages...
INFO:bench.utils:yarn install
yarn install v1.5.0
[1/4] Resolving packages...
[2/4] Fetching packages...
[3/4] Linking dependencies...
[4/4] Building fresh packages...
Done in 23.75s.
Backing up sites...
Patching sites...
Migrating erpnext.vm
Updating DocTypes for frappe        : [========================================]
Updating DocTypes for erpnext       : [========================================]
Syncing help database...
*** Error compiling '../apps/erpnext_demo/erpnext_demo/make_demo.py'...
  File "../apps/erpnext_demo/erpnext_demo/make_demo.py", line 42
    print "Creating Fresh Database..."
                                     ^
SyntaxError: Missing parentheses in call to 'print'

/home/frappe/frappe-bench/apps/frappe/frappe/build.py:108: UserWarning: Source /home/frappe/frappe-bench/apps/erpnext_demo/erpnext_demo/docs does not exist.
  warnings.warn('Source {source} does not exist.'.format(source = source))

> frappe@ production /home/frappe/frappe-bench/apps/frappe
> FRAPPE_ENV=production rollup -c

✨  Built libs.min.js

/home/frappe/frappe-bench/apps/frappe/frappe/public/js/frappe/class.js, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/lib/bootstrap.min.js, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/lib/md5.min.js, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/frappe/provide.js, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/frappe/format.js, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/frappe/misc/number_format.js, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/frappe/misc/common.js, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/frappe/translate.js, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/frappe/misc/pretty_date.js, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/lib/moment/moment.min.js, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/lib/highlight.pack.js, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/lib/microtemplate.js, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/frappe/query_string.js, /home/frappe/frappe-bench/apps/frappe/frappe/website/js/website.js, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/frappe/misc/rating_icons.html → ../../sites/assets/js/frappe-web.min.js...
(!) Conflicting re-exports
rollup-plugin-multi-entry:entry-point re-exports '__moduleExports' from both frappe/public/js/frappe/class.js and frappe/public/js/lib/moment/moment.min.js (will be ignored)
(!) Broken sourcemap
https://github.com/rollup/rollup/wiki/Troubleshooting#sourcemap-is-likely-to-be-incorrect
Plugins that transform code (such as 'frappe-html') should generate accompanying sourcemaps
created ../../sites/assets/js/frappe-web.min.js in 11.3s

/home/frappe/frappe-bench/apps/frappe/frappe/public/js/frappe/ui/capture.js, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/frappe/form/controls/base_control.js, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/frappe/form/controls/base_input.js, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/frappe/form/controls/data.js, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/frappe/form/controls/int.js, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/frappe/form/controls/float.js, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/frappe/form/controls/currency.js, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/frappe/form/controls/date.js, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/frappe/form/controls/time.js, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/frappe/form/controls/datetime.js, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/frappe/form/controls/date_range.js, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/frappe/form/controls/select.js, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/frappe/form/controls/link.js, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/frappe/form/controls/dynamic_link.js, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/frappe/form/controls/text.js, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/frappe/form/controls/code.js, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/frappe/form/controls/text_editor.js, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/frappe/form/controls/check.js, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/frappe/form/controls/image.js, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/frappe/form/controls/attach.js, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/frappe/form/controls/attach_image.js, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/frappe/form/controls/table.js, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/frappe/form/controls/color.js, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/frappe/form/controls/signature.js, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/frappe/form/controls/password.js, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/frappe/form/controls/read_only.js, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/frappe/form/controls/button.js, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/frappe/form/controls/html.js, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/frappe/form/controls/heading.js, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/frappe/form/controls/autocomplete.js, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/frappe/form/controls/barcode.js, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/frappe/form/controls/geolocation.js, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/frappe/form/controls/multiselect.js, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/frappe/form/controls/multicheck.js → ../../sites/assets/js/control.min.js...
created ../../sites/assets/js/control.min.js in 2s

/home/frappe/frappe-bench/apps/frappe/frappe/public/js/frappe/dom.js, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/frappe/ui/modal.html, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/frappe/form/formatters.js, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/frappe/form/layout.js, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/frappe/ui/field_group.js, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/frappe/form/link_selector.js, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/frappe/form/multi_select_dialog.js, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/frappe/ui/dialog.js, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/frappe/ui/capture.js, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/frappe/form/controls/base_control.js, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/frappe/form/controls/base_input.js, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/frappe/form/controls/data.js, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/frappe/form/controls/int.js, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/frappe/form/controls/float.js, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/frappe/form/controls/currency.js, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/frappe/form/controls/date.js, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/frappe/form/controls/time.js, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/frappe/form/controls/datetime.js, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/frappe/form/controls/date_range.js, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/frappe/form/controls/select.js, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/frappe/form/controls/link.js, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/frappe/form/controls/dynamic_link.js, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/frappe/form/controls/text.js, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/frappe/form/controls/code.js, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/frappe/form/controls/text_editor.js, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/frappe/form/controls/check.js, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/frappe/form/controls/image.js, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/frappe/form/controls/attach.js, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/frappe/form/controls/attach_image.js, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/frappe/form/controls/table.js, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/frappe/form/controls/color.js, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/frappe/form/controls/signature.js, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/frappe/form/controls/password.js, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/frappe/form/controls/read_only.js, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/frappe/form/controls/button.js, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/frappe/form/controls/html.js, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/frappe/form/controls/heading.js, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/frappe/form/controls/geolocation.js → ../../sites/assets/js/dialog.min.js...
(!) Use of eval is strongly discouraged
https://github.com/rollup/rollup/wiki/Troubleshooting#avoiding-eval
frappe/public/js/frappe/form/layout.js
497:     if(expression.substr(0,5)=='eval:') {
498:       try {
499:         out = eval(expression.substr(5));
                   ^
500:       } catch(e) {
501:         frappe.throw(__('Invalid "depends_on" expression'));
(!) Broken sourcemap
https://github.com/rollup/rollup/wiki/Troubleshooting#sourcemap-is-likely-to-be-incorrect
Plugins that transform code (such as 'frappe-html') should generate accompanying sourcemaps
created ../../sites/assets/js/dialog.min.js in 3.1s

/home/frappe/frappe-bench/apps/frappe/frappe/public/js/frappe/class.js, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/frappe/provide.js, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/frappe/assets.js, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/frappe/format.js, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/frappe/form/formatters.js, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/frappe/ui/modal.html, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/frappe/dom.js, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/frappe/ui/messages.js, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/frappe/ui/keyboard.js, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/frappe/ui/colors.js, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/frappe/ui/sidebar.js, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/frappe/request.js, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/frappe/socketio_client.js, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/frappe/router.js, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/frappe/defaults.js, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/frappe/roles_editor.js, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/lib/microtemplate.js, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/legacy/globals.js, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/legacy/datatype.js, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/legacy/dom.js, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/legacy/handler.js, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/frappe/ui/page.html, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/frappe/ui/page.js, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/frappe/ui/slides.js, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/frappe/ui/find.js, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/frappe/ui/iconbar.js, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/frappe/form/layout.js, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/frappe/ui/field_group.js, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/frappe/form/link_selector.js, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/frappe/form/multi_select_dialog.js, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/frappe/ui/dialog.js, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/frappe/ui/capture.js, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/frappe/ui/app_icon.js, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/frappe/ui/dropzone.js, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/frappe/model/model.js, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/frappe/db.js, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/frappe/model/meta.js, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/frappe/model/sync.js, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/frappe/model/create_new.js, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/frappe/model/perm.js, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/frappe/model/workflow.js, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/frappe/model/user_settings.js, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/lib/md5.min.js, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/frappe/misc/user.js, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/frappe/misc/common.js, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/frappe/misc/pretty_date.js, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/frappe/misc/utils.js, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/frappe/misc/test_utils.js, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/frappe/misc/tools.js, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/frappe/misc/datetime.js, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/frappe/misc/number_format.js, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/frappe/misc/help.js, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/frappe/misc/help_links.js, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/frappe/misc/address_and_contact.js, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/frappe/misc/preview_email.js, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/frappe/misc/file_manager.js, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/frappe/ui/upload.html, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/frappe/upload.js, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/integrations/gsuite.js, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/frappe/ui/tree.js, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/frappe/views/container.js, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/frappe/views/breadcrumbs.js, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/frappe/views/factory.js, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/frappe/views/pageview.js, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/frappe/ui/toolbar/awesome_bar.js, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/frappe/ui/toolbar/search.js, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/frappe/ui/toolbar/search.html, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/frappe/ui/toolbar/search_header.html, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/frappe/ui/toolbar/search_utils.js, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/frappe/ui/toolbar/about.js, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/frappe/ui/toolbar/navbar.html, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/frappe/ui/toolbar/toolbar.js, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/frappe/ui/toolbar/modules_select.js, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/frappe/ui/toolbar/notifications.js, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/frappe/views/communication.js, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/frappe/views/translation_manager.js, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/frappe/ui/sort_selector.html, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/frappe/ui/sort_selector.js, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/frappe/change_log.html, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/frappe/desk.js, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/frappe/query_string.js, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/frappe/ui/comment.js, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/frappe/misc/rating_icons.html, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/frappe/feedback.js, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/frappe/chat.js → ../../sites/assets/js/desk.min.js...
(!) Use of eval is strongly discouraged
https://github.com/rollup/rollup/wiki/Troubleshooting#avoiding-eval
frappe/public/js/frappe/socketio_client.js
33: 
34:     frappe.socketio.socket.on('eval_js', function(message) {
35:       eval(message);
          ^
36:     });
frappe/public/js/frappe/form/layout.js
497:     if(expression.substr(0,5)=='eval:') {
498:       try {
499:         out = eval(expression.substr(5));
                   ^
500:       } catch(e) {
501:         frappe.throw(__('Invalid "depends_on" expression'));
frappe/public/js/frappe/model/model.js
136:     var meta = locals.DocType[doctype];
137:     if(meta.__list_js) {
138:       eval(meta.__list_js);
           ^
139:     }
140:     if(meta.__calendar_js) {
...and 3 other occurrences
frappe/public/js/frappe/ui/toolbar/awesome_bar.js
250:       }
251:       try {
252:         var val = eval(txt);
                       ^
253:         var formatted_value = __('{0} = {1}', [txt, (val + '').bold()]);
254:         this.options.push({
(!) Broken sourcemap
https://github.com/rollup/rollup/wiki/Troubleshooting#sourcemap-is-likely-to-be-incorrect
Plugins that transform code (such as 'frappe-html') should generate accompanying sourcemaps
created ../../sites/assets/js/desk.min.js in 13.9s

/home/frappe/frappe-bench/apps/frappe/frappe/public/js/frappe/form/templates/grid_form.html, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/frappe/form/templates/grid_body.html, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/frappe/form/templates/print_layout.html, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/frappe/form/templates/users_in_sidebar.html, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/frappe/form/templates/set_sharing.html, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/frappe/form/templates/form_sidebar.html, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/frappe/form/templates/form_dashboard.html, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/frappe/form/templates/form_document_flow.html, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/frappe/form/templates/form_links.html, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/frappe/views/formview.js, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/legacy/form.js, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/legacy/client_script_helpers.js, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/frappe/form/toolbar.js, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/frappe/form/dashboard.js, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/frappe/form/document_flow.js, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/frappe/form/save.js, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/frappe/form/script_manager.js, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/frappe/form/grid.js, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/frappe/form/grid_row.js, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/frappe/form/grid_row_form.js, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/frappe/form/linked_with.js, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/frappe/form/workflow.js, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/frappe/form/print.js, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/frappe/form/form_sidebar.js, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/frappe/form/user_image.js, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/frappe/form/share.js, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/frappe/form/form_viewers.js, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/frappe/form/footer/form_footer.html, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/frappe/form/footer/timeline.html, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/frappe/form/footer/timeline_item.html, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/frappe/form/footer/footer.js, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/frappe/form/footer/attachments.js, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/frappe/form/footer/timeline.js, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/frappe/form/footer/assign_to.js, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/frappe/form/quick_entry.js → ../../sites/assets/js/form.min.js...

#20

2nd part:

(!) Use of eval is strongly discouraged
https://github.com/rollup/rollup/wiki/Troubleshooting#avoiding-eval
frappe/public/js/frappe/form/script_manager.js
153:     var cs = doctype.__js;
154:     if(cs) {
155:       var tmp = eval(cs);
                     ^
156:     }
...and 1 other occurrence
(!) Broken sourcemap
https://github.com/rollup/rollup/wiki/Troubleshooting#sourcemap-is-likely-to-be-incorrect
Plugins that transform code (such as 'frappe-html') should generate accompanying sourcemaps
created ../../sites/assets/js/form.min.js in 4.2s

/home/frappe/frappe-bench/apps/frappe/frappe/public/js/frappe/ui/listing.html, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/frappe/model/indicator.js, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/frappe/ui/filters/filter.js, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/frappe/ui/filters/filter_list.js, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/frappe/ui/filters/field_select.js, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/frappe/ui/filters/edit_filter.html, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/frappe/ui/tags.js, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/frappe/ui/tag_editor.js, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/frappe/ui/like.js, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/frappe/ui/liked_by.html, /home/frappe/frappe-bench/apps/frappe/frappe/public/html/print_template.html, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/frappe/list/base_list.js, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/frappe/list/list_view.js, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/frappe/list/list_factory.js, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/frappe/list/list_sidebar.js, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/frappe/list/list_sidebar.html, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/frappe/list/list_sidebar_stat.html, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/frappe/list/list_item_main.html, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/frappe/list/list_item_row.html, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/frappe/list/list_item_main_head.html, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/frappe/list/list_item_row_head.html, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/frappe/list/list_item_subject.html, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/frappe/list/list_permission_footer.html, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/frappe/views/gantt/gantt_view.js, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/frappe/views/calendar/calendar.js, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/frappe/views/image/image_view.js, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/frappe/views/kanban/kanban_view.js, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/frappe/views/inbox/inbox_view.js, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/frappe/views/file/file_view.js, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/frappe/list/header_select_all_like_filter.html, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/frappe/list/item_assigned_to_comment_count.html, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/frappe/views/treeview.js, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/frappe/views/image/image_view_item_row.html, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/frappe/views/image/photoswipe_dom.html, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/frappe/views/kanban/kanban_board.html, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/frappe/views/kanban/kanban_column.html, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/frappe/views/kanban/kanban_card.html → ../../sites/assets/js/list.min.js...
(!) Use of eval is strongly discouraged
https://github.com/rollup/rollup/wiki/Troubleshooting#avoiding-eval
frappe/public/js/frappe/views/treeview.js
362:       var has_perm = true;
363:       if(menu_item["condition"]) {
364:         has_perm = eval(menu_item["condition"]);
                        ^
365:       }
(!) Broken sourcemap
https://github.com/rollup/rollup/wiki/Troubleshooting#sourcemap-is-likely-to-be-incorrect
Plugins that transform code (such as 'frappe-html') should generate accompanying sourcemaps
created ../../sites/assets/js/list.min.js in 3.7s

/home/frappe/frappe-bench/apps/frappe/frappe/public/js/lib/clusterize.min.js, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/lib/frappe-datatable.js, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/frappe/views/reports/report_factory.js, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/frappe/views/reports/report_view.js, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/frappe/views/reports/reportview_footer.html, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/frappe/views/reports/query_report.js, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/frappe/views/reports/grid_report.js, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/frappe/views/reports/print_grid.html, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/frappe/views/reports/print_tree.html → ../../sites/assets/js/report.min.js...
(!) Conflicting re-exports
rollup-plugin-multi-entry:entry-point re-exports '__moduleExports' from both frappe/public/js/lib/clusterize.min.js and frappe/public/js/lib/frappe-datatable.js (will be ignored)
(!) Use of eval is strongly discouraged
https://github.com/rollup/rollup/wiki/Troubleshooting#avoiding-eval
frappe/public/js/frappe/views/reports/grid_report.js
568:           if(link_formatter.open_btn) {
569:             var doctype = link_formatter.doctype
570:               ? eval(link_formatter.doctype)
                     ^
571:               : dataContext.doctype;
572:             html += me.get_link_open_icon(doctype, value);
(!) Broken sourcemap
https://github.com/rollup/rollup/wiki/Troubleshooting#sourcemap-is-likely-to-be-incorrect
Plugins that transform code (such as 'frappe-html') should generate accompanying sourcemaps
created ../../sites/assets/js/report.min.js in 7.8s

/home/frappe/frappe-bench/apps/frappe/frappe/website/js/web_form.js, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/lib/summernote/summernote.js, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/lib/datepicker/datepicker.min.js, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/lib/datepicker/datepicker.en.js → ../../sites/assets/js/web_form.min.js...
(!) Use of eval is strongly discouraged
https://github.com/rollup/rollup/wiki/Troubleshooting#avoiding-eval
frappe/public/js/lib/summernote/summernote.js
440:         // Do nothing.
441:       }
442:     } else if (typeof eval('require').specified !== 'undefined') {
                           ^
443:       hasCodeMirror = eval('require').specified('codemirror');
444:     }
...and 1 other occurrence
(!) Missing global variable name
Use output.globals to specify browser global variable names corresponding to external modules
jquery (guessing 'jquery')
created ../../sites/assets/js/web_form.min.js in 6.4s

/home/frappe/frappe-bench/apps/frappe/frappe/public/js/legacy/layout.js, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/legacy/print_table.js, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/legacy/print_format.js → ../../sites/assets/js/print_format_v3.min.js...
(!) Use of eval is strongly discouraged
https://github.com/rollup/rollup/wiki/Troubleshooting#avoiding-eval
frappe/public/js/legacy/print_format.js
299:       var code = element.innerHTML;
300:       try {
301:         var new_html = code ? (eval(code) || "") : "";
                                    ^
302:       } catch(e) {
303:         console.log("Error in Custom Script:" + e + "\n" + code);
created ../../sites/assets/js/print_format_v3.min.js in 393ms

/home/frappe/frappe-bench/apps/frappe/frappe/public/css/font-awesome.css, /home/frappe/frappe-bench/apps/frappe/frappe/public/css/octicons/octicons.css, /home/frappe/frappe-bench/apps/frappe/frappe/public/less/website.less, /home/frappe/frappe-bench/apps/frappe/frappe/public/less/avatar.less → ../../sites/assets/css/rollup.manifest.css...
(!) Generated an empty bundle
created ../../sites/assets/css/rollup.manifest.css in 451ms

/home/frappe/frappe-bench/apps/frappe/frappe/public/js/lib/datepicker/datepicker.min.css, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/lib/awesomplete/awesomplete.css, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/lib/summernote/summernote.css, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/lib/leaflet/leaflet.css, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/lib/leaflet/leaflet.draw.css, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/lib/leaflet/L.Control.Locate.css, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/lib/leaflet/easy-button.css, /home/frappe/frappe-bench/apps/frappe/frappe/public/css/bootstrap.css, /home/frappe/frappe-bench/apps/frappe/frappe/public/css/font-awesome.css, /home/frappe/frappe-bench/apps/frappe/frappe/public/css/octicons/octicons.css, /home/frappe/frappe-bench/apps/frappe/frappe/public/less/desk.less, /home/frappe/frappe-bench/apps/frappe/frappe/public/less/flex.less, /home/frappe/frappe-bench/apps/frappe/frappe/public/less/indicator.less, /home/frappe/frappe-bench/apps/frappe/frappe/public/less/avatar.less, /home/frappe/frappe-bench/apps/frappe/frappe/public/less/navbar.less, /home/frappe/frappe-bench/apps/frappe/frappe/public/less/sidebar.less, /home/frappe/frappe-bench/apps/frappe/frappe/public/less/page.less, /home/frappe/frappe-bench/apps/frappe/frappe/public/less/tree.less, /home/frappe/frappe-bench/apps/frappe/frappe/public/less/desktop.less, /home/frappe/frappe-bench/apps/frappe/frappe/public/less/form.less, /home/frappe/frappe-bench/apps/frappe/frappe/public/less/mobile.less, /home/frappe/frappe-bench/apps/frappe/frappe/public/less/kanban.less, /home/frappe/frappe-bench/apps/frappe/frappe/public/less/controls.less, /home/frappe/frappe-bench/apps/frappe/frappe/public/less/chat.less → ../../sites/assets/css/rollup.manifest.css...
(!) Generated an empty bundle
created ../../sites/assets/css/rollup.manifest.css in 1.3s

/home/frappe/frappe-bench/apps/frappe/frappe/public/css/bootstrap-rtl.css, /home/frappe/frappe-bench/apps/frappe/frappe/public/css/desk-rtl.css, /home/frappe/frappe-bench/apps/frappe/frappe/public/css/report-rtl.css → ../../sites/assets/css/rollup.manifest.css...
(!) Generated an empty bundle
created ../../sites/assets/css/rollup.manifest.css in 178ms

/home/frappe/frappe-bench/apps/frappe/frappe/public/less/module.less → ../../sites/assets/css/rollup.manifest.css...
(!) Generated an empty bundle
created ../../sites/assets/css/rollup.manifest.css in 7ms

/home/frappe/frappe-bench/apps/frappe/frappe/public/less/form_grid.less → ../../sites/assets/css/rollup.manifest.css...
(!) Generated an empty bundle
created ../../sites/assets/css/rollup.manifest.css in 15ms

/home/frappe/frappe-bench/apps/frappe/frappe/public/less/list.less, /home/frappe/frappe-bench/apps/frappe/frappe/public/less/calendar.less, /home/frappe/frappe-bench/apps/frappe/frappe/public/less/role_editor.less, /home/frappe/frappe-bench/apps/frappe/frappe/public/less/gantt.less → ../../sites/assets/css/rollup.manifest.css...
(!) Generated an empty bundle
created ../../sites/assets/css/rollup.manifest.css in 47ms

/home/frappe/frappe-bench/apps/frappe/frappe/public/less/report.less, /home/frappe/frappe-bench/apps/frappe/frappe/public/css/tree_grid.css → ../../sites/assets/css/rollup.manifest.css...
(!) Generated an empty bundle
created ../../sites/assets/css/rollup.manifest.css in 9ms

/home/frappe/frappe-bench/apps/frappe/frappe/website/css/web_form.css, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/lib/summernote/summernote.css, /home/frappe/frappe-bench/apps/frappe/frappe/public/js/lib/datepicker/datepicker.min.css → ../../sites/assets/css/rollup.manifest.css...
(!) Generated an empty bundle
created ../../sites/assets/css/rollup.manifest.css in 118ms

/home/frappe/frappe-bench/apps/erpnext/erpnext/public/js/website_utils.js, /home/frappe/frappe-bench/apps/erpnext/erpnext/public/js/shopping_cart.js → ../../sites/assets/js/erpnext-web.min.js...
created ../../sites/assets/js/erpnext-web.min.js in 112ms

/home/frappe/frappe-bench/apps/erpnext/erpnext/public/js/conf.js, /home/frappe/frappe-bench/apps/erpnext/erpnext/public/js/utils.js, /home/frappe/frappe-bench/apps/erpnext/erpnext/public/js/queries.js, /home/frappe/frappe-bench/apps/erpnext/erpnext/public/js/sms_manager.js, /home/frappe/frappe-bench/apps/erpnext/erpnext/public/js/utils/party.js, /home/frappe/frappe-bench/apps/erpnext/erpnext/public/js/templates/address_list.html, /home/frappe/frappe-bench/apps/erpnext/erpnext/public/js/templates/contact_list.html, /home/frappe/frappe-bench/apps/erpnext/erpnext/public/js/controllers/stock_controller.js, /home/frappe/frappe-bench/apps/erpnext/erpnext/public/js/payment/payments.js, /home/frappe/frappe-bench/apps/erpnext/erpnext/public/js/controllers/taxes_and_totals.js, /home/frappe/frappe-bench/apps/erpnext/erpnext/public/js/controllers/transaction.js, /home/frappe/frappe-bench/apps/erpnext/erpnext/public/js/pos/pos.html, /home/frappe/frappe-bench/apps/erpnext/erpnext/public/js/pos/pos_bill_item.html, /home/frappe/frappe-bench/apps/erpnext/erpnext/public/js/pos/pos_bill_item_new.html, /home/frappe/frappe-bench/apps/erpnext/erpnext/public/js/pos/pos_selected_item.html, /home/frappe/frappe-bench/apps/erpnext/erpnext/public/js/pos/pos_item.html, /home/frappe/frappe-bench/apps/erpnext/erpnext/public/js/pos/pos_tax_row.html, /home/frappe/frappe-bench/apps/erpnext/erpnext/public/js/pos/customer_toolbar.html, /home/frappe/frappe-bench/apps/erpnext/erpnext/public/js/pos/pos_invoice_list.html, /home/frappe/frappe-bench/apps/erpnext/erpnext/public/js/payment/pos_payment.html, /home/frappe/frappe-bench/apps/erpnext/erpnext/public/js/payment/payment_details.html, /home/frappe/frappe-bench/apps/erpnext/erpnext/public/js/templates/item_selector.html, /home/frappe/frappe-bench/apps/erpnext/erpnext/public/js/utils/item_selector.js, /home/frappe/frappe-bench/apps/erpnext/erpnext/public/js/help_links.js, /home/frappe/frappe-bench/apps/erpnext/erpnext/public/js/agriculture/ternary_plot.js, /home/frappe/frappe-bench/apps/erpnext/erpnext/public/js/templates/item_quick_entry.html, /home/frappe/frappe-bench/apps/erpnext/erpnext/public/js/utils/item_quick_entry.js, /home/frappe/frappe-bench/apps/erpnext/erpnext/public/js/utils/customer_quick_entry.js, /home/frappe/frappe-bench/apps/erpnext/erpnext/public/js/education/student_button.html, /home/frappe/frappe-bench/apps/erpnext/erpnext/public/js/education/assessment_result_tool.html, /home/frappe/frappe-bench/apps/erpnext/erpnext/public/js/hub/hub_factory.js → ../../sites/assets/js/erpnext.min.js...
(!) Broken sourcemap
https://github.com/rollup/rollup/wiki/Troubleshooting#sourcemap-is-likely-to-be-incorrect
Plugins that transform code (such as 'frappe-html') should generate accompanying sourcemaps
created ../../sites/assets/js/erpnext.min.js in 3.7s

/home/frappe/frappe-bench/apps/erpnext/erpnext/stock/dashboard/item_dashboard.html, /home/frappe/frappe-bench/apps/erpnext/erpnext/stock/dashboard/item_dashboard_list.html, /home/frappe/frappe-bench/apps/erpnext/erpnext/stock/dashboard/item_dashboard.js → ../../sites/assets/js/item-dashboard.min.js...
(!) Broken sourcemap
https://github.com/rollup/rollup/wiki/Troubleshooting#sourcemap-is-likely-to-be-incorrect
Plugins that transform code (such as 'frappe-html') should generate accompanying sourcemaps
created ../../sites/assets/js/item-dashboard.min.js in 157ms

/home/frappe/frappe-bench/apps/erpnext/erpnext/public/less/erpnext.less → ../../sites/assets/css/rollup.manifest.css...
(!) Generated an empty bundle
created ../../sites/assets/css/rollup.manifest.css in 81ms
INFO:bench.utils:sudo supervisorctl restart frappe-bench-workers: frappe-bench-web:
frappe-bench-frappe-schedule: stopped
frappe-bench-frappe-default-worker-0: stopped
frappe-bench-frappe-long-worker-0: stopped
frappe-bench-frappe-short-worker-0: stopped
frappe-bench-node-socketio: stopped
frappe-bench-frappe-web: stopped
frappe-bench-frappe-schedule: started
frappe-bench-frappe-default-worker-0: ERROR (abnormal termination)
frappe-bench-frappe-long-worker-0: ERROR (abnormal termination)
frappe-bench-frappe-short-worker-0: started
frappe-bench-frappe-web: started
frappe-bench-node-socketio: started
________________________________________________________________________________
Bench: Deployment tool for Frappe and ERPNext (https://erpnext.org).
Open source depends on your contributions, so please contribute bug reports, patches, fixes or cash and be a part of the community
()
frappe@erpnext:~/frappe-bench$ ^C
frappe@erpnext:~/frappe-bench$