Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

no repository found in errors #1689

Open
happysmash27 opened this issue Mar 17, 2020 · 12 comments
Open

no repository found in errors #1689

happysmash27 opened this issue Mar 17, 2020 · 12 comments

Comments

@happysmash27
Copy link

Describe the bug
When installing QRL, it errors out with "No such file or directory" and "no repository found" errors:

 ~ % PATH="/opt/cmake-3.10.3/bin:$PATH" pip3 install --user qrl
Collecting qrl
  Using cached qrl-2.0.0.tar.gz (550 kB)
    ERROR: Command errored out with exit status 1:
     command: /usr/bin/python3.6 -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-d9zixh3i/qrl/setup.py'"'"'; __file__='"'"'/tmp/pip-install-d9zixh3i/qrl/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' egg_info --egg-base /tmp/pip-install-d9zixh3i/qrl/pip-egg-info
         cwd: /tmp/pip-install-d9zixh3i/qrl/
    Complete output (10 lines):
    running egg_info
    creating /tmp/pip-install-d9zixh3i/qrl/pip-egg-info/qrl.egg-info
    writing /tmp/pip-install-d9zixh3i/qrl/pip-egg-info/qrl.egg-info/PKG-INFO
    writing dependency_links to /tmp/pip-install-d9zixh3i/qrl/pip-egg-info/qrl.egg-info/dependency_links.txt
    writing entry points to /tmp/pip-install-d9zixh3i/qrl/pip-egg-info/qrl.egg-info/entry_points.txt
    writing requirements to /tmp/pip-install-d9zixh3i/qrl/pip-egg-info/qrl.egg-info/requires.txt
    writing top-level names to /tmp/pip-install-d9zixh3i/qrl/pip-egg-info/qrl.egg-info/top_level.txt
    writing manifest file '/tmp/pip-install-d9zixh3i/qrl/pip-egg-info/qrl.egg-info/SOURCES.txt'
    error: [Errno 2] No such file or directory: '': ''
    abort: no repository found in '/tmp/pip-install-d9zixh3i/qrl' (.hg not found)!
    ----------------------------------------
ERROR: Command errored out with exit status 1: python setup.py egg_info Check the logs for full command output.

To Reproduce
Steps to reproduce the behavior:

  1. Install pyqryptonight using the method described in this bug report
  2. With this setup, run PATH="/opt/cmake-3.10.3/bin:$PATH" pip3 install --user qrl.

Expected behavior
QRL is updated and runs with no errors.

Desktop (please complete the following information):

  • OS: Gentoo Linux kernel 5.5.1
  • Version: 2.0.0
@happysmash27 happysmash27 changed the title no repository found in '/tmp/pip-install-d9zixh3i/qrl' no repository found in errors Sep 1, 2020
@happysmash27
Copy link
Author

I have finally gotten back to this, and the same error still occurs with newer versions as well:

 ~ % pip3 install --user qrl
Collecting qrl
  Using cached qrl-2.0.5.tar.gz (550 kB)
    ERROR: Command errored out with exit status 1:
     command: /usr/bin/python3.6 -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-zoaadj5_/qrl/setup.py'"'"'; __file__='"'"'/tmp/pip-install-zoaadj5_/qrl/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' egg_info --egg-base /tmp/pip-pip-egg-info-o6ux7w53
         cwd: /tmp/pip-install-zoaadj5_/qrl/
    Complete output (10 lines):
    running egg_info
    creating /tmp/pip-pip-egg-info-o6ux7w53/qrl.egg-info
    writing /tmp/pip-pip-egg-info-o6ux7w53/qrl.egg-info/PKG-INFO
    writing dependency_links to /tmp/pip-pip-egg-info-o6ux7w53/qrl.egg-info/dependency_links.txt
    writing entry points to /tmp/pip-pip-egg-info-o6ux7w53/qrl.egg-info/entry_points.txt
    writing requirements to /tmp/pip-pip-egg-info-o6ux7w53/qrl.egg-info/requires.txt
    writing top-level names to /tmp/pip-pip-egg-info-o6ux7w53/qrl.egg-info/top_level.txt
    writing manifest file '/tmp/pip-pip-egg-info-o6ux7w53/qrl.egg-info/SOURCES.txt'
    error: [Errno 2] No such file or directory: '': ''
    abort: no repository found in '/tmp/pip-install-zoaadj5_/qrl' (.hg not found)!
    ----------------------------------------
ERROR: Command errored out with exit status 1: python setup.py egg_info Check the logs for full command output.

@happysmash27
Copy link
Author

I am going to try cloning the git repository directly and seeing if the output is more useful there.

@happysmash27
Copy link
Author

Much more useful... maybe:

QRL % python setup.py build
running build
running build_py
creating build
creating build/lib
creating build/lib/qrl
copying src/qrl/__init__.py -> build/lib/qrl
copying src/qrl/_version.py -> build/lib/qrl
copying src/qrl/cli.py -> build/lib/qrl
copying src/qrl/grpcProxy.py -> build/lib/qrl
copying src/qrl/main.py -> build/lib/qrl
copying src/qrl/measure.py -> build/lib/qrl
creating build/lib/qrl/core
copying src/qrl/core/AddressState.py -> build/lib/qrl/core
copying src/qrl/core/Block.py -> build/lib/qrl/core
copying src/qrl/core/BlockHeader.py -> build/lib/qrl/core
copying src/qrl/core/BlockMetadata.py -> build/lib/qrl/core
copying src/qrl/core/ChainManager.py -> build/lib/qrl/core
copying src/qrl/core/DifficultyTracker.py -> build/lib/qrl/core
copying src/qrl/core/ESyncState.py -> build/lib/qrl/core
copying src/qrl/core/GenesisBlock.py -> build/lib/qrl/core
copying src/qrl/core/Indexer.py -> build/lib/qrl/core
copying src/qrl/core/LastTransactions.py -> build/lib/qrl/core
copying src/qrl/core/Message.py -> build/lib/qrl/core
copying src/qrl/core/MessageRequest.py -> build/lib/qrl/core
copying src/qrl/core/Miner.py -> build/lib/qrl/core
copying src/qrl/core/MultiSigAddressState.py -> build/lib/qrl/core
copying src/qrl/core/OptimizedAddressState.py -> build/lib/qrl/core
copying src/qrl/core/OutgoingMessage.py -> build/lib/qrl/core
copying src/qrl/core/PaginatedBitfield.py -> build/lib/qrl/core
copying src/qrl/core/PaginatedData.py -> build/lib/qrl/core
copying src/qrl/core/PoWValidator.py -> build/lib/qrl/core
copying src/qrl/core/ProposalRecord.py -> build/lib/qrl/core
copying src/qrl/core/Singleton.py -> build/lib/qrl/core
copying src/qrl/core/State.py -> build/lib/qrl/core
copying src/qrl/core/StateContainer.py -> build/lib/qrl/core
copying src/qrl/core/StateMigration.py -> build/lib/qrl/core
copying src/qrl/core/TokenList.py -> build/lib/qrl/core
copying src/qrl/core/TokenMetadata.py -> build/lib/qrl/core
copying src/qrl/core/TransactionInfo.py -> build/lib/qrl/core
copying src/qrl/core/TransactionMetadata.py -> build/lib/qrl/core
copying src/qrl/core/TransactionPool.py -> build/lib/qrl/core
copying src/qrl/core/VoteStats.py -> build/lib/qrl/core
copying src/qrl/core/Wallet.py -> build/lib/qrl/core
copying src/qrl/core/__init__.py -> build/lib/qrl/core
copying src/qrl/core/config.py -> build/lib/qrl/core
copying src/qrl/core/formulas.py -> build/lib/qrl/core
copying src/qrl/core/messagereceipt.py -> build/lib/qrl/core
copying src/qrl/core/node.py -> build/lib/qrl/core
copying src/qrl/core/qrlnode.py -> build/lib/qrl/core
creating build/lib/qrl/crypto
copying src/qrl/crypto/AESHelper.py -> build/lib/qrl/crypto
copying src/qrl/crypto/QRandomX.py -> build/lib/qrl/crypto
copying src/qrl/crypto/Qryptonight.py -> build/lib/qrl/crypto
copying src/qrl/crypto/Qryptonight7.py -> build/lib/qrl/crypto
copying src/qrl/crypto/__init__.py -> build/lib/qrl/crypto
copying src/qrl/crypto/doctest_data.py -> build/lib/qrl/crypto
copying src/qrl/crypto/misc.py -> build/lib/qrl/crypto
copying src/qrl/crypto/xmss.py -> build/lib/qrl/crypto
creating build/lib/qrl/generated
copying src/qrl/generated/__init__.py -> build/lib/qrl/generated
copying src/qrl/generated/qrl_pb2.py -> build/lib/qrl/generated
copying src/qrl/generated/qrl_pb2_grpc.py -> build/lib/qrl/generated
copying src/qrl/generated/qrlbase_pb2.py -> build/lib/qrl/generated
copying src/qrl/generated/qrlbase_pb2_grpc.py -> build/lib/qrl/generated
copying src/qrl/generated/qrldebug_pb2.py -> build/lib/qrl/generated
copying src/qrl/generated/qrldebug_pb2_grpc.py -> build/lib/qrl/generated
copying src/qrl/generated/qrllegacy_pb2.py -> build/lib/qrl/generated
copying src/qrl/generated/qrllegacy_pb2_grpc.py -> build/lib/qrl/generated
copying src/qrl/generated/qrlmining_pb2.py -> build/lib/qrl/generated
copying src/qrl/generated/qrlmining_pb2_grpc.py -> build/lib/qrl/generated
copying src/qrl/generated/qrlstateinfo_pb2.py -> build/lib/qrl/generated
copying src/qrl/generated/qrlstateinfo_pb2_grpc.py -> build/lib/qrl/generated
copying src/qrl/generated/qrlwallet_pb2.py -> build/lib/qrl/generated
copying src/qrl/generated/qrlwallet_pb2_grpc.py -> build/lib/qrl/generated
creating build/lib/qrl/services
copying src/qrl/services/AdminAPIService.py -> build/lib/qrl/services
copying src/qrl/services/BaseService.py -> build/lib/qrl/services
copying src/qrl/services/DebugAPIService.py -> build/lib/qrl/services
copying src/qrl/services/MiningAPIService.py -> build/lib/qrl/services
copying src/qrl/services/PublicAPIService.py -> build/lib/qrl/services
copying src/qrl/services/WalletAPIService.py -> build/lib/qrl/services
copying src/qrl/services/__init__.py -> build/lib/qrl/services
copying src/qrl/services/grpcHelper.py -> build/lib/qrl/services
copying src/qrl/services/services.py -> build/lib/qrl/services
creating build/lib/qrl/tools
copying src/qrl/tools/__init__.py -> build/lib/qrl/tools
copying src/qrl/tools/generate_genesis.py -> build/lib/qrl/tools
copying src/qrl/tools/token_migration_json_converter.py -> build/lib/qrl/tools
creating build/lib/qrl/core/miners
copying src/qrl/core/miners/__init__.py -> build/lib/qrl/core/miners
creating build/lib/qrl/core/misc
copying src/qrl/core/misc/DependencyChecker.py -> build/lib/qrl/core/misc
copying src/qrl/core/misc/__init__.py -> build/lib/qrl/core/misc
copying src/qrl/core/misc/db.py -> build/lib/qrl/core/misc
copying src/qrl/core/misc/expiring_set.py -> build/lib/qrl/core/misc
copying src/qrl/core/misc/helper.py -> build/lib/qrl/core/misc
copying src/qrl/core/misc/logger.py -> build/lib/qrl/core/misc
copying src/qrl/core/misc/logger_twisted.py -> build/lib/qrl/core/misc
copying src/qrl/core/misc/ntp.py -> build/lib/qrl/core/misc
copying src/qrl/core/misc/set_logger.py -> build/lib/qrl/core/misc
creating build/lib/qrl/core/notification
copying src/qrl/core/notification/Observable.py -> build/lib/qrl/core/notification
copying src/qrl/core/notification/ObservableEvent.py -> build/lib/qrl/core/notification
copying src/qrl/core/notification/__init__.py -> build/lib/qrl/core/notification
creating build/lib/qrl/core/p2p
copying src/qrl/core/p2p/IPMetadata.py -> build/lib/qrl/core/p2p
copying src/qrl/core/p2p/__init__.py -> build/lib/qrl/core/p2p
copying src/qrl/core/p2p/p2pChainManager.py -> build/lib/qrl/core/p2p
copying src/qrl/core/p2p/p2pObservable.py -> build/lib/qrl/core/p2p
copying src/qrl/core/p2p/p2pObserver.py -> build/lib/qrl/core/p2p
copying src/qrl/core/p2p/p2pPeerManager.py -> build/lib/qrl/core/p2p
copying src/qrl/core/p2p/p2pTxManagement.py -> build/lib/qrl/core/p2p
copying src/qrl/core/p2p/p2pfactory.py -> build/lib/qrl/core/p2p
copying src/qrl/core/p2p/p2pprotocol.py -> build/lib/qrl/core/p2p
creating build/lib/qrl/core/processors
copying src/qrl/core/processors/TxnProcessor.py -> build/lib/qrl/core/processors
copying src/qrl/core/processors/__init__.py -> build/lib/qrl/core/processors
creating build/lib/qrl/core/txs
copying src/qrl/core/txs/CoinBase.py -> build/lib/qrl/core/txs
copying src/qrl/core/txs/LatticeTransaction.py -> build/lib/qrl/core/txs
copying src/qrl/core/txs/MessageTransaction.py -> build/lib/qrl/core/txs
copying src/qrl/core/txs/SlaveTransaction.py -> build/lib/qrl/core/txs
copying src/qrl/core/txs/TokenTransaction.py -> build/lib/qrl/core/txs
copying src/qrl/core/txs/Transaction.py -> build/lib/qrl/core/txs
copying src/qrl/core/txs/TransferTokenTransaction.py -> build/lib/qrl/core/txs
copying src/qrl/core/txs/TransferTransaction.py -> build/lib/qrl/core/txs
copying src/qrl/core/txs/__init__.py -> build/lib/qrl/core/txs
creating build/lib/qrl/core/miners/qrandomx
copying src/qrl/core/miners/qrandomx/QRXMiner.py -> build/lib/qrl/core/miners/qrandomx
copying src/qrl/core/miners/qrandomx/QRXPoWValidator.py -> build/lib/qrl/core/miners/qrandomx
copying src/qrl/core/miners/qrandomx/__init__.py -> build/lib/qrl/core/miners/qrandomx
creating build/lib/qrl/core/miners/qryptonight7
copying src/qrl/core/miners/qryptonight7/CNv1Miner.py -> build/lib/qrl/core/miners/qryptonight7
copying src/qrl/core/miners/qryptonight7/CNv1PoWValidator.py -> build/lib/qrl/core/miners/qryptonight7
copying src/qrl/core/miners/qryptonight7/__init__.py -> build/lib/qrl/core/miners/qryptonight7
creating build/lib/qrl/core/txs/multisig
copying src/qrl/core/txs/multisig/MultiSigCreate.py -> build/lib/qrl/core/txs/multisig
copying src/qrl/core/txs/multisig/MultiSigSpend.py -> build/lib/qrl/core/txs/multisig
copying src/qrl/core/txs/multisig/MultiSigVote.py -> build/lib/qrl/core/txs/multisig
copying src/qrl/core/txs/multisig/__init__.py -> build/lib/qrl/core/txs/multisig
creating build/lib/qrl/tools/modeling
copying src/qrl/tools/modeling/__init__.py -> build/lib/qrl/tools/modeling
copying src/qrl/tools/modeling/extract_timing.py -> build/lib/qrl/tools/modeling
running egg_info
creating src/qrl.egg-info
writing src/qrl.egg-info/PKG-INFO
writing dependency_links to src/qrl.egg-info/dependency_links.txt
writing entry points to src/qrl.egg-info/entry_points.txt
writing requirements to src/qrl.egg-info/requires.txt
writing top-level names to src/qrl.egg-info/top_level.txt
writing manifest file 'src/qrl.egg-info/SOURCES.txt'
abort: no repository found in '~/Gits/QRL' (.hg not found)!
error: [Errno 2] No such file or directory: '': ''

(Home directory replaced with "~" by me)

So... why is it looking for ".hg", and what is supposed to create it?

@cyyber
Copy link
Member

cyyber commented Sep 2, 2020

Try to run following command inside the QRL repo before building it

hg init

@happysmash27
Copy link
Author

Thank you! Now the error is...

QRL % python setup.py build
running build
running build_py
running egg_info
writing src/qrl.egg-info/PKG-INFO
writing dependency_links to src/qrl.egg-info/dependency_links.txt
writing entry points to src/qrl.egg-info/entry_points.txt
writing requirements to src/qrl.egg-info/requires.txt
writing top-level names to src/qrl.egg-info/top_level.txt


error: [Errno 2] No such file or directory: '': ''

Pretty much the exact same thing, but a bit less verbose. Hmm.

@happysmash27
Copy link
Author

Much more useful when made verbose:

QRL % python setup.py -v build
running build
running build_py
not copying src/qrl/__init__.py (output up-to-date)
not copying src/qrl/_version.py (output up-to-date)
not copying src/qrl/cli.py (output up-to-date)
not copying src/qrl/grpcProxy.py (output up-to-date)
not copying src/qrl/main.py (output up-to-date)
not copying src/qrl/measure.py (output up-to-date)
not copying src/qrl/core/AddressState.py (output up-to-date)
not copying src/qrl/core/Block.py (output up-to-date)
not copying src/qrl/core/BlockHeader.py (output up-to-date)
not copying src/qrl/core/BlockMetadata.py (output up-to-date)
not copying src/qrl/core/ChainManager.py (output up-to-date)
not copying src/qrl/core/DifficultyTracker.py (output up-to-date)
not copying src/qrl/core/ESyncState.py (output up-to-date)
not copying src/qrl/core/GenesisBlock.py (output up-to-date)
not copying src/qrl/core/Indexer.py (output up-to-date)
not copying src/qrl/core/LastTransactions.py (output up-to-date)
not copying src/qrl/core/Message.py (output up-to-date)
not copying src/qrl/core/MessageRequest.py (output up-to-date)
not copying src/qrl/core/Miner.py (output up-to-date)
not copying src/qrl/core/MultiSigAddressState.py (output up-to-date)
not copying src/qrl/core/OptimizedAddressState.py (output up-to-date)
not copying src/qrl/core/OutgoingMessage.py (output up-to-date)
not copying src/qrl/core/PaginatedBitfield.py (output up-to-date)
not copying src/qrl/core/PaginatedData.py (output up-to-date)
not copying src/qrl/core/PoWValidator.py (output up-to-date)
not copying src/qrl/core/ProposalRecord.py (output up-to-date)
not copying src/qrl/core/Singleton.py (output up-to-date)
not copying src/qrl/core/State.py (output up-to-date)
not copying src/qrl/core/StateContainer.py (output up-to-date)
not copying src/qrl/core/StateMigration.py (output up-to-date)
not copying src/qrl/core/TokenList.py (output up-to-date)
not copying src/qrl/core/TokenMetadata.py (output up-to-date)
not copying src/qrl/core/TransactionInfo.py (output up-to-date)
not copying src/qrl/core/TransactionMetadata.py (output up-to-date)
not copying src/qrl/core/TransactionPool.py (output up-to-date)
not copying src/qrl/core/VoteStats.py (output up-to-date)
not copying src/qrl/core/Wallet.py (output up-to-date)
not copying src/qrl/core/__init__.py (output up-to-date)
not copying src/qrl/core/config.py (output up-to-date)
not copying src/qrl/core/formulas.py (output up-to-date)
not copying src/qrl/core/messagereceipt.py (output up-to-date)
not copying src/qrl/core/node.py (output up-to-date)
not copying src/qrl/core/qrlnode.py (output up-to-date)
not copying src/qrl/crypto/AESHelper.py (output up-to-date)
not copying src/qrl/crypto/QRandomX.py (output up-to-date)
not copying src/qrl/crypto/Qryptonight.py (output up-to-date)
not copying src/qrl/crypto/Qryptonight7.py (output up-to-date)
not copying src/qrl/crypto/__init__.py (output up-to-date)
not copying src/qrl/crypto/doctest_data.py (output up-to-date)
not copying src/qrl/crypto/misc.py (output up-to-date)
not copying src/qrl/crypto/xmss.py (output up-to-date)
not copying src/qrl/generated/__init__.py (output up-to-date)
not copying src/qrl/generated/qrl_pb2.py (output up-to-date)
not copying src/qrl/generated/qrl_pb2_grpc.py (output up-to-date)
not copying src/qrl/generated/qrlbase_pb2.py (output up-to-date)
not copying src/qrl/generated/qrlbase_pb2_grpc.py (output up-to-date)
not copying src/qrl/generated/qrldebug_pb2.py (output up-to-date)
not copying src/qrl/generated/qrldebug_pb2_grpc.py (output up-to-date)
not copying src/qrl/generated/qrllegacy_pb2.py (output up-to-date)
not copying src/qrl/generated/qrllegacy_pb2_grpc.py (output up-to-date)
not copying src/qrl/generated/qrlmining_pb2.py (output up-to-date)
not copying src/qrl/generated/qrlmining_pb2_grpc.py (output up-to-date)
not copying src/qrl/generated/qrlstateinfo_pb2.py (output up-to-date)
not copying src/qrl/generated/qrlstateinfo_pb2_grpc.py (output up-to-date)
not copying src/qrl/generated/qrlwallet_pb2.py (output up-to-date)
not copying src/qrl/generated/qrlwallet_pb2_grpc.py (output up-to-date)
not copying src/qrl/services/AdminAPIService.py (output up-to-date)
not copying src/qrl/services/BaseService.py (output up-to-date)
not copying src/qrl/services/DebugAPIService.py (output up-to-date)
not copying src/qrl/services/MiningAPIService.py (output up-to-date)
not copying src/qrl/services/PublicAPIService.py (output up-to-date)
not copying src/qrl/services/WalletAPIService.py (output up-to-date)
not copying src/qrl/services/__init__.py (output up-to-date)
not copying src/qrl/services/grpcHelper.py (output up-to-date)
not copying src/qrl/services/services.py (output up-to-date)
not copying src/qrl/tools/__init__.py (output up-to-date)
not copying src/qrl/tools/generate_genesis.py (output up-to-date)
not copying src/qrl/tools/token_migration_json_converter.py (output up-to-date)
not copying src/qrl/core/miners/__init__.py (output up-to-date)
not copying src/qrl/core/misc/DependencyChecker.py (output up-to-date)
not copying src/qrl/core/misc/__init__.py (output up-to-date)
not copying src/qrl/core/misc/db.py (output up-to-date)
not copying src/qrl/core/misc/expiring_set.py (output up-to-date)
not copying src/qrl/core/misc/helper.py (output up-to-date)
not copying src/qrl/core/misc/logger.py (output up-to-date)
not copying src/qrl/core/misc/logger_twisted.py (output up-to-date)
not copying src/qrl/core/misc/ntp.py (output up-to-date)
not copying src/qrl/core/misc/set_logger.py (output up-to-date)
not copying src/qrl/core/notification/Observable.py (output up-to-date)
not copying src/qrl/core/notification/ObservableEvent.py (output up-to-date)
not copying src/qrl/core/notification/__init__.py (output up-to-date)
not copying src/qrl/core/p2p/IPMetadata.py (output up-to-date)
not copying src/qrl/core/p2p/__init__.py (output up-to-date)
not copying src/qrl/core/p2p/p2pChainManager.py (output up-to-date)
not copying src/qrl/core/p2p/p2pObservable.py (output up-to-date)
not copying src/qrl/core/p2p/p2pObserver.py (output up-to-date)
not copying src/qrl/core/p2p/p2pPeerManager.py (output up-to-date)
not copying src/qrl/core/p2p/p2pTxManagement.py (output up-to-date)
not copying src/qrl/core/p2p/p2pfactory.py (output up-to-date)
not copying src/qrl/core/p2p/p2pprotocol.py (output up-to-date)
not copying src/qrl/core/processors/TxnProcessor.py (output up-to-date)
not copying src/qrl/core/processors/__init__.py (output up-to-date)
not copying src/qrl/core/txs/CoinBase.py (output up-to-date)
not copying src/qrl/core/txs/LatticeTransaction.py (output up-to-date)
not copying src/qrl/core/txs/MessageTransaction.py (output up-to-date)
not copying src/qrl/core/txs/SlaveTransaction.py (output up-to-date)
not copying src/qrl/core/txs/TokenTransaction.py (output up-to-date)
not copying src/qrl/core/txs/Transaction.py (output up-to-date)
not copying src/qrl/core/txs/TransferTokenTransaction.py (output up-to-date)
not copying src/qrl/core/txs/TransferTransaction.py (output up-to-date)
not copying src/qrl/core/txs/__init__.py (output up-to-date)
not copying src/qrl/core/miners/qrandomx/QRXMiner.py (output up-to-date)
not copying src/qrl/core/miners/qrandomx/QRXPoWValidator.py (output up-to-date)
not copying src/qrl/core/miners/qrandomx/__init__.py (output up-to-date)
not copying src/qrl/core/miners/qryptonight7/CNv1Miner.py (output up-to-date)
not copying src/qrl/core/miners/qryptonight7/CNv1PoWValidator.py (output up-to-date)
not copying src/qrl/core/miners/qryptonight7/__init__.py (output up-to-date)
not copying src/qrl/core/txs/multisig/MultiSigCreate.py (output up-to-date)
not copying src/qrl/core/txs/multisig/MultiSigSpend.py (output up-to-date)
not copying src/qrl/core/txs/multisig/MultiSigVote.py (output up-to-date)
not copying src/qrl/core/txs/multisig/__init__.py (output up-to-date)
not copying src/qrl/tools/modeling/__init__.py (output up-to-date)
not copying src/qrl/tools/modeling/extract_timing.py (output up-to-date)
running egg_info
writing src/qrl.egg-info/PKG-INFO
writing dependency_links to src/qrl.egg-info/dependency_links.txt
writing entry points to src/qrl.egg-info/entry_points.txt
writing requirements to src/qrl.egg-info/requires.txt
writing top-level names to src/qrl.egg-info/top_level.txt
'license_file' option was not specified


error: [Errno 2] No such file or directory: '': ''

...So maybe it has to do with "license_file"? But now the question is which line of code prints that, and which line of code is asking for the file or directory '': ''?

@happysmash27
Copy link
Author

setup.py seems to call setuptools to use pyscaffold in some way, but I know pretty much nothing about these tools making it really hard for me to debug. Usually I would just follow the layers of functions until it got to something useful, but everything is so abstracted that I do not know where anything is.

@happysmash27
Copy link
Author

Modifying setup_package to be:

def setup_package():
    needs_sphinx = {'build_sphinx', 'upload_docs'}.intersection(sys.argv)
    sphinx = ['sphinx'] if needs_sphinx else []
    print("Running setup")
    try:
        print("Trying setup")
        pdb.set_trace()
        setup(setup_requires=['pyscaffold>=3.0a0,<3.1a0'] + sphinx,
              entry_points=entry_points,
              version=versioneer.get_version(),
              cmdclass=versioneer.get_cmdclass(),
              use_pyscaffold=True)
        print("End of setup")
    except Exception:
        print("Exception occured")
        pdb.post_mortem()

To use pdb.

Then stepping through the entire setuptools program using:

until 38
n
s
until 153
s
until 148
s
until 966
s
until 985
s
until 135
s
until 313
s
until 985
s
until 1552
s
until 52
s
until 56
s
until 118
s
until 69
s
until 82
s
until 139
s
until 313
s
until 985
s
until 299
s
until 306
s
until 541
s
until 581
s
until 18

(Line numbers will probably change if you have a different version of setuptools than me)

I have finally isolated the file not found error to the function walk_revctrl(dirname='') in /usr/lib/python3.9/site-packages/setuptools/command/sdist.py at this line:

(Pdb) ll
 15  	def walk_revctrl(dirname=''):
 16  	    """Find all files under revision control"""
 17  	    for ep in pkg_resources.iter_entry_points('setuptools.file_finders'):
 18  ->	        for item in ep.load()(dirname):
 19  	            yield item

So the problem is whatever is calling that function.

That appears to be the following line in /usr/lib/python3.9/site-packages/setuptools/command/egg_info.py:

(Pdb) ll
577  	    def add_defaults(self):
578  	        sdist.add_defaults(self)
579  	        self.filelist.append(self.template)
580  	        self.filelist.append(self.manifest)
581  ->	        rcfiles = list(walk_revctrl())
582  	        if rcfiles:
583  	            self.filelist.extend(rcfiles)
584  	        elif os.path.exists(self.manifest):
585  	            self.read_manifest()
586  	
587  	        if os.path.exists("setup.py"):
588  	            # setup.py should be included by default, even if it's not
589  	            # the script called to create the sdist
590  	            self.filelist.append("setup.py")
591  	
592  	        ei_cmd = self.get_finalized_command('egg_info')
593  	        self.filelist.graft(ei_cmd.egg_info)

@happysmash27
Copy link
Author

happysmash27 commented Aug 17, 2021

Uh huh...

(Pdb) ll
 15  ->	def walk_revctrl(dirname=''):
 16  	    """Find all files under revision control"""
 17  	    for ep in pkg_resources.iter_entry_points('setuptools.file_finders'):
 18  	        for item in ep.load()(dirname):
 19  	            yield item
(Pdb) until 18
> /usr/lib/python3.9/site-packages/setuptools/command/sdist.py(18)walk_revctrl()
-> for item in ep.load()(dirname):
(Pdb) display ep
display ep: EntryPoint.parse('setuptools_scm = pyscaffold.contrib.setuptools_scm.integration:find_files')
(Pdb) s
--Call--
> /usr/lib/python3.9/site-packages/pkg_resources/__init__.py(2437)load()
-> def load(self, require=True, *args, **kwargs):
(Pdb) ll
2437 ->	    def load(self, require=True, *args, **kwargs):
2438 	        """
2439 	        Require packages for this EntryPoint, then resolve it.
2440 	        """
2441 	        if not require or args or kwargs:
2442 	            warnings.warn(
2443 	                "Parameters to load are deprecated.  Call .resolve and "
2444 	                ".require separately.",
2445 	                PkgResourcesDeprecationWarning,
2446 	                stacklevel=2,
2447 	            )
2448 	        if require:
2449 	            self.require(*args, **kwargs)
2450 	        return self.resolve()
(Pdb) display ep.load
display ep.load: ** raised NameError: name 'ep' is not defined **
(Pdb) until 2450
> /usr/lib/python3.9/site-packages/pkg_resources/__init__.py(2450)load()
-> return self.resolve()
(Pdb) s
--Call--
> /usr/lib/python3.9/site-packages/pkg_resources/__init__.py(2452)resolve()
-> def resolve(self):
(Pdb) ll
2452 ->	    def resolve(self):
2453 	        """
2454 	        Resolve the entry point from its module and attrs.
2455 	        """
2456 	        module = __import__(self.module_name, fromlist=['__name__'], level=0)
2457 	        try:
2458 	            return functools.reduce(getattr, self.attrs, module)
2459 	        except AttributeError as exc:
2460 	            raise ImportError(str(exc)) from exc
(Pdb) display self.module_name
display self.module_name: 'pyscaffold.contrib.setuptools_scm.integration'

I had made a thread to test if this is a Pyscaffold error and it looks like it may be one indeed? Still not sure yet.

Edit: Actually, it does get beyond self.resolve(). Hmm... I guess I must still step more granularly.

@happysmash27
Copy link
Author

In pyscaffold/pyscaffold#484, I was recommended to try running the command without the .hg.

In doing this, the process to get to get an error is a bit different. .hg seems to be missing in the find_sources command in egg_info.py(295)run(), run by the egg_info in the build_py class of usr/lib/python3.9/site-packages/setuptools/command/build_py.py. I get there using the following sequence of operations, this time operating on an unmodified setup.py with command python -m pdb setup.py build, as this is a newly-cloned repository:

until 37
s
until 33
n
s
until 153
s
until 148
s
until 966
s
until 985
s
until 135
s
until 313
s
until 985
s
until 56
s
until 118
s
until 69
s
until 82
s
until 139
s
until 313
s
until 985
s
until 299
s

@happysmash27
Copy link
Author

Upon debugging more, this seems to be an error in yet another invocation of walk_revctrl, in /usr/lib/python3.9/site-packages/setuptools/command/egg_info.py(581)add_defaults():

> /usr/lib/python3.9/site-packages/setuptools/command/egg_info.py(577)add_defaults()
-> def add_defaults(self):
(Pdb) ll
577  ->	    def add_defaults(self):
578  	        sdist.add_defaults(self)
579  	        self.filelist.append(self.template)
580  	        self.filelist.append(self.manifest)
581  	        rcfiles = list(walk_revctrl())
582  	        if rcfiles:
583  	            self.filelist.extend(rcfiles)
584  	        elif os.path.exists(self.manifest):
585  	            self.read_manifest()
586  	
587  	        if os.path.exists("setup.py"):
588  	            # setup.py should be included by default, even if it's not
589  	            # the script called to create the sdist
590  	            self.filelist.append("setup.py")
591  	
592  	        ei_cmd = self.get_finalized_command('egg_info')
593  	        self.filelist.graft(ei_cmd.egg_info)
(Pdb) until 581
> /usr/lib/python3.9/site-packages/setuptools/command/egg_info.py(581)add_defaults()
-> rcfiles = list(walk_revctrl())
(Pdb) n
abort: no repository found in '/home/happysmash27/Gits/New/QRL' (.hg not found)
FileNotFoundError: [Errno 2] No such file or directory: ''

Upon going into the function, after the following series of steps:

until 37
s
until 33
n
s
until 153
s
until 148
s
until 966
s
until 985
s
until 135
s
until 313
s
until 985
s
until 56
s
until 118
s
until 69
s
until 82
s
until 139
s
until 313
s
until 985
s
until 299
s
until 306
s
until 541
s
until 581
s

ep.load()(dirname) is successful at returning items until... around versioneer.py? Anyway, rather than manually go through all of these each time, I decided to look at the documentation to see if there is a way to break once a variable is a certain value, and there indeed is. So, my commands to get to the point of this are now:

tbreak /usr/lib/python3.9/site-packages/setuptools/command/sdist.py:18, item=="versioneer.py"
continue
continue

@happysmash27
Copy link
Author

I've done some more debugging, with a fresh repository, and this time making comments to know what it's doing:

break 33
continue
n
//setup command
s
until 153
//runs the build command
//bunch of wrapper functions here
s
until 148
s
until 966
s
until 985
s
until 135
s
until 313
s
//We run command build_py
p command
until 985
s
until 1552
s
//self.build_packages on line 55 might be related
//But the error happens on line 56, build_package_data
//Runs self.build_package_data
until 56
s
//Ooh! Interesting. Trying to run p self.data_files actually triggers the error!
until 118
s
//At this point, pdb puts me into a __getattr__ function with comment "lazily compute data files"
until 69
s
//Now we are in __get_data_files(self)
//It fails on self.analyze_manifest()
until 82
s
//Then it fails on self.run_command('egg_info')
until 139
//Wrapper functions again
s
until 313
s
until 985
s
//Now we are in this other run command, in egg_info.py
//It does all the "writing *****" messages in the for loop. No error here.
//And then it fails in self.find_sources(), line 299
until 299
s
//It does manifest_filename = os.path.join(self.egg_info, "SOURCES.txt")
p os.path.join(self.egg_info, "SOURCES.txt")
//The value of os.path.join(self.egg_info, "SOURCES.txt") is 'src/qrl.egg-info/SOURCES.txt'
//This file is empty.
//This must mean it is filling the file?
//It assigns that to mm.manifest. mm = manifest_maker(self.distribution)
//As expected, the failure point here is mm.run(), line 306
until 306
s
//This function is also in egg_info.py, line 137
//It fails in self.add_defaults()
until 541
s
//And then, it fails in 581: rcfiles = list(walk_revctrl()), which as we know from previous experiments, is the failure point
//The line after it says if rcfiles. This file doesn't even need to exist!
//So the problem is, that it is throwing the error instead of ignoring it? 

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants